3D Constraints

Are many people using the 3D constraint system? Do you have any tips on how to efficiently constrain a model? I'm attaching what I thought was a simple use case, my goal was to create a component for a bookcase system we build that I can drop in any drawing and easily export the resulting 3D parts into our CAM for CNC machining. This is attempt 3 or 4 trying to create a working component.

So far it seems like dimensional constraints solve better than coincident constraints and whenever possible instead of constraining to geometry constrain to world coordinates. Also nesting components is faster than drawing everything in a single file, if I need 5 holes create a component with 5 holes and place it instead of creating 5 holes on the geometry in my component.

The component attached is very... crashy (is that a word?) It worked okay at home on my linux laptop but on the faster windows machine at work I have issues.

Is it possible to achieve what I'm trying to do or am I crazy?

Comments

  • The total number of faces in the model may be an issue. The side and partition panels combined have over 3000 faces. The total model likely has more than 4000.

    The large number of constraints may also be problematic. Example: the 'Minfix Double Gang Side Panel' component contains 14 solids controlled by some 70 constraints. That seems excessive. I would use the _dmFix3d and _dmRigidSet3d constraints more. Distance_3 could be a _dmFix3d constraint. To keep all the top faces of the cylinders aligned (or rather in fixed relative positions) a single _dmRigidSet3d constraint will work (make sure to select the faces and not the edges). And constraining the axes to the XZ plane may not be required?

    I generally prefer using geometric constraints over dimensional constraints. I seem to remember that Bricsys in fact advises this.

  • How do I see the number of faces in the model? I'm sure the majority of the faces are from the adjustable shelf holes in those parts. They are really taxing but they are also the most important part for me to have correctly inserted. With the holes in I just export a 3d dxf, import into my CAM, hit feature recognition and call it a day.

    I started off using lots of Coincident constraints but changing parameters and adding more constraints issues occurred with unsatisfied constraints. Changing between two different parameter values would work maybe 90% of the time, but the other 10% I would have unsatisfied constraints. Undoing and redoing the parameter change would often fix the issue. Not a huge problem until I start combining the components into a larger shared assembly.

    I also would prefer to use geometric constraints, everywhere in the model I had a Distance=0 constraint it used to be a _dmFix3d or a _dmCoincident3d constraint. I just changed most of them because it seemed to have less issues.

    What I'm really missing is a mirror constraint and maybe an equality constraint would be nice.

  • I quickly rewrote my side panels and partition a bit more geometrically, there are many less constraints in total I think. However it did not seem to make a huge impact. Adding a parameter called MakeFasterer (dumb ideas get dumb names) that turns the shelf hole array on (1) and off (0) made a huge difference. Turning off the large quantity of holes and changing parameters is fast and doesn't break any constraints.

    However an alternative parameter name for MakeFasterer could be ThisWillProbablyCrashBricscadIfYouChangeIt or maybe SaveYourWorkBeforeYouChangeThis

  • Please have a look at the parametric bookcase model in attachment. All parameters where created automatically by the PARAMETRIZE command.
    I renamed some of the parameters for better understanding:
    Length: overall length
    Width
    Height
    Thickness: thickness of the shelves.
    See https://help.bricsys.com/hc/en-us/articles/360013117713-Parametrize