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.
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)))
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.
I 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))
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:
- Link : Python til AutoCAD pyautocad-modul
- Link : add() metode i pyautocad
- Link : Løst opkald blev afvist af callee i pythoncom
- Link : Trædatastruktur for AutoCAD-objekter ved hjælp af Python
- Link : Udvidelse af objekterne i AutoCAD ved hjælp af pyautocad i Python
- Link : Brug af Python-lister og ordbøger til at arbejde med AutoCAD-objekter med pyautocad
- Link : Skravering af objekter på AutoCAD-skabelon ved hjælp af pywin32 i Python
- Link : Rasterbilledobjekt i AutoCAD med pyautocad i Python
- Link : Arbejde med 3D-mesh-objekt i AutoCAD ved hjælp af pyautocad i Python
- Link : Oprettelse af en dobbeltkonstruktør ved hjælp af pywin32 i Python
- Link : Oprettelse af apoint-metode ved hjælp af pywin32 i Python
- Link : Python-integration med AutoCAD ved hjælp af pywin32 og win32com
- Link : Sletning af objekter i en AutoCAD-skabelon med pyautocad og pywin32 i Python
- Link : Spejlobjekt på et 2D-plan med pyautocad i Python
- Link : Arbejde med tekster i Autocad ved hjælp af pyautocad i Python
- Link : Polære arrays i AutoCAD ved hjælp af pyautocad i Python
- Link : Rektangulære arrays i AutoCAD ved hjælp af pyautocad i Python
- Link : Operationer med AutoCAD-objekter ved hjælp af pyautocad i Python
- Link : Faste objekter i AutoCAD ved hjælp af pyautocad i Python
- Link : Arbejde med helixer i AutoCAD ved hjælp af pyautocad i Python
- Link : Tegning af splines i AutoCAD med pyautocad i Python
- Link : Polylinjer i pyautocad til tegning af AutoCAD-polygoner i Python
- Link : Tegning af ellipsebuer i AutoCAD ved hjælp af pyautocad i Python
- Link : Tegn buer i AutoCAD ved hjælp af pyautocad i Python
- Link : Nær samtidig fabriksdesign og procesoptimering med Promodel AutoCAD-udgave
- Link : Python til AutoCAD pyautocad-modul
Leave a Reply