Objeto de malla 3D en AutoCAD con pyautocad

En esta publicación de blog, veremos cómo podemos trabajar con objetos de malla 3D en AutoCAD usando el módulo pyautocad. Si queremos, también podemos usar el módulo pywin32 para trabajar con mallas 3D.

Importancia de la representación de malla 3D

La malla 3D se puede utilizar en varias industrias para diferentes propósitos.

Como ingeniero civil, definitivamente puedo decir que, mientras trabajo como agrimensor, la malla 3D puede ser muy útil para representar puntos de contorno. También se puede utilizar en defectos de construcción haciendo una inspección de coordenadas de cada pequeño elemento de una estructura.

Se puede utilizar en la industria mecánica mientras se trabaja con el diseño de máquinas.

Hoy en día, también usamos el modelo de malla para el reconocimiento facial. Aquí, además, se puede utilizar, por ejemplo, para detectar cambios en las expresiones faciales.

Hay más casos de uso de malla 3D que juegan un papel muy importante en muchas industrias.

Iniciando el script en Python usando pyautocad o pywin32

Podemos configurar nuestro entorno de trabajo utilizando el módulo pyautocad como se indica a continuación:

from pyautocad import Autocad, aDouble

acad = Autocad(create_if_not_exists=True)

Alternativamente, también podemos usar win32com.client para que todo funcione según el siguiente 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))

Agregar malla 3D a plantillas de AutoCAD usando pyautocad o pywin32

Para dibujar una malla 3D en la plantilla de AutoCAD, se necesita un comando muy pequeño con unos pocos parámetros.

La sintaxis del comando es como se indica a continuación:

objeto.Add3DMesh(M, N, PointsMatrix)

Aquí, M & N toma una entrada de número entero que va de 2 a 256 y representa el tamaño de la matriz (o el número de vértices a lo largo) en ambas direcciones M & N.

Figura 1: Estructura de la malla según la documentación de Autodesk

PointsMatrix representa la matriz de dobles. Es la misma matriz en la que, por ejemplo, creamos polilíneas con pyautocad .

Vamos a crear uno de esos modelos de malla utilizando el ejemplo existente que se proporciona en la documentación de Autodesk. Tomaré el PointsMatrix como se indica en la documentación.

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)

En este código, hemos proporcionado 12 puntos de coordenadas en PointsMatrix.

Además, queremos 4 vértices en la dirección M y 3 vértices en la dirección N.

Figura 2.1: Vista superior de la malla 3D creada en la plantilla de AutoCAD usando pyautocad
Figura 2.2: Vista de la esquina superior derecha de la malla 3D creada en la plantilla de AutoCAD usando pyautocad

Análisis de la malla 3D recién creada

Como podemos ver en las Figuras 2.1 y 2.2, tenemos 4 vértices en la dirección M y 3 vértices a lo largo de N como se pasó en el comando.

Antes de dibujar el mismo hemos visualizado que los vértices estarán en este formato. es decir

Figura 3.1: Representación de la formación de malla 3D

De lo contrario, si tratamos de dibujar una malla con una polilínea usando el mismo conjunto de puntos de coordenadas, no resultará en una malla, sino que simplemente conectará los puntos en series dadas formando un patrón en zigzag.

pl = acad.model.AddPolyline(pmatrx)
Figura 3.2: Polilínea usando el mismo conjunto de coordenadas que se usó para dibujar la malla 3D

También podemos ver cómo se ve el modelo de malla si usamos la vista realista en lugar de la estructura alámbrica 2D. Esto nos mostrará claramente las depresiones o jorobas, si las hay, en el modelo de malla dado.

Figura 3.3: Vista realista de una malla 3D

Como se mencionó anteriormente, en la Figura 3.3, la depresión se puede ver claramente en la mitad derecha de la malla y la parte central de la mitad izquierda sobresale en el límite.

Propiedades de una malla 3D usando pyautocad

Tenemos algunos métodos específicos de malla que se pueden usar para obtener las propiedades de una malla determinada, además de algunos métodos comunes que usamos en las operaciones de 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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.