In diesem Artikel werde ich das SelectionSet-Objekt in AutoCAD und Methoden zur Automatisierung von Vorgängen für dasselbe mit Python besprechen. Daneben werde ich auch eine kleine Einführung zum Gruppenobjekt hinzufügen.
Vorbereiten des Codes für dieses AutoCAD-Beispiel
Für dieses Codierungsbeispiel verwende ich die Module pythoncom und win32com . Diese Module initiieren meine Anwendung und erfüllen verschiedene Aufgaben.
import win32comu.client
import pythoncom
acad = win32com.client.Dispatch("AutoCAD.Application")
doc = acad.ActiveDocument
acadModel = doc.ModelSpace
def APoint(x, y, z = 0):
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))
def aDouble(xyz):
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (xyz))
def aVariant(vObject):
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, (vObject))
Das AutoCAD-Objekt SelectionSet
Lassen Sie mich zunächst das SelectionSet-Objekt in AutoCAD erläutern. Das SelectionSet-Objekt bezieht sich einfach auf den Satz von Elementen, die ich in AutoCAD auswähle. Bei der Verwendung von AutoCAD wähle ich normalerweise Elemente aus, indem ich ein Fenster um Objekte erstelle, die ich aus der Zeichnung auswählen möchte. In diesem Fall mache ich das meistens mit der Maus. Unterschiedliche Objekte erfordern SelectionSet als Referenzobjekt, um unterschiedliche Aktivitäten auszuführen. Lassen Sie uns verstehen, wie man ein SelectionSet-Objekt in Python erstellt.
Erstellen eines SelectionSet-AutoCAD-Objekts in Python
In diesem Codierungsbeispiel werde ich versuchen, zwei Zeilen mit der AddLine-Methode zu erstellen. Ich füge diese beiden Zeilen einem SelectionSet-Objekt hinzu.
l1 = acadModel.AddLine(APoint(0, 0, 0),APoint(1000, 1000, 0))
l2 = acadModel.AddLine(APoint(1000, 1000, 0),APoint(2000, 0, 0))
Jetzt kann ich mit der Add-Methode ein SelectionSet-Objekt mit dem Namen „SS1“ erstellen. Ich verwende diese Methode für das SelectionSets-Objekt. Dieses SelectionSets-Objekt ist eine Sammlung aller SelectionSet-Objekte, die innerhalb des Document-Objekts vorhanden sind.
Um mehr über das Document-Objekt und andere AutoCAD-Objekte zu erfahren, sehen Sie sich meine anderen Blog-Beiträge an.
ss1 = doc.SelectionSets.Add("SS1")
Das SelectionSet-Objekt akzeptiert ein Array von Objekten als Eingabeparameter. Das sind die Objekte, die dem SelectionSet hinzugefügt werden sollen. Dazu verwende ich die AddItems-Methode für das SelectionSet-Objekt, um die erstellten Zeilen als Eingabewerte zu übergeben. Siehe untenstehenden Code.
ss1.AddItems(aVariant([l1, l2]))
Um zu bestätigen, ob das SelectionSet erstellt wurde und ob die beiden Objekte im SelectionSet vorhanden sind oder nicht, kann ich zwei Methoden verwenden: Name und Count.
print(s1.Name)
print(s1.Count)
O/p:
SS1
2
Methoden des AutoCAD-Objekts SelectionSet
Es gibt auch einige andere Methoden, die verwendet werden können, um verschiedene Aufgaben für ein SelectionSet-Objekt auszuführen. Zum Beispiel Clear, Delete, Erase, Highlight, Item, RemoveItems, SelectOnScreen.
Von der oben erwähnten Methode kann die Item-Methode verwendet werden, um das Item abzurufen, das an einem gegebenen Index in einer Collection, Group oder SelectionSet vorhanden ist.
print(ss1.Item(0).ObjectName)
O/p:
AcDbLine
Um SelectionSet oder Elemente aus SelectionSet zu löschen, kann ich die Methode Clear, Delete, Erase oder Remove Items verwenden. Die Funktionalität dieser Methoden ist wie folgt:
- Clear: Diese Methode leert das SelectionSet. Das SelectionSet-Objekt ist weiterhin vorhanden, enthält jedoch keine Elemente. Die Elemente, die sich zuvor in der Auswahl befanden, sind noch vorhanden, aber sie befinden sich nicht mehr im SelectionSet.
- RemoveItems: Diese Methode hilft, ein oder mehrere Elemente aus einem SelectionSet zu entfernen. Die entfernten Elemente sind noch vorhanden, befinden sich jedoch nicht mehr im SelectionSet.
- Erase: Diese Methode löscht alle Elemente in einem SelectionSet. Das SelectionSet-Objekt ist noch vorhanden, enthält jedoch keine Elemente. Die Elemente, die sich zuvor im SelectionSet befanden, sind nicht mehr vorhanden.
- Delete: Löscht ein SelectionSet-Objekt, aber nicht die Objekte im SelectionSet. Obwohl das SelectionSet selbst nach dem Aufruf der Delete-Methode nicht mehr vorhanden ist, sind die zuvor im SelectionSet enthaltenen Elemente weiterhin vorhanden.
Von den oben aufgeführten Methoden erfordert nur die RemoveItems-Methode die Übergabe von Parametern. Zum Beispiel möchte ich aus den Zeilen, die ich zu SelectionSet hinzugefügt habe, Line2 (l2) entfernen. Ich muss l2 als Element des Arrays der Items-Liste übergeben, die ich aus dem SelectionSet entfernen möchte.
ss1.RemoveItems(aVariant([l2]))
print(ss1.Count)
O/p:
1
Manchmal möchte ich Objekte nur mit der herkömmlichen Methode auswählen. Dh ein Fenster um die Objekte ziehen/zeichnen, die ich mit meiner Maus auswählen möchte. Python ermöglicht mir dies auch mit der SelectOnScreen-Methode.
ss1.SelectOnScreen()
Sobald ich die Methode wie oben gezeigt anwende, wartet der Code darauf, dass der AutoCAD-Benutzer Objekte auswählt. Nach der Auswahl der Objekte muss der AutoCAD-Benutzer die Eingabetaste auf der Tastatur drücken. Damit ist die Auswahl abgeschlossen. Der Code bewegt sich dann schließlich weiter.
Gruppieren Sie Objekte in AutoCAD mit Python
Das Group-Objekt ist ein benanntes SelectionSet-Objekt. Da es keine speziellen Methoden enthält, habe ich diesen kleinen Einführungsabschnitt hinzugefügt, um das Gruppenobjekt zu besprechen.
Ich kann das Group-Objekt ähnlich wie das SelectionSet-Objekt hinzufügen. Dh mit der Add-Methode. Offensichtlich muss ich hier das Gruppensammlungsobjekt verwenden, um eine Gruppe hinzuzufügen.
Um dem erstellten Group-Objekt Elemente hinzuzufügen, kann ich auch die AppendItems-Methode verwenden. Ich kann die Aufgabe ähnlich wie bei der AddItems-Methode für das SelectionSet-Objekt ausführen.
Darüber hinaus folgt hier eine Liste verschiedener Methoden und Eigenschaften, die verwendet werden können, um Aktivitäten an AutoCAD-Gruppenobjekten durchzuführen:
- Löschen
- GetExtensionDictionary
- Markieren
- Artikel
- Teile entfernen
- Aktualisieren
- Zählen
- Dokumentieren
- Handhaben
- HasExtensionDictionary
- Schicht
- Linientyp
- LinientypSkalierung
- Strichstärke
- Material
- Name
- Objekt Identifikation
- Objektname
- Besitzer-ID
- PlotStyleName
- Wahre Farbe
- Sichtbar machen
Abschließende Bemerkungen
Mit dem SelectionSet-Objekt kann ich verschiedene Aktivitäten an anderen AutoCAD-Objekten ausführen. Um mehr über die Automatisierung verschiedener Aufgaben mit Python in AutoCAD zu erfahren, sehen Sie sich meine anderen Blog-Beiträge an. Im Falle von Zweifeln oder Anfragen können Sie jederzeit den Kommentarbereich unten verwenden, um Ihre Fragen zu stellen. Für technische Beratung jeglicher Art kontaktieren Sie mich bitte über das SCDA-Kontaktformular in diesem Blog.
Leave a Reply