In-Place To External
This is a post about the new tool In-PlaceToExternal included in the new release 1.14 of cloud2model. Note: After extensive beta testing the tool functionality has been updated following the user feedback. The default settings are now thought for the most typical case scenario. And in general to allow a simpler user experience, while maintaining the more complex options for special cases. This post has been modified accordingly in relation to the first version published in January.
In-PlaceToExternal brings exciting new functionality to cloud2model. It allows to create an external conventional Revit family directly from an in-place family and automatically replace the original in-place family by an instance of the new external family. And with full custom control of the different steps of the process, like the family template to use, the reference for the coordinate system of the external family and the hosting options.
In-place vs external in the context of scan2BIM.
Typically you will mostly use external families in Revit. They are defined in a separate environment than the project, the family editor. You have the option of creating a family directly in the project environment, an “in-place” family. But this is only for singular elements that will be never be repeated or duplicated in the project.
In the context of modelling from point clouds, the definition of the families in the family editor is very challenging because you have only the point cloud reference in the project and not in the family editor. This is the reason that cloud2model have tools that allows to export the point cloud to the family editor, like Cloud2FamilyByWall for window and door families, and Cloud2FamilyBySectionBox for families in general.
But to define the family as in-place directly in the project environment can be very convenient and efficient in scan2BIM. With this new tool we have a new powerful workflow: start the family as in-place and automatically transform it to an instance of an external family that can be duplicated as any conventional family.
(Many) Options.
The new tool will open a separate window with all the needed commands and options involved in the process. They allow to fully control how the new external family is going to be created and inserted. All the different possibilities can be a bit overwhelming at the beginning, but they follow an organization related to the logical steps in defining the family:
1. Paths of the family template to use and where to save the new family.
2. Definition of the coordinate system reference (CSR).
3. Creation to the new family.
4. Place an instance exactly in the same position and orientation as the original family in-place.
Every step is explained bellow in full detail. But before lets keep and overview of the typical workflows for both most typical cases and singular situations.
FOR MOST TYPICAL CASES.
The family instance will be hosted in a level.
2. Leave the default settings. Insert a CSR selecting a face of the in-place family.
3. Select the family in place. Leave the default settings. Create the external family.
4. Leave the default settings. Review the selected level for hosting the family and change if needed. Insert the family instance.
FOR SPECIAL CASES.
The family instance will be hosted in a face.
2. Set Align Z on. Insert the CSR selecting the face to host the family instance.
3. Select the in-place family. Leave the default settings. Create the external family.
4. Leave the default settings. Select “Same as CSR insert” as hosting option. Insert the family instance.
Family templates.
In-PlaceToExternal allows to use any family template for the new external family. When using “SELECT FAMILY TEMPLATE” a select file dialog will open in the default family template folder of Revit.
It is recommended in general to select the generic model family template and later change the family category if needed. As it explained bellow in “Creating the family”, the new created family can be automatically opened in the family editor to any needed edit before inserted in the project.
After we use this new tool for second or later time in the same Revit season, the previosuly selected family template and file path to save the new family will be remembered. There is no need to browse and select the same family template each time. And for the file path to save, we can directly change the file name in the text field, instead of using “SAVE NEW FAMILY TO” for a conventional save file dialog.
Coordinate System Reference (CSR).
The definition of the local coordinate system of the new family is an important step in the process. Revit families are typically defined with a base “Ref. level” plane or XY, a “Center (Front/Back)” plane or XZ and a “Center (Left/Right)” or YZ.
We will insert a Coordinates System Reference or CSR to define the local origin and the orientation of the base level plane and the two center planes. The CSR is an adaptive component of one placement point with explicit visual feedback of all the axis and planes involved.
We use the conventional RGB color for the axis: X as red axis, Y as green axis and Z as blue axis. For the planes we use the color of its normal axis: ref level or XY as blue plane, center front/back or XZ as green plane and center left right or YZ as red plane.
After clicking “INSERT COOR. SYS. REFERENCE (CSR)” we will select first a planar face. The picked face will be set automatically as current working plane allowing to insert the CSR snapping precisely in any defined point in the face. After insert, we can move the CSR as any Revit element, but is recommended to place it in the correct position directly when inserting it.
The orientation of the axis and planes of the CSR will follow the two related settings:
Align X axis with face. If on, the X axis will be aligned with the selected face. If the family in place is tilted or rotated in relation to the main directions of the project, with this option the CSR will be directly aligned with the local directions of the family in place. If off, the X axis will follow the main directions of the project.
Align Z Axis with face normal. If on, the Z axis will be aligned with the selected face outer normal direction. If off, the z axis will be vertical with positive side pointing up.
FOR MOST TYPICAL CASES.
Usually we will select a face of the in-place family to insert the CSR. And the family instance will be hosted in a level. For this typical case scenario the default settings (align X on and align Z off) will normally work smoothly. Even if the family in place is aligned with the main directions of the project, and align X is no strictly needed.
FOR SPECIAL CASES.
In singular situations we will host the family instance in a face, instead of in a level. Like a face in a wall or a inclined roof (not horizontal faces) or a face in a ceiling (horizontal face but with normal pointing down). In these cases, the logical internal XY plane or Ref. Level of the family definition will be that face. We will switch align Z on, and select the face that will later host the family instance for inserting the CSR, instead of using an own face of the in-place family.
In this special case, it is needed that the face to host the element is belonging to an element itself hosted in a level, like walls, roofs or ceilings.
EDITING THE AXIS ORIENTATION OF THE CSR.
The optimal use of this tool is to directly insert the CSR, not only in the correct point but with the correct axis orientation. But if needed, we can change the axis with the rotation helpers “ROT X”, “ROT Y” and “ROT Z”. They rotate 90° the CSR using the named axis as rotation axis. For example, with “ROT Z” we will change X and Y. If want to flip the positive side of a plane, we can rotate two times (180°) in relation to any axis contained in the plane. For example, to flip the positive Z side, we can use two times “ROT X” (to change Y and Z) or “ROT Y” (to change X and Z).
Another option is to rotate the CSR using the conventional Revit rotation tool after it is inserted (the face used for insertion will be the current working plane). This will allow to rotate the X and Y axis any precise angle, instead of only multiple of 90° like when using the rotation helper “ROT Z”.
OTHER TIPS.
We can insert as many CSR as we want, deleting or not the previously placed ones. But only the last one inserted will be modified by the rotation helpers and used for reference in the family creation.
We can change the visible size of the CSR planes with its instance parameter “Size”.
Creating the family
Using “SELECT IN-PLACE FAMILY” we can pick any visible in-place family. When we have already done all the needed steps, the bottom “CREATE EXTERNAL FAMILY” will be available. In the feedback area of the window tool we have info if any needed step is missing, like:
Select family template.
Set path to save the family to.
Insert coor. sys. reference (CSR).
Select in place family.
After clicking “CREATE EXTERNAL FAMILY” we will be prompted to confirm:
To save and close an existing family, if it has the same name and its already open in the family editor.
To overwrite a file, if there is a file with the same path address.
After the family is created we will get a confirmation dialog with the saved path and the possibility of automatically open the new family in the family editor. This allows to make any further adjustment in the family before inserting it. But there are some options that we can set in advance of creating the family. They allow some basic family configuration and we can avoid any need of editing the family in the family editor in most of the cases. These are the options:
Name of the default type (if left empty, it will be used the family name).
Family parameter “Work Plane-Based”.
Family parameter “Always vertical”.
Family parameter “Shared”.
FOR MOST TYPICAL CASES.
For family instances hosted in levels, work plane based is not needed and they will be always vertical, it does not matter if the always vertical condition is set. But there is not issue if we leave work plane based on (default settings) and the new family will be more flexible to use if later we decide to host it, for example, in a slab upper face. About forcing or not always vertical it depends on the case, but it is understood that it is a bit more flexible no to set the condition (default settings).
FOR SPECIAL CASES.
For the singular cases that we will host the family instance in a face, as described before, work plane based must be on. In these situations the face can be not horizontal, or not horizontal pointing up, and always vertical must be off. So the default settings will suit the special cases too.
OTHER TIPS.
To define in advance the three family parameters is thought for an optimal use of the tool. But these family parameters can be always changed in the family editor after the family is created.
We can change the position and orientation of the CSR before creating the family. Once the family is created, the position and orientation of the CSR is recorded. It does not matter if we change or even delete the CSR afterwords.
When creating the family the default host option (see bellow) will be updated to the closest level bellow the position of the CSR. Or the closest level above if there is not levels bellow.
Replacing the original family in-place.
The last step of the process is to insert an instance of the new family in the correct position and orientation to match exactly the original family in place. This is done automatically with “INSERT IN SAME POSITION”, that will be available after the new family is created.
We have a drop list with the different hosting possibilities. And some additional options to be set before using “INSERT IN SAME POSITION”. They help to automatize the workflow after the instance of the new family is inserted:
To delete the original family in place .
To delete the CSR used.
If the new family is open in the family editor, to save it and close it.
The hosting options are all the levels of the project with “Building Story” on, ordered in increasing height + two special options for singular cases of hosting the family instance in a face.
FOR MOST TYPICAL CASES.
For family instances hosted in levels we will select the desired level. As explained before, the default option in the drop list will be the closest level bellow the position of the CSR.
FOR SPECIAL CASES.
For the singular case of family instances hosted in faces, we have these two options:
Same as CSR insert. It is assumed that the face selected for inserting the CSR is the one to host the family. This is the most convenient and straightforward workflow for this kind of situations.
Select face. This is a special option that allows to select any face, independently of the face used for inserting the CSR. But it must be noticed that the face must be consistent with the CSR orientation (the face normal must match the CSR Z positive orientation).
As explained before, the host face must belong to an element itself hosted in a level, which will be set as “Schedule level” of the new family instance.