Topic 02: Property Set Definitions
In the previous topic, I covered how to lay the groundwork for establishing a listing of Occupancy types as AutoCAD Architecture/MEP Classifications, which are relevant to your Project’s governing Building Code. Now, through the use of Property Sets, we’ll move-on to creating a means for extracting data from your AEC Objects, and perform a few calculations to automatically determine Room Occupant Loads for your Project.
“Property Sets” represent the “guts” of any BIM-like analysis in AutoCAD Architecture/MEP; by utilizing data that is derived directly from the physical properties, or manual data embedded within the AEC Objects that comprise your Building Model. Property Sets are a set of features that provide the User with a very robust toolset that will: extract data stored in Objects, the Project, Materials, and Classifications; perform mathematical calculations using this derived data; and/or format the resultant data for specialized output scenarios. Think of Property Sets as the “Data Center” control of any Scheduling/Tagging scenario that you wish to accomplish.
Without going into a whole separate topic on Property Sets themselves, for this exercise we’ll be concentrating upon the usage of only the four specific Property Types we’ll need to accomplish our goal of automated Room Occupant Load calculations: Automatic Properties, Manual Properties, Classification Properties, and Formula Properties:
Automatic Properties are data that is automatically derived from the AEC Object the Property Set is assigned to. As the Source Object changes, the values of Auotmatic Properties reflect these changes without requiring User input. In this example, we will use this Property type to dynamically derive the Gross and Net Areas of the various Space Objects placed in our Project.
Manual Properties are just what the name implies: data that the User manually creates and assigns to Objects or Style Definitions via the Property Set. This type of Property is normally used for raw data that is not derived from an Object’s geometry, and is static in nature. In this example, we’ll use a Manual Property to provide a place to optionally enter the Actual Occupancy of a Space, which is usually needed when the actual occupancy is larger than Building Code defined calculated occupancy, and another to pre-determine if the Gross or Net are of a Space is to be used to calculate Occupancy, based upon the Space Object’s “occupancy” Classification assignment.
Classification Properties are a special flavor of Property type, which reads the values of Manual Properties stored in a separate Property Set, which is attached to a Classification. This sounds like quite a complex mouthful to explain in words, but once demonstrated, it’ll seem simpler. Just think: Manual Property Data is stored in a Classification, and an Object has a Property Set with a Classification Property that looks for the value of the Manual Property of whatever Classification is currently assigned.
Formula Properties are a Property type that allows one to read the current values of other Properties, and then perform a wide-variety of mathematical operations upon that data. We will use Formula properties to: a.) Read the Net and Gross Areas of a Space Object, b.) Read the “Floor Area per Occupant” Property that is defined in a separate Property Set contained in the “Occupancy” Classifications we started to setup in Topic 01 (more on this later…), c.) Read a few Manual controlling Properties to determine how to calculate the Room Occupant Load, and d.) Output the proper calculated result. This sequence of operations might sound complicated, but all this computation occurs in a single Formula Property, making the amount of custom programming that you’ll need to do pretty limited, which is nice.
Note: This article will not be a comprehensive guide on how to create Formula Properties and the VBScript programming language they utilize to create complex computations of data. Examples will be offered to achieve our Occupancy calculation goals, but it will be assumed that the Readers of this article understand how to implement the example plain-text representations of the VBScript code that is used.
The basic concept of automating Room Occupant Loading goes something like this:
1. Space Objects are created in the Drawing to define a particular “Occupancy Region” (usually a room).
2. The “DesignOccupantLoad” Property Set is attached to each Space Object.
3. An “Occupancy” Classification is assigned to each Space Object.
4. The Property Set contained in the Space Object, reads Property Set Data from the currently assigned “Occupancy” Classification, and utlizes it to supply the values of pre-defined variables in it’s Occupancy calculation formula, and returns a result.
5. This Design Occupant Load value may then be displayed in a Tag and/or Schedule.

