Está en la página 1de 45

Universidad Nacional Autnoma de Mxico

Facultad de Ingeniera
Divisin de Ingenieras Civil y Geomtica

Presentacin del Libro

Reinaldo Togores Fernndez


Arquitecto, Doctor Ingeniero de Caminos.
Miembro del Autodesk Developers Network.

Contenidos del Libro:

Parte 1: Introduccin.

Tutorial: Un proyecto Visual LISP paso a paso.


Parte 2: El Lenguaje y su Entorno de Desarrollo.
Parte 3: Controlar AutoCAD desde Visual LISP (2D).
Parte 4: Programacin 3D.
Transformaciones 3D, Puntos de Vista y Estilos
Visuales, Curvas NURBS, Mallas Poligonales/Policara,
Modelado y Edicin de Slidos, Superficies de
Subdivisin, de Procedimiento y NURBS.

Parte 5: Programacin Avanzada.

Reactores, Cuadros de Dilogo, Datos en el Dibujo,


Tablas, Exportacin a EXCEL, Ejecutables Visual LISP,
Interfaz de Usuario con OpenDCL.

La interfaz de usuario Visual LISP :


Men
Herramientas
Ventanas
del Editor
Otras
Ventanas
Ventana de
la Consola
Lnea de
Estado

Programacin Funcional :
Su sintaxis es la de las funciones matemticas.

(8 * ((17 + 3) / 4))

(8 * ((1720
+ 3) / 4))
(8 * ((17 +53) / 4))
(8 * ((1740+ 3) / 4))
Lista: una secuencia de datos entre parntesis. La solucin
resulta del procesamiento sucesivo de cada una de las listas.

Notacin prefija:
El operador aparece siempre al inicio de la lista.

(* 8 (/ (+ 17 3) 4))

(* 8 (/ (+2017 3) 4))
(* 8 (/ (+ 17
5 3) 4))
(* 8 (/ (+4017 3) 4))

Sintaxis LISP:

Los programas LISP se componen de listas cuyo primer

trmino es una funcin seguido de cero o ms


argumentos.
Los argumentos se evalan de izquierda a derecha y los
resultados se pasan a la funcin incluida como primer
trmino de la lista.
Las variables son smbolos que representan los datos
sobre los que opera el programa. Son los datos los
que poseen tipo, no las variables.
Las funciones LISP siempre devuelven un valor y a veces
producen efectos colaterales. Se utilizan ya sea por el
valor devuelto, por sus efectos colaterales o por ambos.

Formas especiales:
Se llaman formas especiales a algunas funciones que no
cumplen la regla de evaluar todos sus argumentos.

La forma especial quote, devuelve su argumento sin

evaluarlo. Quote se representa por un apstrofe


La forma especial setq asigna a un smbolo un valor.
Las funciones LISP no cambian el valor de las variables
que reciben como argumentos. Para cambiarlo ser
necesario asignrselo con setq.
La forma especial defun crea nuevas funciones que
operan como las propias del lenguaje. Los programas
LISP son funciones creadas mediante defun.

Creacin de Nuevas Entidades:


Visual LISP permite crear nuevas entidades mediante
tres tecnologas diferentes:

La funcin command.
Invoca los comandos tal como lo hara el usuario
desde la lnea de comandos.

La funcin entmake. Recurre a las propiedades


expuestas como sublistas asociadas a cdigos DXF.

Los mtodos ActiveX. Existen funciones vla-Add


para los distintos tipos de objeto.

La funcin command:
Opera pasando al buffer de teclado los datos tal como los
podra teclear el usuario.

Pueden invocarse funciones de entrada de datos.

Las funciones ent:


Recurren a las propiedades de los objetos identificadas
a partir de cdigos DXF en forma de listas de asociacin.

La lista de entidad se obtiene con la funcin entget.

Las funciones ent:


Entmake recibe como argumento una lista de este tipo.
Para el crculo slo son imprescindibles los cdigos
0, 10 y 40.

Otros cdigos:
100: Clase y Subclase de objeto.
67:
0 = EspacioModelo; 1= EspacioPapel.
410: Nombre del Layout.
8:
Nombre de la Capa.
210: Vector Normal al plano de dibujo.

Las funciones ent:


La funcin ent-copia-circ recibe una lista de entidad
De un crculo haciendo copias con otro centro.

El valor asociado al cdigo 10 se modifica mediante la


funcin subst.

Las funciones ent:


Sustituyendo entmake por entmod creamos una funcin
que desplaza el crculo en lugar de copiarlo.

Las extensiones ActiveX:

La referencia a los objetos Aplicacin y Documento son


de uso constante. En este libro las asignamos a dos
variables globales protegidas, *aesl:acad* y *aesl:dibujo*.

Las extensiones ActiveX:


La propiedad ActiveLayout del documento devuelve el
objeto Layout cuyo objeto Block es el espacio al que
aadir cualquier nuevo objeto grfico.

Las extensiones ActiveX:


Para crear un crculo mediante ActiveX recurrimos a
Vla-AddCircle. El primer argumento es el espacio en el
que se incluye el objeto:
(vla-AddCircle espacio centro radio)

Programacin 3D

Trabajar en Entorno 3D.


(Captulo 13)

Requiere el dominio de:

Conversin entre Sistemas de Coordenadas.


Operaciones con vectores.
Traslaciones, rotaciones, cambios de escala, etc. Y las
matrices de transformacin que las definen.
Modificacin de los puntos de vista 3D para presentar
los resultados de las operaciones.
Modos de visualizacin, incluyendo colores,
sombreados y transparencias para los objetos 3D.

Sistemas de Coordenadas Personales:


(Captulo 13)

Para distintas orientaciones en el espacio es necesario


definir Sistemas de Coordenadas Personales distintos del
Sistema de Coordenadas Universal.

El SCP se guarda
en el cdigo 210
de la lista de
entidad como
vector normal al
plano de dibujo.

Sistemas de Coordenadas de Objeto:


(Captulo 13)

Las coordenadas que definen posiciones en el espacio


para algunos objetos se definen en un sistema de
coordenadas propio, el SCO que se define a partir de:

Su origen que coincide con el origen del SCU.


La orientacin de los ejes X e Y calculados a partir

del vector normal.


El valor de la variable de sistema ELEVATION.

En las entidades 3D el SCO coincide con el SCU.


La funcin trans permite convertir puntos y vectores
entre SCU, SCP y SCO:
(trans punto SC-origen SC-destino [como-vector])

Transformaciones tridimensionales :
(Captulo 13)

1. Traslacin del objeto al origen del Sistema de


Coordenadas Universal (SCU).
2. Alineacin de los ejes de referencia para la
transformacin con los ejes del SCU.
3. Realizacin de las transformaciones (giro, escalado,
desplazamiento) necesarias.
4. Transformacin inversa a la del punto 2 para devolver
los ejes a su posicin original.
5. Traslacin inversa a la del punto 1 para devolver el
objeto a su posicin original en el espacio.
El mtodo ActiveX TransformBy, permite aplicar a un
objeto estas transformaciones.

Matriz de Transformacin del SCP:


(Captulo 13)

El mtodo GetUCSMatrix devuelve una matriz de 4x4


que como argumento de vla-TransformBy transforma un
objeto al SCP correspondiente, aplicndole el conjunto
de traslaciones y rotaciones necesario.

Punto de Vista y Apariencia Visual:


(Captulo 13)

Punto de Vista: depende de la propiedad Direction del


ViewPort actual.

La secuencia anterior establece una vista isomtrica


suroeste en la ventana grfica actual.

Punto de Vista y Apariencia Visual:


(Captulo 13)

Apariencia Visual: depende de la una serie de variables


de sistema que se identifican por el prefijo VS.

La funcin var-vis establece el estilo visual utilizado


para la portada de este libro.

Curvas 3D: SPLINES.


(Captulo 14)

Implementacin del modelo matemtico Non-Uniform


Basis Spline (NURBS).
Representa cualquier forma desde puntos, rectas o
polilneas a secciones cnicas o formas libres.
Gran control sobre la forma, su curvatura y fluidez a
partir de sus vrtices de control y nudos.
Formas muy complejas a partir de muy pocos datos.
Las funciones vlax-curve permiten obtener una serie
de propiedades de estas curvas para su uso en
programas.

Modelado 3D.
AutoCAD permite la creacin de modelos 3D empleando
slidos, superficies y mallas.

Slidos: construccin de modelos a partir de primitivas


y operaciones de UNIN, DIFERENCIA e INTERSECCIN.
Superficies: Modelado de formas libres. Asociatividad.
Mallas: Plegado y Suavizado.
Es posible la conversin entre Slidos, Superficies y Mallas
para aprovechar las posibilidades de edicin caractersticas
de cada tipo de objeto.

Modelado 3D: Slidos.


(Captulos 17 y 18)

Un cuerpo 3D cerrado con propiedades como masa,


volumen, centro de gravedad y momento de inercia.
El modelado de formas bsicas (primitivas) que se
combinan mediantes operaciones Booleanas (unin,
diferencia e interseccin).
Tambin se crean slidos por:
EXTRUSION,
BARRIDO,
SOLEVACION,
REVOLUCION
o como POLISOLIDO.

Modelado 3D: Slidos.


(Captulos 17 y 18)

