Você está na página 1de 12

Visão geral: qual o propósito, onde é utilizada, quais a

facilidades que utilizar esta biblioteca proporciona

O pyautocad é um módulo Python que permite a automação de tarefas no AutoCAD. Com


o pyautocad, é possível criar desenhos complexos de forma automatizada, gerar linhas,
polígonos, círculos e outras formas geométricas com apenas algumas linhas de código. Além
disso, é possível manipular os elementos existentes em um desenho do Autocad, mover,
redimensionar, rotacionar e até mesmo excluir elementos de forma automatizada. O Autocad
armazena uma grande quantidade de informações sobre os elementos presentes em um
desenho, e o pyautocad permite a extração dessas informações.

A automatização do AutoCAD em Python abrange grande diversidade de áreas nas quais são
utilizadas, dentre elas podem se destacar:

Gerenciamento e controle de documentos

Usando pyautocad em Python você pode controlar qual desenho deve ser o atualmente
ativo. Isso permite ajustar vários desenhos em um único script, ou seja, um único fluxo de
trabalho. Você pode alternar entre desenhos, adicionar, remover e editar elementos e acessar
ou manipular objetos relevantes do AutoCAD pertencentes ao respectivo desenho. Alguns
exemplos podem ser ActiveLayout, ActiveLayer, ActiveViewport e assim por diante.

Dimensionamento tedioso, configuração de camada, adição de texto etc.

Usando pyautocad, pythoncom e pywin32 você pode definir, editar e selecionar camadas em
um desenho. Você também pode ajustar o dimensionamento em um desenho. Adicionar e
ajustar, bem como copiar, colar ou excluir texto, também é feito facilmente com os módulos
Python para AutoCAD.

Importação e exportação de ou para outros formatos

O uso do Python para AutoCAD permite converter entre vários formatos de arquivo, tanto para
importação quanto para exportação de arquivos. Você pode manipular arquivos Excel,
desenhos CAD, arquivos dxf e bmp, bem como muitos outros formatos de arquivo. Tudo isso
pode ocorrer automaticamente, ou seja, totalmente automatizado de acordo com seu
programa Python.

Ajustando as configurações da viewport do AutoCAD

Sempre que adiciono objetos de um desenho ao espaço do papel, uso e ajusto as configurações
da viewport. Eu uso as configurações da janela de visualização ao produzir cópias impressas
para trocas de documentos com cais relevantes. Por exemplo, para transação de cópia
impressa entre contratante e cliente. Mesmo trabalhando com um laptop mais rápido, essas
operações consomem uma quantidade considerável de tempo. As configurações da janela de
visualização podem ser ajustadas em Python, usando, por exemplo, pyautocad
ou pywin32 . Transferir esse fluxo de trabalho para um script Python aumentará sua
produtividade ao trabalhar com o AutoCAD.

Análise de quantidade de entidade e material

A pesquisa de materiais ou entidades específicas em um desenho pode ser


feita manualmente no AutoCAD com a função de pesquisa. Mas isso também
pode ser escrito em Python. Além disso, a transferência desse fluxo de trabalho
para um script Python permitirá quantificar facilmente entidades e materiais por
critérios relevantes para a criação de tabelas de frequência e similares.

Marcação de elementos do AutoCAD

Ao ter várias ocorrências de uma entidade do AutoCAD dentro de um desenho,


costumo marcar entidades. Fazer isso manualmente leva muito
tempo. Considero esse tempo perdido, pois a marcação do AutoCAD pode ser
automatizada com o Python.

Modelagem AutoCAD 2D e 3D

Posso desenhar elementos AutoCAD 2D e 3D diretamente em Python, ou seja,


usando um script. Posso adicionar esses elementos ao desenho em um local
especificado. Além disso, posso manipular propriedades e, assim, alterar os
objetos do AutoCAD em 2D ou 3D.

Criação e manuseio de blocos do AutoCAD

Definir várias entidades como um bloco e editar entidades dentro de um bloco


pode ser roteirizado em Python. Usando o pyautocad para manipulação de
blocos do AutoCAD, você pode acessar várias propriedades relevantes dos
objetos AutoCAD Block e AutoCAD BlockReferrence. Por exemplo, você pode
verificar se o bloco possui atributos, ajustar seu fator de conversão entre
blocos, torná-lo um bloco dinâmico ou estático, ajustar atribuições de camada
etc.

Desenvolvimentos de ferramentas personalizadas do AutoCAD

O script de operações do AutoCAD em Python permite desenvolver aplicativos


