Python의 AutoCAD 속성 개체

이전 기사에서 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 클래스의 사용을 시연했습니다. 분명히 가장 중요한 것은 생산성을 높이기 위해 반복적이고 비용이 많이 드는 작업을 자동화하기 위해 일상 생활에서 이 정보를 구현하는 것입니다. 동일한 사항을 고려하여 언제든지 연락 양식 을 사용 하여 모든 종류의 기술 지침에 대한 세션을 예약하십시오. 그 외에도 아래 의견 섹션에 피드백, 의심 또는 질문을 남겨주세요.

You May Also Like

Leave a Reply

Leave a Reply

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

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