Giter Site home page Giter Site logo

flamingo's People

Contributors

oddtopus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flamingo's Issues

pipeCmd.join sometimes chrashes with selection exceptions

When I test the "join pipes"-command I often get this message:

Traceback (most recent call last):
File "/home/ose-developer/.FreeCAD/Mod/flamingo/pipeObservers.py", line 75, in addSelection
sel=FreeCADGui.Selection.getSelection()[0]
<type 'exceptions.IndexError'>: list index out of range

pipeCmd.join() does not remove port marks on deleted objects

How to reproduce:

  1. Create new document.
  2. Insert a pipe.
  3. Click on the button which joins fittings (pipeCmd.join() command).
  4. Select the pipe. Green triangles apear on both sides of the pipe.
  5. Delete the pipe.
  6. The pipe is deleted but the green triangles are still there.

How to create custom libaries of pipes, valves and fittings etc.?

Thank you for providing this workbench to the FreeCAD community, including myself. I am using it at work to create some simple pipe systems (for example parts of a sprinkler system). In other departments we are using stainless steel pipes, valves and fittings which have different diameters then the parts provided by the workbench. This includes parts from the DIN 11851 system.

My first question is, can you provide some information how to add custom parts to the workbench. I am to unexperienced in python to understand the code here in a short time so I would be grateful for some hints.

My second question: Would it be possible to use STEP files, for example from valve vendors in a library and add them as parts? I know there is the "insert any shape" function but I am thinking of a kind of "on-click-insert" solution.

Can't undo after adjust angle of frame by two edges

If we select the wrong edge, the adjust angle tool can mess the entire structure.
But the real problem is that pressing the undo won't undo that action. I will need to clear the path and do all adjusts again.

again on accuracy of vectors operation

If you use pypeTools commit nr. 41, the insertion of curves may have failed to find the correct orientation or to trim the pipe ends in some case.
This bug has been fixed now and I apologize for that.

Anyway this raise again the issue about the accuracy of floating-point operations applied to Vectors.
The reason of the bug was because I used the function DraftVecUtils.rounded() inside functions frameCmd.isParallel() and frameCmd.beamAx() to round-up the inaccuracy (of the order of .e-14) that is introduced in the Placement.Base and Placement.Rotation from some methods such as Rotation.multyply(). This discrepancy, though it is negligible in most of the cases, actually makes the .dot() and .cross() methods uneffective to check parallelism or orthogonality between vectors. Also it probably mess with .Rotation.multVec() method so that orientation of beam's axis results inverted.
If anyone could advice for a more sound method to operate with Vectors that can eliminate this bug's nest, please give an hint.

From previous experiences on this matter, this behaviour is caused by the floating point operation itself rather than the program algorithm: it's really easy to generate funny bugs with floating-point arithmetic using either a simple worksheet or a sophisticated numeric algebra software.
I think that one way-out from this is to use some kind of symbolic algebra representation of vectors: one possibility for Python is SymPy but I believe that symbolic algebra is already used in some part of the C code of FreeCAD to define the constraints of geometry in sketches. Is it possible to port the related functions written in C to Python? Or even better, is there the possibility to add a symbolic representation in Vector objects and perform rotations and translations symbolically until an actual numeric computation is necessary? In this way, vector operations can be made on their symbolic coordinates, with 100% accuracy, and be evaluated numerically only for representation.

elbow creation by intersection

There is one problem arising sometimes, when I select two beams or edge to create one elbow between them. I think it's something related to the calculation of frameCmd.intersectionLines().
Can someone addicted to linear algebra and numpy help me?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.