AutoCAD-Anwendungsobjektklasse in Python

In diesem Blogbeitrag werde ich das AutoCAD-Anwendungsobjekt und einige seiner wichtigen Methoden und Eigenschaften diskutieren. Ich werde zeigen, wie das AutoCAD-Anwendungsobjekt in Pyautocad implementiert wird.

Beginnend mit diesem Codierungsbeispiel importiere ich relevante Klassen und Methoden aus Pyautocad. Ich erstelle ein neues Modell im folgenden Code.

from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)

Abrufen des AutoCAD-Anwendungsobjekts in Python

Damit ich Aktionen für das AutoCAD-Anwendungsobjekt ausführen kann, muss ich dieses Objekt abrufen. In pyautocad verwende ich dafür „acad.app“.

Wenn ich anstelle von Pyautocad Kommunikationsmodule verwenden möchte, kann ich wie unten codiert vorgehen. In diesem Fall verwende ich die Python-Module win32com und pythoncom.

from win32com.client import *
import pythoncom

acad1 = win32com.client.Dispatch("AutoCAD.Application")

In diesem Fall repräsentiert acad1 das Anwendungsobjekt.

Eigenschaften des AutoCAD-Anwendungsobjekts

Viele Anwendungsobjekteigenschaften verbessern die Automatisierung von AutoCAD-Zeichnungen. Ich werde einige der wichtigen Eigenschaften besprechen und sie nacheinander durchgehen.

Um verschiedene Arten von Informationen in Bezug auf das AutoCAD-Anwendungsobjekt zu erhalten, wie z. B. den Namen der Anwendung, den vollständigen Namen der Anwendung oder z. B. den Dokumentnamen, kann ich den Code verwenden.

print(acad.app.Application.Name)
print(acad.app.Caption)
print(acad.app.ActiveDocument.Name)

print(acad.app.Path)
print(acad.app.FullName)

O/p:
AutoCAD
Autodesk AutoCAD 2018 - [Drawing2.dwg]
Drawing2.dwg
C:\Program Files\Autodesk\AutoCAD 2018
C:\Program Files\Autodesk\AutoCAD 2018\acad.exe

Angenommen, ich möchte alle derzeit in der AutoCAD-Anwendung geöffneten Dokumente überprüfen. Dazu kann ich zB die Documents-Eigenschaft verwenden und über diese Eigenschaft iterieren.

Ich werde dies anhand eines einfachen Beispiels in AutoCAD demonstrieren. In seinem Beispiel habe ich zwei Zeichnungen geöffnet, Drawing1 und Drawing2. Der folgende Screenshot zeigt dies.

Lernprogramm für AutoCAD-Anwendungsobjekte

Aktuell ist die Zeichnung „Drawing2.dwg“ ausgewählt. Aus meiner vorherigen Ausgabe und dem obigen Bild geht hervor, dass diese Zeichnung als ActiveDocuments abgerufen wird. Aber lassen Sie mich prüfen, ob es auch Drawing1.dwg zurückgibt. Dies sollte der Fall sein, da diese Datei ebenfalls geöffnet ist.

print(acad.app.Documents)
for i in acad.app.Documents:
    print(i.Name)

O/p:
Drawing1.dwg
Drawing2.dwg

MenuGroups- und MenuBar-Attribute

Jetzt erhalte ich die aktuell verwendeten Menüleisten- und Menügruppenobjekte. Ich mache das im folgenden Code:

print(acad.app.MenuBar)

print(acad.app.MenuGroups)
for i in acad.app.MenuGroups:
    print(i.Name)

O/p:
<comtypes.client.lazybind.Dispatch object at 0x0000021BBCA23EB0>
ACAD
CUSTOM
MODELDOC
EXPRESS
AUTODESKSEEK

Hier kann ich sehen, dass der erste Code von MenuBar ein Dispatch-Objekt zurückgegeben hat, das eine aktive Menüleiste aus der AutoCAD-Zeichnung ist. Ich werde das MenuBar-Objekt in einem anderen Artikel besprechen.

WindowState-Eigenschaft des AutoCAD-Anwendungsobjekts

Um den Status der AutoCAD-Anwendung oder des AutoCAD-Dokumentfensters anzupassen oder anzuzeigen, kann ich das WindowState-Attribut verwenden. WindowState ist mit ganzzahligen Werten codiert. Kurz gesagt repräsentieren die ganzen Zahlen Fensterzustände zB auf folgende Weise:

  • acMin(1): Das Fenster wird minimiert.
  • acMax(2): Das Fenster wird maximiert.
  • acNorm(3): Das Fenster ist normal (nicht minimiert oder maximiert).
print(acad.app.WindowState)

O/p:
1

AutoCAD-Anwendungsobjektmethoden

Jetzt werde ich einige wichtige Pyautocad-Methoden für den Umgang mit AutoCAD-Anwendungen diskutieren. Eigentlich sollte es jeder wissen, wenn er Operationen mit dem AutoCAD-Anwendungsobjekt durchführt.

Immer wenn ich einen Code schreibe, muss ich prüfen, ob sich die Anwendung in einem Ruhezustand (inaktiv) befindet oder nicht. Um dies zu überprüfen, verwende ich die IsQuiescent-Methode. Hier ist ein Beispiel:

print(acad.app.GetAcadState().IsQuiescent)

O/p:
False

Da ich die Anwendung nach dem Ausführen dieses Codes verwendet habe, wird die Anwendung als aktiv angezeigt (dh falsch).

Wenn ich das aktuelle Dokument schließen möchte, kann ich auch die Quit-Methode verwenden. Dies schließt natürlich nur das gerade aktive Dokument und nicht die gesamte Anwendung, die einen Nullwert zurückgibt.

acad.app.Quit()

Um die Anwendung nach dem Anwenden des Codes zu aktualisieren, kann ich schließlich die Update-Methode verwenden, die ebenfalls null zurückgibt.

acad.app.Update()

Schlussbemerkungen und zugehörige Inhalte

Weitere informative Artikel  zur AutoCAD -Automatisierung finden Sie in meinen anderen Artikeln zu pyautocad und  pywin32 . Bitte kommentieren Sie Ihre Fragen im Kommentarbereich. Fühlen Sie sich frei, mich für eine technische Beratung zu kontaktieren. Sie können dafür das Kontaktformular verwenden .

Hier sind einige verwandte Artikel zur AutoCAD-Automatisierung und AutoCAD-Skripterstellung in Python:

You May Also Like

Leave a Reply

Leave a Reply

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.