In diesem Blogbeitrag zeige ich, wie Sie beliebige Regionsobjekte in AutoCAD mit Pyautocad erstellen und bearbeiten. Ich werde dies mit der AddRegion()-Methode in Pyautocad tun. pyautocad ist eines von mehreren Python-Modulen für AutoCAD. Ich habe AutoCAD-Skripting in Python bereits ausführlich in diesem Blog behandelt.
Bereichsobjekt in AutoCAD
Das AutoCAD- Regionsobjekt repräsentiert geschlossene 2D-Bereiche. AutoCAD-Bereichsobjekte können Polylinien, Kreise, Bögen, Splines, Rechtecke usw. sein, solange sie verbunden sind und dadurch eine geschlossene Einheit bilden.
AutoCAD-Bereichsobjekte können kombiniert und als einzelne Bereiche verwendet werden. Dies kann durch die Verwendung einiger Methoden erfolgen. Dazu gehören Methoden wie Union , Intersection oder Subtraction .
Zusammen werden diese Methoden als boolesche AutoCAD-Methoden bezeichnet.
Erstellen eines Bereichsobjekts in AutoCAD (win32com usw.)
Es ist nicht möglich, ein Bereichsobjekt in AutoCAD mit Pyautocad zu erstellen. Dies liegt an einigen Modulbeschränkungen. Daher werde ich in diesem Artikel die Methode AddRegion() mit den Python-Modulen win32com und pythoncom verwenden.
Vor dem Erstellen eines AutoCAD- Regionsobjekts habe ich meine Anwendung gebootstrapped. Dies erleichtert eine Anbindung an AutoCAD. Es erlaubt mir außerdem, den Modellbereich abzurufen.
In der Abbildung unten zeige ich ein umschlossenes AutoCAD-Polylinienobjekt mit einem überlappenden Kreis an.
Ich habe die Objekte in der obigen Abbildung mit dem folgenden Code erstellt:
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)
Um nun eine Region zu erstellen, muss ich ein Array eingeschlossener AutoCAD-Objekte an die AddRegion()-Methode übergeben. Ich mache das unten:
acad.AddRegion(win32com.client.VARIANT(VT_ARRAY | VT_DISPATCH, (pl1, c1)))
Hier sehe ich, dass das Objekt in eine Region umgewandelt wird. Dasselbe gilt für die Polylinie. Das Regionsobjekt ist das Original.
Durchführen von booleschen Operationen an Bereichsobjekten
Boolesche Operationen können sowohl für 3D-Volumenkörper als auch für AutoCAD-Bereichsobjekte ausgeführt werden.
Um das Bereichsobjekt zu verwenden, muss ich dasselbe mithilfe von Iteration aus der AutoCAD-Vorlage abrufen. Dies liegt daran, dass die AddRegion()-Methode nichts als ein Array von AutoCAD-Objekten zurückgibt.
In dem unten gezeigten Python-Codierungsbeispiel verwende ich ein Wörterbuch , um von mir erstellte AutoCAD- Regionsobjekte zu speichern .
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
Wie ich bereits in diesem Beitrag erwähnt habe, kann ich drei Arten von booleschen Operationen ausführen, um eine einzelne Vereinigung von Regionen zu erstellen:
- Union (0)
- Kreuzung (1)
- Subtraktion (2).
Als Eingabeparameter verwende ich die in Klammern genannten Zahlen der oben aufgeführten Methoden. Beim Aufruf der Boolean()-Methode deklarieren sie die Art der booleschen Operation, die ich ausführen möchte. Gleichzeitig verschiebe ich das Bereichsobjekt nach rechts. Dadurch wird der Unterschied deutlicher.
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))
Es ist klar, dass das neue Objekt als einzelne einheitliche Region aus seinen übergeordneten Regionen erstellt wird.
Schlussbemerkungen und zugehörige Inhalte
Weitere Blogbeiträge zur AutoCAD-Automatisierung finden Sie in meinen anderen Blogbeiträgen zu pyautocad und pywin32 . Bitte hinterlassen Sie Ihre Fragen als Kommentar unten. Fühlen Sie sich frei, mich für technische Unterstützung zu kontaktieren. Dies können Sie über unser Kontaktformular tun.
Hier sind einige verwandte Artikel zur AutoCAD-Automatisierung und AutoCAD-Skripterstellung in Python:
- Link : Python für AutoCAD pyautocad-Modul
- Link : add()-Methode in Pyautocad
- Link : Gelöster Anruf wurde vom Angerufenen in Pythoncom abgelehnt
- Link : Baumdatenstruktur für AutoCAD-Objekte mit Python
- Link : Erweitern der Objekte in AutoCAD mit pyautocad in Python
- Link : Python-Listen und -Wörterbüchern zum Arbeiten mit AutoCAD-Objekten mit Pyautocad
- Link : Schraffieren von Objekten auf einer AutoCAD-Vorlage mit pywin32 in Python
- Link : Rasterbildobjekt in AutoCAD mit pyautocad in Python
- Link : Arbeiten mit 3D-Mesh-Objekt in AutoCAD mit pyautocad in Python
- Link : Erstellen eines doppelten Konstruktors mit pywin32 in Python
- Link : Apoint-Methode mit pywin32 in Python erstellen
- Link : Python-Integration mit AutoCAD mit pywin32 und win32com
- Link : Löschen von Objekten in einer AutoCAD-Vorlage mit pyautocad und pywin32 in Python
- Link : Objekt auf einer 2D-Ebene mit Pyautocad in Python spiegeln
- Link : Arbeiten mit Texten in Autocad mit pyautocad in Python
- Link : Polare Arrays in AutoCAD mit Pyautocad in Python
- Link : Rechteckige Arrays in AutoCAD mit Pyautocad in Python
- Link : Operationen mit AutoCAD-Objekten mit pyautocad in Python
- Link : Solide Objekte in AutoCAD mit pyautocad in Python
- Link : Arbeiten mit Spiralen in AutoCAD mit pyautocad in Python
- Link : Zeichnen von Splines in AutoCAD mit pyautocad in Python
- Link : Polylinien in Pyautocad zum Zeichnen von AutoCAD-Polygonen in Python
- Link : Zeichnen von Ellipsenbögen in AutoCAD mit Pyautocad in Python
- Link : Zeichnen von Bögen in AutoCAD mit Pyautocad in Python
- Link : Nahezu gleichzeitige Fabrikplanung und Prozessoptimierung mit Promodel AutoCAD Edition
- Link : Python für AutoCAD pyautocad-Modul
Leave a Reply