이전 기사에서 AutoCAD Application 객체 클래스에 대해 설명했습니다. AutoCAD 응용프로그램 에서 가장 중요한 부분은 문서 객체입니다. 이는 사용자가 이 문서 개체에 대한 모든 작업을 수행하기 때문입니다. 결과적으로 저는 AutoCAD Document 객체 클래스를 다루는 이 새로운 블로그 게시물을 작성하고 있습니다.
pyautcad 모듈 및 그 대안
먼저, 내가 사용할 모듈과 사용 가능한 다른 옵션을 언급하겠습니다.
이 기사의 제목에서 짐작할 수 있듯이 이 튜토리얼에서는 pyautocad 모듈을 사용하고 있습니다. 또한 문서 자체에 액세스할 수 있도록 acad.doc을 사용하고 있습니다. 아래 코드에서 이를 확인할 수 있습니다.
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)
print(acad.doc.Name)
O/p:
Drawing1.dwg
그러나 통신 모듈도 사용할 수 있습니다. 즉, pyautocad가 아닌 다른 모듈입니다. 아래 예에서는 pythoncom 및 win32com , 소위 통신 모듈을 사용하여 AutoCAD 문서 객체 클래스에 액세스합니다.
from win32com.client import *
import pythoncom
import win32com
acad1 = win32com.client.Dispatch("AutoCAD.Application")
print(acad1.ActiveDocument.Name)
O/p:
Drawing1.dwg
AutoCAD 문서 객체 클래스의 속성
이 항목을 시작하기 위해 AutoCAD 문서 객체의 몇 가지 중요한 특성을 소개하겠습니다. 다양한 자동화 목적으로 사용할 수 있기 때문에 이러한 속성이 중요하다고 생각합니다.
예를 들어 AutoCAD는 한 번에 하나의 문서로 작업합니다. AutoCAD 문서 객체에는 레이어, 레이아웃, 치수 스타일, 뷰포트, UCS 및 기타 객체 유형과 같은 많은 객체가 포함되어 있습니다. 이러한 개체 중에서 특정 시점에 하나만 활성화될 수 있습니다.
예를 들어, Document 객체는 n개의 레이어를 포함할 수 있습니다. 그러나 한 번에 이러한 레이어 중 하나만 활성화할 수 있습니다.
존재하는 문서가 실제로 현재 활성 문서인지 확인하려면 Active 메서드를 사용할 수 있습니다. 이 메서드는 부울 값을 반환합니다. 아래 예에서 이를 확인할 수 있습니다.
# determine if the document is the active document
print(acad.doc.Active)
O/p:
True
마찬가지로 다른 활성 하위 개체를 확인하기 위해 Active<ObjectName> 형식의 메서드 이름이 있는 메서드를 사용할 수 있습니다. 몇 가지 예는 ActiveLayout, ActiveLayer, ActiveViewport 등이 될 수 있습니다.
사용할 수 있는 개체 이름은 다음과 같습니다.
- 딤스타일
- 층
- 형세
- 선종류
- 재료
- P뷰포트
- 선택 집합
- 우주
- 텍스트 스타일
- UCS
- 뷰포트
이러한 개체 중 일부를 사용하는 방법을 보여 드리겠습니다.
print(acad.doc.ActiveDimStyle.Name)
print(acad.doc.ActiveLayer.Name)
print(acad.doc.ActiveLayout.Name)
O/p:
ISO-25
0
Model



