Regionsobjekt i AutoCAD med Python

I dette blogindlæg viser jeg, hvordan man opretter og manipulerer ethvert områdeobjekt i AutoCAD med pyautocad. Jeg vil gøre det ved at bruge AddRegion()-metoden i pyautocad. pyautocad er et af flere Python-moduler til AutoCAD. Jeg har allerede dækket AutoCAD-scripting i Python udførligt på denne blog.

Regionsobjekt i AutoCAD

AutoCAD- regionsobjektet repræsenterer 2D lukkede områder. AutoCAD regionsobjekter kan være polylinjer, cirkler, buer, splines, rektangler osv., så længe de er forbundet og derved danner en lukket enhed.

AutoCAD- regionsobjekter kan kombineres og bruges som en enkelt region. Dette kan gøres ved at bruge nogle metoder. Dette omfatter metoder såsom Union , Intersection eller Subtraktion .

Tilsammen kaldes disse metoder for AutoCAD booleske metoder.

Oprettelse af et regionsobjekt i AutoCAD (win32com osv.)

Det er ikke muligt at oprette et regionsobjekt i AutoCAD ved hjælp af pyautocad. Dette skyldes nogle modulbegrænsninger. Derfor vil jeg i denne artikel bruge AddRegion()-metoden ved at bruge win32com og pythoncom Python-modulerne.

Før jeg oprettede et AutoCAD-regionsobjekt, opstartede jeg mit program. Dette letter en forbindelse til AutoCAD. Det giver mig desuden mulighed for at hente modelpladsen.

I figuren nedenfor viser jeg et lukket AutoCAD polyline objekt med en overlappende cirkel.

Oprettelse af et regionsobjekt i AutoCAD

Jeg oprettede objekterne i ovenstående figur ved hjælp af koden nedenfor:

pl1 = acad.AddPolyline(ad(0,0,0,1000,0,0,1000,500,0,750,500,0,750,1000,0,250,1000,0,250,500,0,0,500,0,0,0,0))

c1 = acad.AddCircle(ap(500, 1000, 0), 250)

For nu at oprette en region skal jeg sende en række lukkede AutoCAD-objekter til AddRegion()-metoden. Det gør jeg nedenfor:

acad.AddRegion(win32com.client.VARIANT(VT_ARRAY | VT_DISPATCH, (pl1, c1)))
Justering af regionsobjekt i AutoCAD

Her kan jeg se, at objektet er omdannet til et område. Det samme gælder for polylinjen. Regionen protesterer mod den oprindelige.

Udførelse af booleske operationer på regionsobjekter

Booleske operationer kan udføres på 3D solids såvel som på AutoCAD- regionobjekter.

For at bruge regionsobjektet skal jeg hente det samme fra AutoCAD-skabelonen ved hjælp af iteration. Dette skyldes, at AddRegion()-metoden ikke returnerer andet end en række AutoCAD-objekter.

Python-kodningseksemplet vist nedenfor bruger jeg en ordbog til at gemme AutoCAD-regionsobjekter , som jeg opretter.

regions = {}
i=0
for l in acad1.iter_objects_fast(object_name_or_list="Region"):
    print(str(l.ObjectID) + ": " + l.ObjectName)
    key = "reg" + str(i)
    regions[key] = l
    i+=1

Som nævnt af mig tidligere i dette indlæg kan jeg udføre tre typer booleske operationer for at skabe en enkelt forening af regioner:

  • Union (0)
  • Kryds (1)
  • Subtraktion (2).

Jeg vil bruge de tal, der er nævnt i parentes af de ovenfor anførte metoder, som inputparametre. Når de kalder Boolean()-metoden, erklærer de, hvilken type boolesk operation, jeg vil udføre. Samtidig flytter jeg regionobjektet til højre. Dette vil gøre forskellen mere tydelig.

regions["reg1"].Boolean(2, regions["reg0"])

for l in acad1.iter_objects_fast(object_name_or_list="Region"):
    print(str(l.ObjectID) + ": " + l.ObjectName)
    l.Move(APoint(0, 0, 0), APoint(1500, 0, 0))
Sidste trin til justering af regionsobjekt i AutoCAD

Det er tydeligt, at det nye objekt er oprettet som en enkelt samlet region fra dets overordnede regioner.

Afsluttende bemærkninger og relateret indhold

For yderligere blogindlæg, der dækker AutoCAD-automatisering, se venligst mine andre blogindlæg relateret til pyautocad og pywin32 . Efterlad venligst eventuelle spørgsmål, du måtte have, som en kommentar nedenfor. Du er velkommen til at kontakte mig for teknisk assistance. Det kan du gøre ved at bruge vores kontaktformular.

Her er nogle relaterede artikler, der dækker AutoCAD-automatisering og AutoCAD-scripting i Python:

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.