Figure 01 - Creating a new Property Set Defintion
So to begin, we need to create 2 separate Property Sets: One to be assigned to the Classifications, and one to be assigned to the Space Objects. The Data of these two Property Sets will be combined and operated upon, through the use of a single Formula Property contained in the Space Object Property Set.
Classification Property Set: “Occupancy Groups”
First, let’s create the Classification Property Set:
(The Space Object Property Set will reference Properties contained in this one, so we need to create it first)
1. Open the Style manager in your AutoCAD session. (command: AECSTYLEMANAGER)
2. Expand the Documentation Objects folder and <right-click> on Property Set Definitions, and select New from the cursor menu. (see fig.01)
3. Name the new Property Set Definition: “OccupancyGroups”.
4. While this new Property Set Definition is still selected, in the right-pane of the Style Manager GUI, select the “Applies To” tab.
5. In the “Applies To” interface select “Styles and Definitions” (radio-button) and “Classifications” (check-box listing). (see fig.02)
6. Next, select the “Definition” tab in the same interface. This is where you’ll define the various Properties that you’ll need. The buttons along the right edge of the interface represent that various Property Types that may be created.
(Note: You’ll notice that only the “Manual” and “Formula” Property types are applicable to Classification Definitions, all other buttons are inactive.)

Figure 02 - "Applies To" Classifications
7. Start by creating the following Properties (listed by Name/Type). Don’t worry about configuring them yet, just get them all created:
“Description”/Manual
“FloorAreaPerOccupant”/Manual
“NetAreaRequired”/Manual
8. Enter any descriptive text in the “Description” field that you’d like, for each of the three Properties. (optional)
9. Set the “Type” field for the “NetAreaRequired” Property (only) to be “True/False”. The other two should have defaulted to “Text”. (please change them to “Text” if they haven’t defaulted to that Type)
Once the “OccupancyGroups” property set is created, we can return to our “Occupancy” Classification Definition created in Topic 01, to attach and populate the Classifications with “OccupancyGroups” Property Data:
1. In the Style Manager interface, browse to Multi-Purpose Objects>>Classification Definitions and select “Occupancy”. In the right-pane, all of the different Occupancy Types that you setup in Topic 01 should be listed.
2. Now, you must Add the “Occupancy Groups” Property Set to each Classification in this listing. To do this, simply select a Classification in the listing, and then click on the Property Sets… button in the same interface window. This will display the Edit Property Set Data interface window, which will be blank. In the bottom-left corrner you’ll find the Add Property Sets button, click that. The Add Property Sets window will appear, and the “OccupancyGroups” Property Set will be listed. Check the box beside it, and click OK.

Figure 03 - Edit Property Set Data
3. You should now have the Edit Property Set Data window before you again, but this time with the OccupancyGroups Property Set present, with it’s individual Properties listed below. (see fig.03)
4. Manually enter a Description for this particular Occupancy type, the code-defined Floor Area per Occupant, and if the Net Floor area of the Space shall be used in the design Occupant Load calculation, or not (true/false).
Note: The “Occupancy Groups” Property “Description” may be retrieved later for scheduling purposes, where as the main Classification “Description” field may not, thus the redundancy of replicating that piece of data in two places.
5. When complete with the data-entry for the Property Data, click OK to return to the Occupancy Classifications in the Style Manager, and repeat these steps for each Classification in the listing.
Space Property Set: “DesignOccupantLoad”
Now that the Classifications are populated with Property data, we can move on to setting-up the DesignOccupantLoad Property Set that will be attached to the Space Objects in your Drawing.
1. Follow the steps 1-5 outlined above for creating a new Property Set Definition. For this Property Set Definition: Name it “DesignOccupantLoad”, Set the “Applies To” to Objects, and check “Space” in the listing.
2. In the Definition tab of the Property Set Definition interface, create the following Properties:

Figure 04 - Automatic Property Source
“ActualOccupancy“/Manual
Notes: set Type=Integer
“GrossFloorArea“/Automatic
Notes: Creation of this Property will open a new window: Automatic Property Source. In this interface, select “Gross Area” in the list of possible Space Properties that appears. (see fig.04)
“NetFloorArea“/Automatic
Notes: Creation of this Property will open a new window: Automatic Property Source. In this interface, select “Net Area” in the list of possible Space Properties that appears.
“DesignOccupantLoad“/Formula
Notes: Creation of this Property will open a new window: Formula Property Definition. Just enter the Name: field for the Property for now, and click OK; we’ll define the VBScript for the formula in a later step.

