AutoCad - Insercion de bloques.

 
Vista:
Imágen de perfil de Emilio

Insercion de bloques.

Publicado por Emilio (9 intervenciones) el 02/05/2025 15:48:40
Hola, amigos, quisiera saber si es posible insertar un bloquegirado en el espacio. Es decir, ademas de rotado en el plano XY, tambien rotado en el eje Z. gracias y saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Insercion de bloques.

Publicado por Juanma (11 intervenciones) el 03/05/2025 00:16:46
Directamente con insertar, parece obvio que no, pero puedes rotarlo después de insertarlo con "gira3d", haciendo un cambio de scp, o incluso con alguna rutina lisp que te facilite la tarea. Si es algo repetitivo.

Se me olvidaba comentar que si usas una vista que no sea la alámbrica 2d, (sombreado con aristas, conceptual, etc) puedes usar el gizmo de giro, que es muy útil
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Emilio

Insercion de bloques.

Publicado por Emilio (9 intervenciones) el 03/05/2025 02:52:19
Gracias Juanma. Sospechava que era asi, pero necesitaba la confirmacion de alguien con nivel como alguno de Ustedes. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.285
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Insercion de bloques.

Publicado por Gerardo (980 intervenciones) el 15/05/2025 19:47:56
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
1
2
3
4
5
6
7
8
9
10
11
12
13
;;;crear la inserción del bloque llamado "NombreBloque" en el plano definido por el vector 1,0,1 (es un plano girado
;;;45º respecto al eje Y universal), ;en el punto 20,20,10, con escala x=0.7, y=0.7 z=1.0, rotación 2D=0
(entmake
	'(	(0 . "INSERT")
		(2 . "NombreBloque")
		(10 20. 20. 10.)
		(41 . 0.7)
		(42 . 0.7)
		(43 . 1.0)
		(50 . 0.)
		(210 1. 0. 1.)
	)
)
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;;rotar el objeto devuelto por vla-insertblock, respecto al eje Y, por el mismo punto de insercion, es decir
;;por el vector (20,20,10)-(20,30,10) 45º
(vla-rotate3D
	;;;crear la inserción del bloque llamado "NombreBloque", en el punto 20,20,10, con escala x=0.7, y=0.7 z=1.0, rotación 2D=0
	(vla-InsertBlock
		(vla-get-ModelSpace
			(vla-get-ActiveDocument
				(vlax-get-acad-object)
			)
		)
		(vlax-3D-Point '(20. 20. 10.))
		"NombreBloque"
		0.7
		0.7
		1.0
		0.
	)
	(vlax-3D-Point '(20. 20. 10.))
	(vlax-3D-Point '(20. 30. 10.))
	(* 0.25 pi)
) 
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar