December 31, 2005

Named Page Setups

I have been a big proponent of using Named Page Setups ever since I finally figured out what they were back in ADT 2/AutoCAD 2000. They were all but hidden in the Page Setup/Plot dialogs back then, but well worth the effort to find, as they make restoring commonly used plot settings a breeze.

Anyone who is not familiar with Named Page Setups should take a look at this article in Heidi Hewett's AutoCAD Insider blog. She covers how to set these up in AutoCAD 2005 and 2006 [which also applies to ADT 2005 and 2006], complete with illustrations. ADT users who take advantage of the Drawing Management features should also note that you can access the Page Setup Manager directly from the right-click menu from the Sheets tab in Project Navigator.

In AutoCAD 2000/ADT 2 through AutoCAD/ADT 2004, the key is knowing that the Add... button in the "Page setup name" area in the upper right, next to the page setup dropdown list, opens the User Defined Page Setups dialog. Before you push that button, set up your plotter and plot settings on the Plot Device and Layout Settings tabs. Then click on the Add... button.

This will call up the User Defined Page Setups dialog.
Type in the name you want to use for your named page setup in the "New page setup name" edit box - at work, I use the name of the plot style table, the name of the printer, the scale, the drawing size and the orientation [portrait/landscape] - and click on OK. Curiously, if you ever want to rename or delete a named page setup or import one or more from another drawing file, you also need to click on the Add... button. Perhaps the button could have had a better name, but until you upgrade to 2005 or later, you will just have to remember that the Add... button provides access to creating and managing Named Page Setups.

Setting up Named Page Setups for your typical plotting tasks and saving them - in your template files, if you have the authority to do so, or in an easy-to-find source file from which you can import them into other drawings - can save you a ton of mouse clicks and makes it easier to get everyone to use the same settings. If you use Sheet Sets [see Heidi's blog for an ongoing series of articles on these] or Project Navigator in ADT, you can take advantage of Named Page Setups when setting up your Publish options [2005 and later only].

December 30, 2005

New URL for Triple D Design Wiki

The URL for the Triple D Design Wiki has been changed. I have updated the link in the sidebar at the right, or you can click here. Thanks again to Beau Turner for setting up and maintaining this resource for the architectural community. You can read more about the recent changes in this article in Beau's will render for food... blog.

December 28, 2005

Schedule Basics Brain Dump for 2006

Matt Dillon posted a tutorial on Schedule Basics to the AutoCAD Architectural Desktop Release 2 Discussion Group over six years ago, when Release 2 was new. Chris Yanchar included the text of that post in his Brain Dump collection [number 13, if you are counting]. I had recently posted the text of that Brain Dump, along with another by Matt, number 15 on creating custom Schedule Tags, in response to a thread in the Autodesk Architectural Desktop 2005 Discussion Group, where I was reminded that things have changed a bit since Release 2. The directions in the original tutorial could no longer be followed verbatim, and while the original poster in the 2005 thread managed to work out how to do things in the current interface, it occurred to me that an update of the tutorial to match the current release was in order. I got my start in understanding the scheduling feature in ADT using Matt's tutorial [thanks again, Matt!] and I imagine quite a few others have done so.

I have taken the liberty of updating the tutorial for ADT 2006, editing the instructions to conform to the 2006 interface, and adding a liberal helping of screen captures. The ADT 2004 Brain Dumps [see this article for links] raised expectations on the graphic quality of Brain Dumps - which, in fairness to the originals, were mostly posts to the Discussion Groups and had no way to incorporate graphics. The updated tutorial can be found in the ZIP file attached to the first post in this thread in the Autodesk Architectural Desktop Content Discussion Group. The ZIP file contains the revised tutorial in two formats: DWF and PDF.

I was planning to update the Schedule Tag tutorial, but given that the following have already been made available, reworking Matt's ADT 2 tutorial seems redundant. Check out these articles on creating Schedule Tags in ADT 2006:

ADT 2006 Tags Illustrated - in this blog
Creating Custom Object Tags in ADT 2006 - in Matt Dillon's blog
Create Custom Tags in Architectural Desktop, the Easy Way - CAD Digest article by Peter Gehring of Synergis

Remember - if you can schedule circles, you can schedule anything!

December 27, 2005

Not Sure What Software to Use? Ask Diana

If you are considering which Autodesk Building Solutions Division product is right for your firm, you can now "talk" to Diana. You can hook up with Diana here. Diana does all of the talking - you will need speakers or headphones to get anything out of this site - you click or type in responses. Diana will ask you a series of questions, which varies based on your responses, then she will come up with a recommendation of the best software for your situation.

I spent enough time this afternoon chatting with Diana to make my wife jealous; fortunately she has been out of the house most of the day and she only reads this blog if I show her an article. I certainly did not try all of the possible responses to Diana's inquiries - for example, I always chose architectural design, rather than structural design or MEP engineering, since that is what I do. I also indicated that I needed my software to do "all of the above" - design faster, evolve designs more efficiently and document more accurately. Most of the time I indicated I was using Architectural Desktop currently, although I did a few runs through saying I either used paper or a non-Autodesk software product.

Given the current heavy marketing push for Revit from Autodesk, it should come as no surprise that in the vast majority of run throughs I did, Revit Building was the product that was recommended. Size of firm, whether you share files with MEP engineers using Autodesk Building Systems or whether you have extensively customized AutoCAD using LISP or VBA seem to have little impact on the recommendation. I found the latter particularly remarkable, especially since Diana notes that maintaining the investment in customization would be an important factor.

The key questions appear to be whether you are currently using design software or paper and whether, if your firm were a teenager, you would
  1. Buy an iPod as soon as you saw one.
  2. Buy an iPod after your friends had done so.
  3. What's an iPod?
If you score high on the Luddite scale on those two questions - using paper and not knowing what an iPod is, you may be recommended ADT, particularly if you indicate that you share files with engineers using ABS.

If you currently use ADT, and you know what an iPod is, you may be asked a third critical question: "Are you interested in Building Information Modeling?" If you answer yes, then Revit Building will be recommended. Only if you answer no will Diana indicate that your current software is right for you.

December 24, 2005

Schedule Table Placeholders

Here is the situation: You have set up a project in Autodesk Architectural Desktop, and you have used the scheduling feature to set up a Schedule Table – for the example here, a door schedule. The project has gone out to bid, a contract is awarded, things are moving along smoothly, when suddenly the Owner wants to make a change. I know that never happens in real life, but lets assume it does for purposes of this article. ;-)

The change involves the deletion of one door. You could simply erase it from the file and refresh your schedule, and the door would disappear from the schedule. But you may not want all record of that door to be lost – you may want to keep at least some vestige of it as a reminder that the original bids included an additional door and that some credit is due back to the Owner, assuming that fabrication and installation are not already complete.

There are several ways you could handle this. Rather than erasing the door, you could release the wall anchor, move the door to a non-plotting layer and leave the door in the schedule. If your schedule has a "Notes" column, you could add text there indicating that the door has been deleted. You might emphasize the deletion by manually drawing a line through the schedule for that door, but then you would need to be careful that the line stayed on the correct door during any later changes to the schedule.

Another way to emphasize that this door has been deleted would be to delete the contents of all of the manual data attached to the door, perhaps copying the Door Style to a new name [appending "DELETED" to the original name might be a good choice] and deleting any style-based manual data. You could also set up a manual property that could be set to "DELETED" for a deleted door, then use formula properties that test for "DELETED" in that property and return a result of an empty string for automatic properties for deleted doors or the appropriate automatic value for non-deleted doors. That can get very complicated, particularly if you are using imperial units and showing a door opening with one of the "preformatted" automatic properties, such as Door Size – PR WxH, as formula properties do not take kindly to passing through strings with embedded double quotation marks.

An alternate method, which can reduce, or, depending upon the data you display in your Schedule Table, eliminate the need for fancy formulas, is to set up a "placeholder object" that will substitute for the deleted door, carrying only the property data you wish to remain in the schedule – in this example, only the door number.

You can find a ZIP file that contains two sample files attached to a post I made to a thread titled Doors & Door Schedules in the Autodesk Architectural Desktop 2005 Discussion Group. It may be helpful to download the ZIP file, extract the drawing files and have them open when going through the balance of this article. The DoorPlaceholderTest-Bidding.dwg file shows the file at the time of bidding, with all three doors in the schedule. The DoorPlaceholderTest-Construction.dwg shows the file after the 101B door has been deleted and replaced by the placeholder object.

The sample files make use of an AEC Polygon as the placeholder object. Any object could be used, but by chosing a style-based ADT object, you can deal with both object-based and style-based Property Sets. A special AEC Polygon Style was created, called DoorSchedulePlaceholder, with style-level display overrides, turning off all but one component and applying the "Invisible Ink" plot style so the object will not plot. I did notice that in a plot preview, if the placeholder object is in front of other linework the invisible ink plot style overwrote the other linework with the background color. If you are not using "merge pens", you may need to send the placeholder objects to the back of the draw order, so the invisible ink does not overwrite any linework you want to keep. If you are using Xrefs, you may want to experiment with this to see if there are problems with display order. If so, you should be careful not to overlap any plottable objects with the AEC Polygon. If I were doing this all over again, I would probably have chosen to assign the component to a non-plotting layer, instead of using the invisible ink plot style.

Model Display Representation Style Overrides

Model Screened Display Representation Style Overrides

In order to be able to restrict the AEC Polygon Styles that will show up in the schedule to just the placeholder style, a Classification Defintion called "Schedule" was created. This will also allow you to restrict the Property Set Definitions that are used by your schedule to just the placeholder AEC Polygon Style. The Schedule Classification Definition in the sample files has two choices: NoSchedule and DoorSchedule. If you were going to extend the placeholder concept to other schedule types, you could add additional classifications if you wanted to use a different AEC Polygon Style for the placeholders in the other schedules. Note that you will also have to assign the DoorSchedule classification to all of the Door Styles you wish to include in the schedule. You can set any Door Styles that you do not want to have schedule [existing doors, toilet partition doors, etc] as well as any other AEC Polygon Styles to the NoSchedule classificiation, although leaving them unclassified will also exclude them from the schedule. I prefer to set the NoSchedule classification on the style so it is evident that I intentionally excluded that style, rather than simply forgot to set a classification for it.
Setting the Classification in an AEC Polygon Style

Setting the Classification in a Door Style

The DoorObjects, DoorStyles and FrameObjects Property Set Definitions, which are used by the out-of-the-box Door Schedule Schedule Table Style, as well as a copy of that Schedule Table Style, renamed to "Door Schedule Room Based", were edited to allow them to apply to AEC Polygon objects or styles, and were restricted to apply to only those objects that had the DoorSchedule classification set in the style. The Applies To tab of the DoorObjects Property Set Definition is shown in the image below, with the object types to which the defintition applies checked on the list box to the left and the classification to which the definition applies checked on the right; the settings on the others is similar.
Applies To Tab For DoorObjects Property Set Definition

The goal is to have all of the table cells for the deleted object blank, except for the door number in the "Mark" column. Text-type manual properties can simply be set to a null string to achieve this effect. Automatic properties and numeric manual properties will require some modifications to the Property Set Definitions. After adding the AEC Polygon to the Property Set Definitions, you can then edit the automatic properties and assign an appropriate automatic property for AEC Polygons. In the sample file, the "Notes" automatic property for AEC Polygons is used for all the automatic properties in the schedule, and the Notes on the AEC Polygon object is left blank. Edit each automatic property, find the Notes property under the AEC Polygon heading, and hold the CTRL key down while clicking on the box to the right of the Notes property. Holding the CTRL key down makes that selection apply only to the AEC Polygon heading, and keeps the choices for Doors and Door/Window Assemblies as they were. Choosing a property for AEC Polygons for each automatic property in the schedule keeps an AEC Polygon in the schedule from displaying question marks; choosing a property that can be set to display an empty text string allows the data for the placeholder to appear as blank.
Setting the AEC Polygon Source for the Width Automatic Property

The out-of-the-box Door Schedule includes columns for two style-based real-type manual properties for LouverWidth and LouverHeight, from the DoorStyles Property Set Definition. These default to a value of 0, but can not be set to an empty string, since they are expecting a real number value. You could just set these to 0 in the DoorStyles Property Set attached to the DoorSchedulePlaceholder AEC Polygon Style and live with the schedule reporting 0” for the louver width and height, but in order to achieve a totally blank line in the schedule, the sample files renamed the manual properties to LouverWidthUnformatted and LouverHeightUnformatted and changed the Property Data Format assigned to them to Standard. This will allow these to be read by a formula property as a real number without any additional text characters, so they can be passed through without worrying about embedded double quotation marks when using imperial units. You can read more about unformatted properties in these blog articles: Unformatted Properties for Formulas and Unformatted Properites and Numeric Precision.

One automatic property, called ObjectType, and two formula properties, called LouverWidthSchedule and LouverHeightSchedule, have been added to the DoorStyles Property Set Definition. ObjectType is an automatic property that reports, oddly enough, the object type. This is used by the formula properties to determine if the object to which they are attached [through the object’s style], is an AEC Polygon. If so, the formula property returns a RESULT of "" [an empty string]. Otherwise, the formula property passes through the value of LouverWidthUnformatted or LouverHeightUnformatted. A Property Data Format is applied to the formula property, so that the imperial formatting is applied if the value is a real number. The Door Schedule Room Based Schedule Table Style was then edited, deleting the old louver width and height columns and replacing them with the formula properties.
DoorStyles Properties, Including LouverHeightSchedule Formula

Door Schedule Room Based Column Defintions [Left Side]

As noted above, all of the text-type manual properties in the Property Set Definitions attached to the placeholder AEC Polygon object were set to "", including those in the style-based DoorStyle Property Set. The results can be seen in the following two images, the first from the "bidding" drawing and the second from the "construction" drawing.
Bidding Version of the Door Schedule

Construction Version of the Door Schedule, After Door is Deleted

I chose not to change the names of the modified Property Set Definitions in my sample file, so that I would not need to change the tags. I would recommend renaming them if you choose to implement a schedule placeholder system based on that outlined here – and modifying your tags to suit – to avoid having any problems with existing files that have the old Property Set Definition in it, or with remembering that you customized these files when migrating to the next release of Autodesk Architectural Desktop.

One final note – I did change the RoomNumber property to use the non-project based Number property for the room number, as the sample files were not done as part of a project. I also modified the out-of-the-box NumberProjectBased property, renaming it NumberRoomBased and changing the formula to "[RoomNumber]" & "[NumberSuffix]" as described in this blog article, although this would not be strictly necessary if you keep the hidden RoomNumber and NumberSuffix columns in the schedule and sort the schedule on those columns, as the out-of-the-box schedule does.

December 23, 2005

Make Object's Layer Current or Draworder Command Not Working

