Nate Holt's Blog

February 23, 2017

Wish known sooner #02 – Hold SHIFT key down when Surfing

Filed under: Electrical — nateholt @ 11:42 pm

Surfer works like the old AutoCAD SDI mode… a single document at a time display mode rather than the MDI multi-document mode. With this SDI-like behavior, Surfer wants to close your active drawing before it surfs on to the next drawing. A bit frustrating.

Here’s what I wish I’d known sooner… if you hold the SHIFT key down as you pick a new reference to Surf to, Surfer leaves the current drawing open and immediately opens or jumps to the new drawing. So much cleaner. So much smoother. So much better.


I believe that Pat Murnen mentioned this trick to me. Thanks Pat!



February 11, 2017

Wish Known Sooner #01 – Change Attribute properties From the Properties Dialog

Filed under: Electrical — nateholt @ 1:10 pm

Wish I had known this sooner… can use the regular AutoCAD Properties dialog to change pretty much any characteristic of an existing attribute embedded in an inserted block instance.

Example: here’s an inserted block instance representing schematic connections to a CT input of a protection relay. Want to adjust size, layer, color assignment of  the attribute text “SEL-787”.


Hold the CTRL key down. Now pick on the “SEL-787” attribute text. Make all desired changes in this one dialog.


Here we’ve change this attribute’s layer assignment, forced a specific color, and reduced its text height… all in one quick sequence in the AutoCAD PROPERTIES dialog…!


August 27, 2016

Understanding, applying, and exploiting AcadE’s Built-in BOM “ASSYCODE” feature

Filed under: Electrical — nateholt @ 4:13 pm

You’re probably used to seeing and using this “Catalog Data” section of AcadE’s various Insert/Edit dialogs. A non-blank CAT attribute value assignment and optional MFG assignment will generate a line item in your AcadE-generated BOM report. But what’s this assembly edit box for?


A non-blank ASSYCODE attribute value assignment can trigger additional BOM “subassembly” information to be pulled into your BOM report. This ASSYCODE assignment can be configured to extend AcadE’s reporting capabilities (even in some unexpected ways).

Let’s illustrate. Here’s a small set of demo catalog entries for main part number “1234” added to a new table “PR” in the AcadE “default_cat.mdb” Access database file. When you insert a “PR” related symbol and then select the “Catalog Lookup” button, AcadE will go to this PR table and figure out what to offer you in a part number selection dialog.


It will end up including the first five entries shown in the database table above. This is because it filters out any row entry that has a non-blank ASSEMBLYLIST field assignment. These filtered-out rows with the non-blank ASSEMBLYLIST field values (starting at the 6th entry in the table above) are interpreted by AcadE as being related to subassemblies and are not the main/base part numbers.

So, selecting the “Catalog Lookup” button displays just the main/base part number records pulled from our “PR” table.


Example 1 – Simple, single catalog part number selection, no ASSYCODE

Select “Catalog Lookup” button and select the bare catalog entry that has no assembly code association. The catalog number “1234” is pulled from the part lookup database record and populates the “Cat” edit box in the dialog. The assembly code edit box remains blank – no value held in the ASSEMBLYCODE field for the selected catalog part number.


Use “Catalog Check” to preview what will be sent to a BOM report:  Just a single line item will output to a BOM report.


Example 2 – Catalog Part number selection (having non-blank ASSEMBLYCODE value)

Select “Catalog Lookup” button and select the second “1234” part number offering, the one that comes in with an added subassembly “A”.  The catalog number “1234” is pulled from the part lookup database record and populates the “Cat” edit box in the Insert/Edit dialog. The record’s assembly code, entered as “&A1234”, lands in the Assemblycode edit box. If the dialog is exited with OK, these two values get pushed to the symbol’s CAT and ASSYCODE attributes.


Use “Catalog Check” to preview what will be available to BOM report. Result: the same first line as before but now additional two part number line items are shown. These are tied to the “&A1234” subassembly code, described here:

The selected main part number deposited code “&A1234” into the Insert/Edit dialog box’s Asmb edit box (and pushed out to attribute ASSYCODE on the symbol on exiting the dialog). Now, when BOM is run, AcadE not only pulls in the description for the main part number from the default_cat.mdb file based upon the CAT attribute value on the symbol, it also finds two more part number entries that need to come in with it based on the ASSYCODE attribute value. These extras are collected by querying the PR table’s ASSEMBLYLIST field for value match on the “&A1234” value now carried on the assembly code edit box value (and ASSYCODE attribute value).


Example 3 and Example 4 – are similar to above. Selecting the main entry that has “SUB-B” (3rd entry) and “SUB-C” (5th entry). The SUB-B selection, with an ASSEMBLYCODE value of “&B1234”, will bring in three additional part numbers into the BOM. The SUB-C entry, “&C1234”, will bring in just one extra part number into the displayed BOM.

Example 5 – Bringing in a combo of Sub-A and Sub-B into the BOM report

A single part number selection can be set up to display multiple assemblies. One way to do this requires that the  assembly entries be duplicated in the database file and assigned a new, common ASSEMBLYCODE value. In the example here the combined A and B assemblies are duplicated and given a new code value of “&AB1234”.


This illustrates the ASSEMBLYCODE of the picked main/base part number entry bringing in the two “Sub-A” entries and the three “Sub-B” entries.


Example 6 – Alternate method for Sub-A and Sub-B combo tied to the main part number

You can get the Example 5 results without having to duplicate records in the catalog database. Just create a new entry in the parts database that has the two subassembly codes separated by a semicolon (;) character.


Example 7 – Adding an existing Assembly reference to any main part number ON-THE-FLY

Let’s dovetail off of Example 5 where we have selected a main part number that automatically brings in Sub-A and Sub-B (using the “$AB1234” assembly code value). Let’s say that we need to include SUB-C on this part number but don’t want to mess around with duplicating a bunch of records in the database.

Just add a semicolon and append the extra assembly code value. Change “&AB1234” to “&AB1234;&C1234” in the edit box. Exit the dialog with OK and the ASSYCODE attribute on the symbol now carries the new combined value. When BOM generated, you’ll see the happy results.


Example 8 – Changing a quantity multiplier for an added Assembly reference ON-THE-FLY

Using the example above, let’s say we need to double the quantities of Sub-A and Sub-B and triple the quantities reported for the Sub-C entry above. Edit the current value of “&AB1234;&C1234” to “2,&AB1234;3,&C1234”. In other words, add a prefix of a “count multiplier” value plus a comma to each assembly code value.


Example 9 – Forcing Assemblies into the BOM without a valid, defined main part number.

AcadE needs to see a non-blank CAT attribute value in order to include a symbol in the BOM report. Even if the CAT attribute value is a dummy value like “-“, a part number that is not defined in our PR table of the parts catalog database file, it will still be extracted into the BOM reporting.

Change the CAT attribute value shown in the Catalog edit box to just a dash character while leaving the existing ASSYCODE edit box value intact. Running the BOM Check results in a blank entry for the main “-“ part number but the assembly information is fully reported.



  1. The Count multiplier is applied to the main count and to all subassembly counts. Compare the original above with the doubled multiplier results below.


B. The total length of the ASSYCODE attribute value (ASSEMBLYCODE field value) is limited to 60 characters (and the Insert/Edit dialog may not currently accept a 60 character input). This means that the technique of using semicolon delimited assembly codes has a limit (and you’ll need to flip to the combined technique of Example 5).

C. You cannot use the comma (,) or semicolon (;) character in an assembly code value. These are reserved for use as shown in Examples 6 and 8.

D. Assembly codes defined in one table of the parts database file are not “visible” to other tables in the file. If they need to be reused in other tables then they will need to be copied into each of the other tables.

E. The codes in the example above all start with the (&) character and tie into the main part number as a suffix. This is not a requirement… it was just done for clarity.

Part 2 – What is “Multiple Catalog” and how is it different from the ASSYCODE feature?

The “Multiple Catalog” button brings up a small dialog that allows up to 99 more part numbers to be applied to the edited symbol.

When the BOM report is run and it encounters a symbol carrying extra part number assignments via “Multiple Catalog”, it reports the normal, main part number first and then treats the extra “Multiple Catalog” entries similar to individual Assembly items.


Key points about Multiple Catalog:

  1. The user needs to enter a main part number before the “Multiple Catalog” button enables.
  2. Up to 99 additional part number assignments. The Sequential Code “List” pulldown let’s user decide which of the 99 slots to use for a part number assignment. Slots begin with “01” and end at “99”. Users generally start at “01” but skips are allowed.
  3. The main part number, manufacturer, and non-blank assembly code values entered into the edit boxes (manually or via catalog lookup) go to attributes CAT, MGF, and ASSYCODE respectively. For the Multiple Catalog entries, the values go to attributes CAT01, MFG01, and ASSYCODE01 if those attributes exist. But most likely they don’t exist, in which case they are automatically attached to the edited symbol as Xdata values. The tag name of the Xdata is the same name as the target attribute but with a “VIA_WD_” prefix. For example, if CAT03 attribute doesn’t exist, the Multiple Catalog value for CAT03 will be output as a value tied to Xdata tag name “VIA_WD_CAT03”.
  4. Multiple Catalog assignments can be pulled from different “tables” in the parts database file (default = “default_cat.mdb”). The desired table name is set in a pull-down on the dialog.
  5. The ASSYCODE feature described in the first part of this document is fully supported for EVERY one of the added Multiple Catalog entries.


