AutoCAD-Attributobjekt in Python

In meinem vorherigen Artikel habe ich AutoCAD-Blockobjekte und andere verwandte Objekte im Zusammenhang mit der AutoCAD-Blockklasse besprochen. In diesem Artikel habe ich auch Blockattribute kurz vorgestellt. In diesem Artikel konzentriere ich mich hauptsächlich auf die AutoCAD-Attributklasse.

Ich verwende das pyautocad-Modul für diesen Artikel, aber ich kann auch Kommunikationsmodule wie pythoncom und win32com verwenden .

Was ist ein AutoCAD-Attributobjekt?

Das AutoCAD-Attributobjekt sind im Grunde Metadaten, die die Eigenschaften eines AutoCAD-Objekts beschreiben. Beispielsweise kann es die Merkmale von AutoCAD-Blockobjekten beschreiben.AttributeReference ist die Objektklasse, die Text enthält, der einige AutoCAD- Blockobjekte charakterisiert .

Wie ich bereits in einem meiner vorherigen Artikel über AutoCAD-Blockobjekte erklärt habe, ist der AutoCAD-Block ein Element der BlockCollection-Klasse. Um das AutoCAD-Blockobjekt zu verwenden, muss ich eine Instanz eines bestimmten Blocks in meiner Zeichnung erstellen. Das resultierende Objekt ist eine BlockReference-Instanz.

Ebenso ist ein AutoCAD AttributeRefrence-Objekt eine Instanz der Attribute-Klasse.

Bei täglichen Arbeitsaktivitäten wie z. B. dem Markieren von Objekten, dem Erstellen von Zeichnungsbeschriftungen und Anmerkungen, Notationen für ein bestimmtes Objekt, Anpassungen der Ansichtsfenstereinstellungen usw. benötige ich zugewiesene AutoCAD-Blockobjekte.

Daher ist es von großer Bedeutung, die verschiedenen Befehle im Zusammenhang mit AutoCAD-Attributen zu verstehen.

Objekteigenschaften von AutoCAD-Attributen

In diesem Abschnitt werde ich einige der wichtigen Eigenschaften von Attribute-Objekten diskutieren. Außerdem möchte ich darauf hinweisen, dass alle Eigenschaften, die für Attribute-Objekte gelten, auch für AttributeReference-Objekte gelten.

Ich habe für diese Übung dasselbe Beispiel verwendet, das ich bereits in meinem vorherigen AutoCAD-Block-Artikel verwendet habe. Ich empfehle Ihnen, diesen Blogbeitrag zu lesen, um ein umfassendes Verständnis der AutoCAD-Blockklasse zu erhalten.

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)

Jetzt kann ich sehen, dass in meinem Dokument ein Verweis auf den AutoCAD-attributierten Block erstellt wurde.

Unten demonstriere ich die Eigenschaften des Attribute-Objekts und des AttributeRefrence-Objekts, die ich erstellt habe.

#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

Ebenso gibt es einige andere Eigenschaften, die den Attributnamen, den Attributinhalt und den Texttyp definieren. Usw. Sehen Sie sich den Code und die Programmausgabe unten an.

# 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

Wie ich im obigen Code zeige, gibt es eine Eigenschaft für mehrzeiligen Text, die den Wert der Textrichtung zurückgibt. Es hat fünf mögliche Rückgabewerte in Form von ganzen Zahlen. Diese Optionen sind wie folgt:

  • acUntenNachOben : 1
  • acByStyle : 2
  • acLeftToRight : 3
  • acRightToLeft : 4
  • acTopToBottom : 5

Methoden der AutoCAD-Attributklasse

Einige Methoden der Klassen Attribute und AttributeReference ähneln anderen Methoden anderer AutoCAD-Objektklassen. Im Folgenden liste ich einige der wichtigsten Methoden auf:

  • ArrayPolar
  • ArrayRechteckig
  • Kopieren
  • Löschen
  • GetBoundingBox
  • SchnittmengeMit
  • Spiegel
  • Mirror3D
  • Bewegen
  • Drehen
  • Drehen3D
  • ScaleEntity
  • Aktualisieren
  • UpdateMTextAttribute

Abschließende Bemerkungen

Ich habe die Verwendung der AutoCAD-Klassen Attribute, AttributeReference und AttriburtedBlock demonstriert. Das Wichtigste ist natürlich, diese Informationen in unserem täglichen Leben zu implementieren, um sich wiederholende und kostspielige Aufgaben zu automatisieren, um die Produktivität zu steigern. In Anbetracht dessen können Sie gerne unser Kontaktformular verwenden, um eine Sitzung mit mir für jede Art von technischer Anleitung zu buchen. Hinterlassen Sie außerdem Feedback, Zweifel oder Fragen im Kommentarbereich unten.

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Close

Meta