December 29, 2009

Space Schedule with Header Rows, sorted by Level and Building/Wing

A request was posted to this thread in the Autodesk AutoCAD® Architecture Discussion Group, looking for a way to add three blank lines between different building wings in a Schedule Table. A sample image was attached to the post, showing a header label in the middle line.
I suggested that it would be possible to get close to what was shown, by adding some hidden columns to control the sorting and some "non-real" Spaces for the blank rows, similar to the techniques used in two previous posts from some time back (Clustering Spaces Within A Unit in a Space Schedule and Electrical Device Schedule Using Clustering). I noted that it would not be possible to have the vertical lines between columns stop at the row with the header text, and that the header text would not be able to be in a larger font or be able to extend across multiple columns. I was able to use the 2009 release to put together a sample file, posted in a reply in the Discussion Group thread, that demonstrates the required techniques to achieve the desired results. I did choose to omit the remarks column and also chose to make the ceiling height column a separate column, to avoid the need to build an Imperial feet-and-inches formatted string at the end of the ceiling finish.
To achieve the results shown, I took advantage of a feature not available in the 2005 release in which the earlier examples were done – Classification Definitions. I set up a Classification Definition called SpaceHeader that has two classifications: "Header", used to designate the Space Style used for the header rows, which are not "real" Spaces in the project, and "Space", used to designate Space Styles used for actual Spaces in the project. Using a Classification Definition offers two advantages: it allows identifying the header Spaces at the style-level and would make it easy to exclude these "non-real" Spaces from other Space-related Schedule Tables, such as one listing and totaling areas.

A custom Space Style, called Header, has display overrides to place all components on a non-plotting layer, a default size of 1" x 1" x 1" and is classified as "Header". The other Space Styles used in the sample files are out-of-the-box styles, set to the "Space" classification. The sample files include three "construct" files, representing the first, second and third floors, with sample spaces in two wings/buildings in each file, including three Header Spaces for each wing. There is also a "view" file into which the three construct files are externally referenced, with the Schedule Table. While the files are not part of an AutoCAD Architecture "project," the same techniques could be used when using Project Navigator.

The SpaceObjects2 Property Set Definition was created from scratch, to avoid any confusion that might arise from having "extra" properties from the out-of-the-box property sets. Once you understand how the properties in the sample file work, you will most likely want to incorporate the techniques into the object-based property set you are currently using for Spaces, to avoid having to recreate Schedule Tags and other Space-related Schedule Tables.The SpaceObjects 2 Property Set Definition includes manual properties for Sector, Level, Number and Number Suffix, which are combined in the RoomNumber-Composite formula property to create the room number for each real Space. If you are using Project Navigator, you can substitute a project property for the Level property, and, if you are using Divisions for your wings or separate buildings, you can also use a project property for the Sector property. I made the Number property an Integer-type manual property; if you prefer, this could be an Auto Increment – Integer type. The RoomName property is an automatic property, using the Room Name property of the Space. Substitute your firm’s standard way of doing room names if it differs.

Text-type manual properties to hold the floor, wall base, wall and ceiling finishes for each real Space are also included in the SpaceObjects2 Property Set Definition. An Integer-type manual property called SortOrder1, with a default value of 10, is used to control the sorting of the Header Spaces. Real Spaces all keep the default value (no editing required), assuring that they will be sorted after the Header Spaces for each respective floor/wing. One Header Space for each wing of each floor has SortOrder1 set to 1, another (the one with the header text in the room number column) is set to 2 and the third is set to 3. A Text-type manual property called HeaderText, with a default value of an empty string, is provided to allow entry of the header text. Only the Header Space that is assigned the SortOrder1 value of 2 has the default value for the HeaderText property edited.

An automatic property called Height, referencing the Height automatic property source for Spaces, is used to obtain the ceiling height automatically. A classification property called SpaceType is used to determine what SpaceHeader classification has been assigned to each Space.

The header rows are blank (or nearly blank) because the Schedule Table does not display any of the above noted properties directly. Instead, each visible column in the Schedule Table references a formula property, each of which is structured something like the one for RoomNumber-Schedule shown in the image below.In each formula, the value of the SpaceType property is checked to determine if the Space is a "Header" Space. If so, the RoomNumber-Schedule property returns the value of the HeaderText property (blank for header rows 1 and 3; the header text for header row 2). All of the other formulas return an empty string for Header Spaces. If the Space is a "real" Space, then the value of the corresponding property is passed through (RoomNumber-Composite for the RoomNumber-Schedule property).

Sorting is accomplished by including three hidden columns in the Schedule Table, for the Level, Sector and SortOrder1 properties.These three columns, along with the RoomNumber-Schedule column, are used to achieve the desired sorting.All of the Spaces are initially sorted by Level. Within each Level, the Spaces are sorted by Sector, then the SortOrder1 value is used to get the Header Spaces, in order, at the top of each Floor/Sector group. Finally, the RoomNumber-Schedule column is used to sort the real Spaces by room number.

While the final Schedule Table does not match the sample 100%, it is pretty close, and given that all of the graphics are part of the Schedule Table, and not additional, manually placed items that would have to be checked and updated every time the Schedule Table was updated, I think this is a very workable solution. One final note: this technique will not work for Schedule Tables that include a "total" for any column in the Schedule Table, since the blank rows will have a non-numeric empty string value.

1 comment:

antman said...

Hi David!
I've recently started my own blog. It's very new and much of it is a work in progress.

I have added your blog to my blogroll, but I wanted to give you the opportunity to inform me if you'd rather I not provide the link.

Anthony Mason