chapter 8 - autolisp by example: getting started
DESCRIPTION
AutoCAD: Secrets Every User Should Know. Chapter 8 - AutoLISP by Example: Getting Started. Key Topics. Entity Selection and Manipulation Constructing New Points String Conversion and Manipulation Debugging and Troubleshooting Techniques Annotating and Error-Trapping. Programming Tools. - PowerPoint PPT PresentationTRANSCRIPT
© 2006 Autodesk
AutoCAD: Secrets Every User Should Know
Chapter 8 - AutoLISP by Example: Getting Started
2© 2006 Autodesk
Key Topics
- Entity Selection and Manipulation
- Constructing New Points
- String Conversion and Manipulation
- Debugging and Troubleshooting Techniques
- Annotating and Error-Trapping
3© 2006 Autodesk
AutoLISP Based on LISP from 1950s Good User Language
Can use AutoCAD commands Can use AutoCAD variables
VLISP Added AutoCAD 200 Uses AutoCAD Commands
VBA and VB.NET
C++
Programming Tools
4© 2006 Autodesk
Writing Text Editor Visual LISP Editor NO Word Processors
Saving ASCII Text File .LSP extension ACADDOC.lsp Loads in Each Drawing ACAD.lsp Loads Only When AutoCAD Fires Up
Saving AutoLISP Programs
5© 2006 Autodesk
Three ways to load AutoLISP Type it at the command line
or copy/paste to the command line
Load a text file that contains AutoLISP code
(load “program.lsp”) APPLOAD Startup Suite
Use the load function of the Visual LISP editor
Loading Programs
6© 2006 Autodesk
Start Visual LISP Editor VLISP or VLIDE ToolsAutoLISPVisual
LISP Editor
Four Windows Text editor: type your program
(more than one can be open) Visual LISP console: type
variable names or pieces of code
Trace window: use while debugging
Build Output window: warnings and error messages
Visual LISP Editor
7© 2006 Autodesk
Visual LISP - Color Coding
Color Used for
Blue AutoLISP functions like /, DEFUN, and SETQ
Magenta Strings, which are always between quotation marks
Black User-created items, such as program variables and function names
Green Integer values
Teal Real numbers, which must have a decimal point
Maroon on gray Comments, which are preceded by a semicolon
8© 2006 Autodesk
VLISP Tools
9© 2006 Autodesk
AutoLISP by Example
Or format like this:
10© 2006 Autodesk
Program Structure
• Programs Contain AutoLISP Functions DEFUN, SETVAR, +, and -
• Function Name Is Preceded by an Opening Parenthesis (defun, or (command, or (+
• Balance Parentheses
• Separate Atoms with Spaces or Quotation Marks
• Functions Are Followed by Arguments, if They’re Necessary
11© 2006 Autodesk
Breaking Down the Code
(defun c:00() Defun is an AutoLISP expression
C: means “command” not drive
(setvar “osmode” 4143) Setvar is an AutoLISP expression
“osmode” is a system variable
4143 is a bit sum setting
) Closes opening parenthesis in line 1
12© 2006 Autodesk
Bit Sum 1, 2, 4, 8, 16, 32, 64, 128, etc.
Why 4143?
End, Mid, Cen, Nod, Int, and Ext as running osnaps
Type OSMODE at the command line
Returns 4143
1+2+4+8+32+4098 = 4143.
13© 2006 Autodesk
Building on the Basics
14© 2006 Autodesk
System Variables
Over 550 in AutoCAD 2007
Examples: APERTURE; AUPREC; LUPREC
Some saved in drawing, others in Registry
(getvar “aperture”) (setvar “aperture” 3)
Environment Variables – Operating System
Examples: “MaxHatch” "HideSystemPrinters"
Saved in Registry
(getenv “MaxHatch”) (setenv “MaxHatch” “100000000”)
Background - Variables
15© 2006 Autodesk
Program Variables
Defined by the programmer using SETQ
Global (defun C:MID ()
Retain their value when program terminates
Useful for debugging
Often Changed to Local
Can be used to create a persistent default value
Local (defun C:MID (/ os ap m)
Return to nil when program terminates
!variable at command line to get value
Background - Variables
16© 2006 Autodesk
SETQ
17© 2006 Autodesk
Deciphering the Code
18© 2006 Autodesk
Creating New Coordinates
Structural Lumber Symbol
Get Point1 and Point 2 from User
Create Point3 from X of Point 1 and Y of Point2
Create Point4 from X of Point 2 and Y of Point1
19© 2006 Autodesk
Creating New Coordinate Points - LIST
20© 2006 Autodesk
Creating New Points - POLAR
Dimension Between Walls
21© 2006 Autodesk
Creating New Points - POLAR
Polar pt Angle Distance
22© 2006 Autodesk
Calculations
23© 2006 Autodesk
Calculations - More
24© 2006 Autodesk
Calculations in Programs
25© 2006 Autodesk
Angles
Radians vs. Degrees
AutoLISP uses Radians
Radian: included angle of arc with length of 1
Degrees Radians
0 0
90 Pi/2
180 Pi
270 3pi/2
360 2pi
26© 2006 Autodesk
Angles
Radian Problems
27© 2006 Autodesk
Angles
Radians vs. Degrees Conversion Functions
28© 2006 Autodesk
Transparent Commands
Two Methods
‘I2M will work for many command functions
Call non-command functions as Lisp
29© 2006 Autodesk
Combining Programs
SSECT and RC
30© 2006 Autodesk
Ten Basic Rules
1. Save as ASCII.
2. Use Equal Number of Opening and Closing Parens.
3. DEFUN Means Define Function; C:ZX Is a Command.
4. Balance Quotation Marks.
5. Backslash Is a Control Character: \\ or / for Folders.
6. Leave Space After Forward Slash for Local Variables.
7. \n Controls New Line in Prompt and Is Lowercase.
8. Use Semicolons for Comments.
9. Get Values at Beginning; Use SETQ to Save Them.
10. Don't Get Discouraged!
31© 2006 Autodesk
Automatic Loading
APPLOAD Startup Suite
Any LSP program placed by user
ACAD.lsp
Loads when AutoCAD starts IF in the path
Loads in subsequent drawings IF ACADLSPASDOC=1
ACADDOC.lsp
Loads with each drawing IF in the path
(There are some others, but you probably don’t want to mess them up)
32© 2006 Autodesk
Automatic Loading
Startup Functions