LISP Compatibility

LISP Compatibility

Functions Unique to progeCAD LISP

The following functions are unique to the implementation of LISP included with progeCAD :

Function Comments
ads Checks what SDS applications are loaded in progeCAD .
endtransaction Ends the processing of a transaction.
lpad Pads a text string with spaces to the left.
rgbstrtocolorref Converts a string to an integer index.
rpad Pads a text string with spaces to the right.
starttransaction Begins the processing of a transaction.
tan Returns the tangent.
trim Trims spaces from a string.
xload Loads an SDS application.
xunload Unloads an SDS application.

LISP-Compatible Functions with Enhanced Features

The following LISP functions in progeCAD have enhanced features.

Osnap in progeCAD supports these additional entity snap modes:

Mode Meaning
"po" POint
"pla" PLAnview (2D intersection)
"vis" VISible (apparent intersection)

The functions ssget and ssadd in progeCAD recognize these additional selection set parameters:

Mode Meaning Points Example
"CC" Crossing Circle point1 point2 (ssget "CC" '(1 1) '(2 2))
"O" Outside points-list (ssget "O" ptlist)
"OC" Outside Circle point1 point2 (ssget "OC" '(1 1) '(2 2))
"OP" Outside Polygon points-list (ssget "OP" ptlist)
"PO" POint point1 (ssget "PO" '(1 1))

Functions Partially Compatible with LISP in Other CAD Systems

The following function is partially compatible with the LISP found in other CAD systems:

Function Comments
menucmd progeCAD supports P0 (cursor menu), P1 through P16 (the pulldown menus), I (image tile menus), and M (diesel expressions). progeCAD does not support A (aux menus), B (button menus), S (screen menu, obsolete), or T (tablet menus).

Undocumented Functions Supported by progeCAD

The following functions are supported by progeCAD but are not yet documented: FUNCTION, SAFEARRAY, SAFEARRAY, SAFEARRAY-GET-DIM, SAFEARRAY-GET-ELEMENT, SAFEARRAY-GET-L-BOUND, SAFEARRAY-GET-U-BOUND, SAFEARRAY-PUT-ELEMENT, SAFEARRAY-TYPE, SAFEARRAY-VALUE, VARIANT, VARIANT-TYPE, VARIANT-VALUE.

The following VL* functions are also supported but not documented: VL-ACAD-DEFUN, VL-ACAD-UNDEFUN, VL-ARX-IMPORT, VL-BB-REF, VL-BB-SET, VL-BT, VL-BT-OFF, VL-BT-ON, VL-CATCH-ALL-APPLY, VL-CATCH-ALL-ERROR-MESSAGE, VL-CATCH-ALL-ERROR-P, VL-CMDF, VL-CONSP, VL-DIRECTORY-FILES, VL-DOC-EXPORT, VL-DOC-IMPORT, VL-DOC-REF, VL-DOC-SET, VL-EVERY, VL-EXIT-WITH-ERROR, VL-EXIT-WITH-VALUE, VL-FILE-COPY, VL-FILE-DELETE, VL-FILE-DIRECTORY-P, VL-FILENAME-BASE, VL-FILENAME-DIRECTORY, VL-FILENAME-EXTENSION, VL-FILENAME-MKTEMP, VL-FILE-RENAME, VL-FILE-SIZE, VL-FILE-SYSTIME, VL-GET-RESOURCE, VL-INFP, VLISP-COMPILE, VL-LIST*, VL-LIST->STRING, VL-LIST-EXPORTED-FUNCTIONS, VL-LIST-LENGTH, VL-LIST-LOADED-VLX, VL-LOAD-ALL, VL-LOAD-COM, VL-LOAD-REACTORS, VL-MEMBER-IF, VL-MEMBER-IF-NOT, VL-MKDIR, VL-NANP,VL-POSITION, VL-PRIN1-TO-STRING, VL-PRINC-TO-STRING, VL-PROPAGATE, VL-REGISTRY-DELETE, VL-REGISTRY-DESCENDENTS, VL-REGISTRY-READ, VL-REGISTRY-WRITE, VL-REMOVE, VL-REMOVE-IF, VL-REMOVE-IF-NOT, VL-SOME, VL-SORT, VL-SORT-I, VL-STRING->LIST, VL-STRING-ELT, VL-STRING-LEFT-TRIM, VL-STRING-MISMATCH, VL-STRING-POSITION, VL-STRING-RIGHT-TRIM, VL-STRING-SEARCH, VL-STRING-SUBST, VL-STRING-TRANSLATE, VL-STRING-TRIM, VL-SYMBOL-NAME, VL-SYMBOLP, VL-SYMBOL-VALUE, VL-UNLOAD-VLX, VL-VBALOAD, VL-VBARUN, VL-VLX-LOADED-P.

The following VLAX* functions are also supported but not documented: VLAX-3D-POINT, VLAX-ADD-CMD, VLAX-CREATE-OBJECT, VLAX-CURVE-GETAREA, VLAX-CURVE-GETCLOSESTPOINTTO, VLAX-CURVE-GETCLOSESTPOINTTOPROJECTION, VLAX-CURVE-GETDISTATPARAM, VLAX-CURVE-GETDISTATPOINT, VLAX-CURVE-GETENDPARAM, VLAX-CURVE-GETENDPOINT, VLAX-CURVE-GETFIRSTDERIV, VLAX-CURVE-GETPARAMATDIST, VLAX-CURVE-GETPARAMATPOINT, VLAX-CURVE-GETPOINTATDIST, VLAX-CURVE-GETPOINTATPARAM, VLAX-CURVE-GETSECONDDERIV, VLAX-CURVE-GETSTARTPARAM, VLAX-CURVE-GETSTARTPOINT, VLAX-CURVE-ISCLOSED, VLAX-CURVE-ISPERIODIC, VLAX-CURVE-ISPLANAR, VLAX-DUMP-OBJECT, VLAX-ENAME->VLA-OBJECT, VLAX-ERASED-P, VLAX-FOR, VLAX-GET, VLAX-GET-ACAD-OBJECT, VLAX-GET-OBJECT, VLAX-GET-OR-CREATE-OBJECT, VLAX-GET-PROPERTY, VLAX-IMPORT-TYPE-LIBRARY, VLAX-INVOKE, VLAX-INVOKE-METHOD, VLAX-LDATA-DELETE, VLAX-LDATA-GET, VLAX-LDATA-LIST, VLAX-LDATA-PUT, VLAX-LDATA-TEST, VLAX-MAKE-SAFEARRAY, VLAX-MAKE-VARIANT, VLAX-MAP-COLLECTION, VLAX-METHOD-APPLICABLE-P, VLAX-OBJECT-RELEASED-P, VLAX-PRODUCT-KEY, VLAX-PROPERTY-AVAILABLE-P, VLAX-PUT, VLAX-PUT-PROPERTY, VLAX-READ-ENABLED-P, VLAX-RELEASE-OBJECT, VLAX-REMOVE-CMD, VLAX-SAFEARRAY->LIST, VLAX-SAFEARRAY-FILL, VLAX-SAFEARRAY-GET-DIM, VLAX-SAFEARRAY-GET-ELEMENT, VLAX-SAFEARRAY-GET-L-BOUND, VLAX-SAFEARRAY-GET-U-BOUND, VLAX-SAFEARRAY-PUT-ELEMENT, VLAX-SAFEARRAY-TYPE, VLAX-SAFEARRAY-VALUE, VLAX-TMATRIX, VLAX-TYPEINFO-AVAILABLE-P, VLAX-VARIANT-CHANGE-TYPE, VLAX-VARIANT-TYPE, VLAX-VARIANT-VALUE, VLAX-VLA-OBJECT->ENAME, VLAX-WRITE-ENABLED-P.

The following VLR* functions are also supported but not documented: VLR-ACDB-REACTOR, VLR-ADD, VLR-ADDED-P, VLR-BEEP-REACTION, VLR-COMMAND-REACTOR, VLR-CURRENT-REACTION-NAME, VLR-DATA, VLR-DATA-SET, VLR-DEEPCLONE-REACTOR, VLR-DOCMANAGER-REACTOR, VLR-DOCUMENT,VLR-DWG-REACTOR, VLR-DXF-REACTOR, VLR-EDITOR-REACTOR, VLR-INSERT-REACTOR, VLR-LINKER-REACTOR, VLR-LISP-REACTOR, VLR-MISCELLANEOUS-REACTOR, VLR-MOUSE-REACTOR, VLR-NOTIFICATION, VLR-OBJECT-REACTOR, VLR-OWNER-ADD, VLR-OWNER-REMOVE, VLR-OWNERS, VLR-PERS, VLR-PERS-ACTIVATE, VLR-PERS-DICTNAME, VLR-PERS-LIST, VLR-PERS-P, VLR-PERS-RELEASE, VLR-REACTION-NAMES, VLR-REACTIONS, VLR-REACTION-SET, VLR-REACTORS, VLR-REMOVE, VLR-REMOVE-ALL, VLR-SET-NOTIFICATION, VLR-SYSVAR-REACTOR, VLR-TOOLBAR-REACTOR, VLR-TRACE-REACTION, VLR-TYPE, VLR-TYPES, VLR-UNDO-REACTOR, VLR-WBLOCK-REACTOR, VLR-WINDOW-REACTOR, VLR-XREF-REACTOR.

Tell me about...

Copying Code Examples from the progeCAD Developer Reference

Programming Overview of LISP (LISt Processing) Language