이전 기사에서 AutoCAD Block 객체 및 AutoCAD Block 클래스와 관련된 기타 관련 객체에 대해 설명했습니다. 그 기사에서 나는 또한 블록 속성을 간략하게 소개했습니다. 이제 이 기사에서는 주로 AutoCAD Attribute 클래스에 초점을 맞춥니다.
이 기사에서는 pyautocad 모듈을 사용하고 있지만 pythoncom 및 win32com 과 같은 통신 모듈을 사용할 수도 있습니다 .
AutoCAD 속성 객체란 무엇입니까?
AutoCAD 속성 개체는 기본적으로 AutoCAD 개체의 특성을 설명하는 메타데이터입니다. 예를 들어, AutoCAD 블록 객체의 특성을 설명할 수 있습니다. AttributeReference는 일부 AutoCAD 블록 객체 를 특징짓는 텍스트를 포함하는 객체 클래스입니다 .
AutoCAD 블록 객체를 다루는 이전 기사 중 하나에서 이미 설명했듯이 AutoCAD 블록은 BlockCollection 클래스의 요소입니다. AutoCAD 블록 객체 를 사용하려면 도면에 특정 블록의 인스턴스를 생성해야 합니다. 결과 개체는 BlockReference 인스턴스입니다.
마찬가지로 AutoCAD AttributeRefrence 객체는 Attribute 클래스의 인스턴스입니다.
엔티티 태깅, 도면 레이블 및 주석 생성, 특정 객체에 대한 표기법, 뷰포트 설정 조정 등과 같은 일상적인 작업 활동에서 AutoCAD 블록 객체의 속성이 필요합니다.
따라서 다양한 AutoCAD Attribute 관련 명령을 이해하는 것이 매우 중요합니다.
AutoCAD 속성 객체 속성
이 섹션에서는 Attribute 개체의 몇 가지 중요한 속성에 대해 설명합니다. 그 외에도 Attribute 개체에 적용되는 모든 속성은 AttributeReference 개체에도 적용된다는 점을 지적하고 싶습니다.
이전 AutoCAD Block 기사에서 이미 사용한 것과 동일한 예제를 이 연습에 사용했습니다. AutoCAD Block 클래스에 대한 포괄적인 이해를 위해 해당 블로그 게시물을 확인하는 것이 좋습니다.
from pickle import TRUE
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)
ip = APoint(0, 0, 0)
b1 = acad.doc.Blocks.Add(ip, "Attributed_Block_1")
pl = b1.AddPolyline(aDouble(0, 0, 0, 10000, 0, 0, 10000, 5000, 0, 0, 5000, 0, 0, 0, 0))
l = b1.AddLine(APoint(0, 250, 0), APoint(10000, 250, 0))
l = b1.AddLine(APoint(5000, 250, 0), APoint(5000, 0, 0))
#0, 1, 2, 3, 4, 5, 6 .... 10
a1 = b1.AddAttribute(50, 0, "DATE", aDouble(200, 100, 0), "DATE", "Date: 17/07/2022")
a2 = b1.AddAttribute(50, 0, "DWG", aDouble(5200, 100, 0), "DWG", "Drawing Name: Drawing 1")
a2.MTextAttribute=True
br = acad.model.InsertBlock(APoint(50, 50, 0), "Attributed_Block_1", 1, 1, 1, 0)
print("Does the Block contain any Attributes: ", end="")
print(br.HasAttributes)
이제 내 문서에 AutoCAD 속성 블록에 대한 참조가 생성되었음을 알 수 있습니다.
아래에서는 내가 만든 Attribute 개체와 AttributeRefrence 개체의 속성을 보여줍니다.
#General Properties
print("Attribute alignment: ", end="")
print(a1.Alignment)
print("Layer of attribute: " + a1.Layer)
print("Is the direction of text backward? " + str(a1.Backward))
print("Is the attribute reference constant ? " + str(a1.Constant))
print("Entity transparency value: ", end="")
print(a1.EntityTransparency)
print("Field length of the attribute: ", end="")
print(a1.FieldLength)
print("Text height: ", end="")
print(a1.Height)
print("Attribute insertion point: ", end="")
print(a1.InsertionPoint)
print("Is attribute reference invisible: " + str(a1.Invisible))
print("Can the attribute or attribute reference be moved relative to geometry in the block ? " + str(a1.LockPosition))
print("Object name: " + a1.ObjectName)
print("Oblique angle of the object: ", end="")
print(a1.ObliqueAngle)
print("Is the attribute preset? " + str(a1.Preset))
# apreset attribute sets the attribute to its default, or preset, value when the user inserts the block.
print("Rotation of object: ", end="")
print(a1.Rotation)
print("Scale factor for the object: ", end="")
print(a1.ScaleFactor)
print("Style name of the attribute object: " + a1.StyleName)
print("Is the attribute set for verification: " + str(a1.Verify))
O/p:
Attribute alignment: 0
Layer of attribute: 0
Is the direction of text backward? False
Is the attribute reference constant ? False
Entity transparency value: ByLayer
Field length of the attribute: 0
Text height: 50.0
Attribute insertion point: (200.0, 100.0, 0.0)
Is attribute reference invisible: False
Can the attribute or attribute reference be moved relative to geometry in the block ? False
Object name: AcDbAttributeDefinition
Oblique angle of the object: 0.0
Is the attribute preset? False
Rotation of object: 0.0
Scale factor for the object: 1.0
Style name of the attribute object: Standard
Is the attribute set for verification: False
마찬가지로 속성 이름, 속성 내용 및 텍스트 유형을 정의하는 몇 가지 다른 속성이 있습니다. 등등. 아래 코드 및 프로그램 출력을 참조하십시오.
# multiline text / text properties
if(a2.MTextAttribute==True):
print("Attribute content: " + a2.MTextAttributeContent)
print("Boundary width of multiline text: ", end="")
print(a2.MTextBoundaryWidth)
print("Multiline text direction: ", end="")
print(a2.MTextDrawingDirection)
print("Prompt string of an attribute: " + a1.PromptString)
print("Tag string of the attribute: " + a1.TagString)
print("Text string of the attribute: " + a1.TextString)
print("Alignment point of the text: ", end="")
print(a1.TextAlignmentPoint)
print("Attribute text generation flag: ", end="")
print(a1.TextGenerationFlag)
O/p:
Attribute content: Drawing Name: Drawing 1
Boundary width of multiline text: 0.0
Multiline text direction: 5
Prompt string of an attribute: DATE
Tag string of the attribute: DATE
Text string of the attribute: Date: 17/07/2022
Alignment point of the text: (0.0, 0.0, 0.0)
Attribute text generation flag: 0
위 코드에서 볼 수 있듯이 텍스트 방향 값을 반환하는 여러 줄 텍스트에 대한 속성이 있습니다. 정수 형식으로 5개의 가능한 반환 값이 있습니다. 해당 옵션은 다음과 같습니다.
- acBottomToTop : 1
- acByStyle : 2
- 왼쪽에서 오른쪽으로 : 3
- 오른쪽에서 왼쪽으로 : 4
- acTopToBottom : 5
AutoCAD Attribute 클래스의 메서드
Attribute 및 AttributeReference 클래스의 일부 메서드는 다른 AutoCAD 객체 클래스의 다른 메서드와 유사합니다. 아래에 몇 가지 중요한 방법을 나열합니다.
- 어레이폴라
- ArrayRectangular
- 복사
- 삭제
- GetBoundingBox
- 교차하다
- 거울
- 미러3D
- 이동하다
- 회전
- 3D 회전
- ScaleEntity
- 업데이트
- 업데이트MText속성
끝 맺는 말
AutoCAD Attribute, AttributeReference 및 AttriburtedBlock 클래스의 사용을 시연했습니다. 분명히 가장 중요한 것은 생산성을 높이기 위해 반복적이고 비용이 많이 드는 작업을 자동화하기 위해 일상 생활에서 이 정보를 구현하는 것입니다. 동일한 사항을 고려하여 언제든지 연락 양식 을 사용 하여 모든 종류의 기술 지침에 대한 세션을 예약하십시오. 그 외에도 아래 의견 섹션에 피드백, 의심 또는 질문을 남겨주세요.
Leave a Reply