Useful Autocad Lisp

AutoLISP is a programming language designed specifically for use with the full version of AutoCAD (i.e. It does not work with AutoCAD LT). AutoLISP is one of a number of Application Programming Interfaces (APIs) built into AutoCAD but it is probably the easiest to use and therefore the most productive for the beginner. AutoLISP is a dialect of the LISP programming language built specifically for use with the full version of AutoCAD. It is used to create programs to use in Autocad that are not built in with the software. Almost all manual commands you use can be automated to increase productivity, Lisp routines can do all sorts of weird and wonderful things.

Please feel free to be inspired, cut&paste or if you have any feedback, questions or looking for an AutoLISP programmer for small or large projects go here. If you want some customization or anything else that you can come up with that we might help you with you're welcome to contact us.

  • acad.lsp Instruction on the usage of acad.lsp
  • acaddoc.lsp Instruction on the usage of acaddoc.lsp
  • accdist.lsp Accumulate distances
  • AecExportToAutoCAD.lsp Read and write the settings that AecExportToAutoCAD and the like command uses
  • AECObjectsExplodeOptions.lsp Read and write the settings in the 'Explode AEC Objects' dialog box when using command _AecObjExplode
  • AreaM.lsp Calculates the total area of selected objects
  • areaOfObject.lsp Returns the area of selected object
  • AreaText.lsp Select a polyline and where to place the text for the area
  • AttDefToMText.lsp Convert Attribute definitions to MText
  • AttDefToText.lsp Convert Attribute definitions to Text
  • axBlock.LSP Generic block and attribute AutoLISP functions
  • axCreateVP.LSP Creation of viewports using AutoLISP
  • axInsert.lsp Example of inserting a block with ActiveX in modelspace
  • backgroundchanger.lsp Change the background color back and forth
  • BlockToXref.lsp Convert Blocks to Xrefs
  • BOMLengths.lsp Get the accumulated sum length of multiple objects
  • CAO_Link_Templates.lsp Create/delete Link Templates using CAO
  • ChangeNoPlottableLayers.LSP move all entities from layers that are not plottable to layer defpoints
  • dimlinechange.lsp Changes selected line on a dimension to current layer
  • DisplayColorProperties.lsp Miscellaneous commands related to Colors on the Display tab on the Options dialog
  • DisplayProperties.lsp Miscellaneous commands related to the Display tab on the Options dialog
  • DLF.lsp Delete AutoCAD layer filters
  • GetPlotDevices.lsp Generic plot setting functions to get plot styles and plotters available
  • getvpscale.lsp Get Viewport Scale in active viewport or in selected
  • Hatch_Move.lsp Moves the startpoint/snapbase for selected hatches base points independently
  • HATCHB.LSP Recreates hatch boundary by selecting a hatch
  • HatchBase.lsp Change the hatch base point on one or many hatches
  • historylines.lsp Change the number of command history lines
  • insrot.lsp 2 versions of Insert block with attribute rotated to specified angle
  • JTB_TitleBar.lsp Change the title bar of the AutoCAD application
  • layer-list.LSP Layer list to file
  • layer-lw-list.LSP Layer and lineweight list is created as a drawing
  • layers-erase.LSP Erase all layers that are frozen or off
  • layer-state.LSP List layers according to state
  • layer-toggle-freeze.lsp toggle the freeze state of layer and regens only the objects on the layer
  • LayoutsToDwgs.lsp Creates separate drawings of all layouts
  • lengthOfObject.lsp Returns the length or the perimeter of selected object
  • LengthText.lsp Select an object with a length and where to place the text for the length
  • linetype.LSP Load linetype and check for existence of specified linetype
  • mpt.lsp Midpoint of 2 or 3 points
  • mstxt.lsp Select multiple different objects (text, mtext, multileaders, dimensions, attributes) with text and edit them one at a time
  • osnapz reactor to change colors when osnapz changes
  • pagesetup.lsp Miscellaneous routines related to Page Setup
  • PersonalMtextSymbols.lsp Add personal mtext symbols in the right click menu in the mtext editor
  • pljoinfuzz.lsp Joins lines, arcs and polylines using a fuzz distance
  • PlotDevicesFunctions.lsp Miscellaneous Plot Devices Functions
  • plotdialog.lsp Force Plot dialog by lisp
  • profiles.lsp Miscellaneous profile commands
  • ProjectPaths.lsp Project path functions including export to file
  • Purge-Point.lsp Kills all POINT 5 vent-objects and V50-dictionaries
  • purger.lsp Various purge functions with no command line echo
  • PurgeReconciledLayers.LSP Purge all information about reconciled layers in the drawing
  • Purge unreferenced images in AutoCAD with AutoLISP - can be used to purge unreferenced images from a drawing and delete and detach all images that are not found
  • remicons.lsp Removes the icons Buzzsaw, RedSpark, Point A and FTP in Open dialog box
  • SOpen.lsp Open command that works for all cases independent on SDI
  • supportPaths.lsp Save and loads support paths to a text file
  • TextFunctions.lsp Change all text styles on all objects to named text style
  • TextHeight.lsp Text is resized based on the justification point
  • tsh0.lsp Set all text style's height to 0
  • txtRot.lsp Rotate selected text objects to specified angle
  • viewportcenter.LSP Get the viewport center coordinates
  • viewsIO.LSP Export and import views
  • VPlayers.lsp Save, load and restore frozen viewport layers from file and match from one viewport to another
  • vp-outline.LSP Creates a polyline in modelspace that has the outline of the selected viewport
  • vpsel.lsp Select all visible objects in selected or active paperspace viewport
  • XrefRename.lsp Rename xref and update path
  • XrefRepath.lsp Repath xrefs to use relative paths instead of absolute paths.
  • zoome.lsp Zoom extents in all viewports
  • Download acetutil.zip Documentation for the Express acet functions
  • wcmatch AutoCAD AutoLISP function
  • Some Free AutoLISP code by Mark Beggs

If you look for an app that can load AutoLISP files from your library take a look at our app JTB Lisp.

AutoLISP / Visual LISP

AutoLISP is based on the LISP programming language. Because AutoCAD has a built-in LISP interpreter, you can enter AutoLISP code at the command prompt or load AutoLISP code from external files. Visual LISP (VLISP) is a software tool designed to expedite AutoLISP program development. AutoLISP and Visual LISP is often used mutually but AutoLISP is only a subset of Visual LISP. Visual LISP was incorporated into AutoCAD 2000 released in March 1999, as a replacement for AutoLISP.

Visual LISP technology is a tool for code creation in the AutoCAD software application. It is a full-featured, interpretive programming language that you can use to call AutoCAD commands, system variables, and dialog boxes. Visual LISP offers a complete development environment, including

  • Reduced development time using the integrated development environment (IDE), which makes it easier and faster for users and developers alike to create, debug, and deliver AutoLISP-based applications
  • Access to Microsoft ActiveX objects and event reactors
  • Source code protection against theft and alteration
  • Operating system file-operation functions
  • LISP function extensions for list processing

In February 2018, BricsCAD V18.2 came with BLADE, the BricsCAD LISP Advanced Development Environment. See this blog post.

LISP is used by CAD applications like AutoCAD, BricsCAD, DraftSight, GstarCAD, CADopia, IntelliCAD, progeCAD and ZWCAD.

Miscellaneous tips and trix for AutoCAD AutoLISP

; AutoLISP function to convert degrees to radians
(defun dtr (a)
(* pi (/ a 180.0))
)
; AutoLISP function to convert radians to degrees
(defun rtd (r)
(* 180.0 (/ r pi))
)
; Example on how to remove the last element or item in a list
(setq lst '(1 2 3 4))
(setq lst (reverse (cdr (reverse lst))))
; result is (1 2 3)
; Example on how to right rotate a list 1 step
(setq lst '(1 2 3 4))
(setq lst (append (list (last lst)) (reverse (cdr (reverse lst)))))
; result is (4 1 2 3)
; Example on how to left rotate a list 1 step
(setq lst '(1 2 3 4))
(setq lst (append (cdr lst) (list (car lst))))
; result is (2 3 4 1)

Useful Autocad Lisp

Useful Autocad Lisp To Draw

Visual LISP example how to delete all empty layouts (tabs). If the layout has been activated it will contain a viewport object and will not be deleted by this function.

In previous version (= nil (ssget 'x' (list (cons 410 (vla-get-name layout))))) was used but did not catch layouts where the viewport object has been deleted. vla-get-count will return 0 for non activated layouts and 1 for a layout with no objects.

Purge layer filters / delete layer filters in AutoCAD. You get it here at my blog or here.

or another approach because the above one is not working in newer versions of AutoCAD:

Using VBA where QnewPath is the Template File Name: ThisDrawing.Application.Preferences.Files.QNewTemplateFile = QnewPath

Autocad Lisp Free Download

Using LISP: (vla-put-QNewTemplateFile (vla-Get-Files (vla-Get-Preferences (vlax-get-acad-object))) QnewPath)

General Programs

ProgramVersionUpdated
2D Projection1.010-10-2014
3-Point Rectangle1.021-08-2014
ACADDOC.lsp Creator1.125-05-2011
Add Objects to Block1.131-05-2011
Add Polyline Vertex1.018-12-2012
Align Objects to Curve1.508-09-2019
Align Text1.416-01-2016
Align Text to Curve1.215-11-2013
Align Text to Curve (Auto Re-align)2.905-11-2010
Area Field to Attribute1.216-01-2016
Area Label1.930-10-2011
Areas to Field1.317-07-2014
Arrow Arc1.227-02-2016
Associative Centerlines1.014-05-2011
Associative Textbox1.201-05-2013
Attribute Colour1.025-02-2011
Attribute Modification Suite1.126-01-2011
Autoloader1.023-01-2011
Automatic Block Break1.809-10-2017
Automatically Label Attributes1.327-10-2018
Background Mask1.510-11-2018
Batch Attribute Editor1.402-08-2012
Batch Find & Replace Text2.022-07-2011
Block Counter1.507-06-2015
Bounding Box Reactor1.020-11-2010
Box Text1.222-02-2015
Burst Upgraded1.722-12-2018
Centered Measure1.001-07-2011
Centerline1.220-08-2013
Chain Length1.001-11-2015
Chain Selection1.018-12-2012
Change Block Base Point1.527-01-2014
Circle Break1.330-05-2013
Circle Tangents1.025-08-2014
Circular Wipeout1.209-10-2013
Copy Field1.113-06-2017
Copy or Rename Block Reference1.505-07-2013
Copy or Swap Text1.712-04-2017
Copy to Drawings1.321-03-2016
Copy to Layouts1.108-07-2013
Copy to XRef1.221-06-2014
Count Attribute Values1.024-02-2011
Cursor Rotate1.006-10-2015
Delete Blocks1.105-11-2016
Dimension Overlap1.225-04-2017
Double Extend1.003-05-2015
Double Offset1.105-11-2010
Draw Grid1.123-10-2011
Dynamic Attribute Width1.205-08-2014
Dynamic Block Counter1.127-11-2013
Dynamic Information Tool1.506-01-2011
Dynamic Offset2.105-11-2010
Dynamic Text Alignment1.606-11-2010
Elevation Marker1.108-12-2013
Ellipse to Arc1.114-03-2015
Extract Nested Block1.109-09-2013
Field Arithmetic1.229-10-2018
Field Formatting Code1.113-06-2017
Field Objects1.015-03-2015
Get Syntax1.023-01-2011
Global Attribute Extractor & Editor3.110-11-2010
Import Block1.216-06-2013
Incremental Array1.826-10-2016
Incremental Numbering Suite3.906-12-2015
Isometric Polygon1.005-10-2012
Justify Block Base Point1.108-09-2019
Label1.114-06-2012
Layer Director1.923-12-2018
Layer Draw Order1.220-06-2011
Layer Extractor1.428-04-2011
Layer Prefix/Suffix1.115-01-2017
Layers to Drawings1.024-11-2010
Layout Field1.029-12-2016
Length & Area Field1.304-11-2018
Length at Midpoint1.116-01-2016
Length Between Intersections1.402-05-2011
Length Field to Attribute1.018-03-2017
Limited Length Polyline1.023-06-2016
LISP Command Logger1.019-01-2012
Match Attributes1.018-11-2010
Match Field Formatting1.215-01-2018
Match Text Properties1.028-11-2010
Minimum Enclosing Circle1.116-11-2011
Modelspace to Paperspace1.016-02-2014
Multi-Polyline1.112-09-2015
Multiline Justification1.017-10-2018
Multilines to Polylines1.110-06-2012
Nested Block Counter1.502-02-2014
Nested Burst1.228-10-2018
Nested Move1.231-08-2013
Object Break1.002-06-2013
Object Lock1.015-05-2011
Offset Polyline Section1.129-10-2013
Outline Objects1.123-01-2016
Point Manager2.405-11-2010
Polyline Information1.313-04-2015
Polyline Outline1.105-09-2011
Polyline Outline (Advanced)1.128-11-2013
Polyline Programs1.025-04-2015
Polyline Taper1.111-03-2018
Quick Field1.310-04-2016
Quick Mirror1.015-02-2011
Reset XRef Layers1.213-04-2014
Script Writer1.205-11-2010
Segment Curve1.124-04-2016
Select all MText or MLeader Content on Double-Click1.110-01-2016
Selection Counter1.420-06-2016
Show Hatch Text1.014-11-2013
Slinky Text1.422-02-2012
Steal from Drawing1.818-09-2012
Strikethrough Text1.114-09-2014
Sum Attribute Values1.121-12-2015
TabSort2.217-05-2011
Text Calculator1.008-04-2011
Text Counter1.105-08-2011
Text to Words1.008-03-2013
Text2MText Upgraded2.006-11-2010
Total Length & Area Programs1.118-04-2013
Update Titleblock Attributes1.918-09-2016
Viewport Outline1.312-08-2019
Helpful autocad lisp routines

Novelty Programs

ProgramVersionUpdated
Clock1.115-06-2013
Dynamic Angle Bisection1.015-11-2010
Lottery Numbers1.031-10-2012
Mastermind1.005-11-2010
Password Generator1.001-09-2013
Star1.221-08-2014
Tip of the Day1.102-02-2014

Mathematical Endeavours

ProgramVersionLast Updated
Attractors1.124-12-2012
Fractals1.123-12-2011
Iterated Function Systems1.224-12-2011
Koch Snowflake1.024-12-2012
Logistic Map1.016-04-2011
Sierpinski Triangle1.008-03-2016

Subfunction Library

Files
ProgramVersionUpdated
3-Point Circle & Arc Functions1.130-12-2017
5-Point Ellipse1.128-11-2013
ActiveSpace1.020-11-2010
Add & Remove Support File Search Paths1.527-11-2016
Apply to Block Objects1.118-07-2012
Assoc++ Functions1.030-09-2011
Attribute Functions1.114-09-2017
Base Conversion Functions1.026-05-2013
Bounding Box1.015-11-2010
Browse for Folder1.317-11-2013
Bulge Conversion Functions1.230-12-2017
Clockwise-p1.018-05-2011
Collection Functions1.111-03-2011
Colour Conversion Functions1.419-06-2014
Column Reference Functions1.107-06-2013
Consistent rtos1.016-06-2012
Convex Hull1.001-11-2011
Copy Block Definition1.116-06-2013
Copy Folder1.118-07-2012
Create Directory1.223-07-2013
DCL List Tile Dependency1.127-04-2019
Directory Files1.015-02-2015
Draw Order Functions1.209-02-2015
Drawing Version1.130-08-2018
Dynamic Block Functions1.219-08-2013
Edit Box1.027-07-2011
Effective Block Name1.014-02-2015
Entity to Point List1.108-03-2018
Escape Wildcards1.020-01-2012
Evaluate Once on Startup1.027-07-2014
Explore1.019-12-2010
Field Code1.113-06-2017
Field Objects1.015-02-2015
Find File1.020-04-2011
Flatten List1.008-11-2014
Get Anonymous References1.117-09-2015
Get Files Dialog1.621-03-2016
Get Layer Status1.012-11-2010
Get Syntax1.023-01-2011
Get True Content1.022-12-2010
Group List by Number1.019-09-2015
GrSnap1.021-08-2014
GrText1.128-03-2013
Insert Nth1.029-05-2011
Intersection Functions1.007-11-2016
List Box1.225-08-2013
List Box Functions1.122-07-2017
List Box with Filter1.105-11-2016
List Difference1.011-06-2011
List Intersection1.010-06-2011
List Symmetric Difference1.011-06-2011
List to String1.001-01-2011
List Union1.010-06-2011
Load Linetypes1.323-07-2019
Mathematical Functions1.031-01-2015
Matrix Transformation Functions1.027-05-2011
MD5 Cryptographic Hash Function1.127-03-2016
Minimum Bounding Box1.123-10-2013
Minimum Enclosing Circle1.011-11-2011
ObjectDBX Wrapper1.210-03-2018
Open1.029-12-2011
Ortho Point1.029-12-2011
Pad Between Strings1.021-09-2011
Parse Numbers1.013-06-2011
Permutations1.029-05-2011
Polygon Centroid1.116-10-2012
Popup1.112-10-2012
Random Number Functions1.005-03-2016
Read CSV1.322-05-2013
Release Object1.005-12-2010
Remove Items1.029-05-2011
Remove Nth1.009-06-2011
Remove Once1.009-06-2011
Rounding Functions1.128-08-2017
Select If1.017-05-2011
Selection Set Bounding Box1.204-01-2017
Selection Set to List1.005-12-2010
String Subst1.013-04-2011
String to List1.025-11-2010
String Wrap1.015-07-2011
Sublist1.028-06-2011
Subst Once1.009-06-2011
Subst Nth1.009-06-2011
Text Case Functions1.003-10-2011
UnFormat String1.130-12-2011
Unique & Duplicate List Functions1.128-01-2013
Write CSV1.122-05-2013
XRef Path Conversion1.017-04-2011

Utilities

ProgramVersionUpdated
Dump Object1.229-12-2018
Entity List1.029-10-2011
Format DCL1.018-02-2012
LISP Styler1.004-01-2011
Print List1.023-02-2014

Terms of Use