Objeto de región en AutoCAD con Python

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.

Creación de un objeto de región en AutoCAD

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)))
Ajuste de objeto de región en AutoCAD

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))
Paso final para ajustar el objeto de la región en AutoCAD

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 pyautocadpywin32 . 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:

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Close

Meta