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 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
Program | Version | Updated |
---|---|---|
2D Projection | 1.0 | 10-10-2014 |
3-Point Rectangle | 1.0 | 21-08-2014 |
ACADDOC.lsp Creator | 1.1 | 25-05-2011 |
Add Objects to Block | 1.1 | 31-05-2011 |
Add Polyline Vertex | 1.0 | 18-12-2012 |
Align Objects to Curve | 1.5 | 08-09-2019 |
Align Text | 1.4 | 16-01-2016 |
Align Text to Curve | 1.2 | 15-11-2013 |
Align Text to Curve (Auto Re-align) | 2.9 | 05-11-2010 |
Area Field to Attribute | 1.2 | 16-01-2016 |
Area Label | 1.9 | 30-10-2011 |
Areas to Field | 1.3 | 17-07-2014 |
Arrow Arc | 1.2 | 27-02-2016 |
Associative Centerlines | 1.0 | 14-05-2011 |
Associative Textbox | 1.2 | 01-05-2013 |
Attribute Colour | 1.0 | 25-02-2011 |
Attribute Modification Suite | 1.1 | 26-01-2011 |
Autoloader | 1.0 | 23-01-2011 |
Automatic Block Break | 1.8 | 09-10-2017 |
Automatically Label Attributes | 1.3 | 27-10-2018 |
Background Mask | 1.5 | 10-11-2018 |
Batch Attribute Editor | 1.4 | 02-08-2012 |
Batch Find & Replace Text | 2.0 | 22-07-2011 |
Block Counter | 1.5 | 07-06-2015 |
Bounding Box Reactor | 1.0 | 20-11-2010 |
Box Text | 1.2 | 22-02-2015 |
Burst Upgraded | 1.7 | 22-12-2018 |
Centered Measure | 1.0 | 01-07-2011 |
Centerline | 1.2 | 20-08-2013 |
Chain Length | 1.0 | 01-11-2015 |
Chain Selection | 1.0 | 18-12-2012 |
Change Block Base Point | 1.5 | 27-01-2014 |
Circle Break | 1.3 | 30-05-2013 |
Circle Tangents | 1.0 | 25-08-2014 |
Circular Wipeout | 1.2 | 09-10-2013 |
Copy Field | 1.1 | 13-06-2017 |
Copy or Rename Block Reference | 1.5 | 05-07-2013 |
Copy or Swap Text | 1.7 | 12-04-2017 |
Copy to Drawings | 1.3 | 21-03-2016 |
Copy to Layouts | 1.1 | 08-07-2013 |
Copy to XRef | 1.2 | 21-06-2014 |
Count Attribute Values | 1.0 | 24-02-2011 |
Cursor Rotate | 1.0 | 06-10-2015 |
Delete Blocks | 1.1 | 05-11-2016 |
Dimension Overlap | 1.2 | 25-04-2017 |
Double Extend | 1.0 | 03-05-2015 |
Double Offset | 1.1 | 05-11-2010 |
Draw Grid | 1.1 | 23-10-2011 |
Dynamic Attribute Width | 1.2 | 05-08-2014 |
Dynamic Block Counter | 1.1 | 27-11-2013 |
Dynamic Information Tool | 1.5 | 06-01-2011 |
Dynamic Offset | 2.1 | 05-11-2010 |
Dynamic Text Alignment | 1.6 | 06-11-2010 |
Elevation Marker | 1.1 | 08-12-2013 |
Ellipse to Arc | 1.1 | 14-03-2015 |
Extract Nested Block | 1.1 | 09-09-2013 |
Field Arithmetic | 1.2 | 29-10-2018 |
Field Formatting Code | 1.1 | 13-06-2017 |
Field Objects | 1.0 | 15-03-2015 |
Get Syntax | 1.0 | 23-01-2011 |
Global Attribute Extractor & Editor | 3.1 | 10-11-2010 |
Import Block | 1.2 | 16-06-2013 |
Incremental Array | 1.8 | 26-10-2016 |
Incremental Numbering Suite | 3.9 | 06-12-2015 |
Isometric Polygon | 1.0 | 05-10-2012 |
Justify Block Base Point | 1.1 | 08-09-2019 |
Label | 1.1 | 14-06-2012 |
Layer Director | 1.9 | 23-12-2018 |
Layer Draw Order | 1.2 | 20-06-2011 |
Layer Extractor | 1.4 | 28-04-2011 |
Layer Prefix/Suffix | 1.1 | 15-01-2017 |
Layers to Drawings | 1.0 | 24-11-2010 |
Layout Field | 1.0 | 29-12-2016 |
Length & Area Field | 1.3 | 04-11-2018 |
Length at Midpoint | 1.1 | 16-01-2016 |
Length Between Intersections | 1.4 | 02-05-2011 |
Length Field to Attribute | 1.0 | 18-03-2017 |
Limited Length Polyline | 1.0 | 23-06-2016 |
LISP Command Logger | 1.0 | 19-01-2012 |
Match Attributes | 1.0 | 18-11-2010 |
Match Field Formatting | 1.2 | 15-01-2018 |
Match Text Properties | 1.0 | 28-11-2010 |
Minimum Enclosing Circle | 1.1 | 16-11-2011 |
Modelspace to Paperspace | 1.0 | 16-02-2014 |
Multi-Polyline | 1.1 | 12-09-2015 |
Multiline Justification | 1.0 | 17-10-2018 |
Multilines to Polylines | 1.1 | 10-06-2012 |
Nested Block Counter | 1.5 | 02-02-2014 |
Nested Burst | 1.2 | 28-10-2018 |
Nested Move | 1.2 | 31-08-2013 |
Object Break | 1.0 | 02-06-2013 |
Object Lock | 1.0 | 15-05-2011 |
Offset Polyline Section | 1.1 | 29-10-2013 |
Outline Objects | 1.1 | 23-01-2016 |
Point Manager | 2.4 | 05-11-2010 |
Polyline Information | 1.3 | 13-04-2015 |
Polyline Outline | 1.1 | 05-09-2011 |
Polyline Outline (Advanced) | 1.1 | 28-11-2013 |
Polyline Programs | 1.0 | 25-04-2015 |
Polyline Taper | 1.1 | 11-03-2018 |
Quick Field | 1.3 | 10-04-2016 |
Quick Mirror | 1.0 | 15-02-2011 |
Reset XRef Layers | 1.2 | 13-04-2014 |
Script Writer | 1.2 | 05-11-2010 |
Segment Curve | 1.1 | 24-04-2016 |
Select all MText or MLeader Content on Double-Click | 1.1 | 10-01-2016 |
Selection Counter | 1.4 | 20-06-2016 |
Show Hatch Text | 1.0 | 14-11-2013 |
Slinky Text | 1.4 | 22-02-2012 |
Steal from Drawing | 1.8 | 18-09-2012 |
Strikethrough Text | 1.1 | 14-09-2014 |
Sum Attribute Values | 1.1 | 21-12-2015 |
TabSort | 2.2 | 17-05-2011 |
Text Calculator | 1.0 | 08-04-2011 |
Text Counter | 1.1 | 05-08-2011 |
Text to Words | 1.0 | 08-03-2013 |
Text2MText Upgraded | 2.0 | 06-11-2010 |
Total Length & Area Programs | 1.1 | 18-04-2013 |
Update Titleblock Attributes | 1.9 | 18-09-2016 |
Viewport Outline | 1.3 | 12-08-2019 |
Novelty Programs
Program | Version | Updated |
---|---|---|
Clock | 1.1 | 15-06-2013 |
Dynamic Angle Bisection | 1.0 | 15-11-2010 |
Lottery Numbers | 1.0 | 31-10-2012 |
Mastermind | 1.0 | 05-11-2010 |
Password Generator | 1.0 | 01-09-2013 |
Star | 1.2 | 21-08-2014 |
Tip of the Day | 1.1 | 02-02-2014 |
Mathematical Endeavours
Program | Version | Last Updated |
---|---|---|
Attractors | 1.1 | 24-12-2012 |
Fractals | 1.1 | 23-12-2011 |
Iterated Function Systems | 1.2 | 24-12-2011 |
Koch Snowflake | 1.0 | 24-12-2012 |
Logistic Map | 1.0 | 16-04-2011 |
Sierpinski Triangle | 1.0 | 08-03-2016 |
Subfunction Library
Program | Version | Updated |
---|---|---|
3-Point Circle & Arc Functions | 1.1 | 30-12-2017 |
5-Point Ellipse | 1.1 | 28-11-2013 |
ActiveSpace | 1.0 | 20-11-2010 |
Add & Remove Support File Search Paths | 1.5 | 27-11-2016 |
Apply to Block Objects | 1.1 | 18-07-2012 |
Assoc++ Functions | 1.0 | 30-09-2011 |
Attribute Functions | 1.1 | 14-09-2017 |
Base Conversion Functions | 1.0 | 26-05-2013 |
Bounding Box | 1.0 | 15-11-2010 |
Browse for Folder | 1.3 | 17-11-2013 |
Bulge Conversion Functions | 1.2 | 30-12-2017 |
Clockwise-p | 1.0 | 18-05-2011 |
Collection Functions | 1.1 | 11-03-2011 |
Colour Conversion Functions | 1.4 | 19-06-2014 |
Column Reference Functions | 1.1 | 07-06-2013 |
Consistent rtos | 1.0 | 16-06-2012 |
Convex Hull | 1.0 | 01-11-2011 |
Copy Block Definition | 1.1 | 16-06-2013 |
Copy Folder | 1.1 | 18-07-2012 |
Create Directory | 1.2 | 23-07-2013 |
DCL List Tile Dependency | 1.1 | 27-04-2019 |
Directory Files | 1.0 | 15-02-2015 |
Draw Order Functions | 1.2 | 09-02-2015 |
Drawing Version | 1.1 | 30-08-2018 |
Dynamic Block Functions | 1.2 | 19-08-2013 |
Edit Box | 1.0 | 27-07-2011 |
Effective Block Name | 1.0 | 14-02-2015 |
Entity to Point List | 1.1 | 08-03-2018 |
Escape Wildcards | 1.0 | 20-01-2012 |
Evaluate Once on Startup | 1.0 | 27-07-2014 |
Explore | 1.0 | 19-12-2010 |
Field Code | 1.1 | 13-06-2017 |
Field Objects | 1.0 | 15-02-2015 |
Find File | 1.0 | 20-04-2011 |
Flatten List | 1.0 | 08-11-2014 |
Get Anonymous References | 1.1 | 17-09-2015 |
Get Files Dialog | 1.6 | 21-03-2016 |
Get Layer Status | 1.0 | 12-11-2010 |
Get Syntax | 1.0 | 23-01-2011 |
Get True Content | 1.0 | 22-12-2010 |
Group List by Number | 1.0 | 19-09-2015 |
GrSnap | 1.0 | 21-08-2014 |
GrText | 1.1 | 28-03-2013 |
Insert Nth | 1.0 | 29-05-2011 |
Intersection Functions | 1.0 | 07-11-2016 |
List Box | 1.2 | 25-08-2013 |
List Box Functions | 1.1 | 22-07-2017 |
List Box with Filter | 1.1 | 05-11-2016 |
List Difference | 1.0 | 11-06-2011 |
List Intersection | 1.0 | 10-06-2011 |
List Symmetric Difference | 1.0 | 11-06-2011 |
List to String | 1.0 | 01-01-2011 |
List Union | 1.0 | 10-06-2011 |
Load Linetypes | 1.3 | 23-07-2019 |
Mathematical Functions | 1.0 | 31-01-2015 |
Matrix Transformation Functions | 1.0 | 27-05-2011 |
MD5 Cryptographic Hash Function | 1.1 | 27-03-2016 |
Minimum Bounding Box | 1.1 | 23-10-2013 |
Minimum Enclosing Circle | 1.0 | 11-11-2011 |
ObjectDBX Wrapper | 1.2 | 10-03-2018 |
Open | 1.0 | 29-12-2011 |
Ortho Point | 1.0 | 29-12-2011 |
Pad Between Strings | 1.0 | 21-09-2011 |
Parse Numbers | 1.0 | 13-06-2011 |
Permutations | 1.0 | 29-05-2011 |
Polygon Centroid | 1.1 | 16-10-2012 |
Popup | 1.1 | 12-10-2012 |
Random Number Functions | 1.0 | 05-03-2016 |
Read CSV | 1.3 | 22-05-2013 |
Release Object | 1.0 | 05-12-2010 |
Remove Items | 1.0 | 29-05-2011 |
Remove Nth | 1.0 | 09-06-2011 |
Remove Once | 1.0 | 09-06-2011 |
Rounding Functions | 1.1 | 28-08-2017 |
Select If | 1.0 | 17-05-2011 |
Selection Set Bounding Box | 1.2 | 04-01-2017 |
Selection Set to List | 1.0 | 05-12-2010 |
String Subst | 1.0 | 13-04-2011 |
String to List | 1.0 | 25-11-2010 |
String Wrap | 1.0 | 15-07-2011 |
Sublist | 1.0 | 28-06-2011 |
Subst Once | 1.0 | 09-06-2011 |
Subst Nth | 1.0 | 09-06-2011 |
Text Case Functions | 1.0 | 03-10-2011 |
UnFormat String | 1.1 | 30-12-2011 |
Unique & Duplicate List Functions | 1.1 | 28-01-2013 |
Write CSV | 1.1 | 22-05-2013 |
XRef Path Conversion | 1.0 | 17-04-2011 |
Utilities
Program | Version | Updated |
---|---|---|
Dump Object | 1.2 | 29-12-2018 |
Entity List | 1.0 | 29-10-2011 |
Format DCL | 1.0 | 18-02-2012 |
LISP Styler | 1.0 | 04-01-2011 |
Print List | 1.0 | 23-02-2014 |