Dibujar una línea con una pendiente:

Abre un archivo nuevo en AutoCAD y escribe las siguientes líneas de código una por una en la “Línea de Comandos de AutoCAD” (si deseas tambien incluye los comentarios *), al mismo tiempo debes de realizar lo que te vaya solicitando el comando.

* Los comentarios en el código fuente, son líneas dentro del código fuente de una rutina lisp que no será leída por el intérprete de comandos de AutoCAD, en otras palabras, pasa desapercibida y es como si no existiera pero nos sirve de mucha ayuda a los programadores a “recordar” o “indicar” algún detalle en un bloque de código.

Los comentarios siempre empiezan con el carácter “;” ejemplo:

; Este es un comentario, en este caso lo uso para indicar
; de que trata el bloque de código que a continuación escribiré.

1: Escribe las siguientes líneas de código, una por una en la línea de comandos de AutoCAD:

;Solicitamos al usuario datos necesarios con las funciones GET…
(setq pb (getpoint "\nIndique el punto base de la línea: "))
(setq pnd (getreal "\nIngrese la pendiente de la línea a dibujar: "))
 
;Efectuamos operaciones, construimos una lista y almacenamos el resultado.
(setq xpb (car pb))
(setq ypb (cadr pb))
(setq p2 (list (+ xpb 10) (+ ypb (/ pnd 10))))
 
; Ejecutamos el comando Line con los valores obtenidos y calculados.
(command "_line" pb p2 "")

2: Explicación de este ejercicio:

En este ejercicio, primero la rutina está obteniendo datos del usuario con las funciones getxxx, luego con las funciones car y cadr extraemos el primer y segundo elemento de la coordenada del punto indicado, con estos datos operamos para obtener un nuevo punto y por últimos dibujamos una nueva línea.

¿Qué hace esta rutina?

Esta rutina nos ayuda a dibujar una línea con 10 unidades de dibujo en el eje X con la pendiente indicada por el usuario, útil cuando deseamos dibujar líneas con una determinada pendiente como base.

Explicación línea a línea:

(setq pb (getpoint "\nIndique el punto base de la línea: "))
(setq pnd (getreal "\nIngrese la pendiente de la línea a dibujar: "))

¿Recuerdas el dibujo del círculo?, estas 2 líneas de código hacen exactamente lo mismo.

La primera línea de código (1), solicita mediante la función getpoint que el usuario indique un punto para empezar a dibujar la línea con la pendiente y la segunda línea de código (2), mediante la función getreal que se ingrese un valor con decimales (o entero), el punto (coordenada) indicado por el usuario y obtenido con getpoint se almacena en la variable pb y el valor ingresado y obtenido mediante getreal, en la variable pnd.

A continuación te explicaré la tercera (3) y cuarta línea de código (4).

(setq xpb (car pb))
(setq ypb (cadr pb))

Estas dos líneas de código “extraen” la coordenada X y Y del punto de coordenada indicado por el usuario (almacenado en pb), para ello se usan las funciones car y cadr respectivmente, si quisieras obtener la coordenada Z de un punto deberás usar la función caddr. Ambas coordenadas obtenidas se almacenan por separado en las variables xpb y ypb respectivamente.

Ahora con ambos valores obtenidos (X y Y) y establecidos en las variables xpb y ypb con ayuda de la función setq, vamos a efectuar el cálculo de línea pendiente.

Con la siguiente línea de código construiremos el segundo punto (p2) que se necesita para dibujar la línea:

(setq p2 (list (+ xpb 10) (+ ypb (/ pnd 10))))

La operación que efectuamos en esta quinta línea de código (5) es realmente simple (la necesaria), como sabemos en AutoLisp, las operaciones se van realizando de adentro hacia afuera, quiere decir que primero se ejecutará el código de los parentesis de mayor profundidad y se irá ejecutando hacia afuera.

En este caso la primera operación que se efectuará sera la division entre 10 de la pendiente ingresada (pnd) deseada (/ pnd 10), supongamos que se ingresó un valor de 2, la operación nos devolverá un valor de 0.2 (/ 2 10).

Este valor obtenido se sumará al valor de la coordenada Y que esta almacenado en la variable ypb La operación sería ésta (+ ypb 0.2).

(list (+ xpb 10) (+ ypb (/ pnd 10)))

Entonces ahora estamos construyendo (con la función list) el segundo punto (lista de coordenadas) para la línea a dibujar con la pendiente, como coordenada X, tendrá la coordenada X original + una distancia de 10 y como coordenada Y, la coordenada Y original + una distancia de 0.2.

Esta coordenada obtenida se almacena luego en la variable p2, con este dato pasamos a la sexta línea de código de la rutina:

(command "_line" pb p2 "")

Esta línea de código está invocando al comando “Line” con la función command, por AutoCAD sabes que este comando va solicitando varios puntos, esta vez, le vamos a brindar solo 2 para dibujar una línea, estos dos puntos o coordenadas serán: pb y p2 después de estos dos puntos escribimos “” (doble comilla) para indicar un Enter o que ya finalice el comando.

Funciones que se han visto en este tema:

  1. setq
  2. getpoint
  3. getreal
  4. car
  5. cadr
  6. list
  7. +
  8. /
  9. command

¿Cómo vas hasta aquí?, ¿Qué te pareció este código que has escrito?, ¿bien?, que bueno, entonces te gustará saber que vas por el segundo ejercicio a partir de aquí.