DimAligned objekt i AutoCAD (Python)

I denne artikel introducerer jeg DimAligned-objekt i AutoCAD med Python. Generelt er det en meget kedelig opgave at tilføje dimensioner manuelt, som jeg kan undgå, hvis jeg i stedet bruger Python-automatisering.

Til denne tutorial bruger jeg pyautocad-modulet i Python. Jeg kan også bruge modulerne pywin32 og win32com i Python til dette. Disse moduler giver en anden måde at udføre AutoCAD-automatisering i Python. Tjek mine tidligere blogindlæg for mere information om disse moduler.

Tilføjelse af DimAligned-objekt til AutoCAD-tegninger

Som navnet på artiklen antyder, fokuserer jeg på dimensioner for lineære enheder. Jeg kan bruge DimAligned-objektet til dette.

Jeg kan tilføje dimensioner med AddDimAligned-metoden. Den første ting at huske er, at et DimAligned objekt kræver 3 parametre:

  • ExtLine1Point (første slutpunkt)
  • ExtLine2Point (andet slutpunkt)
  • TextPosition (tekst for dimensioner)

I dette tilfælde har jeg to geometrier til stede i mit modelrum. Den venstre består af linjer og den højre er en polylinje. Du kan se dette på skærmbilledet nedenfor.

I lyset af det faktum, at jeg kan hente start- og slutpunkterne for et AutoCAD Line- objekt, kan jeg iterere over AcDbLine-objektet og overføre disse punkter som start- og slutpunkter for Dimensioner.

Jeg bruger midtpunktsformlen, med en faktor på 100 for forskydningen, for tekstpositionen. Se koden nedenfor.

for l in acad.iter_objects_fast(object_name_or_list="AcDbLine"):
    acad.model.AddDimAligned(APoint(l.StartPoint), APoint(l.EndPoint), APoint((l.StartPoint[0]+l.EndPoint[0]+100)/2, (l.StartPoint[1]+l.EndPoint[1]+100)/2, 0))

På den anden side returnerer polyline-objektet et array af doubler for koordinaterne for hver af dets noder. I dette tilfælde kan jeg iterere over det array og videregive disse punkter som start- og slutpunkter i hver iteration.

for i in acad.iter_objects_fast(object_name_or_list="AcDbPolyline"):
    nodes = len(i.Coordinates)/2
    j=0
    while j <= nodes+1:
        acad.model.AddDimAligned(APoint(i.Coordinates[j], i.Coordinates[j+1], 0),    APoint(i.Coordinates[j+2], i.Coordinates[j+3], 0),    APoint((i.Coordinates[j]+i.Coordinates[j+2]+100)/2,     (i.Coordinates[j+1]+i.Coordinates[j+3]+100)/2, 0))
             j+=2

Selvfølgelig er dette en meget grundlæggende tilgang til at tilføje dimensioner til enhver lineær geometri. Ikke desto mindre, lad mig nu implementere dette og se resultaterne.

Som du kan se i ovenstående skærmbillede, kan jeg åbenbart sige, at jeg har tilføjet dimensionerne til de lineære geometrier.

Egenskaber for DimAligned-objektet i AutoCAD

Nu hvor jeg har tilføjet dimensionerne til figurerne, vil jeg introducere nogle af dens vigtige egenskaber. Jeg kan ikke forklare hver af dem i selve denne artikel, da der er omkring 115 ejendomme i alt, mange af dem arbejder for forskellige dimensionsaspekter.

Men for det første viser jeg nogle grundlæggende egenskaber i Python-koden nedenfor.

# general properties
print(l.ObjectName)

print(l.Rotation) # rotation angle of object in radians

print(l.LinearScaleFactor) 
# specfies global scale factor for linear dimensioning  measurements

print(l.StyleName)

l.DecimalSeparator = "."
print(l.DecimalSeparator)


O/p:

AcDbAlignedDimension
0.0
1.0
ISO-25
.

Fordi der er flere dimensionslinjer til stede i min tegning, vælger jeg en af ​​dem for at anvende disse egenskaber. Samt der er ArrowHead-egenskaber, med hvilke jeg kan indstille pilehovedstørrelsen ved at sende en heltalsværdi.

# arrow head properties
l.ArrowheadSize = 15
print(l.ArrowheadSize)
print(l.Arrowhead1Type)
print(l.Arrowhead2Type)

O/p:
15.0
0
0