personalizados específicos para seu projeto. Digamos que você, por exemplo,
desenvolve conceitos e layouts de armazém regularmente. Você pode estar
trabalhando para um 3PL de armazenamento ou similar. Você tem algumas
categorias de layout. Cada categoria geralmente aplica o mesmo tipo de
layout. Cada layout é único, no entanto, devido ao espaçamento e
dimensionamento, à quantidade de corredores de armazenamento e estações
de trabalho, etc. Usando Python para AutoCADvocê pode desenvolver um
script de “desenho” parametrizado para cada categoria de layout e então, com
base em alguns dados de entrada iniciais, gerar o layout que você precisa para
o projeto ou cliente específico. Tudo o que você precisa fazer é selecionar a
categoria de layout e preencher os dados de parâmetros de entrada
relevantes. Isso pode ser feito em uma GUI amigável ou em um arquivo Excel.

Aproveite a funcionalidade do Python além do AutoCAD

Transferir seu fluxo de trabalho manual do AutoCAD para o Python traz os


benefícios de poder acessar a funcionalidade do Python. Isso inclui
funcionalidades que não vêm junto com o próprio AutoCAD. Você pode
escrever funções e métodos, acessar estruturas de dados e bancos de dados e
usar software complementar de visualização e plotagem. Você pode conteúdo
para um front-end com uma interface amigável.

Também faz parte dessa automatização as funcionalidades de:

Criação de Desenhos: Com o Python e o Autocad, é possível criar desenhos


complexos de forma automatizada. É possível gerar linhas, polígonos, círculos
e outras formas geométricas com apenas algumas linhas de código.

Manipulação de Elementos: Além da criação, também é possível manipular os


elementos existentes em um desenho do Autocad. É possível mover,
redimensionar, rotacionar e até mesmo excluir elementos de forma
automatizada.

Extração de Informações: O Autocad armazena uma grande quantidade de


informações sobre os elementos presentes em um desenho. Com o Python, é
possível extrair essas informações de forma automatizada e utilizá-las para
análise ou geração de relatórios.

Integração com Outros Softwares: O Python possui uma vasta biblioteca de


pacotes e pode ser facilmente integrado com outros softwares e serviços. É
possível, por exemplo, utilizar o Autocad como parte de um fluxo de trabalho
maior que envolve o processamento de dados geoespaciais ou a geração de
modelos 3D

Algumas das facilidades de usar o pyautocad:

Instalação fácil: O módulo pyautocad é suportado pelo pip install para uma
instalação fácil.

Criação e ajuste de desenhos: O módulo pyautocad permite que você crie


desenhos no AutoCAD e também ajuste desenhos existentes, por exemplo,
manipulando objetos no desenho.

Reconhecimento do desenho do AutoCAD: O pyautocad reconhece o


desenho do AutoCAD atualmente aberto e também reconhece o espaço do
modelo atualmente ativo.
Criação de objetos: Com o pyautocad, você pode criar vários tipos de objetos,
como círculos, polilinhas, arcos, elipses, splines, hélices, textos e objetos
sólidos.

Alteração de propriedades de objetos: O pyautocad permite que você altere


as propriedades dos objetos, como a cor, a camada, o tipo de linha, a escala
do tipo de linha, o peso da linha, a espessura e o material.

Principais funções presentes na biblioteca e como utilizá-las.

API
Esta parte da documentação abrange todas as interfaces do pyautocad

api - Interface principal do Autocad

classepyautocad.api.Autocad(create_if_not_exists=Falso, visível=Verdadeiro)
[fonte]

Objeto principal do AutoCAD Automation

 create_if_not_exists – se o AutoCAD não for executado, então


Parâmetros
Novo Instanse será engraxado
:
 visible – nova instância do AutoCAD será visível se True (padrão)

app

Retorna ativo AutoCAD.Application

se o Autocad foi criado com , ele criará se não houver um


ativo create_if_not_exists=TrueAutoCAD.Application

doc

Retorna ActiveDocument do aplicativo atual

ActiveDocument

O mesmo que doc

Application
O mesmo que o aplicativo

model

ModelSpace do documento ativo

iter_layouts(doc=Nenhum, skip_model=Verdadeiro)[fonte]

Iterar layouts do doc

 doc – documento para iterar layouts de


Parâmetros
if doc=None (padrão), ActiveDocument é usado
:
 skip_model – não inclua se True ModelSpace

iter_objects(object_name_or_list=Nenhum,
bloco=Nenhum, limite=Nenhum, dont_cast=Falso )[fonte]

Iterar objetos do bloco

 object_name_or_list – parte do nome do tipo de objeto, ou lista


