The 3D Utility The new way to view your world!

Terms & Conditions

Note: 3D graphics powered by the jsc3d project under the terms of the MIT license.


“You see things; and you say, ‘Why?’  But I dream things that never were;  and I say, ‘Why not?’"  George Bernard Shaw (the Serpent  in Back To Methuselah)

Design in 3D is not only a new paradigm, but it also requires a new set of  software tools. Here is a collection of AutoLisp and VBA routines to assist the avid 3D developer. In downloading these apps, you agree with all of the Terms and Conditions presented herein and accept full liability and responsibility for their use. It is strongly recommended that you thoroughly review and test them and understand their operation before use.


To run VBA within AutoCad, you must first install the Microsoft Visual Basic for Applications Module by clicking here and following the instructions. In addition, a reference to the Excel Object Library must be added to the VBAIDE. Simply click Tools, then References, and scroll down and click Microsoft Excel XX.X Object Library.


I have also included a few of my favorite programs that you might find useful.



Bill of Materials (BOM)[Get the Sofware] [View Sample]


An essential part of the overall design is the ability to generate a detailed Bill of Materials. Sample BOMThis not only assures an accurate estimate of the cost of the installation but also a check against the material supplier. With a 2D design, this involved a tedious count of materials based upon the plan and elevation views. The probability of not getting a 100% accurate count is practically assured.


A major advantage of 3D design is that ALL materials will be included in the basic drawing. This makes the solution amenable to an automated solution. BOM creates a Bill of Material for the following and outputs the results to an Excel worksheet:

  1. All relevant blocks. These include all blocks from the hardware utility boxes and does not include blocks such as titleblock or ad hoc blocks.
  2. All footings nested one level deep within Structure and Major Equipment blocks. The _Ftg blocks are 1X1 blocks that are scaled in the X and Y ScaleFactors to represent the estimated size of the footing.
  3. Total lengths of all lines, polylines, arcs and splines on the Bus layers by bus type. For the BOM program to correctly determine the bus lengths, the bus path must be drawn on a layer named XBusxxxxx where xxxxx represents the bus size and type. For instance, for a 2” Aluminum bus, the layer should be named XBus2Al. If you wish to change this standard format, you will need to make the appropriate changes to BOM and other programs that rely on this format.



Bus & Jumper Routines [Get the Software]


To depict round bus and conductor in 3D, you need to display them as a round 3D object. You might first think that a wide Pline would work; however, the width is only in the XY plane and, when seen on edge, becomes a thin line. There are a number of ways to give 2D objects a third dimension. Common commands for closed 2D geometrical objects are Extrude (which adds a thickness to the 2D object) and Loft (which adds thickness and intersects two or more cross sections). For round bus, the preferred command is the Sweep command. A path, 2D or 3D, is created using Lines, Arcs, Polylines, Ellipses and Splines. The Sweep is effected by creating a circle of the desired diameter and “sweeping” it along the path. This process can be very tedious.


The following are several Autolisp routines that can assist with this process. They all use a common function, makebus, that executes the Sweep command. Within this routine are two defined list - bdlist and odlist. For these routines to work properly, the bus path must be constructed on a layer named XBusxxxxx where xxxxx is the bus description that is contained in bdlist. For example, 2” Aluminum bus is drawn on the layer XBus2Al. When the routine is run, it looks at the layer the path lies on, extracts the xxxxx portion and looks for it in the bdlist. If it is found, the index of the bus is used to lookup the diameter of the bus in the odlist. This diameter is used to draw the circle used by the subsequent Sweep command. You can add any bus or wire description in the bdlist as long as you add a corresponding diameter in the odlist.


You can change this bus layer format, but see the caveat in the BOM routine.


Bus - This routine will sweep the selected path(s) with a circle having the diameter based on the layer name. It recognizes both XBusxxx (bus) and XCndxxx (conduit) layers.


Riser - This routine will construct a vertical connecting bus between two busses at different elevations. This is a vertical riser, hence the name.


Jmpr - This routine will create a Jumper between two points (typically cable terminations on a switch, breaker, etc.)


Jmpr2 - This routine creates two jumpers at right angles.  A typical application would connect a switch to a pipe bus at a different elevation.


Jmpr15 - Creates two risers for a 15° a-frame connector.


JmprX - When all else fails, this will create a jumper through multiple points without concern for the UCS. It will connect the line segments with fillets, then sweep it with the appropriate diameter. Especially handy where you can connect node points.


LTP - LTP (line through point) draws a line from a point through a second point with a designated length.  This can be handy with multiple connectors non of which are oriented in the same plane.  They can then be connected using Jmpr2.



Block Manipulation [Get the Software]


The following programs manipulate blocks in various manners.


Blkupd - Updates definition of block reference from a file. This is used to update all blocks within the drawing after the file has been changed. It is equivalent to Insert from file with Redefine Block. Current block naming will be retained.


Blkrep - Replaces original blocks with a new block. The original block is deleted and the new block inserted at the same location and angle. The replacement blocks will have the new block name. This will not affect other blocks with the same name as the original block. The new block must already exist in the drawing. If not, it must first be inserted for reference.


Blkrot - Rotates multiple blocks about their respective insertion points.



Sag and Pole [Get the Software]


Sag - In the October, 1990, edition of Cadence Magazine, Robert Zipprich presented an Sag ProfileAutoLisp program for drawing a catenary curve. It was immediately evident that this program filled a gaping hole in the electric utility application. The program presented here has been adapted to make the input more functional. The required input data is:


Horizontal scale - For simplification, this asks for scale; however, you could enter 1. Typically, profile drawings drawn at a 10 to 1 ration of horizontal to vertical scale (e.g. 200’ horizontal and 20’ vertical or 400’ horizontal and 40’ vertical). In some instances, I have seen a 5 to 1 ratio where the plan view was drawn at 1”=100’ which dictated the horizontal scale for the profile. The corresponding vertical scale for the profile was chosen to be 1”=20’ to avoid running off the top of the drawing sheet.


Vertical scale - Again you could enter the actual scale of the output drawing or you could enter the ratio of horizontal to vertical scale. If you input 200 for the horizontal scale, youSag Chart should enter 20 for the vertical (assuming a 10:1 ratio). If you enter 1 for the horizontal scale, enter 0.1 for the vertical.


K value - Also called the P value, this is the ratio of the horizontal tension to the weight per foot of the conductor under the specified loading conditions. This information is generally obtained for the sag and tension data either provided by the conductor manufacturer or from programs such as Alcoa’s Sag10. Referring to the typical data at the right, for Final loading at 120°F, K = 881 / 0.597 = 1476. If you are interested in Initial loading with ice, K = 4000 / 1.911 = 2093. It should be noted that the sag is independent of all other factors except K. For two entirely different conductors with differing loading conditions, their sag will be the same if the K factor is the same!


Output - The profile output includes the span distance, the distance left of the conductor low point and the distance to the right of the low point.  This provides information for calculating the wind and weight spans for structural considerations.


Pole - The Pole program creates poles on the profile drawing to simplify the conductor sag/design process. It inserts a pline at the designated location with the specified height of the pole less a setting depth that is 10% of the pole height plus two feet. The input data is:


Conductor spacing - When the program is initiated, the user is prompted to enter the distance from the top of the pole to each conductor attachment point, one value per line terminated by a nil entry. Upon re-entry to the program, the previous values are displayed and the user is given the option to retain them or enter new values.  The only way to change the spacing is to terminate and re-enter the program.


Horizontal/Vertical Scale Ratio - The default value is 0.10 and is changeable by the user. The user is only prompted for this value when entering the program.


Pole height - The program loops through this section of the program continuing to prompt the user for pole height until the program is terminated. The last pole height entered is repeated until it is changed. It is retained when the user re-enters the program.


The user should remember that the spotting of poles and determination of conductor clearance is only a portion of the overall design process.  The designer should also consider all NESC requirements for mechanical and electrical design.



Substation Design Data - An Excel file that includes the following substation design information: [Download spreadsheet] [View Sample]








Pole Line Design - An Excel file to assist in the mechanical design for a pole line. [Download Spreadsheet] [View Sample] The following calculations are made:






The calculations include provisions for single and double transmission circuits and single and double distribution circuits. Wire data is included for a large selection of AA and ACSR conductors and steel strand.

Links to other resources:








Software Toolbox