Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Explain geometric constraints solver for CAD to a newbie

  1. Nov 20, 2014 #1
    I have seen the following said on a forum:
    This makes good sense to me. To me, as a programmer, this sounds like he is asking for a better API to look up the coordinate at runtime; perhaps that would force the engine to evaluate expressions in a particular order, but then that's what functional programming is all about. But, in reply people talked about "constraints solver" for this purpose, e.g.:
    Can somebody give a simple, toy example based explanation of what this "constraint solver" is about and how it is better than using a better object oriented API to access info about rendered 3d components?
  2. jcsd
  3. Nov 21, 2014 #2

    jack action

    User Avatar
    Science Advisor
    Gold Member

    What[/PLAIN] [Broken] is a constraint solver

    http://www.plm.automation.siemens.com/en_us/products/open/d-cubed/animations/3ddcm/video_3d_spline_constraints.shtml [Broken]
    http://www.plm.automation.siemens.com/en_us/products/open/d-cubed/animations/3ddcm/video_3d_support_cones_tori.shtml [Broken]

    But if it is only for the simple problem presented in the OP, it is like using a 1000 hp engine in a scooter.
    Last edited by a moderator: May 7, 2017
  4. Nov 22, 2014 #3
    jack action, thank you for the examples. I guess I still don't fully see the "constraint" aspect in them -- these look to me more like propagation of variable change in a functional program. But, for one thing, maybe that's just what they call it in the CAD space, i.e. "constraints" instead of "functional"; and for another, maybe some of this stuff really does go beyond what is normally doable with functional programming and I am simply too clueless in geometry to appreciate that.
  5. Nov 22, 2014 #4

    jack action

    User Avatar
    Science Advisor
    Gold Member

    There is a Wikipedia page about this type of constraint.

    The «constraint» aspect is based on the theory of the kinematic pairs in the study of machines:

    https://upload.wikimedia.org/wikipedia/en/thumb/3/31/06112014035310LowerKinematicPairs.jpg/512px-06112014035310LowerKinematicPairs.jpg [Broken] ​
    Last edited by a moderator: May 7, 2017
  6. Dec 5, 2014 #5
    My master's thesis was on CAD software design, so I understand your frustration with CAD APIs in general. The "constraint solver" is simply a numerical method that solves a series of constraints in a CAD assembly model. For example, the human elbow is constrained to a hinge-type motion but only for a certain range of angles. If you were to model the bones in the arm, you would have to constrain the motion of the humerus and the radius/ulna to rotate about the elbow in one axis and only in a certain range. To do that, they create a system of equations and solve it to get the positions of the bones. This helps when trying to flesh out a design for a machine to know what the range of motions are of the parts in the assembly.

    The constraint solver is basically a class that uses numerical methods, so you get into the classic problem of properly integrating OOP into scientific computing. I haven't used OpenSCAD, so I don't know about how the API is, but I know that for other CAD systems such as Siemens NX, Dassault Systemes CATIA, and PTC Creo, they're horrible to work with. Those were designed a long time ago and they are often unintuitive and hard to work with.
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook