Parametric Model with holes

I am wondering how to setup a 3d parametric model that when it changes sizes it also adds or subtracts holes depending on the size. Is this possible? Here is the file I am working with. I plan on making an array of the holes spaced 2" per level.

Comments

  • Yes it possible. You have to create an array of cylinders (on the layer BC_SUBTRACT) in a separate parametric component and _BmInsert that 'onto' a face of your main model. In the attached example the number of holes in the strip changes depending on its length.
    There is one thing to look out for: Because the elements in the array change depending its parameters, attaching constraints to them is problematic. But you can constrain the position of the 'array' component (use the 'Block' option of the constraint commands) or add fixed 'helper' geometry to the 'array' component and attach constraints to those elements.

  • ... looking at your file I conclude that my example is overly complex. You could create a static 'holes' component containing holes for the maximum height of a support.

  • ... No, sadly using a static 'holes' component does not work.
    Apparently the number of solids in the 'holes' component has to change to trigger an update of the parent solid (= the solid the 'holes' component was inserted onto).

    Another issue: BricsCAD does not 'like' holes that are on or over the edge of the parent solid. So recalculating the height is required for a functioning model. In the attached example entering 96" for the height results in a 95" upright.

    Note: I am using V18.2.20. V19 may not have these limitations.

  • Thanks for the insight Roy! Much appreciated. Still getting the hang of things.

  • Jason Bourhill
    edited April 2019

    Attach my take on this based around your model. There is a limitation with the model when the holes interfere with the topface of the upright. When this occurs you will find you can no longer change the length of the upright. This happens because the top face is no longer contiguous.

    To work around this I used a calculation to limit the number of holes to avoid having holes through the top face. See the rows calculation in the Mechanical Browser or Parameters Panel. In the attached model it is set to

    Rows = floor((Length-HolesOffset)/spacing)

    Ideally it would be set to
    Rows = ceil((Length-HolesOffset)/spacing)+1

    There is more information on working with formulae here.

    See that Roy has noted the same limitation in V18. I'm using V19.2.03

    Regards,
    Jason Bourhill
    CAD Concepts

  • @Jason Bourhill
    You have posted the wrong zip.

    If I change my model by adding a plate between the flanges (creating a boxed in profile) and removing one of the columns of holes, the parametrics still fail when a hole touches an edge of the parent solid. Your explanation: the top face is no longer contiguous, would therefore seem to be incorrect.

    I have also tried an alternative approach: Create a maximum height upright with pre-made holes, and use a simple parametric box component as subtractor. But this model also fails for the same reason.

    There is a workaround if the main model (the upright) has been _BmInserted in a different file. Using the 'Replace...' option in the Mechanical Browser and selecting the original file will fix things.

  • Roy and Jason, I'm not really sure how some of the things you did were done but thank you for the files so I can take a look at them and see how they work.

  • @Roy Klein Gebbinck said:
    @Jason Bourhill
    You have posted the wrong zip.

    Whoops. Here it is

    Regards,
    Jason Bourhill
    CAD Concepts

  • I'm using v17, how are you able to perform boolean subtract with the array of holes? It doesn't appear to be working for me.

  • @solloron1 said:
    I'm using v17, how are you able to perform boolean subtract with the array of holes? It doesn't appear to be working for me.

    The techniques that Roy and I have employed make use of Associative Arrays. This feature was introduced with V18.

    Regards,
    Jason Bourhill
    CAD Concepts

  • Boolean operations with arrays require V18.1.06.

    For V17 the only option I see is to create a 'pre-made' upright with the maximum available height and all the holes pre-drilled (or rather: pre-punched). And then subtract from that profile. In the attached example I have simplified my previous 'pre-made' model. The height is now controlled with a distance constraint.

    The component works OK if you change the height the first time (see Assembly_V17.dwg). Any change after that requires using the 'Replace...' workaround to trigger a correct update.

  • Roy thank you for the great insight. I'm still messing around to make sure I understand it. I get everything you did with the uprights but how you set the array up and positioned it is still not clear to me. I'm going to keep playing to see if I can replicate what you did. Thanks again for taking the time to help me.

  • @solloron1
    Since we have now established that using a parametric array does not work for this task in V17, you can just use your existing model as a starting point for further modeling.

    To get the holes you can:
    Edit the array and extrude two holes.
    Explode the array and subtract the hole solids from the main profile.

  • Thank you Roy! I was able to do that. Roy and Jason you guys rock and have given me a great source of knowledge to help me moving forward!