En esta publicación de blog, muestro cómo crear y manipular cualquier objeto de región en AutoCAD con pyautocad. Lo haré usando el método AddRegion() en pyautocad. pyautocad es uno de varios módulos de Python para AutoCAD. Ya he cubierto extensamente las secuencias de comandos de AutoCAD en Python en este blog.
Objeto de región en AutoCAD
El objeto de región de AutoCAD representa áreas cerradas en 2D. Los objetos de región de AutoCAD pueden ser polilíneas, círculos, arcos, splines, rectángulos, etc., siempre que estén conectados y, por lo tanto, formen una entidad cerrada.
Los objetos de región de AutoCAD se pueden combinar y utilizar como regiones únicas. Esto se puede hacer utilizando algunos métodos. Esto incluye métodos como Unión , Intersección o Resta .
En conjunto, estos métodos se denominan métodos booleanos de AutoCAD.
Creación de un objeto de región en AutoCAD (win32com, etc.)
No es posible crear un objeto de región en AutoCAD usando pyautocad. Esto se debe a algunas limitaciones del módulo. Por lo tanto, en este artículo usaré el método AddRegion() usando los módulos de Python win32com y pythoncom.
Antes de crear cualquier objeto de región de AutoCAD, arranqué mi aplicación. Esto facilita la conexión con AutoCAD. Además, me permite buscar el espacio modelo.
En la siguiente figura, muestro un objeto de polilínea de AutoCAD cerrado con un círculo superpuesto.
Creé los objetos en la figura de arriba usando el siguiente código:
pl1 = acad.AddPolyline(ad(0,0,0,1000,0,0,1000,500,0,750,500,0,750,1000,0,250,1000,0,250,500,0,0,500,0,0,0,0))
c1 = acad.AddCircle(ap(500, 1000, 0), 250)
Ahora, para crear una región, debo pasar una matriz de objetos de AutoCAD adjuntos al método AddRegion(). Lo hago a continuación:
acad.AddRegion(win32com.client.VARIANT(VT_ARRAY | VT_DISPATCH, (pl1, c1)))
Aquí puedo ver que el objeto se convierte en una región. Lo mismo es cierto para la polilínea. La región objeto de la original.
Realización de operaciones booleanas en objetos de región
Las operaciones booleanas se pueden realizar en sólidos 3D, así como en objetos de región de AutoCAD .
Para usar el objeto de la región, necesito obtener lo mismo de la plantilla de AutoCAD mediante la iteración. Esto se debe a que el método AddRegion() no devuelve nada más que una matriz de objetos de AutoCAD.
En el ejemplo de codificación de Python que se muestra a continuación, uso un diccionario para guardar los objetos de región de AutoCAD que creo.
regions = {}
i=0
for l in acad1.iter_objects_fast(object_name_or_list="Region"):
print(str(l.ObjectID) + ": " + l.ObjectName)
key = "reg" + str(i)
regions[key] = l
i+=1
Como mencioné anteriormente en esta publicación, puedo realizar tres tipos de operaciones booleanas para crear una única unión de regiones:
- Unión (0)
- Intersección (1)
- Resta (2).
Usaré los números mencionados entre paréntesis de los métodos enumerados anteriormente como parámetros de entrada. Al llamar al método booleano (), declaran el tipo de operación booleana que quiero realizar. Al mismo tiempo, moveré el objeto de la región a la derecha. Esto hará que la diferencia sea más clara.
regions["reg1"].Boolean(2, regions["reg0"])
for l in acad1.iter_objects_fast(object_name_or_list="Region"):
print(str(l.ObjectID) + ": " + l.ObjectName)
l.Move(APoint(0, 0, 0), APoint(1500, 0, 0))
Está claro que el nuevo objeto se crea como una única región unificada a partir de sus regiones principales.
Observaciones finales y contenido relacionado
Para obtener más publicaciones de blog que cubran la automatización de AutoCAD , consulte mis otras publicaciones de blog relacionadas con pyautocad y pywin32 . Por favor, deje cualquier pregunta que pueda tener como un comentario a continuación. No dude en ponerse en contacto conmigo para cualquier asistencia técnica. Puede hacerlo utilizando nuestro formulario de contacto.
Aquí hay algunos artículos relacionados que cubren la automatización de AutoCAD y las secuencias de comandos de AutoCAD en Python:
- Enlace : módulo Python para AutoCAD pyautocad
- Enlace : método add () en pyautocad
- Enlace : la llamada resuelta fue rechazada por el destinatario en pythoncom
- Enlace : estructura de datos de árbol para objetos de AutoCAD usando Python
- Enlace : Extendiendo los objetos en AutoCAD usando pyautocad en Python
- Enlace : Uso de listas y diccionarios de Python para trabajar con objetos de AutoCAD con pyautocad
- Enlace : Sombreado de objetos en la plantilla de AutoCAD usando pywin32 en Python
- Enlace : objeto de imagen ráster en AutoCAD con pyautocad en Python
- Enlace : Trabajando con un objeto de malla 3D en AutoCAD usando pyautocad en Python
- Enlace : Creando un constructor doble usando pywin32 en Python
- Enlace : Crear un método de punto usando pywin32 en Python
- Enlace : Integración de Python con AutoCAD usando pywin32 y win32com
- Enlace : Eliminación de objetos en una plantilla de AutoCAD con pyautocad y pywin32 en Python
- Enlace : Objeto espejo en un plano 2D con pyautocad en Python
- Enlace : Trabajando con textos en Autocad usando pyautocad en Python
- Enlace : matrices polares en AutoCAD usando pyautocad en Python
- Enlace : Matrices rectangulares en AutoCAD usando pyautocad en Python
- Enlace : Operaciones con objetos de AutoCAD usando pyautocad en Python
- Enlace : Objetos sólidos en AutoCAD usando pyautocad en Python
- Enlace : Trabajando con hélices en AutoCAD usando pyautocad en Python
- Enlace : Dibujar splines en AutoCAD con pyautocad en Python
- Enlace : Polilíneas en pyautocad para dibujar polígonos de AutoCAD en Python
- Enlace : Dibujar arcos de elipse en AutoCAD usando pyautocad en Python
- Enlace : Dibujar arcos en AutoCAD usando pyautocad en Python
- Enlace : Optimización de procesos casi simultáneos con la edición Promodel AutoCAD
- Enlace : módulo Python para AutoCAD pyautocad
Leave a Reply