I min tidligere artikel diskuterede jeg AutoCAD Application-objektklassen . Den vigtigste del af enhver AutoCAD- applikation er dokumentobjektet. Dette skyldes, at brugere udfører alle deres handlinger på dette dokumentobjekt. Derfor skriver jeg dette nye blogindlæg, der dækker AutoCAD Document-objektklassen.
Pyautcad-modulet og dets alternativer
Lad mig først nævne de moduler, jeg skal bruge, og hvilke andre muligheder der er tilgængelige.
Som du måske har gættet ud fra titlen på denne artikel, bruger jeg pyautocad-modulet til denne tutorial. Desuden bruger jeg acad.doc for at få adgang til selve dokumentet. Du vil se dette i koden nedenfor:
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)
print(acad.doc.Name)
O/p:
Drawing1.dwg
Jeg kan dog også bruge kommunikationsmoduler. Det vil sige andre moduler end pyautocad. I eksemplet nedenfor bruger jeg pythoncom og win32com , såkaldte kommunikationsmoduler, til at få adgang til AutoCAD Document-objektklassen.
from win32com.client import *
import pythoncom
import win32com
acad1 = win32com.client.Dispatch("AutoCAD.Application")
print(acad1.ActiveDocument.Name)
O/p:
Drawing1.dwg
Egenskaber for AutoCAD Document-objektklassen
Til at begynde med dette emne introducerer jeg nogle vigtige egenskaber ved AutoCAD Document-objektet. Jeg finder disse egenskaber vigtige, fordi de kan bruges til forskellige automatiseringsformål.
For eksempel arbejder AutoCAD med ét dokument ad gangen. Et AutoCAD-dokumentobjekt indeholder mange objekter, såsom Lag, Layouts, Dimensionstypografier, Viewport, UCS og andre objekttyper. Blandt disse objekter kan kun én være aktiv på et givet tidspunkt.
For eksempel kan et dokumentobjekt indeholde n antal lag. Dog kan kun ét af disse lag være aktivt ad gangen.
For at kontrollere, om det tilstedeværende dokument faktisk er det aktuelt aktive dokument, kan jeg bruge den aktive metode. Denne metode returnerer en boolesk værdi. Du kan se dette i eksemplet nedenfor:
# determine if the document is the active document
print(acad.doc.Active)
O/p:
True
Tilsvarende kan jeg for at kontrollere andre aktive underobjekter bruge metoderne med metodenavne i formatet Active<ObjectName>. Nogle eksempler kunne være ActiveLayout, ActiveLayer, ActiveViewport og så videre.
Objektnavne, der kan bruges, er angivet nedenfor:
- DimStyle
- Lag
- Layout
- Linjetype
- Materiale
- PViewport
- ValgSet
- Plads
- Tekststil
- UCS
- Udsigtsport
Jeg vil vise, hvordan nogle af disse genstande kan bruges.
print(acad.doc.ActiveDimStyle.Name)
print(acad.doc.ActiveLayer.Name)
print(acad.doc.ActiveLayout.Name)
O/p:
ISO-25
0
Model
På samme måde kan jeg også bruge andre egenskaber. Disse egenskaber returnerer de respektive objekter, som yderligere kan behandles. Jeg vil poste mere detaljerede artikler om dette i fremtiden.
Adgang til AutoCAD-dokumentobjektet Blocks-egenskaben
For at få fat i Blocks-objekterne, der er indeholdt i Document-objektet, kan jeg bruge Blocks-egenskaben. Dette returnerer en samling af de forskellige AutoCAD-blokobjekter, der er til stede i AutoCAD-dokumentobjektet.
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
Hvis jeg vil returnere den database, som objektet tilhører, kan jeg bruge Database-objektet. Simpelthen dette returnerer databaseobjektet. Den har ikke nogen navneattribut.
acad.doc.Database
O/p:
<comtypes.client.lazybind.Dispatch object at 0x0000024FA64175B0>
Underobjekter indeholdt af AutoCAD Document-objekt
Tidligere diskuterede jeg, at et AutoCAD-dokumentobjekt indeholder flere underobjekter. Disse objekter er til stede i form af deres egen specifikke type objekter, f.eks. Lag, Materialer, Linjetyper osv.
For at pege på samlingerne kan jeg blot bruge metoderne med deres navne selv. Og hvis jeg vil have adgang til hvert af de objekter, der er til stede i samlingen, så kan jeg gentage det samme. På samme måde som jeg gjorde i tilfældet med Blocks.
Listen over objektsamlinger er angivet nedenfor:
- Ordbøger
- DimStyles
- Lag
- Layouts
- Linjetyper
- Materialer
- ModelSpace
- PaperSpace
- Plotkonfigurationer
- Registrerede applikationer
- Udvalgssæt
- Tekststile
- Brugerkoordinatsystemer
- Udsigtsporte
- Visninger
Nu hvor jeg har listet alle objektsamlingerne, lad mig præsentere et eksempel på, hvordan man bruger disse metoder.
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
På samme måde kan andre vigtige egenskaber også hentes som angivet i koden nedenfor.
# 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
Metoder for dokumentobjektklassen i AutoCAD
Nu hvor jeg har dækket de forskellige egenskaber af AutoCAD Document-objektet, vil jeg gå videre til nogle af de vigtige metoder i AutoCAD Document-klassen.
Faktisk er den allerførste metode, jeg taler om, Activate()-metoden. For at aktivere ethvert dokument kan jeg bruge denne metode.
acad.doc.Activate
Derefter kan jeg bruge AuditInfo() metoden for at evaluere integriteten af enhver tegning. Her kan jeg angive sand eller falsk som parametre for, om jeg vil have AutoCAD til at løse de problemer, den støder på.
acad.doc.AuditInfo(True)
Der er bestemt også et par metoder til at regenerere, gemme og lukke.
# 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
Til sidst, for at fjerne ubrugte navngivne referencer som blokke eller lag fra dokumentet, kan jeg bruge kommandoen PurgeAll.
acad.doc.PurgeAll
Sammenfatning og afsluttende bemærkninger
Til sidst konkluderer jeg følgende: Ved at bruge AutoCAD Document-klassemetoderne, der er dokumenteret i denne artikel, kan jeg automatisere forskellige Document-objekt-relaterede opgaver. Dette kan anvendes til at automatisere og optimere AutoCAD-relaterede arbejdsgange.
Til sidst, i tilfælde af tvivl, er du velkommen til at kommentere nedenfor i kommentarfeltet. Jeg er også åben for teknisk rådgivning, som du kan kontakte mig for ved at bruge vores kontaktformular . Tjek venligst mine andre blogs, der dækker forskellige aspekter af pyautocad- og pywin32 Python-modulerne til AutoCAD-automatisering .
Referencer til relateret AutoCAD-automatiseringsdokumentation
Og nu, en liste over links til forskellige AutoCAD-automatiseringsindlæg offentliggjort af mig på denne blog:
- Link : Python til AutoCAD pyautocad-modul
- Link : add() metode i pyautocad
- Link : Løst opkald blev afvist af callee i pythoncom
- Link : Trædatastruktur for AutoCAD-objekter ved hjælp af Python
- Link : Udvidelse af objekterne i AutoCAD ved hjælp af pyautocad i Python
- Link : Brug af Python-lister og ordbøger til at arbejde med AutoCAD-objekter med pyautocad
- Link : Skravering af objekter på AutoCAD-skabelon ved hjælp af pywin32 i Python
- Link : Rasterbilledobjekt i AutoCAD med pyautocad i Python
- Link : Arbejde med 3D-mesh-objekt i AutoCAD ved hjælp af pyautocad i Python
- Link : Oprettelse af en dobbeltkonstruktør ved hjælp af pywin32 i Python
- Link : Oprettelse af apoint-metode ved hjælp af pywin32 i Python
- Link : Python-integration med AutoCAD ved hjælp af pywin32 og win32com
- Link : Sletning af objekter i en AutoCAD-skabelon med pyautocad og pywin32 i Python
- Link : Spejlobjekt på et 2D-plan med pyautocad i Python
- Link : Arbejde med tekster i Autocad ved hjælp af pyautocad i Python
- Link : Polære arrays i AutoCAD ved hjælp af pyautocad i Python
- Link : Rektangulære arrays i AutoCAD ved hjælp af pyautocad i Python
- Link : Operationer med AutoCAD-objekter ved hjælp af pyautocad i Python
- Link : Faste objekter i AutoCAD ved hjælp af pyautocad i Python
- Link : Arbejde med helixer i AutoCAD ved hjælp af pyautocad i Python
- Link : Tegning af splines i AutoCAD med pyautocad i Python
- Link : Polylinjer i pyautocad til tegning af AutoCAD-polygoner i Python
- Link : Tegning af ellipsebuer i AutoCAD ved hjælp af pyautocad i Python
- Link : Tegn buer i AutoCAD ved hjælp af pyautocad i Python
- Link : Nær samtidig fabriksdesign og procesoptimering med Promodel AutoCAD-udgave
- Link : Python til AutoCAD pyautocad-modul
- Link: Regionsobjekt i AutoCAD med Python
- Link: AutoCAD Application objektklasse i Python
Leave a Reply