Assemblies (1)
Assemblies are essential during parametric modelling, because they allow to subdivide the model into smaller, easier to manage, portions.
|
|
As shown in the example to the left, the roof must remain connected to the pillars when their height changes, and the pillars must remain in the corners of the terrace when the terrace's dimensions change. And, the pillars' geometry must also remain editable, based on a single reference object.
|
Two functions are instrumental in achieving the above: creation of points using the options offered in the "On Vertex", On Edge", and "On Face" pull-down menus, but also those in the "On Curve" pull-down menu, to ensure the anchoring and positioning of an object. Finally, the "Orientation" object, which allows the definition of a transformation matrix that will manage rotations.
Assemblies rest on positioning and orientation operations (transformations and rotations). An assembly can therefore be achieved using "Translation" and "Rotation" objects. In the example below, the sphere is to be placed on a corner of the cube, which will require a simple rotation using the Translation tool in "From Point To Point".
|
|
The cube's corner is identified by an X,Y, coordinate set. Place the sphere on this anchor point using the Translation object "From point to point". If the cube's dimensions were to change, the sphere's location point will not move because it is not anchored the cube's corner (e.g. there is no relationship between the sphere and the cube). Hence, the sphere will not move either, and would not remain centred on the cube's corner.
|
|
|
In the example to the left, a "Point On Vertex" is created. Select the "Box.32" cube, select one of the corners by toggling the index among the 8 possible choices (Preview will highlight the corners with a red box). A "Point On Edge" is then created. The principle is identical, and the choice bears on one of the 12 edges. A value (fraction) between 0 and 1 determines the point's location along the edge. An absolute value can also be used (beware, this is not a length measurement !).
|
Finally, a "Point On Face" point is created, selecting one of the cube's 6 faces, and specifying parametric values in the u,v directions.
|
|
Using the notions presented above, positioning the sphere with a Translation object will establish a relation between the cube and the sphere's centre, e.g. the relative position. A change to the cube will be cascaded to the sphere.
|
|
|
NB: "On Vertex", "On Edge" and "On Face" placements make use of an index, which depends on the number of vertices, edges or faces of the reference object and on their ordering. To further illustrate this point, place a point on Face #1 of the object using Translate / Move.
Then fillet the edges of the box, which causes the number of faces and their indexing to change.
The point stays on the face with the assigned number, therefore changing location on the object, and the Boolean operation is updated accordingly.
The point's properties must then be edited, the desired face re-identified, and the correct index re-specified.
|
|
|
In the example to the left, a hole is to be made in the the box, in the X direction, by a Boolean intersection with a cylinder.
First, position the cylinder on the box. The Translation object won't work because the cylinder is oriented along the Z direction.
Instead, use Orientation.
In the menu, and select "Point & DirXYZ -> Point & DirXYZ", which allows to define a location by 2 points and a direction by one X,Y,Z vector, which allows computation of subsequent rotations.
|
|
|
In the example to the left, the T-shaped solid is to be placed on the box. "Point & DirXYZ -> Point & DirXYZ" would have worked, but here we will will use the "2 Points -> Point & Normal" alternative.
Two "On Face" points are created at the base and at the top of the "T".
When creating the "Orientation" object, select the "T" , then the points just created on its base and top . They define the principal direction (orientation) of the "T".
|
To position the "T", select a point in the middle of the solid's face, then identify this face by toggling the face index. The geometry can now be computed, and shown in the preview. Next, select the principal direction for this face (U, V or normal) and add a rotation angle about the selected principal direction. Finally, add an offset to offset the "T" and reverse its orientation.
|
|
In the example to the left, use Rhino commands to create an "On Vertex" point on one of the box's corners, then an "On Edge" point on one of the edges.
Then create an "Orientation" object using the "T" and "2 Points -> Point & Normal". Start by creating two "On Face" points.
If the "Orientation" object were to use the On Vertex point there would exist 3 possible solutions for the normal, which is selected by toggling the face index.
If using the On Edge point, there would exist only 2 possible solutions, also to be chosen with the face index.
|
|
|
As shown here, if one edits an "orientation" object to change its anchor point, passing from a point On Edge to a point On Face, it will be necessary to re-define the index to that corresponding to the desired face.
Once the index is correctly identified, the model rebuilds itself and can be previewed.
Moreover, changing the box's dimension will update the Orientation object anchored on the box itself.
|
|
|
The latter creation process is further addressed here, as it allows you to position several objects at once.
In the example to the left, the small cylinders are to be placed on the box according to their initial location relative to the "T".
For this, use "Object & Orientation". In the first field select the object to be oriented, and in the second the "orientation.374" object.
Repeat for each cylinder.
The cylinders will then be placed on the box, along with the "T", in the same relative position to the "T" as the originals.
|
Now the face index of the "On Face" point used to anchor the "T" is changed. The ensuing update shows the "T" and the Orientation objects (the cylinders) in red, signifying the update is impossible. It is necessary to edit the "orientation.374" object and correct the index value (because the same face has a different index). Updating of all related objects will then complete as expected.
Relative positioning creates additional possibilities. Changes to the polygon in the base assembly, the box's size, the reference cylinder's height, and the box's anchor point location will update the whole model associatively.
|
|
In the example to the left, place a T section on the polyline's second segment.
Start by creating an On Edge Point high up on the section, which will be used to define its direction. Then create a On Edge point on the polyline's 2nd segment, which will be the anchor.
Then create an Orientation object using "2 points -> Point & Normal", to locate the section in a plane perpendicular to the polyline's segment. Similarly to the placement on the face of a solid, here the segment's index must be specified.
|
|
|
It is even possible, as shown here, to select not just a point on a curve, but actually a point used as a parameter to define a curve.
Start with one the polyline's vertexes. Select a segment by its edge index. This segment will be used to compute the normal.
In the second instance, use the intersection point of 2 curves. In this case, the index allows the selection of which curve will be used to compute the normal of the plane on which the section will rest.
If the curve is changed, but not the anchor's geometry, the section will no longer be perpendicular to the curve, which is correct since the curve is NOT a parameter of the Orientation object.
|
|