The standard OFFSET command works on a whole object. When you only want to offset the middle stretch of a long polyline — to show a widening, a crossing, or a section of kerb build-out — you normally have to break the polyline, offset the fragment and then repair the original. PARTOFFSET does it without touching the source polyline at all.
What PartOffset does
Give an offset distance, pick the polyline, then pick two points along it bracketing the section you want. Two new polylines appear, one either side of that section. The original is left exactly as it was.
The distance is remembered between runs, so repeated use only needs Enter.
How to use it
- Load the routine with
APPLOAD, or put it on your support file search path. - Type
PARTOFFSET. - Give the offset distance, or press Enter to reuse the last one.
- Pick the polyline.
- Pick two points along it, bracketing the section to offset.
How it works
A temporary polyline is constructed representing just the selected section, then AutoCAD’s own offset is applied to it twice — once positive, once negative — and the temporary object is deleted. Using the real offset engine rather than computing parallel geometry by hand is what makes this handle arc segments and varying width correctly.
The intricate part is building that temporary polyline, because the picked points almost never land exactly on a vertex. Where a pick falls part way along a segment, that segment must be split — and both its width and its curvature have to be divided proportionally, or the offset section will not line up with the polyline it came from.
Width divides linearly. Curvature does not. Curvature is stored as a bulge, which is the tangent of a quarter of the arc’s included angle, so it has to be converted to an angle, split, and converted back. That is what the arctangent and tangent calls in the code are doing.
Getting that wrong is precisely the bug that version 1.1 of the original was published to fix — a split arc that looks nearly right and does not quite meet.
Notes and limits
- The original polyline is not modified. Two new polylines are created beside it.
- Arc segments and varying width are handled, because the real offset engine does the work.
- Pick points need not be on vertices. Segments are split proportionally where they fall.
- The distance persists between runs — press Enter to reuse it.
Download and details
| Name | PartOffset — offset only part of a polyline, to both sides at once |
| Download | PartOffset.lsp — 15.3 KB, plain AutoLISP source. Downloads directly; no zip to unpack. |
| Type | AutoCAD AutoLISP routine |
| Command | PARTOFFSET |
| Requires | the ActiveX layer (loaded automatically by the routine with vl-load-com). |
| Source size | 15.3 KB, 320 lines |
| Error handling | Yes — a *error* handler restores every system variable it changed, on cancel as well as on error. |
| Undo | The whole operation is wrapped in a single undo group, so one U reverses all of it. |
| Compatibility | AutoCAD (any release with AutoLISP), BricsCAD, ZWCAD, GstarCAD, ProgeCAD and other IntelliCAD-based platforms. AutoCAD LT needs a LISP enabler. No .NET, no ObjectARX, no installer. |
| Author | YZ, August 2026 |
| Licence | Free to use, supplied “as is” with no warranty. |
References
- TWINOFFSET LISP — offsetting to both sides of a whole object
- MLSHIFT LISP — changing which line a multiline is measured from
- VERTEXINJECT LISP — adding vertices to a polyline
- More free AutoLISP routines on this site
- Wisey’s Steel Shapes — free structural steel section drawing program