October 11, 2011

ACA Openings with "Style"

The Opening object in ACA does not have styles. So, unlike Doors, Windows and many other ACA object types, you can not control the display of Openings with overrides at the style level, nor can you attach style-based Property Sets. Given the relatively limited display components associated with Openings,
not having styles may not be a problem for you. But if you have ever wanted to show different types of Openings in different ways, and wished that you could control these displays at the style level, rather than having to make the changes on each individual Opening, then you may be interested to know that it is possible use a Door to emulate an Opening, and thereby gain the benefits of having an Opening-like object that has styles. Another advantage of doing this is that you can assign a Profile to a Door Style acting as an "opening", allowing you to have non-rectangular "openings".

Before diving into the specifics, it is worth noting some of the limitations. If you make use of the Fill Types in the plan display of Openings, and you use a hatch pattern other than Solid Fill for the fill, you will likely be disappointed, as the use of a unit block to mimic the Fill Types will almost always result in a distortion of the hatch pattern since the Width and Depth dimensions will likely result in unequal scaling of the block. Another minor limitation is that, unlike when selecting the Triangle A or Triangle B Fill Types, the display of Cross Line B will not automatically be suppressed when turning on the display of the custom block for Triangle A or Triangle B. The four Fill Types are also not mutually exclusive - you could accidentally have more than one turned on at a time. If none of the above are deal breakers for you, then read on to see what is needed to set up a Door Style to enable "openings" with style.

Custom Blocks
In order to duplicate the components available in an Opening object, you will need to create eight "unit" blocks, one for each component. A description of unit blocks can be found in this blog post. The graphics of each unit block fit within a one-unit by one-unit area; the eight unit blocks can be seen in the image below. The insertion point is in the lower left corner of each block. The linework or hatch in each block is drawn on Layer 0, with Color, Linetype, Plot style (if you use named plot styles) and Lineweight set to ByBlock, so that the Display System will be able to contol all of these properties.
The four blocks on the left side provide the graphics for the equivalent of the Length Lines, Width Lines, Cross Line A and Cross Line B components of an Opening. The four blocks on the right side provide the equivalent of the four Fill (Hatch) Types: Cross A, Cross B, Triangle A and Triangle B, provided that you set the Hatch component to use a Solid hatch.


Door Style as Opening
With the custom blocks defined, you can now create the Door Style that will be used as a style-based "opening". The following steps will show how to do that, matching the out-of-the-box Display settings for Openings; if your office has customized those settings, you will likely want to use those instead. On the Manage ribbon tab, on the Style & Display panel, click the Style Manager tool to open the Style Manager. Expand the Architectural Objects node (under the drawing in which the unit blocks are defined) and select the Door Styles node. In the right pane, right click on the Standard Door Style and choose Copy from the context menu, and then right click over a blank area on the right pane and choose Paste to create a copy. In the left pane, select the new copy (mine was called Standard (2)) and choose the General tab. Rename the style in accordance with your firm's naming convention. (I used Door as Opening for my example style, and provided a description for the style.)
On the Dimensions tab, in the Frame area in the upper right, set the width to 0" and make certain that the Auto-Adjust to Width of Wall toggle is checked. Simply turning off the Frame component is not enough - you need to set the Width of the Frame component to 0 here so that the Width set on the Door (as Opening) will also be the width of the actual opening created in the Wall.
On the Design Rules tab, change the Door Type to Pass Through. If you are looking to create a non-rectangular opening, you would assign the profile on this tab.
You can set up standard sizes on the Standard Sizes tab, if you like. On the Display Properties tab, click on the toggle in the Style Override column for the Plan Display Representation to set and edit a style-level override.
The Display Properties dialog will open. On the Layer/Color/Linetype tab, turn off the display of all components by clicking on all yellow lightbulbs in the Visible column to turn them off.
This will suppress the display of the standard Door components in a plan view. The custom blocks will now be added to provide the equivalent of the components for Openings. On the Other tab of the Display Properties dialog, click on the Add button.
In the Custom Block dialog, do the following:
  1. Click the Select Block button and choose a block definition to add as a custom display block in the Select a Block dialog. In the example, the Dr as Opng - Length Lines block is selected. This is the Length Lines block illustrated above. Click OK to register your change - the block name will be displayed to the right of the Select Block button.
  2. Choose the conditions under which the custom block will display (Always, When Intersectiong Cut Plane, When Above Cut Plane, When Below Cut Plane). In a brief experiment, I found that Opening object components, when "on", appear to display regardless of whether the Opening is cut by the cut plane, above the cut plane or below the cut plane, so I left all of my custom blocks set to Always display. You may choose to do differently, if it meets your needs.
  3. In the Scale to Fit area, enable the scaling toggles for Width and Depth. This will cause our unit block to be scaled to match the user specified Width for the Door object and the width of the partition (because we enabled the Auto-Adjust to Width of Wall toggle on the Dimensions tab of the style). Since the block only contains 2D (plan) graphics, we do not need to scale it for Height. Choosing both Width and Depth scaling will disable the Lock XY Ratio toggle, which we would not want to use here.
  4. Clear all of the Mirror In toggles (none should be selected when first adding a block; verify that none are selected).
  5. Set the Insertion Point to X: Left, Y: Front and Z: Bottom, if it is not already set that way. This coordinates with the insertion point of the unit block being in the lower left corner of the block's extents.
  6. No Insertion Offset is required; verify all values are set to 0.
  7. The only choice of Component for a Door is Frame Component. Verify it is set to Outside, which should be the default value.
