Bereichsobjekt in AutoCAD mit Python

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.

Erstellen eines Bereichsobjekts in AutoCAD

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)))
Bereichsobjekt in AutoCAD anpassen

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))
Letzter Schritt zum Anpassen des Bereichsobjekts in AutoCAD

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:

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Close

Meta