top of page
Buscar

Manipulando Blocos do AutoCAD com Python: Um Guia Prático


Introdução

No meu cotidiano de Engenheiro Eletricista, sendo um amante de Python, sempre vislumbrei a automatização de tarefas repetitivas que eu passava horas fazendo na frente da tela do AutoCAD. O que será apresentado aqui é o resultado colhido na minha busca em tornar o meu trabalho o menos mecânico possível, afim de possibilitar um melhor uso do meu tempo de trabalho, seja em tarefas mais complexas ou concepções de projeto que exigem bastante calma e abstração.


Neste tutorial, vou lhe mostrar como usar a biblioteca ezdxf para manipular blocos DXF em Python, utilizando um exemplo prático de geração de um diagrama unifilar. A partir disso as possiblidades são imensas e confesso que sonho em ver meus colegas de outras disciplinas entendendo o mesmo que entendi. Além disso, conhecimento é fonte de poder. Sou defensor de que todos tenham acesso à informação e à conhecimento gerado. A Missão da Engenharia para a humanidade é grandiosa, portanto devemos nos unir em conhecimento.


Por que Manipular AutoCAD com Python?

Python, com sua versatilidade e poder, se destaca como a escolha ideal para automações em geral. Abaixo vou listar algumas das vantagens em se utilizar essa linguagem.


Aumento da Produtividade

A automação de tarefas repetitivas é uma das maneiras mais eficazes de aumentar a produtividade, principalmente nas tarefas profissionais. Na engenharia, atividades como o dimensionamento de circuitos, a criação de diagramas unifilares e a análise de fluxo de potência são exemplos de tarefas frequentemente repetitivas e demoradas.


É um fato que grandes empresas já implementaram e continuam implementando a automação em seus processos, justamente pela escala que as mesmas atingem. No entanto, Engenheiros que trabalham sozinhos e prestam seus serviços a terceiros não tem acesso a todo esse aparato de software que essas empresas possuem. Até mesmo os softwares mais comuns possuem um valor de assinatura considerável.


Precisão e Consistência

A precisão é crucial nas diversas áreas de caráter técnico, onde pequenos erros podem levar a consequências significativas, muitas vezes de natureza perigosa. A definição de um procedimento garante a precisão e a consistência dos resultados, seja em realização de cálculos, orçamentos, diagramas, etc.


Flexibilidade e Versatilidade

Python é amplamente reconhecido por sua versatilidade e pela vasta gama de bibliotecas disponíveis. Ferramentas como pandas, NumPy e matplotlib permitem a realização de análises de dados avançadas, funções matemáticas já implementadas e visualização de gráficos. Especificamente para Engenharia Elétrica, bibliotecas como PyPower facilitam a modelagem e análise de sistemas elétricos, Pycircuit é perfeito para o projeto e análise de circuitos eletrônicos. Para análises de redes elétricas, o GridCal oferece ferramentas robustas para estudos de fluxo de carga e estabilidade de tensão.


Integração com Big Data e IA

Na era dos dados, a capacidade de analisar grandes volumes de informações é uma vantagem competitiva significativa. Python, com suas bibliotecas poderosas de big data e inteligência artificial, como TensorFlow e scikit-learn, permite realizar análises avançadas a fim de se obter insights ou correlações desejadas. Por exemplo, em sistemas de distribuição de energia, algoritmos de machine learning podem prever falhas analisando dados de sensores em tempo real. Isso permite intervenções preventivas que minimizam interrupções e reduzem custos. Essa é uma das diversas aplicações, das quais muitas ainda nem foram inventadas, que são possíveis com essa tecnologia.


Comunidade Ativa e Recursos Open-Source

Uma das maiores vantagens de Python é sua vasta e ativa comunidade. Isso significa que temos acesso a uma infinidade de recursos, desde tutoriais e documentação até fóruns e grupos de discussão.


O Que a Biblioteca ezdxf Pode Fazer?

A ezdxf é uma biblioteca que permite a manipulação de arquivos DXF do AutoCAD diretamente em Python. Com ela, você pode:

  • Criar, ler e modificar arquivos DXF.

  • Adicionar e manipular entidades de desenho como linhas, arcos e textos.

  • Trabalhar com layouts e espaços de modelo.

  • Criar e inserir blocos com atributos personalizados.

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte instalado:

  • Python 3.x

  • Biblioteca ezdxf (você pode instalá-la usando pip install ezdxf)

  • Biblioteca pandas para manipulação de dados (pip install pandas)

Criação de um Novo Documento DXF

