Seguimos avanzando, ahora ingresamos a los condicionales tipo bucle (una sentencia que ejecuta repetidas veces un trozo de código, hasta que la condición asignada a dicho bucle deja de cumplirse).

Empezamos por la función REPEAT, esta condicional evalúa una expresión un número especificado de veces, mas que evaluar es repetir un bloque de código. En el siguiente gráfico podrás observar a que me refiero:

¿Un poco más claro verdad?, entonces a continuación veamos a la función REPEAT en acción, pero antes, dibuja una línea horizontal de cualquier longitud, en cualquier lugar de tu area de trabajo de AutoCAD.

Veamos el desarrollo con este ejemplo:

(defun c:cn3()
	(setq pt (getpoint "\nIndica el centro de rotación: "))
	(setq n  (getint "\nIngresa cuantas veces rotará: "))
	(repeat n
		(command “_rotate" “_l" "" pt "5")
	)
	(princ)
)

Escribe este código en un archivo y guardalo como rep.lsp y cárgalo nuevamente con el comando “Appload“, ten en cuenta la línea que has dibujado y ejecuta el comando cn3.

Como ya sabemos, la función getpoint nos permite indicar un punto en pantalla, en este caso indicamos ese punto en el punto medio de la línea para obtener el punto base de rotación, la coordenada de este punto obtenida se almacenará en la variable “pt“.

Luego la función getint solicita que se ingrese cuantas veces rotará la línea (numero entero), podemos ingresar por ejemplo 100, este valor se almacenará en la variable “n“.

Ahora observemos exclusivamente las líneas de código de repeat:

(repeat n
	(command “_rotate" “_l" "" pt "5")
)

El uso de esta función es realmente sencilla, basta con indicar a la función repeat el número de veces que repetirá un bloque de código (aquí tampoco es necesario el uso de progn).

En el ejemplo la variable n guarda el valor que ingresó el usuario, puede ser por ejemplo 100, si es así, entonces repeat repetirá 100 veces el código que esté dentro de sus paréntesis.

Aquí lo que hace la rutina es usar invocar al comando “_rotate” (con el guion bajo, se invoca a un comando sin importar el idioma de AutoCAD) mediante la función “command” para rotar la última entidad (opción “_l” que invoca al modo de selección “_last“) creada (una línea), luego se indica un doble paréntesis (“”) para indicar que no deseamos seleccionar más entidades, luego indicamos el punto de giro pt (la variable pt almacena el punto indicado por el usuario) y por ultimo ingresamos el ángulo de rotación, que en el ejemplo hemos indicado un ángulo de 5.

Podrás saber que variables o que datos debes de brindarle a la función “command” ejecutando el comando “rotate” e ir observando que datos te va solicitando, estos mismos solicitará cuando se invoca a un comando vía programación.

Funciones que se han visto en este tema:

  1. defun
  2. setq
  3. getpoint
  4. getint
  5. repeat
  6. command
  7. princ

¿Cómo vas hasta aquí?, en el siguiente tema, ¿te parece si continuamos con la última condicional que veremos aquí?, entonces ahí vamos.