Sei sulla pagina 1di 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 * ((17 + 3) / 4)) 20 (8 * ((17 +5 / 4)) 3)


(8 * ((17 + 3) / 4)) 40
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 (/ (+ 17 3) 4)) 20
(* 8 (/ (+ 17 3) 4)) 5 (* 8 (/ (+ 17 3) 4)) 40

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.

Potrebbero piacerti anche