If you try to use the Make Object's Layer Current button from the Layer toolbar or try to execute the DrawOrder command from a menu selection [such as the right click context menu] and you get a message saying that ai_molc or ai_draworder are not defined, then you have a problem with loading the MNL file which defines these functions. An MNL file is a text file that contains LISP statements, including function definitions, that is loaded "automatically" when a menu file [2005 and earlier] or CUI file [2006] of the same root name is loaded. This is a handy way to make certain that functions used by your menu files get loaded with the menu.

If you have customized your menu or CUI file by either starting from scratch or by copying the ADT.mnu or ADT.cui file and renaming it, you also need to copy the ADT.mnl file and rename it with the same root name, as well, to get all of the functions defined therein to load when your customized version of the file loads. If you have already set up an MNL file for your customized menu, but started from scratch, you should copy the contents of the ADT.mnl file into your custom MNL file so that you get the out-of-the-box MNL functions along with your own custom functions.

If you have not customized the ADT menu or CUI file, then check to make certain that the ADT.mnl file exists, in the same folder as the menu/CUI file, and that that folder is in your Support File Search Path on the Files tab of the Options dialog. If it does exist, open the file [use Notepad or any other plain text editor] to see if the c:ai_molc and ai_draworder commands are defined. You may need to do a repair installation [or try searching for the adt.mnl file on the installation disks] if the ADT.mnl file has been altered or corrupted.

The following commands are defined in the ADT 2006 MNL file. If any of these are reported as not defined while using ADT, check that the MNL file[s] associated with the menu/CUI files you are loading include the ADT.mnl file or copy of it [or its contents]:

December 20, 2005

Underline in Tag But Not in Schedule

I posted a quick sample file showing how a formula property can be used to have your room name underlined in a Schedule Tag but not underlined in a Schedule Table in a post in this thread in the ADT 2006 Discussion Group.

I did this using mostly out-of-the-box content from ADT 2004, making a few modifications to achieve the desired result. The RoomObjects:Name property was renamed RoomObjects:NameSchedule. This is a manual property and is where the user enters the room name, without a "%%u" prefix. This property can be referenced in a Schedule Table where no underlining is desired. A new formula property, RoomObjects:NameTag, was created, and the formula concatenates "%%u" with the RoomObjects:NameSchedule value. This provides the underlined version of the room name, for use in a Schedule Tag.

The Aec3_Room_Tag_P view block of the Aec3_Room_Tag room tag was modified to change the attribute definition's tag to reference the RoomObjects:NameTag property. This gets the room name underlined in the tag.

12/04/2015 UPDATE: Refer to this post for the revised method for doing this in later releases where %%u does not generate an underline.

December 16, 2005

Off Topic Again: Pies

This weekend is Highland Park Boy Scout Troop 5's annual Parent-Son Camping Weekend. The troop goes camping every month, and I try to go along when I can, but December's trip is focused on getting at least one parent out with each boy for some good old-fashioned bonding. We rent a cabin, so that "I'm not sleeping in a tent in this weather" is not an excuse.

The highlight is the Saturday dinner "feast", when everyone makes their favorite dish and we have a smorgasbord of culinary delights. The kitchen can get rather crowded, so for the last several years I have taken off the day before and made pies for dessert. Here are this year's results:

Pumpkin Pie

Apple Pie

I usually do not bake much during the rest of the year, so you can expect that future posts over the next few months will stay on topic, and that I will not have to rename this blog to The Architect's Oven.

December 13, 2005

Sorting Schedules by Door Numbers with Suffixes

If you have set up a door number property that reads in a room number as the door number, your room numbers are all integers and you only add a suffix to the door number when you have more that one door, you may find that your schedule is sorting all of the doors with suffixes first, followed by the "whole number only" door numbers. You can get the entire list to sort together by forcing the formula to return a string value by changing the formula from:



"[RoomNumber]" & "[NumberSuffix]"

That will return situations, with and without a alphabetic suffix, as strings, and they should sort together. Remember that you can not simply cut and paste property references in a formula, you need to select them from the lower pane [lower left pane in 2006].

December 11, 2005

Off Topic: Cookies

No, not computer cookies - the edible kind. That is why this is "off topic".

I took a couple of days off from work to be home while cable internet access was installed [finally!], shovel the results of an early-season snowstorm and engage in my annual Christmas cookie baking marathon. I wrapped that up first thing this morning and even got a little Christmas shopping done. I can not upload any of the cookies here, but I can tease you with a picture of the results.

  1. Gingerbread
  2. Sugar
  3. Peanut Butter
  4. Oatmeal Raisin
  5. Chocolate Chip

December 09, 2005

Autodesk Blog Survey

Shaan Hurley has announced in his Between the Lines blog that Autodesk is conducting a survey on blogs. If you are reading this, you have an interest in and, most likely, an opinion on blogs. Take the survey and have your voice heard.

December 06, 2005

Controlling Lineweights

If you ever need to figure out why the lineweight of a particular piece of linework is plotting as it is, the following should help you determine where the lineweight is being set. The first place to look is at the plot style file used when the plot was created. The images here are taken from named plot style files [STB], but the same principals apply to color-dependent plot style files [CTB] - the only difference is in how the plot styles are assigned [by name or by color]. Take a look at the lineweight setting for each plot style. If it says "Use object lineweight", then you will need to search farther. If an explicit lineweight is assigned, then all objects/components that have that plot style assigned will use that explicit width, and any settings in the drawing file will be ignored.

If your plot style is set to "Use object lineweight", then you need to look in the drawing for the lineweight that will be used. For "simple" AutoCAD objects, the object's lineweight will either be set directly on the object or, if the lineweight property is set to "ByLayer", the lineweight set to the object's layer will be used.

Open the Layer Manager to see what lineweight is assigned to a given layer.

For "complex" AutoCAD objects, such as block defintions, the lineweight used by a nested object can be assigned directly or be set to either "ByLayer" or "ByBlock". If it is set to "ByLayer", the lineweight assigned to the layer on which the object is created will be used, unless the object is on Layer 0, in which case the lineweight assigned to the layer of the parent object will be used. If it is set to "ByBlock", then the lineweight assigned to the parent object will be used [and that could be assigned directly, "ByLayer" or "ByBlock"].

The components of ADT objects behave the same way as nested objects in a block reference, but you need to look at the active display properties, on the Layer/Color/Linetype tab, rather than the Properties palette, to determine the lineweight assignment. Select an object, right click and choose Edit Object Display... from the context menu. Go to the Display Properties tab of the Object Display dialog, find the Display Representation[s] that are shown in bold, and click on the Edit Display Properties button to look at the display properties for the various components of that object.

If you are using ADT 2004 or later, there is an additional "wrinkle" - certain components can be displayed by "By Material". If the linework in question is part of a component in ADT, when checking the display properties on the Layer/Color/Linetype tab, first look at the By Material column. If there is a check mark in the box in that column, then the display of that component is controlled by the display properties of the material assigned to the component, and not by the [grayed out] settings on the Layer/Color/Linetype tab for the object. Go to the Materials tab of the Object Display dialog to see what material is assigned to a given component. Select a component and then click on the Edit Material button to open the Material Definition Properties dialog for that material.

On the Display Properties tab, find the bold Display Representation and click on the Edit Display Properties button to look at the display properties for the various components of that material. You will need to know the component to which your linework belongs.

December 05, 2005

Documenting a Layer Key Style

You can copy the contents of an Architectural Desktop Layer Key Style in a "tab delimited" format that can then be pasted into any spreadsheet program that accepts tab-delimited input, such as Excel, or into a word-processing program or even Notepad. All you need to do is edit the Layer Key Style, click on the Keys tab if it is not current, right click in the list box and choose Copy All from the context menu, as shown in the image below.

