AutoLISP
LinceCAD lleva su propio intérprete de AutoLISP para ejecutar las rutinas escritas para AutoCAD o progeCAD: las mismas funciones, los mismos tipos de datos y los mismos mensajes de error («; error: bad argument type…», en inglés como en AutoCAD, porque muchas rutinas los comparan en su *error*). Las rutinas piden puntos y designan objetos como cualquier comando, con referencias a objetos, goma elástica y coordenadas tecleadas.
Escribir expresiones en la línea de comandos
Cuando no hay ningún comando en curso, lo que empieza por ( se evalúa como AutoLISP y el resultado se escribe debajo. Si faltan paréntesis o comillas por cerrar, el programa muestra (_> y espera más líneas.
(setq r (* 2 pi)) 6.28319
Cargar archivos .lsp
- APPLOAD abre el cuadro Cargar aplicaciones (APPLOAD): Cargar un archivo .lsp… carga un archivo ahora; el conjunto de inicio se carga cada vez que arranca el programa.
- load carga un archivo desde una rutina o desde la línea de comandos:
(load "mirutina"). - Al abrir un dibujo se cargan solos
acaddoc.lspylince.lspsi están en su carpeta. Al arrancar, también los de la carpeta de usuario. - Seguridad (como SECURELOAD): sin preguntar se cargan los archivos de las carpetas de confianza (la de usuario, la carpeta
lispjunto al programa y las que se añaden en APPLOAD); los de otras carpetas se preguntan antes. APPLOAD permite también cargar de cualquier carpeta o solo de las de confianza. - Los archivos pueden estar en UTF-8 o en Windows-1252, como los de las versiones antiguas de AutoCAD.
Comandos nuevos con c:
Una función cuyo nombre empieza por c: pasa a ser un comando: se escribe su nombre en la línea de comandos como cualquier otro.
(defun c:area2 (/ e) (setq e (car (entsel "\nDesigne un círculo: "))) (princ (strcat "\nÁrea: " (rtos (* pi (expt (cdr (assoc 40 (entget e))) 2)) 2 2))) (princ))
Tipos de datos
Enteros de 32 bits (que desbordan como en AutoCAD), reales, cadenas, símbolos, listas y pares punteados, nombres de entidad, conjuntos de selección, archivos y funciones. Los ángulos van en radianes; los puntos son listas de dos o tres números. Comentarios con ; hasta el final de la línea o entre ;| y |;. En las cadenas valen \n, \t, \", \\ y \e.
Límites
- No hay funciones ActiveX (
vla-…,vlax-…), cuadros de diálogo DCL, reactores ni espacios de nombres separados por dibujo. - entget y entmod trabajan con LINE, CIRCLE, ARC, LWPOLYLINE, TEXT, MTEXT, POINT, INSERT y ATTRIB; entmake crea las mismas salvo ATTRIB; DIMENSION se lee pero no se cambia; de las demás entidades solo se leen los códigos comunes (capa, color…). No hay datos extendidos (XDATA).
- trans convierte entre el universal y el SCP; con un nombre de entidad o con el espacio papel devuelve el punto tal cual.
- Con un comando en curso,
(no se evalúa (en AutoCAD se evalúa y el resultado responde a la pregunta). Tampoco existe!variablepara ver el valor de una variable: escriba(princ variable). - Las expresiones pueden anidarse hasta unos 8000 niveles (también en la recursión). Esc detiene una rutina en curso.
Funciones por familias
Formas especiales y control: quote · function · lambda · setq · defun · defun-q · if · cond · while · repeat · foreach · progn · and · or · t · pi · pause · error
Aritmética: + · - · * · / · 1+ · 1- · abs · fix · float · rem · gcd · min · max · sqrt · expt · exp · log · sin · cos · atan · ~ · logand · logior · lsh
Comparación y predicados: = · /= · < · > · <= · >= · eq · equal · not · null · atom · listp · vl-consp · numberp · zerop · minusp · boundp · type · vl-symbolp
Listas: car · cdr · cadr y las demás c…r · cons · list · append · reverse · length · vl-list-length · nth · member · assoc · subst · last · vl-remove · vl-position · vl-sort · vl-remove-if · vl-remove-if-not · vl-some · vl-every · vl-member-if · acad_strlsort · mapcar · apply
Evaluación y símbolos: eval · set · read · vl-symbol-name · vl-symbol-value
Cadenas: strcat · strlen · substr · strcase · itoa · atoi · atof · chr · ascii · wcmatch · vl-string-trim · vl-string-left-trim · vl-string-right-trim · vl-string-search · vl-string-subst · vl-string-translate · vl-string-position · vl-string->list · vl-list->string · vl-string-elt · vl-princ-to-string · vl-prin1-to-string
Unidades: rtos · distof · angtos · angtof
Geometría: distance · angle · polar · inters · trans
Diálogo con el usuario: initget · getpoint · getcorner · getdist · getangle · getorient · getreal · getint · getstring · getkword · entsel
Mensajes: princ · prin1 · print · terpri · prompt · alert · textscr · graphscr
Comandos: command · command-s · vl-cmdf
Entidades: entlast · entnext · entget · entmod · entmake · entdel · entupd · handent
Conjuntos de selección: ssget · ssname · sslength · ssadd · ssdel · ssmemb
Tablas, variables y pantalla: tblsearch · tblnext · getvar · setvar · redraw · regen
Archivos y carga: open · close · read-line · write-line · findfile · getenv · load · vl-filename-base · vl-filename-directory · vl-filename-extension
Errores y sistema: exit · quit · vl-catch-all-apply · vl-catch-all-error-p · vl-catch-all-error-message · vl-load-com · ver · gc