Primeiro, precisamos criar um novo documento DXF e um espaço de modelo para adicionar nossos elementos.



Explorando a Criação de Blocos de Disjuntores e Fios

Para entender melhor como a criação de blocos de disjuntores e fios funciona em nosso código, é importante saber que esses blocos são elementos do AutoCAD que contêm atributos. Esses atributos podem ser personalizados e são puxados diretamente dos dados fornecidos na tabela de circuitos. Vamos detalhar esse processo:


Entendendo o Case de Desenhar Diagrama Unifilar

Desenhar diagramas unifilares envolve seguir padrões específicos para garantir a clareza e a conformidade com as normas técnicas vigentes. No contexto do AutoCAD, temos que entender que estamos em um espaço em que podemos executar ações, como colocar um elemento que possui parâmetros bem definidos. Ao se analisar um diagrama unifilar, é possível notar que existe uma lógica em sua criação, tanto do espaçamento dos disjuntores, quanto nos parâmetros de cada elemento que o compõe.


O processo que o código irá realizar é justamente fazer o que nós fazemos na tela do AutoCAD: Desenhar o disjuntor, colocar os parâmtros do mesmo, desenhar os condutores, colocar o parâmetro dos mesmos. Após isso, descemos no espaço bi-dimensional e fazemos a mesma coisa para outro circuito. Ao final fechamos o diagrama com um quadro.

Entendendo o problema dessa maneira, podemos partir para uma implementação de lógica algorítimica que realize essa tarefa.


O que são Blocos no AutoCAD?

Blocos no AutoCAD são conjuntos de entidades de desenho (como linhas, arcos, textos, etc.) que são combinados para formar um único objeto. Eles são reutilizáveis e podem ser inseridos múltiplas vezes em diferentes locais do desenho. Blocos podem conter atributos, que são informações textuais que podem variar de uma inserção para outra. Por exemplo, um bloco de disjuntor pode ter atributos como corrente, nome, e seção do condutor.


Criando Blocos de Disjuntores e Fios

Em nosso exemplo, temos diferentes tipos de disjuntores (monofásico, bifásico e trifásico) e fios que são representados por arquivos DXF específicos. Cada tipo de disjuntor e fio é armazenado em um arquivo DXF separado com um bloco específico dentro dele. Esses blocos contêm os atributos que iremos preencher com os dados dos circuitos.


Inserindo Blocos com Atributos no Espaço de Modelo

A função insert_dxf_block_with_attributes é responsável por ler o arquivo DXF, verificar a existência do bloco, inseri-lo no espaço de modelo e adicionar os atributos. Veja o detalhamento da função:



Definindo os Atributos dos Blocos

Os atributos dos blocos de disjuntores e fios são definidos com base nos dados da tabela de circuitos. Por exemplo, para um disjuntor, os atributos podem incluir a corrente nominal, e para os fios, podem incluir a seção do condutor, a potência e o nome do circuito. Estes dados são extraídos diretamente do DataFrame e passados para a função de inserção dos blocos.

Exemplo de Atribuição de Atributos

Aqui está um exemplo de como os atributos são definidos e passados para a função de inserção:




Neste exemplo, os atributos corrente, seção, Potência, nome e fases são extraídos da linha atual do DataFrame e utilizados para personalizar a inserção dos blocos de disjuntores e fios no diagrama unifilar.


Função para Gerar o Diagrama Unifilar

A função gerar_diagrama_unifilar agrupa os circuitos por quadro e insere blocos correspondentes a cada circuito. Ela também desenha um retângulo ao redor de cada quadro.



Mostrando um Exemplo de Execução

Para executar o código e gerar o diagrama unifilar, você pode passar os exemplos de circuitos como um DataFrame.




Para o exemplo em questão, o diagrama unifilar gerado pode ser visto na imagem abaixo:



Na imagem acima é possível notar que os atributos ficaram todos concentrados na origem do espaço do AutoCAD. Para solucionar essa questão, é necessário executar o comando ''battman" para atualizar os blocos do modelo, como podemos ver na imagem abaixo:




A tela do comando abre a janela acima, basta selecionar bloco por bloco e sincroniza-los ("sync"). Isso feito, temos o diagrama unifilar abaixo.




Conclusão

Ao entender como os blocos do AutoCAD podem ser manipulados com atributos personalizados em Python, você pode automatizar muitos diversas tarefas no AutoCAD. Se você gostou do conteúdo, considere deixar deixar seu comentário, compartilhar ou até mesmo me enviar uma mensagem contando como esse conhecimento lhe ajudou. Até a próxima!


 
 
 

Comments


bottom of page