En mi artículo anterior hablé de la clase de objeto de la aplicación de AutoCAD . La parte más importante de cualquier aplicación de AutoCAD es el objeto Documento. Esto se debe a que los usuarios realizan todas sus acciones en este objeto Documento. En consecuencia, estoy escribiendo esta nueva publicación de blog, que cubre la clase de objeto Documento de AutoCAD.
El módulo pyautcad y sus alternativas
En primer lugar, permítanme mencionar los módulos que voy a utilizar y qué otras opciones están disponibles.
Como habrás adivinado por el título de este artículo, estoy usando el módulo pyautocad para este tutorial. Además, para poder acceder al documento en sí, estoy usando acad.doc. Verá esto en el siguiente código:
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(create_if_not_exists=True)
print(acad.doc.Name)
O/p:
Drawing1.dwg
Sin embargo, también puedo usar módulos de comunicación. Es decir, otros módulos además de pyautocad. En el siguiente ejemplo, uso pythoncom y win32com , los llamados módulos de comunicación, para acceder a la clase de objeto Documento de AutoCAD.
from win32com.client import *
import pythoncom
import win32com
acad1 = win32com.client.Dispatch("AutoCAD.Application")
print(acad1.ActiveDocument.Name)
O/p:
Drawing1.dwg
Propiedades de la clase de objeto Documento de AutoCAD
Para comenzar con este tema, presento algunas propiedades importantes del objeto Documento de AutoCAD. Considero que estas propiedades son importantes porque se pueden usar para varios fines de automatización.
Por ejemplo, AutoCAD trabaja con un documento a la vez. Un objeto de documento de AutoCAD contiene muchos objetos, como capas, diseños, estilos de cota, ventana gráfica, UCS y otros tipos de objetos. Entre estos objetos, solo uno puede estar activo en un momento dado.
Por ejemplo, un objeto Documento puede contener n número de capas. Sin embargo, solo una de estas capas puede estar activa a la vez.
Para verificar si el documento presente es realmente el documento actualmente activo, puedo usar el método Activo. Este método devuelve un valor booleano. Puedes ver esto en el siguiente ejemplo:
# determine if the document is the active document
print(acad.doc.Active)
O/p:
True
De manera similar, para verificar otros subobjetos activos, puedo usar los métodos con nombres de métodos en el formato Active<ObjectName>. Algunos ejemplos podrían ser ActiveLayout, ActiveLayer, ActiveViewport, etc.
Los nombres de objetos que se pueden utilizar se enumeran a continuación:
- DimStyle
- Capa
- Diseño
- Tipo de línea
- Material
- PViewport
- SelecciónConjunto
- Espacio
- Estilo de texto
- UCS
- vista
Mostraré cómo se pueden usar algunos de estos objetos.
print(acad.doc.ActiveDimStyle.Name)
print(acad.doc.ActiveLayer.Name)
print(acad.doc.ActiveLayout.Name)
O/p:
ISO-25
0
Model
De la misma manera, puedo usar otras propiedades también. Estas propiedades devuelven los objetos respectivos que pueden tratarse más adelante. Publicaré artículos más detallados sobre esto en el futuro.
Acceso a la propiedad Bloques del objeto Documento de AutoCAD
Avanzando, para obtener los objetos Blocks que están contenidos en el objeto Document, puedo usar la propiedad Blocks. Esto devuelve una colección de los diversos objetos de bloque de AutoCAD que están presentes en el objeto de documento de AutoCAD.
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
Si quiero devolver la base de datos a la que pertenece el objeto, puedo usar el objeto Base de datos. En pocas palabras, esto devuelve el objeto de la base de datos. No tiene ningún atributo de nombre.
acad.doc.Database
O/p:
<comtypes.client.lazybind.Dispatch object at 0x0000024FA64175B0>
Subobjetos contenidos en el objeto Documento de AutoCAD
Anteriormente mencioné que un objeto de documento de AutoCAD contiene varios subobjetos. Estos objetos están presentes en forma de su propio tipo específico de objetos, por ejemplo, capas, materiales, tipos de línea, etc.
Para señalar las colecciones, simplemente puedo usar los métodos con sus propios nombres. Y si quiero acceder a cada uno de los objetos presentes dentro de la colección, entonces puedo iterar sobre el mismo. De manera similar a como lo hice en el caso de Blocks.
La lista de colecciones de objetos se proporciona a continuación:
- Diccionarios
- DimStyles
- Capas
- Diseños
- tipos de línea
- Materiales
- ModeloEspacio
- PapelEspacio
- Configuraciones de parcela
- Aplicaciones registradas
- SelecciónConjuntos
- Estilos de texto
- Sistemas de coordenadas de usuario
- ventanas gráficas
- Puntos de vista
Ahora que he enumerado todas las colecciones de objetos, permítanme presentarles un ejemplo de cómo usar estos métodos.
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
De la misma manera, también se pueden obtener otras propiedades importantes como se indica en el código a continuación.
# 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
Métodos de la clase de objeto Documento en AutoCAD
Ahora que he cubierto las diversas propiedades del objeto Documento de AutoCAD, avanzaré a algunos de los métodos importantes de la clase Documento de AutoCAD.
De hecho, el primer método del que hablo es el método Activate(). Para activar cualquier documento puedo utilizar este método.
acad.doc.Activate
A partir de entonces, para evaluar la integridad de cualquier dibujo, puedo usar el método AuditInfo(). Aquí, puedo pasar verdadero o falso como parámetros para determinar si quiero o no que AutoCAD solucione los problemas que encuentre.
acad.doc.AuditInfo(True)
Ciertamente, también hay algunos métodos para regenerar, guardar y cerrar.
# 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
Finalmente, para eliminar referencias con nombre no utilizadas como bloques o capas del documento, puedo usar el comando PurgeAll.
acad.doc.PurgeAll
Resumen y observaciones finales
Finalmente, concluyo lo siguiente: Usando los métodos de la clase Documento de AutoCAD documentados en este artículo, puedo automatizar diferentes tareas relacionadas con el objeto Documento. Esto se puede aplicar para automatizar y optimizar los flujos de trabajo relacionados con AutoCAD.
Por último, en caso de dudas, no dude en comentar a continuación en la sección de comentarios. También estoy abierto a consultas técnicas para lo cual puedes contactarme a través de nuestro formulario de contacto . Consulte mis otros blogs que cubren varios aspectos de los módulos Python pyautocad y pywin32 para la automatización de AutoCAD .
Referencias a la documentación de automatización de AutoCAD relacionada
Y ahora, una lista de enlaces a varias publicaciones de automatización de AutoCAD publicadas por mí en este blog:
- Enlace : módulo Python para AutoCAD pyautocad
- Enlace : método add () en pyautocad
- Enlace : la llamada resuelta fue rechazada por el destinatario en pythoncom
- Enlace : estructura de datos de árbol para objetos de AutoCAD usando Python
- Enlace : Extendiendo los objetos en AutoCAD usando pyautocad en Python
- Enlace : Uso de listas y diccionarios de Python para trabajar con objetos de AutoCAD con pyautocad
- Enlace : Sombreado de objetos en la plantilla de AutoCAD usando pywin32 en Python
- Enlace : objeto de imagen ráster en AutoCAD con pyautocad en Python
- Enlace : Trabajando con un objeto de malla 3D en AutoCAD usando pyautocad en Python
- Enlace : Creando un constructor doble usando pywin32 en Python
- Enlace : Crear un método de punto usando pywin32 en Python
- Enlace : Integración de Python con AutoCAD usando pywin32 y win32com
- Enlace : Eliminación de objetos en una plantilla de AutoCAD con pyautocad y pywin32 en Python
- Enlace : Objeto espejo en un plano 2D con pyautocad en Python
- Link : Trabajando con textos en Autocad usando pyautocad en Python
- Enlace : matrices polares en AutoCAD usando pyautocad en Python
- Enlace : Matrices rectangulares en AutoCAD usando pyautocad en Python
- Enlace : Operaciones con objetos de AutoCAD usando pyautocad en Python
- Enlace : Objetos sólidos en AutoCAD usando pyautocad en Python
- Enlace : Trabajando con hélices en AutoCAD usando pyautocad en Python
- Enlace : Dibujar splines en AutoCAD con pyautocad en Python
- Enlace : Polilíneas en pyautocad para dibujar polígonos de AutoCAD en Python
- Enlace : Dibujar arcos de elipse en AutoCAD usando pyautocad en Python
- Enlace : Dibujar arcos en AutoCAD usando pyautocad en Python
- Enlace : diseño de fábrica y optimización de procesos casi simultáneos con la edición Promodel AutoCAD
- Enlace : módulo Python para AutoCAD pyautocad
- Vínculo: objeto Región en AutoCAD con Python
- Enlace: clase de objeto de la aplicación de AutoCAD en Python
Leave a Reply