같은 방법으로 다른 속성도 사용할 수 있습니다. 이러한 속성은 추가로 처리할 수 있는 각 개체를 반환합니다. 이에 대해서는 앞으로 더 자세한 글을 올리도록 하겠습니다.
AutoCAD 문서 객체 블록 속성 액세스
계속해서 Document 개체에 포함된 Blocks 개체를 가져오려면 Blocks 속성을 사용할 수 있습니다. AutoCAD 문서 객체에 있는 다양한 AutoCAD 블록 객체 모음을 반환합니다.
print(acad.doc.Blocks)
for i in (acad.doc.Blocks):
print(i.Name)
O/p:
<comtypes.client.lazybind.Dispatch object at 0x00000209E60C1D60>
*Model_Space
*Paper_Space
*Paper_Space
객체가 속한 데이터베이스를 반환하려면 Database 객체를 사용할 수 있습니다. 간단히 말해서 이것은 데이터베이스 객체를 반환합니다. 이름 속성이 없습니다.
acad.doc.Database
O/p:
<comtypes.client.lazybind.Dispatch object at 0x0000024FA64175B0>
AutoCAD 문서 객체에 포함된 하위 객체
앞에서 AutoCAD 문서 개체에 여러 하위 개체가 포함되어 있다고 설명했습니다. 이러한 객체는 Layers, Materials, LineTypes 등과 같은 고유한 객체 유형의 형태로 존재합니다.
컬렉션을 지적하기 위해 이름 자체와 함께 메서드를 사용할 수 있습니다. 컬렉션 내부에 있는 각 개체에 액세스하려면 동일한 개체를 반복할 수 있습니다. Blocks의 경우와 비슷한 방식으로.
개체 컬렉션 목록은 다음과 같습니다.
- 사전
- 딤스타일
- 레이어
- 레이아웃
- 선종류
- 재료
- 모델스페이스
- 페이퍼스페이스
- 플롯 구성
- 등록된 애플리케이션
- 선택 집합
- 텍스트 스타일
- 사용자 좌표 시스템
- 뷰포트
- 견해
이제 모든 개체 컬렉션을 나열했으므로 이러한 메서드를 사용하는 방법의 예를 제시하겠습니다.
print(acad.doc.DimStyles)
for i in (acad.doc.DimStyles):
print(i.Name)
O/p:
<comtypes.client.lazybind.Dispatch object at 0x00000209F4F11D00>
Standard
Annotative
ISO-25
같은 방법으로 아래 코드와 같이 다른 중요한 속성도 가져올 수 있습니다.
# height of document window
print(acad.doc.Height)
# width of document window
print(acad.doc.Width)
# lower Left to Upper Right Limits
print(acad.doc.Limits)
# return a boolean value for ObjectSnapMode to check if it is on/off
print(acad.doc.ObjectSnapMode)
# path of Document
print(acad.doc.Path)
# return if Document is ReadOnly/Read-Write using boolean value
print(acad.doc.ReadOnly)
# check if document contains any unsaved changes using boolean value
print(acad.doc.Saved)
# returns SummaryInfo objects which contains document metadata (Title, subject, author, keywords)
print(acad.doc.SummaryInfo)
# returns if window is Minimized, Maximized or in a Normal state
print(acad.doc.WindowState)
# returns the document title
print(acad.doc.WindowTitle)
O/p:
818
1517
(0.0, 0.0, 420.0, 297.0)
False
C:\Users\91998\OneDrive\Documents
False
False
<comtypes.client.lazybind.Dispatch object at 0x000001C227C460D0>
3
Drawing1.dwg
AutoCAD의 Document 객체 클래스 메서드
이제 AutoCAD Document 객체의 다양한 속성을 다루었으므로 AutoCAD Document 클래스의 몇 가지 중요한 메서드로 넘어갈 것입니다.
사실, 내가 말하는 첫 번째 방법은 Activate() 방법입니다. 문서를 활성화하려면 이 방법을 사용할 수 있습니다.
acad.doc.Activate
그런 다음 그림의 무결성을 평가하기 위해 AuditInfo() 메서드를 사용할 수 있습니다. 여기에서 AutoCAD에서 발생하는 문제를 수정할지 여부에 대한 매개변수로 true 또는 false를 전달할 수 있습니다.
acad.doc.AuditInfo(True)
물론 재생성, 저장 및 닫기를 위한 몇 가지 방법도 있습니다.
# regenerate drawing
acad.doc.Regen
# save drawing
acad.doc.Save
# while closing pass boolean to save changes or not followed by drawing name
acad.doc.Close(False, "Drawing2.dwg")3
마지막으로 문서에서 블록이나 레이어와 같이 사용하지 않는 명명된 참조를 제거하려면 PurgeAll 명령을 사용할 수 있습니다.
acad.doc.PurgeAll
요약 및 결론
마지막으로 다음과 같은 결론을 내립니다. 이 기사에 설명된 AutoCAD Document 클래스 메서드를 사용하여 다양한 Document 객체 관련 작업을 자동화할 수 있습니다. 이는 AutoCAD 관련 워크플로를 자동화하고 최적화하는 데 적용할 수 있습니다.
마지막으로, 의심되는 사항이 있는 경우 아래의 의견란에 자유롭게 의견을 남겨 주십시오. 나는 또한 당신이 우리의 연락 양식 을 사용하여 저에게 연락할 수 있는 기술 상담에 열려 있습니다 . AutoCAD 자동화 를 위한 pyautocad 및 pywin32 Python 모듈 의 다양한 측면을 다루는 다른 블로그를 확인하십시오 .
관련 AutoCAD 자동화 문서에 대한 참조
이제 제가 이 블로그에 게시한 다양한 AutoCAD 자동화 게시물에 대한 링크 목록이 있습니다.
- 링크 : AutoCAD pyautocad 모듈용 Python
- 링크 : pyautocad의 add() 메서드
- 링크 : 해결 된 호출이 pythoncom의 수신자에 의해 거부되었습니다.
- 링크 : Python을 사용하는 AutoCAD 객체에 대한 트리 데이터 구조
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD에서 개체 확장
- 링크 : Python 목록 및 사전을 사용하여 pyautocad로 AutoCAD 객체 작업
- 링크 : Python에서 pywin32를 사용하여 AutoCAD 템플릿에서 객체 해칭
- 링크 : Python의 pyautocad가 있는 AutoCAD의 래스터 이미지 개체
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD에서 3D 메쉬 개체 작업
- 링크 : Python에서 pywin32를 사용하여 이중 생성자 만들기
- 링크 : Python에서 pywin32를 이용한 apoint 메소드 생성
- 링크 : pywin32 및 win32com을 사용하여 AutoCAD와 Python 통합
- 링크 : Python에서 pyautocad 및 pywin32를 사용하여 AutoCAD 템플릿에서 객체 삭제
- 링크 : Python에서 pyautocad를 사용하여 2D 평면에서 객체 미러링
- 링크 : Python에서 pyautocad를 사용하여 Autocad에서 텍스트 작업
- 링크 : Python에서 pyautocad를 사용하는 AutoCAD의 Polar 배열
- 링크 : Python에서 pyautocad를 사용하는 AutoCAD의 직사각형 배열
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD 개체 작업
- 링크 : Python에서 pyautocad를 사용하는 AutoCAD의 솔리드 개체
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD에서 나선 작업
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD에서 스플라인 그리기
- 링크 : Python에서 AutoCAD 다각형을 그리기 위한 pyautocad의 폴리라인
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD에서 타원 호 그리기
- 링크 : Python에서 pyautocad를 사용하여 AutoCAD에서 호 그리기
- 링크 : Promodel AutoCAD 에디션으로 공장 설계 및 프로세스 최적화를 거의 동시에 수행
- 링크 : AutoCAD pyautocad 모듈용 Python
- 링크: Python을 사용하는 AutoCAD의 Region 객체
- 링크: Python의 AutoCAD Application 객체 클래스

Leave a Reply