Som jeg har vist i koden ovenfor, kan jeg få og indstille pilespidsens størrelse og type. For pilespidstypen er der flere muligheder. Standarden er acArrowDefault (0). De andre typer er angivet nedenfor:

  • acArrowDefault
  • acArrowDot
  • acArrowDotSmall
  • acArrowDotBlank
  • acArrowOrigin
  • acArrowOrigin2
  • acArrowOpen
  • acArrowOpen90
  • acArrowOpen30
  • acArrowLukket
  • acArrowSmall
  • acArrowIngen
  • acArrowOblique
  • acArrowBoxFilled
  • acArrowBoxBlank
  • acArrowClosedBlank
  • acArrowDatumFilled
  • acArrowDatumBlank
  • acArrowIntegral
  • acArrowArchTick
  • acArrowUserDefined Læs kun

På samme måde har jeg nogle dimensionslinjeegenskaber som angivet nedenfor.

l.DimensionLineColor = 200
print("Dimension line color on the basis of 0-256 color index: " + str(l.DimensionLineColor))
    
print("The dimension line extends beyond the extension line when oblique strokes are drawn instead of arrowheads: " + str(l.DimensionLineExtend))

print("The dimension line type is: " + l.DimensionLineType)l.DimensionLineWeight = 100    

print("Dimension lineweight: " + str(l.DimensionLineWeight))
    
print("Dimension text direction: ", end="" )
    
print(l.DimTxtDirection) 
# False: Left to right reading style
# True: Right to Left reading style 

print(l.Fit)

O/p:


Dimension line color on the basis of 0-256 color index: 200
The dimension line extends beyond the extension line when oblique strokes are drawn instead of arrowheads: 0.0
The dimension line type is: ByBlock
Dimension lineweight: 100
Dimension text direction: False
3

Egenskaben Fit har 4 mulige værdier som angivet nedenfor:

  • actTextAndArrows(0) : For at placere både tekst og pilespidser inden for forlængelseslinjerne.
  • Kun acArrows(1): For kun at placere pilespidserne inden for forlængelseslinjerne. Teksten er placeret uden for pilespidserne.
  • actOnly(2) : For kun at placere teksten inden for forlængelseslinjerne. Pilespidserne er placeret uden for forlængelseslinjerne.
  • acBestFit(3) : Dette er standardindstillingen, der placerer teksten og pilespidserne på den bedst egnede placering givet den tilgængelige plads. Når der er nok plads til tekst og pilespidser, placerer denne mulighed begge mellem forlængelseslinjerne.

Der er et par andre egenskaber såsom tekstegenskaber og toleranceegenskaber. Lad mig tilføje nogle få fra hver af disse egenskaber for at forklare.

# text properties
l.TextHeight = 20
print(l.TextHeight)
print(l.TextInside) 

#Tolerance properties
print(l.ToleranceDisplay)
print(l.TolerancePrecision)

O/p:
20.0
False
0
2

Her har egenskaben TextInside en boolesk værdi til at angive, om teksten skal tilføjes til forlængelseslinjen kraftigt (true) eller kun hvis der er mellemrum (false) i overensstemmelse hermed.

For at angive tolerancer i dimensionsteksten har jeg egenskaben ToleranceDisplay, som også returnerer en boolean. ToleranceDisplay returnerer som standard False, dvs. hvis tolerancer ikke er angivet.

Generelt har tolerancepræcisionen 4 mulige værdier:

  • acTolNone: 0 (Standard)
  • aTolSymmetrisk: 1
  • handlingsafvigelse: 2
  • actTol Limits: 3
  • acTilBasic: 4

Faktisk, som jeg også allerede nævnte mig selv, er der mange flere egenskaber, end jeg har angivet ovenfor, men disse er et par stykker for at vise, hvordan man bruger dem. Nedenfor er en liste over metoderne i DimAligned AutoCAD-objektklassen.

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

Afsluttende bemærkninger

Endelig kan jeg sige, at jeg har dækket DimAligned-objektet fra AutoCAD og den måde, jeg kan automatisere det samme med Python. På samme måde er der andre dimensionsobjekter, som jeg vil dække i mine fremtidige blogindlæg. I tilfælde af mere teknisk information eller konsultation, er du velkommen til at kontakte mig ved hjælp af vores kontaktformular . Smid også en kommentar i vores kommentarfelt, hvis du er i tvivl.

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.