Creating parametric objects in nanoCAD Design BIM



In the framework of this article I want to share my experience in creating parametric information objects in the nanoCAD Design BIM program: we will sequentially create the geometry of a new object that we need, apply parameterization to it using the universal Function Wizard, and also learn how to control the information parameters of the object, add “pens” for visual control of its geometry and much more. Who cares - welcome under the cat…


The work of the designer is a process, on the one hand, requiring adherence to standards, state standards and instructions, and on the other, the creation of new elements and structures for “non-standard” projects. Perhaps, during the work on a particular project, you had the need to create your own objects that meet a specific situation, or you needed to upgrade existing library elements. When solving such problems, it is convenient to make changes in the overall dimensions of the element, while maintaining its internal structure. And in the future - create a special section in the library of elements to always have the objects at hand.

The process of creating a parametric object in the nanoCAD program The design BIM is considered in stages by the example of a ventilation unit.
We construct the block according to the existing drawing (Fig. 1).


Fig. 1. Drawing of the ventilation unit

To create parametric objects and their subsequent editing, use the Create Parametric Object and Parametric Object Editor commands located on the BIM tab of the Designer, the Nodes and Solutions panel (Fig. 2).


Fig. 2. Arrangement of the Create Parametric Object and Parametric Element Editor commands.

Select the Create Parametric Object command. The Parametric Equipment Editor panel opens, which, if necessary, can be placed in any convenient place in the drawing space (Fig. 3).


Fig. 3. Panel editor of parametric equipment

Also, a coordinate system marker appears in the drawing space (Fig. 4), which indicates the insertion point of the future parametric object with coordinates 0.0.0.


Fig. 4. Coordinate system marker

Creating an object body


Right-click (RMB), click on 3D and select 3D Primitive → Parallelepiped in the menu that opens (Fig. 5).


Fig. 5. Insert 3D primitives

The designation of the created primitive (BOX) appeared in the object structure tree, and its parameters and properties were displayed below.
Immediately it is worth taking another step, which later allows us to avoid confusion with the created primitives, namely, to set the names of primitives. To do this, in the Property Name section of the BOX primitive, specify: Object body (Fig. 6).


Fig. 6. Changing the name of the object

In order to edit the sizes and other attributes of parametric equipment in the future through the properties window, and also to bind the location and geometry of other primitives, we set the properties of the parametric equipment.
In the Parametric Equipment Editor window, select 3D, and then in the vertical toolbar located on the left side, select Properties (Fig. 7).


Fig. 7. Properties on the vertical toolbar.

First, set the name of the parametric object, which will also be displayed in the properties in the future. In the window that opens, click on the Parametric object several times and enter the desired name - in our case, the ventilation unit.
Next, add the parameters for the object. To do this, select Add parameters from the list in the right vertical panel (Fig. 8).


Fig. 8. Object parameters

In the window that opens, we see a list of all parameters and, for convenience, we collapse it by clicking the ± button (Fig. 9).


Fig. 9. Button for minimizing / expanding the list of parameters.

Then select the Dimensions section, expand it and mark the length, height and width - at the initial stage, these properties are enough. Click OK, the selected parameters will appear in the properties window. Later in the same way you can set / add any necessary properties.
For our object, set the length to 800, the height to 1200, and the width to 400. Click OK.

The next step is to establish the connection of the specified properties with the parametric object. To do this, select the primitive “Object body” in the Editor’s window, go to its properties (for example, Length) and press the ellipsis button on the right (Fig. 10).


Fig. 10. Geometric properties of primitives

In the opened window of the Function Wizard, select the query command for the current element (Fig. 11).


Fig. 11. The window of the Function Wizard.

Select the Length parameter, click OK, and then OK again.
In the drawing field, we see that the length of the constructed element has changed (Fig. 12), and opposite the Length property, the fx icon appears , indicating that the parameter value is determined by the formula.


Fig. 12. The changed element in the drawing field.

Similarly, create a relationship for the height and width of the object.

Create internal cutouts


We begin to create internal cutouts and begin with a large central through cutout.

Center neckline


For the cutout, create another 3D BOX Box, which is located at the origin by default. Let's set his name: Central neckline. Next, for greater clarity, we first change the size, and then the coordinates of the object.

In order for our object to be parameterized, we connect the dimensions of the future cutout with the overall overall dimensions of the block. From the drawing we know that the wall thickness of the ventilation unit is 50 mm, the length of the cutout is half the overall length, and the height of the cutout will be through, that is, the entire height of the part.
We use the Function Wizard again to set the properties.
For the cutout width, set the value of the block width: 100 mm (50 mm for each side) - [DIM_WIDTH] -100.
To set the cutout length, subtract from the block length the length of the cutouts and the wall thickness: [DIM_LENGTH] -400.
To indicate the height, set the block height value: [DIM_HEIGHT].
The result obtained is shown in Fig. 13.


