TURN.LSP Open Source Turning Path Tracker for AutoCAD

This site is the source for the HawsEDC Free Software (see license below) tools, including the vehicle turning/weaving simulation program, TURN.LSP/TURNPLUS.LSP. This site also has an AutoCAD drawing with turning templates for some AASHTO vehicles (see link below). I invite you to try out any of the tools here that interest you and to tell others if you find the tools valuable.

We receive frequent feedback, and all of it is valuable; please keep it coming. Many people find TURN.LSP extremely useful, while others have some difficulty. Stephen Hitchcox and I continue to work to address the concerns of all users, and we welcome assistance in any form.

WANTED!!! Standard (like AASHTO) vehicle blocks created using TURN's BuildVehicle. Please e-mail us so we can post a library of standard vehicles. Thanks.

The use of Free Software (see gnu.org) is governed by a strong copyright called "copylefting". You can't put it into a proprietary product. You may freely make money from it by service or sale. You may modify it. But you must always allow others to copy, modify, and distribute it, including your modifications.



When you need to model a vehicle weaving through a site, a roundabout, or another geometric feature, you need a vehicle tracking program like TURN.LSP. TURN.LSP follows the polyline front axle path of a turning/weaving vehicle, inserts a vehicle block along the theoretical tracking path, and draws a polyline representing the rear axle path of the vehicle in AutoCAD. TURN.LSP is theoretically precise when use to model the centerline of front-steered wide-axle vehicles with differentials (or two-wheel bicycle-type vehicles), and its tested results correlate very well to published AASHTO turning templates, even for articulated vehicles.

Since this version of TURN.LSP has no default vehicle information, it works equally well with any vehicle. Articulated vehicles require drawing a successive path for each vehicle segment.


At minimum, all TURN.LSP needs from you is a front left wheel path polyline and a BuildVehicle block. Try the following exercise.

First, draw a good, long, polyline representing a front wheel path. For good looks, begin and end the path with plenty of straight length. then (just for convenience and clarity, not necessity) offset the polyline the vehicle width to create the other wheel path.

Second, load and run TURN. TURN currently has two behavior methods or versions. They are presented to you as options User block method/Generated block method: The User Block method doesn't keep track of as many vehicle dimensions and paths. It merely drags your block along a path. It also doesn't model hitches at this time, which limits its accuracy for trailers. The Generated Vehicle method doesn't show the nuances of a vehicle as well. It merely draws rectangles along with multiple calculated wheel paths. While we hope to harmonize the two methods, they are currently rather independent. If you choose the Generated vehicle method, TURN will ask you for all of the parameters for your vehicle, and draw a unique attributed block. You can build a library of vehicles for future use. For any any group of multiple axles, use their "centroid" to model them as a single axle.

enter "N" for no trailer, but still give place holder data for the non-existent trailer. It will not be drawn.

The parameters are used to build a scale block of the vehicle you are defining, which is made into a block.

You can change the attributes in the block if you make a mistake, but the block itself does not change size (it is not dynamic).

If you make a new block with the same name as an existing one, it will overwrite the old one.

Draw the path for the vehicle as the route taken by the front left tire. A future version of this program might add path by centre or by right side of vehicle, to suit other driving standards.

Move the BuildVehicle block of your choice to the beginning of the polyline path.

Then, run TURN. When prompted, select the BuildVehicle block, and then select the front wheel path very near the starting end. Turn.lsp uses the dimensions of the vehicle block for calculations. Accept TURN.LSP's suggestions for a calculation step and plotting accuracy or enter your own.

Note: Place the vehicle at the start of the path using the centre of the FRONT LEFT WHEEL, which should be marked with an "x" type figure. Rotate the vehicle to the approximate correct starting angle.

Note: Select the LEFT WHEEL PATH (Drivers Side in most locations). The right side is drawn off of this. Note that there is no functional difference for the path of the vehicle based on where the driver is sitting.

Turn draws several POINT objects, then erases them and draws the path of the rear wheel, along with the tractor and trailer bodies, as well as all other tire paths.

If you are modeling an articulated vehicle, run TURN again by typing TURN, then select the newest turning path as the front axle path. the next axle back as the back axle (use your osnaps), and enter the block name of the next segment.

Notes about blocks:

For a proper vehicle block definition, the front points to 0 degrees and the insertion point is at the point that determines tracking. For a single segment vehicle or a front vehicle, the insertion point is the middle of the front axle. For subsequent segments, the insertion point is likely the hitch location.


Vehicle Width WB1 WB2 Min. Outside Radius Min. Inside Radius (check)
P (passenger) 7 11   24.0 13.8
SU (single truck) 8.5 20   42.0 27.8
BUS 8.5 25   42.0 24.4
WB-40 8.5 13 27 40.0 18.9
WB-50 8.5 20 30 45.0 19.2



Vehicle defaults might be added to TURN.LSP without much difficulty with enough interest or funding.


Date Programmer Revision
20110405 TGH 1.1.12 For CADDIT, changed variable name from "layer" to "layer-list".
20100504 TGH 1.1.11 For Bricscad, changed "endp" osnap to "end"
20090312 TGH 1.1.10 Turned trailer box from bowtie into box (Again?!? See v. 1.1.7)
20090226 TGH 1.1.9 Minor tweak to version reporting
20081112 TGH 1.1.8 Added layer settings functions to consolidate names in one place
20080522 SH 1.1.7 Revised layers to an identifiable set, using AIA type standard. Placed under C for Civil and using TURN as a reserve header. Also fixed trailer to draw as a box not a cross.
20080416 TGH 1.1.6 Added block plotting method with more modular code and defined data structure. Combined both methods into one routine
20080410 TGH 1.1.5 Simplified prompts, added layer defaults, and fixed a few errors.
20080206 SH 1.1.4 Fixed Imperial dimension storage, and made input consistent to type of data
20080120 SH 1.1.3 Various, including Centre of Wheels used instead of Outside of Wheels (vehicles steer on the centroids of the wheels, not the rims), "Set-out" point added at Front Left wheel
20070327 SH 1.1.2 Trailer plotting
20061213 TGH 1.1.1 Initial vehicle orientation from mandatory block selection instead of prompt.
20060324 SH 1.1.0 Added BUILDVEHICLE interface to allow overhang and sideswipe analysis.
20070122 TGH 1.0.4 Added block plotting. Made code more modular with defined data structure.
20061216 TGH 1.0.3 Replaced GETDISTX with originally written version.
20061213 TGH 1.0.2 Clarified prompts, changed pline reversal criteria, added undo group.
20020625 TGH 1.0.1 Added capability to follow reverse drawn polylines.
20020627 TGH Added GETDISTX function to distribution file.
20021025 TGH Replaced tracking equation with better algorithm. Removed plot point reduction algorithm.

To submit revisions, send an email with your revised code.


This program is free software under the terms of the GNU (GNU--acronym for Gnu's Not Unix--sounds like canoe) General Public License as published by the Free Software Foundation, version 2 of the License.

You can redistribute this software for any fee or no fee and/or modify it in any way, but it and ANY MODIFICATIONS OR DERIVATIONS continue to be governed by the license, which protects the perpetual availability of the software for free distribution and modification.

If you improve this software, make a revision submittal to the copyright owner. See www.hawsedc.com.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License on the World Wide Web for more details.

Home | Support | FreeSoftware | Engineering Services | Engineering Calculators | Technical Documents | Blog (new in 2009) | Personal essays | Collaborative Family Trees | Contact