January 30, 2016

Project-wide block lister & where used

Filed under: Electrical — nateholt @ 1:56 pm

Big AcadE conversion project led to duplicated symbols with different names used here and there throughout the drawing set. Needed a way to identify these so they could be cleaned up and then a master library symbol set pulled together.

Here’s a quick tool that helped… it generates a spreadsheet showing all the unique blocks used in a selected AcadE project drawing set. It outputs a “.csv” text file that can be displayed with Excel. The resulting spreadsheet lists block name and total usage count along with each block’s “where used” drawing list. Seems to work…


Here’s the lisp program. Just LOAD or APPLOAD it and type “blocks_used” at the AutoCAD “Command:” prompt. You are instructed to browse to your AcadE project’s “.wdp” file. Hit OK and off it goes. When finished it prompts for a “.csv” file name. Enter something, then open Excel, switch to “Text Files” as shown below. Browse to your csv file. It pops open in Excel.



You can customize this tool to your liking. Let’s say you want to filter out certain block names from the spreadsheet display — like title block or wire number blocks or the “dot” blocks. Open up the blocks_used.lsp file with AutoCAD’s VLIDE lisp editor or any text editor (make back up copy first!) and adjust as shown below. Save the file. Now the next time you load and run… the tool should follow your adjustments!


Update: Note: this tool is set up to report only the blocks that are actually used in the drawings. It ignores those that are defined but nowhere used in the DWG file (i.e. does not track and report a drawing’s UNPURGED blocks). If you want to modify the tool to process and list all blocks defined in your drawings, you would need to replace the section of code starting with “(setq ss (wd_dbx_ssget ff “_X” ‘((0 . “INSERT”))))” above with some code that makes repeated calls to standard AutoLISP function “(tblnext “BLOCK”)” and extract each defined (i.e. not necessarily used!) block name that this function finds in the drawing.


December 14, 2015

How to Avoid the Need for a RATINGx ‘Cheat Sheet’

Filed under: Electrical — nateholt @ 12:49 pm

For customizing your schematic/panel symbols, there is a big advantage to using the 12 RATINGx attributes supported by AutoCAD Electrical (named RATING1 through RATING12) instead of creating your own named attributes.

  • RATINGx attribute values can automatically migrate from schematic to panel representations
  • RATINGx attribute value are available to be included in the dozens of standard AutoCAD Electrical reports

But it’s not all tinsel and glitter. The disadvantage is that you have to remember which RATINGx attribute is used for what value. And you may even need to take into consideration the component’s “family”… that you want to use RATING1 on a power circuit breaker symbol for “Interrupting Rating” and then reuse RATING1 on a power factor correction capacitor for “KVAR Rating”. You end up needing a cheat sheet to keep things straight when you’re making the RATINGx assignments for a given symbol type!


How to reduce need for a ‘RATINGx’ Cheat Sheet

When you create your symbols and add RATINGx attribute definitions, do this:  Enter a description in the “Prompt” edit box. That’s it!

Now, when you insert/edit one of these components and display the Rating View/Edit dialog, the symbol’s prompt values will show up in the dialog display for each rating edit box. No more guessing. No more need for the cheat sheet.


Here is the power circuit breaker symbol with nine RATINGx attribute definitions (all set to be “invisible”). Each is set up with a prompt value that represents what that rating value is to mean.


Inserting / Editing instances of this revised symbol now shows which rating is which for this type of symbol…



  • Figure out which RATINGx attributes will have a common usage across most or all symbol families. In the example above, Rating2-5 will be common to most symbols.
  • RATING1 is used by AutoCAD Electrical for cable “core/color” assignment. So it is recommended that if you reuse RATING1, chose something that would never need to assigned to a cable. In the example above, “Interrupting rating” reuses RATING1… a value that would probably not be assigned to a cable — so there is no conflict.





November 20, 2015

Auto mapping “Power” and “Control contact pin assignments in AcadE

Filed under: Electrical — nateholt @ 8:42 am

(this article posted originally on old [lost] blog, March 8, 2007… thanks to Vladimir Panic for sending a saved copy back to me! Here’s the old posting – Nate.)

Here’s the issue. AutoCAD Electrical’s PINLIST contact pin assignments work great when you’re dealing with clean categories of N.O., N.C. and Form-C contacts. But when you might have two types of normally open N.O. contacts on the same parent device, then there is some ambiguity when AutoCAD Electrical auto-assigns pin pairs.


Above is an example of a motor starter relay coil “-K14” with a triple set of “power contacts” on the left and a normal control contact on the right. All contacts are normally open contacts but clearly there is a difference in which ones should be used where in the schematics.

When all the contacts in a group are the same, like a control relay, then it’s no problem. Let AutoCAD Electrical assign the next available N.O. or N.C. or Form-C contact pairing and all is fine.

But, when there are multiple flavors of N.O. contacts like for this motor starter contactor, then the auto-assignment may not give the expected results.

Here are three ways to deal with this situation (where there are two or more types of a given contact type). The first is the out-of-the-box version where you need to manually confirm that the auto-assignment AutoCAD Electrical makes is the appropriate decision (ex: power N.O. versus control N.O.). The second is an enhanced version of this that gives a bit more information – making the decision obvious. The third fully automates the selection of power versus control contact but requires a minor addition to a handful of library symbols.

Let’s look at each of these methods.

Method A: Default pin list mapping – different types of N.O. contacts listed together

This is the current AutoCAD Electrical default. Here’s the PINLIST entry that covers a Siemens part number 3TF511-OAK6 motor starter – 3 power contacts (the L1/T1 through L3/T3 pin-pair entries, each marked with a beginning “1” flag indicating N.O.), 1 normal control contact with pins 13/14 and 1 normally closed (N.C.) control contact (beginning “2” flag indicating N.C.) with pins 21/22.


When you insert the motor starter coil and select this Siemens part number, the above PINLIST value is stored on the motor starter coil symbol. Then, when a N.O. contact is linked to the motor starter, AutoCAD Electrical picks the next available N.O. contact pin pair from this PINLIST string. If the automatic selection is not what you really wanted, you pick the “List” button and manually select the pin pair that is more appropriate. But you have to know which is which. The power and control N.O. contacts are all shown in the same list box and it may not be obvious which is which.


Method B: Descriptions added to the “power” version of the N.O. contacts in the listing

This approach is pretty much the same as above but displays the needed information. Here a “comment” is added to each of the power contact pin entries in the catalog lookup PINLIST entry for this motor starter’s part number. Let’s say that you identify motor power N.O. contacts with a code of “Ma” where “M” is main contactor and “a” means N.O. (and “b” would be N.C.). Here’s the PINLIST entry with the comments added on the three power contacts.


And here is what the “List” dialog looks like when the contact is linked to the parent motor starter coil. Note that the power contact pins are identified in the upper left-hand pick box. The lone “control” N.O. contact is there too but it has no prefix label. So the user can more accurately decide which contact pin pair to choose.


Method C: Best – Auto-mapping of Power contact pins

Here’s the way to totally automate the process, but it requires a bit of setup. First, we modify the entry in the catalog lookup PINLIST for our motor starter coil. We change the first character for each power contact pin pair from a “1” (meaning N.O.) to a “4Ma” meaning special type “Ma”.


Now, the critical step is this… modify the N.O. Power contact library symbol. Add an invisible attribute PINLIST_TYPE with an attribute value of “4Ma”. This is important for this to all work. This attribute will flag AutoCAD Electrical to look for for type “4Ma” pin list entries when the contact is linked to a parent coil symbol.


That’s it. Now, when we pop in this modified N.O. power contact and link it to the motor starter coil, it will access and auto-assign from only contacts that have been marked as type “4Ma”. If you hit the “List” button, this pick list dialog displays. Note that only the three power contacts display.


And here’s the unmodified “normal” N.O. contact symbol. When we link this to the motor starter coil, it skips over the “4Ma” entries and finds the first normal “1” entry.


And if we hit the “List” button, note that only the single N.O. control contact pin pair (pins 13-14) lists (and the 4Ma contacts show up at the bottom in an “other” sublist).


So, there it is. Use this “4x” pin list type to differentiate between different flavors of the same general contact type.

October 27, 2015

AcadE Quiz

Filed under: Electrical — nateholt @ 9:34 pm

Updated quiz from some time ago…


Q1.  True/False – AutoCAD Electrical uses AutoCAD “custom objects” for schematic components, wire numbers, and physical panel layout representations. _________

Q2. What is the absolute minimum needed for a generic AutoCAD block insert to be recognized as a “parent” schematic component symbol? ___________________________________

Q3. True/False – AutoCAD Electrical requires that schematic component symbols always be constructed with pre-defined widths so that wires can “know” where to break across the symbol and how to connect. ____________

Q4. What are the two key attribute names on a component symbol are used to carry and report catalog part number and manufacturer assignment? ________ and _________

Q5.  Does this push-button component symbol below represent a “Normally open” or “Normally closed” electrical contact? ________________________

Q6.  If there was 240 volts of electrical potential on one side of the push-button contact and you accidentally grabbed a bare wire on the other side of that push-button contact, would you prefer the push-button’s contact type to be “Normally open” or “Normally closed”? ________________________

Q7. What is the most likely block name for the symbol shown in Q5? _________________

Q8. What is the most likely attribute name for the left-hand wire connection on the Q5 symbol? _________.