Figure 05 - Classification Property Definition
“FloorAreaPerOccupant“/Classification
Notes: Creation of this Property will open a new window: Classification Property Definition. In this interface, enter “FloorAreaPerOccupant”in the Name: field, check the box beside “Occupancy” as listed in the Classification Definition: list box, check the Classification Property: box, and finally, expand Occupancy Groups and select the “FloorAreaPerOccupant” Property. (see fig. 05)
“NetAreaRequired“/Classification
Notes: Creation of this Property will open a new window: Classification Property Definition. In this interface, enter “NetAreaRequired” in the Name: field, check the box beside “Occupancy” as listed in the Classification Definition: list box, check the Classification Property: box, and finally, expand Occupancy Groups and select the “NetAreaRequired” Property.
3. Ok, we’ve created all of Properties that we’ll need in the “DesignOccupantLoad” Property Set. Now, we just need to re-visit the Formula Property “DesignOccupantLoad” to create the VBScript that will retrieve the necessary pieces of data from other Properties, and then perform the occupancy calculation while considering the value of a few variables.
4. Start by double-clicking on the “DesignOccupantLoad” Formula Property. This will re-open the Formula Property Definition interface for that Property. In the Formula box, you will need to create a VBScript that will process your data, and calculate the proper result based upon what “Occupancy” Classification is assigned to the Space.
5. To begin crafting our Formula, this we’ll start by determining if we should be using the Gross Area or the Net Area of the Space Object. This is controlled by the “NetAreaRequired” true/false Property in the “OccupancyGoups” Property Set assigned to the Classificartions, and is then read-though to the “NetAreaRequired” Classification Property contained in the “DesignOccupantLoad” Property Set assigned to the Space Objects. So to start our VBScript calculation, we need to retrieve the value of the “NetAreaRequired” Classification Property, test it’s true/false value, and supply the proper Area value to the remainder of the formula; all done though the use of an “If…Then” Statement :
if [NetAreaRequired] = True then
AreaBasis = [NetFloorArea]
Else
AreaBasis = [GrossFloorArea]
End if
You’ll notice in the example code that I’m introducing the variable: “AreaBasis” to store the Gross or Net value we want to use.
6. Next, we need to calculate the code-determined occupancy for the Sapce Object by dividing our “AreaBasis” variable by the “FloorAreaPerOccupant” value defined in the “Occupancy” Classification’s Property Set, and then round that value to a nice even number:
MaxFloorArea = Round(AreaBasis/[FloorAreaPerOccupant] )
You’ll notice in the example code that I’m introducing another variable: “MaxFloorArea” to store the Code-determined Occupant Load.
7. Lastly, we just need to determine if the actual occupancy of the Space exceeds that of the Code-determined occupancy, and output the proper DesignOccupantLoad result for the Space. We’ll start by checking if the (optional) “ActualOccpancy” Manual Property has been given a value, and if it has, whether or not it’s lager than the code-determined occupancy; and then reurn the final RESULT:
if [ActualOccupancy] > MaxFloorArea then
RESULT = [ActualOccupancy]
Else
RESULT=MaxFloorArea
end if

Figure 06 - "DesignOccupantLoad" Formula Property
Note: When you’ve completed these steps of making the Formula, it should look like this example screen-shot. (see fig.06) If you’ve referenced the various Properties (text-code contained in brackets) properly, by double-clicking on them in the Insert Property Definitions: list below the Formula: box, they will be highlighted with a background color. If you need further instruction on creating Formulas, please consult your software’s Help Guide.
Ok, well that completes the exercise of setting up the necessary Property Sets to calculate Design Occupant Load. In the next Topic, we’ll start by attaching our Classifications and Property Sets to some Space Objects, and test the results of our newly-automated calculations.
Next Topic 03: Working with Space Object Data



