When we think of modeling tips, most people will probably think about geometry. While that is very important, we often ignore the "I" in BIM. The information or data component of a project is often overlooked but can be extremely valuable when leveraged.
One of the reasons I use Assemble Systems is because it allows non-BIM authors a means to access and consume the data within the model. Some of us might think that Revit and Navisworks are easy to use tools, but for a lot of people, they are very difficult. Potentially there is a lot of value in those models, if you can't access it though, then what's the benefit. Even more intriguing is how Assemble allows the non-BIM user to manipulate data within the model. But this article isn't a sales pitch for Assemble or my consulting services, its about suggestions/tips for modeling for Assemble. In this case, what to do about Assembly Code values.
As with my previous post, this isn't limited to users who are working exclusively with Assemble. Many of these suggestions/tips are just good practice or will allow you to leverage your work for other use cases.
Assembly Codes
Standards for classifying building elements have been around for sometime. There are a number of different classification systems around, including Unifomat, MasterFormat, Uniclass along with several others. Out-of-the-box, Revit uses Uniformat and it stores the classification code in the Assembly Code parameter and the classification description in the Assemble Description.
Assembly Code Use Cases
Use cases for Assembly Codes is an interesting topic. For a designer, I think the low hanging fruit is assisting (no easy button solution) with specification generation from the model. Tools like eSpec will use the Assembly Code values, so accurate assignments are critical. I have also seen a couple firms that use Assembly Codes to help organize/classify clash reports. If you are a contractor and pulling quantities from the model, you might be using Assembly Codes as your cost code in addition to or in place of extracting by Revit category. Regardless of the use case, accurate Assembly Code values are critical.
Assembly Code Assignments
Classifying elements in Revit is not a overwhelming task. People are generating specifications for projects everyday and assigning an Assembly Code value can be part of that process. However, when it comes to Assembly Code values, I suggest erroring on the side of caution.
Assembly Codes can be very useful, but a bad assignment can be worse than no assignment. If you are a designer, think of an Assembly Code like a Room Number. If you don't know the scheme that you will use to number rooms, better to wait before you starting numbering them, so you don't have to re-number later on. Same goes with Assembly Codes and lets take a door for example. In Uniformat there are in the neighborhood of 20+ different classification codes for doors. Uniclass 2015 has well over 30 different classifications. If you are unsure of the classification to use, then you could be providing a wrong value that could impact nothing to, specification generation or estimating/quantity survey estimates.
What can be annoying and time consuming is the time it takes to add or change an Assembly Code value in Revit. It's even more complicated if you are not using Uniformat and want to use another classification systems like Uniclass or Masterformat. If you are using Assemble or a team member is using Assemble, then making those Assembly Code changes can be very quick and easy and can even be performed by a non-Revit user. Whether you are modifying an existing value or switching from one classification system to another, it can be done at the element level, Type level or Revit Category level.
If you are not using Assemble, other options are to just make changes in Revit or use a Revit to Excel to Revit tool that will allow you to utilize a much more efficient data entry process.
If it is one of my projects and we are using Assemble, then my preference is not to manage Assembly Codes in Revit. I prefer to do this in Assemble. The time, effort and accessibility to perform these tasks is much simpler in Assemble. To load a new structure (Masterformat, Uniclass, etc) is very simple.
One of the reasons I use Assemble Systems is because it allows non-BIM authors a means to access and consume the data within the model. Some of us might think that Revit and Navisworks are easy to use tools, but for a lot of people, they are very difficult. Potentially there is a lot of value in those models, if you can't access it though, then what's the benefit. Even more intriguing is how Assemble allows the non-BIM user to manipulate data within the model. But this article isn't a sales pitch for Assemble or my consulting services, its about suggestions/tips for modeling for Assemble. In this case, what to do about Assembly Code values.
As with my previous post, this isn't limited to users who are working exclusively with Assemble. Many of these suggestions/tips are just good practice or will allow you to leverage your work for other use cases.
Assembly Codes
Standards for classifying building elements have been around for sometime. There are a number of different classification systems around, including Unifomat, MasterFormat, Uniclass along with several others. Out-of-the-box, Revit uses Uniformat and it stores the classification code in the Assembly Code parameter and the classification description in the Assemble Description.
Assembly Code Use Cases
Use cases for Assembly Codes is an interesting topic. For a designer, I think the low hanging fruit is assisting (no easy button solution) with specification generation from the model. Tools like eSpec will use the Assembly Code values, so accurate assignments are critical. I have also seen a couple firms that use Assembly Codes to help organize/classify clash reports. If you are a contractor and pulling quantities from the model, you might be using Assembly Codes as your cost code in addition to or in place of extracting by Revit category. Regardless of the use case, accurate Assembly Code values are critical.
Assembly Code Assignments
Classifying elements in Revit is not a overwhelming task. People are generating specifications for projects everyday and assigning an Assembly Code value can be part of that process. However, when it comes to Assembly Code values, I suggest erroring on the side of caution.
Assembly Codes can be very useful, but a bad assignment can be worse than no assignment. If you are a designer, think of an Assembly Code like a Room Number. If you don't know the scheme that you will use to number rooms, better to wait before you starting numbering them, so you don't have to re-number later on. Same goes with Assembly Codes and lets take a door for example. In Uniformat there are in the neighborhood of 20+ different classification codes for doors. Uniclass 2015 has well over 30 different classifications. If you are unsure of the classification to use, then you could be providing a wrong value that could impact nothing to, specification generation or estimating/quantity survey estimates.
What can be annoying and time consuming is the time it takes to add or change an Assembly Code value in Revit. It's even more complicated if you are not using Uniformat and want to use another classification systems like Uniclass or Masterformat. If you are using Assemble or a team member is using Assemble, then making those Assembly Code changes can be very quick and easy and can even be performed by a non-Revit user. Whether you are modifying an existing value or switching from one classification system to another, it can be done at the element level, Type level or Revit Category level.
If you are not using Assemble, other options are to just make changes in Revit or use a Revit to Excel to Revit tool that will allow you to utilize a much more efficient data entry process.
If it is one of my projects and we are using Assemble, then my preference is not to manage Assembly Codes in Revit. I prefer to do this in Assemble. The time, effort and accessibility to perform these tasks is much simpler in Assemble. To load a new structure (Masterformat, Uniclass, etc) is very simple.
- Click the Import button on the Manage Assembly Codes window.
- From the Import Assembly Codes window, click the Choose File button and select your file from its saved location.
- Requirements for successful importing
- If importing a text file (ie- UniformatClassifications.txt from Revit), the values must be separated by tabs instead of spaces.
- Regardless of whether an Excel or txt file are used for importing, the document must contain entries for the Code, Description and Level fields in the same order as that found in the sample docs.
4. Export for Autodesk Revit will provide a UniformatClassifications.txt file that can be imported into Revit using the Assembly Code tool located on the Settings panel under the Manage tab. Performing this function will allow you to modify the assembly codes and descriptions for objects in Revit to reflect your custom coding scheme.
5. Export Assembly Codes and Unit Costs to Microsoft Excel will provide an Assembly Codes and Unit Costs.xlsx file for Microsoft Excel. Use this file to customize the assembly code, assembly description, category, default unit of measure property, unit cost, and required LOD.
6. Download an assembly code template for Microsoft Excel. This .xlsx file contains 4 sheets. The first sheet explains how to use the document. The three additional sheets provide examples of Uniformat codes, MasterFormat codes, and OmniClass codes. Use any of the assembly code sheets as a starting point to customize your assembly codes. Once you've customized your own assembly code file, delete the extra sheets before importing into Assemble. This approach reduces the opportunity for formatting errors and allows for the use of text-based categories instead of the numerical Revit references.
There are two methods for including quantity and cost info in the Assembly Code Tree. Either the Uniformatclassification.txt file from Revit can be augmented or a properly formatted Excel spreadsheet can be imported with the required information. Regardless of the selected method, each document will need to order its information according to the following column headers:
- Code: This is the actual assembly code value itself.
- Description: This is the short description that is married to the assembly code.
- Level: This is a numerical value that identifies which branch level (ie- “how far down”) the code can be found within the code tree.
- Category (Optional): This is a numerical value in the Revit file but can be a text value in the Excel document. It identifies the category that a specific item is related to. For example: “Walls” or “-2000011”.
- Quantity (Optional): This is a user provided value that specifies which unit of measure should be associated with the specific code and unit cost value. For example: “Volume” or “Count”.
- Unit Cost (Optional): This is the per-unit cost value that is associated with the specific assembly code. Note: If the tree file contains Unit Cost information but no Quantity value is included next to each cost, the Automated Estimation feature will not assign the costs to the model information.
- Required LOD (Optional): This is a user provided value that specifies what the required level of development is for each assembly code and description.
With a new Assembly Code structure imported into Assemble, making new Assembly Code assignments in very quick. The process is to:
- Select the elements in either the 3D View or the Model Inventory view. You can select a single or multiple elements, single or multiple Types or single or multiple Categories or a combination of any of those.
- In the Properties menu, under Model Properties, Type tab, click in the Assembly Code field. This will open up the Select am Assembly Code dialog.
In the Select an Assembly Code dialog, you can search and select your appropriate code and assign that to the model element.
Once you complete your data conditioning by updating the Assembly codes, with Assemble you can then push this information back to the Revit model.
As I mentioned, you can perform these tasks in Revit, Assemble just makes the process easier, especially for those who do not know how to use REvit or use it well.