Edit a layer key style by opening the Style Manager [Format > Style Manager... from the pulldown menus], then expand the Multi-Purpose Objects category and the Layer Key Style item under the drawing file that has the Layer Key Style you wish to document. In ADT 2006, select the Layer Key Style in the left pane; in ADT 2005 or 2006, right click on the Layer Key Style in the left pane and choose Edit... from the context menu. You can also open the Style Manager, filtered for Layer Key Styles, by starting the Layer Manager [the ADT Layer Manager in 2004] and clicking on the Layer Key Styles icon in the upper left corner.

Pasting into spreadsheet program is ideal, because then you can take the information and sort the rows as you like. For example, if you want to know which Layer Keys use a given color, you can sort the rows by the column with the color number. You can also do this in ADT while editing a Layer Key Style by clicking on the header at the top of a column, but this does not always work as desired [sorting on the Plotstyle column in ADT 2004 does not work well - this may have been fixed in later releases].

December 03, 2005

Caution When Changing Content Browser Libraries

If you have multiple versions of ADT installed on your computer, you may want to be careful about opening content browser library files [CBL extension] in a version of ADT other than the one in which it was created. Let me state that I do not know for certain that caused the problem I had earlier today - perhaps some other form of operator error is to blame.

I was in the middle of trying to figure out where project-based palette groups were stored and ran across the folder where the content browser library files are stored on my computer. The files for both 2005 and 2006 are in the same folder, but have different names. At some point, I had the 2006 library - ContentBrowserLibrary47.cbl - open [by what means, I do not recall, so I am not certain that I opened it with the AecCB47.exe application] and decided to open a different library. When I tried to reopen the 2006 library file, it was empty - not a single catalog - and the title had changed from "David Koch's Content Browser Library" to "contentbrowserlibrary47". After getting over the initial shock, and a few vain attempts at reopening the file in the hope that is would "magically" restore itself, I set about chasing down the location of all of the catalogs that were open in it. My custom catalog was easy, it was remembering what the out-of-the-box catalogs were and where they were located that was hard. I may not have even got all of them, but I think I got most of them. I did decide not to open "MyCatalog", as I found that if I keep my custom files in that catalog, and then install a newer version of ADT, it overwrites the "MyCatalog" file.

One thing I did discover is that if you navigate to a CBL file in Windows Navigator, right click and choose Open With, the Content Browser application is listed only as "AecCB EXE" - there is NO indication of what version of AecCB will be used. My suspicion is that I inadvertently opened my 2006 library with another version, and that may have lead to the file getting "cleared". So if you have multiple versions of ADT installed on your computer, I would advise being careful when changing libraries within Content Browser, and only open libraries that were created with the version of Content Browser that is currently open. I would avoid double clicking on a CBL file. If you do not want to open ADT first, then open the desired version of the Content Browser by double clicking on the EXE file or using the Start Menu, then opening the desired library file [if it is not the current default file].

I did make copies of the CBL files, adding "_backup" to the file name, in case I manage to make a similar mistake in the future. The usefulness of the backup will depend, of course, on whether I remember to make a new backup if I ever add or delete catalogs from the library in the future.

12/28/2005 Update:

It would appear that the problems I was having can be ascribed to "operator error". It is still a good idea to regularly back up your CBL file.

December 01, 2005

Changing a Wall’s Justification While Maintaining Its Position

Using the Properties palette, you can change the justification of multiple walls at once. When doing so, the justification lines hold their positions and the walls shift to achieve the changed justification. If you are setting the graphline at the justification line, this makes some sense, as this will not affect wall cleanups.

There are often occasions, however, when you have placed the walls correctly, but wish to change the justification – perhaps to make cleanup easier. Context menus to the rescue! The Edit Justification option on the right-click context menu for walls gives you the ability to change the justification while leaving the wall in its current position. The only caveat is that you must work on just one wall at a time. For any Command: line junkies out there [or Tool palette command tool aficionados], the command name is AecWallEditJustification, or somewhat more simply WallEditJustification.

  1. Select the wall, right click, and choose Edit Justification from the context menu, as shown below.

  2. You will see a series of diamond-shaped grips, as shown below. If you have not altered the out-of-the-box grip colors, the gray one represents the current justification location, and the cyan ones represent the other options. The left, center and right justifications are aligned across the wall center, and the baseline justification is slightly offset from the center. If you hover your mouse over a grip, you will get a dashed outline showing where the wall would move if you chose that grip along with a tool tip indicating the justification name. Note the second line of the tool tip: you can maintain the wall position by holding the CTRL key while selecting the grip to change the justification.

November 29, 2005

Out-Of-The-Box AutoCAD Tool Palettes in ADT

If you installed the ADT as AutoCAD shortcut and use it, you may have become familiar with the out-of-the-box AutoCAD Tool palette tools, and wish you had access to them when running ADT as ADT. If so, read on.

When I first tackled this problem, I discovered that I could run ADT as AutoCAD to get the AutoCAD Tool palettes on screen. Then I opened the Content Browser, which is a separate program and can be run independently of ADT. [The executable, AecCB47.exe, is located in the same folder as the acad.exe file, C:\Program Files\Autodesk Architectural Desktop 2006 in the default installation location.] I created a catalog, created palettes within it, and laboriously cut and pasted the tools from each palette. Afterwards, I got smarter and came up with the following:

  1. Start ADT as AutoCAD.

  2. Open the Options dialog, and go to the Files tab.

  3. If necessary, scroll down until you see the Tool Palettes File Locations category.

  4. Expand that category, and make note of the location where the AutoCAD tool palettes are stored.

  5. Close the Options dialog, and close ADT as AutoCAD.

  6. Start ADT as ADT.

  7. Open the Options dialog, go to the Files tab and expand the Tool Palettes File Locations category.

  8. Click on the Add… button.

  9. Click on the Browse… button and navigate to the folder where the AutoCAD tool palettes are stored. Leave this at the bottom of the list.

  10. Click on the OK button to exit the Options dialog, saving your changes.

  11. If necessary, change the current Palette Group to All Palettes, and you should be able to access the AutoCAD tool palettes.

At this point, if you wish, you can open the Content Browser, create a catalog, and drag-n-drop the AutoCAD tool palettes to the catalog. That is much easier than copying the tools on each palette to the clipboard and pasting them into a tool palette in the Content Browser, one palette at a time. Once you have the palettes it an ADT Tool catalog, you may, if you wish, go back into the Options dialog and delete the path to the AutoCAD tool palettes location, then i-drop them into your current workspace. That will set up a separate copy of the tool palettes, so if you plan to edit them, you may simply want to keep using them in the out-of-the-box location.

Note also that, when I did this using either method, the graphics for the tools when brought into ADT were not as crisp as they were in AutoCAD. You could always create new images and apply them in ADT if you really wanted to do so – I am not certain what impact that would have when running ADT as AutoCAD, so you may want to do that on a copy of the palettes.

November 28, 2005

Exporting Tool Palette Groups

New to ADT 2006 is the ability to export tool palette groups to an external file, with an extension of XPG. This file can then be copied to another machine and imported there. You could also export tool palette groups you no longer need, but want to save in case you need to restore them in the future.

To export a tool palette group, right click on the spine of the Tool palettes and choose Customize... from the context menu. On the right side of the Customize dialog, in the Palette Groups list box, right click on a tool palette name and choose Export... from the context menu.

In the Export Group dialog, navigate to the folder in which you wish to store your XPG file, provide a name and select Save to create the file. The palette group you select, and any nested palette groups will be included in the exported file.

To export all of the palette groups, scroll down to the bottom of the Palette Groups list box and right click below the bottom line. Choose Export All... from the context list and save the file as noted above. All of the palette groups will be included in the exported file.

Importing palette groups is similar; right click a palette group or below the entire list and choose Import... from the context menu. Navigate to the desired XPG file and choose Open to import the palette group[s].

Note that this does not export or import the tool palettes associated with each group, so you can not share the actual palettes this way. I have found that if I import a palette group back onto the same computer where the palettes remain in the active profile, the palette groups are populated with the palettes, so it does "remember" which palettes were in each group. If you do this in a different profile, with a different tool palette workspace that does not have the same palettes, the groups will not be populated.

I do not have access to multiple computers that have ADT 2006 installed, so I do not know exactly how the groups are saving the list of palettes associated with each group, but I suspect it may be using the globally unique identifier [GUID] assigned to each palette. If the GUIDs of refreshable pallete pulled from the same, network-based catalog are the same, and those palettes are loaded on two different computers, you should be able to export the palette groups on one computer and import them on the other and have them be populated with the tool palettes. Unfortuately I can not test that suspicion to see if it holds true, or whether it is necessary to have the palettes installed before importing the palette groups.

November 25, 2005

First Anniversary

Can it really be an entire year since I started this blog? The calendar says so, but it does not seem like it to me. Best of luck to all of you who are attending Autodesk University this year. I am not going this year, but hope to do so again in the future.

For those not going, but looking to improve their ADT skills, check out the AUGI Training Program course on Door/Window Assemblies offered this month by Steve Bennett.

November 14, 2005

Dealing with NA in Formulas

ADT will report NA for an automatic property when that property does not have a value assigned for a particular object or style. The actual text displayed in controlled by the Property Data Format assigned to the property on the Formatting tab, in the General section, in the Not Applicable edit box. When reading a property that could have such an "empty" value into a formula property, VBScript will interpret the value as being "Empty", the formatting applied in the Property Data Format will not follow through. You can not test the value of the automatic property for "NA", or whatever string you assign to it. Update, 9/3/2006: If you enclose the text in the Not Applicable edit box in the Property Data Format with explicitly typed double quotation marks, the string value will be returned, rather than "Empty". See this article for additional information on this.

Attempting to perform mathematical operations, or even to convert the value to a particular type [using the CDbl function, for example] will result in an error and the formula will fail.

One solution for this, assuming the original automatic property has a numeric value when a value is assigned, would be to create an intermediate formula that uses either the VBScript TypeName or VarType function to test the automatic property value to see if it holds an empty value [TypeName returns the string "Empty"; VarType returns the integer 0]. If it does, have the RESULT of the formula be a number that is either meaningful to an "Empty" condition, or is at least unique - meaning that it would not be used when a numeric value is assigned. Then you can use the value of the intermediate formula in your final formula, testing, if necessary, for the value assigned for the "Empty" condition and taking the appropriate action.

A sample file demonstrating this condition and solution can be found in this thread in the Autodesk Architectural Desktop 2005 Discussion Group. The automatic property in question here is the door thickness. For cased opening door styles [using the Pass Through door type], there is no door, and the thickness property is "Empty" for doors using the Pass Through type. The request was to be able to have the thickness of existing doors show as "--" on the schedule while having the thickness show for new doors. The problem was the formula would fail when a new cased opening was scheduled, as applying the CDbl to the value of the automatic property in the formula property [to force whole numbers to be interpreted as reals] does not work when the value is empty.

The intermediate property in the example file, ThicknessForFormula, sets its value to 0 if the automatic property is "Emtpy", otherwise it passes through the value of the automatic property without doing anything to it. If there is no door leaf, then 0 would seem to be an appropriate value for the thickness. The final formula, ThicknessForSchedule, then tests that value and I chose to display "--" in the schedule if it is zero, otherwise the value is forced to be a double and the Length - Short Property Data Format is applied to get imperial architectural formatting.

November 02, 2005

Filtering Objects in an ADT Schedule

The first level of control over which items appear in your schedule is by setting up the appropriate object types on the Applies To tab of the Schedule Table Style. You can further control the objects of those object types that are to appear in your schedules without laboriously selecting individual items – which is not even possible when scheduling through externally referenced files or through an external drawing – by filtering out unwanted items. You can set up filters in two different ways:

1. Layer Filter: This is applied to each individual instance of a schedule, in the Properties palette. It requires that you have placed items to be scheduled and items not to be scheduled on separate layers. You will need to add the layer filter every time you add a new schedule table. If you are scheduling through an externally referenced file, be certain that your layer filter includes the layer on which the Xref is inserted and also includes the externally referenced layer names. For example, if you have a file called A01.dwg that has doors you wish to schedule, those doors are on layer A-Door-N and that file is externally referenced into another file, on layer A-Anno-Refr-N, where you will be generating your door schedule, then your layer filter may want to be something like
You can include multiple filters in the layer filter – separate each with a comma.

2. Classifications: You can set a classification filter on the Applies To tab of the Schedule Table Style. This will apply to all instances of the schedule, without any further action on your part. Note that you must have your Classification Definition in the file with your Schedule Table Style prior to trying to set a Classification filter.

Classifications are assigned at the style level, so they only work for ADT objects that have styles/definitions. They will not work for AutoCAD objects, including block references. For classifications to work, you need to have separate object styles for objects to be scheduled and objects that are not to be scheduled. [In other words, you can not use the same style for two objects, one to be scheduled and the other not to be scheduled.]

The Classification Definition you use should have at least two classifications defined within it. One [or more] classification[s] would be assigned to the objects to be scheduled and one [or more] classification[s] would be assigned to the other objects. You could have just one classification, for objects to be scheduled, and leave the unscheduled objects unclassified, but that may cause problems down the line, when you or someone else working on the project tries to remember/determine whether a style was intentionally not classified so as not to be scheduled or was simply either overlooked or added after the initial schedule was created.

Exactly how you should set this up depends upon whether you want to use the same Classification Definition for other purposes. One method that others have recommended here is to use the out-of-the-box Uniformat classification system, assigning appropriate classifications to each door style, keeping track of those that should be scheduled, then checking only those on the Applies To tab of your Schedule Table Style. Another method, and one which I have used successfully, is to set up a Classification Definition just for scheduling, with two classifications: Schedule and NoSchedule. This makes the intent very clear; if you have need to use the out-of-the-box Uniformat classifications or one of your own for other purposes, you can attach that along with the one for scheduling, and need not worry about which of those classifications are scheduled and which are not.

October 20, 2005

Free DWG Viewer Released

As reported by Shaan Hurley in his Between the Lines blog, Autodesk has released a free DWG viewer. The viewer reportedly also supports ADT and ABS custom objects - the object enablers are built in. Read more in Shaan's post or get the download here.

October 16, 2005

Embedding Office Knowledge in the Building Information Model

I read an interesting article by Tomislav Zigo a few weeks ago about Building Information Modeling. What intrigued me most was the idea of being able to take a firm’s accumulated knowledge and embed it into the objects in the information model, so that new hires or less experienced staff could take advantage of that knowledge. The article includes a sample file showing how property data could be used to create spaces and objects – in this case, Multi-View Blocks – that “know” whether a particular object belongs in a particular space. The sample file uses a schedule table to list the Multi-View Block objects and report whether the block is “allowed” in the space in which it was placed.

I found the sample file fascinating, but thought that in a file of “real project” size, that using a schedule table might be a little cumbersome. You would likely end up placing all of the objects, then generating the schedule and back-checking for items incorrectly placed. It occurred to me that having immediate, or near immediate feedback would improve the workflow. This seemed like just the excuse I needed to try out Display Themes, a feature added with the 2006 release.

I have posted a sample file of my own, in the Autodesk Architectural Desktop Customization Discussion Group. I chose to set up my sample file somewhat differently than the one noted above. Instead of listing all of the objects allowed in a space in the space style, I chose to list the space styles in which an object is permitted in the object’s style/definition. Either approach works – which is better for you depends upon your workflow and the number of different space styles and other objects that you would be including in your system.

Property Set Definitions
As always when dealing with schedule data, the first step is to establish the needed Property Set Definitions. I used style-based property sets – the out-of-the-box SpaceStyles Property Set Definition for the Style property and the custom LocationCheckStyles Property Set Definition – except for the location property that reads the style name from the space into the object’s property data. In Architectural Desktop 2006, the Location property could be part of the LocationCheckStyles Property Set Definition, but, for Multi-View Blocks anyway, the location grip is coincidental with the Multi-View Block insertion point grip, so it can not be moved independently of the block. I also found, when moving the Multi-View Block from room to room, that I had to use the ObjRelUpdate command to manually update the location property, so I chose to set up a separate, object-based Property Set Definition, LocationCheckObjects, to hold the location property. That does mean that you will need to attach the LocationCheckObjects property set to each object – you could set up a tool to do so, and apply it to multiple objects at once. As the goal is immediate feedback, this is not ideal, but I felt that having to attach the object-based property set once was less onerous than having to remember to run ObjRelUpdate every time a particular object was moved from one space to another. The way the formula is set up, the permission will show as “No” if the LocationCheckObjects property set is not attached, so having permission denied no matter where an object is placed should be a clue that the object-based property set is missing. Perhaps future versions of Architectural Desktop will improve the handling of style-based location properties. Remember, these did not work in style-based property sets at all in previous releases.

The LocationCheckObjects has one property, SpaceStyleName. This is a location property that reads in the name of the style of the space on which the object’s location grip is placed; the setting is shown in the image below.

LocationCheckObjects Property Set Defintion and SpaceStyleName Location Property

The LocationCheckStyles Property Set Definition is set up to apply to all styles and definitions, although in the sample file I only used it on Multi-View Block Definitions. There are two properties, PermissionGranted and PermissionList. PermissionList is a text-type manual property that will hold a list of space style names into which a particular object has permission to be placed. A large, “executive” desk, for example, might include Office_Large in its list, but not Office_Small or any of the Workstation styles, as it would not be appropriate to place a desk of that size in a smaller space. The PermissionGranted formula property is where the heavy lifting is done. The VBScript InStr function is used to search the PermissionList manual property, starting at the first character [the first “1” in the parentheses after “InStr”], for an occurrence of the string in the LocationCheckObjects:SpaceStyleName property. The second “1” in the parentheses tells the InStr function to perform a text comparison, rather than a binary comparison. What that means is that the comparison will ignore the case of the text. For example, “a” matches “A” in a text comparison, but does not in a binary comparison. The InStr function returns an integer value under most circumstances – 0 if the string is not found or a positive integer indicating the starting character position in the target string of the first occurrence of the search string. So the formula tests the result to see if it is greater than zero. If so, then the space style name was found in the permission list and the object is permitted; if not, the name was not found [or there was no style name because the object was not placed over a space], and the object is not permitted. The image below shows the properties in the LocationCheckStyles Property Set Definition, as well as the PermissionGranted formula with sample data that returns a result of “YES”.

LocationCheckStyles Property Set Definition and PermissionGranted Formula Property

By attaching the SpaceStyles property set to each space style and attaching both the LocationCheckStyles property set to each object style or definition [filling in the PermissionList for each style/definition] and the LocationCheckObjects property set to each object, we can identify whether or not a particular object has been placed correctly. Looking at the Extended Data tab of the Properties Palette to find out whether PermissionGranted for each object is “YES” or “NO” would quickly become tedious. Checking a schedule table would be better, but unless you frequently remove objects from the schedule selection set, would quickly result in a schedule table that would be too big to keep close to the items being added. Display Themes to the rescue! Display Themes allow you to override the “normal” appearance that an object would have for the current Display Configuration and view direction, based on property data attached to the object. This should have great appeal for architects, who are, by and large, a visually oriented group.

Display Theme Style
The Display Theme in the sample file keys on the value in the PermissionGranted property. When the theme is applied, objects whose PermissionGranted value is “YES” will display in color 80 [a bright green]; color 10, a bright red, indicates a “NO” value. Objects that do not have the PermissionGranted property attached will continue to display as they do when the Display Theme is disabled.

Display Themes have styles, like other Architectural Desktop objects, and can be created and edited in the Style Manager, under the Documentation Objects category. In addition to the usual “General” tab, where you can edit the style name and description, Display Themes have three other tabs: Display Rules, where you define the display overrides – “Theme Settings” – and under which conditions each is to be applied – “Theme Rules”; Legend Format, where you set parameters for the Display Theme legend; and Legend Display Properties, where you control the visibility and display of the components of the components of the Display Theme legend.

Design Rules
The main work to be done is on the Design Rules tab. For this relatively simple example, there are two Theme settings, one for when PermissionGranted is “YES”, Index 1 in the image below, and one for when PermissionGranted is “NO”, Index 2.

Theme Settings

The hatch parameters in a Theme Setting are only applied if the object has a hatch component turned on. Since Multi-View Blocks do not have a hatch component, the hatch settings have no effect in the sample file and I left them at the initial default values. Note also that I set up the sample Display Theme for on-screen purposes only. I left the Plot Style set to ByBlock, so unless the underlying object was set to plot using the object’s color, the sample file should plot the same whether or not the Display Theme was active. This appears to be the case using Plot Preview; I did not make any actual plots.

The Theme rules here are also quite simple. The LocationCheckStyles:PermissionGranted property holds the value to be shown graphically on the screen. Selecting Index 1 – “Permitted” – in the Theme Settings pane allows you to create Theme Rules for that index. Rule 1.1 states that Index 1 should be applied if the PermissionGranted property is equal to “YES”.

Theme Rules for Index 1 Theme Setting

Selecting Index 2 – “Not Permitted” – allows rules to be created for that index. Rule 2.1 states that Index 2 should be applied if the PermissionGranted property is equal to “NO”.

Theme Rules for Index 2 Theme Setting

Legend Format
Since “YES” and “NO” are the only two values that PermissionGranted can have, the Design Rules are complete. On the Legend Format tab, I set the Title to “Location Check” and the Text Style to “RomanS”, as shown below.

Legend Format

Legend Display Properties
I made no changes to the out-of-the-box settings in the sample file, as shown below.

Legend Display Properties

Adding the Display Theme
I chose to add my display theme by setting up a tool, but you can also type _AecDisplayThemeAdd at the Command: prompt, then select the desired style in the Properties Palette. There does not appear to be a command-line option to select or enter the desired style name. A generic Display Theme tool can be found in the Scheduling and Reporting Tool category of the Stock Tool Catalog. i-drop this tool onto an editable tool palette, then edit its properties to reference the desired Display Theme style. For this sample file, I did not bother creating a source file for the style, but you would want to do so for any Display Themes you expect to reuse in other drawings. Have your tool reference the style in the source file by setting the Style location property, after saving the source file to a location that will be available to all who will use the tool.

LocationCheck Display Theme Tool and Properties

When adding the Display Theme to a drawing, you will be prompted for the “Upper left corner of display theme:”. This is the upper left corner of the legend – pick an appropriate location. Similar to the prompts for a schedule table, you will then be asked to pick the “Lower right corner of display theme (or RETURN):”. If you pick a point, the legend will be scaled to fit between the two points; if you press ENTER or the space bar, the legend will be scaled according to the current drawing scale and annotation plot size as set in the Drawing Setup dialog. Assuming you have left all the display components turned on, the legend will show the title you entered on the Legend Format tab, along with a list of the Theme Settings accompanied by a square or circle showing the color and hatch pattern assigned to that setting. The Display Theme will also be applied to the current viewport. The legend in the sample file is shown below.

Display Theme Legend

By selecting the legend and right clicking, you have access to a context menu that gives access to editing commands specific to Display Themes. Of particular note is Disable Display Theme, which allows you to turn off the display theme without removing it from the drawing. If you select this, a diagonal slash will appear on the legend [if you leave that component turned on], the display changes set in the theme are deactivated, and the menu item changes to Apply Display Theme, which allows you to turn the theme back on.

Display Theme Context Menu

The Results
By activating the Location Check Display Theme, you can get immediate feedback on whether a particular object is permitted in a space when moving or copying an existing object, and nearly immediate feedback when adding a new object that already has the LocationCheckStyles property set attached and PermissionList property completed – all you need do is add the LocationCheckObjects property set. The effect is most dramatic when working live in the file, so I would encourage you to download the sample file and try it out for yourself [if you have the 2006 release of Architectural Desktop – Display Themes do not work in prior versions]. Here are two screen shots of the men’s and women’s toilet rooms, each of which has a water closet, urinal and lavatory Multi-View Block. The first shows the out-of-the-box Medium Detail display, the second shows the effect of activating the LocationCheck Display Theme. The PermissionList property for the urinal does not include any of the women’s toilet room Space Style names, and so the instance of the block in the women’s room turns red, flagging it as “Not Permitted”. The other blocks turn green, indicating that they are permitted in the space in which they are placed.

LocationCheck Display Theme Disabled

LocationCheck Display Theme Applied
Posted by Picasa

Note that this is not meant to be a finished system, only a proof of concept. Using the space style name as the sole determinant may be too limiting in practice; setting up one or more manual properties in a style-based property set attached to the space style would allow you to have certain key words to identify space types without imposing burdens on the naming of the styles. The formula determining if an object is permitted could also be made more sophisticated, perhaps needing to match only part of the style name and/or splitting out the size [small, medium, large] comparison separately.

October 04, 2005

Richard Binning on Copying Layer Keys Between Styles

Richard Binning has posted the follow up to his July 29, 2005 blog post on copying Layer Keys between two Layer Key Styles. That first post provides a downloadable Excel tool to make comparing two Layer Key Styles easier; the new post (October 3, 2005) includes a VBA routine that allows you to copy Layer Keys between Layer Key Styles. Check out both posts in "beside the cursor...". And thanks to Richard for providing such a useful tool to those of us who VBA challenged.

Triple D Design Wiki

Beau Turner has unveiled the Triple D Design Wiki, a resource to allow the architectural/engineering community to share their experience using 3D Design software. You can read more about this in his blog, or jump right into the Triple D Design Wiki.

Phase I provides an area for Architectural Desktop users to pool their knowledge. A future Phase II is planned, to suppport Revit Building users.

Here is another opportunity to tap into the accumulated knowledge of the ADT user community, as well as to contribute to it. If you have mastered some part of ADT, share that hard-earned knowledge with others, and learn something new from someone else.

September 24, 2005

Scale-dependent Tag Tools in ADT 2006

The out-of-the-box scale-dependent room tag tools, provided in the Documentation Tool Catalog - Imperial and - Metric, use the new tag tools, just like their single-scale bretheren. Unfortunately, there is no way in the tag tool to specify a scaling type - all tags using the tag tool have annotation scaling applied. For single-scale tags, that would be my preference, but the scale-dependent tags are designed to be inserted at scale factor of 1; the view blocks inside are already pre-scaled for three differenent scales: 1/16" = 1'-0", 1/8" = 1'-0" and 1/4" = 1'-0" for the imperial tag and 1:200, 1:100 and 1:50 for the metric tag. Applying annotation scaling to these tags causes them to be inserted incorrectly under most drawing scale/annotation plot size combinations, including those likely to be used.

I can think of two work-arounds, neither totally ideal, but if scale-dependent tags are important to your workflow, you may need to decide which is the better way to work for you.

Keeping the Out-of-the-box Content and Tool
You can get the out-of-the-box tool to insert the tag at the necessary scale factor of one by setting your drawing scale to be the inverse of your annotation plot size, while placing tags. For example, if you are in an imperial drawing and have 3/32" as your annotation plot size, you can set your scale to a custom scale of 32/3 [10.666666666666666...]. Do this by calling up the Drawing Setup dialog, selecting the Scale tab and choosing Other... from the Scale list. This makes the Custom Scales edit box active - type 32/3 in the edit box and select OK to return to the drawing. Place your scale-dependent tags, then remember to reset the scale to an appropriate value for any subsequent editing. You can also set your annotation plot size to the inverse of your drawing scale. So if your drawing scale is 1/8" = 1'-0", set your annotation plot size to 1/96. Working out the inverses is, of course, much easier for metric users.

Creating an AEC Content File and Tool
The other option is to set up an AEC Content file using the Create AEC Content Wizard and the _AecAnnoScheduleTagAdd custom command, just like all tags were done in previous versions of ADT. On the "second" page of the Wizard, you will want to choose the None radio button under additional scaling [and set the X, Y and Z scale factors to 1, unless your Multi-View Block requires some other scaling factors to work properly]. As in prior versions, you will need to put your finished AEC Content file somewhere under the root folder specified for AEC DesignCenter Content on the AEC Content tab of the Options dialog. You will also need to create a file to hold the Property Set Definitions required by your tag, place that file in the same folder as the tag or one folder above the tag and specify that file as the source file in the _AecAnnoScheduleTagAdd command string. In previous versions, this source file was called PropertySetDefs.dwg, but you can call the file by any name you like, as long as you get the name right in the command string. This is my preferred method of handling scale-dependent tags, but I am bothered by the need to have Property Set Definitions defined in two places - the source file for all of the other tags and the "PropertySetDefs.dwg" needed for the scale-dependent tags.

You can read more about scale-dependent tags here.

Here is hoping that a future version of ADT will allow the user to specify a scaling type in the tool, so that all tags can be kept in the same source file.

1/20/2007 Update: See this post for a way to set up scale-dependent tags without setting special combinations of drawing scale/annotation plot size, needing two source files for Property Set Definitions or "breaking" existing tools by moving the out-of-the-box scheduling source file.

September 19, 2005

ADT 2006 Service Pack 1 Available

Service Pack 1 for ADT 2006 is now available from the Autodesk website. As always, read the Readme before installing the Service Pack.

September 17, 2005

Replace Z Value and Copy Definition and Assign Rock

I spent some time today taking a drawing from a furniture vendor where the layout was done with their own 3D/2D blocks and converting it to a simpler, 2D only layout for use as an overlay Xref in our plans. The annoyance of working at home on a weekend was partially offset by the pleasure of being able to turn on the Replace Z Value feature in ADT 2006 and know that no matter what part of the vendor's layout I snapped to while creating my simplified version, my linework would remain a Z=0.

