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.

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.

AutoCAD usando pyautocad

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.

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)

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.

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