Introduction
CADKEY LISP is a full-featured LISP programming interface to CADKEY. The
LISP language offers features that qualify it to serve as a CAD programming
language. The extensive CADKEY LISP function set can run AutoLISP*
programs with minimal changes. The product includes an application
development environment, a LISP interpreter, and a command line interface
dialog.
A Few Features
There are approximately 150 CADKEY LISP functions which provide direct
access to the CADKEY database and graphics engine. You can directly
access, utilize, modify, and rewrite entities within CADKEY LISP. You can
access external data via CADKEY LISP to include in a part file. You can
create bill of materials files by reading the CADKEY database and writing the
appropriate information to output files.
CADKEY LISP is a LISP interpreter that was modeled after existing LISP
implementations in the CAD industry to facilitate the execution of existing
applications written for different CAD systems. A wide variety of LISP
programming books exist which provide detailed information on this powerful
language. Every attempt has been made to maintain the previously defined
standards; however, some differences do exist. These differences are detailed
in a section titled "CADKEY LISP and AutoLISP Differences".
CADKEY LISP comes with ADE, an application development environment.
ADE, which is a text editor complete with multiple windows, dialog boxes,
and mouse support, assists in developing applications using CADKEY LISP.
Additionally, CADKEY LISP ADE has a complete On-line Help system. See the
section titled "Application Development Environment" for further details.
The multiple commands of CADKEY LISP provide functionality for creating,
modifying, and manipulating geometry and data. These commands are
detailed in the section titled "CADKEY LISP Commands."
Data Types
CADKEY LISP has eight different data types:
entity names
file handles
integers
lists
points
real numbers
selection sets
strings
The following is a brief description and example of each data type.
Entity Names
Entity names (ename) are a special CADKEY LISP data type that references
entities (lines, arcs, circles, etc.). Entity names are returned by functions
such as entget, entsel and entnext and are used by all functions when
referencing entities. Entity names are unique variable types.
Example:
(#10 0)
File Handles
File handles (handle) are used to reference any input to or output from a
specified file and are returned from the open function. File handles are not
supported in AutoLISP. File Handles are unique variable types.
Example:
#
Integers
CADKEY LISP integers are whole numbers, any numeric value that is not a
floating-point number.
Example:
1, 5, 998332239
Lists
Lists are the primary method of data storage in CADKEY LISP. Lists are
heavily used for retrieving and making entities.
Example:
(A B C)
Points
Points are lists of three real numbers. The first element in a point list is the
x-coordinate, the second is the y-coordinate, and the third is the z-
coordinate.
Example:
(1.53 3.66 8.22)
Real Numbers
CADKEY LISP real numbers are floating-point numbers, numbers that
include a decimal.
Example:
1.5, 5.3, 99933939.88733
Selection Sets
Selection sets can group a series of entities. Selection sets are unique
variable types. They are used by functions such as ssget, etc. Selection sets
can be of infinite length but only 256 sets are available.
Example:
#(1 -1)
Strings
Strings are text or characters. They are always enclosed within double
quotation marks.
Example:
"Hello", "Enter radius:"
CADKEY LISP and AutoLISP Differences
CADKEY LISP, which is based on the host CADKEY graphics engine, has
inherent differences from AutoLISP which is based on the host AutoCAD
graphics engine. The two CAD systems, CADKEY and AutoCAD, have enough
similarities to allow for implementation of CADKEY LISP.
The list of differences is quite extensive. For example, AutoCAD defines
dimensions as "blocks" whereas CADKEY has no blocks. AutoCAD utilizes
layers whereas CADKEY utilizes levels. CADKEY LISP replicates the behavior
and structure of AutoLISP as closely as possible. The following lists items
that differ between CADKEY LISP and AutoLISP.
Auto-loading of CADKEY LISP programs
CADKEY LISP supports the automatic loading of programs much like
acad.lsp. The file name for automatic loading in CADKEY LISP is ckinit.lsp.
Entity Names
In AutoLISP AutoCAD entity names are hexadecimal values.
In CADKEY LISP entity names are represented by a special data type that
reflects the CADKEY entity id. When the entity is a complex entity, the
second value in the ename reflects a vertex counter.
DXF Group Codes
Due to the differences between the AutoCAD database and the CADKEY
database, the DXF group codes and entity codes are not always the same.
Where ever possible, the codes map directly from one system to another. See
the Entity Tables for a complete itemization and definition of each entity.
Evaluating Function Source
In AutoLISP, when using the eval function to return the "code" of a function
as in (eval a) (setq a (defun b (/) (princ "Hello"))), it returns: (defun b (/) (princ
"Hello")).
In CADKEY LISP the eval function does not return the "code" of a function.
Entity Handles
Entity handles are directly mapped to the entity number in CADKEY and
remain constant between editing sessions.
entmake - Auto Creation of Layers
CADKEY LISP does not automatically create a new layer when a new layer
name is given to entmake, although AutoLISP does.
Unsupported Functions
CADKEY LISP does not support the following AutoLISP functions:
cvunit
draggen
handent
menucmd
nentsel
nentselp
osnap
tablet
tblsearch
tblnext
trans
vports
xformss
initget
Unlike AutoCAD, which allows the user to press when using the getx
functions with initget, disallowing null (1) has precedence over arbitrary
input.
For example, passing initget a "bit" argument of 129 (disallow null and allow
arbitrary input) and subsequently calling a getx function disallows the user
from pressing at the prompt.
initget and Dashed Lines
During use of initget, to restrict certain types of input with subsequent calls
to getx functions in AutoCAD, a bit value of 32 uses a dashed line for
drawing rubberband lines or boxes. CADKEY LISP does not support the
dashed line option.
grdraw
Although CADKEY LISP supports the grdraw function, it does not support
dashed lines.
command
Unlike AutoLISP, CADKEY LISP allows the execution of CADKEY LISP
functions within the command function.
For example: (command "line" (getpoint) (getpoint) "") is permissible in
CADKEY LISP.
ssfree
CADKEY LISP supports the ssfree function which is not implemented in
AutoLISP. ssfree releases unneeded selection sets.
ssget
ssget in CADKEY LISP does not support the following options: I, WP, CP and
F.
tan
Unlike AutoLISP, CADKEY LISP supports tan.
trace
AutoLISP returns only the function name.
CADKEY LISP returns the entire list of functions being "traced".
findfile
The findfile function in CADKEY LISP searches the following directories:
Current working directory (ex: c:\cadkey)
Part file directory (ex: c:\cadkey\prt)
CADKEY environmental variable. (ex: set CADKEY=C:\foo)
DOS path variable.
Unlike AutoLISP, CADKEY LISP does not search the program directory.
Right Mouse Button
In AutoCAD, pressing the right mouse button is the equivalent of pressing
.
Run the CADKEY Configuration program and set the right mouse button to
.
Selecting an Intersection Using int
In AutoCAD, the int function allows the selection of two entities.
In CADKEY LISP, the int function allows only one point, when you select the
intersection of two lines.
Colors
The first eight colors (0 - 7) are mapped from AutoCAD colors to CADKEY
colors. The remainder of the colors are defined as native CADKEY colors.
Transparent Commands
CADKEY LISP does not support transparent commands, which are AutoCAD
commands that allow you to suspend execution of a currently running
command to execute another and then return to the first. For example: zoom
or pan.
Selecting a Circle Midpoint
The selection of the midpoint of a circle is permissible in CADKEY LISP.
When you select the midpoint of a circle, the point returned is half way
around the circumference (1 pi).
This function is not available in AutoLISP.
Ghost Tangets
When you draw a line and select an arc or circle as the tangent first point
and subsequently select the second point in AutoCAD, AutoCAD waits for
you to enter the second point before drawing the line. CADKEY LISP does not
support the ghost tangent feature.
zoom
CADKEY LISP does not support zoom dynamic or zoom vmax.
undo
CADKEY LISP does not support undo.
POLYLINES
Since CADKEY handles polylines differently from AutoCAD, CADKEY LISP
cannot support all the features inherent in AutoCAD polylines.
Some of the major differences are:
o Polylines (created by entmake) cannot have arcs.
o Half widths are not supported.
o Polyline vertices do not have a midpoint.
o The perp osnap modifier is not supported on polylines; CADKEY LISP will
return the error message, Invalid entity for perp osnap.
o Starting and ending widths of a polyline must be the same in CADKEY.
o Valid CADKEY polyline widths are odd numbers between 0 and 15.
o Polyline widths are measured in pixels.
o Arcs in polylines are considered separate entities.
alert
Like AutoCAD for DOS, the alert function does not expand tabs in the input
string. AutoCAD for Windows does, however, expand tabs.
textbox
Unlike AutoCAD, CADKEY does not return descender information for
characters such as g, p, etc. Thus, the textbox function return values will not
represent descenders when they are present.
Error Messages
Programs that rely upon a particular syntax to define an error condition in
AutoLISP should not expect the same error messages to return from CADKEY
LISP.
CADKEY LISP Commands
This section details the various commands that are available in CADKEY
LISP. These commands are accessible via the command function in CADKEY
LISP. Each of these commands has varying arguments.
An example is:
(command "line" fromPt toPt "")
A detailed listing of commands, prompts and structures follows. The text for
the various prompts is shown to describe the command.
* Those prompts preceeded by an asterisk indicate that tracking
(rubberbanding) is utilized to determine this value.
arc
arc creates an arc.
The following arguments and options are supported:
Arguments: Center/
Center/:
| | |
| | +--- Center/End/:
| | | | |
| | | | +---*End point:
| | | |
| | | +--- End point:
| | | |
| | | *Angle/Direction/Radius/
:
| | | | | |
| | | | | +--- *Radius:
| | | | +--- *Direction from start point:
| | | +--- Included angle:
| | |
| | +--- Center:
| | |
| | +--- *Angle/Length of chord/:
| | | |
| | | +--- *Length of chord:
| | +--- Included angle:
| +--- Center:
| |
| +--- Start point:
| |
| +--- Angle/Length of chord/:
| | |
| | +--- *Length of chord:
| +--- Included angle:
+------ End point (continue):
circle
circle creates a circle.
The following arguments and options are supported:
Arguments: 3P/2P/TTR/
3P/2P/TTR/
:
| | | |
| | | +---- *Diameter/:
| | | |
| | | +--- *Diameter:
| | |
| | +--------- Tangent spec:
| | Second tangent spec:
| | :
| |
| +--------------- First point on diameter:
| *Second point on diameter:
|
+--------------------- First point:
Second point:
*Third point:
color
color changes the current entity-creation color.
The following arguments and options are supported:
Arguments: Color/
erase
erase accepts either an entity name or selection set and erases, or deletes,
the specified entities.
The following arguments and options are supported:
(command "erase" ename) - Erases a given entity.
(command "erase" selset) - Erases entities in a selection set.
(command "erase" "all") - Erases all entities.
(command "erase" "l") - Erases the last entity.
line
line accepts the starting (from) point and n number of subsequent (to) points.
Example:
(command "line" frompoint topoint topoint topoint ...)
pan
pan accepts a from point and a to point for moving the current viewport.
Arguments: fromPoint, toPoint
Example:
(command "pan" (0.0 1.0) (5.0 5.0))
pline
pline creates a polyline/arc.
The starting argument to pline is the starting (from) point. The second
argument dictates which "branch" to take. The possible second arguments
are:
Arc/Close/Length/Undo/Width/
From point:
|
+- Arc/Close/Halfwidth/Length/Undo/Width/:
| | | | | |
| | | | |+--- Starting width<0.000>:
| | | | |+--- Ending width<0.000>:
| | | | |
| | | |+--- Length:
| | | |
| | |+--- Not implemented
| | |+--- ...
| |
| |+--- Finished closed polygon.
|
+-- Angle/CEnter/CLose/Dir/Halfwidth/Line/Radius/Second pt/Undo/Width/:
| | | | | | | | | |
| | | | | | | | | +Start width:
| | | | | | | | | +End width:
| | | | | | | +--- Second pt:
| | | | | | | +--- End pt:
| | | | | | +--- Radius:
| | | | | | |
| | | | | | +--- Angle/:
| | | | | | |
| | | | | | +--- Included angle:
| | | | | | +--- Direction of chord:
| | | | |
| | | | Not implemented.
| | | |
| | | +--- Direction from start point:
| | | +--- End point:
| | |
| | +--- Finished closed arc polyline.
| +--- Center point:
| +--- Angle/Length/:
| | |
| | +--- Length of chord:
| +--- Included angle:
|
+--- Included angle:
|
+--- Center/Radius/:
| |
| +--- Radius:
| +--- Direction of chord:
+--- Center point:
redraw
redraw redraws the current viewport.
No arguments are available to the redraw command.
redrawall
redrawall redraws all viewports.
No arguments are available to the redrawall command.
regen
regen regenerates the current viewport.
No arguments are available to the regen command.
regenall
regenall regenerates all viewports.
No arguments are available to the regenall command.
text
text accepts the following arguments and options:
(VOID)/Justify/Style/:
| | | |
| | | +--- Height :
| | | +--- Rotation angle :
| | | +--- Text:
| | |
| | +--- Not supported.
| |
| +--- Align/Fit/Center/Middle/Right/<>:
| | | | | | | |
| | | + + + + + Point
| | | + + + + + Height
| | | + + + + + Angle
| | | + + + + + Text
| | |
| | +--- First text line point:
| | +--- Second text line point:
| | +--- Height:
| | +--- Text:
| |
| +--- First text line point:
| +--- Second text line point:
| +--- Text:
|
+--- Text:
Where <> can be any of the following two-letter combinations:
TL top left
TC top center
TR top right
ML middle left
MC middle center
MR middle right
BL bottom left
BC bottom center
BR bottom right
zoom
zoom supports the following arguments and options.
Example:
(command "zoom" "all") - Zooms all entities.
Arguments: All/Center/Extents/Left/Previous/Window/
All/Center/Extents/Left/Previous/Window/:
| | | | | | +--- Zoom scale
| | | | | |
| | | | | +--- Window corner:
| | | | | +--- Other corner:
| | | | |
| | | | +--- Zoom previous
| | | +--- Lower left point:
| | | +--- Scale or height:
| | |
| | +--- Zoom extents
| |
| +--- Center point:
| +--- Scale or height:
|
+--- Zoom all
3dmesh
3dmesh draws a 3D mesh. It accepts an M size and an N size. The command
is complete when M * N number of points have been supplied.
Arguments: M, N, (M * N times)
For example: (command "3dmesh" 2 2 (0 0 0) (1 1 1) (2 2 2) (3 3 3))
Complex Entities
Complex entities in CADKEY LISP are entities that have multiple vertices.
Polylines, polygons, splines and labels are all considered complex entity types
implemented in CADKEY LISP. The primary difference between complex
entities and regular entities in CADKEY LISP is the method in which they are
retrieved, modified and stored in the CADKEY database. To remain
compatible with AutoLISP from AutoCAD version 12, complex entities utilize
a method similar to AutoLISP's for creating and modifying entities.
In the following Code Samples, text preceded by a semicolon (;) are
comments, not actual code.
Making a Complex Entity
Making complex entities in CADKEY LISP is a straightforward procedure.
The header information for a complex entity must first be passed to the
primary function for making entities - entmake. Once entmake receives a
request to begin creating a complex entity, it stores the header information in
a temporary file. Subsequent calls to entmake must contain the appropriate
information (vertices for polylines and polygons; label:leaders and
label:witnesses for labels). Although attributes (color, line type, etc.) on
complex sub entities can be specified, they will be ignored and the attributes
specified in the header information used instead. Each call to entmake with a
complex sub entity forces entmake to write the sub entity information to a
temporary file. Upon receiving a seqend entity type, entmake retrieves the
information from the temporary file and creates the complex entity.
When entmake receives a request to create an entity other than a complex
sub entity during the creation of a complex entity, it aborts the creation of
the complex entity, deletes the temporary file, and begins creating the new
entity.
Code Sample
See complex.lsp in the CADKEY \lsp directory for more information.
; This program creates a polyline by prompting the user for points to include as vertices on the
polyline.
(defun c:poly ( / pt )
; Create the header of the polyline.
(entmake '( (0 . "POLYLINE")
(62 . 1) ; color
(40 . 3.0) ; starting width
(41 . 3.0) ; ending width
(70 . 1) ; closed
(76 . 0) ; display style
(77 . 1) ; fill mode
)
)
; Get the starting point for the polyline.
(setq pt (getpoint "Starting point for polyline: ") )
; Give this point (vertex) to entmake.
(entmake (list (cons 0 "VERTEX") (cons 10 pt) ) )
; Gather all remaining points from the user.
(while (not (null pt))
(setq pt (getpoint "Next point: ") )
(if (not (null pt))
(entmake (list (cons 0 "VERTEX") (cons 10 pt) ) )
)
)
; Finally, complete the complex entity creation using entmake with a SEQEND.
(entmake '( (0 . "SEQEND") ) )
(princ)
)
Retrieving Complex Entities
When retrieving complex entities using entget, CADKEY LISP returns the
header information regarding a given label/polyline/polygon/spline on the
first call to entget. The header will consist of the attributes and
characteristics of the entity. See the "Entity Group Codes" section for header
information on complex entities.
Subsequent calls to entnext return complex sub entity information (vertex for
polylines and polygons, node for splines and label:leader and label:witness
for labels) as specified in the "Entity Group Codes" section. entnext continues
to return complex sub entity information until the last sub entity is returned.
The next call to entnext will return the entity of seqend. When entnext
returns a seqend, no additional information (either header or vertex/node) is
available for the specified entity. Entnext is the primary mechanism for
"stepping" through sub entities.
Code Sample
See complex.lsp in the CADKEY \lsp directory for more information.
;
; This program retrieves a polyline from the database
;
(defun c:polyget ( / ename entity idx )
; Get the entity to be retrieved and the data for it.
(setq
ename (car (entsel "Select polyline to be retrieved: "))
entity (entget ename)
)
(if (/= (cdr (assoc 0 entity)) "POLYLINE")
(princ "Entity selected is not a polyline.")
; else
(progn
(princ "Header information on polyline: ")
(setq idx 0)
; Print out each dotted pair in the header.
(repeat (length entity)
(princ (nth idx entity))
(princ "\n")
(setq idx (1+ idx))
)
(princ "\n")
(princ "Vertices follow...\n")
(setq
ename (entnext ename)
entity (entget ename)
)
(while (/= (cdr (assoc 0 entity)) "SEQEND")
(princ "Vertex at: ")
(princ (assoc 10 entity))
(princ "\n")
(setq
ename (entnext ename)
entity (entget ename)
)
)
)
)
(princ)
)
Modifying a Complex Entity
Complex entities can be modified by either changing the header information
and/or modifying a specified complex sub entity. To modify a specified entity
use the function entmod. Complex entity header information is modifiable in
exactly the same way that regular entities are modifiable. Complex sub
entities in complex entities may be altered using entmod by specifying the
entity name for a given sub entity.
Code Sample
See complex.lsp in the CADKEY \lsp directory for more information.
; This program retrieves a polyline from the database and
; modifies the vertex from which the segment of the polyline
; was created. Note: Individual vertices cannot be identified
; using entget.
(defun c:polymod ( / ename entity pt )
; Get the entity to be retrieved and the data for it.
(setq
ename (car (entsel "Select polyline to be modified: ") )
entity (entget ename)
)
(if (/= (cdr (assoc 0 entity)) "POLYLINE")
(princ "Entity selected is not a polyline.")
; else
(progn
(setq
idx (getint "Enter vertex number to modify: ")
pt (getpoint "Enter new vertex point: ")
)
; Get the vertices and highlight them.
(setq
ename (entnext ename)
entity (entget ename)
)
(while (/= (cdr (assoc 0 entity)) "SEQEND")
;
; Find the vertex # 'idx'. Use code 78.
(if (= (cdr (assoc 78 entity)) idx)
(progn
(setq entity (subst (cons 10 pt) (assoc 10 entity) entity))
(entmod entity)
)
)
(setq
ename (entnext ename)
entity (entget ename)
)
)
)
)
(princ)
)
Entity Names and Complex Entities
Complex entities utilize the standard entity naming structure in CADKEY
LISP as do all other entities. The primary difference between a complex entity
name and a "regular" entity name is that complex entities utilize the second
digit of the entity name as an index into the sub entity table.
CADKEY LISP provides no method for accessing or changing this variable;
this is mentioned here for application debugging purposes.
CADKEY LISP Functions
CADKEY LISP functions can broken down into the following categories:
Function Types
Arithmetic Functions
+
-
*
/
1+
1-
abs
atan
atof
atoi
cos
exp
expt
fix
float
gcd
itoa
log
max
min
rem
sin
sqrt
tan
Bitwise Operators
~
boole
logand
logior
lsh
Debugging and Errors
*error*
trace
untrace
Entity Manipulation
entdel
entget
entlast
entmake
entmod
entnext
entsel
entupd
handent
Evaluator Functions
apply
eval
lambda
quote
File Input/Output
close
findfile
open
read-char
read-line
write-char
write-line
Graphics Manipulation
grclear
grdraw
grtext
grvecs
redraw
Input Output Functions
prin1
princ
print
prompt
read
terpri
List Functions
append
assoc
c????r
car
cdr
cons
last
length
list
mapcar
member
nth
reverse
subst
Miscellaneous Functions
alert
alloc
angle
angtof
angtos
atoms-family
command
distance
distof
expand
foreach
getenv
inters
mem
pi
polar
rtos
textbox
vmon
wcmatch
Numerical Comparisons
<
<=
=
/=
>=
>
Predicate Functions
atom
boundp
eq
equal
listp
minusp
null
numberp
type
zerop
Screen Management
graphscr
textpage
textscr
Selection Set Tools
ssadd
ssdel
ssfree
ssget
sslength
ssmemb
ssname
Special Forms
and
cond
if
not
or
progn
repeat
while
String Functions
ascii
chr
strcase
strcat
strlen
substr
Symbol Functions
defun
set
setq
System Functions
exit
gc
load
quit
ver
System Variables
getvar
setvar
User Interface Tools
getangle
getcorner
getdist
getfiled
getint
getkword
getorient
getpoint
getreal
getstring
initget
Function Descriptions
The following briefly explains each CADKEY LISP function.
+
The +, add, function adds two numeric values together and returns their
sum.
Function type Arithmetic
Syntax (+ number number)
Example (setq x (+ 5 3)) returns 8
Complement - subtract
-
The -, subtract, arithmetic function subtracts the second number from the
first and returns the difference.
Function type Arithmetic
Syntax (- number number)
Example (setq x (- 5 3)) returns 8
Complement + add
*
The *, multiply, arithmetic function multiplies the first number by the second
number and returns the product.
Function type Arithmetic
Syntax (* number number)
Example (* 3 2) returns 6
Complement / divide
/
The / (divide) arithmetic function divides the first number by the second
number .
Function type Arithmetic
Syntax (/ number number)
Example (/ 6 2) returns 3
Complement * multiply
1+
The 1+ (increment) arithmetic function adds one (1) to a given number.
Function type Arithmetic
Syntax (1+ number)
Example (setq x 5) (1+ x) returns 6
Complement 1- decrement
1-
The 1- (decrement) arithmetic function subtracts one (1) from a given
number.
Function type Arithmetic
Syntax (1- number)
Example (setq x 5)
(1- x) returns 4
Complement 1+ increment
~
The tilde '~' returns the one's complement of a given integer.
Function type Bitwise operator
Syntax (~ integer)
Example (setq x (~ -2) returns 1
See also boole
logand
logior
lsh
<
The < (less than) operator compares item1 (the first number or string) against
item2 (the second number or string). Both items must be of the same data
type. If item1 is less than item2, it returns T, otherwise nil.
Function type Numerical comparison
Syntax (< item1 item2)
Example (< 5 3) returns nil
(< 3 5) returns T
(< "a" "b") returns T
See also > greater than
>
The > (greater than) operator compares item1 (the first number or string)
against item2 (the second number or string). Both items must be of the same
data type. If the first is greater than the second, it returns T, otherwise nil.
Function type Numerical comparison
Syntax (> item1 item2)
Example (> 5 3) returns T
(> 3 5) returns nil
(> "a" "b") returns nil
See also < less than
<=
The <= (less than or equal to) operator compares item1 (the first number or
string) against item2 (the second number or string). Both items must be of
the same data type. If the first number or string is less than or equal to the
second, it returns T, otherwise nil.
Function type Numerical comparison
Syntax (<= item1 item2)
Example (<= 5 3) returns nil
(<= 3 5) returns T
(<= 5 5) returns T
(<= "a" "b") returns T
See also >=
=
The = (equal) operator compares item1 (the first number, string or symbol)
against item2 (the second number, string or symbol). Both items must be of
the same data type. If they are equal, it returns T, otherwise nil.
Function type Numerical comparison
Syntax (= item1 item2)
Example (= 3 5) returns nil
(= 3 3) returns T
(= item nil) might return nil or T
(= "a" "b") returns nil
See also /= not equal
/=
The /= (not equal) operator compares item1 (the first number, string or
symbol) to item2 (the second number, string or symbol). Both items must be
of the same data type. If they are not equal, it returns a T, otherwise nil.
Function type Numerical comparison
Syntax (/= item1 item2)
Example (/= 3 5) returns T
(/= 3 3) returns T
(/= item nil) could return nil or T
(/= "a" "b") returns T
See also = equal
>=
The >= (greater than or equal to) operator compares item1 (the first number
or string) to item2 (the second number or string). If the first is greater than
or equal to the second, it returns T, otherwise nil.
Function type Numerical comparison
Syntax (>= item1 item2)
Example (>= 3 5) returns nil
(>= 5 3) returns T
(>= "a" "b") returns nil
See also <= less than or equal to
abs
abs returns the absolute value of a given number.
Function type Arithmetic
Syntax (abs number)
Example (abs -1) returns 1
alert
alert displays a dialog box as an error or warning with the contents of the
specified string. The dialog box has a single OK button. The string argument
may contain embedded \n characters to specify multiple lines.
Function type Miscellaneous
Syntax (alert string)
Example (alert "Unable to open file\nspecified -> input.txt")
alloc
alloc establishes the segment size to the specified number of nodes. It is not
necessary to use this function or expand under normal conditions. alloc
returns the previous setting.
Using this function incorrectly may corrupt memory. Use with extreme
caution.
Function type Miscellaneous
Syntax (alloc nodes)
Example (alloc 1024)
See also expand
and
and returns the logical and of multiple items in a list. If all items in a list are
bound (not nil), and returns T, otherwise, and returns nil.
Function type Special form
Syntax (and item item ...)
Example (setq x 4.2 y nil)
(and 2.1 x) returns T
(and x y) returns nil
(and x y 2.1) returns nil
Complement or
See also not, or
angle
angle returns the angle between the two specified points. The angle is
measured from the X-axis in the current UCS in radians. Angles increase in
the counterclockwise direction.
Function type Miscellaneous function
Syntax (angle pt1 pt2)
Example (setq ang (angle '(2.5 2.5) '(4.0 4.0)))
angtof
angtof converts the specified string into an angle based upon the optional
mode argument. If mode is not supplied, the value of aunits is used. The
angle is returned in radians.
The value of mode can be one of the following:
Degrees - 0
Degrees/minutes/seconds - 1
Grads - 2
Radians - 3
Surveyor's units - 4
Function type Miscellaneous
Syntax (angtof string [mode])
Example (setq ang (angtof "1.265" 0))
Complement angtos
See also angtos, distof, rtos
angtos
angtos takes an angle (specified in radians) and returns it as a formatted
string based upon optional arguments, mode and precision as well as the
system variables, unitmode and dimzin. Mode and precision specify the
angular mode and decimal place of precision. If mode and/or precision are
not supplied, the values of aunits and auprec are substituted. If the system
variable unitmode is 0 and a mode of 4 is used, a space is included in the
returned string. Conversely, if unitmode is 1 and a mode of 4 is used, no
space is included.
The valid values for mode follow:
Degrees - 0
Degrees/minutes/seconds - 1
Grads - 2
Radians - 3
Surveyor's units - 4
Function type Miscellaneous
Syntax (angtos angle [mode [precision]])
Example (angtos 0.785398 0 5) returns "45.00000"
Complement angtof
See also angtof, distof, rtos
append
append accepts any number of lists and adds the later lists to the first to
create one list. All arguments to append must be lists.
Function type List
Syntax (append expression ...)
Example (append '(a b c) '(x y z)) returns (a b c x y z)
See also assoc, car, cdr, c????r, cons, last, length, list
apply
Executes the function specified using the given argument list.
Function type Evaluator
Syntax (apply function list)
Example (apply '- '(12 6))
(apply 'load '("defaults.lsp"))
See also lambda, mapcar
ascii
ascii returns the first character of a string as its ASCII code.
Function type String
Syntax (ascii "string")
Example (ascii "b") returns 98
See also chr
assoc
assoc searches a list for an item. assoc is useful when dealing with entity
group codes and functions such as entget, entnext, etc. If the entry assoc
searched the list for cannot be found, assoc returns nil.
Function type List
Syntax (assoc item list)
Example (setq list (list (72 . 5) (73 . 6)))
(assoc 72 list) returns (72 . 5)
See also append, car, cdr, c????r, cons, last, length, list
atan
atan returns the arc tangent of an angle, expressed in radians.
Function type Arithmetic
Syntax (atan angle)
Example (atan 0.35) returns 0.336675
Complement sin, cos, tan
See also cos, sin, tan
atof
atof returns the conversion of a given string as a floating-point number.
Function type Arithmetic
Syntax (atof string)
Example (atof "6.5") returns 6.5
See also atoi
atoi
atoi returns the integer value of a given string.
Function type Arithmetic
Syntax (atoi string)
Example (atoi "6") returns 6
See also atof
atom
atom checks to see if a given item is an atom or a list. When the item is an
atom, atom returns T, otherwise atom returns nil.
Function type Predicate
Syntax (atom item)
Example (atom '(2.1 1.3 3.1)) returns nil
(atom a) returns T
Complement listp
See also listp
atoms-family
atoms-family returns a list of all atoms currently defined. When the format is
specified as a 0, the currently defined atoms are returned in an unquoted
list. When the format is defined as a 1, the currently defined atoms are
returned as strings. If the optional symbollist is defined, only those atoms
that are contained in symbollist are returned.
Function type Miscellaneous
Syntax (atoms-family format [symbollist])
Example (atoms-family 0 '("list" "comm")) returns ("list" nil)
boole
boole provides a mechanism for performing a general bitwise Boolean
function. The function bit must be an integer between 0 and 15. It represents
the Boolean function to apply to the subsequent integers and is based upon
the following truth table:
integer1 integer2 function bit
0 0 8
0 1 4
1 0 2
1 1 1
boole performs the bitwise operation by pairing each bit in integer1 with the
corresponding bit in integer2. The result is a row in the truth table. The
result is either 0 or 1 and is determined by the value of the function bit in
the resultant row.
The function bit can be set to correspond to standard Boolean operations.
The settings are:
1 AND
6 XOR
7 OR
8 NOT
Function type Bitwise Operator
Syntax (boole function number number ...)
Example (boole 3 5 6) returns 5
(boole 1 2 6) returns 2
See also ~, logand, logior, lsh
boundp
boundp returns T if the specified atom has a value and nil if it does not.
Function type Predicate
Syntax (boundp atom)
Example (setq x 5.0 y nil)
(boundp x) returns T
(boundp y) returns nil
Complement null
See also null
car, cdr, c????r
car, cdr, and their derivatives are the primary tools for taking lists apart. car
returns the first element of a list. cdr returns a list less the first element.
CADKEY LISP supports derivatives of car and cdr up to four levels deep.
Function type List
Syntax (car list)
(cdr list)
(c???? list)
Example (setq lst (1 2 3 4 5)) returns (1 2 3 4 5)
(setq head (car lst)) returns 1
See also append, assoc, cons, last, length, list
chr
chr converts an ASCII code into its equivalent single-character string.
Function type String
Syntax (chr number)
Example (chr 98) returns "b"
See also ascii, string
close
close flushes the contents of the given file descriptor to disk and closes the
given file descriptor. close returns nil. See open for a discussion on opening
files and file descriptors.
Function type File Input/Output
Syntax (close descriptor)
Example (close fp)
See also open
command
command executes the specified command and returns nil. Arguments to a
given command need not be supplied simultaneously on one line. If the
pause symbol is detected during a call to the command function, command
is suspended to allow for direct user input. The pause symbol is a single
backslash or the variable pause, \.
When the command processor is active and waiting for user input, the user
cannot respond to a given prompt using CADKEY LISP as this would cause
an invalid condition of reentrance.
Function type Miscellaneous
Syntax (command [arguments]...)
Example (command ".line" "\\" "\\" "")
(command ".line" pause pause "")
cond
The cond function works like the IF statement except that cond can evaluate
any number of test conditions. The first condition tested that returns a non-
nil value executes. Subsequent non-nil conditions do not execute.
Function type Special form
Syntax (cond (first test_condition first statements ...)
(second test_condition second statements ...)
(T last_statement ... )
)
Example (setq x 5 y 3 z 2)
(cond
((= x 5) (princ "X equals 5"))
((/= y 3) (princ "Y does not equal 3"))
((= z x) (princ "X does not equal Z"))
)
) returns and prints "X equals 5"
See also if
cons
cons constructs a list. cons takes an element and a list and returns a new
list with the given element at the head of the list.
Function type List
Syntax (cons element list)
Example (setq lst (cons 'w '(x y z)) returns (w x y z)
See also append, assoc, car, cdr, c????r, length, list
cos
cos returns the cosine of an angle which is expressed in radians.
Function type Arithmetic
Syntax (cos angle)
Example (cos 3.1412) returns -1
Complements sin, tan
See also sin, tan
defun
defun is used to define a function. User-defined functions are commands in
CADKEY LISP. Indicate commands by preceding the symbol name with c:.
Arguments and variables local to a command are supplied in a list
immediately following the symbol for the function name. Local variables are
separated from arguments with a single slash character (/). Commands
without arguments and/or local variables need not declare variables within
this list. Commands defined using the c: can be entered from the command
line without parentheses. Conversely, commands defined without the c: must
be called using parentheses.
Function type Symbol
Syntax (defun symbol arguments expression ...)
Example (defun myline ( pt1 pt2 )
(command ".line" pt1 pt2 "")
)
distance
distance returns the three-dimensional distance between two specified
points.
Function type Miscellaneous
Syntax (distance pt1 pt2)
Example (setq dist
(distance '(2.0 2.0 0.0) '(3.0 3.0 0.0)) returns 1.0
)
distof
distof converts a given string into a real number in the format specified by
the optional mode argument.
Valid values for mode are as follows:
1 scientific
2 decimal
3 engineering (feet/inches)
4 architectural (feet/fractional inches)
5 fractional
If mode is not given, the value of the system variable lunits is used. distof
accepts the string in the same form as rtos returns.
Function type Miscellaneous
Syntax (distof string [mode])
Example (distof "34\"" 4) returns 40.0
See also angtof, angtos, rtos
entdel
entdel deletes the entity specified by ename if it is present in the part file, or
restores the entity if it was previously present, and returns the name of the
deleted entity.
Function type Entity Manipulation
Syntax (entdel ename)
Example (entdel (car (entsel "Select entity for deletion:")))
See also entget, entlast
entget
entget retrieves the information for the entity specified by ename from the
CADKEY database. This function returns an association list for the given
entity. Extended entity (copious) data is not currently supported. See the
entity tables for the return DXF codes.
Function type Entity Manipulation
Syntax (entget ename)
Example (entget (car (entsel "Select entity:")))
See also entlast, entmod
entlast
entlast retrieves the last entity in the database. This function is particularly
useful to obtain the entity most recently created.
Function type Entity Manipulation
Syntax (entlast)
Example (setq elast (entlast))
See also entget
entmake
entmake creates a new entity given a definition list. The list of information
required to create an entity must be given to entmake in the same way that
entget returns it. If the creation of the specified entity is successful, entmake
returns the original list given to it. If unsuccessful, entmake returns nil.
Complex entities such as polylines and polygons are created by providing the
header information for the entity first, followed by a series of calls to entmake
with vertex entities. Complex entities are created when entmake receives an
entity of type seqend. If during the creation of a complex entity, entmake
receives a request to create an entity other than vertex or seqend, the entity
creation of the complex entity is terminated without creating an instance in
the CADKEY database. All vertices will have the properties as defined in the
"header" information.
Blocks are not currently supported by entmake.
Function type Entity Manipulation
Syntax (entmake deflist)
Example (entmake '((0 . "LINE")
(62 . 1) ; color
(10 4.3 5.6 0.0) ; starting coordinate
(11 5.5 8.7 0.0)) ; ending coordinate
)
See also entlast, entmod
entmod
entmod is used to modify the characteristics of an existing entity. entmod is
passed an entity list of the same characteristics that entget returns. You
must specify the entity name (-1) in the entity list.
To modify existing entities, retrieve them using entget, modify the contents of
the entity list using subst and perform an update on the entity using
entmod. If successful, entmod returns the entity list given to it, otherwise it
returns nil.
You cannot modify entity names and entity types for a given entity. When
you modify an entity, it is not automatically updated on the screen. Use
entupd to update the display of the modified entity.
Function type Entity Manipulation
Syntax (entmod elist)
Example See the example in the section entitled "Complex
entities".
See also entlast, entupd, subst
entnext
entnext returns the next entity in the database after the one specified. If no
arguments are given to entnext, the first entity in the database is returned.
Complex entities may have sub entities (vertices) returned using entnext by
walking through the database. seqend is returned by entnext once you
exhaust all sub entities. To find the parent entity of a sub entity, step
through the sub entities until a seqend is encountered, then extract the
entity name specified by a -2 value.
Function type Entity Manipulation
Syntax (entnext ename)
Example (setq next (entnext)) first entry
(setq
e (cdar (entget (car (entsel)))) next entity
next (entnext e)
)
See also entget, entlast
entsel
entsel is the primary function used to select entities. entsel returns a list
whose first atom is the entity name and the second is the point at which it
was selected. If the optional prompt is not supplied, entsel displays the
default prompt Select entity:. entsel utilizes the selection parameters defined
by the optional preceding initget.
Function type Entity Manipulation
Syntax (entsel [prompt])
Example (setq ename (car (entsel))) might return #(15 . 0)
See also entget, initget
entupd
entupd is used to update the specified entity after you modify it. You can
update complex entities such as polylines and polygons by specifying either
the parent ename or a sub entity ename. entupd returns the name of the
updated entity.
Function type Entity Manipulation
Syntax (entupd ename)
Example (setq ename (entlast))
(entupd entlast)
See also entget
eq
eq returns T if the first expression and the second expression are bound to
the same object, nil otherwise.
Function type Predicate
Syntax (eq expr1 expr2)
Example (setq
e1 '(1 2 3)
e2 '(1 2 3)
e3 e2
)
(eq e1 e3) returns nil
(eq e2 e3) returns T
Complement equal
equal
equal returns T if the first expression and the second expression evaluate to
the same thing. Due to rounding, the comparison of real numbers is
somewhat difficult. To remedy this, equal accepts an optional argument
(tolerance) which allows real numbers to be equal, plus or minus the
tolerance.
Function type Predicate
Syntax (equal expr1 expr2 [tolerance])
Example (setq
e1 '(1 2 3)
e2 '(1 2 3)
e3 e2
)
(equal e1 e3) returns T
(equal e2 e3) returns T
(setq
x 1.715642
y 1.715641
)
(equal x y 0.000001) returns T
Complement eq
*error*
The *error* function, if not nil, is executed anytime in which a CADKEY LISP
error occurs. This function must be defined by the program as it is not built-
in. When it is called, it is passed a single string argument describing the
error which just occurred.
Function type Debugging and Errors
Syntax (*error* errormsg)
Example (defun *error* ( errormsg )
(princ "An error has occurred.")
(terpri)
(princ errormsg)
)
eval
eval evaluates an expression. The expression can be any CADKEY LISP
expression.
Function type Evaluator
Syntax (eval expression)
Example (eval 2.31) returns 2.31
(eval (+ 1 2)) returns 3
(eval (setq b 3)) returns 3
exit
exit, much like quit, cancels the current application and returns to the
command prompt.
Function type System
Syntax (exit)
Example (exit)
See also quit
exp
exp returns the constant e raised to a specified power. The return value is a
real number.
Function type Arithmetic
Syntax (exp number)
Example (exp 2) returns 7.38906
expand
expand allocates the requested amount of node space. The number of
segments which expand is able to allocate is returned. It is not necessary to
use this function or alloc under normal conditions.
Using this function incorrectly may corrupt memory. Use with extreme
caution.
Function type Miscellaneous
Syntax (expand number)
Example (expand 1)
See also alloc
expt
expt returns the given base raised to the given power. The return value is an
integer.
Function type Arithmetic
Syntax (expt base power)
Example (expt 2 2) returns 4
findfile
findfile finds the specified file name by searching the current working
directory, then the directory containing the current part file, and finally the
directory pointed to by the environmental variable cadkey. Finally, if the file
has not been found, findfile searches the directories defined by the DOS path
variable.
Function type File Input/Output
Syntax (findfile filename)
Example (findfile "gear.prt") might return "c:/cadkey/prt"
fix
fix converts a real number to an integer by truncating the fractional portion
of the value.
Function type Arithmetic
Syntax (fix number)
Example (fix 5.3) returns 5
(fix 5) returns 5
float
float converts a given number into a real number.
Function type Arithmetic
Syntax (float number)
Example (float 2) returns 2.0
(float 3.0) returns 3.0
foreach
foreach steps through a given list assigning each element to the specified
name and evaluating the specified expression for each element in the list.
Any number of expressions can be specified to foreach. The result of the last
evaluation is returned by foreach.
Function type Miscellaneous
Syntax (foreach name list expression ...)
Example (setq i 2 j 3 k 4)
(foreach x '(i j k)
(setq a (1+ (eval x)))
(princ a) prints 3 4 5 and returns 5
)
gc
gc forces an internal CADKEY LISP garbage collection to take place. This
returns nil.
Function type System
Syntax (gc)
Example (gc)
gcd
gcd returns the greatest common denominator of the two given values. Both
values to gcd must be integers.
Function type Arithmetic
Syntax (gcd number number)
Example (gcd 15 12) returns 3
getangle
getangle waits for user input of an angle and returns that angle in radians.
Zero radians is defined by the system variable angbase and, normally,
increases in a counterclockwise direction. The angle returned is based upon
the current construction plane. You can type angles in a format recognized
by angtof or by selecting two points.
You can use the optional prompt argument as a display prompt. The optional
point argument specifies the base point in a 2D format. If the optional point
is given, you can specify the angle by selecting the second point.
Function type User Interface Tools
Syntax (getangle [pt] [prompt])
Example (setq angle (getangle "Enter starting angle: "))
See also getcorner, getdist, getint, getkword, getorient, getpoint
getreal, getstring, initget
getcorner
getcorner returns a point similar to getpoint. The point argument specifies
the first corner of the rectangle which getcorner rubberbands as the user
moves the cursor to select the second point of the rectangle. getcorner
returns the opposite point describing a rectangle from the specified point.
The optional prompt argument can be supplied to describe the action for the
user. If the prompt is not supplied, getcorner does not display a prompt.
Function type User Interface Tools
Syntax (getcorner pt [prompt])
Example (setq pt (getcorner '(1.0 1.0) "Select other corner:"))
See also getangle, getdist, getint, getkword, getorient, getpoint
getreal, getstring, initget
getdist
getdist accepts a distance or one or two points from the user and returns the
distance between those points. All distances are returned as a real number.
You can give the distance to getdist by selecting two points. Much like
getcorner, getdist accepts an optional point as the first point, allowing the
user to rubberband to select the second point from which to calculate the
distance. You can supply the optional prompt argument to describe the
action. If the prompt is not supplied, getdist does not display a prompt.
Function type User Interface Tool
Syntax (getdist [pt] [prompt])
Example (setq dist (getdist '(0.0 0.0) "Select second point: "))
See also getangle, getcorner, getint, getkword, getorient
getpoint, getreal, getstring, initget
getenv
getenv returns the value of the specified operating system. When the variable
is undefined, getenv returns nil.
Function type Miscellaneous
Syntax (getenv "variable")
Example (getenv "PATH") might return "c:/dos;c:/cadkey"
getint
getint pauses for input of an integer number by the user. The optional
prompt argument can be displayed to further describe the action to be taken.
getint returns the user specified integer or nil.
Function type User Interface Tools
Syntax (getint [prompt])
Example (getint "Enter an integer: ")
See also getangle, getcorner, getdist, getkword, getorient, getpoint
getreal, getstring, initget
getkword
getkword gets a keyword from the user. The valid keywords are defined by
initget and must be established prior to calling getkword. If the input given
by the user is invalid, getkword returns nil providing a null input is allowed
by initget, otherwise getkword returns the matching keyword. If initget was
not called just prior to getkword, getkword returns nil.
Function type User Interface Tools
Syntax (getkword [prompt])
Example (initget 1 "Yes No")
(setq
kword (getkword "Continue? (Y/N): ")
)
See also getangle, getcorner, getdist, getint, getorient, getpoint
getreal, getstring, initget
getorient
getorient returns the user supplied angle where the angle is always measured
as zero degrees being to the right (east). Similar to getangle, getorient
expresses the returned angle in radians and with respect to the current
construction plane. getorient utilizes the system variables angdir and
angbase.
The returned value represents the setting of angbase added to the result. For
example: if angdir = 0 and angbase = 1.5708, an angle of 90 degrees is
returned as 3.14159. Also, if angdir = 1 and angbase = 0, an angle of 90
degrees is returned as 4.7124.
Function type User Interface Tools
Syntax (getorient [pt] [point])
Example (getorient '(0.0 0.0) "Please enter an angle")
See also getangle, getcorner, getdist, getint, getkword, getpoint
getreal, getstring, initget
getpoint
getpoint obtains a point from the user. The optional point argument specifies
a base point in the current UCS from which a rubberband line will be drawn
when the point is selected. The optional prompt describes the input the user
is to supply. When no prompt is given, getpoint does not display a prompt.
getpoint functions much like getcorner. getpoint returns the user specified
point or nil.
Function type User Interface Tools
Syntax (getpoint [pt] [prompt])
Example (setq pt (getpoint "Select a point: "))
See also getangle, getcorner, getdist, getint, getkword, getorient
getreal, getstring, initget
getreal
getreal pauses for input of a floating point number by the user. The optional
prompt argument can be displayed to further describe the action to take.
getreal returns a user specified real number or nil.
Function type User Interface Tools
Syntax (getreal [prompt])
Example (getreal "Enter a real number: ")
See also getangle, getcorner, getdist, getint, getkword, getorient,
getpoint, getstring, initget
getstring
getstring pauses for user input of a string. The string the user supplies is
returned. If the string is greater than 132 characters, getstring only returns
the first 132 characters. getstring converts the backslash character (\) to a
double backslash character (\\). When processing file names, a double
backslash is required for the path.
getstring accepts an optional flag to specify whether or not getstring should
allow spaces. If the flag option is supplied and not nil, getstring accepts
spaces and the string must be terminated by the user pressing . When the
optional flag is not present or is nil, getstring terminates the string when it
encounters a space or .
The optional prompt argument can further describe the action to take.
getstring does not honor the flags set by initget.
Function type User Interface Tools
Syntax (getstring [flag] [prompt])
Example (getstring T "Enter something: ") allow spaces
(getstring "Enter something: ") disallow spaces
See also getangle, getcorner, getdist, getint, getkword, getorient,
getpoint, getreal, initget
getvar
getvar retrieves the given system variable.
All system variables must be enclosed by double quotation marks.
Function type System Variables
Syntax (getvar "variable")
Example (setq echo (getvar "cmdecho"))
See also setvar
graphscr
graphscr switches control to the graphics window.
Function type Screen Management
Syntax (graphscr)
Example (graphscr)
Complement textscr
See also textpage, textscr
grclear
grclear clears the screen of all graphics, although they are not deleted. Use
the redraw function to restore the screen to its original contents.
Function type Graphics Manipulation
Syntax (grclear)
Example (grclear)
See also redraw
grdraw
grdraw draws a vector between pt1 and pt2 in the color specified by color.
The vector drawn on the screen using grdraw is not written to the database.
Multiple vectors may be displayed on the screen using grvecs.
To redisplay the contents of the screen, use the redraw function. The
highlight option is not supported but accepted for compatibility.
Function type Graphics Manipulation
Syntax (grdraw pt1 pt2 color [highlight])
Example (grdraw '(0.0 0.0) '(5.0 5.0) 3 1)
See also grvecs, redraw
grtext
grtext displays a given string in a specified location. The only currently
supported location is:
Code Location
1 CADKEY prompt line.
The highlight option in CADKEY LISP is not supported. Calls to grtext
without arguments clear the specified location.
Function type Graphics Manipulation
Syntax (grtext [box# text [highlight]])
Example (grtext 1 "Press any key to continue...")
grvecs
grvecs draws multiple vectors in the graphics window. The vectors are not
written to the database. vectlist is a list consisting of an optional color and a
required set of points, pt1 and pt2. The optional trans argument is a four-by-
four transformation matrix which allows for a change in location or
proportion of the vectors defined in vectlist.
Function type Graphics Manipulation
Syntax (grvecs vectlist [trans])
Example (grvecs ( 5 (3 6) (2 4) returns blue line from 3,6 to 2,4
4 (4 6) (2 4) returns cyan line from 4,6 to 2,4
(5 6) (2 4) returns cyan line from 5,6 to 2,4
3 (6 6) (2 4)) returns green line from 6,6 to
2,4
)
See also grdraw, redraw
handent
Entity handles (handent) are not supported in CADKEY LISP. To
accommodate those applications utilizing handles, calls to handent with a
given handle number return the entity's name. Entity names are maintained
between sessions in CADKEY.
Function type Entity Manipulation
Syntax (handent "handle")
Example (handent "110") returns #(110 0)
if
if evaluates the first condition and, if not nil, executes the first expression;
otherwise, it executes the second expression. For multiple lines in either the
first or second expression, see the function progn.
Function type Special Forms
Syntax (if test then [else])
Example (if (/= a 3.0)
(princ "A does not equal 3.0")
; else
(princ "A is equal to 3.0")
)
See also cond, progn
initget
initiget defines the appropriate input options that are accepted by the entsel,
getangle, getcorner, getdist, getint, getkword, getorient, getpoint and getreal
functions.
The optional control argument specified as an integer (bit coded) can be
supplied to more clearly define acceptable input from the user. The optional
string argument to initget is used to define the acceptable keyword
possibilities. The optional controls are:
Bit value Description
1 null input is disallowed.
2 Zero values are disallowed.
4 Negative numbers are disallowed.
8 Ignore drawing limits, as well as limcheck.
16 Not used.
32 Not supported by CADKEY LISP.
64 Z-coordinates are disallowed (getdist only).
128 Arbitrary keyboard input.
The following listing defines which settings are supported for each of the getx
functions.
getangle: 1, 2, 128
getcorner: 1, 8, 128
getdist: 1, 2, 4, 128
getint: 1, 2, 4, 128
getkword: 1, 128
getorient: 1, 2, 128
getpoint: 1, 8, 128
getreal: 1, 2, 4, 128
getstring: n/a
The keywords specified by the optional string argument define the
possibilities which getkword accepts. Keywords are defined as:
o Separated from each other by a space.
o Used to recognize an abbreviation in two cases, either the unique letter in
each word is capitalized, as in First Second Third fouRth or the keyword
is all caps and separated by a comma, as in FIRST,FI SECOND,SE.
o The required characters after the comma must be the first characters of
the full keyword.
Function type User Interface Tools
Syntax (initget [control] [string])
Example (initget 128 "First Second")
(setq option (getkword "Enter position: (First/Second): "))
See also getangle, getcorner, getdist, getint, getkword, getorient
getpoint, getreal, getstring
inters
inters calculates the intersection of two lines specified by the four required
arguments. It returns the point where they intersect. The first two arguments
are the start point and end point of the first line, respectively. Likewise the
third and fourth arguments are the start point and end point of the second
line, respectively. inters accepts an optional argument (onseg) and if it is
present and nil, inters assumes the lines are infinite and returns the
intersection even if the lines do not cross, otherwise the intersection point
must lie on both lines.
Function type Miscellaneous
Syntax (inters pt1 pt2 pt3 pt4 [onseq])
Example (inters '(3.0 0.0) '(3.0 3.0) '(0.0 1.0) '(4.0 1.0)
returns (3.0 1.0 0.0)
itoa
itoa returns the ASCII "string" of a given integer.
Function type Arithmetic
Syntax (itoa int)
Example (itoa 5) returns "5"
lambda
lambda is used to define functions "in-line". In-line functions are useful when
the details associated with defining a completely new function are
unnecessary. lambda returns the value of the last evaluated expression.
Function type Evaluator
Syntax (lambda arguments expression ...)
Example (mapcar
(lambda (x y z)
(list x y z)
)
(1 10.5) (2 12.25) (3 6.5)
) returns ((1 3 2) (10.5 6.5 12.25))
See also apply, mapcar
last
last returns the list of the last element in a given list. The last element which
last returns can be either a list or an atom.
Function type List
Syntax (last list)
Example (setq lst '(a b c d e f))
(last lst) returns f
See also append, assoc, car, cdr, c????r, cons, length, list
length
length returns the number of elements in a given list.
Function type List
Syntax (length list)
Example (length '(1.0 2.0 3.0 4.0)) returns 4
(length '(1 2 (5 6) (3 4))) returns 4
(length '()) returns 0
See also append, assoc, car, cdr, c????r, cons, last, list
list
list accepts a variable number of expressions and returns a list of the
expressions.
Function type List
Syntax (list expression expression...)
Example (setq lst (list a b '(x y z))) returns (a b (x y z))
See also append, assoc, car, cdr, c????r, cons, last
listp
listp returns T if a given item is a list and nil otherwise.
Function type Predicate
Syntax (listp item)
Example (setq
lst '(1 2 3)
a 1.0
)
(listp lst) returns T
(listp a) returns nil
Complement atom
See also atom
load
load reads an existing .lsp file from disk and enters the functions defined in
the file into the atoms-family. If the file contains expressions which are
outside of defuns, those expressions are evaluated at the time of loading. All
paths to filenames in CADKEY LISP utilize double backslashes (\\) or a
single forward slash (/) instead of the normal DOS backslash (\). The .lsp
extension is not required when loading a file; it is assumed.
Function type System Functions
Syntax (load "filename")
Example (load "c:/cadkey/lsp/myline.lsp")
log
log returns the natural logarithm of a given value.
Function type Arithmetic
Syntax (log number)
Example (log 2.3) returns 0.8329
logand
logand returns the result of a logical bitwise and a given list of numbers. All
arguments to logand must be integers. The return values from logand are
always integers.
Function type Bitwise Operator
Syntax (logand number number number ...)
Example (logand 5 3 1) returns 1
See also ~, boole, logior, lsh
logior
Function type Bitwise Operator
Syntax
Example
See also ~, boole, logand, lsh
lsh
lsh performs a logical bitwise shift of x by y bits. Both x and y must be
integers. The return value of lsh is an integer. Provided that x is positive, y is
shifted left, conversely, if x is negative, y is shifted right. Zero bits are shifted
in and shifted out bits are ignored.
Function type Bitwise Operator
Syntax (lsh x y)
Example (lsh 5 3) returns 40
See also ~, boole, logand, logior
mapcar
mapcar executes a given function with the list of supplied arguments. It
returns a list which is the result of executing the given function. mapcar
expects the number of arguments supplied in the list of arguments to match
the number of arguments required by the function being called.
Function type List
Syntax (mapcar function argument list...)
Example See lambda.
See also lambda
max
max returns the largest number of the numbers given as arguments. max
returns an integer if all the numbers given to it are integers. max returns a
real if any one of the numbers given to it are of type real.
Function type: Arithmetic
Syntax (max number number number ...)
Example (max 1.0 4.0 0.5 3.3) returns 4.0
(max 1 2 3 4 5) returns 5
(max 1 1.5 3 4 5) returns 5.0
Complement min
See also min
mem
mem returns the memory statistics of the CADKEY LISP interpreter. Some of
the return values can be modified using alloc.
Function type Miscellaneous
Syntax (mem)
Example (mem)
See also alloc
member
member searches a given list for a given expression and returns the
remainder of the list. When the expression does not exist in the given list,
member returns nil.
Function type List
Syntax (member expression list)
Example (member '1 '(5 1 2 3)) returns (1 2 3)
(member '1.0 '(2.5 2.0 3.0)) returns nil
See also assoc, car, cdr, c????r, last, nth
min
min returns the smallest number of the numbers given as arguments. min
returns an integer if all the numbers given to it are integers. min returns a
real if any one of the numbers given to it are of type real.
Function type Arithmetic
Syntax (min number number number ...)
Example (min 1.0 4.0 0.5 3.3) returns 0.5
(min 1 2 3 4 5) returns 1
(min 1 1.5 3 4 5) returns 1.0
Complement max
See also max
minusp
minusp returns T if a given item is negative or evaluates to a negative value.
Otherwise, minusp returns nil.
Function type Predicate
Syntax (minusp item)
Example (minusp -1.0) returns T
(setq x -3.5)
(minusp x) returns T
(minusp 1.0) returns nil
not
not evaluates an argument and returns T when it is false.
Function type Special Forms
Syntax (not argument)
Example (not (= 1.0 1.0) returns nil
(not (/= 1.0 1.0) returns T
See also and, or
nth
nth returns the Nth element in a given list.
Function type List
Syntax (nth element list)
Example (nth 3 '(a b c d e f)) returns c
See also assoc, car, cdr, c????r, last, member
null
null returns T if a given item is bound (= nil). Otherwise, null returns nil.
Function type Predicate
Syntax (null item)
Example (setq x 5.0 y nil)
(null x) returns nil
(null y) returns T
Complement boundp
See also boundp
numberp
numberp returns T if a given item is an integer or a floating-point number.
Otherwise, numberp returns nil.
Function type Predicate
Syntax (numberp item)
Example (numberp 1.0) returns T
(setq a '(1.0 2.0 3.0))
(numberp a) returns nil
open
open opens the given filename for access as specified in the type argument.
open returns the file descriptor created when the file is successfully opened,
or nil if the opening of the file fails.
The options for type, which must be lowercase, are as follows:
"w" Creates and opens the given file for output. w can overwrite an
existing file.
"r" Opens the file for read. Returns nil if the file does not exist.
"a" Opens the specified file for append. If the file does not exist, it is
created and opened. If the file does exist, it is opened and the next character
written to the file follows the last character in the file.
When providing the path to the open statement, be sure the slashes are
forward slashes (/), unlike MS-DOS backslashes (\).
Function type File Input/Output
Syntax (open filename type)
Example (setq fp (open "test.out" "w")) returns descriptor
(setq fp (open "nothere.out" "r")) returns nil
See also close
or
or returns the logical or of multiple items in a list. If at least one item in the
list is bound (not nil), or returns T. Otherwise, or returns nil.
Function type Special Forms
Syntax (or item item ...)
Example (setq x 4.2 y nil)
(or 2.1 x) returns T
(or x y) returns T
(or x y 2.1) returns T
Complement and
See also and, not
pi
pi, a CADKEY LISP defined constant, is defined as 3.1415926.
Function type Miscellaneous
Syntax pi
Example (setq x (+ 1 pi)) returns 3.1415926
polar
polar returns a three-dimensional point based upon the current UCS at the
specified angle and distance from the supplied point. The angle must be
specified in radians from the X-axis and increasing counterclockwise.
Function type Miscellaneous
Syntax (polar pt angle distance)
Example (polar (2 2 1.5) 0.5 1.75)
returns( 3.53577 2.83899 1.5)
prin1
prin1 prints the optional string to the screen or to the optionally given file
descriptor. It returns the expression or string. The expression can be of any
type. If the file descriptor is present and the file is open for output, prin1
prints the expression to the specified file exactly as it would be shown on the
screen.
Unlike print, prin1 does not precede the output with a newline. prin1 can be
used to print control and escape codes to both the screen and to output files.
The following control codes are recognized by prin1:
\\ - prints a single backslash character.
\" - prints the double quote character (").
\e - prints the escape character.
\n - prints the newline character.
\r - prints the return character.
\t - prints the tab character.
\ooo - prints the character whose octal code is ooo
Function type Input/Output
Syntax (prin1 [string [descriptor]])
Example (prin1) prints nothing
(prin1 "Hello world") prints "Hello world"
(prin1 "hello" fp) prints "hello" to file fp
(prin1 "\e" fp) prints escape to file fp
See also princ, print
princ
princ prints the optional string or expression to the screen or to the
optionally given file descriptor. It returns the expression. The expression can
be of any type. If the file descriptor is present and the file is open for output,
princ prints the expression to the specified file.
Unlike print, princ does not precede the output with a newline.
Unlike prin1 princ can be used to print control and escape codes
unexpanded to the screen and to output files.
The following control codes are recognized by princ:
\\ - prints a single backslash character.
\" - prints the double quote character (").
\e - prints the escape character.
\n - prints the newline character.
\r - prints the return character.
\t - prints the tab character.
\ooo - prints the character whose octal code is ooo
Function type Input/Output
Syntax (princ [string [descriptor]])
Example (princ) prints nothing
(princ "Hello world") prints "Hello world"
(princ "hello" fp) prints "hello" to file fp
(princ "\e" fp) prints escape to file fp
See also prin1, print
print
print, much like prin1 and princ, prints the given string to the screen
(preceeded by newline) unless a descriptor is given. If file_desc is given, the
output is directed to the file specified by the descriptor. print, without
arguments, prints a newline only. print always prints a single space following
the string. print returns the string which it was given.
Function type Input/Output
Syntax (print [string [descriptor]])
Example (print) prints a newline
(print "Hello world") prints "Hello world "
(print "hello" fp) prints "\nhello " to fp
See also prin1, princ
prompt
prompt prints the given string to the "command" line area of the screen,
informing the user of an action to take. prompt returns nil.
Function type Input/Output
Syntax (prompt string)
Example (prompt "Press any key to continue...") returns nil
See also prin1, princ, print
progn
progn is used to group multiple expressions together in an if structure. The
value of the last expression in a progn group is returned by progn.
Function type Special Forms
Syntax (progn expr expr expr ...)
Example (if (= a b)
(progn
...... do something here ...
) ; else
(progn
... do something else here ...
)
)
See also if
quit
quit, much like exit, cancels the current application and returns to the
command prompt.
Function type System Functions
Syntax (quit)
Example (quit)
See also exit
quote
quote returns an expression unevaluated. The shorthand notation for quote
is ' (single apostrophe).
Function type Evaluator
Syntax (quote expression)
Example (setq lst (quote a)) returns A
read
read retrieves the first atom or list from the given string and returns it
according to its data type. For a string of text, the return value consists of
the first letters preceding a space.
Function type Input/Output
Syntax (read string)
Example (read "hello world") returns hello as an atom
(read "1 2 3 4") returns the number 1
(read "(x y z) (a b c)") returns the list (x y z)
read-char
read-char reads a single character from either the keyboard or the optional
file descriptor. The return value is the ASCII value of the character typed. If
the file descriptor is not supplied, read-char waits for the user to enter a key
on the keyboard followed by a . The first key the user presses is returned.
Subsequent calls to read-char return all keys subsequently pressed by the
user up to the or a space.
Function type File Input/Output
Syntax (read-char [descriptor])
Example (read-char) (user presses 'a' and ) returns 97
See also read-line, write-char, write-line
read-line
read-line reads a string from the keyboard or from the optionally specified file
descriptor. If an end of file condition is encountered when reading from a file,
read-line returns nil. Otherwise, read-line returns the string which it read.
Function type File Input/Output
Syntax (read-line [descriptor])
Example (read-line) returns "abc"
(read-line fp) next line from the file fp
See also read-char, write-char, write-line
redraw
redraw, if called without arguments, redraws the contents of the graphics
window. If the optional ename is given, redraw redraws the specified entity
on the screen. If the optional mode argument is supplied, the entity specified
is redrawn according to the following table:
Mode Type of redraw
1 Redraw the specified entity.
2 Undraw the specified entity.
3 Highlight the specified entity.
4 Unhighlight the specified entity.
Use redraw after using grvecs or grdraw to restore viewport contents.
Function type Graphics Manipulation
Syntax (redraw [ename [mode]])
Example (setq ename (cdar (entget (car (entsel)))))
(redraw ename 2) hide the entity
See also grdraw, grvecs
repeat
repeat executes a given expression the specified number (positive) of times.
Function type Special Forms
Syntax (repeat number expression...)
Example (repeat 10
(princ "\nHello world")
)
See also while
rem
rem divides the first numeric argument by the second numeric argument and
returns the remainder.
Function type Arithmetic
Syntax (rem number number)
Example (rem 2.5 2) returns .5
(rem 4 2) returns 0
reverse
reverse reverses the contents of a given list and returns the new list.
Function type List
Syntax (reverse list)
Example (reverse '(1 2 3)) returns (3 2 1)
rtos
rtos returns a string representing a real number based on the settings of the
optional parameters: mode, precision, the system variable unitmode and
dimzin. The mode and precision arguments correspond to the system
variables lunits and luprec, respectively. rtos accepts the string in the same
form which distof returns. The valid values for mode are:
1 scientific
2 decimal
3 engineering (feet/inches)
4 architectural feet/inches
5 fractional
Function type Miscellaneous
Syntax (rtos number [mode [precision]])
Example (rtos 40.0 4) returns "3 4\""
See also distof
set
The set function sets the value of a quoted symbol to an expression and
returns that value. For example:
(set 'qsymbol 3.62) returns 3.62 and sets qsymbol.
(set 'newsym 'qsymbol) returns qsymbol and sets newsym.
set can also be used to indirectly assign a new value to an unquoted symbol.
Given the above example:
(set newsym 76) assigns 76 to qsymbol, indirectly.
Function type Symbol
Syntax (set symbol expression)
Example (set var 3.5) returns 3.5 and sets var
See also setq
setq
setq sets the value of a symbol to an expression. Multiple symbols may have
values supplied by "pairing" symbol-expression combinations. If multiple
assignments are performed, only the last assignment is returned.
Function type Symbol
Syntax (setq symbol expression ...)
Example (setq x 5.0) returns 5.0
(setq lst '(a b c d e)) returns (a b c d e)
See also set
setvar
setvar sets the given system variable to the value specified. Enclose all
system variable in quotes and set variables to values of the correct data type.
Function type System Variables
Syntax (setvar "variable" value)
Example (setvar "cmdecho" 0)
See also getvar
sin
sin returns the sine of an angle. The angle must be expressed in radians.
Function type Arithmetic
Syntax (sin angle)
Example (sin 3.1412) returns 0
Complement cos, tan
See also cos, tan
sqrt
sqrt returns the square root of a given number.
Function type Arithmetic
Syntax (sqrt number)
Example (sqrt 4) returns 2
ssadd
ssadd, if called without arguments, builds a new selection set with no
members. If called with only a single entity name, ssadd returns a new
selection set with only one entry. If called with an entity name and a
selection set, ssadd adds the entity to the selection set. ssadd returns the
new selection set. If the specified entity name already exists in the given
selection set, no operation takes place and no error occurs.
Function type Selection Set Tools
Syntax (ssadd [ename [ss]])
Example (ssadd) returns a new, empty selection set
(ssadd ename) returns a new ss with one entry
(ssadd ename ss) returns ss with ename added
See also ssdel, ssfree, ssget, sslength, ssmemb, ssname
ssdel
ssdel deletes the entity specified from the specified selection set. If the
specified entity is not present in the given selection set, ssdel returns nil.
Otherwise, ssdel returns the selection set less the specified entity name.
The selection set number is maintained instead of returning a new selection
set.
Function type Selection Set Tools
Syntax (ssdel ename ss)
Example (ssdel ename selset)
See also ssadd, ssfree, ssget, sslength, ssmemb, ssname
ssfree
ssfree releases the memory allocated to a given selection set, thus losing the
contents of the specified selection set. Selection sets which have been ssfreed
may be reused, but must be reassigned using ssget.
This function is not available in AutoLISP.
Function type Selection Set Tools
Syntax (ssfree selset)
Example (ssfree ss) frees the selection set ss.
See also ssadd, ssdel, ssget, ssmemb, ssname
ssget
ssget returns a selection set. The optional mode argument aids in specifying
the selection method to invoke. Additionally, two points constructing a
window can be specified in which to limit the selection criteria. Unlike
AutoLISP, the optional point-list argument only supports one point. Use the
optional filter list to specify entities to select that match a given criteria.
The following table details the options for ssget:
(ssget) General entity selections.
(ssget "P") Most recently selected entities.
(ssget "L") Last entity added to the database.
(ssget '(1 1)) All entities passing through point 1,1.
(ssget "W" '(1 1) '(3 3))
All entities inside the window of 1,1 to 3,3.
(ssget "C" '(1 1) '(3 3))
All entities crossing the window of 1,1 to 3,3.
(ssget "X") All entities.
(ssget "X" filter)
All entities matching the specified filter.
(ssget filter) General selection with only entities matching the given
filter being returned.
(ssget "P" filter)
Most recent entities matching filter.
Unlike AutoLISP, the I, WP, CP and F arguments for mode are not supported.
CADKEY LISP supports up to 256 selection sets.
Selection set filters operate with all of the ssget selection modes. A selection
set filter list is equivalent to an association list. See entget for a discussion
on association lists.
Function type Selection Set Tools
Example (ssget "X" ((0 . "CIRCLE") (62 . 1)))
ssget supports relational tests. Relational tests are used to further specify the
entities to include in a selection set. Relational tests are included in typical
filter lists with a group code of -4 and apply to the group immediately
following.
Example (ssget "X" ((0 . "CIRCLE") (-4 . "=") (40 . 1.0)))
The following relational tests may be included in a filter list:
* Wildcard. Everything matches.
= Equals. Values must match.
!= Not equals.
/= Not equals.
<> Not equals.
< Less than.
<= Less than or equal to.
> Greater than.
>= Greater than or equal to.
& Bitwise AND.
&= Bitwise mask equal to.
Boolean operators may be nested inside filter lists to further describe the
selection criteria. Boolean operators are used to logically group relational
tests in a given filter list. Boolean operators are also indicated by preceding -
4 group codes. All Boolean operators must be balanced in a filter list. The
following Boolean operators may be utilized in filter lists:
Starting Ending
Syntax (ssget [mode] [pt1] [pt2] [point-list] [filter])
Example
(ssget "X" ((-4 . "")
(-4 "")
(-4 . "OR>"))
)
Returns a selection set containing blue lines and arcs with a radius of
0.25.
See also ssadd, ssdel, ssfree, sslength, ssmemb, ssname, sslength
sslength
sslength returns the number of entities in the specified selection set. Values
are returned as an integer. If the selection set is empty, the value returned is
0.
Function type Selection Set Tools
Syntax (sslength ss)
Example (setq slength (sslength selset))
See also ssadd, ssdel, ssfree, ssget, ssmemb, ssname
ssmemb
ssmemb determines whether the specified entity is a member of the given
selection set. If the entity is a member, the entity name is returned. If not,
ssmemb returns nil.
Function type Selection Set Tools
Syntax (ssmemb ename ss)
Example (setq ename (cdar (entget (car (entsel)))))
(if (/= (ssmemb ss ename) nil)
(princ "Selected entity is a member of 'ss'.")
)
See also ssadd, ssdel, ssfree, ssget, sslength, ssname
ssname
ssname returns the entity name which resides at the i'th position in a
specified selection set. If i is out of range of the possible entries in the
selection set, ssname returns nil.
Function type Selection Set Tools
Syntax (ssname ss i)
Example (setq ename (ssname ss 5))
(if (/= ename nil)
(redraw ename 3) highlight entity #5 in ss.
)
See also ssadd, ssdel, ssfree, ssget, sslength, ssmemb
strcase
strcase returns the given string in all uppercase if the optional parameter
type is omitted or it evaluates to nil. Otherwise, strcase converts the given
string to lowercase.
Function type String
Syntax (strcase string [type])
Example (strcase "Hello") returns "HELLO"
(strcase "Hello" T) returns "hello"
strcat
strcat concatenates two or more strings into one and returns the resultant
string.
Function type String
Syntax (strcat str str str...)
Example (strcat "See " "Spot " "run") returns "See Spot run"
strlen
strlen returns the length, in characters, of a given string of text.
Function type String
Syntax (strlen string)
Example (strlen "See Spot run.") returns 13
subst
subst searches a given list for an existing item and, if found, replaces every
occurrence of the existing item with the new item. If the existing item cannot
be found in the given list, subst returns the original list unchanged.
Function type List
Syntax (subst new existing list)
Example (setq lst '("a" "b" "c"))
(subst "d" (car lst) lst) returns ("d" "b" "c")
substr
substr returns the substring from a given string starting at offset and,
optionally, continuing len characters. If len is not specified, the remainder of
the string from offset is returned.
Function type String
Syntax (substr string offset [len])
Example (substr "See Spot run." 4 4) returns "Spot"
tan
tan returns the tangent of an angle. The angle must be expressed in radians.
Function type Arithmetic
Syntax (tan angle)
Example (tan 3.1412) returns 0
Complement sin, cos
See also cos, sin
terpri
terpri prints a newline to the output screen in the command area.
Function type Input/Output
Syntax (terpri)
Example (terpri)
textbox
textbox returns the lower left and upper right coordinates of a rectangle
which defines the perimeter of a given text entity. The rectangle defined by
the points returned always encompasses the entire text string, regardless of
oblique angle or slant with the exception of descending characters such as j
and p. The lower-left point returned is always 0,0 and the upper-right point
is relative to the first point. The return value of textbox is a list of two three-
dimensional points. The specified entity must be of type text.
Function type Miscellaneous
Syntax (textbox ename)
Example (setq e (entget (car (entsel "\nSelect text: ")))
l (textbox e)
len (caadr l)
hgt (cadadr l)
p1 (cdr (assoc 10 e))
ang (cdr (assoc 50 e))
p2 (polar p1 ang len)
p3 (polar p2 (+ ang 1.57) hgt)
p4 (polar p1 (+ ang 1.57) hgt)
)
(command ".line" p1 p2 p3 p4 "c")
textpage
textpage switches control to the "command-line" dialog box and clears the
contents of the window. This function is equivalent to the CLS MS-DOS
command for clearing the screen. Unlike textpage, textscr does not clear the
screen when executed.
Function type Screen Management
Syntax (textpage)
Example (textpage)
Complement textscr
See also graphscr, textscr
textscr
textscr switches control to the "command-line" dialog box window. Unlike
textpage, textscr does not clear the window after switching to it.
Function type Screen Management
Syntax (graphscr)
Example (graphscr)
Complement graphscr
See also graphscr, textpage
trace
trace adds the specified function to CADKEY LISPs trace list. Whenever a
function in the trace list is entered or exited, a message is printed to the
screen. The function returns a list containing the names of all functions
being traced.
Function type Debugging and Errors
Syntax (trace function)
Example (trace myline)
See also untrace
type
type returns the data type of a given item. The possible values which type
may return are:
int - integers
real - real numbers (floating point)
file - a file handle
str - a string of text
sym - a symbol
list - a list
subr - a subroutine
pickset - selection sets
ename - an entity name
Function type Predicate
Syntax (type item)
Example (type 1.0) returns real
(type '(a b c)) returns list
untrace
untrace removes a function from the trace list and returns the list of all
remaining functions in the trace list.
Function type Debugging and Errors
Syntax (untrace function)
Example (untrace function)
See also trace
ver
ver returns the current version of CADKEY LISP in use.
Function type System Functions
Syntax (ver)
Example (ver)
vmon
vmon turns on the virtual memory system inside CADKEY LISP, which is on
by default.
Function type Miscellaneous
Syntax (vmon)
Example (vmon)
wcmatch
wcmatch performs a wild card pattern match on a given string versus a given
pattern. Both the string and the pattern must be quoted strings. If a match is
found, wcmatch returns T, otherwise nil is returned.
Valid characters that may be used in the pattern are:
# Matches any single numeric digit.
@ Matches any single alphabetical character.
. Matches any single non alphanumeric character.
* Matches any series of characters, including "".
? Matches any single character.
~ If it is the first character in the pattern, it matches
anything except the pattern.
[...] Matches any one of the characters enclosed.
[~...] Matches any single character not enclosed.
- Used inside brackets to specify a range for a single
character.
, Separates two patterns.
` Escapes special characters, reads next character literally.
Function type Miscellaneous
Syntax (wcmatch string pattern)
Example (wcmatch "Test" "T*") returns T
while
while evaluates a given test expression and if it is not nil, evaluates any
following expressions. This procedure is repeated until the test expression
returns nil.
Function type Special Forms
Syntax (while test expression...)
Example (setq x 0)
(while (/= x 10)
(setq x (1+ x))
)
See also repeat
write-char
write-char writes a single character to the screen or to an optionally specified
file descriptor. The character supplied is the ASCII code for the desired
character. The given character is returned by write-char.
Function type File Input/Output
Syntax (write-char char [descriptor])
Example (write-char 97) prints a
See also read-char, read-line, write-line
write-line
write-line writes the specified string to either the screen or to an optionally
supplied file descriptor. If the string is written to a file, the double quotation
marks are omitted. The given string is returned by write-line.
Function type File Input/Output
Syntax (write-line string [descriptor])
Example (write-line "hello")
prints "hello" and returns "hello"
(write-line "hello" fp)
writes hello and returns "hello"
See also read-char, read-line, write-char
zerop
zerop returns T if a given item is or evaluates to 0, otherwise zerop returns
nil.
Function type Predicate
Syntax (zerop item)
Example (zerop 0.0) returns T
(setq a 1.0)
(zerop a) returns nil
Entity group codes
Arc
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "ARC"
6 string Line type
8 string Layer name
62 integer Color
10 3dpoint X Center point
40 real X Radius
50 angle X Starting angle
51 angle X Ending angle
80 integer View number
210 3dpoint Normal vector
Circle
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "CIRCLE"
6 string Line type
8 string Layer name
62 integer Color
10 3dpoint X Center point
40 real X Radius
50 angle X Starting angle (0)
51 angle X Ending angle (360)
80 integer View number
210 3dpoint Normal vector
Dimension
Horizontal, Aligned and Vertical dimensions
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity "DIMENSION"
6 string Line type
8 string Layer name
62 integer Color
70 integer X X
X
X
X Dimension type
0 - horizontal
1 = aligned
2 = vertical
1 string Dimension text
10 3dpoint Definition point
11 3dpoint X Text point
13 3dpoint X Reference line end point
14 3dpoint X Reference line end point
50 real X Measurement axis
80 integer View number
Diameter and Radial Dimensions
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity "DIMENSION"
6 string Line type
8 string Layer name
62 integer Color
70 integer X X
X
X Dimension type
3 = diameter
4 = radial
1 string Dimension text
10 3dpoint Definition point
11 3dpoint X Text point
15 3dpoint Dimension reference point
16 3dpoint X Reference center point
40 real X Reference radius
50 angle X Starting angle (degrees)
51 angle X Ending angle (degrees)
80 integer View number
Angular dimensions
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity "DIMENSION"
6 string Line type
8 string Layer name
62 integer Color
70 integer X X Dimension type
X 5 = angular
1 string Dimension text
10 3dpoint X Ref. line #2, end point
11 3dpoint X Text point
13 3dpoint X Ref. line #1, start point
14 3dpoint X Ref. line #1, end point
15 3dpoint X Ref. line #2, start point
16 3dpoint Definition point
71 integer X In-angle dimension flag
80 integer View number
Label (complex)
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "LABEL"
8 string Layer name
62 integer Color
10 2dpoint X Insertion point
40 real Text height
1 string X Text string
50 real Text angle
51 real Text slant
41 real X-scale multiplier
7 string Text style
71 integer Text mirror flag
2 = mirrored
4 = upside down
72 integer Horizontal text alignment
0 = left justified
1 = centered
2 = right justified
3 = middle
4 = aligned
5 = fit
73 integer Vertical text alignment
0 = baseline
1 = bottom
11 3dpoint Alignment point
74 integer X Number of witness lines
75 integer X Number of leader lines
78 integer X Qty. witness + leader lines
80 integer View number
210 3dpoint Normal vector
Witness lines
(5 maximum, each in independent list):
Returned with subsequent calls to entget.
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start "LABEL:WITNESS"
6 string Line type
10 3dpoint X Starting x,y point
11 3dpoint X Ending x,y point
40 real Width of witness line
62 integer Color
78 integer X Witness line number
Leader lines
(5 maximum, each in independent list):
Returned with subsequent calls to entget.
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start "LABEL:LEADER"
78 integer Leader line number
62 integer Color
6 string Line type
40 real Width of leader line
10 2dpoint X Starting x,y point
11 2dpoint X Ending x,y point
Line
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "LINE
6 string Line type
8 string Layer name
10 3dpoint X Start point
11 3dpoint X End point
80 integer View number
210 3dpoint Normal vector
Node
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "VERTEX"
78 integer X Point number
10 3dpoint X Vertex point
40 real Starting width
41 real Ending width
Point
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "POINT
8 string Layer name
10 3dpoint X Insertion point
62 integer Color
80 integer View number
210 3dpoint Normal vector
Polygon (complex)
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "POLYGON"
66 integer Vertices follow flag
6 string Line type
8 string Layer name
62 integer Color
77 integer Fill
78 integer X Qty. of vertices to follow
80 integer View number
210 3dpoint Normal vector
Polyline (complex)
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "POLYLINE"
6 string Line type
8 string Layer name
62 integer Color
10 point X z-value = elevation
40 real Starting width (0-15, odd)
41 real Ending width (0-15, odd)
70 integer Type
0 = open (default)
1 = closed
2 = filled
76 integer Display style
0 = center
1 = round
2 = sharp
3 = tool path
77 integer Fill mode
0 = outline
1 = filled
78 integer X Qty. of vertices to follow
80 integer View number
210 3dpoint Normal vector
Seqend
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "SEQEND"
-2 ename X Sequence end
Spline (complex)
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "SPLINE"
6 string Line type
8 string Layer name
39 real Depth
62 integer Color
70 type X X Spline type
1 = 2d spline,
6 = 3d spline,
78 integer X Qty. of nodes which follow
80 integer View number
210 3dpoint Normal vector
Text
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "TEXT"
1 string X Text string
7 string Text style
8 string Layer name
10 2dpoint Insertion point
11 2dpoint Alignment point
40 real Text height
41 real X-scale multiplier
50 real Text angle
51 real Text slant
62 integer Color
71 integer Text mirror flag
2 = mirrored
4 = upside down
72 integer Horizontal text alignment
0 = left justified
1 = center
2 = right justified
3 = middle
4 = aligned
5 = fit
73 integer Vertical text alignment
0 = baseline
1 = bottom
2 = middle
3 = top
80 integer View number
210 3dpoint Normal vector
Vertex
Code Type Entmake Entmod Description
Required Read only
-1 ename X Entity name
0 string X X Start entity - "VERTEX"
78 integer X Point number
10 3dpoint X X Vertex point
40 real Starting width
41 real Ending width
Application Development Environment
The CADKEY LISP Application Development Environment, ADE, uses pull-
down menus and dialog boxes as its user interface. You can make menu
selections with either a mouse or the keyboard. For the easiest access to
menu items, use a mouse. You can also use a digitizer which emulates a
Microsoft mouse.
ADE utilizes what is known as a "desktop". The desktop consists of any
window or utility that is active in the environment at any time. Only one
window can be active at a time. All main menu operations affect only the
"active window" unless otherwise specified. When an operation is not
available based on the current state of the desktop, related menu options are
"grayed" out. Menu items which are followed by ... indicate that a dialog box
will provide more information to complete the operation.
There are two types of dialog boxes:
o A "modal" dialog box requires an action from the user before any other
operation can take place. An example of this type of dialog box is the
File:Open dialog box.
o A "constant" dialog box can be open and on the desktop at all times and
does not require the full attention of the user. Other processes can
continue while this dialog box is open. An example of this type of dialog
box is the ASCII chart.
Using ADE
To use ADE, be sure the directory where the LISP programs and Help files
are stored is in your path statement. At the DOS prompt type lspedit and
press . At the main screen, a screen displaying a copyright notice and
available memory appears.
Additionally, you can execute ADE from CADKEY at the Command prompt by
typing the command lspedit. This forces CADKEY to shell out and execute
ADE which reduces the code/test/debug cycle.
Even though ADE is available for editing CADKEY LISP Applications you can
use any ASCII text editor.
Editor Controls
All windows contain controls. These controls consist of horizontal and
vertical scroll bars, a window-sizing arrow, a window-sizing corner, a
window-closing box, a title, a file position indicator, an edited indicator, and
a window-moving bar.
Horizontal Scroll Bar
Use the horizontal scroll bar to move horizontally in the current editing
window. The left arrow moves the position indicator to the left until the
window scrolls as far left as possible. The right arrow moves the position
indicator and scrolls the window to the right. You can select the position
indicator with a mouse and drag it into position.
Vertical Scroll Bar
Use the vertical scroll bar in the same way as you use the horizontal scroll
bar except the window is scrolled vertically instead of horizontally.
Window-sizing Arrow
Use the window-sizing arrow to change the size of the active window. To
shrink the window to a smaller size click on the down arrow. To expand the
window to its maximum size click on the up arrow.
Window-sizing Corner
Use the window-sizing corner to change the size of the window. Click on this
control and drag the window in or out to change its size.
Window-closing Box
Use the window-closing box to close the active window. When you select this
control on an editor window which contains an edited file ADE prompts you
to save the file prior to closing the window.
Title
The title portion of the window (filename.lsp) shows the name of the window
in use. If the window is an editor window, the name of the file being edited
appears.
Window-moving Bar
Use the window-moving bar (----filename.lsp----) to move the window on the
desktop. Selecting this portion of a window with the mouse and hold down
the mouse button for ADE to allow you to reposition the window on the
desktop.
File-position Indicator
The file-position indicator (11:30) shows the current line number and column
position in the file being edited. The line number precedes the colon, :, and
the column number follows the colon.
File-edited Indicator
The file-edited indicator (*), if present, indicates that the file in the current
editor window needs to be saved prior to closing the window or exiting the
environment.
Dialog Box Controls
Check Boxes
Use check boxes to select an optional item on a dialog box. All check boxes
have a description explaining their purpose. Each check box has an active
area which is between two braces, [ ]. Check boxes are "modal". They are
either on or off. A check box which is on is filled in with an X. When a check
box is off it is left blank. To turn a check box on select it. You can also type
the highlighted character in the description of the check box to toggle a
check box on or off.
Radio Buttons
Use radio buttons to select one option out of a group of options. Each radio
button option has a highlighted character in the description which you use to
select it. You can only select one radio button within a group.
Entry Fields
Use an entry field to enter a value or a string. The values which you can
enter in entry fields must adhere to the type of information expected for that
field. Do not enter alphabetic characters in a field which expects a numeric
value.
Buttons
Use buttons to generate an activity within a dialog box. Typical buttons are:
OK, Help and Cancel. Selecting these buttons tells ADE to take an action
based on the button you pressed. Selecting the window-closing box tells ADE
that the dialog box is Canceled.
Main Menu Options
The following section discusses each of the main menu options. Each main
menu item in this section is underlined and each of the submenu item is
bold and labeled with a colon.
Triple Bar
The Triple Bar menu option contains seven menu options. The main purpose
of this menu is to allow the ADE user to add commands/programs to the
menus. Choose a command by pressing the associated keys.
About
This menu option shows the copyright notice. There is no additional
functionality behind this menu item.
User Setup
Use this menu option to define the programs to execute when you press [Alt]-
[x] (where x = 1 to 5).
Type the name of the program to execute in the Program name column. If the
directory in which the executable resides is not defined in the active path,
include the path.
If the program requires arguments, supply them in the Arguments column.
Check the Wait column if you want ADE to pause for a keystroke when the
designated program finishes executing.
When entering commands to execute, make sure there is sufficient memory
to execute the program from within ADE, otherwise the program may not
load or execute.
User Program1-5
This menu item executes any user-defined program. You can run these items
by pressing [Alt] together with the appropriate key, [1]-[5].
The following is a sample user program which executes a directory listing of
*.lsp in the current working directory and pauses when finished.
Program name Arguments Wait
dir *.lsp X
File...
There are eight submenu options on the File menu. Use these menus to
open/edit existing CADKEY LISP program files (*.lsp), to start a new .lsp file
and to save the current file.
Open
Use the Open menu to open an existing CADKEY LISP ASCII file (*.lsp). The
shortcut keystroke to this menu option is [F3].
The Name field in the Open menu dialog box determines the DOS mask to
use to list the files in the Files field. The default mask is *.lsp for CADKEY
LISP files. Change the mask by selecting the Name field and entering the new
mask. You can supply a new path in the Name field to change directories and
provide a new directory listing in the Files field. If you supply a different drive
in the Name field, ADE changes drives and then updates the Files field.
If you know the name of the file you want to open, type it into the Name field.
If you type in a path, ADE searches that drive/directory to open the file. If
the file does not exist, ADE creates a new file with the name you supplied.
All files that match the mask supplied in the Name section are listed in the
Files section of the dialog box. Select any file listed in that section by
pressing [Ώ] and then locating the highlight bar on the proper selection with
the arrow keys, or by double-clicking the mouse on the selection. If the file
you want is not displayed, use the scroll bar on the bottom of the Files
section to scroll the file list. The .. entry represents the parent directory
which is immediately above the current working directory. Selecting .. forces
a directory change to the parent of the current directory where a new list of
files matching the Name will appear in the Files section.
As a file is highlighted in the Files section, information concerning the file
appears on the bottom of the dialog box. This information includes the file's
directory, name, size (in bytes), date and time.
New
Select New from the file menu to create a new editor on the desktop and open
a file named noname.lsp. Use this menu option to create a new file. See the
Save as menu option to name the file before you save, compile, or exit ADE.
Save
Use the Save menu option to save the active file. You can also access Save by
pressing [F2].
Save as...
Use the Save as... menu option to save the current file to a new name. A
dialog box much like the File Open dialog box appears for you to name the
file. Type the file name into the Name field and/or select a different directory
to write the file to by selecting the .. option in the Files section of the dialog
box.
Save all
Use the Save all menu option to save all files in editor windows which are
active on the desktop.
Change dir...
Use the Change dir... menu option to change the current working directory.
This option uses a graphical directory structure that allows easy selection of
a directory.
DOS Shell
Use the DOS Shell menu option to temporarily halt ADE and execute
command.com. This is useful when you need to exit to DOS to perform some
type of operation and then re-enter ADE.
Take care when executing programs while the environment is suspended
because the ADE cannot protect itself from other programs. Also, memory is
limited while the ADE is active in the background.
Exit
Use the Exit menu option to leave the Application Development Environment.
Edit
Use the Edit main menu option to undo an edit and to manage the clipboard
contents. The utilities in this menu operate on "highlighted" pieces of text. To
highlight a piece of text, place the cursor on the first character of the text you
want and hold down [Shift] while moving the arrow keys to highlight the rest of
the text.
Undo
Use the Undo option to reverse the last editing action you took.
Cut
Use the Cut option to remove a highlighted section of text from an editor
window. The contents of the highlighted section are removed from the editor
window and placed on the clipboard where you can insert them at another
location in the window or into another window.
Copy
Use the Copy option to copy the highlighted section of text to the clipboard to
insert at another location in the window or into another window.
Paste
Use the Paste option to copy the contents of the clipboard into the current
cursor position within an editor window. You can view the contents of the
clipboard by using the Show Clipboard menu option.
Show Clipboard
Use the Show Clipboard option to view or modify the contents of the
clipboard. You can place sections of files on the clipboard where they stay
until you exit ADE.
Clear
Use the Clear option to remove a highlighted section of text and NOT place it
on the clipboard. You cannot recover this text which is permanently deleted.
Search...
Find...
Use the Find... option to find a string of text in a file. Define the string to find
in the Text to find field of the Find dialog box. You can also use the Case
sensitive and Whole words only check boxes on the dialog box to search more
selectively. Case sensitive differentiates between "Hello" and "HELLO". Use
Whole words only to distinguish between "Indianapolis" and "Indiana", for
example.
Replace...
Use the Replace... option to search and replace a string in a file. Define the
string to find in the Text to find field of the Replace dialog box. Define the
replacement string in the New text field. You can also use the Case sensitive
and Whole words only check boxes on the dialog box to search more
selectively. Case sensitive differentiates between "Hello" and "HELLO". Use
Whole words only to distinguish between "Indianapolis" and "Indiana", for
example.
Use Prompt on replace to tell ADE to verify each replacement. Use Replace all
to replace every occurrence of the search string.
Search again
Use the Search again option to search for the string already defined in the
Find... menu option.
Environment...
Use the Environment main menu option to manage the contents of the
desktop and to customize the environment. ADE utilizes two files to maintain
the status of the environment between sessions. The first file, lspedit.cfg,
contains all compiler settings, project file status and name (if active), window
colors, etc. The second file, lspedit.dst, contains the definition of each
window present on the desktop. This is the file that restores the desktop
between editing sessions, restoring windows to their previous position and
locating the cursor where it was at the time of exit.
Repaint desktop
Use the Repaint desktop menu option to refresh the contents of the desktop.
Occasionally, after another program has been run from the user program list
(See _:User Setup), the desktop contains miscellaneous and random text. Use
Repaint desktop to eliminate these characters and to redisplay the desktop.
Clear desktop
Use the Clear desktop menu option to remove every window on the desktop.
This includes editors, calculators, charts, etc. If an editor window is present
on the desktop and the file contained in it needs saving, ADE will prompt you
to save the file prior to clearing it.
Save desktop
Use the Save desktop option to save the current contents of the desktop to
the file named abc.dst. This is done automatically when you exit to ease
restoration of the environment between editing sessions.
Retrieve desktop
Use the Retrieve desktop option to retrieve the desktop from an existing
lspedit.dst file previously created by ADE. If lspedit.dst does not exist in the
present working directory, no action takes place.
Save Configuration
Use the Save Configuration option to store the status of compiler settings,
colors, etc. to abc.cfg. After you make substantial changes, it's a good idea to
save the configuration. Also, if you make extensive changes to color
preferences, etc., it's a good idea to make a backup copy of abc.cfg.
Configure Environment
Use the Configure Environment option to indicate to ADE the default window
operation and where to store the configuration file lspedit.cfg.
Multi-file Window Default
The Multi-file window default determines the behavior of ADE when multiple
files are on the desktop at one time. The default for this value is None.
Cascade tells ADE to layer editor windows on top of each other with just the
title showing on the top of each window. Tile tells ADE to tile each editor
window into equal sizes on the desktop which is useful when more than
three files are on the desktop.
Save lspedit.cfg in
The ADE configuration file can be stored in one of two places:
o In the present directory.
o In the CADKEY LISP ADE directory where the executables reside. A
typical example of this directory is c:\cadkey\lsp.
If lspedit.cfg is not found in the present directory, ADE searches the directory
of executables. By storing the configuration file in the present directory,
multiple configurations can be maintained - one for each project/
subdirectory.
Utilities...
The Utilities main menu option contains many useful tools for expediting
program development, including a calculator, calendar, an ASCII chart,
alarm, etc. The ASCII chart, calculator, and calendar can reside on the
desktop at all times. The other tools are for setting colors, mouse controls,
etc., and it is not practical to leave them on the desktop.
Calculator
Multiple calculators can be opened and left on the desktop. The calculator
performs basic mathematical operations.
The left arrow key clears the leftmost number from the display area.
[C] clears the entire display.
+/- key toggles the sign on the number in the display.
The mathematical operators employed by the calculator are +, -, *, /, for
addition, subtraction, multiplication and division, respectively.
The calculator can be moved about the desktop by selecting the window-
moving bar on the top of the window. To close the calculator, select the
window-close control.
Calendar
To change the month displayed by the calendar, use the up and down arrow
keys on the keypad or select the up and down arrows on the calendar
display. The current date is highlighted in the calendar. The calendar may be
moved about the desktop by selecting the window-moving bar on the top of
the window. To close the calendar, select the window-close control.
ASCII chart
The ASCII chart displays all 256 characters in the ASCII character set. To see
the ASCII value of a specific character, select the character and the status
line on the ASCII chart will display the character, the decimal value, and the
hexadecimal value. The ASCII chart can remain on the desktop at all times
for reference. The ASCII chart may be moved about the desktop by selecting
the window-moving bar on the top of the window. To close the chart, select
the window-close control.
Window Colors
Use the Window Colors option to modify the window colors used in ADE. You
can modify menus, dialog boxes, calculators, editors, the calendar, the ASCII
chart, and the help windows.
To modify the colors which these groups of windows use, select the desired
group from the Group area on the Colors dialog box. The Item area on the
dialog box lists all possible color modifications which you can implement.
Once you select an item, you can select the color for that item. You can enter
both foreground and background values for a given item. The test window
below the background color selections indicates how the colors will appear
when used together.
Some windows do not automatically change color upon your selection; you
must close and reopen them for the new colors to take affect.
Mouse control
Use the Mouse control option to control how ADE handles input from the
mouse. You can also use a digitizer which emulates a mouse with ADE.
Double-click speed: Selections made within the ADE menus, dialog boxes,
etc., require double clicks (two rapid pressings of the primary mouse button).
The time difference which determines if two clicks were a "double click" or
just two clicks in a row is determined by the "double-click speed". This speed
is controlled by moving the indicator (_) to the appropriate position on the
slide bar. Selecting either of the arrows maximizes or minimizes the setting of
the double click speed.
Setting this value too fast results in the inability to select items within the
environment.
Reverse mouse buttons: ADE allows you to switch the "primary" mouse
button from left to right. Those persons who are left handed may want to use
this option.
Install/Uninstall mouse program: Some digitizers can emulate mice. ADE
can automatically initialize the driver to the digitizer at program start so the
digitizer acts like a mouse. The Uninstall option removes the driver. ADE
expects the name of an executable program to be entered in these fields. The
name of the program and options will be executed upon entering and exiting
the environment.
Utilizing these options may require some trial and error. Due to the large
number of digitizers manufactured, BitWise Solutions, Inc., cannot test all
digitizers for compatibility with this feature.
Free memory
Use the Free memory menu option to inform the user of the amount of free
memory which exists. Selecting this menu option calls up a dialog box which
contains the copyright date of the CADKEY LISP ADE and the amount of
available memory (in bytes) available to ADE at the time. This dialog box can
be called-up automatically at the start of each session if so desired. To do so,
check the box titled Display.
Windows...
Use the Windows main menu option to manage the windows on the desktop.
These options move, size, and position of windows.
Size/move
Use the Size/move menu option to size or move the active window. To resize
the window using the keyboard, hold [Shift] and size the window using the
arrow keys. To move the window using the keyboard, use the arrow keys to
position it properly. If the active window has a resize corner select it and hold
down the primary mouse button to size the window. To move the window
using a mouse, select the title bar (-----filename.lsp------) and hold down the
mouse button until the window is positioned properly. You can also select
this menu option using [Ctrl]-[F5] as a shortcut.
Zoom
The Zoom menu option maximizes the currently active window, overwriting
any other windows on the desktop. If the active window is already "zoomed",
use this option to restore it to its previous size. You can also zoom the
window by selecting the title bar (-----filename.lsp------). The shortcut
keystroke for this menu option is [F5].
Tile
Use the Tile menu option to arrange all windows on the desktop into a tiled
format. Each window is given approximately the same amount of space on
the desktop.
Cascade
Use the Cascade menu option to arrange all editor windows on the desktop
into a layered arrangement. Each editor window is layered over the previous
window and is one row lower and one column to the right. The title of each
window remains visible on the desktop.
Next
Use the Next menu option to move through the various windows on the
desktop. The windows are stored in a circular list in ADE which you can
move through using Next. The shortcut keystroke for this menu option is [F6].
Previous
Use the Previous menu option to move through the various windows on the
desktop. The windows are stored in a circular list in ADE which you can
move through using Previous. The shortcut keystroke for this menu option is
[Shift]-[F6].
Close
Use the Close menu option to close the active window on the desktop. This
option has the same effect as selecting the close window icon on the upper-
left corner of the window. The shortcut keystroke for this menu option is [Alt]-
[F3].
Help...
Use the Help menu option to activate the ADE on-line Help system. The Help
system contains detailed information on all CADKEY LISP statements,
functions, extended BASIC statements and functions, compiler error
messages, menu items, etc. The majority of the CADKEY LISP manual is on-
line for rapid access. The shortcut keystroke for this menu option is [F1].
Help on help
Use the Help on help menu option to obtain help on the Help system. The
Help system can be activated in three different ways:
o Press [F1] at any time in the environment. This displays the initial Help
system window and the Help system index.
o Locate the cursor on a keyword (statement, function, etc.) and press [Ctrl]-
[F1]. This activates the context-sensitive Help and displays a detailed
window describing the item in question.
o Place the mouse cursor on the keyword and press the primary (right is the
default) mouse button.
Index
Use the Index menu option to display a list of all topics contained in the Help
system. You can use this list to locate a particular topic. Once you locate the
topic, press to activate the detailed help window.