Objeto de malha 3D no AutoCAD

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

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 *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.