Q9. If the Q5 symbol carries attributes for both a terminal “pin” number and pin number description text, what would the most likely attribute names be for the right-hand side wire connection attributes? Wire connection attribute name: ___________, Pin attribute name: _____________, Pin description attribute name ______________.

Q10.  What is the most likely block name for this parent push-button symbol shown above, inserted into a vertical wire? ___________

Q11. If AutoCAD electrical could not find the symbol shown in Q10, what symbol name would it try to find and insert? ______________. If found, what are two things would AutoCAD Electrical do to the symbol as it inserts?

  1. ____________________________________
  2. ____________________________________

Q12. Each circle on this “transformer” component symbol below needs to allow a wire to automatically connect from either of two different directions. The upper left-hand circle has two red wires shown. If the “H1” terminal pin is attribute “TERM01” and both wire connections on this circle need to relate to this single terminal pin attribute, what two wire connection attribute names must be used on the edge of this circle?

Upper edge: __________________

Left-hand edge ______________________.


Q13. A parent selector switch is shown above top-left. It is tied to a child contact below through a dash link line. A. What are the first five characters of the parent selector switch’s block name? ____________. B. How about the first five characters of the child selector switch contact’s block name? ____________.

Q14. What attribute name does the upper end of the dash link line “connect” to on the parent selector switch symbol? _______________.

Q15. What attribute name does the lower-right hand end of the dash link line connect to on the child contact symbol? _________________.

Q16. Two terminal symbols are shown below inserted into a wire and wire numbers applied. The third character of the round terminal symbol’s block name has to be what?   ___

Q17. You notice Bob seems frustrated. He says that two wire connections on his 8-connection custom schematic symbol act strangely. Whatever wire number connects to one of the connections is repeated on the other connection. All the other six wire connections work fine. What is probably wrong? ____________________________________________________________________

Q18. Randy reports that his custom 3-phase resistor symbol will not trigger a wire number change through any of its three pairs of connections. What single question do you ask to have him view you as a total genius?  “Is the _________________ character of your symbol’s block name a ____?

Q19. Jorge created a special pair of normally open and normally closed contact symbols. They work fine with AutoCAD Electrical in every way except for the “Toggle NO/NC” command. With this command, there is no response – the symbol refuses to swap from the one state to the other. What is the most likely problem? ______________________.


Q20. Slavica created a special, vertical version of a pushbutton symbol shown here. Everything works fine except that whenever he tries to wire up the bottom wire connection, the wire won’t connect as expected. It ends up horizontal as shown. What is wrong? ___________________________

Q21. Vincent needs his custom 3-connection symbol to not break the wire number through it between pins TERM02 and TERM03. What attribute could he add to his symbol? __________________. What should be its default value? _________________________.

Q22. You have a half-dozen drawings open on your screen from a couple different AcadE projects. As you’re flipping from one drawing to the next, it suddenly seems that AcadE no longer works as expected. Jeff walks by and notices your puzzled look. What is the one key question he asks you?

Q23. You’re making an addition to an old legacy AutoCAD drawing. After telling AutoCAD Electrical to apply wire numbers to your drawing, you notice that random wire numbers have suddenly appeared on lines in unexpected places in the old parts of the drawing. You call Miriam since this seems like a major application failure. What is the one question could she ask you to help you fix your own problem?

Q24. In a very tight place on your schematic you bring two different wires together, run them on top of each other for a very short distance, and then branch off again. But now AcadE reports these two different wires as the same wire number. You’re stumped. Bill, finished for the day, clutching his new fishing rod, and heading for the exit door, stops momentarily and takes a look. He gives you some bad news. What is it?

Q25. For some unknown reason, the middle 4-wire vertical bus below is not “electrically connected” to the 4-wire horizontal bus – AcadE does not recognize the connections. All the lines are on a “wire layer” and you’ve manually popped in four “solder dot” symbols at the cross-over points for good measure. It looks good. But it just doesn’t work! Tim asks you a key question that guides you to the solution. What does he ask you?


Q26. Randy created a small 8-pin schematic connector symbol. It works great. But on your drawing, there was not much room for it so you scaled it and its connected wiring down to quarter-size. Now it fits nicely and doesn’t look too bad either. But for some reason the reported wire connections to the connector seem to be “shorted” together. What has happened?


October 15, 2015

Tip: Triggering “Properites” display/edit for a picked attribute on inserted block

Filed under: Electrical — nateholt @ 9:31 pm

Stumbled across this in the last couple weeks… and now use it constantly for some conversion work. Wish had known about this sooner!


For example, you want to change the layer that an embedded attribute displays on. No problem. CTRL-pick and then change the layer assignment in the Properties dialog.

September 2, 2015

Stretching just PART of an inserted block instance

Filed under: Electrical — nateholt @ 1:02 pm

This is an unconventional use of the AutoCAD Electrical “Stretch PLC Module” tool. It seems to work…









Advertisement: if you have a need for an AcadE (or related) app to be developed and have some budget, let me know. This is what I do. – Nate Holt, N8 Consultants LLC, Toledo, OH, USA. email:, office: 419-843-3310.

August 28, 2015

System-wide Block Update

Filed under: Electrical — nateholt @ 8:52 pm

Here’s a tool that is designed to quickly find and update/replace a named AcadE symbol block — not Drawing-wide or Project-wide, but System-wide… across all drawings in all projects on your system. Let’s say that a certain motor starter panel layout symbol was drawn a bit incorrectly some time ago and has been inserted into an unknown number of AcadE projects. This new System-wide tool can find all instances in moments and trigger a single system-wide block update process. Here’s a short video.

August 12, 2015

Active DWG not in Active Project – how to add alert to selected commands

Filed under: Electrical — nateholt @ 12:19 am

I’ve done it many times. Sit there scratching my head… “Why is AcadE giving me these goofy, unexpected results?”

Eventually realize that the active drawing I’m working on is not in my current active project.

Many commands give you a clue that your drawing is not in the active project… it might be the opening dialog’s “Drawing” button unexpectedly fuzzed out but the “Project” button enabled. You might even get a nice warning message. Here is what the Terminal Strip Editor tells you…


But some commands don’t give you such an in-your-face warning. Here’s a potential solution…

Avoiding this Embarrassment

There is an ugly way to automatically get an alert if you launch your command on a drawing that is not in the active project. It involves adding a string of text to the command’s “Macro” string in the ribbon menu.

Example: Let’s say more than once you’ve tried to run the Wire Annotation command on a drawing that wasn’t in the active project. This has triggered momentary frustration.

Let’s add a check/alert to the Wire Annotation command’s entry in the ribbon menu.


Step 1: Launch CUI command. Select “Electrical Commands” as shown below to narrow the search.


Step 2: Scroll down through the list and find the Wire Annotation command’s entry. Pick it.

In the “Properties” on the right side of the dialog, look for the “Macro” entry. This is what you want to carefully edit.

Note that the internal AcadE command name for the Wire Annotation command is AEWIREANNOTATION. It is embedded in the macro string shown below.


Step 3. Now CAREFULLY change the macro string value to one of the two new strings below. The one you pick depends upon what you want to happen if your drawing is not in the active project when you launch the Wire Annotation command. Option 1: If you want the alert to pop up and then the command exits without running, edit the Macro string as shown below, carefully preserving the internal AcadE’s command name but substituting a “c:” for the “_” character.


Note that the command name now has a “c:” prefix (this is NOT a drive letter!) and is in parenthesis.

Option 2: If you want the Alert to pop up and then allow the command to run after you acknowledge the alert, then carefully enter the string as shown below.


Step 3: Save/Exit the CUI command. Test!

Here’s what you’ll now see if you pick on “Wire Annotation” command icon in the ribbon menu with a non-project drawing active on your screen.


July 8, 2015

3-phase Circuit insertion with a pre-defined Wire Connection sequence

Filed under: Electrical — nateholt @ 2:26 pm

Here was an interesting problem. A user wanted to quickly (with a click or two) “ground out” unused CTs shown on a schematic symbol for large power circuit breakers.


Not too difficult to add a shorting circuit automatically… using AutoCAD Electrical’s “Insert Circuit” API call (c:wd_ins_circ2…) in a small Lisp utility. The circuit consists of just the interconnected wiring and attached ground symbol to do the job.


User runs a little lsp utlity, picks on the left-most upper or lower CT wire connection point of the circuit breaker symbol. Utility finds the closest wire connection X?TERMxx attribute to user’s pick point on the breaker symbol, picks the appropriate grounding circuit based upon the X?TERMxx attribute name’s 2nd character (“2″=top connection), and then pops the shorting circuit in, complete with smart ground symbol. Very cool.


But there is a problem with the downstream panel wiring diagram representation of the breaker’s CT connection terminal strips. The user really needs a specific “wire sequence” be applied to the six jumpered wire connections plus ground so that the jumpering on this grounded-out CT’s terminal strip inside the circuit breaker terminal box flows neatly top to bottom. Here is what the user wants to see when the schematic connection information is output to the breaker’s wiring diagram:


But what the user gets is random.

To guarantee the desired connection sequence for the six shorted-out breaker CT connections plus ground symbol means a second step. After inserting the “ground out” circuit, the user needs to find and launch AcadE’s “Edit Wire Sequence” command,,,


,,, and go through the process of rearranging the seven wire connections so that it matches this zig-zag order:


The zig-zag order above will drive the clean jumpering inside the breaker’s terminal box.


A solution is to predefine a default wire sequence for each set of the six CT connections right on the breaker symbol itself. Push the wire sequence Xdata on to the hidden X?TERMxx wire connection attribute definitions. When the symbol inserts, the wire sequence data will come in with the symbol. If a ground-out circuit is applied to a group of these six connections on the symbol, the pre-defined wire sequence will kick in. If these CT connections are not grounded out, the existing wire connection sequencing will be ignored / overwritten by the discrete wire connections that the user makes (i.e. connections that are not all shorted together).

But adding the correct Xdata / Xdata values to the attribute definitions at the library level is difficult / tedious.

Lisp Utility

Here’s a little AutoLisp utility to make this task easier. With the library symbol DWG open, appload the little piece of source code shown below. Then type PREDEFINE_WSEQ at the “Command:” prompt and start picking the symbol’s wire connection attributes in the order that you’d like to have as a default if the connections are jumpered together.


The utility places Xdata “VIA_WD_WSEQ” with an incrementing 3-digit value on to each picked attribute definition. This mimics what the “Edit Wire Sequence” command does if operating on it AFTER the symbol is inserted. The advantage here is that you do it one time at the library level. The sequencing for jumpered connections comes in automatically when the symbol inserts.

March 13, 2015

Retiring an ITEM number assignment — one approach

Filed under: Electrical — nateholt @ 9:59 am

There is a need to be able to “retire” an ITEM number assignment when an old AutoCAD Electrical project set is later upgraded. Perhaps an electrical device originally specified, installed, and operated is now part of an overall control system upgrade. It was assigned an item number and showed up in the BOM, but now is to be upgraded and replaced with something better. But the user doesn’t want the old item number to be re-used for the new device… or ever used again for anything in this project.

How to do this? One potential way is illustrated below. But is there a better way?


(update — thought a bit more about the original posting… and came up with a slightly modified approach. New screenshots below)


