3D constraint question

In this model what is the appropriate way to change the W,H,L of the cube shape but not affect the shape of sweep edges?

Comments

  • This is an excellent model to demonstrate _DmRigidSet3d constraints. Which can be very versatile.

    My steps to get a working model:

    1. Remove all constraints applied to the cylindrical faces and remove the 'pR' parameter.
    2. Apply a _DmFix3d constraint to the 3 faces that meet at the origin. This will fix the position of the solid.
    3. For every cylindrical face apply a _DmRigidSet3d constraint to that face and the 2 planar faces connected to it. You have to create 6 of these constraints in total.
    4. Done!

    The strange thing is that without the constraints applied in step 3 BricsCAD cannot handle the 3D parametrization. So fewer constraints lead to an unsatisfied model. Counter-intuitive to say the least!

  • Following the steps I can parametric control the size of the cube. But if I apply _dmRadius3d to the cylindrical faces, I cannot change the radius of the constraints.

    Is it possible to get _dmRadius3d and _dmRigidSet3d work together?

  • A _DmRigidSet3d applied to faces locks their shape and their interrelations. So Applying both a _DmRigidSet3d and a _DmRadius3d constraint to a cylindrical face will not work. From your OP I concluded that the cylindrical faces needed a constant radius.

  • fredericklim
    edited January 2018

    So there are limitation in parametric direct modeling. Now I think 3D constraint cannot fully replace feature history based modeling. In F360 it is so easy to change the length and radius of this model.

  • Louis_Verdonck
    edited January 2018

    The solution to control the dimensions of this model is as follows:
    1. As Roy suggested, apply 6 RigidSet constraints (each cylindrical face and the connected sides of the cube).
    2. Set the Equal Radius option of the DMRECOGNIZE system variable (available on the Design Intent toolbar and the Parametric/Design Intent ribbon panel.
    To edit the model:
    Use PushPull to modify the dimensions of the cube, hit the TAB key to switch between relative and absolute distance of the modification.
    To modify the radius of the cylindrical faces:
    Disable the RigidSet constraints: right click the RidgitSet group and choose Disable in the context menu.
    Use PushPull on one of the cylindrical faces and type the desired diameter in the dynamic field.
    Enable the RigidSet constraints again to pushpull the faces of the solid.
    So no parameters needed at all! All dimensions can be modified dynamically in the model using PushPull.

  • Roy Klein Gebbinck
    edited January 2018

    Here is a parametric solution that seems to work:

    1. Apply a _DmFix3d constraint to the 3 faces that meet at the origin. This will fix the position of the solid.
    2. Explode the 3D polyline on the Sketch layer. You now have 6 lines.
    3. For each of these lines add 3 constraints. A _DmConcentric3d constraint applied to it and the cylindrical face it is the center of. And two _DmCoincident3d constraints between it and the planar faces adjoining the cylindrical face.
    4. Done!

    It may also work to use a 'helper' box solid instead of the 6 lines. That would half the number of _DmCoincident3d constraints.

  • fredericklim
    edited January 2018

    @Louis Verdonck said:
    The solution to control the dimensions of this model is as follows:
    1. As Roy suggested, apply 6 RigidSet constraints (each cylindrical face and the connected sides of the cube).
    2. Set the Equal Radius option of the DMRECOGNIZE system variable (available on the Design Intent toolbar and the Parametric/Design Intent ribbon panel.
    To edit the model:
    Use PushPull to modify the dimensions of the cube, hit the TAB key to switch between relative and absolute distance of the modification.
    To modify the radius of the cylindrical faces:
    Disable the RigidSet constraints: right click the RidgitSet group and choose Disable in the context menu.
    Use PushPull on one of the cylindrical faces and type the desired diameter in the dynamic field.
    Enable the RigidSet constraints again to pushpull the faces of the solid.
    So no parameters needed at all! All dimensions can be modified dynamically in the model using PushPull.

    Thanks for the solution, however I want to use parameters to control the model.
    [Edit]
    It is interesting to see how DMRECOGNIZE works.

  • @Roy Klein Gebbinck said:
    Here is a parametric solution that seems to work:

    1. Apply a _DmFix3d constraint to the 3 faces that meet at the origin. This will fix the position of the solid.
    2. Explode the 3D polyline on the Sketch layer. You now have 6 lines.
    3. For each of these lines add 3 constraints. A _DmConcentric3d constraint applied to it and the cylindrical face it is the center of. And two _DmCoincident3d constraints between it and the planar faces adjoining the cylindrical face.
    4. Done!

    It may also work to use a 'helper' box solid instead of the 6 lines. That would half the number of _DmCoincident3d constraints.

    Wow step 1-3 solved my problem. After those constrains fully setup it is faster to adjust than F360 :smiley: Enclosed is the solved model.

    What is the 'helper' box solid mean?

  • By 'helper' box solid I mean a 3D solid, on a dedicated layer, that is not part of the model but only there to help with 3D parametrization.

    Here is a solution without additional geometry (which makes it better IMO):

    1. Apply a _DmFix3d constraint to the 3 faces that meet at the origin. This will fix the position of the solid.
    2. For each cylindrical face add two _DmDistance3d constraints between the axis of the face (whch is the default measuring mode) and its adjoining faces. The distance is always zero of course.
    3. Done!
  • fredericklim
    edited January 2018

    Never thought the distance between cylindrical face axis and planer face can be zero. But it works!

  • Louis_Verdonck
    edited January 2018

    @fredericklim said:

    Thanks for the solution, however I want to use parameters to control the model.
    It is interesting to see how DMRECOGNIZE works.

    No problem to use parameters to control the model. In the drawing in attachment I added your parameters again and a few extra constraints:

    • 3 FIX constraints to fix the left, front and bottom face of the cube.
    • 3 DISTANCE constraints to control de overall dimensions
    • 1 RADIUS constraint for one of the cylindrical surfaces. Only one because the Design Intent 'Equal Radius' keeps all radii equal.
  • @Louis Verdonck said:
    No problem to use parameters to control the model. In the drawing in attachment I added your parameters again and a few extra constraints:

    • 3 FIX constraints to fix the left, front and bottom face of the cube.
    • 3 DISTANCE constraints to control de overall dimensions
    • 1 RADIUS constraint for one of the cylindrical surfaces. Only one because the Design Intent 'Equal Radius' keeps all radii equal.

    That is required to disable all RigidSet in order to change the radius. I have did similar setting before but less elegant, as I didn't utilize "Equal Radius" Design Intent feature.

    I have learned 3D constraint a lot from Roy and your solutions. Thanks so much!

    The only issue left is the Unsatisfied Constrain of torus faces in another post. Should I open a SR for that?

This discussion has been closed.