Fig. 13. The result of resizing the cutout

Now that we have set the necessary dimensions, we will place our future cutout in the right place. In the properties of the cutout, pay attention to the coordinates of the base point (Fig. 14).


Fig. 14. The coordinates of the base point of the primitive.

We set the coordinates through the Wizard of functions and formulas.
  • For the X coordinate, enter 200.
  • For the Y coordinate, the value is 50.
  • We leave the coordinate Z equal to 0.

We set the geometric dimensions and placed the cutout_central in the place we need. The next step is to subtract it from the main body. To do this, click RMB on the Cutout and in the menu that opens, select Subtract subobject (Fig. 15).


Fig. 15. Subtraction of primitive. The

cut out element is colored in green. To see what our object will look like, remove the selection from the cutout by clicking on 3D.
The result is presented in fig. 16.


Fig. 16. Central neckline

Create extreme upper cutouts


Upper left neckline


Now we have to create the extreme upper cutouts. Starting from the left:
  • re-create the 3D primitive Parallelepiped;
  • give it the name Cutout_Upper_Bright_L.

In our model, the extreme cutout has a depth of 500 mm and a length of 100 mm, and the width should provide a wall thickness of 50 mm.
Assign geometric dimensions:
  • height - 500;
  • length - 100;
  • width - [DIM_WIDTH] -100 (specified through the Function Wizard).

The result obtained is shown in Fig. 17.


Fig. 17. The result of changing the geometric dimensions of the primitive

Let us set the coordinates of the base point through the Wizard of functions, which allows us to be sure that the cutout remains in place when changing the overall dimensions of the block:
  • X-coordinate: 50;
  • Y coordinate: 50;
  • Z-coordinate: [DIM_HEIGHT] -500 (height -500).

Subtract the created cutout.
The result is shown in fig. 18.


Fig. 18. The result of constructing the upper left cutout

Upper right neckline


Create a similar cutout on the right side of the block. To simplify the creation of an element, we use the Copy subobject command in the vertical panel of the Parametric Equipment Editor (Fig. 19).


Fig. 19. The command Copy subobject

  • By left-clicking the mouse, select Cut_Upper_Final_L.
  • Click the Copy subobject button.
  • We rename the created primitive: give it the name Cut_up_up_crease_P.
  • We only
    change the X-coordinate of the base point: X-coordinate: [DIM_LENGTH] -50-100, where 50 is the wall thickness, 100 is the length of the cut (in this case, we can’t just indicate any final value of the X coordinate, so how the length of the block can change and we need to bind to the overall dimensions).
    The remaining coordinates are left unchanged.
  • Remove the selection from the cutout and get the result shown in Fig. twenty.



Fig. 20. The result of constructing the upper right cutout

Create internal cutouts


We proceed to create internal cutouts.
Since the inner neckline has a rather complex geometry (Fig. 21), it will consist of several primitives.


Fig. 21. The geometry of the internal cutout of the block

Left inner neckline


In order not to get confused in the large number of primitives built, create a group of objects. To do this, right-click on 3D and then select the Group item (Fig. 22).


Fig. 22. Creating a group in the Parametric Equipment Editor

By analogy with primitives, a group can also be given a name. Let's name the created group Cut-out_Internal_L.
There are two ways to fill a group with objects: the first is to move the created primitives to the group, and the second is to create the primitives directly inside the group. To do this, click RMB on our group and in the same way as before in the body of the build, add the primitives we need.
To simplify the construction, we take one more step: change the transparency of already constructed objects. For this:
  • go to the nanoCAD platform Properties panel (Fig. 23). You can call up the panel by pressing Ctrl + 1;
  • select the block we built in the drawing field;
  • go to the item Transparency and set the value to 70.



Fig. 23. The nanoCAD platform Properties panel.

Next, we return to the parametric equipment editing mode with the Parametric Equipment Editor command, after selecting the necessary object.
To create an internal cutout:
  • create a 3D box inside the group, this will be the main body of the cut;
  • we set the geometric dimensions:
    height: [DIM_HEIGHT] -650 (500 - the height of the upper cut + 150 - the distance between the cuts);
    length: 100;
    width: [DIM_WIDTH] -100 (wall thickness 50 mm  2).

As for the coordinates of the base point, there are two options when working with a group. The first one, as before, is to set its coordinates for each created object. The second is to set the coordinates directly to the Group element; Thus, if later we need to change the location of this “assembly” of elements, we can do this only for the group, and not for each element separately.
We’ll select the second option and continue to create the cutout geometry.
The next created primitive will be "Wedge". Right-click on our group, select the 3D-primitive Wedge. Give him the name Wedge1.
A wedge appeared in the model space, however, for the correct location, we need to rotate it.
Perform the rotation using the vertical toolbar and rotation commands along the axes (Fig. 24).