Click OK in the Custom Block dialog to register your changes. TIP: The preview display on the right side of the Custom Block dialog does not always display the block properly when first added. If you want to use the preview to be certain that your settings are correct, click OK, and then, back on the Other tab of the Display Properties dialog, select the block you added in the list and click the Edit button. It should now be correctly displayed for the settings you have chosen.
Repeat the process above to add the blocks for the Width Lines, Cross Line A, Cross Line B, Cross A, Cross B, Triangle A and Triangle B custom display blocks. I used the same settings for each block.
Return to the Layer/Color/Linetype tab. In addition to the out-of-the-box components previously shown here, you will find that each of your custom blocks is now listed as a display component.
This is where you will control the visibility and display parameters of the custom blocks. You will not have a Fill type tab, as an Opening object does; instead, you will need to control the display of each fill option individually, here. You also will not have a Hatching tab, so, as noted at the beginning of this post, you will not be able to select a hatching type - solid fill is "hard coded" into the custom display block of each fill type. In order to match the out-of-the-box display for Openings, you will need to turn off all of the custom display blocks except for the Length Lines block, and set the display parameters as shown in the image below.
You are, of course, free to use your own settings. Click OK in the Display Properties dialog to register the changes made to the Door as Opening Door Style. In the Style Manager, click OK to save the changes to the drawing file (and then save the drawing file), or click Apply if you want to continue editing styles in the Style Manager. To test your new style, you can either make duplicates the style and then modify the style-level override display settings in each to turn on different sets of components, to verify that each works as expected, or you can place multiple instances of your Door as Opening "with style" and then apply object-level overrides to test each component's display. Ultimately, you will want to create multiple styles, since the whole point of creating this Door Style was to be able to control the display of "openings" at the style level. To complete the emulation of an Opening object, you will need to create a Tool palette tool for each Door as Opening Door Style and that uses the OPENING Layer Key as an override, so that the Door object created get placed on the same layer as an Opening object (by default).

If you use the Schedule Feature to create a Door Schedule for your "real" Doors and do not want these "opening Doors" showing up in the Schedule Table, you can apply a Layer Filter to your Door Schedule or you can set up and apply a Classification Definition to exclude the opening Door Styles from your Schedule Table. Refer to this blog article for more information on filtering the objects in a Schedule Table.

You can find a sample file that contains the style used to generate the screen captures shown here, along with some copied styles with different custom blocks turned on, in this thread in the AutoCAD Architecture Content Discussion Group.

No comments: