Monday, January 22, 2007

Dynamic Blocks inside of ABS - Visibility Solution

For all the awesome tools inside of ABS and ADT one of my favorite tools comes from AutoCAD. The Dynamic block just happens to fit the bill for some special situations. Electrically, I like to use a dynamic block for exit arrows on my exit signage. I could create separate device styles for every possible situation, but I find have one device style with a dynamic block on top is more efficient. The dynamic block I document below, uses Visibility States and Rotation parameters to handle the many different situations you might run into.

Now, this gets me to the real reason I'm writing this article. Visibility states that work great in AutoCAD, do not respond so well inside of ABS and ADT. Here's what happens, the triangle icon used to select the desired state simply issues the previous command like hitting "enter" or "spacebar". One work around is to use the properties palette to choose the required state. I feel like it's too much effort, but I'm Lazy. I have heard that changing your right click settings in Options can correct the problem, but it has not worked for me. What I have done, is insert the few Dynamic blocks I use into the company ABS template. I do this because once a drawing is saved and re-opened, the problem ceases to exist. So by placing the Dynamic blocks I use in the template, they are in effect already saved and reopened from the get go.

Okay, I promised the down low on a Dynamic block so here we go. This block uses visibility states to cover the many different configurations of exit sign arrows. I'm going to draw the entire thing inside of the Block Editor, but if you already have blocks, just insert them into the Block Editor.

I'll either have a double arrow or a single arrow, then either a single sided or double sided device. For this block, I will create a base point that will correspond to the center point of any exit sign. With the point defined, I'll create all the symbology I need for all the arrows See the figure below.

Next select the Visibility parameter from the Author Palette or use the Parameter button shown above.

Once placed, the visibility configuration tools become available. The buttons available are (R to L)Visibility Mode which will show invisible items half toned, Make Visible, which will make invisible objects in the current visibility state visible, Make Invisible, which will make visible objects in the current visibility state invisible, and Manage Visibility States, which opens the Visibility States dialog shown below.

Now its time to give a little consideration to the names of your states. This is what the user will see when they select the visibility icon.

Use the "Rename" button found in the "Visibility States" dialog to rename the default state to "1 Left" (See below). This is the name for a single arrow pointing to the left. Now use the "new" button to add three more states; 2 Left, for two faced signs, 1 Right and 2 Right. Depending on the visibility options you had set when creating your states, use the Make Visible or Make Invisible buttons so the appropriate geometry is visible in each state. I use the Visibility Mode button at this time so I can view all of the geometry whether visible or not.

Next, let's add a Rotation Parameter. Begin at the base point and extend to the right. An angle of zero is fine for our use here. In the Actions tab of the Author palette select the Rotation Action. Choose the Rotation parameter to attach it to. For objects, insure you pick not only all of the visible or not geometry, but also the parameters and actions. This will make them available in every state. Close the block Editor and test your new dynamic block. It should look something like this.

For more ideas for Dynamic blocks, see my Lazy Drafter article "Thinking Outside the Block".


Todd M. Shackelford said...

Interesting Note to add here is that after I saved a single dynamic block with visibility states in my template, new blocks introduced into drawings created from that template no longer generated errors. So in this case only one dynamic block needs to be saved in your template as long as it has a visibility states.

I hope that helps.

Anonymous said...

This was actually the first dynamic block I made. However, instead of listing all the permutations, I wanted to have subgroups.

For example: face and arrows being each a group.

so 1 face - left arrow.
or 2 face - right arrows.

Is there any way to avoid listing all the permutations?

Anonymous said...

I have created a block with a visiblity parameter. it works fine. it only has two states, "Logo On" & "Logo Off". which works great for manual editing. But how can i swithch items in the pulldown in a script? So i want a script to run and switch the Visibility of the block feature to be "Logo on" state.