Está en la página 1de 4

5/7/22, 10:56 Aprende a programar en AutoLisp Post #11: Selección de Entidades Gráficas | DevCADLisp

Aprende a programar en AutoLisp Post


#11: Selección de Entidades Gráficas

En este tema aprenderás de una manera práctica que funciones de AutoLisp


debes de usar para seleccionar una entidad y efectuar acciones con ella.

Se conoce como “entidades gráficas” a aquellos objetos de dibujo que puedes


“ver” en tu programa de CAD, como, por ejemplo: líneas, arcos, círculos, textos,
etc. Estas entidades difieren de las entidades no gráficas, estas entidades no
gráficas son, por ejemplo: las capas, los estilos de líneas, estilos de texto, estilos
de dimensión, etc.

Comencemos con la primera función con un ejemplo:

Escribe el siguiente código en un archivo de texto y guárdalo como


“seleccion.lsp“:

(defun c:s1()

(setvar "cmdecho" 0)

(setq ent (entlast))

(command "change" ent "" "p" "c" "6" "")

(setvar "cmdecho" 1)

(princ)

https://www.devcadlisp.com/autolispdev/aprende-a-programar-en-autolisp-post-11-seleccion-de-entidades-graficas/ 1/4
5/7/22, 10:56 Aprende a programar en AutoLisp Post #11: Selección de Entidades Gráficas | DevCADLisp

Luego carga este archivo con el comando appload y antes de ejecutar este


nuevo comando (s1) dibuja un círculo, inmediatamente ejecuta el nuevo
comando escribiendo “s1” en la línea de comandos y presionando la tecla Enter.
Pudiste observar lo que sucedió, el círculo que dibujaste cambio de color a
magenta.

Claro, vamos a explicar de manera detallada que hace esta rutina simple.

¿Qué hace esta rutina de ejemplo?

Esta rutina cambia el color a azul a la última entidad dibujada, en este caso fue
un círculo, pero podría ser cualquier entidad.

Explicación línea a línea:

(setvar "cmdecho" 0)

Usamos la función SETVAR para establecer un valor a una variable propia de


AutoCAD mediante AutoLisp.

AutoCAD tiene muchas variables que almacenan su forma de trabajar, estas


variables son propias del programa, no son creadas por nosotros, en este
ejemplo “cmdecho” es una variable que almacena un valor de si se muestran (1)
o no (0) las solicitudes y entradas (ecos de los comandos) que se reproducen
durante la ejecución de un comando de AutoCAD dentro de una rutina.

En este caso, al definirle un valor de 0 a la variable “cmdecho” estamos evitando


que se vean las solicitudes del comando, es decir que el usuario que ejecuta esta
rutina no se percata si estamos usando un comando de AutoCAD en nuestra
rutina.

¿Mucha teoría?, cuando se amerita es necesaria un poco de teoría, pero de


todas maneras se puede encontrar mas información al respecto en la web.

Continuamos con la segunda línea de código:

(setq ent (entlast))

La función ENTLAST, en esta línea de código, tiene por finalidad seleccionar la


ultima entidad creada, esta entidad seleccionada es almacenada en la
variable ent para su posterior uso. Como puedes observar, en ningún momento
hemos solicitado al usuario que seleccione el círculo que ha creado, entlast lo
hace automáticamente.

https://www.devcadlisp.com/autolispdev/aprende-a-programar-en-autolisp-post-11-seleccion-de-entidades-graficas/ 2/4
5/7/22, 10:56 Aprende a programar en AutoLisp Post #11: Selección de Entidades Gráficas | DevCADLisp

(command "change" ent "" "p" "c" "6" "")

Aquí nuevamente empleamos la función command para invocar al comando


“change” (con comillas como el ejemplo) de AutoCAD, este comando necesita
que se seleccione la entidad(es) a modificar, así que le indicamos que seleccione
la entidad que está almacenada dentro de la variable ent, como no deseamos
seleccionar mas entidades, digitamos las dos comillas (“”) para indicar que ya
hemos finalizado la selección.

Seguimos brindando mas datos a las solicitudes del comando “change” y


digitamos “p” entre comillas, para indicar que deseamos ingresar a la opción
“Properties” del comando, luego ingresamos “c” para indicar que deseamos
elegir la opción “Color” e indicamos el color magenta ingresando el numero “6” y
para finalizar el comando y la función command con el cambio de color,
digitamos las doble comillas (“”) o Enter.

(setvar "cmdecho" 1)

Nuevamente usamos la aquí la función setvar para devolverle el valor a la


variable “cmdecho” a 1.

(princ)

Por ultimo “limpiamos” la ejecución de la rutina con un princ.

¿Que te pareció este pequeño comando?, ¿interesante verdad?, ahora vamos a


mejorar la rutina anterior para que solicite al usuario que seleccione un objeto
para realizar también diferentes acciones con el, en este ejemplo cambiarle el
color.

Escribe lo siguiente en el archivo seleccion.lsp y luego cárgalo en AutoCAD.

(defun c:s2()

(setvar "cmdecho" 0)

(setq ent (ENTSEL "\nSeleccione una entidad para cambiar el color: "))

(command "change" ent "" "p" "c" "6" "")

(setvar "cmdecho" 1)

(princ)

A continuación examinamos el código:

https://www.devcadlisp.com/autolispdev/aprende-a-programar-en-autolisp-post-11-seleccion-de-entidades-graficas/ 3/4
5/7/22, 10:56 Aprende a programar en AutoLisp Post #11: Selección de Entidades Gráficas | DevCADLisp

Aquí solo vamos a detallar esta línea de código, porque como puedes ver, es la
única que cambia con respecto al ejemplo anterior.

En este caso la entidad que vamos a modificar no va a ser la ultima creada, si


no cualquiera que esté dibujada y le vamos a otorgar esa elección al usuario
que use la rutina, para ello usamos la función ENTSEL.

Esta función permite seleccionar una entidad y devuelve como datos; el


nombre de la entidad seleccionada y además también la coordenada del punto
de designación sobre la entidad. Adicionalmente se puede agregar un mensaje
que permita al usuario de la rutina saber que debe de seleccionar una entidad y
para que lo va a hacer.

La definición del objeto seleccionado se almacena en la variable ent para


modificar su color posteriormente.

Funciones que se han visto en este tema:

1. defun
2. setvar
3. setq
4. entlast
5. command
6. princ

https://www.devcadlisp.com/autolispdev/aprende-a-programar-en-autolisp-post-11-seleccion-de-entidades-graficas/ 4/4

También podría gustarte