Objeto SelectionSet no AutoCAD com Python

Neste artigo irei discutir o objeto SelectionSet no AutoCAD e métodos para automatizar operações para o mesmo utilizando Python. Junto com isso, também adicionarei uma pequena introdução cobrindo o objeto Grupo.

Preparando o código para este exemplo do AutoCAD

Para este exemplo de codificação, estou usando os módulos pythoncom e win32com . Esses módulos iniciam meu aplicativo e executam várias tarefas 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))

O objeto AutoCAD SelectionSet

Primeiro, deixe-me explicar o objeto SelectionSet no AutoCAD. Um objeto SelectionSet simplesmente se refere ao conjunto de itens que eu seleciono no AutoCAD. Ao usar o AutoCAD, geralmente seleciono itens criando uma janela ao redor dos objetos que desejo selecionar no desenho. Nesse caso, costumo fazê-lo usando o mouse. Diferentes objetos requerem SelectionSet como um objeto de referência para realizar diferentes atividades. Vamos entender como criar o objeto SelectionSet em Python.

Criando um objeto AutoCAD SelectionSet em Python

Neste exemplo de codificação, tentarei criar duas linhas usando o método AddLine. Eu adiciono essas duas linhas a um objeto SelectionSet.

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

Agora, posso criar um objeto SelectionSet com o nome “SS1” usando o método Add. Eu uso esse método no objeto SelectionSets. Este objeto SelectionSets é uma coleção de todos os objetos SelectionSet presentes dentro do objeto Document.

Para saber mais sobre o objeto Document e outros objetos do AutoCAD, confira meus outros posts do Blog.

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

O objeto SelectionSet recebe uma matriz de objetos como parâmetro de entrada. Esses são os objetos que devem ser adicionados ao SelectionSet. Para isso, utilizo o método AddItems no objeto SelectionSet para passar as linhas criadas como valores de entrada. Veja abaixo o código.

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

Para confirmar se o SelectionSet foi criado e se os dois objetos estão presentes no SelectionSet ou não posso usar dois métodos: Name e Count.

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


O/p:

SS1
2

Métodos do objeto AutoCAD SelectionSet

Há também alguns outros métodos que podem ser usados ​​para executar várias tarefas diferentes em um objeto SelectionSet. Por exemplo, Clear, Delete, Erase, Highlight, Item, RemoveItems, SelectOnScreen.

A partir do método mencionado acima, o método Item pode ser usado para buscar o Item presente em um determinado índice em uma Collection, Group ou SelectionSet.

print(ss1.Item(0).ObjectName)

O/p:

AcDbLine

Para excluir SelectionSet ou itens de SelectionSet posso usar o método Clear, Delete, Erase ou Remove Items. A funcionalidade desses métodos é mencionada abaixo:

  • Clear:  Este método esvazia o SelectionSet. O objeto SelectionSet ainda existirá, mas não conterá nenhum item. Os itens que residiam anteriormente na seleção ainda existem, mas não residem mais no SelectionSet.
  • RemoveItems:  Este método ajuda a remover um ou mais itens de um SelectionSet. Os itens removidos ainda existem, mas não residem mais no SelectionSet.
  • Erase:  Este método exclui todos os itens em um SelectionSet. O objeto SelectionSet ainda existe, mas não conterá nenhum item. Os itens que residiam anteriormente no SelectionSet não existem mais.
  • Excluir:  exclui um objeto SelectionSet, mas não os objetos no SelectionSet. Embora o próprio SelectionSet não exista após a chamada para o método Delete, os itens contidos anteriormente pelo SelectionSet ainda existirão.

Dos métodos listados acima, apenas o método RemoveItems requer que os parâmetros sejam passados. Por exemplo, das linhas que adicionei ao SelectionSet quero remover Line2 (l2). Devo passar l2 como elemento do array da lista de Itens que desejo remover do SelectionSet.

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

O/p:

1

Às vezes eu quero selecionar objetos usando apenas o método convencional. Ou seja, arrastando/desenhando uma janela ao redor dos objetos que quero selecionar usando o mouse. Python também me permite fazer isso usando o método SelectOnScreen.

ss1.SelectOnScreen()

Depois de aplicar o método conforme mostrado acima, o código espera que o usuário do AutoCAD selecione os objetos. Ao selecionar os objetos o usuário do AutoCAD precisa pressionar Enter no teclado. Isso finalizará a seleção. O código então, eventualmente, avança.

Objeto de grupo no AutoCAD usando Python

O objeto Group é um objeto SelectionSet nomeado. Como não contém nenhum método especial, adicionei esta pequena seção introdutória com o objetivo de discutir o objeto Grupo.

Posso adicionar o objeto Group da mesma forma que adicionei o objeto SelectionSet. Ou seja, usando o método Add. Obviamente, aqui eu preciso usar o objeto de coleção Groups para adicionar um grupo.

Além disso, para adicionar itens ao objeto Group criado, posso usar o método AppendItems. Posso executar a tarefa de maneira semelhante à que fiz com o método AddItems para o objeto SelectionSet.

Além disso, segue uma lista de vários métodos e propriedades diferentes que podem ser usados ​​para realizar atividades em objetos do Grupo AutoCAD:

  • Excluir
  • GetExtensionDictionary
  • Realçar
  • Item
  • Remover itens
  • Atualizar
  • Contar
  • Documento
  • Lidar com
  • HasExtensionDictionary
  • Camada
  • Tipo de linha
  • Escala de tipo de linha
  • Espessura da linha
  • Material
  • Nome
  • ObjectID
  • Nome do Objeto
  • Proprietário
  • PlotStyleName
  • TrueColor
  • Visível

Observações finais

Usando o objeto SelectionSet posso realizar diferentes atividades em outros objetos do AutoCAD. Para saber mais sobre como automatizar diferentes tarefas usando Python no AutoCAD, confira minhas outras postagens do blog. Em caso de dúvidas ou perguntas, sinta-se sempre à vontade para usar a seção de comentários abaixo para fazer qualquer pergunta que você possa ter. Além disso, para qualquer tipo de consulta técnica, entre em contato comigo através do formulário de contato do SCDA neste blog.

You May Also Like

Leave a Reply

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.