dele
 block – Autocad block, default - ActiveDocument.ActiveLayout.Block

Parâmetros  limit – número máximo de objetos a serem retornados, infinito


: padrão
 dont_cast – não recuperar a melhor interface para o objeto, pode
acelerar iteração. Os objetos retornados devem ser convertidos
pelo chamador

iter_objects_fast(object_name_or_list=Nenhum, contêiner=Nenhum, limit


e=Nenhum)[fonte]

Atalho para iter_objects(dont_cast=True)

Não deve ser usado em situações normais

find_one(object_name_or_list, container=Nenhum, predicado=Nenhum)


[fonte]

Retorna a primeira ocorrência do objeto que corresponde ao predicado

Parâmetros  object_name_or_list – como em iter_objects()


:  container – como em iter_objects()

 predicado – chamável, que aceita objeto como argumento e


retorna Verdadeiro ou Falso

Retorna:
Objeto se encontrado, senão Nenhum

best_interface(Obj)[fonte]

Recuperar a melhor interface para o objeto

prompt(Texto)[fonte]

Imprime texto no console e no prompt do AutoCAD

get_selection(text='Selecionar objetos')[fonte]

Solicita que o usuário selecione objetos

Parâmetros
Texto – Solicitação de seleção
:

estáticoaDouble(*Seq)
atalho para pyautocad.types.aDouble()

estáticoaInt(*Seq)
atalho para pyautocad.types.aInt()

estáticoaShort(*Seq)
atalho para pyautocad.types.aShort()

pyautocad.api.ACAD

Constantes da biblioteca de tipos do AutoCAD, por exemplo:

text.Alignment = ACAD.acAlignmentRight

- Ponto 3D e outros tipos de dados do


types
AutoCAD
classepyautocad.types.APoint[fonte]
Ponto 3D com operações geométricas básicas e suporte para passagem
como um
parâmetro para funções de automação do AutoCAD
Uso:

>>> p1 = APoint(10, 10)


>>> p2 = APoint(20, 20)
>>> p1 + p2
APoint(30.00, 30.00, 0.00)
Também suporta iterável como parâmetro:

>>> APoint([10, 20, 30])


APoint(10.00, 20.00, 30.00)
>>> APoint(range(3))
APoint(0.00, 1.00, 2.00)
Operações matemáticas suportadas: +, -, *, /, +=, -=, *=, /=:

>>> p = APoint(10, 10)


>>> p + p
APoint(20.00, 20.00, 0.00)
>>> p + 10
APoint(20.00, 20.00, 10.00)
>>> p * 2
APoint(20.00, 20.00, 0.00)
>>> p -= 1
>>> p
APoint(9.00, 9.00, -1.00)
Pode ser convertido em tupla ou lista:

>>> tuple(APoint(1, 1, 1))


(1.0, 1.0, 1.0)
x

x coordenada do ponto 3D

coordenada y do ponto 3D

coordenada z do ponto 3D

distance_to(Outros__________)[fonte]

Devolve a distância a outro ponto

Parâmetros Outros__________ – Instância APoint ou qualquer sequência de 3


: coordenadas

pyautocad.types.distance(p1, p2)[fonte]

Retorna distância entre dois pontos p1 e p2

pyautocad.types.aDouble(*Seq)[fonte]

Retorna de duplos (código 'd') para passar para o AutoCAD array.array


Para pontos 3D, use APoint .

pyautocad.types.aInt(*Seq)[fonte]

Retorna de ints (código 'l') para passar para o AutoCAD array.array

pyautocad.types.aShort(*Seq)[fonte]

Devoluções de shorts (código 'h') para passar para o


AutoCAD array.array

utils - Funções utilitárias

pyautocad.utils.timing(Mensagem)[fonte]

Gerenciador de contexto para execução de tempo

Mensagem – mensagem para


Parâmetros:
imprimir

Uso:

with timing('some operation'):


do_some_actions()
Vai imprimir:

some operation: 1.000 s # where 1.000 is actual execution time

pyautocad.utils.suppressed_regeneration_of (mesa)[fonte]

Novo na versão 0.1.2.

Gerenciador de contexto. Suprime a regeneração da tabela para


acelerar drasticamente as operações da tabela

Parâmetros
mesa – objeto de tabela
:

with suppressed_regeneration_of(table):
populate(table) # or change its properties

pyautocad.utils.unformat_mtext(s, exclude_list=('P', 'S'))[fonte]

Retorna cadeia de caracteres com informações de formato removidas


 s – string com multitexto
Parâmetros
 exclude_list – não toque em tags desta lista. Padrão ('P', 'S') para