. 24.

  • Y -90° ( ).
    Y, -90. .
  • :
    : 150;
    : 150;
    : [DIM_WIDTH]-100.
  • :
    X-: 150;
    Y-: 0;
    Z-: [DIM_HEIGHT]-650.

The result of the construction is shown in Fig. 25.


Fig. 25. The result of constructing a wedge for the inner cutout

The next step is to create a wedge for the lower bevel of the cutout.
  • Already familiar to us, create a new wedge in the group.
  • Call it Wedge 2.
  • Turn Wedge2 on the Y axis 180 °.
  • We set the necessary dimensions:
    height: 15;
    length: 50;
    width: 170.
  • Base point
    coordinates: X-coordinate: 150;
    Y-coordinate: [DIM_WIDTH] / 2-85-50 (since it is important for us that this wedge is always located in the center of the block, divide the block width in half and subtract half the width of the wedge (85), and then the wall thickness (50));
    Z-coordinate: [DIM_HEIGHT] -650.

Create a wedge that borders the top of the hole.
  • Create a new wedge in the group.
  • Call it Wedge 3.
  • Turn Wedge3 on the Y axis by -90 °.
  • We set overall dimensions:
    height: 50;
    length: 50;
    width: 170.
  • Base point
    coordinates: X-coordinate: 150;
    Y-coordinate: [DIM_WIDTH] / 2-85-50;
    Z-coordinate: [DIM_HEIGHT] -500-50 (500 is the height of the upper cut, 50 is the height of the wedge).

The result of the construction is shown in Fig. 26.


Fig. 26. The result of the construction (1)

Create two boxes that will limit the cutout created by the very first wedge.
  • Create a new box in the group.
  • Give him the name Box1.
  • We set the overall dimensions:
    height: 150;
    length: 50;
    width: [DIM_WIDTH] / 2-85-50.
  • :
    X-: 100;
    Y-: 0;
    Z-: [DIM_HEIGHT]-500-150.
  • .
  • .
  • 2.
  • :
    : 150;
    : 50;
    : [DIM_WIDTH]/2-85-50.
  • :
    X-: 100;
    Y-: [DIM_WIDTH]/2+85-50;
    Z-: [DIM_HEIGHT]-500-150.
  • .

Next, place the entire group in the desired position. To do this, specify the coordinates of the base point in the properties of the Cutout_Internal_L group (X-coordinate: 50, Y-coordinate: 50). And now we subtract the whole group to get a cutout in the model’s body.
After subtracting the group, the elements inside changed their “visibility”. Those that were bodies became notches — and vice versa. The result of all our actions is presented in Fig. 27.


Fig. 27. The result of the construction (2)

Right inner neckline


Using the Copy subobject button, create a second inner cutout.
  • Select the group Cut_inner_L.
  • Click the Copy subobject button.
  • Name the new group Cutout_Internal_P.
  • For the convenience of construction, we change the X coordinate for the group to 1200.
  • Also, for greater clarity, we subtract the group.
  • Expand the group and select Klin1_1.
  • Turn Wedge1_1 on the Y axis 90 °.
  • Set the coordinates of the base point:
    X-coordinate: -50;
    other coordinates are unchanged.

The result of the construction is shown in Fig. 28.

Fig. 28. The result of the construction (3)

  • Select Klin2_1 (for the lower bevel of the cut).
  • Turn Klin2_1 along the Y axis by -90 °.
  • We change the sizes:
    height: 50;
    length: 15;
    width: 170.
  • Change the X-coordinate of the base point:
    X-coordinate: -50.
  • Select Wedge3_1, bounding the top of the hole.
  • Turn Wedge3_1 on the Y axis 90 °.
  • Change the X-coordinate of the base point:
    X-coordinate: -50.

The results of the last seven steps are presented in Fig. 29.


Fig. 29. The result of the construction (4)

  • Select Box1_1.
  • Change the X-coordinate of the base point:
    X-coordinate: -50.
  • Select Box2_1.
  • Change the X-coordinate of the base point:
    X-coordinate: -50.

The result of the construction is shown in Fig. 30.


Fig. 30. The result of the construction (5)

  • Subtract the whole group.
  • Change the X-coordinate of the base point for the group:
    X-coordinate: [DIM_LENGTH] -150.

We have completed the creation of internal block cutouts. The resulting result is presented in Fig. 31.


Fig. 31. The result of the construction of the internal cutouts of the block We will

establish the transparency of the ventilation block along the layer and proceed to the creation of the external cutouts necessary for its installation.

Creating Outside Cutouts


Left neckline


  • Create a new group.
  • Assign the new group the name Cut-out_L_.
  • Inside the group we create a box.
  • We set the overall dimensions of the box:
    height: 200;
    length: 20;
    width: 120.
  • Create a wedge.
  • We assign him the name Klin_A.
  • :
    : 10;
    : 20;
    : 120.
  • :
    X-: 0;
    Y-: 0;
    Z-: 200.
  • .
  • _.
  • _ Y 90°.
  • :
    : 20;
    : 10;
    : 120.
  • .
  • _.
  • _ X -90°, Y 180°.
  • :
    : 10;
    : 20;
    : 220.
  • :
    X-: 20;
    Y-: 10;
    Z-: -10.
  • .
  • .
  • _.
  • _ X 90°, Z -90°.
  • We set the sizes:
    height: 20;
    length: 10;
    width: 220.
  • Base point
    coordinates: X-coordinate: 20;
    Y coordinate: 120;
    Z-coordinate: -10.
  • Subtract the object.
  • Subtract the Cutout_ Detective _L group.
  • Set the coordinates of the base point of the group:
    X-coordinate: 0;
    Y-coordinate: [DIM_WIDTH] / 2-60;
    Z-coordinate: [DIM_HEIGHT] -300.

The result of constructing an external cutout is shown in Fig. 32.


Fig. 32. The result of the construction of the outer cutout

Right neckline


  • Copy Cut_label_L using the Copy subobject command.
  • Change the name of the group to Cut_prident_P.
  • For greater clarity, we set the X-coordinate of the base point 1100.
  • We open the group, select Klin_A1.
  • Turn Klin_A1 along the Y axis by -90 °.
  • :
    : 20;
    : 10;
    : 120.
  • :
    X-: 20.
  • _1.
  • _1 Y 90°.
  • :
    : 10;
    : 20;
    : 120.
  • :
    X-: 20;
    Y-: 0;
    Z-: 0.
  • _1.
  • _1 Z -90°.
  • :
    : 20;
    : 10;
    : 220.
  • :
    X-: 0.
  • _1.
  • _1 Z 90°.
  • :
    : 10;
    : 20;
    : 220.
  • Base point
    coordinates: X-coordinate: 0;
    Y coordinate: 120;
    Z-coordinate: -10.
  • We change only the X-coordinate of the base point of the group Cut-out_p__:
    X-coordinate: [DIM_LENGTH] -20.

We have completed the creation of the parameterized geometry of the ventilation unit (Fig. 33).


Fig. 33. The final geometry of the ventilation unit

To verify that we did everything correctly and received a parameterized object, we change the overall dimensions of the block: for example, specify the length 1000, height 1500 and width 600. The overall dimensions of the block have changed, but the internal geometry has retained its proportions and location.

Creating Movement Handles


Create five "pens" (Fig. 34), which will be located on the bottom edge of the block.


Fig. 34. Creating "pens"

We indicate the coordinates of the base point.
  • For the first "handle":
    X-coordinate: 0;
    Y coordinate: 0;
    Z-coordinate: 0.
  • For the second "handle":
    X-coordinate: [DIM_LENGTH];
    Y coordinate: 0;
    Z-coordinate: 0.
  • For the third "handle":
    X-coordinate: 0;
    Y coordinate: [DIM_WIDTH];
    Z-coordinate: 0.
  • For the fourth "handle":
    X-coordinate: [DIM_LENGTH];
    Y coordinate: [DIM_WIDTH];
    Z-coordinate: 0.
  • For the fifth "pen":
    X-coordinate: [DIM_LENGTH] / 2;
    Y coordinate: [DIM_WIDTH] / 2;
    Z-coordinate: 0.


We created “handles” for moving (Fig. 35), with the help of which later it will be possible to move the object in the drawing field.


Fig. 35. Ventilation unit with "handles" of movement

If necessary, you can similarly create other types of "handles".
Our ventilation unit is ready. Then you can set all the necessary properties through the left vertical panel of the Parametric Object Editor, and then load the object into the library for future use.

To summarize the work done. We have learned:
  • work with the Parametric Equipment Editor, create a new object and edit an existing one;
  • create separate primitives and their groups;
  • rotate primitives and place them in the right place for us;
  • work with the Function Wizard to parameterize primitives, groups, and “pens”;
  • set and change properties of a parametric object.


In the future, you can use the acquired skills to independently create more complex parametric objects or to adjust library elements in accordance with your goals and objectives.
We also invite you to share success, ask questions and leave suggestions on our forum at forum.nanocad.ru .

Tatyana Tolstova,
technical specialist

All Articles