Python을 사용하는 AutoCAD의 영역 객체

이 블로그 게시물에서는 pyautocad를 사용하여 AutoCAD에서 영역 개체를 만들고 조작하는 방법을 보여줍니다. 나는 pyautocad에서 AddRegion()-메서드를 사용하여 그렇게 할 것입니다. pyautocad는 AutoCAD용 여러 Python 모듈 중 하나입니다. 저는 이미 이 블로그에서 Python 으로 AutoCAD 스크립팅 을 광범위하게 다루었습니다 .

AutoCAD의 지역 객체

AutoCAD 영역 객체는 2D 닫힌 영역을 나타냅니다 . AutoCAD 영역 객체는 연결되어 닫힌 엔티티를 형성하는 한 폴리선, 원, 호, 스플라인, 직사각형 등이 될 수 있습니다.

AutoCAD 영역 개체를 결합하여 단일 영역으로 사용할 수 있습니다. 이는 몇 가지 방법을 사용하여 수행할 수 있습니다. 여기에는 Union , Intersection 또는 Subtraction 과 같은 메서드가 포함됩니다 .

통칭하여 이러한 방법을 AutoCAD 부울 방법이라고 합니다.

AutoCAD에서 영역 개체 만들기(win32com 등)

pyautocad를 사용하여 AutoCAD에서 영역 객체를 생성할 수 없습니다. 이는 일부 모듈 제한 때문입니다. 따라서 이 기사에서는 win32com 및 pythoncom Python 모듈 을 사용하여 AddRegion() 메서드를 사용합니다 .

AutoCAD 영역 개체 를 만들기 전에 응용 프로그램을 부트스트랩했습니다. 이렇게 하면 AutoCAD에 쉽게 연결할 수 있습니다. 또한 모델 공간을 가져올 수 있습니다.

아래 그림에서는 겹치는 원이 있는 닫힌 AutoCAD 폴리라인 객체를 표시합니다.

AutoCAD에서 영역 개체 만들기

아래 코드를 사용하여 위 그림의 개체를 만들었습니다.

pl1 = acad.AddPolyline(ad(0,0,0,1000,0,0,1000,500,0,750,500,0,750,1000,0,250,1000,0,250,500,0,0,500,0,0,0,0))

c1 = acad.AddCircle(ap(500, 1000, 0), 250)

이제 영역을 만들려면 포함된 AutoCAD 개체의 배열을 AddRegion() 메서드에 전달해야 합니다. 저는 아래와 같이 합니다.

acad.AddRegion(win32com.client.VARIANT(VT_ARRAY | VT_DISPATCH, (pl1, c1)))
AutoCAD에서 영역 개체 조정

여기서 개체가 영역으로 변환된 것을 볼 수 있습니다. 폴리라인도 마찬가지입니다. 영역 개체는 원본 개체입니다.

지역 개체에 대한 부울 연산 수행

부울 연산은 AutoCAD 영역 객체 뿐만 아니라 3D 솔리드에서도 수행할 수 있습니다 .

지역 개체를 사용하려면 반복을 사용하여 AutoCAD 템플릿에서 동일한 항목을 가져와야 합니다. 이는 AddRegion() 메서드가 AutoCAD 객체 배열만 반환하기 때문입니다.

아래 표시된 Python 코딩 예제에서는 사전을 사용하여 내가 만든 AutoCAD 영역 객체 를 저장 합니다.

regions = {}
i=0
for l in acad1.iter_objects_fast(object_name_or_list="Region"):
    print(str(l.ObjectID) + ": " + l.ObjectName)
    key = "reg" + str(i)
    regions[key] = l
    i+=1

이 게시물의 앞부분에서 언급했듯이 세 가지 유형의 부울 연산을 수행하여 영역의 단일 합집합을 만들 수 있습니다.

  • 유니온 (0)
  • 교차로 (1)
  • 빼기 (2).

위에 나열된 방법의 괄호 안에 언급된 숫자를 입력 매개변수로 사용하겠습니다. Boolean() 메서드를 호출할 때 수행하려는 부울 연산 유형을 선언합니다. 동시에 영역 개체를 오른쪽으로 이동합니다. 이렇게 하면 차이가 더 명확해집니다.

regions["reg1"].Boolean(2, regions["reg0"])

for l in acad1.iter_objects_fast(object_name_or_list="Region"):
    print(str(l.ObjectID) + ": " + l.ObjectName)
    l.Move(APoint(0, 0, 0), APoint(1500, 0, 0))
AutoCAD에서 영역 객체를 조정하는 마지막 단계

새 객체가 상위 영역에서 통합된 단일 영역으로 만들어지는 것이 분명합니다.

맺음말 및 관련 내용

AutoCAD 자동화 를 다루는 추가 블로그 게시물 은 pyautocad 및 pywin32 와 관련된 다른 블로그 게시물을 확인하십시오 . 궁금한 사항은 아래 댓글로 남겨주세요. 기술 지원이 필요하면 언제든지 저에게 연락하십시오. 문의 양식을 사용하여 그렇게 할 수 있습니다.

다음은 Python에서 AutoCAD 자동화 및 AutoCAD 스크립팅 을 다루는 관련 문서입니다.

You May Also Like

Leave a Reply

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.