:
Nova linha e frações

>>> text = ur'{\fGOST type A|b0|i0|c204|p34;TEST\fGOST type A|b0|i0|c0|


p34;123}'
>>> unformat_mtext(text)
u'TEST123'

pyautocad.utils.mtext_to_string (s)[fonte]

Retorna cadeia de caracteres com innformation de formato removido


como unformat_mtext() e P (parágrafos ) substituídos por novas linhas

>>> text = ur'{\fGOST type A|b0|i0|c204|p34;TEST\fGOST type A|b0|i0|c0|


p34;123}\Ptest321'
>>> mtext_to_string(text)
u'TEST123\ntest321'

pyautocad.utils.string_to_mtext (s)[fonte]

Retorna cadeia de caracteres no formato multitexto do Autocad

Substitui newllines \n por \P, etc.

pyautocad.utils.text_width(text_item)[fonte]

Retorna a largura do objeto Autocad Text ou MultiText

pyautocad.utils.dynamic_print(Texto)[fonte]

Imprime texto dinamicamente em uma linha

Usado para imprimir algo como animações ou progresso

- Importar e exportar dados


contrib.tables
tabulares de formatos populares
classepyautocad.contrib.tables.Table[fonte]

Representa a tabela com capacidade de importar e exportar dados para


os seguintes formatos:

 CSV
 XLS
 xlsx (somente gravação)
 json

Quando você precisa armazenar alguns dados, isso pode ser feito da
seguinte maneira:

table = Table()
for i in range(5):
table.writerow([i, i, i])

table.save('data.xls', 'xls')
Para importar dados do arquivo, use data_from_file() :

data = Table.data_from_file('data.xls')
writerow(remar)[fonte]

Adicionar linha à tabela

remar (lista ou tupla) – linha para


Parâmetros:
adicionar

append(remar)[fonte]

Sinônimo de writerow()

clear()[fonte]

Limpar tabela atual

save(nome do arquivo, fmt, encoding='cp1251')[fonte]

Salvar dados no arquivo

 filename – caminho para o arquivo


Parâmetros  FMT – formato de dados (um dos suportados, por exemplo, 'xls',
: 'csv'
 Codificação – Codificação para o formato 'CSV'

convert(Fmt)[fonte]

Retornar dados, convertidos em formato

Parâmetros: Fmt – formato desejável dos dados

Nota: para converter para o formato csv, use to_csv()

Veja também available_write_formats()


to_csv(stream, encoding='cp1251', delimiter=';', **kwargs)[fonte]

Grava dados em formato csv para transmitir

 Stream – fluxo para gravar dados em


Parâmetros  Codificação – Codificação de saída
:  Delimitador – Delimitador CSV
 kwargs – parâmetros adicionais para csv.writer

estáticodata_from_file(nome do arquivo, fmt=Nenhum,


csv_encoding='cp1251', csv_delimiter=';')[fonte]

Retorna dados no formato desejado do arquivo

 filename – caminho para o arquivo com dados


 fmt – formato do arquivo, se for Nenhum, então ele tenta
Parâmetros
adivinhar o formato da extensão do nome do arquivo
:
 csv_encoding – codificação para dados CSV
 csv_delimiter – Delimitador para dados CSV

O formato deve estar em available_read_formats()

cache- Armazenar em cache todos os atributos


do objeto
Novo na versão 0.1.2.

classepyautocad.cache.Cached(exemplo)[fonte]

Proxy para armazenar atributos de objeto em cache.

Considere a classe externa Foo com propriedade cara (não podemos


alterar seu código):

class Foo(object):
@property
def x(self):
print 'consuming time'
time.sleep(1)
return 42
Armazene em cache todos os atributos e teste o acesso:
foo = Foo()
cached_foo = Cached(foo)
for i in range(10):
print cached_foo.x
Saída:

consuming time
42
42
42
42
42
É possível desativar o cache com switch_caching() e recuperar a
instância original com get_original()

get_original()[fonte]

Retorna a instância original

switch_caching(is_enabled)[fonte]

Ativar ou desativar o cache

is_enabled (Bool) – status do


Parâmetros:
cache True ou False

Exemplo de um código que utilize a biblioteca:

“AMARAL, E. A. L. AutoCAD: O que é, o que faz e para que serve. Disponível


em: <https://arquitetoleandroamaral.com/autocad-o-que-e-o-que-faz-e-
para-que-serve/#Qual%20A%20Fun%C3%A7%C3%A3o%20Do%20AutoCAD?
>. Acesso em: 16 nov. 2023.”

Você também pode gostar