La informacin asociada a los cdigos DXF aparece cifrada,


por lo que no es posible crearlas desde entmake.
Para ello deben utilizarse los mtodos ActiveX:

AddBox
AddCone
AddCylinder
AddEllipticalCone
AddEllipticalCylinder
AddSphere
AddTorus
AddWedge

AddExtrudedSolid
AddExtrudedSolidAlongPath
AddRevolvedSolid
AddExtrudedSolidAlongPath

Modelado 3D: Entidades MESH.


(Captulo 19)

Los objetos MESH son superficies de subdivisin que


Pueden someterse a procesos de suavizado en que las
caras se curvan y las aristas se suavizan creando facetas.

Las caras de la malla original pueden tener ms de

cuatro vrtices.
Pueden crearse a partir de command y de entmake
pero no de ActiveX.

Se definen recursivamente. La malla inicial (Nivel 0) con


caras planas y aristas en ngulo se suaviza formando
facetas con lo que se curvan las caras y se redondean las
aristas generando un nuevo nivel de suavizado.

Modelado 3D: Entidades MESH.


(Captulo 19)

AutoCAD ofrece con el comando MESH (MALLA) la


posibilidad de crear una serie de formas simples.

Pero sus propiedades estn expuestas como cdigos DXF,


lo que permite programar otras formas con entmake.

Suavizado:

Nivel 0

Nivel 1

Nivel 2

Modelado 3D: Entidades MESH.


(Captulo 19)
La creacin de otras
formas de malla a
partir de Visual LISP
se publican por
primera vez en este
libro.

Modelado 3D: Superficies .


(Captulo 20)
AutoCAD ofrece dos tipos de superficies: de procedimiento y
NURBS. En ambos casos las superficies se crean a partir de
entidades lineales.

Superficies de procedimiento: Modelado Asociativo.


Superficies NURBS: Modelado con vrtices de control.
No es posible crearlas ms que invocando comandos.
La variable SURFACEMODELINGMODE determina si se crean
superficies de procedimiento o NURBS.

Modelado 3D: Superficies .


(Captulo 20)

Pueden crear superficies o slidos los comandos:


EXTRUSION, SOLEVACION, REVOLUCION, BARRIDO.
Crean slo superficies:
REDSUPERF, DESFASESUPERF, PARCHESUPERF, FUSIONASUPERF
y SUPERFPLANA.

Convierten otros tipos de objetos 3D a superficies:


A superficies: CONVENNURBS, CONVASUPERF.
Conversin a mallas o slidos:
CONVENMALLA, CONVASOLIDO.

Modelado 3D: Superficies Asociativas.


(Captulo 20)
Para crear superficies asociativas es necesario que:
Est desactivada la creacin de superficies NURBS.
(SURFACEMODELINGMODE = 0).
Est activada la asociatividad de las superficies.
(SURFACEASSOCIATIVITY = 1).

Se crean a partir de entidades


lineales. El argumento MODO
determina si se crear una
superficie o un slido.

Polilnea usada como perfil en


el programa de ejemplo.

Modelado 3D: Superficies Asociativas.


(Captulo 20)
Las superficies de procedimiento pueden mantener la
asociatividad a las entidades lineales utilizadas en su definicin.
A partir de la versin 2010 podemos asignarles restricciones
geomtricas y dimensionales.

Restricciones GEOMTRICAS:
coincidencia, paralelismo,
perpendicularidad,
horizontalidad, verticalidad, etc.

Restricciones DIMENSIONALES:
distancias o ngulos. Pueden
ser variables y/o ecuaciones.

Modelado 3D: Superficies Asociativas.


(Captulo 20)
Los valores de las restricciones dimensionales pueden cambiarse
desde nuestros programas tanto mediante entmod como usando
la propiedad ActiveX DimConstrExpression.

Modelado 3D: Superficies NURBS.


(Captulo 20)
La creacin de superficies NURBS deber activarse estableciendo
SURFACEMODELINGMODE = 1.
Su creacin es idntica a la de
las de procedimiento. Estas
superficies no son asociativas.
Para modificarlas se utilizan los
vrtices de control.

Otros Contenidos.
Programacin Visual LISP para el Editor de Bloques:
Superficie Asociativa cono Bloque Dinmico.

Otros Contenidos.
Programacin de Cuadros de Dilogo DCL.

Otros Contenidos.
Datos del dibujo a Tablas y a Hojas de Clculo.

Otros Contenidos.
Paleta No-Modal con
OpenDCL.

http://www.togores.net/expertoautocad

The spirit of Lisp hacking can be expressed in two sentences.


Programming should be fun.
Programs should be beautiful.

Paul Graham, en el prlogo a ANSI Common Lisp.

También podría gustarte