4 ms·
As a frequent user of Solidworks for ~4 years, I'd have to guess that CAD constraint solvers are not an easy problem. It happens pretty often that you'll modif
by auxym 12y ago
As a frequent user of Solidworks for ~4 years, I'd have to guess that CAD constraint solvers are not an easy problem.
It happens pretty often that you'll modify a single constraint (flipping it is a common culprit), the solver will get "confused" and flip a bunch of your other constraints around. Constraint conflict resolution also often gets very hairy to almost impossible. Sometimes the fastest thing to do is to nuke a good part of your constraints and start over -- in a saner way.
I guess the BIG CAD packages (CATIA, NX) might be a bit better at this, or at least better at strongly encouraging saner ways of build parametric constraints (which is what I've heard).
It's too bad that there isn't a simple, intuitive and useful free/oss CAD software out there. With the whole hobbyist maker movement explosion out there, a lot of people would be thrilled to have something like that. Though, it seems that things are not very much better in the PCB CAD/CAM world either.
- colah3 12y agoI was really excited about handling some of the messy constraint situations better than existing tools. I'll split this into two pieces: > It happens pretty often that you'll modify a single constraint (flipping it is a common culprit), the solver will get "confused" and flip a bunch of your other constraints around. For "confused" constraint solvers, I see this as largely being a problem of there being lots of solutions to a well constrained system, because of flips and such. It needs to be easy for the user to specify which one they want. Our approach was to have fast pulls of the mouse temporarily over ride the constraint solver. So, if you needed to flip the model, you do a really fast pull and it would flip. This works much better with multi touch, where you can just grab a few points with different fingers and force your model into whatever shape you want. > Constraint conflict resolution also often gets very hairy to almost impossible. There's some really powerful tools from algebraic geometry I tried to apply to this. In particular, there's these things called Grobner Bases which you can use to test if certain polynomials imply that another is true, false, or if it's independent of them. From the users perspective, I wanted to use these to do a few things. (1) Display implied constraints. If you make three corners of a quadrilateral perpendicular, the fourth is forced to be perpendicular. I grayed out perpendicular constraint could alert you to this, and prevent you from adding a conflicting constraint. Obviously, that example is kind of silly, but I think that propagating constraints through the whole model would really help people understand how more complicated models are constrained. (2) If you try to add a constraint which conflicts with preexisting ones, highlight in red a minimal set it conflicts with. I never got this part of the project to work though. I did some very small proof of concepts in sage, but couldn't really get things to work. I'm not really sure how realistic it is to make these work for real models.
- amk_ 12y agoIt's not FOSS, but the new WebGL-based Onshape[1] from the original Solidworks team looks like it is going to be making waves. It's free for small public projects (Github-style). They are licensing the existing Parasolid and D-Cubed libraries to do constraint-solving[2], which hints at the a) separation of concerns from the CAD UI and back-end layers, and b) complexity of the CAD kernel problem. [1]: https://www.onshape.com https://www.onshape.com [2]: http://plmsource.industrysoftware.automation.siemens.com/plmcomponents/2014/02/11/belmont-technology-licenses-parasolid-2d-dcm-and-3d-dcm/ http://plmsource.industrysoftware.automation.siemens.com/plm...