Now let’s say you’re ready to “re-sequence” the ITEM numbers. BUT… you don’t want the re-sequence to affect the item numbers that you’ve marked as “retired” (i.e. those pushed into the little legend table and marked as MFG “_NOT USED”. Here’s how it can be done:



Now, when user launches the Re-sequence command, the “retired” items are all grouped at the very top of the “Manufacturers to Process” list, under “_NOT USED”. Just unselect this manufacturer and all of the “Retired” item number assignments are preserved through the item number re-sequence operation.





February 23, 2015

Quick question about “Mark Menus”

Filed under: Electrical — nateholt @ 2:52 pm

I’ve been away for awhile. Looking at the incremental improvements, this “Mark Menu” thing seems pretty neat. But there is one thing about the command placement for AutoCAD Electrical that has caused a small amount of frustration. I’ve more than once ended up with “Delete Component” when I was in a hurry and expecting an Edit or a Surf. markmenu

Does anyone know if this Mark Menu concept can be customized? I’d like to move “Delete Component” down in the bottom list where I think that I can more safely pick it. What think? Thanks, Nate.

February 13, 2015

Birth pic of AutoCAD Electrical

Filed under: Electrical, Musings — nateholt @ 9:31 pm

Cleaning out an old drawer and came across this Polaroid snapshot. It was March 13, 1996 and there was a first buyer for the “N8-Wire” AutoCAD add-on. It was to an outfit in Wixom, MI that was taking a chance on this.

Scan_20150213 (2)

The shipping department packaged it up and, before shipping it out (i.e. walking it down the street to the corner mailbox), placed it next to the development system (386 10mHz) in the software development department (tiny spare bedroom) to enshrine the moment.

Soon, Cimlogic picked up the marketing (their business card is in the photo), then VIA Development, and finally it became an Autodesk product. But many of the concepts, techniques, and workflows that were birthed in the first “N8-Wire” pictured here have endured.

February 11, 2015

How Wire Sequencing data is held in WDATA table

Filed under: Electrical — nateholt @ 1:52 am

This is the second of the series on the WDATA table format and will be of interest to one or two folks, if that (link here). But the question came up recently, so here goes…

Let’s look at an example of BEFORE and then AFTER.

Here is the wire network we’ll look at for this example. It’s the hot wire 224 below that interconnects six devices. Normal from/to reporting will likely list them top to bottom, left to right.




Here is what the above network’s record looks like in this project’s database file, WDATA table, for wire 224 BEFORE it is sequenced (Project Database file is opened and viewed with a copy of Microsoft Access). It’s pretty cryptic. It has six groupings of data, one for each wire connection in wire the wire number 224 network. Note that each wire connection entry in this list carries a value of “900” in its 22nd position. This “900” value is the default AcadE uses to signify a “non-sequenced” connection.


Now we run the Sequence Wire command and force some defined wire sequence. What we now have for from/to connection sequence is illustrated below with the “Show Sequence” command.




Here is what the WDATA table’s record now looks like for wire network 224. The “900” un-sequenced flag is now replaced with an incrementing 3-digit number starting at “001”.


To see it more cleanly, here are the subentries pulled out and shown separately. Sorting on the 22nd entry yields this wire connection sequence. Note that it matches the results shown in the “Show Sequence” tool above! The From/To reporting for wire number “224” will now show this connection sequence.




February 4, 2015

N8 Consultants – reopened for business

Filed under: Electrical — nateholt @ 8:38 am

Contact info here:

Nate Holt

phone: 419-344-5536 (EST time zone)

March 3, 2011

Accessing log file of AutoCAD Electrical project-wide tag/value updates

Filed under: Electrical — nateholt @ 11:23 am

AutoCAD Electrical automatically maintains a “log” file of changes it makes during project-wide retagging and value updating.

This may be useful if for tracking what things might need to be ballooned, clouded, or marked in some way to identify specific revisions.

The log file is an ASCII text file, automatically maintained by AutoCAD Electrical in the local “User” folder maintained by AutoCAD Electrical. The file name of the log file is the same as the project name but with a “.log” extension.

The screenshot below gives an example of how this works (and a limitation). There are three drawings in this project that all have an instance of component marked with a “TAG1” attribute value of “52-1AB”. There is a 3-line schematic component, a “power 1-line” version, and a “protection and control 1-line” version (different WD_TYPE values on each, so these appear as “Peer parents” to the 3-line schematic symbol).

In the example shown, the 3-line schematic instance of “52-1AB” was edited using AutoCAD Electrical. The tag name was changed to just 52-1 and the RATING1 attribute value changed from 1600A to 1492A. AutoCAD Electrical found and automatically updated the other two instances of 52-1AB. This update of the other two instances is automatically pushed into a “.log” file shown here.

The limitation is that AutoCAD Electrical does not “log” your edit of the original component. It only logs the changes it makes automatically as a result of your manual, original edit.

Log file name

The log file name will be the same as the active project but with a “.log” extension. The folder it is in is the local “USER” folder maintained by AutoCAD Electrical. You can see this path by typing this at the “Command:” prompt:    !GBL_wd_usr [Enter] 

Project log file –> Excel tool

Here’s a little AutoLISP utility that will find and read the active project’s “.log” file and format the data into a CSV file. You can then call up and view it in Excel.

February 28, 2011

Upcoming Webcast – Circuit Builder (Part 2)

Filed under: Electrical — nateholt @ 6:29 pm

April’s webcast will be the second in a series that started with the Introduction to Circuit Builder, presented in February.

Two main points of this webcast will explore in detail…

  • How a motor load assignment value (voltage, phase, HP/KW, RPM, motor type) entered into Circuit Builder can automatically influence the upstream breaker, fuse, and wire size assignments that Circuit Builder suggests as it completes the circuit… all per a given electrical standard.
  • How Circuit Builder can help in calculating appropriate wire conductor de-rating for factors such as ambient temperature, insulation type, conductor grouping… all per a given electrical standard.

Please check back here for exact time/date and the link to the free registration.

February 17, 2011

Tutorial – Introduction to the Circuit Builder tool (part 1) – AutoCAD Electrical

Filed under: Electrical, Tutorials — nateholt @ 1:01 am

 Introduction to the AutoCAD Electrical “Circuit Builder” tool. Excel-spreadsheet-driven, parametric build of electrical control circuits.

Autodesk’s Nathan Eliason hosted a webcast today (February 16, 2011) that was an introduction to the Circuit Builder tool built into AutoCAD Electrical. I helped put the demo together and was responsible for real-time Q & A support while Nathan was “on stage”. 

Note: this posting covers the second half of the presentation. The first part, dealing with the legacy tools Save Circuit / Insert Circuit from Icon Menu is covered in the previous posting here. Other Circuit Builder tutorials:

Circuit Builder – Switching from AWG to Metric Wire Sizes
Circuit Builder – Creating an Alternate Electrical Standards Setting
Circuit Builder – Leveraging AutoCAD’s “Group” Concept
Circuit Builder Configure Mode – Adding a “Pick from Icon Menu” Selection
Circuit Builder – Embedding Custom Calls in the Spreadsheet


Introduction to Circuit Builder

This tool was introduced in the AutoCAD Electrical 2009 timeframe. It comes preinstalled with data to build and annotate a sampling of motor control circuits and power feed circuits. It includes three-phase, single-phase, and one-line circuit representations. Each circuit is built dynamically with the following features:

  • Connects to an adjacent power bus.
  • Adds wiring between components.
  • Annotates selected components with suggested values based upon the selected load.
  • Each time a circuit is configured, it is added to a history list of circuits. This list provides for quick re-insertion at a later time.


So, let’s try it. We launch “Circuit Builder” from the Schematic tab of the AutoCAD Electrical toolbar…

… and this opening dialog appears, “Circuit Selection”. It sports a tree structure of pre-defined circuit types, both three-phase and one-line circuit representations.

We select the type of circuit we’d like to build and insert into our active drawing. Let’s pick the first circuit type listed under “3ph Motor Circuit”… the horizontal full-voltage non reversing motor circuit. Highlight and then hit the “Configure” button.

The “Circuit Selection” dialog disappears and we find a 3-phase bus attached to our cursor as shown below. We pop it into our drawing to the right of a vertical 3-phase supply bus. The horizontal bus auto-stretches to make connection to the vertical power bus.

As the 3-phase template attaches to the vertical bus, the “Circuit Configuration” dialog pops open as shown below. Here is where we can select various elements from the tree structure on the left-hand pane and make option selections for that element in the center pane and value assignments in the right-hand pane.

At any time during the configuration we can hit the button at the bottom left-hand part of the dialog to insert one or more of our options into the template circuit. We can “see” how our selections build into the circuit. If we don’t like an option we’ve picked, we can back it out and select a different option, dynamically, from this “Circuit Configuration” dialog.

Once all options are assigned and we’re satisfied with our circuit design, we hit “Done” to finish up and exit the dialog and expose our completed circuit.

How Circuit Builder Works / How you can customize Circuit Builder

Let’s spend the remainder of this tutorial by taking a brief look “under the hood” of Circuit Builder. Why? Because Circuit Builder begs you to customize it, to make it do what you need it to do at your company. So, let’s start…

Question: What drives this tree structure of circuits displayed in the opening “Circuit Selection” dialog?

Answer: An Excel spreadsheet (name displayed along top of dialog)

Here’s the first sheet of the “ace_circuit_builder.xls” Excel file. Its sheet name is ACE_CIRCS and it defines the tree structure of selectable circuit types that display in the Circuit Builder command’s opening dialog. Column “A” gives the main circuit type category and column “B” gives the individual selection options under that category.

For each selection in the tree (the combination of “A” and “B” columns), the third column in this spreadsheet sheet (below) gives the selected circuit’s drawing template “.dwg” file name.

So, when we select from the Circuit Builder opening dialog to build and insert a “Horizontal – FVNR – non-reversing 3ph Motor Circuit”, Circuit Builder is going to start by inserting circuit “ace_cb1_FVNR_H.dwg” into the active drawing at our selected pick point.

So, in it goes. And what we see here, in this beginning stage of Circuit Builder, is this…

…our circuit seems to be just a bare 3-phase bus with some X’s positioned randomly on the wires. Is this all there is?…

No. The circuit template is a framework that guides Circuit Builder as it designs your selected circuit type.

What Circuit Builder starts with for this selected 3-phase motor circuit type is the bus and a dozen or two “marker” blocks with attributes.

The marker block instances are all the same block name but with different CODE attribute values. Each marker block / CODE combination marks a specific X,Y coordinate point in this 3-phase motor circuit where some option can be applied.

Some of the key marker blocks on our inserted 3-phase bus tempalte are shown here. At each position in the bus, that marker block identifies what option or action is to take place at that point.

Let’s zoom in on the left-hand end and take a closer looks at the marker block for the main disconnect option for the circuit…

The marker block’s insertion point is the big “X” of the symbol (below). The visible CODE attribute is used to identify what the marker block is to control. Here, the CODE attribute is “Q001”. It is positioned at the point in the motor circuit where the circuit’s main disconnection means would insert.

Now, we might have a number of different possibilities for disconnect: non-fused switch, various types of circuit breakers, fuses, fused switch, or maybe no disconnection means. All of these are options, any of which we might want to assign to this part of our selected circuit’s design.

Circuit Builder will give us a shot at all of these options for position “Q001” in our template circuit. Let’s go back and take another look at the circuit builder spreadsheet.

This image below is very busy, but let’s see if we can follow…

  1. We launch Circuit Builder. It reads the ACE_CIRCS table (the upper left part of this slide) and builds a circuit selection tree structure from the first two columns.
  2. We make our selection in the tree structure, selecting the “Horizontal FVNR – non reversing” motor starter.
  3. Circuit Builder grabs the associated drawing template “.dwg” file from the 3rd column, ace_cb1_FVNR_H.dwg, and inserts it (exploded) into the active drawing at our pick point.
  4. Circuit Builder now looks at the 4th column of the selected circuit’s tree structure data and gets “3ph_H”. Circuit Builder now goes to the spreadsheet sheet of the same name, “3PH_H”. Here is where it will match up marker block codes that came in with the exploded drawing template and the available options for each.
  5. In our example we were looking at “Q001”. Finding it in the spreadsheet, we can see that there are 9 rows of data corresponding to nine different options to choose from for the circuit’s main disconnection means.

Now, as Circuit Builder processes the marker blocks, one-at-a-time, when it processes the “Q001” marker, it finds the spreadsheet identifies it as “Disconnecting means” and there are 9 rows of options.

 The entries from the spreadsheet drive what is displayed in the dialog shown below. Pretty cool.

But how does a selection in this dialog, like the “Disconnect switch and fuses (time-delay)” shown above, translate to that particular component being pushed into the drawing at the Q001 marker block’s XY location?

Here is another busy slide below, but stick with me on this.

The first column identifies the beginning of the “Q001” main disconnect data. The next 2-3 rows define the titles and options for two pop-lists that appear on the Circuit Builder dialog when dealing with this Q001 main disconnect. The 6th row carries an integer number. This is a selection index value.

 In our example here, we’ve selected the disconnect switch and fuses (time-delay). This carries an index value of 6.

We’ve also selected “No” for the “Include N.O. auxilary contact” selection. This carries an index value of 0.

The sum of these two selections is 6 (6 + 0 = 6). Circuit Builder now goes to the 7th column and looks for an entry or entries marked with a value of 6. It finds one row. The 8th column of this row contains the AutoCAD Electrical API command to insert the selected components. They pop in at the XY coordinate of the “Q001” marker block ( ! ).

This is kind of complex, but is this starting to make some sense now? The main idea is that the whole Circuit Builder concept is totally transparent and fully open. It is driven from an Excel spreadsheet file which you can expand / modify to meet your company’s specific needs.


Let’s finish our time together today by doing just that !   Let’s modify the spreadsheet to add some more choices to an existing option.

Here’s the option we want to enhance… it is for the “run” pilot light color selection for horizontal 3-phase motor circuits. Right now, as we use Circuit Builder to design a 3ph motor circuit, when we get to the control circuit’s “Light” selection, the options presented are just red and green pilot lights. Let’s say we want to add “blue” and “amber” options.

Let’s do it.

Step 1 – Open the ace_circuit_builder.xls Excel spreadsheet. Go to ACE_CIRCS sheet. Determine which sheet gives the detailed control for 3-ph horizontal motor circuits. It is sheet “3PH_H”. Select this sheet.

We flip to the 3PH_H sheet below and scroll down, looking for the “Light” entries…

Here they are. These match up with the four lights + “None” that show up in the Circuit Builder dialog when we get to the “Light” selection. We’re at the right place

Taking a closer look at the column below holding the commands that insert the light symbols… the middle argument of the command string looks like it is the light symbol’s block name.

Looks like “HLT1R” = red standard, “HLT1G” = green standard pilot light… “R”=red and “G” = green. Let’s roll the dice and assume that we can substitute “A” for amber and “B” for blue in these block names.

We can cut and paste copies of the two green pilot light rows. Insert twice. Then edit to cover “amber” and “blue” pilot lights.

(Caution: the F and G rows need to remain “text” – this may mean adding a single quote character in front of the number digit to force Excel to treat it as character string instead of a number. AutoCAD Electrical will have trouble reading the Excel spreadsheet if there is a mixture of numeric and text values in the same vertical column. All values need to be marked as “text”.)

Note: also scroll over to columns K and L and make the “A” and “B” color code changes.

Save and exit the spreadsheet.


And now, when we run Circuit Builder and get down to the “Light” option, there are our four new options! Very nice…!

February 16, 2011

Tutorial – Save Circuit / Insert Circuit from Icon Menu – AutoCAD Electrical

Filed under: Electrical, Tutorials — nateholt @ 3:17 pm

Save partial or complete schematic circuits to the AutoCAD Electrical icon menu for pick and placement at any time into the current design.

Autodesk’s Nathan Eliason hosted a webcast today (February 16, 2011) that was an introduction to the Circuit Builder tool built into AutoCAD Electrical. I helped put the demo together and was responsible for real-time Q & A support while Nathan was “on stage”.

Note: this posting is a summary of what Nathan covered in the first part of his presentation, prior to introduction of the Circuit Builder tool.

Save Circuit / Insert Circuit from Icon Menu

This is the original circuit toolset that’s been around for a very long time. And there are two versions that ultimately do the same thing, that is, allow you to save partial or complete circuits and then, at any time, pop in copies of them for re-use.

For example, on the circled part of the circuit shown above… let’s say we have designed a basic 3-phase motor control circuit with isolated control transformer and control circuit. We’ve built it up using AutoCAD Electrical, inserting wires and components. But we want to be able to quickly re-use this circuit and other circuits like this so we don’t have to create each future instance “from scratch”. Again, we’re talking about the original save/insert circuit capabilities that have been in AutoCAD Electrical for a long time…

1st method: Saving a Circuit using AutoCAD WBLOCK command

So, the first approach is to use the generic AutoCAD WBLOCK command and window the circuit or sub-circuit and save it to disk, perhaps in some folder structure you set up on a shared network drive. Maybe a folder for motor circuits, another for safety circuits, another for controllers, etc. Use WBLOCK command, select the components and wiring and an insertion point, give it a file name, and push it out to your custom “library” of circuits.

2nd method: Saving a Circuit to the Icon Menu

The second approach long supported by AutoCAD Electrical is using the “Save Circuit to Icon Menu”. You window the circuit or sub-circuit you want to save for later re-use. AutoCAD Electrical WBLOCKs out the circuit to disk, same as before… except that it gives you a bonus. It adds a convenient link to the circuit right on the schematic icon menu.

Let’s quickly walk through an example of this second approach, the “Save Circuit to Icon Menu”…

Let’s say we’re going to be inserting quite a few 3-phase motor symbols with each one attached to a 3-pole safety switch.

1. We can draw this one time.
2. Then we can save this out as a “saved circuit” to our icon menu
3. Then, any time we need this, we can select it from the normal schematic icon menu and pop it in.

Here’s  how…

1. Assume we’ve initially drawn the circuit.
2. Now ZOOM in on what is to be included in the saved circuit.
3. Then select the “Save Circuit to Icon Menu” command as shown below.

AutoCAD Electrical flips into its “Icon Menu Wizard” mode and jumps to the page dealing with saved “user circuits”.

4.  Right-click in an empty spot in the icon area of the dialog.
5.  Select “Add icon” à “New circuit…” which then pops up a “Create New Circuit” properties form for the new icon…

6. Fill in the form above. The first line is the text that you want to show up below the icon. Here we’ll just enter something like “DS and 3PH Motor”. Toggle the “Create PNG from current screen image” to capture the active drawing’s current state. This will become the actual icon graphics that show up in the button. Enter any file name in the middle and bottom edit boxes. Hit “OK”.

7.  With the icon defined, the final step is to select the components and wiring that are to be WBLOCKed out as this circuit along with the insertion base point.

That’s it. Now it’s ready for re-use…  at any time we can insert the previously saved circuit into the active drawing schematic.

We can use the Insert Wblocked Circuit command (shown in blue below) and browse to the saved circuit’s “.dwg” file, then pop it in and auto-connect to out active drawing’s wiring. Or, in our example since we used the “Save Circuit to Icon Menu” approach (shown in red below), we can pick on the new icon…

Inserting a saved circuit previously saved to an icon menu button reference

1.Select the “Insert Saved Circuit” button as shown in red below.

2.This immediately pops open the schematic icon menu and jumps to “User circuit” page.
3.Pick on the new circuit icon. Pop the circuit into position on the active drawing. There it is!
Note: If you can’t remember how to find the “Insert Saved Circuit” button on the ribbon, just select the Schematic icon menu. Pick “Miscellaneous” à “User Circuits”, and there it is… the new “DS and 3PH Motor” icon. Just pick on it at any time and pop in a copy of the saved circuit into the active drawing.
No matter which approach you use, the INSERT CIRCUIT command or the INSERT FROM ICON MENU command, the circuit pops in and…
1. Wires attempt to trim/reconnect to the drawing’s existing connections
2. Parent components attempt to re-tag appropriately
3. Child components that came in with the inserted circuit attempt to link to re-tagged parents that came in with the circuit

And there’s nothing stopping us from WBLOCKing out complete circuits, such as this 3-phase motor start/stop circuit. We can browse to the folder where we’ve WBLOCKed it or we pick it from the Icon menu if we’ve saved it with the “Save Circuit to Icon Menu” command… and pop it in. Component re-tag automatically, child contacts cross-reference, and wires re-connect.

Pretty cool… but actually there are some basic limitations… 


Which will lead to a future posting on the second, newer method. It made its appearance in ACE2009 and is called “Circuit Builder”.

The Circuit Builder tool comes preinstalled with an Excel data file to build and annotate a sampling of motor control circuits and power feed circuits. It includes three-phase, single-phase, and one-line circuit representations. Each circuit is built dynamically with the following features:

  • Connects to an adjacent power bus.
  • Adds wiring between components.
  • Annotates selected components with suggested values based upon the selected load.
  • Each time a circuit is configured, it is added to a history list of circuits. This list provides for quick re-insertion at a later time.
  • Driven from an editable Excel spreadsheet

 For the above, click on “Introduction to Circuit Builder” posted here.

Atoms-Family: tracking globals in AutoCAD Electrical

Filed under: Electrical — nateholt @ 11:03 am

No, not the 1960’s TV series… this is about a generic AutoLISP function. Use it to code-up a tool to monitor creation and modification of global variables as AutoCAD Electrical runs.

Disclaimer: this may or may not be useful information.

AutoCAD Electrical holds a lot of stuff in global variables as it does its thing. If you take a look at the source code for the Spreadsheet –> PLC I/O utility that Autodesk kindly ships with every copy of the product, you’ll notice quite a few variables with a prefix “GBL_wd_”. These are Lisp variables that hold data that is global to the overall AutoCAD Electrical application.

For example, there is the “WD_M” block that you’re probably familiar with. It has 70-80 attributes on it with key values that influence what and how things happen on the active drawing. AutoCAD Electrical reads this block and retrieves these attribute values one time and then saves the values as global variable called “GBL_wd_m”. Whenever you then ask AutoCAD Electrical to do some task on this drawing that requires it to retrieve a setting held on the WD_M block, it just grabs the value from the global variable GBL_wd_m instead of having to search the drawing for the WD_M block instance and then reading the appropriate attribute value off of it. Saves a lot of time.

There are lots of them and the names of these and lots of other stuff can be listed at any time with the simple Lisp expression (atoms-family 1) [Enter].

Here’s a tool that makes use of this atom-family call to track/monitor globals as AutoCAD Electrical runs …

Example Run

Starting up AutoCAD Electrical, we open up a drawing from the Project Manager. Then appload the above utility “GBL_TRACKER.LSP”. Type GBL_TRACKER [Enter] at the “Command:” prompt.

Now we pick an AutoCAD Electrical command, let’s say we try to SCOOT a wire. Then type GBL_TRACKER [Enter] again…

The circled global shows that the drawing’s valid wire type layer names are held in a global.

How might this be useful?

Let’s say that when we run  our SCOOT command and pick on a line that is on a layer that is not currently defined as a valid wire layer, then the SCOOT command aborts. For example, let’s say that we have drawn a cable “fan-in” and marked it with a cable marker. The “fan-in” part of the wire is on layer called “_MULTI_WIRE” which is not a valid wire layer. But we’d like to use SCOOT to adjust it.

From what our tool’s output tells us, it looks like valid wire layer names are held in a global variable. What if we try to temporarily add layer name “_MULTI_WIRE” to the global variable that holds the drawing’s valid wire layer names? Will SCOOT then “work” when we pick on a LINE that is on non-wire layer “_MULTI_WIRE” ? Let’s try it…

To add this to the global variable, we’d type or program this expression:

(setq GBL_wd_active_dwg_wiretype_cache_lst (cons "_MULTI_WIRE" GBL_wd_active_dwg_wiretype_cache_lst))

And now, when we try to SCOOT the non-wire and attached cable marker, SCOOT does not error out… but operates as if the non-wire line entity was actually a wire! Cool.

To restore normal SCOOT operation, just set the global to nil (and it will re-read the next time it is needed).

(setq GBL_wd_active_dwg_wiretype_cache_lst nil)  

UPDATE: forgot to mention this… you can view the contents of any global variable at any time. Just type the global variable name at the “Command:” prompt BUT precede the name with a ! character. For example, to display the value of the GBL_wd_m global, type this:

Command: !GBL_wd_m [enter]

February 12, 2011

Programmatically adding active dwg to active project – AutoCAD Electrical

Filed under: Electrical — nateholt @ 10:55 am

One line of Lisp code is all it takes for your custom application to add the active drawing to the current active AutoCAD Electrical project.

This question came up a couple days ago… “How can I program my custom application to take each drawing it creates and automatically add it to the current AutoCAD Electrical project?” You could do this the hard way by opening up the active project’s “.wdp” text file and add the full path to the new drawing to the end of that file.

But there’s a cleaner way that is used in the Spreadsheet –> PLC I/O utility to add each new PLC I/O drawing to the active project. This AutoCAD Electrical command is run from “full source code” mode and it is written in AutoLISP. So, maybe we can just take a look at this source code, find the right spot, and cut/paste a block of code into our custom application ( ! )

Finding the source file: wdio.lsp

Start AutoCAD Electrical. Type this at your AutoCAD command prompt:  

Command:  (findfile “wdio.lsp”)  [Enter]

It should return the full path to the PLC I/O utility’s source file. If this fails, try this one:  (c:ace_find_file “wdio.lsp” 3) [Enter]. Make backup copy of this file (just in case)

Open the “wdio.lsp” file

Use any ASCII text editor or type VLIDE [Enter] at the AutoCAD command prompt and use the built-in Visual Lisp editor.

Scroll down. The key part of the file that saves the active dwg to the current active project is excerpted below:

      (setq x (c:wd_is_cur_dwg_in_proj))
        ((> x 0)) ; this drawing is already listed in the project
        ((< x 0)) ; no project is marked as "active" ??
        ((= x 0) ; active dwg is not listed in active project, add it now.
          ; Call the normal AutoCAD Electrical "API" call for updating active drawing's title block
          ;    First sublist (of 13 elements, 1 for selected, 0 for not selected )
          ;    1st =  mapped to DWGDESC (the description under drawing "properties")
          ;    2nd = mapped to DWGSEC
          ;    3rd = mapped to DWGSUB
          ;    4th = mapped to FILENAME
          ;    5th = mapped to FILENAMEEXT
          ;    6th = mapped to FULLFILENAME
          ;    7th = mapped to DWGNAM
          ;    8th = mapped to SHEET
          ;    9th = mapped to SHEETMAX
          ;   10th =
          ;   11th = mapped to IEC_P (the drawing's IEC coding default for %P)
          ;   12th = mapped to IEC_I (the drawing's IEC coding default for %I)
          ;   13th = mapped to IEC_L (the drawing's IEC coding default for %L)
          (c:wd_tb_process_one 1 (list (list 1 1 1 1 1 1 1 1 0 0 1 1 1))) ; update title block
          (c:ace_add_dwg_to_project nil (list "" "" "" 1)) ; first "nil" = add active dwg
      ) )

The key command that pushes the active dwg into the active project is highlighted in red above. If you know that the active drawing is not in the active project, executing just this one-line AutoLISP expression should push the drawing into the project.

Note: here’s a quick test… just type at the command prompt and hit [Enter]…


Command: (c:ace_add_dwg_to_project nil (list “” “” “” 1))

Checking files for any marked in-use/read-only . . .




… and the drawing appears in the project manager of active project.



February 9, 2011

Extending AutoCAD Electrical to 4-pole Breaker/switch Dynamic Inserts (and beyond)

Filed under: Electrical — nateholt @ 11:12 am

The icon menu component insertion tool can be easily customized to extend quick pick and dynamic insertion of multi-pole devices of pole counts beyond AutoCAD Electrical’s 3-pole default.

Normally, to accommodate a circuit breaker of more than three poles, you pop in the 3-pole breaker from the stock icon menu pick and then manually add in to more single child breaker poles.

But let’s say that we routinely need to insert a 5-pole circuit breaker…

Would be nice to just hit a button…

Here’s a step-by-step sequence showing how to add a new button to the icon menu for a 5-pole circuit breaker.

Step 1 – Determine the parent and child symbol names needed to build the breaker.

Just insert a 3-pole breaker from the icon menu somewhere in space on the drawing.  Then use any block/attribute editing tool or the AutoCAD “LIST” command to get the block name of the top symbol (the parent)…

… and the block name used for the 2+ child poles.

Step 2 – Launch AutoCAD Electrical’s Icon Menu Wizard tool.

 Select “Schematic” and hit OK.

Step 3 – Drill down to the Circuit Breakers / Disconnects icon menu page. This is where we’ll add our new 5-pole CB icon.

Okay, here we are at the desired page… dealing with breakers and switches.

Fill in some data on the form for the new icon…

… the dialog below shows the standard commands available for the icon menu. Pick on the 3-pole parametric build option (even though we want 5 poles). Hit OK.

This brings us back to the previous dialog below but has filled in the “Command” edit box with command name WD_3UNIT. Here is where we trick AutoCAD Electrical to insert five poles (1 parent + 4 child symbols). Type in the parent symbol name (from step 1 above). Type in the child symbol name four times. Put a space between each symbol name as shown below.

Hit “OK” and “OK” to get all the way out of the Icon Menu Wizard tool.

Step 4 – Let’s try it! Hit the normal “Icon Menu” icon to insert components. Drill down to the Circuit Breaker page. There’s our new icon. Pick it.

Select and pop into the bus…

… and use the same icon to insert into vertical bus…

February 1, 2011

Circuit Builder (part 1 intro) – link to recorded Webcast of 16-Feb-2011 (16-02-2011)

Filed under: Electrical, Tutorials — nateholt @ 6:08 pm

Hour-long  webcast at 11am PST, 16-Feb-2011, covering 1) save/insert complete circuits, and 2) introduction to the Circuit Builder tool that is built into AutoCAD Electrical (2009 and greater).

Here is the link to the recording of this webcast.

January 31, 2011

Circuit Builder – switching from AWG to metric wire sizes – AutoCAD Electrical

Filed under: Electrical — nateholt @ 11:27 pm

How to define an alternate “electrical standard” to force Circuit Builder to default to metric wire sizes in its calculations.

Circuit Builder’s “Wire Size Lookup” dialog is a tool that can link into an “electrical standard” and guide you as you select motor size, motor power wire sizing, and appropriate ratings of the main disconnecting means – whether some type of breaker, fusible switch, or just fuses.

It can be launch from within Circuit Builder’s “Circuit Configuration” dialog as shown here:

The dialog opens and includes a number of different de-rating factors and settings. The results of the calculations default to AWG wire sizes. But one of the settings on the dialog can toggle calculations and display of metric wire sizes.

Let’s say you have a project that needs to use metric wire sizes rather than AWG. But you’d rather not have to remember to toggle to the “MM2” metric option every time the “Wire Size Lookup” dialog displays. You’d like it to default to metric wire sizes.

Setting up an alternate standard that defaults to metric wire sizes

Here’s how to create an alternate standard that parallels the default National Electrical Code settings for wire calculations but defaults to using metric wire sizes instead of AWG sizes. This avoids having to hit the AWG/MM2 toggle each time the dialog displays.

1. Launch the built-in Access database editing tool as shown below.

2. The Electrical Standards Database Editor dialog opens. Expand the “Default” and “NEC” tree nodes to show all table names. Find the table named “OPT_NEC”. Right click and Copy / Paste this table. Name the new copy “OPT_NEC-MM2” as shown below.

3.  Once you hit OK, the tree structure will update and add in the new “NEC-MM2” entry as shown below. Expand it to display the copied table OPT_NEC-MM2 and click on it to open. Edit the two “name” records highlighted in red. 

Here’s the key change. Edit the record marked with a CODE field value of “W_STD”. Change its DEFAULT field value from “AWG” to “MM2”. Hit “Save” and exit out of the database editor.


Open up any project. Right click on the project name in the AutoCAD Electrical Project Manager and select it.

Now run Circuit Builder and start to “Configure” a motor circuit. On the “Motor Setup” right at the front end, hit the “Select Motor” as shown below and make some motor selection. This sets in motion the queries into the select standard in the Electrical Standards Database file.

Select any motor size in dialog above and hit OK. Now cross your fingers and pop open the “Wire Size Lookup” dialog as shown below.

The dialog should display. Metric wire sizes instead of AWG sizes should now calculate and display. 

If there are other defaults you’d like to change, take a look in your new copied OPT_NEC-MM2 table and adjust.

Other Circuit Builder tutorials:

Tutorial – Introduction to the Circuit Builder Tool (Part 1)
Circuit Builder – Creating an Alternate Electrical Standards Setting
Circuit Builder – Leveraging AutoCAD’s “Group” Concept
Circuit Builder Configure Mode – Adding a “Pick from Icon Menu” Selection
Circuit Builder – Embedding Custom Calls in the Spreadsheet

January 30, 2011

Circuit Builder – Creating an alternate electrical standards setting – AutoCAD Electrical

Filed under: Electrical, Tutorials — nateholt @ 12:11 am

AutoCAD Electrical ships with Circuit Builder’s “electrical standards” for wire sizing and breaker/fuse/switch ratings set to parallel some of those outlined in the National Electrical Code. Here is how to alter the settings or create a selectable, alternate electrical standards selection.

Circuit Builder’s “Wire Size Lookup” dialog is a tool that can link into an “electrical standard” and guide you as you select motor size, motor power wire sizing, and appropriate ratings of the main disconnecting means – whether some type of breaker, fusible switch, or just fuses.

The motor power wire sizing has a number of different de-rating factors selectable from the dialog. One of them is the “Fill Correction:” selection. The motor wire ampacity is reduced in steps when there are more than three power conductors grouped in the same conduit, raceway, or cable. The de-rating steps increase with increasing ranges of grouped power conductors.

Enemy: Heat

Internally generated heat is enemy and heat is the issue here. We’re talking about the “I squared R losses”, the power that is dissipated in a wire conductor in the form of heating of the wire itself. The more current-carrying wires that are grouped together, the warmer all of the conductors will become as a group, further raising the resistance of the conductors and potentially exceeding the conductor’s insulation temperature rating.  

So, an electrical code may require that the maximum amps that a conductor can safely carry, when it is all by itself or with no more that two other conductors, needs to be de-rated to a factor of 0.8 of the original when there are between four and six conductors grouped together in a conduit, cable, or raceway. And, if the number of power conductors is seven to nine, the de-rating needs to be 0.7 of the original.

Default “FILL” table

The ranges for “FILL” de-rating are defined in a table found in Circuit Builder’s Electrical Standards database file. The default table is called “FILL” and is shown below using AutoCAD Electrical’s built-in standards database editor (you can also view it using a copy of Microsoft Access).

The default table above yields these de-rating ranges:

  • 1-3:        1.0 ( no de-rating)
  • 4-6:        0.8
  • 7-9:        0.7
  • 10-20:   0.5
  • 21-30:   0.45
  • 31-40:   0.4
  • >40:       0.35

Creating an alternate standard that has a modified FILL table

Let’s say that you have some projects that need to follow a slightly different range of conductor groupings and de-rating factors, perhaps something that is closer to the UL 508A standard. Let’s say that the  alternate fill table needs to be more like this:

  • 1-3:      1.0 (no de-rating)
  • 4-6:      0.8
  • 7-24    0.7
  • 25-42  0.6
  • >42      0.5

We could just modify the existing table, but it might be better to create an alternate “UL508A” standard in Circuit Builder’s Electrical Standards database file. Here’s how to create a second standard as part of the standards database file.

1. Launch the built-in Access database editing tool as shown below.

2. The Electrical Standards Database Editor dialog opens. Expand the “Default” and “NEC” tree nodes to show all table names. Find the table named “OPT_NEC”. Right click and Copy / Paste this table. Name the new copy “OPT_UL508A” as shown below.

3.  Once you hit OK, the tree structure will update and add in the new “UL508A” entry as shown below. Expand it to display the copied table OPT_UL508A and click on it to open. Edit the two records shown and hit “Save”.

4. Make a copy of the “FILL_NEC” table. Name it “FILL_UL508A”.


5. Open up the copied/renamed FILL_UL508A table. Edit as shown below to give the altered ranges for grouped conductor counts and de-rating correction factors to parallel what might be found in the UL 508A standard. “Save” and “Close”.



Open up any project. Right click on the project name in the AutoCAD Electrical Project Manager and select it.

Now run Circuit Builder and start to “Configure” a motor circuit. On the “Motor Setup” right at the front end, hit the “Select Motor” as shown below and make some motor selection. This sets in motion the queries into the select standard in the Electrical Standards Database file.

Select any motor size in dialog above.

Now launch the “Wire Size Lookup” dialog (shown below). This is where we find out if our test is going to be a success or a failure. Turn on the “Fill correction” option. Hit the pop-list as shown. See if the five UL 508A grouping categories show up instead of the seven that show up for the NEC selection. Make some selections and confirm that the fill correction factor to the right of the pop list tracks the UL 508A ranges correctly.

That should do it.

If there are other things that you want to adjust per this alternate standard, copy the tables from the NEC version, rename with the UL508A suffix (replace the “NEC” suffix with “UL508A”), open, edit, and save.

January 19, 2011

Importing Wire Types from a master schematic (Part 2) – AutoCAD Electrical

Filed under: Electrical — nateholt @ 11:14 am

New drawing automatic import and set-up of wire types pulled from a master schematic drawing.

This is an update of the previous posting here. Autodesk has added this as a stock feature to AutoCAD Electrical 2011 ( ! )

Let’s say you’re creating a new schematic drawing to add to an existing AutoCAD Electrical project. It is going to be similar in function to an existing drawing where you’ve set up a number of custom “wire types”. What you’d like to do is just pull all of those wire types over to your new drawing and get moving.

But, when you select the “Create/Edit Wire Type” command and the dialog below displays, you realize that you’re only getting the default “WIRES” wire type defined with this new drawing. You really want to pull in wire types that you’ve already taken the time and effort to define on the other drawings in your project.

But wait…! What is this new “Import…” button used for? Could it be…???

Yes! The mysterious new button in ACE2011 brings up a file browse dialog. Select a “master” drawing to provide wire type candidates for the new, active drawing.

Make the wire type selections and hit OK. And in they come (below)! Nice…

Again, this feature became available starting in AutoCAD Electrical 2011. For earlier versions, you can use the tool described in the earlier posting linked above.

January 2, 2011

2010 in review

Filed under: Electrical — nateholt @ 11:45 pm

The stats helper monkeys at mulled over how this blog did in 2010, and here’s a high level summary of its overall blog health:

Healthy blog!

The Blog-Health-o-Meter™ reads Wow.

Crunchy numbers

Featured image

About 3 million people visit the Taj Mahal every year. This blog was viewed about 57,000 times in 2010. If it were the Taj Mahal, it would take about 7 days for that many people to see it.

In 2010, there were 40 new posts, growing the total archive of this blog to 96 posts. There were 294 pictures uploaded, taking up a total of 39mb. That’s about 6 pictures per week.

The busiest day of the year was November 9th with 406 views. The most popular post that day was Index of AutoCAD Electrical Utilities – April 2006 through October 2010.

Where did they come from?

The top referring sites in 2010 were,,,, and

Some visitors came searching, mostly for nate holt, solar eclipse, solar eclipse from space, autocad electrical, and autocad electrical tutorial.

Attractions in 2010

These are the posts and pages that got the most views in 2010.


Index of AutoCAD Electrical Utilities – April 2006 through October 2010 July 2009


Tutorial – Automation of PLC I/O Drawings – AutoCAD Electrical February 2010


Tutorial – Basics of ‘Smart’ Panel Layout (Part 1) – AutoCAD Electrical June 2010
1 comment


PLC I/O Drawing Generator – Pre-defining wire numbers – AutoCAD Electrical November 2009


Tutorial: Basics of ‘Smart’ Panel Layout (Part 3) – AutoCAD Electrical June 2010

December 8, 2010

Tutorial – Automatic Wire Annotation from Schematic to W/D (Part 1) – AutoCAD Electrical

Filed under: Electrical, Tutorials — nateholt @ 2:48 pm

Annotation of panel wiring diagram representations with real-time schematic wire connection data.

Autodesk’s Nathan Eliason hosted a webcast earlier today that focused on AutoCAD Electrical’s ability automatically annotate panel layout or panel wiring diagram representations with real-time schematic wire connection data. I helped put the demo together and was responsible for real-time Q & A support while Nathan was “on stage”. 

Note: this posting is a summary of what Nathan covered in the first 30 minutes or so of his presentation.

A Quick Review

Let’s summarize what we saw in the first two or three panel-related tutorials back in June


Once the schematic creation phase is complete, AutoCAD Electrical extracts a list of schematic components for placement into panel layout drawings.  Users choose the panel location and a physical “footprint” representation of each device to be inserted into the layout and a “link” is automatically created between the device and its representation.  Any changes to the schematic or panel representation will update the other.  Non-schematic items like wire duct and mounting hardware can be added to the layout and automatically combined to create a “smart” panel bill-of-materials report.


Simplify panel layout drawing creation to reduce errors and ensure that all parts are placed, and drawings are automatically updated.

What do we mean by panel layout drawings being “smart”?  The layouts have a “smart” relationship with their control schematic counter-parts.

Consider this: The panel layout drawings are probably just one part of your overall electrical controls drawing package. The other very key part of the package is the electrical controls “schematic” drawings.

The electrical schematic drawings in your design define the interconnected wiring between control devices such as relays, pilot lights, switches, motor starters, I/O modules, and such. They might be drawn in a “ladder” format as shown here, or sideways ladders, or even drawn in more of a point-to-point interconnection style.

These schematics are actually quite “smart” all by themselves. With AutoCAD Electrical they can have automatically generated tag-IDs, child contact cross-referencing, automatic wire number assignments, various BOM reports, and on and on.

But, when panel layout drawings and associated schematics are combined in a single AutoCAD Electrical project, then the panel layouts get a big “Project IQ” boost from the presence of their schematics.

Item #5 is the one that is the main topic addressed in Nathan Eliason’s webcast 08-December-2010 and summarized below.

Schematic to Panel W/D Wire Connection Annotation

The panel layouts and the electrical controls schematics are tied  very closely together.  Let’s use one of the sample projects, “IECDEMO”, that installs with the product.

Here we have portions of three drawings shown below. There are two electrical schematics on the left and a small portion of a panel layout on the right.


The circled elements on the two schematics are related to the physical panel footprint symbol on the right.

Let’s use this simple example to show how the AutoCAD Electrical panel layout drawing on the right can be turned into a quick “wiring diagram”. What this wiring diagram will show is a listing, all in one place, of schematic wire connections that tie to this “-K14” motor starter.

Two things to check before we launch the wiring diagram annotation command. The first is this…

 1. Set the annotation format to include the pieces of information you want to see on your wiring diagrams.

This is set up as a project-wide default by selecting “Panel” –> “Configuration” on any drawing of the project. Here we’ve selected that we want wire number, destination component tag and pin number, and connected wire’s color/gauge layer name.

The second thing to check is the default text style and text size for the annotation. The command will default to whatever text style is set as “current” for the target panel layout drawing. Here we have text style “WD_IEC” and text height of 2.0 selected for our panel layout drawing.

 Now we’re ready to go.

Launch the “Wire Annotation” command as shown above. Select “Active drawing (all)” and hit OK.

You’ll see the annotation dialog pop up one more time. Confirm selections and hit OK.

In a few moments AutoCAD Electrical will have extracted the current state of the schematic wiring, sorted it all out, formatted it per your selection, and then pushed it out to each panel footprint symbol ( ! )


Now, the annotation comes in as an MTEXT entity located at the origin point of each footprint symbol (as shown above). You can move the MTEXT entity to a better position and it will then “hold” at that position when you re-run the command to freshen the connection data with edits made on the schematics.

Here we’ve repositioned the MTEXT annotation for the “-K14” motor starter.

Note that all the information on the portion of the schematic shown on the left-hand side of the screenshot has been automatically annotated on to the panel footprint representation… this includes the wire color/gauge layer names because we selected that option for the wire annotation format.

[Next blog posting… Part 2 – Creating and annotating separate wiring diagram layout drawings]

Other Panel-related tutorials:

Tutorial – Basics of ‘Smart’ Panel Layout (Part 1)  
Tutorial – Basics of ‘Smart’ Panel Layout (Part 2)  
Tutorial – Basics of ‘Smart’ Panel Layout (Part 3)
Tutorial – Mapping schematic components to panel layout – AutoCAD Electrical

Older Posts »

Create a free website or blog at