AutoCAD Application objektklasse i Python

dette blogindlæg vil jeg diskutere AutoCAD Application-objektet og nogle af dets vigtige metoder og egenskaber. Jeg vil vise, hvordan man implementerer AutoCAD Application-objektet i pyautocad.

Ved at starte dette kodningseksempel importerer jeg relevante klasser og metoder fra pyautocad. Jeg opretter en ny model i koden nedenfor.

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

Henter AutoCAD-applikationsobjektet i Python

For at jeg kan udføre nogen handlinger på AutoCAD Application-objektet, skal jeg hente dette objekt. I pyautocad bruger jeg “acad.app” til dette.

Hvis jeg vil bruge kommunikationsmoduler i stedet for pyautocad, kan jeg fortsætte som kodet nedenfor. I så fald bruger jeg win32com og pythoncom Python-moduler.

from win32com.client import *
import pythoncom

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

I dette tilfælde repræsenterer acad1 applikationsobjektet.

Egenskaber for Application AutoCAD-objektet

Mange applikationsobjektegenskaber forbedrer automatiseringen af ​​AutoCAD-tegninger. Jeg vil diskutere nogle af de vigtige egenskaber, gennemgå dem én efter én.

For at få forskellige former for information relateret til AutoCAD Application objektet, såsom f.eks. applikationens navn, applikationens fulde navn, eller f.eks. dokumentnavnet, kan jeg bruge koden.

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

Lad os sige, at jeg vil kontrollere alle de dokumenter, der i øjeblikket er åbnet i AutoCAD-applikationen. Til dette kan jeg fx bruge egenskaben Dokumenter og iterere over denne egenskab.

Jeg vil demonstrere dette med et simpelt eksempel i AutoCAD. I hans eksempel har jeg to tegninger åbne, Tegning1 og Tegning2. Skærmbilledet nedenfor viser dette.

AutoCAD Application objekt vejledning

Tegningen “Drawing2.dwg” er i øjeblikket valgt. Fra mit tidligere output og billedet ovenfor er det tydeligt, at denne tegning er hentet som ActiveDocuments. Men lad mig tjekke, om det også returnerer Drawing1.dwg. Dette burde være tilfældet, da den fil også er åben.

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

O/p:
Drawing1.dwg
Drawing2.dwg

MenuGroups og MenuBar attributter

Nu får jeg menulinjen og menugruppeobjekterne i brug. Det gør jeg i koden nedenfor:

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

Her kan jeg se, at den første kode i MenuBar returnerede et afsendelsesobjekt, som er en aktiv menulinje fra AutoCAD-tegningen. Jeg vil diskutere MenuBar-objektet i en anden artikel.

AutoCAD-applikationsobjekt WindowState-egenskab

For at justere eller se tilstanden af ​​AutoCAD-applikationen eller AutoCAD-dokumentvinduet kan jeg bruge WindowState-attributten. WindowState er kodet med heltalsværdier. Kort fortalt repræsenterer de heltal vinduestilstande på fx følgende måde:

  • acMin(1): Vinduet er minimeret.
  • acMax(2): Vinduet er maksimeret.
  • acNorm(3): Vinduet er normalt (ikke minimeret eller maksimeret).
print(acad.app.WindowState)

O/p:
1

AutoCAD Application objekt metoder

Nu vil jeg diskutere et par vigtige pyautocad-metoder til håndtering af AutoCAD-applikationer. Faktisk burde alle vide det, mens de udfører operationer med AutoCAD-applikationsobjektet.

Når jeg skriver en kode, skal jeg kontrollere, om applikationen er i en stille (inaktiv) tilstand eller ej. For at tjekke at jeg bruger IsQuiescent metoden. Her er et eksempel:

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

O/p:
False

Da jeg brugte applikationen efter at have kørt denne kode, viser den applikationen som aktiv (dvs. Falsk).

Hvis jeg vil lukke det aktuelle dokument, kan jeg også bruge Afslut-metoden. Dette lukker naturligvis kun det aktuelt aktive dokument og ikke hele applikationen, der returnerer en nulværdi.

acad.app.Quit()

Til sidst, for at opdatere applikationen efter at have anvendt koden, kan jeg bruge opdateringsmetoden, som også returnerer null.

acad.app.Update()

Afsluttende bemærkninger og relateret indhold

For andre informative artikler, der dækker  AutoCAD -automatisering, tjek mine andre artikler relateret til pyautocad og pywin32. Kommenter venligst de spørgsmål, du har, i kommentarfeltet. Du er velkommen til at kontakte mig for enhver teknisk rådgivning. Du kan bruge kontaktformularen til det samme.

Her er nogle relaterede artikler, der dækker AutoCAD-automatisering og AutoCAD-scripting i Python:

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close

Meta