In meinem vorherigen Artikel habe ich die AutoCAD-Anwendungsobjektklasse besprochen . Der wichtigste Teil jeder AutoCAD- Anwendung ist das Document-Objekt. Dies liegt daran, dass Benutzer alle ihre Aktionen an diesem Document-Objekt ausführen. Aus diesem Grund schreibe ich diesen neuen Blogbeitrag, der die Objektklasse AutoCAD Document behandelt.
Das pyautcad-Modul und seine Alternativen
Lassen Sie mich zunächst die Module erwähnen, die ich verwenden werde, und welche anderen Optionen verfügbar sind.
Wie Sie vielleicht aus dem Titel dieses Artikels erraten haben, verwende ich das Pyautocad-Modul für dieses Tutorial. Um auf das Dokument selbst zugreifen zu können, verwende ich außerdem acad.doc. Sie werden dies im folgenden Code sehen:
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)
print(acad.doc.Name)
O/p:
Drawing1.dwg
Ich kann aber auch Kommunikationsmodule verwenden. Das heißt, andere Module als pyautocad. Im folgenden Beispiel verwende ich pythoncom und win32com , sogenannte Kommunikationsmodule, um auf die Objektklasse AutoCAD Document zuzugreifen.
from win32com.client import *
import pythoncom
import win32com
acad1 = win32com.client.Dispatch("AutoCAD.Application")
print(acad1.ActiveDocument.Name)
O/p:
Drawing1.dwg
Eigenschaften der AutoCAD Document-Objektklasse
Zu Beginn dieses Themas stelle ich einige wichtige Eigenschaften des AutoCAD-Dokumentobjekts vor. Ich finde diese Eigenschaften wichtig, weil sie für verschiedene Automatisierungszwecke verwendet werden können.
Beispielsweise arbeitet AutoCAD mit jeweils einem Dokument. Ein AutoCAD-Dokumentobjekt enthält viele Objekte, z. B. Ebenen, Layouts, Bemaßungsstile, Ansichtsfenster, BKS und andere Objekttypen. Von diesen Objekten kann immer nur eines aktiv sein.
Beispielsweise kann ein Document-Objekt n Ebenen enthalten. Es kann jedoch immer nur eine dieser Ebenen aktiv sein.
Um zu überprüfen, ob das vorhandene Dokument tatsächlich das derzeit aktive Dokument ist, kann ich die Active-Methode verwenden. Diese Methode gibt einen booleschen Wert zurück. Sie können dies im folgenden Beispiel sehen:
# determine if the document is the active document
print(acad.doc.Active)
O/p:
True
In ähnlicher Weise kann ich zum Überprüfen anderer aktiver Unterobjekte die Methoden mit Methodennamen im Format Active<ObjectName> verwenden. Einige Beispiele könnten ActiveLayout, ActiveLayer, ActiveViewport usw. sein.
Die verwendbaren Objektnamen sind unten aufgeführt:
- DimStyle
- Schicht
- Layout
- Linientyp
- Material
- PViewport
- Auswahlsatz
- Platz
- Textstil
- BKS
- Ansichtsfenster
Ich werde zeigen, wie einige dieser Objekte verwendet werden können.
print(acad.doc.ActiveDimStyle.Name)
print(acad.doc.ActiveLayer.Name)
print(acad.doc.ActiveLayout.Name)
O/p:
ISO-25
0
Model
Auf die gleiche Weise kann ich auch andere Eigenschaften verwenden. Diese Eigenschaften liefern die jeweiligen Objekte, die weiter behandelt werden können. Ich werde in Zukunft ausführlichere Artikel darüber veröffentlichen.
Zugriff auf die Blockeigenschaft des AutoCAD-Dokumentobjekts
Um die Blocks-Objekte abzurufen, die im Document-Objekt enthalten sind, kann ich die Blocks-Eigenschaft verwenden. Dadurch wird eine Sammlung der verschiedenen AutoCAD-Blockobjekte zurückgegeben, die im AutoCAD-Dokumentobjekt vorhanden sind.
print(acad.doc.Blocks)
for i in (acad.doc.Blocks):
print(i.Name)
O/p:
<comtypes.client.lazybind.Dispatch object at 0x00000209E60C1D60>
*Model_Space
*Paper_Space
*Paper_Space
Wenn ich die Datenbank zurückgeben möchte, zu der das Objekt gehört, kann ich das Database-Objekt verwenden. Einfach ausgedrückt gibt dies das Datenbankobjekt zurück. Es hat kein Namensattribut.
acad.doc.Database
O/p:
<comtypes.client.lazybind.Dispatch object at 0x0000024FA64175B0>
Unterobjekte, die im AutoCAD-Dokumentobjekt enthalten sind
Ich habe bereits erwähnt, dass ein AutoCAD-Dokumentobjekt mehrere Unterobjekte enthält. Diese Objekte sind in Form ihres eigenen spezifischen Objekttyps vorhanden, z. B. Ebenen, Materialien, Linientypen usw.
Um auf die Sammlungen hinzuweisen, kann ich einfach die Methoden mit ihren Namen selbst verwenden. Und wenn ich auf jedes der in der Sammlung vorhandenen Objekte zugreifen möchte, kann ich darüber iterieren. Ähnlich wie bei Blocks.
Die Liste der Objektsammlungen ist unten angegeben:
- Wörterbücher
- DimStyles
- Schichten
- Grundrisse
- Linientypen
- Materialien
- ModelSpace
- PaperSpace
- PlotKonfigurationen
- Registrierte Anwendungen
- Auswahlsätze
- Textstile
- Benutzerkoordinatensysteme
- Ansichtsfenster
- Ansichten
Nachdem ich nun alle Objektsammlungen aufgelistet habe, möchte ich ein Beispiel für die Verwendung dieser Methoden vorstellen.
print(acad.doc.DimStyles)
for i in (acad.doc.DimStyles):
print(i.Name)
O/p:
<comtypes.client.lazybind.Dispatch object at 0x00000209F4F11D00>
Standard
Annotative
ISO-25
Auf die gleiche Weise können auch andere wichtige Eigenschaften abgerufen werden, wie im folgenden Code angegeben.
# height of document window
print(acad.doc.Height)
# width of document window
print(acad.doc.Width)
# lower Left to Upper Right Limits
print(acad.doc.Limits)
# return a boolean value for ObjectSnapMode to check if it is on/off
print(acad.doc.ObjectSnapMode)
# path of Document
print(acad.doc.Path)
# return if Document is ReadOnly/Read-Write using boolean value
print(acad.doc.ReadOnly)
# check if document contains any unsaved changes using boolean value
print(acad.doc.Saved)
# returns SummaryInfo objects which contains document metadata (Title, subject, author, keywords)
print(acad.doc.SummaryInfo)
# returns if window is Minimized, Maximized or in a Normal state
print(acad.doc.WindowState)
# returns the document title
print(acad.doc.WindowTitle)
O/p:
818
1517
(0.0, 0.0, 420.0, 297.0)
False
C:\Users\91998\OneDrive\Documents
False
False
<comtypes.client.lazybind.Dispatch object at 0x000001C227C460D0>
3
Drawing1.dwg
Methoden der Document-Objektklasse in AutoCAD
Nachdem ich nun die verschiedenen Eigenschaften des AutoCAD-Dokumentobjekts behandelt habe, werde ich mit einigen der wichtigen Methoden der AutoCAD-Dokumentklasse fortfahren.
Tatsächlich ist die allererste Methode, über die ich spreche, die Methode Activate(). Um jedes Dokument zu aktivieren, kann ich diese Methode verwenden.
acad.doc.Activate
Danach kann ich die AuditInfo()-Methode verwenden, um die Integrität jeder Zeichnung zu bewerten. Hier kann ich als Parameter wahr oder falsch übergeben, ob AutoCAD die auftretenden Probleme beheben soll oder nicht.
acad.doc.AuditInfo(True)
Sicherlich gibt es auch ein paar Methoden zum Regenerieren, Speichern und Schließen.
# regenerate drawing
acad.doc.Regen
# save drawing
acad.doc.Save
# while closing pass boolean to save changes or not followed by drawing name
acad.doc.Close(False, "Drawing2.dwg")3
Um schließlich unbenutzte benannte Referenzen wie Blöcke oder Ebenen aus dem Dokument zu entfernen, kann ich den Befehl PurgeAll verwenden.
acad.doc.PurgeAll
Zusammenfassung und Schlussbemerkungen
Abschließend schließe ich Folgendes: Mit den in diesem Artikel dokumentierten Methoden der AutoCAD-Dokumentklasse kann ich verschiedene Aufgaben im Zusammenhang mit Dokumentobjekten automatisieren. Dies kann angewendet werden, um AutoCAD-bezogene Arbeitsabläufe zu automatisieren und zu optimieren.
Zu guter Letzt können Sie im Zweifelsfall unten im Kommentarbereich einen Kommentar hinterlassen. Ich bin auch offen für technische Beratung, für die Sie mich über unser Kontaktformular kontaktieren können . Bitte sehen Sie sich meine anderen Blogs an, die verschiedene Aspekte der Python-Module pyautocad und pywin32 für die AutoCAD-Automatisierung behandeln .
Verweise auf zugehörige AutoCAD-Automatisierungsdokumentation
Und jetzt eine Liste mit Links zu verschiedenen AutoCAD-Automatisierungsbeiträgen , die von mir in diesem Blog veröffentlicht wurden:
- 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 : Verwenden von 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
- Link: Region-Objekt in AutoCAD mit Python
- Link: AutoCAD-Anwendungsobjektklasse in Python
Leave a Reply