TL Cogo Block

TL Cogo Block

Win64, English

Todor Latev
Recover lost Autodesk® Civil 3D® cogo points from static Autodesk® AutoCAD® block instances (exploded cogo points or custom blocks)

General Usage Instructions

This app does not rely on the presence of attribute data inside block definitions in order to determine the cogo point parameters. Instead, it recursively searches the AutoCAD blocks for objects containing text strings, such as DBText, MText and Attributes, extracts this information and assigns it to the various cogo point fields according to a format string specified by the user. It then recreates the cogo point Civil 3D object if all input conditions are met

Format string:
When cogo point objects are exploded some information such as which text object represents which element is lost.
The TLCogoBack command uses a format string to map the block text element to the corresponding cogo point element.

Start by examining the structure of the point block - the TLBlockList command is designed to expose the nested block text strings found in the point block. For best results, the order of those text elements needs to be consistent across all point blocks.
Decide what information you like to use during the conversion process and start building the format string.
As an example, suppose the output of the TLBlockList command indicates the presence of four mtext objects inside the block:
MText1: WM
MText2: 155
MText4: 511.548

In the example above the first text object is likely the point description, the second is the point number, the third is empty/unused, and the fourth looks like an elevation. Therefore, a sample format string to be used here could be "DP.H".
Supported codes are:
P -> point number
E -> point easting
N -> point northing
H -> point elevation
D -> point raw description
A -> point name

These are also listed inside the program each time the user picks the "FOrmat string" keyword in order to set the format string.
Any non-supported code/character can be used in the format string to skip a position/element. In the example above the dot char is used.
The format string is case sensitive. An upper case character in the format string will cause the cogo point generation operation to fail if for any reason that element is not assigned. In contrast, a lower case character will use the element if found, but will attempt to generate a cogo point even if it is not found. This is meant to address minor inconsistencies in the point blocks for non-critical elements. Start by using uppercase point codes and relax certain parameters by using a lower case code as required.

To proceed to generating the cogo points select your point block objects and press Enter. The app will process all blocks in the selection set and create the corresponding cogo points, outputting detailed information for each block as well as final stats at the end of the operation. Blocks which fail to generate a cogo point are added to a selection set for easy identification. To troubleshoot isolate the selection set and examine the blocks and the output from the app to determine the reason(s), adjust the format string accordingly and try processing them again.

Erase chars/Trim:
Let us look at the following example:

MText1: WM
MText2: 155
MText4: E: 5545.132m
MText5: N: 3653.522m
MText6: EL: 511.548m

Here the coordinate data strings contain additional characters, which cause the numerical conversion to fail. To work around this issue the app removes all characters defined in the "Erase chars" string from the input string before attempting numerical conversion (such as text, spaces and special characters).
The default value of this string is ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:[]{}=_()|\/? <>!@#$%^&*~`
You may need to alter the defaults in case your inputs contain non-English characters which need to be removed.

The Trim value is an on/off switch instructing the app whether to preprocess numerical inputs or not. The default is ON.

Note that cogo coordinate data (X, Y, Z) is extracted and initially assigned to the cogo point from the block insertion coordinates, but is later overwritten by easting, northing and elevation data from the block text elements if found in the format string.

The app multiplies all coordinate values by the scale factor specified here in order to let you transform coordinates from one system to another. For example, setting this scale factor value to 3.28084 will convert the cogo points to feet assuming the original data was in meters. Default value is one.



Ribbon/Toolbar Icon Command Command Description


Processes a block selection set and creates Civil 3D cogo points according to a format string specified by the user


Lists nested block definitions in order to help the user identify the order of text string data elements found in the block.


Activates the App with the Autodesk App Store. Active internet connection is required. Once activated the app can be used offline. This command is not available in the ribbon and needs to be manually typed in at the AutoCAD command prompt


The installer that ran when you downloaded this app/plug-in from Autodesk App Store will start installing the app/plug-in.

OR, simply double-click the downloaded installer to install the app/plugin. 

You may need to restart the Autodesk product to activate the app/plug-in. To uninstall this plug-in, exit the Autodesk product if you are currently running it, simply rerun the installer, and select the "Uninstall" button. OR, click Control Panel > Programs > Programs and Features (Windows 7/8.1/10/11) and uninstall as you would any other application from your system.

Once the installation is complete, start Civil 3D and login with your Autodesk® user id and password. Run the TLCogoBlockActivate command to activate the app. Once activated the app can be used offline.

Additional Information

Additional notes:
Attributes found in some blocks may have the "Visible" switch turned off, resulting in some blocks containing much more data than actually shown on screen. The app will process all attribute strings in the order found regardless of the state of the "Visible" switch. Use the TLBlockList command and account for all text strings in the format string parameter for best results. Consider the following example:

Attribute 1: tag: ELEV, attribute text: 3.27, visible: True
Attribute 2: tag: PNTS, attribute text: 20041, visible: True
Attribute 3: tag: CODE, attribute text: 39, visible: True
Attribute 4: tag: DESC, attribute text: pavement, visible: False
Attribute 5: tag: NOTE2, attribute text: , visible: False
Attribute 6: tag: ELEV2, attribute text: , visible: True
Attribute 7: tag: NOTE, attribute text: , visible: False
Attribute 8: tag: NAME, attribute text: , visible: True

Here the block contains two note strings as well as a desc string, which are turned off and may not be visible on the screen. The notes are of little use since they are empty but the desc field can be used to assign the point description field to "pavement" in this instance. Alternatively, the block contains a survey code value (39 in this case) which can be assigned to the description field instead if deemed more important.

Known Issues


Author/Company Information

Todor Latev

Support Information

For questions/comments/suggestions/bug reports etc please send an email to

Version History

Version Number Version Description


Added 2024 support (No change in version number).
Go top