Trabalhando com objeto de malha 3D no AutoCAD usando pyautocad (Python)

Nesta postagem do blog, veremos como podemos trabalhar com objetos de
malha 3D no AutoCAD usando o módulo pyautocad. Se quisermos, podemos
usar o módulo pywin32 também para trabalhar com malha 3D.

Importância da representação de malha 3D

A malha 3D pode ser utilizada em diversas indústrias para diferentes
finalidades.

Sendo um engenheiro civil, posso dizer com certeza, enquanto trabalha
como agrimensor, a malha 3D pode ser muito útil ao representar pontos
de contorno. Também pode ser usado em defeitos de construção fazendo
uma inspeção de coordenadas de cada pequeno elemento de uma estrutura.

Pode ser usado na indústria mecânica enquanto trabalha com projeto de máquina.

Atualmente, também utilizamos o modelo mesh para reconhecimento
facial. Além do mais, aqui pode, por exemplo, ser usado para detectar
mudanças nas expressões faciais.

Existem mais casos de uso de malha 3D que desempenham um papel muito
importante em muitas indústrias.

Iniciando o script em Python usando pyautocad ou pywin32

Podemos configurar nosso ambiente de trabalho usando o módulo
pyautocad conforme indicado abaixo:

from pyautocad import Autocad, aDouble

acad = Autocad(create_if_not_exists=True)

Alternativamente, também podemos usar win32com.client para executar as
coisas de acordo com o seguinte script:

from win32com.client import *
import pythoncom

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

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

Adicionando malha 3D aos modelos do AutoCAD usando pyautocad ou pywin32

Para desenhar uma malha 3D no modelo do AutoCAD, é necessário um
comando muito pequeno com alguns parâmetros.

A sintaxe do comando é a seguinte:

object.Add3DMesh(M, N, PointsMatrix)

Aqui, M & N recebe uma entrada inteira variando de 2 a 256, representando o tamanho da matriz (ou o número de vértices) em ambas as direções M & N.

Figura 1: Estrutura da malha conforme documentação da Autodesk

O PointsMatrix representa o array de doubles. É a mesma matriz que nós, por exemplo, ativamos ao criar polilinhas com pyautocad.

Vamos criar um desses modelos de malha usando o exemplo existente conforme fornecido na documentação da Autodesk. Vou levar o PointsMatrix conforme previsto na documentação.

pmatrx = aDouble(10, 1, 3, 10, 5, 5, 10, 10, 3, 15, 1, 0, 15, 5, 0, 15, 10, 0, 20, 1, 0, 20, 5, -1, 20, 10, 0, 25, 1, 0, 25, 5,  0, 25, 10, 0)

mesh1 = acad.model.Add3DMesh(4, 3, pmatrx)

Neste código, fornecemos 12 pontos de coordenadas no PointsMatrix.

Além disso, queremos 4 vértices na direção M e 3 vértices na direção N.

Figura 2.1: Vista superior da malha 3D criada no modelo do
AutoCAD usando pyautocad
Figura 2.2: Vista do canto superior direito da malha 3D criada
no modelo do AutoCAD usando pyautocad

Análise da malha 3D recém-criada

Como podemos ver nas Figuras 2.1 e 2.2, temos 4 vértices na direção M e 3 vértices ao longo de N conforme passado no comando.

Antes de desenhar o mesmo visualizamos que os vértices deverão estar
neste formato.

Figura 3.1: Representação da formação de malha 3D

Caso contrário, se tentarmos desenhar uma malha com uma polilinha usando o mesmo conjunto de pontos de coordenadas, isso não resultará em uma malha, mas simplesmente conectando os pontos de uma determinada série formando um padrão em ziguezague.

pl = acad.model.AddPolyline(pmatrx)
Figura 3.2: Polilinha usando o mesmo conjunto de coordenadas
usado para desenhar a malha 3D

Também podemos ver como o modelo de malha se parece se usarmos a visão realista em vez da estrutura de arame 2D. Isso nos mostrará claramente as depressões ou corcovas, se houver, no modelo de malha fornecido.

Figura 3.3: Visão realista de uma malha 3D

Como mencionado acima, a partir da Figura 3.3, a depressão pode ser vista claramente na metade direita da malha e a porção central da metade esquerda está se projetando no limite.

Propriedades de uma malha 3D usando pyautocad

Temos alguns métodos específicos de malha que podem ser usados para buscar as propriedades de uma determinada malha além de alguns métodos comuns que usamos nas operações do AutoCAD.

print("Coordinates of the mesh:", end='')
print(mesh1.Coordinates)
print("Is mesh one is closed in M direction: " + str(mesh1.MClose))
print("Density of mesh in M direction: " + str(mesh1.MDensity))
print("Number of vertices in M direction: " + str(mesh1.MVertexCount))
print("Is mesh one is closed in N direction: " + str(mesh1.NClose))
print("Density of mesh in N direction: " + str(mesh1.NDensity))
print("Number of vertices in N direction: " + str(mesh1.NVertexCount))


O/p:

Coordinates of the mesh:(10.0, 1.0, 3.0, 10.0, 5.0, 5.0, 10.0, 10.0, 3.0, 15.0, 1.0, 0.0, 15.0, 5.0, 0.0, 15.0, 10.0, 0.0, 20.0, 1.0, 0.0, 20.0, 5.0, -1.0, 20.0, 10.0, 0.0, 25.0, 1.0, 0.0, 25.0, 5.0, 0.0, 25.0, 10.0, 0.0)
Is mesh one is closed in M direction: False
Density of mesh in M direction: 0
Number of vertices in M direction: 4
Is mesh one is closed in N direction: False
Density of mesh in N direction: 0
Number of vertices in N direction: 3

Leave a Reply

Deixe um comentário

O seu endereço de e-mail não será publicado.

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

Close

Meta