This was an update to a previous plan, so I already had some graphics, including blocks for some of the repeated items. I was pleased to find that the Copy Definition and Assign feature, which I knew worked on ADT style-based objects, also worked on AutoCAD blocks. I had a typical office desk block set up, and there were a few that, were similar, but one worksurface was larger. I was able to place the block I had, select that instance, right click and select the Copy Block Definition and Assign from the context menu. A dialog appeared asking for a name for the new block, offereing the old name with " (2)" appended. After editing the name and clicking OK, all I had to do was REFEDIT the new block instance, stretch the worksurface and save the changes and I was done. No need to remember where the insertion point was or worry if the instance was mirrored and/or rotated. No messy explosion and reblocking under a new name.

Sometimes it is the seemingly smallest improvements which provide the greatest pleasure, particularly if they ease frequently encountered procedures or address a long-standing source of frustration.

September 15, 2005

Rounding to Death

I have had a chance to test my latest file in ADT 2004. When using a Property Data Format to perform rounding, the Up and Down options work as expected when the Round Off Value is set to any of the values I tested, other than 0. That advice applies to 2004, 2005 and 2006.

When using the Nearest option, the results for 2004 are different than for 20054 and 2006. In 2004, the Nearest option appears to work correctly only when the Round Off value is set to 0. You can then set the Precision value and the rounding will take place at the last digit. This limits the Nearest option to rounding to the nearest integer, tenth, hundredth, thousandth...or hundred millionth. If you need to round to the nearest five, nearest 100 or nearest half, you will need to use a formula property or upgrade to 2005 or 2006. For other Round Off Values, positive numbers are always rounded down and negative numbers are always rounded up [closer to zero in both cases].

I also found that there were some numbers that did not round correctly even though the method appears to work reliably for all of the other cases tested. Obviously, I did not test every possible number, so this is not an exhaustive listing, but would be good to keep in mind if you use rounding for critical data.

2.0075, when the Round Off Value is 0.001, rounded nearest incorrectly for both the PDF method and my formula. That was the only tested number in which my formula failed. Perhaps there is some issue with how that number is represented in binary that causes the incorrect rounding. [Note that 7.5, with a Round Off Value of 1, works just fine for both methods, so it does not always happen when rounding a "7" and the next digit is "5".]

-2.0075 and -2.0025 both rounded incorrectly when using the PDF method with Round Off Value set to 0 and the Precision set to 0.001.

September 03, 2005

Rounding Redux

UPDATE, 9/10/2005: Jon Smith of Construction Industry Solutions (COINS) has pointed out that the problem with the rounding using Property Data Formats in my sample file was that I had the Round Value set to "0"; the problem disappears if you use "1" instead. I have confirmed that this is true for ADT 2006 and ADT 2005. I will post back with results in ADT 2004 when I get a chance to try my new test file at work next week. In the mean time, the new test file is available from the same thread in the Autodesk Architectural Desktop Content Discussion Group to which I posted the previous test file.

A third, and, to the relief of those who could not care less about rounding, what I hope to be final post on rounding numerical property data in Autodesk Architectural Desktop 2004, 2005 or 2006. I have taken the test drawing I did in ADT 2004 [see this blog post for more information], brought it into ADT 2006 [so I could take advantage of the enhanced editor - the file should still open and work in ADT 2004] and made some changes. I renamed the properties that tested property data formats to try to achieve rounding, adding "PDF" to their names for easy identification. Since these do not work in the current verisons, you will not want to be copying them. I thought about removing them, but decided that I would leave them in so I would have one file for use in testing future releases. I deleted the formula that used the VBScript Round function to round "nearest" to two decimal places and replaced it with three generic rounding formulas which could be used as a starting point for setting up rounding in an actual application. I added a manual property called TableOrder, so I could control the sorting of the schedule table and keep each line object next to its schedule table row. I have posted a ZIP file that includes a sample file, to the Autodesk Architectural Desktop Content Discussion group, for anyone who would like to download a working example of what is discussed below.

In order to provide flexibility and to match the rounding functionality present in Property Data Formats, I added a new, real number manual property, RoundValue. This provides the equivalent of the Round Off Value in the Property Data Formats. The default value is 1, which rounds to the nearest whole number. To round to two decimal places, enter 0.01. To round to one half, enter 0.5. To round to the nearest 100, enter 100. The math behind the function involves division, so entering 0 would cause an undefined value. The formulas convert an entered value of 0 to 1.

There are three new formulas - one to round up, one to round down and one to round to nearest. I considered setting up nearest to work like the VBScript function, where exactly 5 in the digit beyond the rounding digit would round up for odd numbers in the rounding digit and down for even numbers in the rounding digit. While that may make some sense when the RoundValue is 1 times 10 to some power, for RoundValues like 50, where 275 would round up to 300 but 225 would round down to 200, the "oddness" or "eveness" of the starting number was not readily apparent. I chose to take the easy way out and simply have exactly 5 always round up. The properties in my revised LineObjects Property Set Definition are shown below.

LineObjects Property Set Definition

The new formulas also work with negative numbers, should your application require that. I chose to treat negative numbers such that rounding up goes to a higher number and down goes to a smaller number. For example, -10.5 would be rounded up to -10 and down to -11. I changed the function I used for rounding from Fix, used in the previous rounding formulas, to Int, as that handles negative numbers in the way previously described. [For negative numbers, Fix rounds up away from zero and down towards zero; in other words, it rounds up to the greater absolute value. Fix and Int return the same results for positive numbers.]

The Number-FormulaRoundDown formula property is the simplest. After converting any zero value in RoundValue to 1, the formula divides the source number by the absolute value of RoundValue, uses the Int function to truncate any decimal portion, then multiplies that whole number portion by the absolute value of RoundValue to arrive at the desired result. The formula, as it appears in ADT 2006, is shown below.
Number-FormulaRoundDown Formula

The Number-FormulaRoundUp formula property works in a similar fashion, dividing by the RoundValue, truncating any fraction and multiplying that by the RoundValue, but needs to determine if there is any fractional part that would require rounding up. This is done by storing intermediate results in variables, calculating the fractional part and, if any, adding one to the whole number before finally multiplying it by the absolute value of RoundValue to get the final result. The formula is shown below.
Number-FormulaRoundUp Formula

The Number-FormulaRoundNearest formula property is almost identical to the round up property, except that adding one to the whole number value only happens if the fractional part is 0.5 or greater. The formula is shown below.
Number-FormulaRoundNearest Formula

There is a schedule table in the sample file that shows the results of various sample values and, for the formulas, various RoundValues. As before, lines are used as the objects to hold the properties. As previously noted the table is sorted by the vaule in TableOrder; the TableOrder column is hidden in the Schedule Table Style. Feel free to play around with the values assigned to any line to see how the results of the different rounding formulas change.
Rounding Test Schedule Table

You should be able to adapt one of these formulas to accomplish any property data rounding needs you may have, until such time as the rounding feature in the Property Data Formats is corrected. When you substitute the property you wish to round for the NumberUnformatted property in the sample file, make certain that you have a number and not a string. Read more about creating unformatted numeric properties in my previous blog article on that subject. Also note that if, for a given formula, the rounding value will always be the same, you do not need to have the RoundValue property, and can enter the number directly in the formula, by replacing each instance of "Abs ( rndVal )" with your desired value [use a positive value]. In that case, you can delete the first five lines, which read in the value of RoundValue and substitute 1 if the value is 0.