Monday
AutoLISPAutoLISP.3: Expressions, variables and data types
All Autocad versions
An AutoLISP program is composed of series of expressions, one under another. Simplest type of an LISP expression is shown below.
(function arguments)
Each LISP expression starts with an opening parenthesis. This is followed by function and arguments related to it (parameters) and ends with a closing parenthesis. Each expression creates a return value which is to be used by another expression that includes that expression. Value of the last evaluated expression is returned to the expression which calls that last evaluated expression. For example:
(* 2 (+ 5 3))
16
First argument of the multiplication operation is number one. Second argument is the result of summation operation. Editor first evaluates the expression that is inside the inner most parentheses and the result value is returned as the second argument of the expression which includes the multiplication operation. If there are unclosed parentheses, you get the following result, not 16:
(* 2 (+ 5 3)
(_>
In such case; if you immediately close the parenthesis, the editor continues properly:
(* 2 (+ 5 3)
(_>)
16
AutoLISP Data Types
AutoLISP expressions function according to the sequence and attributes of data types inside the parentheses. In order to use AutoLISP with full functionality, you have to understand the data types very well.
Integer (Integer Numbers)
They are numbers that have no decimal parts. These 32 bit numbers are all integers between -2,147,483,647 and +2,147,483,648. If you enter an integer outside these limits, the editor will automatically change them into real numbers. However, for example, if the sum of two appropriate numbers exceeds the maximum limit in 32 bit system, the result will be invalid. For example:
(+ 2147483646 3)
-2147483647
Result will be negative integer.
Real (Real Numbers)
In AutoLISP, real numbers are numbers having floating point format and 14 digits of precision after “.”. AS an example for real numbers for AutoLISP editor can be 3.1 -5.4 0.0000013 21,000,000.0
String (array of characters)
They are combination of alphanumerical characters, i.e. “Word 1”, “ book”, “H&B” “?*_i” are valid strings for AutoLISP editor. \ character enables you to enter control character for AutoLISP strings. List of these control characters is shown below.
AutoLISP control characters:

Table.1 AutoLISP control characters in strings.
Lists
A sequence of values that is separated from each other with a space is called list. The best way of storing all together a lot of numbers that is related to each other, is using lists. For example, a point can be stored as (13.45 23.50 0.00) list. In future, we will share much more information about lists.
Selection Sets
It is a group of one or more AutoCAD entities. By using AutoLISP, you can add entities to selection sets or subtract from them.
Entity Name
Numerical labels given to drawing entities by AutoCAD is called an entity name. Entity names can be used to access the entities in the drawing database. There are numerous LISP routines to make changes on the selected entities. We will handle this subject in detail in our future lessons.
AutoLISP Variables
As it is in all programming languages, there are also variables in AutoLISP programming language. There is no need to define a variable in AutoLISP in the beginning. Variable is equalized as soon as it is assigned and it is created as the data type of the variable it is equalized. Let’s create some variables. For creating, defining and assigning of AutoLISP variables, one single function is used.
(setq name "John")
Above expression immediately creates a variable named as “name”, defined as string and value of “John” is assigned to it. As AutoLISP is an editor, all of the variables ( except the function arguments ) are recognizable by other global functions. So, as all of the AutoLISP variables are global variables, we must be careful while naming them.
(setq intNumberOfPoints 5)
(setq strName "Orhan" strSurName "Toker")
(setq ptStartingPoint (getpoint "\nPick a Point "))
In all of the example variables above, attention was paid for assigning names to them. Due to the fact that, variables types are not pre-defines and all of the variables are global, it will be good for you if you put prefixes in front of the names of the variables according to the data type of that variable.
Watching the value of a variable
If you want to learn the immediate value of a variable, you can do it though the console or command line. There is very small difference between them.
$_strName ;watching from console
"Orhan"
Command: !strName;watching from command line
"Orhan"
As you can see, it is enough for you to place “!” sign in front of the name of the variable, value of which you want to learn.
Pre-defined variables
There are 3 pre-defined variables, name of which we can’t use as variable name in AutoLISP.
PI Pi constant
T .True
PAUSE command pause
Forcing
Used to obtain the division of two integers as real numbers
(/ 12 5); without Forcing
2
(/ 12 5.0); with forcing
2.4
That’s all for this lesson. Good bye.
Technorati Tags: AutoCAD, AutoLISP, programming, expressions, variables, Daily AutoCAD
Viewed 11,260 times so far... This week: 80 Today: 3 Latest: 5 July 2009, 4:13Post Tags:
Related Posts
Popular
- Hip tip: Increasing view resolution with VIEWRES system variable
07/03/2009 04:39 am
7 Comments - Sirince – IZMIR
07/02/2009 11:02 am
1 Comment - Visual LISP: Programming user interfaces with OpenDCL
07/01/2009 10:15 pm
10 Comments - 3D Modeling 7: EXTRUDE
06/30/2009 02:14 pm
10 Comments - Ask DailyAutoCAD: Which Notebook to Buy?
06/30/2009 12:17 pm
1 Comment
Featured Articles
- AutoCAD 2009 Update 3 Released
- Speed Up As AutoCAD 2009 Ribbon Menu Helps You!
- MEP Analysis Extension for AutoCAD MEP extended to March 31, 2009
- Recap of AutoCAD-related technologies on Autodesk Labs
- Technology Preview of MEP Analysis Extension extended to 12/31/08
- Autodesk Labs: Forward and Backward utility for AutoCAD
|

Feb 23, 2007
Reply
thank you
merci beaucoup
Jul 19, 2007
Reply
Thanks,
can you point to the more advance use of variables I would like to pick from the screen a txt entity that is a real and make it the z value of a point I think that would be pretty neat
so basically if I ever get a dwg from a consultant where someone has zero’d all the points but miraculously has left the z value as a txt value – you see something like it on surveyors detail plans all the time – I could write a routine that would “use” the text height (Z piece of text) to create the z value for the point – simple but challenging for the likes of me
Jul 19, 2007
Reply
Dou you want to set text entities’ z value to 0 (zero) with an AutoLISP program?
Mar 28, 2008
Reply
Hi.. i am vijay from India. wel, i wanna know that how to calculate angle from the programme i.e AutoLisp.
Mar 30, 2008
Reply
We already have the article you want. Please see
http://www.dailyautocad.com/autocad/visuallisp-calculating-slope-between-two-points/
Jun 16, 2008
Reply
Dear sir,
As im new to Autolisp,i need some of the lisp programs for my daily use,will you please support me in this regard.
Regards.
B.Saradhi
Jul 23, 2008
Reply
is their any software program (autocad) or autodesk that compatible to touchsreen cellular phone
or that can be install to cellular phone.
Jul 23, 2008
Reply
office program like (excel ) are usefull to cellular phone cause its handy. programmer of autocad must create to install at cellular phone
thanks
Jul 26, 2008
Reply
Dear Sir,
How to put off the osnap trough autolisp programming?
Regards
Niranjan
Sep 16, 2008
Reply
hoe to prog of arc in autolisp while used in knuckle joint??????
Nov 20, 2008
Reply
Is it possible to export “handles” to an Excel sheet together width the x,y coördinates?
Because whe have a separate macro, who’s control the drawing.
And when he find something wrong, than he gives the “handles number”.
It is impossible for me to find out, where is the entitie with that number.
Thanks for the interrest, excuse me for my English.
Pieter
Nov 20, 2008
Reply
Hello Pieter,
I’ll forward your issue to Erhan. May be there is a way to extract handles.
Regards
Nov 22, 2008
Reply
Thanks forward!!
Pieter