Python 中的 AutoCAD 应用程序对象类

这篇博文中,我将讨论 AutoCAD 应用程序对象及其一些重要的方法和属性。我将展示如何在 pyautocad 中实现 AutoCAD 应用程序对象。

从这个编码示例开始,我从 pyautocad 导入相关的类和方法。我在下面的代码中创建了一个新模型。

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

在 Python 中获取 AutoCAD 应用程序对象

为了能够对 AutoCAD 应用程序对象执行任何操作,我需要获取该对象。在 pyautocad 中,我为此使用“acad.app”。

如果我想使用通信模块而不是 pyautocad,我可以按照下面的代码进行。在这种情况下,我使用win32com和 pythoncom Python 模块。

from win32com.client import *
import pythoncom

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

在这种情况下,acad1 表示应用程序对象。

应用程序 AutoCAD 对象的属性

许多应用程序对象属性提高了 AutoCAD 绘图的自动化程度。我将讨论一些重要的属性,一一讨论。

要获取与 AutoCAD 应用程序对象相关的各种信息,例如应用程序的名称、应用程序的全名或文档名称,我可以使用代码。

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

假设我想检查当前在 AutoCAD 应用程序中打开的所有文档。为此,我可以使用 Documents 属性并迭代该属性。

我将通过 AutoCAD 中的一个简单示例来演示这一点。在他的示例中,我打开了两个绘图,Drawing1 和 Drawing2。下面的屏幕截图显示了这一点。

AutoCAD 应用程序对象教程

当前选择了绘图“Drawing2.dwg”。从我之前的输出和上图可以清楚地看出,这张图是作为 ActiveDocuments 获取的。但让我检查一下它是否也返回 Drawing1.dwg。应该是这样,因为该文件也已打开。

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

O/p:
Drawing1.dwg
Drawing2.dwg

MenuGroups 和 MenuBar 属性

现在我得到了当前正在使用的菜单栏和菜单组对象。我在下面的代码中这样做:

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

在这里,我可以看到 MenuBar 的第一段代码返回了一个调度对象,它是 AutoCAD 绘图中的活动菜单栏。我将在另一篇文章中讨论 MenuBar 对象。

AutoCAD 应用程序对象 WindowState 属性

要调整或查看 AutoCAD 应用程序或 AutoCAD 文档窗口的状态,我可以使用 WindowState 属性。WindowState 使用整数值进行编码。简而言之,整数以如下方式表示窗口状态:

  • 最小值(1):窗口最小化。
  • 最大动作(2):窗口最大化。
  • acNorm(3):窗口正常(既没有最小化也没有最大化)。
print(acad.app.WindowState)

O/p:
1

AutoCAD 应用程序对象方法

现在,我将讨论一些用于处理 AutoCAD 应用程序的重要 pyautocad 方法。其实用AutoCAD应用对象进行操作大家应该都知道。

每当我编写代码时,我都必须检查应用程序是否处于静止(非活动)状态。检查我是否使用了 IsQuiescent 方法。这是一个例子:

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

O/p:
False

当我在运行此代码后使用该应用程序时,它显示该应用程序处于活动状态(即 False)。

另外,如果我想关闭当前文档,我可以使用 Quit 方法。当然,这只会关闭当前活动的文档,而不会返回空值的整个应用程序。

acad.app.Quit()

最后,为了在应用代码后更新应用程序,我可以使用也返回 null 的 Update 方法。

acad.app.Update()

结束语及相关内容

有关涵盖 AutoCAD自动化的其他信息性文章,请查看我与 pyautocad 和 pywin32 相关的其他文章。请在评论部分评论您的问题。如需任何技术咨询,请随时与我联系。您可以使用联系表格

以下是一些涉及 AutoCAD 自动化和 Python 中的 AutoCAD 脚本的相关文章:

You May Also Like

Leave a Reply

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据