이 블로그 게시물에서는 pyautocad 모듈을 사용하여 AutoCAD에서 3D 메쉬 객체로 작업하는 방법을 살펴보겠습니다. 원한다면 pywin32 모듈을 사용하여 3D 메쉬 작업을 할 수도 있습니다.
3D 메쉬 표현의 중요성
3D 메쉬는 여러 산업 분야에서 다양한 용도로 사용할 수 있습니다.
토목 기사인 저는 확실히 말할 수 있습니다. 토지 측량사로 일하는 동안 3D 메쉬는 등고선 점을 나타내는 데 매우 유용할 수 있습니다. 또한 구조물의 모든 작은 요소의 좌표를 검사하여 시공 결함에 사용할 수 있습니다.
기계 설계 작업을 하는 동안 기계 산업에서 사용할 수 있습니다.
요즘에는 안면인식에도 메쉬 모델을 사용합니다. 여기서 이것은 또한 예를 들어 얼굴 표정의 변화를 감지하는 데 사용될 수 있습니다.
많은 산업에서 매우 중요한 역할을 하는 3D 메시의 사용 사례가 더 많이 있습니다.
pyautocad 또는 pywin32를 사용하여 Python에서 스크립트 시작
아래와 같이 pyautocad 모듈을 사용하여 작업 환경을 설정할 수 있습니다.
from pyautocad import Autocad, aDouble
acad = Autocad(create_if_not_exists=True)
또는 win32com.client를 사용하여 다음 스크립트에 따라 실행되도록 할 수도 있습니다.
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))
pyautocad 또는 pywin32를 사용하여 AutoCAD 템플릿에 3D 메쉬 추가
AutoCAD 템플릿에 3D 메쉬를 그리려면 몇 가지 매개변수가 포함된 아주 작은 명령이 필요합니다.
명령 구문은 다음과 같습니다.
object.Add3DMesh(M, N, PointsMatrix)
여기서 M & N은 M & N 방향의 배열 크기(또는 정점 수)를 나타내는 2-256 범위의 정수 입력을 받습니다.
PointsMatrix는 double의 배열을 나타냅니다. 예를 들어 pyautocad로 폴리라인을 만들 때 사용하는 것과 동일한 행렬입니다 .
Autodesk 설명서에 제공된 기존 예제를 사용하여 그러한 메시 모델을 하나 만들어 보겠습니다. 설명서에 제공된 대로 PointsMatrix를 사용하겠습니다.
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)
이 코드에서는 PointsMatrix에 12개의 좌표 포인트를 제공했습니다.
또한 M 방향을 따라 4개의 정점과 N 방향을 따라 3개의 정점이 필요합니다.
새로 생성된 3D 메쉬 분석
그림 2.1 및 2.2에서 볼 수 있듯이 명령에서 전달된 대로 M 방향으로 4개의 정점과 N을 따라 3개의 정점이 있습니다.
동일하게 그리기 전에 정점이 이 형식이어야 한다는 것을 시각화했습니다. 즉
그렇지 않으면 동일한 좌표 점 세트를 사용하여 폴리라인으로 메시를 그리려고 하면 메시가 되지 않고 단순히 지그재그 패턴을 형성하는 주어진 시리즈의 점을 연결합니다.
pl = acad.model.AddPolyline(pmatrx)
또한 2D 와이어프레임이 아닌 사실적인 보기를 사용하면 메쉬 모델이 어떻게 보이는지 확인할 수 있습니다. 이렇게 하면 주어진 메쉬 모델에 움푹 패인 부분이나 혹이 있는 경우 명확하게 표시됩니다.
위에서 언급한 것처럼 그림 3.3에서 메시의 오른쪽 절반에서 오목한 부분을 명확하게 볼 수 있으며 왼쪽 절반의 중앙 부분이 경계에서 돌출되어 있습니다.
pyautocad를 사용한 3D 메쉬의 속성
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