Objeto SelectionSet en AutoCAD (Python)

En este artículo, discutiré el objeto SelectionSet en AutoCAD y los métodos para automatizar las operaciones del mismo usando Python. Junto con eso, también agregaré una pequeña introducción que cubre el objeto de grupo.

Preparando el código para este ejemplo de AutoCAD

Para este ejemplo de codificación, estoy usando los módulos pythoncom y win32com . Estos módulos inician mi aplicación y realizan varias tareas diferentes.

import win32comu.client
import pythoncom

acad = win32com.client.Dispatch("AutoCAD.Application")
doc = acad.ActiveDocument
acadModel = doc.ModelSpace


def APoint(x, y, z = 0):
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))

def aDouble(xyz):
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (xyz))

def aVariant(vObject):
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, (vObject))

El objeto de AutoCAD SelectionSet

Primero, permítanme explicar el objeto SelectionSet en AutoCAD. El objeto SelectionSet simplemente hace referencia al conjunto de elementos que selecciono en AutoCAD. Cuando uso AutoCAD, generalmente selecciono elementos creando una ventana alrededor de los objetos que quiero seleccionar del dibujo. En ese caso suelo hacerlo usando el ratón. Diferentes objetos requieren SelectionSet como objeto de referencia para realizar diferentes actividades. Entendamos cómo crear un objeto SelectionSet en Python.

Creación de un objeto de AutoCAD SelectionSet en Python

En este ejemplo de codificación, intentaré crear dos líneas usando el método AddLine. Agrego estas dos líneas a un objeto SelectionSet.

l1 = acadModel.AddLine(APoint(0, 0, 0),APoint(1000, 1000, 0))
l2 = acadModel.AddLine(APoint(1000, 1000, 0),APoint(2000, 0, 0))

Ahora, puedo crear un objeto SelectionSet con el nombre «SS1» usando el método Agregar. Yo uso ese método en el objeto SelectionSets. Este objeto SelectionSets es una colección de todos los objetos SelectionSet presentes dentro del objeto Document.

Para saber más sobre el objeto Documento y otros objetos de AutoCAD, consulte mis otras publicaciones de blog.

ss1 = doc.SelectionSets.Add("SS1")

El objeto SelectionSet toma una matriz de objetos como parámetro de entrada. Esos son los objetos que se agregarán al conjunto de selección. Para hacerlo, uso el método AddItems en el objeto SelectionSet para pasar las líneas creadas como valores de entrada. Vea el código a continuación.

ss1.AddItems(aVariant([l1, l2]))

Para confirmar si se crea el conjunto de selección y si los dos objetos están presentes en el conjunto de selección o no, puedo usar dos métodos: nombre y recuento.

print(s1.Name)
print(s1.Count)


O/p:

SS1
2

Métodos del objeto de AutoCAD SelectionSet

También hay algunos otros métodos que se pueden usar para realizar varias tareas diferentes en un objeto SelectionSet. Por ejemplo, Borrar, Eliminar, Borrar, Resaltar, Elemento, Eliminar elementos, Seleccionar en pantalla.

A partir del método mencionado anteriormente, el método Item se puede usar para obtener el elemento presente en un índice dado en una colección, grupo o conjunto de selección.

print(ss1.Item(0).ObjectName)

O/p:

AcDbLine

Para eliminar SelectionSet o elementos de SelectionSet, puedo usar el método Clear, Delete, Erase o Remove Items. La funcionalidad de estos métodos es como se menciona a continuación:

  • Borrar:  este método vacía el conjunto de selección. El objeto SelectionSet seguirá existiendo, pero no contendrá ningún elemento. Los elementos que anteriormente residían en la selección todavía existen, pero ya no residen en el conjunto de selección.
  • RemoveItems:  este método ayuda a eliminar uno o más elementos de un conjunto de selección. Los elementos eliminados aún existen, pero ya no residen en el conjunto de selección.
  • Borrar:  este método elimina todos los elementos de un conjunto de selección. El objeto SelectionSet aún existe, pero no contendrá ningún elemento. Los elementos que residían anteriormente en el conjunto de selección ya no existen.
  • Eliminar:  elimina un objeto SelectionSet, pero no los objetos del SelectionSet. Si bien el SelectionSet en sí mismo no existirá después de la llamada al método Delete, los elementos contenidos anteriormente en el SelectionSet seguirán existiendo.

De los métodos enumerados anteriormente, solo el método RemoveItems requiere que se pasen parámetros. Por ejemplo, de las líneas que he agregado a SelectionSet quiero eliminar Line2 (l2). Debo pasar l2 como un elemento de la matriz de la lista de elementos que quiero eliminar del conjunto de selección.

ss1.RemoveItems(aVariant([l2]))
print(ss1.Count)

O/p:

1

A veces quiero seleccionar objetos usando solo el método convencional. Es decir, arrastrar/dibujar una ventana alrededor de los objetos que quiero seleccionar con el mouse. Python también me permite hacerlo usando el método SelectOnScreen.

ss1.SelectOnScreen()

Una vez que aplico el método como se muestra arriba, el código espera a que el usuario de AutoCAD seleccione los objetos. Al seleccionar los objetos, el usuario de AutoCAD debe presionar Enter en el teclado. Esto finalizará la selección. El código finalmente avanza.

Agrupar objeto en AutoCAD usando Python

El objeto Group es un objeto SelectionSet con nombre. Dado que no contiene ningún método especial, he agregado esta pequeña sección introductoria con el propósito de discutir el objeto de grupo.

Puedo agregar el objeto Group de manera similar a como agregué el objeto SelectionSet. Es decir, utilizando el método Add. Obviamente, aquí necesito usar el objeto de colección Grupos para agregar un grupo.

Además, para agregar elementos al objeto de grupo creado, puedo usar el método AppendItems. Puedo realizar la tarea de manera similar a como lo hice con el método AddItems para el objeto SelectionSet.

Además de eso, aquí sigue una lista de varios métodos y propiedades diferentes que se pueden usar para realizar actividades en objetos de grupo de AutoCAD:

  • Eliminar
  • ObtenerExtensionDictionary
  • Destacar
  • Artículo
  • eliminar elementos
  • actualizar
  • contar
  • Documento
  • resolver
  • TieneExtensiónDiccionario
  • capa
  • tipo de línea
  • Tipo de líneaEscala
  • grosor de línea
  • Material
  • nombre
  • Id. de objeto
  • Nombre del objeto
  • ID de propietario
  • PlotStyleName
  • Color verdadero
  • visible

Observaciones finales

Usando el objeto SelectionSet puedo realizar diferentes actividades en otros objetos de AutoCAD. Para obtener más información sobre la automatización de diferentes tareas con Python en AutoCAD, consulte mis otras publicaciones de blog. En caso de dudas o consultas, no dude en utilizar la sección de comentarios a continuación para hacer cualquier pregunta que pueda tener. Además, para cualquier tipo de consulta técnica, por favor contácteme a través del formulario de contacto de SCDA en este blog.

You May Also Like

Leave a Reply

1 comment

ERV says:

Buenas, y cómo hago para limpiar la seleccion y comenzar una nueva, de tal manera que no se me agrupen las selecciones al usar un for.

Leave a Reply

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.