Skip navigation
All Places > TBC Macros and Extensions > Blog > 2020 > January

Greetings from the world of independent TML development!


While many of you have met us at the Power Users Group training events in Colorado or in-between TBC sessions at Dimensions, Revenant Solutions has yet to make itself known on the forums.


We believe that 2020 will be "The Year of the TML", and in that spirit, we'd like to break the ice, introduce ourselves, and get to the business of connecting with TBC users and other TML developers beyond face-to-face events.


So, per last year's potential TML development partner post by Alan Sharp (to be Alan Sharp at Rockpile), we've created a company profile post.


We look forward to getting to know you and your workflow needs, catching up on your posts, making some posts ourselves, and contributing to the online TBC and TML communities.


See you on the forums!


Quan Mueller

Sr. Software Engineer, CEO
Revenant Solutions LLC


(Edit: Fixed text and link formatting.)

Revenant Solutions LLC is an independent software developer based in Westminster, Colorado.
After developing Business Center - Heavy Construction Edition for 12 years, Revenant Solutions was formed in 2018 to provide software development services to the wider TBC community. Our mission is to connect users, developers, and dealers, and to enable and empower them to unlock the capabilities of the TBC platform.




Want us to build a TML defined and owned by you? Want us to jumpstart development on a Revenant TML you need now/soon?


As an established software developer contractor, we can make that happen. Since 2018, we have served multiple software clients, large and small, locally in Colorado and remotely. With templates for NDAs, contractor agreements, work orders, etc., we are ready to do business "corp-to-corp".


Email to get the conversation started.




TMLs are perfect for true agile software development - where developers and users work in short feedback loops to incrementally and iteratively create functional value.


But searching forum posts for updates and manually downloading/installing TMLs from zip files is well, clunky.


"Build first, share later (after release!)" That being said, we have plans for this space and will be back when we have something to show you…


In the meantime, keep sharing your TML requests in the forums - or email us directly at




We view all TBC and TML developers, from the Trimble TBC dev team to the beginner TML coder, as "coopetition".


While we are each competing to create better solutions, we all have the common goal of serving and growing the TBC user community.


Our service extends to the dev community too - so we'll be engaging in the TBC and TML forums, creating developer learning content, and sharing new extension capabilities that we add.


Revenant - a person who has returned…
Solution - a means of solving a problem


Working on the BC-HCE dev team, writing code in every tier of the platform, training other developers, and learning about the civil construction and geospatial industries, was a highlight of our development experience.


And we are pleased to return to the TBC community - but not quite the same as before - this time to offer a development service that only an independent developer can provide.


See you in the forums,


Quan Mueller

Founder & CEO, Sr. Software Engineer

This macro will compute the elevation difference between each point in a linestring and the computed elevation of a specified corridor. The elevation differences are used to create a polyline in the profile view of the corridors alignment. A vertical offset can be applied.


This macro is handy when doing pavement resurfacing. The computed lines would then show the difference between the surveyed location and the design elevation at each station. From there you can then easily see in the profile view where you have to make vertical adjustments. After adjusting the template or the vertical alignment, then delete the old computed lines and run the TML again.


Gary Lantaff

TML - Explode Lines

Posted by Gary Lantaff Jan 14, 2020

This macro will explode the selected lines into individual segments. Each segment can be converted into a new line or only break into new lines whenever the deflection angle between segments exceeds specified angle.


There is also an option to relayer the new linework based on where the exploded segment was in the original line. This option only applies if the original line was closed.


This is ideal for breaking up CAD and PDF cross-section data in preparation for conversion into 3D lines, which saves hours of painstaking work and makes selecting data easier and faster in the 3D View.


Gary Lantaff

TML - Increment Text

Posted by Gary Lantaff Jan 14, 2020
Use this macro for many things, including labeling cross-sections imported from PDF where the text in the PDF is absent (replaced with polylines that look like text, but are not text). Often PDF files have text drawn as polylines, rendering the text useless for station labels and grid labels (for offsets and elevations).

The TML allows you to specify the text style, layer, text height, etc. and then specify a start value and an increment (like
station 0 with an increment of 100), and then rapidly click all of the section zero offset line end points to place station text on the cross-sections which can then be used to convert them into stored cross-sections or 3D lines. The "Template Text" defines how the text is computed. Using just "{}" will convert the compute value to a string without any decimal precision. If you want to include more precision, specify the number of decimals inside the "{}" text. For example, "{2}" would format the computed value with 2 decimal places.
If you want the computed value to be formatted as a station, use "{s}" for the "Template Text". Any extra text in the "Template Text" will just be included in the result. For example, in the attached image, the "Template Text" included the "Sta " text.

This macro is kind of like simple feature coding. It creates lines by joining selected points where the feature code name is the same. The points are sorted by station from a reference alignment. If the station difference between points is larger than the "Max segment length", then a new line will be started (leaving a "gap").



This macro will move selected points so that they fall exactly on even stations (if the move distance is less than the specified station tolerance).

There is also an option to move selected points to a specified station (as long as current computed station is withen the "station tolerance" of specified station).


This can be handy if you import points that are expected to be at the same station but due to roundoff (or survey measurement accuracy), the stations are a bit "off". If you then use those points in a surface, the computed cross-section may contain extra nodes due to the way triangles are computed.


Gary Lantaff

TML - TrackLineEdge

Posted by Gary Lantaff Jan 14, 2020

This macro can be used to connect the outside edges of linework (as computed from the selected reference alignment). Each node in every selected line has its station and offset computed. The min and max offset values at each computed station is then used to create a linestring connecting the edges.


This is usually used to connect 3D cross-section linework in order to produce surface models.