Hola
Agregando a lo que ha dicho juanma
Recordemos que hay 3 formas de interactuar con la base de datos gráfica desde rutinas lisp:
1-Enviando comandos a la consola, que es lo que ya han comentado
2-A través de listas DXF, donde las propiedades de los objetos se pasan a Entmake que las crea según esas propiedades
3-Con la interfaz de ActiveX, que trabaja con objetos, propiedades y métodos tipo VBasic, y se acceden desde autolisp con las funciones VLA / VLAX
Ahora bien, los modos 2 y 3 tienen diferencias muy marcadas que en este caso son importantes para elegir cual método se te acomoda mejor, más allá de que estemos acostumbrados a uno u otro.
Para comenzar, con Entmake puedes pasar todas las propiedades gráficas, geométricas, internas etc, de una sola vez. Es decir, que si pasas todo ya el elemento queda en la capa, color, escala, posicion, rotación 2d y 3d, etc.. tal cual lo quieres. En cambio con ActiveX solo pasas las propiedades geométricas más básicas, tomar el objeto creado y luego debes modificar el resto sobre ese objeto.
En el caso de la rotación 3D para bloques, si usamos ENTMAKE, de una vez pasamos el plano del objeto en el código dxf 210. Al crearla se crea rotada en 3D. En cambio con VLAX solo podemos asignar punto de inserción, escala, rotación (2D). Y el resto de las propiedades se asignan posteriormente. En este caos para rotarlo se debe llamar al metodo Rotate3D para efectuar el giro tridimensional.
Ejemplo con DXF
El vector de extrusión, que es el punto (1,0.1) indicado en el código 210 lo que nos da es un eje Z medido desde el punto de origen. Es decir, que desde 0,0,0 hasta 1,0,1 tenemos una linea que en el plano X,Y se ve horizontal, en Y,Z se ve vertical, ambos de L=1.0; pero en el plano X,Z se ve de 45º, desde 0,0 hasta 1,1. Ese es el eje Z del plano, entonces este plano es girado 45º respecto al eje Y (o en el plano XZ), con el mismo origen que el UCS original.
Ejemplo con ActiveX
En este caso se ha dibujado en el punto 20,20,10 del UCS actual y luego se ha rotado en 3D 45º (2pi radianes) por el eje vertical (Y) que pasa por el punto de inserción
Ahora bien
¿Cual es la principal diferencia que deberíamos tomar en cuenta para decidir?
Pues resulta que como Entmake ya crea el objeto en el UCS definido en el código 210, entonces el punto de inserción (20, 20, 10) y la rotación2D (0º) se refieren a ese otro plano definido. En cambio VLAX primero crea el objeto en el plano actual, en el 20, 20, 10 del UCS actual ,con rotación 0º del plano actual, y luego al girarlo en 3D desde su origen, el objeto cambiará a otras coordenadas y quizás otra rotación, que es la que se obtiene del nuevo plano.
Entonces la pregunta del millón: en cual punto 20, 20, 10 quiero colocar el bloque, en el 20,20 del plano actual, o en el 20,20 del plano del giro 3D.
En caso de que queramos usar un método de estos, pero colocar en unas coordenadas del UCS del otro (o incluso que estemos usando comandos para insertar y rotar3d pero no tengamos las coordenadas transformadas), requerimos de un paso adicional, que es convertir el punto de un sistema a otro. Eso lo hace la función TRANS. Es otro lío que merece uno o varios hilos aparte, jeje, pero pueden verlo en la ayuda del autocad. A veces es tan simple como decirle que pase las coordenadas del OCS (o plano) de este objeto al OCS (o plano) de este otro.