Nesta postagem do blog, discutirei o objeto Aplicativo AutoCAD e alguns de seus métodos e propriedades importantes. Mostrarei como implementar o objeto Aplicativo AutoCAD no pyautocad.
Iniciando este exemplo de codificação, importo classes e métodos relevantes do pyautocad. Eu crio um novo modelo no código abaixo.
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)
Buscando o objeto do aplicativo AutoCAD em Python
Para que eu possa executar qualquer ação no objeto Aplicativo AutoCAD, preciso buscar esse objeto. No pyautocad eu uso “acad.app” para isso.
Se eu quiser usar módulos de comunicação em vez de pyautocad, posso proceder conforme codificado abaixo. Nesse caso eu uso os módulos Python win32com e pythoncom.
from win32com.client import *
import pythoncom
acad1 = win32com.client.Dispatch("AutoCAD.Application")
Nesse caso, acad1 representa o objeto Aplicativo.
Propriedades do objeto Aplicativo AutoCAD
Muitas propriedades de objetos de aplicativos melhoram a automação de desenhos do AutoCAD. Discutirei algumas das propriedades importantes, analisando-as uma a uma.
Para obter diferentes tipos de informações relacionadas ao objeto Aplicativo AutoCAD, como, por exemplo, o nome do aplicativo, o nome completo do aplicativo ou, por exemplo, o nome do documento, posso usar o código.
# detalhes da aplicação
print(acad.app.Application.Name)
print(acad.app.Caption)
print(acad.app.ActiveDocument.Name)
print(acad.app.Path)
print(acad.app.FullName)
O/p:
AutoCAD
Autodesk AutoCAD 2018 - [Drawing2.dwg]
Drawing2.dwg
C:\Program Files\Autodesk\AutoCAD 2018
C:\Program Files\Autodesk\AutoCAD 2018\acad.exe
Digamos que eu queira verificar todos os documentos abertos atualmente no aplicativo AutoCAD. Para isso, posso, por exemplo, usar a propriedade Documents e iterar sobre essa propriedade.
Vou demonstrar isso com um exemplo simples no AutoCAD. No exemplo dele eu tenho dois desenhos abertos, Drawing1 e Drawing2. A captura de tela abaixo mostra isso.
O desenho “Drawing2.dwg” está atualmente selecionado. Da minha saída anterior e da imagem acima, fica claro que este desenho é buscado como ActiveDocuments. Mas deixe-me verificar se ele também retorna Drawing1.dwg. Este deve ser o caso, pois esse arquivo também está aberto.
# obtém documentos abertos no momentoprint(acad.app.Documents)
for i in acad.app.Documents:
print(i.Name)
O/p:
Drawing1.dwg
Drawing2.dwg
Atributos MenuGroups e MenuBar
Agora recebo a barra de menus e os objetos do grupo de menus atualmente em uso. Faço isso no código abaixo:
# obtém o objeto da barra de menus da sessão
print(acad.app.MenuBar)
# uma coleção de objetos PopupMenu que representam a barra de menus
print(acad.app.MenuGroups)
for i in acad.app.MenuGroups:
print(i.Name)
O/p:
<comtypes.client.lazybind.Dispatch object at 0x0000021BBCA23EB0>
ACAD
CUSTOM
MODELDOC
EXPRESS
AUTODESKSEEK
Aqui, posso ver que o primeiro código de MenuBar retornou um objeto de despacho que é uma barra de menu ativa do desenho do AutoCAD. Discutirei o objeto MenuBar em outro artigo.
Propriedade WindowState do objeto Aplicativo AutoCAD
Para ajustar ou visualizar o estado do aplicativo AutoCAD ou da janela do documento AutoCAD, posso usar o atributo WindowState. WindowState é codificado com valores inteiros. Em resumo, os inteiros representam estados de janela em, por exemplo, da seguinte maneira:
- acMin(1): A janela é minimizada.
- acMax(2): A janela é maximizada.
- acNorm(3): A janela é normal (não minimizada nem maximizada).
# especifica se a janela está minimizada, maximizada ou normal
print(acad.app.WindowState)
O/p:
1
Métodos de objetos do aplicativo AutoCAD
Agora, discutirei alguns métodos pyautocad importantes para lidar com aplicativos AutoCAD. Na verdade, todos devem saber ao realizar operações com o objeto do aplicativo AutoCAD.
Sempre que escrevo um código, devo verificar se o aplicativo está em um estado Quiescent (Inativo) ou não. Para verificar se uso o método IsQuiescent. Aqui está um exemplo:
# obtém o estado atual do aplicativo
print(acad.app.GetAcadState().IsQuiescent)
O/p:
False
Como eu estava usando o aplicativo depois de executar este código, ele está mostrando o aplicativo como ativo (ou seja, Falso).
Além disso, se eu quiser fechar o documento atual, posso usar o método Quit. Obviamente, isso fecha apenas o documento ativo no momento e não todo o aplicativo retornando um valor nulo.
# fecha o arquivo de desenho e existe o aplicativo
acad.app.Quit()
Por fim, para atualizar o aplicativo após aplicar o código, posso usar o método Update que também retorna null.
# atualiza o aplicativo
acad.app.Update()
Considerações finais e conteúdo relacionado
Para outros artigos informativos sobre a automação do AutoCAD, verifique meus outros artigos relacionados ao pyautocad e ao pywin32. Por favor, comente as perguntas que você tem na seção de comentários. Sinta-se à vontade para entrar em contato comigo para qualquer consulta técnica. Você pode usar o formulário de contato para o mesmo.
Leave a Reply