AutoCAD Attribut-objekt i Python

I min tidligere artikel diskuterede jeg AutoCAD Block-objekter og andre relaterede objekter relateret til AutoCAD Block-klassen. I den artikel introducerede jeg også kort Block-attributter. Nu, i denne artikel, fokuserer jeg hovedsageligt på AutoCAD Attribute-klassen.

Jeg bruger pyautocad-modulet til denne artikel, men jeg kan også bruge kommunikationsmoduler såsom pythoncom og win32com .

Hvad er et AutoCAD Attribut-objekt?

AutoCAD Attribute-objektet er dybest set en metadata, der beskriver egenskaberne ved et AutoCAD-objekt. For eksempel kan den beskrive egenskaberne ved AutoCAD Block-objekter. AttributeReference er objektklassen, der indeholder tekst, der karakteriserer nogle AutoCAD-blokobjekter .

Som jeg allerede har forklaret i en af ​​mine tidligere artikler, der dækker AutoCAD Block-objekter, er AutoCAD Block et element i BlockCollection-klassen. For at bruge AutoCAD blokobjekt skal jeg oprette en instans af en bestemt blok i min tegning. Det resulterende objekt er en BlockReference-instans.

På samme måde er et AutoCAD AttributeRefrence-objekt en forekomst af Attribute-klassen.

I daglige arbejdsaktiviteter som f.eks. tagging af entiteter, oprettelse af tegneetiketter og annoteringer, notationer for et bestemt objekt, justeringer af viewport-indstillinger osv. Jeg skal bruge tildelte AutoCAD Block-objekter.

Derfor er det af stor betydning at forstå de forskellige AutoCAD Attribute-relaterede kommandoer.

AutoCAD Attribut-objektegenskaber

I dette afsnit vil jeg diskutere nogle af de vigtige egenskaber ved Attribut-objekter. Udover det vil jeg gerne påpege, at alle de egenskaber, der gælder for Attribut-objekter, også gælder for AttributeReference-objekter.

Jeg har brugt det samme eksempel til denne praksis, som jeg allerede har brugt i min tidligere AutoCAD Block-artikel. Jeg anbefaler, at du tjekker det blogindlæg for at få en omfattende forståelse af AutoCAD Block-klassen.

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)

Nu kan jeg se, at der er oprettet en reference til AutoCAD Attributed Block i mit dokument.

Nedenfor demonstrerer jeg egenskaberne for Attribute-objektet og AttributeRefrence-objektet, som jeg oprettede.

#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

På samme måde er der nogle andre egenskaber, der definerer attributnavnet, attributindholdet og teksttypen. Og så videre. Se koden og programoutput nedenfor.

# 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

Som jeg viser i ovenstående kode er der en egenskab for multiline tekst, der returnerer værdien af ​​tekstretning. Den har fem mulige returværdier i form af heltal. Disse muligheder er som følger:

  • acBottomToTop : 1
  • acByStyle : 2
  • venstre mod højre : 3
  • acRightToLeft : 4
  • actTopToBottom : 5

Metoder i AutoCAD Attribute-klassen

Nogle metoder i klassen Attribute og AttributeReference ligner andre metoder i andre AutoCAD-objektklasser. Jeg lister nogle af de vigtige metoder nedenfor:

  • ArrayPolar
  • ArrayRektangulær
  • Kopi
  • Slet
  • GetBoundingBox
  • Kryds med
  • Spejl
  • Mirror3D
  • Bevæge sig
  • Rotere
  • Roter 3D
  • ScaleEntity
  • Opdatering
  • OpdaterMTextAttribute

Afsluttende bemærkninger

Jeg demonstrerede brugen af ​​klasserne AutoCAD Attribute, AttributeReference og AttriburtedBlock. Det vigtigste er naturligvis at implementere denne information i vores daglige liv for at automatisere gentagne og dyre opgaver i et forsøg på at øge produktiviteten. I betragtning af det samme, er du velkommen til at bruge vores kontaktformular til at booke en session med mig for enhver form for teknisk vejledning. Udover det, efterlad enhver feedback, tvivl eller spørgsmål i kommentarfeltet nedenfor.

You May Also Like

Leave a Reply

Leave a Reply

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.