AutoCAD 清除浮动SendCommand

下一篇:没有了
提供本内容的用户
图纸下载排行
443966716678645292241AutoCAD-共享资料网
w页码,1/228(W)AutoCAD 2009 Developer HelpActiveX/VBA 开发人员手册《ActiveX/VBA 开发人员手册》说明了如何使用 ActiveX 和 VBA 开发应用程序来自定义 AutoCAD。本手册还包括样例代码和 逐步说明的操作步骤。《ActiveX/VBA 开发人员手册》包括以下主题:l l l l l l l l l l l l l l l概述 帮助文件 自定义手册 AutoLISP 参考 AutoLISP Developer's Guide AutoLISP 教程 DXF 参考手册 ActiveX/VBA 开发人员手册 ActiveX and VBA Reference Sheet Set Objects Reference Connectivity Automation Reference ObjectARX 我的帮助 网上资源简介 VBA 入门 ActiveX Automation 基础知识 控制 AutoCAD 环境 创建和编辑 AutoCAD 图元 标注和公差 自定义工具栏和菜单 使用事件 在三维空间中工作 定义布局并打印 高级绘图与组织技术 使用 VBA 开发应用程序 与其他应用程序和 Windows API 交互 ActiveX/VBA 教程:设计花园小径 Visual LISP 与 ActiveX/VBA 的比较简介本简介介绍了通过 ActiveX Automation 接口显示 AutoCAD 对象以及使用 Visual Basic for Applications 编程环境对这些对象进行编程的相关概念。本节内容AutoCAD ActiveX 技术概述 AutoCAD Visual Basic for Applications (VBA) 接口概述 l AutoCAD ActiveX 和 VBA 一起运行 l 本书的结构 l 关于更多信息 l 代码样例 l 移植 Automation 工程 请将您关于此页内容的评论发送给我们l l简介 &AutoCAD ActiveX 技术概述AutoCAD? ActiveX? 使用户能够从 AutoCAD 的内部或外部以编程方式来操作 AutoCAD。它是通过使 AutoCAD 对象暴露于“外部世界”来实现这一功能 的。暴露这些对象后,可以通过多种不同的编程语言和环境以及其他应用程序(例如 Microsoft? Word VBA 或 Excel VBA)对其进行访问。 在 AutoCAD 中实现 ActiveX 接口有两大优点:l l更多的编程环境可以编程访问 AutoCAD 图形。在 ActiveX Automation 出现之前,开发人员只能用 AutoLISP? 或 C++ 接口访问 AutoCAD 图形。 与其他 Windows? 应用程序(例如 Microsoft Excel 和 Word)共享数据比以前要方便得多。对象是所有 ActiveX 应用程序的主要构造块。每一个显示的对象均精确代表一个 AutoCAD 组件。AutoCAD ActiveX 接口中有许多不同类型的对象。例 如:l l l l l直线、圆弧、文字和标注等图形对象都是对象。 线型与标注样式等样式设置都是对象。 图层、编组和块等组织结构都是对象。 视图与视口等图形显示都是对象。 甚至图形、AutoCAD 应用程序本身也是对象。请将您关于此页内容的评论发送给我们简介 &AutoCAD Visual Basic for Applications (VBA) 接口概述Microsoft VBA 是一个面向对象的编程环境,可提供类似 Visual Basic 6 (VB) 的丰富开发功能。VBA 和 VB 的主要差别是 VBA 和 AutoCAD 在同一进程空 间中运行,提供的是具有 AutoCAD 智能的、非常快速的编程环境。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,2/228(W)VBA 也向其他支持 VBA 的应用程序提供应用程序集成。这就意味着 AutoCAD(使用其他应用程序对象库)可以是如 Microsoft Word 或 Excel 之类的其 他应用程序的 Automation 控制程序。 可以单独购买独立开发版的 Visual Basic 6,为 AutoCAD VBA 提供额外的组件,例如外部的数据库引擎和报表编写功能。 在 AutoCAD 中实现 VBA 有四大优点: VBA 及其环境易于学习和使用。 VBA 可与 AutoCAD 在同一进程空间中运行。这使程序执行得非常快。 l 对话框的构造快速而有效。这使开发人员可以构造原型应用程序并迅速收到设计的反馈。 l 工程可以是独立的,也可以嵌入到图形中。这样就为开发人员提供了非常灵活的方式来发布他们的应用程序。 注意Microsoft 未承诺提供 64 位 VBA SDK 库 (.dll)。因此,64 位 AutoCAD 无法再将 VBA 作为进程中组件运行;现在 VBA 组件作为 32 位进程外 COM 组件运行,并为 64 位 AutoCAD VBA 用户提供权宜安排。此安排可能需要对现有 VBA 代码做些更改。此权宜安排将在 AutoCAD 的后续版本中取 消,建议用户将现有 VBA 代码转换为 VB. NET。l l本节内容l VBA 在 AutoCAD 中的实现方式 请将您关于此页内容的评论发送给我们简介 & AutoCAD Visual Basic for Applications (VBA) 接口概述 &VBA 在 AutoCAD 中的实现方式VBA 通过 AutoCAD ActiveX Automation 接口将消息发送到 AutoCAD。AutoCAD VBA 允许 VBA 环境与 AutoCAD 同时运行,并通过 ActiveX Automation 接口对 AutoCAD 进行编程控制。AutoCAD、ActiveX Automation 和 VBA 的这种结合方式不仅为操作 AutoCAD 对象,而且为向其他应用程 序发送或检索数据提供了功能极为强大的接口。 在 AutoCAD 中有三个定义 AcitveX 和 VBA 编程的基本元素。第一个是 AutoCAD 本身,它拥有一个丰富的对象集,其中封装了 AutoCAD 图元、数据和 命令。因为 AutoCAD 是一个设计为具有多层接口的开放架构应用程序,因此熟悉 AutoCAD 编程功能对于有效使用 VBA 来说是非常必要的。如果以前使 用过 AutoLISP 编程来控制 AutoCAD,就应该对 AutoCAD 工具有一定的了解。然而,VBA 的基于对象的处理方式和 AutoLISP 的方式却很不一样。 第二个元素是 AutoCAD ActiveX Automation 接口,它建立与 AutoCAD 对象的消息传递(通讯)。在 VBA 中编程需要对 ActiveX Automation 有基本的 了解。《ActiveX and VBA Reference》中介绍了 AutoCAD ActiveX Automation 接口。即使是有经验的 VB 编程人员也会发现要理解和开发 AutoCAD VBA 应用程序,AutoCAD ActiveX Automation 接口是非常重要的。 第三个元素是 VBA 编程环境,它具有自己的对象集、关键字和常量等,能提供程序流、控制、调试和执行等功能。AutoCAD VBA 帮助包含 Microsoft VBA 扩展帮助,可以通过以下方法从 VBA IDE 中对其进行访问:l l l按键盘上的 F1 键 从 VBA IDE 菜单栏中选择“帮助” 单击 VBA IDE 工具栏上的“?”图标本节内容使用 Microsoft .NET Framework 依赖性和限制 请将您关于此页内容的评论发送给我们l l简介 & AutoCAD Visual Basic for Applications (VBA) 接口概述 & VBA 在 AutoCAD 中的实现方式 & 使用 Microsoft .NET Framework要通过 Microsoft Visual Studio? .NET 完全访问 AutoCAD Automation 对象,请创建以下文件的引用:l lAutoCAD 2009 类型库“acax17enu.tlb”,位于“C:\Program Files\Common Files\Autodesk Shared”目录中。 AutoCAD/ObjectDBX Common 17.0 类型库“axdb17enu.tlb”,位于“C:\Program Files\Common Files\Autodesk Shared”目录中。这些引用将提供以下主要交互操作部件:Autodesk.AutoCAD.Interop.dll(用于 AutoCAD 专用类型)和 Autodesk.mon.dll(用于 ObjectDBXTM 宿主应用程序共享的类型)。Interop 程序集位于全局程序集缓存中,它们会将 Automation 对象映射到 .NET 的对等对象。 引用了类型库之后,可以在 Microsoft Visual Studio .NET 中声明基于 AutoCAD 的变量,如下例所示: Dim objAcad As Autodesk.AutoCAD.Interop.AcadApplication Dim objLine As Autodesk.mon.AcadLine 可以在 AutoCAD 中使用 NETLOAD 命令加载 .NET 应用程序。 要获得有关与 AutoCAD 配合使用 .NET 应用程序的详细信息,请访问 Autodesk 网站的开发人员中心专区。请将您关于此页内容的评论发送给我们简介 & AutoCAD Visual Basic for Applications (VBA) 接口概述 & VBA 在 AutoCAD 中的实现方式 & 依赖性和限制file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,3/228(W)如果在安装 AutoCAD 之后安装了、重新安装了或卸载了 Microsoft Office 或其他 VBA 应用程序,则需要重新安装 AutoCAD 并重新启动系统。请将您关于此页内容的评论发送给我们简介 &AutoCAD ActiveX 和 VBA 一起运行AutoCAD ActiveX/VBA 接口表现出超出其他 AutoCAD API 环境的许多优点:l l l l l速度。通过用 VBA 在进程内运行,ActiveX 应用程序比 AutoLISP 应用程序运行速度要更快。 易用。其编程语言和开发环境易于使用,而且随 AutoCAD 安装。 Windows 互操作性。ActiveX 和 VBA 是为与其他 Windows 应用程序一起使用而设计的,为应用程序之间的信息交流提供了绝佳的途径。 快速建立原型。VBA 可以快速开发界面,为建立应用程序原型提供了一个完善的环境,即使这些应用程序最终将用其他语言开发。 程序员基础。AutoCAD ActiveX 和 VBA 技术可以使 Visual Basic 6 程序员能够自定义 AutoCAD 并为其开发应用程序。请将您关于此页内容的评论发送给我们简介 &本书的结构本手册提供关于用于 AutoCAD 的 ActiveX 和 VBA 应用程序开发的信息。“Getting Started with VBA”和“Develop Applications with VBA”中介绍了使用 VBA 开发应用程序的相关信息。从 VBA 以外的开发环境中使用 ActiveX 的程序员可以跳过这两章。不过,请注意本手册中的所有样例代码均用 VBA 表 示。请将您关于此页内容的评论发送给我们简介 &关于更多信息本手册假定用户具有 Visual Basic 6 编程语言的应用知识,并不重复或替换有关 Visual Basic 6 文档的大量内容。要获得有关 Visual Basic 6 语言或开发 环境使用的详细信息,请参见 Microsoft 开发的 Visual Basic for Applications 帮助文件,该文件可从交互开发环境 (IDE) 的“帮助”菜单中找到。请将您关于此页内容的评论发送给我们简介 &代码样例本手册和 ActiveX and VBA Reference总共包含了超过 800 个的 VBA 子例程样例,这些样例示范了 ActiveX 方法、特性和事件的用法。 AutoCAD Sample 目录中还提供了许多样例应用程序。这些样例应用程序显示了大量的功能,从将 AutoCAD 图形数据提取到 Microsoft Excel 电子表格中 进行绘制,到在电力传输塔中执行压力分析等等。 这些样例还显示了如何组合 Visual Basic for Applications 编程环境的多样性和 AutoCAD ActiveX 接口的功能来创建自定义应用程序。 另外,ActiveX/VBA 开发人员手册和 ActiveX and VBA Reference 中的样例代码可以从帮助文件中复制,再直接粘贴到 AutoCAD VBA 环境中。然后只要 满足以下条件即可执行:AutoCAD 中当前活动的图形必须是在模型空间中打开的空白图形。 运行帮助文件中样例的步骤 1. 2. 3. 4. 将帮助文件中的样例复制到空的 VBA 代码模块中。 验证 AutoCAD 具有打开模型空间的空白图形。 通过输入命令 VBARUN 来打开“宏”对话框。 选择宏,然后按“运行”。 主题“运行宏”中详细介绍了如何运行宏以及“宏”对话框。请将您关于此页内容的评论发送给我们简介 &移植 Automation 工程用户可以通过使用添加到 ActiveX Automation 接口的对象和方法,来使用 AutoCAD 的功能。本节包含适用于使用 Visual Basic for Applications (VBA)、 Visual Basic 6 (VB) 和其他 Automation 兼容的环境创建的 Automation 工程的更改。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w有关使用 AutoCAD 中的功能的详细信息,请参见“使用 AutoCAD 功能”。页码,4/228(W)本节内容新对象 已更改项 l 移植工程的方法 请将您关于此页内容的评论发送给我们l l简介 & 移植 Automation 工程 & 新对象以下是 AutoCAD 2009 中的新对象。有关这些对象的详细信息,请参见《ActiveX and VBA Reference》和 VBA IDE 中的对象浏览器。l l lSortentsTable。包含和控制绘图次序信息。 Table。添加和修改图形中的表。 TableStyle。添加和修改表的格式,例如栅格的可见性、线宽和颜色。此外,AutoCAD 2009 包含图纸集管理器的 Automation 对象。关于这些对象的详细信息,请参见《Sheet Set Objects Reference》。请将您关于此页内容的评论发送给我们简介 & 移植 Automation 工程 & 已更改项本节介绍已更改的现有项。 已更改项 AutoCAD 2004 项 AutoCAD 2009 项 BeginClose 事件 BeginDocClose 事件 Layer 对象 Layer 对象 Layers 集合 Layers 集合 ModelSpace 集合 ModelSpace 集合 PaperSpace 集合 PaperSpace 集合 Block 对象 Block 对象更改说明 可以使用 BeginDocClose 事件防止关 闭图形。 添加 Description 特性和 Used 特性 添加 GenerateUsageData 方法 将 AddTable 方法添加到所有集合和 对象;将 Path 特性添加到 Block 对 象。将 BackgroundFill 特性添加到 MText MText 对象,Text MText 对象,Text 对 对象;将 FieldCode 方法添加到 对象 象 MText 对象和 Text 对象 BatchPlotProgress 特性和 StartBatchMode 特性已废弃。建议将 Plot 对象 Plot 对象 Microsoft .NET 应用程序用于批处理 打印。DisplayPlotPreview 方法不再 支持局部预览 添加 PlotLogFilePath 特性、 PreferencesFiles PreferencesFiles 对 PageSetupOverridesTemplateFile 特 对象 象 性和 QNewTemplateFile 特性 添加 AutomaticPlotLog 特性、 PreferencesOutputPreferencesOutput 对 DefaultPlotToFilePath 特性和 对象 象 ContinuousPlotLog 特性 添加 ModelView 特性、SheetView 特性、LabelBlockId 特性、 Viewport 对象 Viewport 对象 HasSheetView 特性和 SyncModelView 方法 添加 CategoryName 特性、LayoutId View 对象 View 对象 特性、LayerState 特性和 HasVpAssociation 特性请将您关于此页内容的评论发送给我们简介 & 移植 Automation 工程 & 移植工程的方法一般情况下,在 VBA IDE 中或使用 Visual Basic 6 创建的 AutoCAD Automation 工程应与 AutoCAD 2009 一起使用。 AutoCAD 2009 Automation 工程与 AutoCAD Automation 工程使用同一类型库:“acax17enu.tlb”。类型库位于“C:\Program Files\Common Files\Autodesk Shared”目录中。 AutoCAD 2009 Automation 工程对于 CreateObject、GetObject 和 GetInterfaceObject 方法也使用依赖于版本的相同 ProgID。例如,如果要在 AutoCAD Automation 工程中使用 CreateObject 函数,则使用 CreateObject(“AutoCAD.Application.17”)。如果 Automation 工程使用独立于版本的 ProgID,请 将工程更改为使用依赖于版本的 ProgID。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w请将您关于此页内容的评论发送给我们页码,5/228(W)VBA 入门本章介绍 AutoCAD Visual Basic for Applications (VBA) 工程和 VBA 交互式开发环境 (IDE)。尽管大多数 VBA 环境的行为都很类似,但 AutoCAD VBA IDE 有一些独有的特征。还有一些 AutoCAD 命令可以用来加载工程、运行工程或打开 VBA IDE。本章简要介绍 VBA 工程、VBA 命令和 VBA IDE 的使 用。本节内容了解内嵌与全局 VBA 工程 使用 VBA 管理器组织工程 l 处理宏 l 使用 VBA IDE 编辑工程 l 进行初步练习 l 更多信息 l AutoCAD VBA 工程术语 l AutoCAD VBA 命令 请将您关于此页内容的评论发送给我们l lVBA 入门 &了解内嵌与全局 VBA 工程AutoCAD? VBA 工程是代码模块、类模块和窗体的集合,这些模块和窗体共同运行以执行给定的功能。工程可以存储在 AutoCAD 图形中,也可以作为独 立的文件存储。 内嵌工程存储在 AutoCAD 图形中。在 AutoCAD 中打开包含这类工程的图形时,会自动加载它们,这使工程分发变得非常简便。由于内嵌工程只能在所在 的文档中运行,因此其使用受到一些限制,而且不能打开或关闭 AutoCAD 图形。内嵌工程的用户不再需要在运行程序之前查找和加载工程文件。打开图形 时触发的时间日志即是工程内嵌在图形中的一个例子。使用这个宏,用户可以登录并记录处理该图形的时间长度。用户不需要记着在打开图形之前加载工 程,加载会自动完成。 全局工程存储在独立的文件中,由于这类工程可以在任何 AutoCAD 图形中运行并能打开和关闭所有 AutoCAD 图形,因此用途更广,但在打开图形时它不 会被自动加载。用户必须知道哪一个工程文件包含自己需要的宏,然后要先加载该工程文件才能运行宏。然而,全局工程比较容易与其他用户共享,而且它 们还是常用宏的理想库。用户可能会将用于从许多图形中收集 BOM 表的宏存储在工程文件中,这个宏就是全局工程的一个例子。它可以由管理员在工作结 束时运行,并从许多图形中收集信息。 用户可以随时将内嵌工程和全局工程加载到它们的 AutoCAD 任务中。 AutoCAD VBA 工程与独立的 Visual Basic 6 工程二进制不兼容。但是,可以在 VBA IDE 中使用 IMPORT 和 EXPORT VBA 命令在工程之间交换窗体、 模块和类。关于 VBA IDE 的详细信息,请参见使用 VBA IDE 编辑工程。 支持使用 Visual Studio .NET,通过 COM Automation 来驱动和自定义 AutoCAD。请将您关于此页内容的评论发送给我们VBA 入门 &使用 VBA 管理器组织工程使用 VBA 管理器可以查看当前 AutoCAD 任务中加载的所有 VBA 工程。它是一种 AutoCAD 工具,可让用户加载、卸载、保存、创建、内嵌和提取 VBA 工程。 打开 VBA 管理器的步骤 可以从“工具”菜单或在 AutoCAD 中通过调用 VBAMAN 命令打开 VBA 管理器。本节内容加载现有的工程 卸载工程 l 将工程嵌入到图形中 l 从图形中提取工程 l 创建新工程 l 保存工程 请将您关于此页内容的评论发送给我们l lVBA 入门 & 使用 VBA 管理器组织工程 &加载现有的工程file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,6/228(W)将工程加载到 AutoCAD 后,就可以使用所有的公用子例程(也称为宏)。每次打开图形时,内嵌在图形中的工程就会被自动加载,而存储在 DVB 文件中 的工程必须明确加载。 每次加载工程时,都将自动加载此工程引用的任何其他工程。此外,AutoCAD 在启动时会自动加载任何名为 acad.dvb 的工程文件。 加载现有 VBA 工程文件的步骤 1. 在“VBA 管理器”中,使用“加载”选项打开“打开 VBA 工程”对话框。 2. 在“打开 VBA 工程”对话框中,选择要打开的工程文件。“VBA 工程”对话框只能打开有效的 DVB 文件。如果用户试图打开其他类型的文件,则 会收到一条错误信息。 3. 选择“打开”。 用户还可以使用以下任意方法来加载工程文件:l l输入 VBALOAD 命令,该命令会打开“打开 VBA 工程”对话框。 将 DVB 文件从 Windows 资源管理器拖动到 AutoCAD 窗口中打开的图形中。本节内容l 病毒警告 请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA 管理器组织工程 & 加载现有的工程 &病毒警告每当用户加载工程时,都要选择是启用还是禁用工程中的代码,以此作为防范病毒的保护措施。如果用户启用了代码,则代码中的病毒就可以开始执行。如 果用户禁用代码,则仍会加载工程,但是该工程中的所有代码均不能运行。通过将 DVB 文件从 Windows 资源管理器拖动到 AutoCAD 窗口打开的图形中 来加载工程时,将不会显示病毒警告。 关于病毒防护的详细信息,请参见设置工程选项。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA 管理器组织工程 &卸载工程卸载工程可释放内存,并使已加载工程的列表保持在易于管理的长度。 不能卸载内嵌工程或被其他已加载的工程引用的工程。 卸载 VBA 工程的步骤 通过选择要卸载的工程并选择“卸载”可以卸载 VBA 工程,或使用 VBAUNLOAD 命令,该命令会提示您提供要卸载的工程。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA 管理器组织工程 &将工程嵌入到图形中嵌入工程时,是将工程的副本放到图形数据库中。此工程会随着包含它的图形的打开和关闭而被加载和卸载。 一个图形一次只能包含一个内嵌工程。如果图形中已经包含内嵌工程,必须先提取该工程,然后才能将其他工程嵌入到图形中。 将工程嵌入到 AutoCAD 图形中的步骤 1. 打开 VBA 管理器,并选择要嵌入的工程。 2. 选择“嵌入”。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA 管理器组织工程 &从图形中提取工程当提取工程时,即表示从图形数据库中删除该工程,但可以将这个工程保存到外部的工程文件中。如果未将文件保存到外部的工程文件中,工程数据将会被 删除。 从 AutoCAD 图形中提取工程的步骤 1. 打开 VBA 管理器,并选择要从中提取工程的图形。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,7/228(W)2. 选择“提取”。 3. 如果要在外部工程文件中保存工程信息,请在显示“是否要在删除 VBA 工程之前将其输出?”提示时选择“是”。将显示“另存为”对话框,以使 用户可以保存该文件。 如果不希望在外部文件中保存工程信息,请在显示“是否要在删除 VBA 工程之前将其输出?”提示时选择“否”。将从图形中删除工程信息,并且 将不对其进行保存。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA 管理器组织工程 &创建新工程新工程会被创建为未保存的全局工程。创建完成后,可以将它嵌入到图形中或保存到工程文件中。 创建新 VBA 工程的步骤 1. 打开 VBA 管理器。 2. 选择“新建”。 新工程将用默认的名称 ACADProject 创建。要更改工程名,必须进入 VBA IDE 中。关于在 VBA IDE 中命名工程的详细信息,请参见命名工程。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA 管理器组织工程 &保存工程每次保存图形,都将保存其内嵌工程。而全局工程必须使用 VBA 管理器或 VBA IDE 来保存。 使用 VBA 管理器保存工程的步骤 1. 2. 3. 4. 打开 VBA 管理器,并选择要保存的工程。 选择“另存为”。将会打开“另存为”对话框。 选择用于保存该工程的文件的名称。 选择“保存”。请将您关于此页内容的评论发送给我们VBA 入门 &处理宏宏是一个公用的(可执行)子例程。通常每个工程都至少包含一个宏。本节内容使用“宏”对话框 运行宏 l 编辑宏 l 单步执行宏 l 设置工程选项 请将您关于此页内容的评论发送给我们l lVBA 入门 & 处理宏 &使用“宏”对话框通过“宏”对话框,用户可以运行、编辑、删除和创建宏,以及设置 VBA 工程选项。通过从 AutoCAD“工具”菜单中依次选择“宏” “宏”来打开 “宏”对话框,或在 AutoCAD 命令提示中执行 VBARUN。 此对话框显示了有效范围中所有宏的名称。使用“宏位置”的下拉列表可以更改有效范围。此列表指定的是显示了宏的工程或图形。可选择显示以下范围中 的宏:l l l l l所有图形和工程 所有图形 所有工程 AutoCAD 中当前打开的任意单个图形 AutoCAD 中当前加载的任意单个工程通过限制有效范围,可以控制列表中显示的宏名称的数目。如果加载的图形和工程中有很多的宏,就可以使用以上方式控制显示。 创建新宏的步骤file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w1. 打开“宏”对话框,然后输入新宏的名称。 2. 在“宏位置”下拉列表中,选择将创建新宏的工程。 3. 选择“创建”。 如果指定名称的宏已经存在,将会询问是否要替换现有的宏。 如果在提示时选择“是”,现有宏的代码将会被删除,并且以指定的名称创建新的空白宏。 如果选择“否”,将会返回到“宏”对话框,要求为此宏输入新的名称。 如果选择“取消”,“宏”对话框消失,而且不会创建任何新宏。 删除宏的步骤 1. 打开“宏”对话框并选择要删除的宏。 2. 选择“删除”。将提示用户确认删除操作。 3. 出现提示时,选择“是”删除宏,或者选择“否”取消删除。请将您关于此页内容的评论发送给我们页码,8/228(W)VBA 入门 & 处理宏 &运行宏运行宏将在当前 AutoCAD 任务上下文中执行宏代码。当前活动图形被认为是宏开始执行时焦点所在的打开图形。对于全局工程中的宏,ThisDrawing 对象 的所有 VBA 引用都将指向当前的活动图形。对于内嵌工程中的宏,ThisDrawing 对象总是指向内嵌了宏的图形。 从“宏”对话框运行宏的步骤 1. 打开“宏”对话框并选择要运行的宏。 2. 选择“运行”。 从 VBA IDE 运行宏的步骤l从“运行”菜单中选择“运行宏”菜单选项。 如果没有任何现成的宏或窗体,将会显示一个对话框供用户选择要运行的宏。 如果当前存在某个给定的宏(光标位于其过程中),则会执行该宏。请将您关于此页内容的评论发送给我们VBA 入门 & 处理宏 &编辑宏编辑宏会打开 VBA IDE,并在“代码”窗口中打开选中的宏。关于在 VBA IDE 中编辑宏的详细信息,请参见使用 VBA IDE 编辑工程。 编辑宏的步骤 1. 打开“宏”对话框并选择要编辑的宏。 2. 选择“编辑”。请将您关于此页内容的评论发送给我们VBA 入门 & 处理宏 &单步执行宏单步执行宏会开始执行宏,然后在第一行代码处中止执行。此时,VBA IDE 打开,并在“代码”窗口中显示所选宏中要执行的行。 单步执行宏的步骤 1. 在“宏”对话框中,选择要单步运行进入的宏。 2. 选择“单步执行”。请将您关于此页内容的评论发送给我们VBA 入门 & 处理宏 &设置工程选项AutoCAD VBA 工程有三个选项可以设置:l启用自动嵌入file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wl l页码,9/228(W)允许出错时中断 启用宏病毒防护启用自动嵌入 自动嵌入功能在打开图形时自动为所有图形创建内嵌 VBA 工程。 允许出错时中断 发生错误时,此选项允许 VBA 进入“中断”模式。“中断”模式会在交互式开发环境中临时终止程序的执行。在“中断”模式中,用户可以检查、调试、 重置、单步执行或继续执行程序。 如果启用此选项,执行 VBA 宏期间出现无法处理的错误将会暂停宏的执行,并在 VBA IDE 中显示宏中发生错误的位置。 禁用此选项时,如果执行 VBA 宏期间出现未捕获的错误,则会显示一个消息框,警告用户发生错误,然后结束宏的执行。 启用宏病毒防护 每当用户打开可能包含宏病毒的图形时,病毒防护机制都将显示内置警告信息。 设置 AutoCAD VBA 工程选项的步骤 1. 2. 3. 4. 从“工具”菜单中,依次选择“宏” “宏”以打开“VBA 宏”对话框。 在“VBA 宏”对话框中,选择“选项”打开“选项”对话框。 在“选项”对话框中,选择要启用的选项。 选择“确定”。请将您关于此页内容的评论发送给我们VBA 入门 &使用 VBA IDE 编辑工程将工程加载到 AutoCAD 中后,用户就可以使用 VBA 交互式开发环境来编辑该工程的代码、窗体和引用。而且还可以在 VBA IDE 中调试和运行工程。打 开之后,使用 VBA IDE 可以访问所有已加载的工程。 按需打开 VBA IDE 的步骤 用户可以从命令行或菜单栏打开 VBA IDE。l在命令行中输入 VBAIDE,或从“工具”菜单中依次选择“宏” “Visual Basic 编辑器”。本节内容查看工程信息 定义工程中的组件 l 输入现有组件 l 编辑组件 l 命名工程 l 保存工程 l 引用其他 VBA 工程 l 设置 VBA IDE 选项 请将您关于此页内容的评论发送给我们l lVBA 入门 & 使用 VBA IDE 编辑工程 & 查看工程信息VBA IDE 包含了“工程”窗口,其中显示了所有已加载的 VBA 工程列表。这个窗口还显示工程中包含的代码、类和窗体模块,与工程关联的文档,从工程 引用的所有其他 VBA 工程,以及工程的实际位置(路径)。 “工程”窗口有自己的工具栏,可用来打开工程的各个组件进行编辑。使用“查看代码”按钮可打开选定模块的代码。使用“查看对象”按钮可显示选定的 对象,例如窗体。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,10/228(W)默认情况下,“工程”窗口是可见的。如果此窗口不可见,请从“视图”菜单中选择“工程”窗口,或按 CTRL+R 组合键。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件每个工程可以包含许多不同的组件。工程可以包含的组件有对象、窗体、标准模块、类模块和引用。本节内容对象 窗体 l 标准模块 l 类模块 l 引用 l 添加新组件 请将您关于此页内容的评论发送给我们l lVBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件 &对象对象组件代表 VBA 代码将访问的对象或文档的类型。对于 AutoCAD VBA 项目,此对象表示当前 AutoCAD 图形。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件 &窗体窗体组件包含由用户构造的、用于工程的自定义对话框。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件 &标准模块代码模块组件包含用户的常用过程和函数。标准模块也称为代码模块,或简称为模块。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件 &类模块类模块组件包含用户自己定义的所有对象(定义为类)。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w请将您关于此页内容的评论发送给我们页码,11/228(W)VBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件 &引用引用组件包含对其他工程或库的所有引用。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 定义工程中的组件 & 添加新组件添加新组件将在工程中创建空白组件。用户可以将新的模块、窗体和类模块添加到自己的工程中。用户需要自己更新所有的组件特性(例如组件名称),并 填入适当的代码。在命名新组件时,请注意其他开发人员在未来的应用程序中可能会使用您的组件。请遵循开发团队的命名惯例。 向工程中添加新组件的步骤 1. 在 VBA IDE 的“工程”窗口中,选择要向其中添加组件的工程。 2. 从“插入”菜单中选择“用户窗体”、“模块”或“类模块”来向工程中添加新组件。 新组件将会被添加到工程中并显示在“工程”窗口中。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 输入现有组件输入功能使用户可以向工程中添加现有的组件。用户可以输入窗体、模块或类模块。窗体输入为 FRM 文件,模块输入为 BAS 文档,类模块输入为 CLS 文件。 在输入组件文件时,会将输入的文件的副本添加到工程中,原始文件保持不变。用户对输入组件所做的更改不会改变原始的组件文件。 如果输入的组件与现有组件同名,则组件添加到工程中时会在其名称后附加编号。 输入的组件将添加到工程中并显示在“工程”窗口中。要编辑组件的特性,请在“工程”窗口选择该组件。选定组件的特性将会列在“特性”窗口中并可以 对其进行编辑。 向工程中输入现有组件的步骤 1. 在 VBA IDE 的“工程”窗口中,选择要向其中添加组件的工程。 2. 从“文档”菜单中选择“输入文件”来打开“输入文件”对话框。 3. 在“输入文件”对话框中,选择要输入的文件后按“打开”。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 &编辑组件在 VBA IDE 中,可以编辑标准模块、类模块和窗体。标准模块和类模块均在“代码”窗口中编辑;窗体则在“用户窗体”窗口中使用特殊的的工具箱进行 编辑。 由于可以打开的“代码”窗口与拥有的模块数目一致,因此可以很容易地查看不同窗体或模块中的代码,并在它们之间互相复制和粘贴。 编辑工程组件的步骤 1. 在 VBA IDE 的“工程”窗口中,选择要编辑的组件。 2. 在“工程”窗口中,选择“查看代码”按钮打开“代码”窗口。 3. 在“工程”窗口中,选择“查看对象”按钮打开“用户窗体”窗口和关联的工具箱。 访问与窗体关联的代码的步骤l要访问与某个控件关联的代码,请双击“窗体”窗口中的任意控件。“代码”窗口中将打开与该控件关联的代码。本节内容使用“代码”窗口 使用“用户窗体”窗口 请将您关于此页内容的评论发送给我们l lfile://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,12/228(W)VBA 入门 & 使用 VBA IDE 编辑工程 & 编辑组件 &使用“代码”窗口“代码”窗口包含两个下拉列表、一个拆分栏、一个边界指示器栏、一个“完全视图”图标和一个“过程视图”图标。 “代码”窗口顶部的两个下拉列表显示当前的对象和过程。更改这些下拉列表中的对象或过程,就可以在工程中来回移动。 “代码”窗口右侧的拆分栏可以水平拆分窗口,只要向下拖动此栏即可创建另一个窗格。使用此功能,可以同时查看同一个模块的两个不同部分。要关闭窗 格,只需将拆分栏拖回初始位置即可。 边界指示器栏位于“代码”窗口的左下方,用于显示编辑和调试代码期间用到的边界指示器。 “完全视图”和“过程视图”图标位于“代码”窗口的左下角,使用它们可以在一次仅显示一个过程与一次查看整个模块之间来回切换。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 编辑组件 &使用“用户窗体”窗口通过“用户窗体”窗口,可以在工程中创建自定义对话框。 要添加控件,只需从工具箱中将所需的控件拖放到窗体上即可。从“选项”对话框的“常规”选项卡中,可以将控件设置成与窗体栅格对齐。从“选项”对 话框的“常规”选项卡中,还可以查看窗体栅格,以及确定栅格线的大小。(关于“选项”对话框的详细信息,请参见设置 VBA IDE 选项。) 设计好的每个窗体都自动拥有“最大化”、“最小化”和“关闭”按钮,这些按钮是预先设计好的。 要向控件中添加代码,只需双击已放置在窗体上的控件即可。这将会打开控件的“代码”窗口。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 &命名工程工程名称与存储该工程的 .dvb 文件名称是不同的。在保存工程时创建存储该工程的 .dvb 文件的名称。而工程名称则在 VBA IDE 的“特性”窗口中设置。 如果用户没有设置工程名和文件名,AutoCAD 会自动指定以下默认名称: 工程名:ACADProject 文件名:Project.dvbfile://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w更改工程名称的步骤 1. 在 VBA IDE 的“工程”窗口中,选择要更改的工程。 2. 在“特性”窗口中编辑工程的 Name 特性。页码,13/228(W)更改工程的文件名的步骤 1. 在 VBA IDE 中,从“文件”菜单中选择“保存”选项。 2. 在“另存为”对话框中输入工程文件的新名称和位置。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 &保存工程在 AutoCAD 中,没有为 VBA 工程提供显式 SAVE 命令。SAVE 命令位于 VBA IDE 的“文件”菜单和 VBA 管理器中。当发生以下任何情况时,对 VBA 工程进行任何更改,都将出现标准的“保存 VBA 工程”对话框: 从 VBA IDE 中选择 SAVE 命令。 选择了 VBA 管理器中的“另存为”选项。 l AutoCAD 任务即将结束或退出而且未保存 VBA 工程。 注意在保存工程之前,已为工程指定了默认的文件名 project.dvb。保存工程时,为工程文件指定一个新的名称非常重要。如果以默认文件名 project.dvb 保 存工程,则再也不能创建新的空工程。因为每次创建新工程时,实际上都将加载名为 project.dvb 的已保存的工程。l l请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 引用其他 VBA 工程在 VBA 工程之间引用,使开发人员可以更容易地共享代码。开发人员可以创建常用宏的库,然后在需要时引用该库。这样可以集中放置和支持共享代码, 让许多开发人员使用该代码。 成功引用另一个工程后,VBA IDE 的“工程”窗口中将显示一个新文件夹。这个新文件夹的标题为“引用”,其中包含引用的工程名称。 引用某个工程后,就可以使用该工程中的任何公用代码或窗体组件。 当引用了其他工程的工程被加载到 AutoCAD 中时,被引用的工程也将自动加载到 AutoCAD 中。被引用的工程不能先行关闭,必须先关闭引用它的所有工 程。 用户不能创建循环引用。也就是说,引用的工程不能包含对此工程的引用。如果用户意外地创建了循环引用,VBA 将会通知用户。 工程引用是 Microsoft VBA 的标准功能,AutoCAD 中并没有额外扩充此功能。可以在 Microsoft VBA 帮助文件中找到引用工程的更多信息。可以从 VBA IDE 中的“帮助”菜单打开 Microsoft VBA 帮助。 注意不能从其他应用程序引用内嵌工程或 VBA 工程。 引用其他 VBA 工程的步骤 1. 2. 3. 4. 5. 在 VBA IDE 的“工程”窗口中,选择要向其中添加引用的工程。 从“工具”菜单中选择“引用”选项打开“引用”对话框。 在“引用”对话框中,按“浏览”按钮打开“添加引用”对话框。 在“添加引用”对话框中,选择要引用的工程文件,然后按“打开”按钮。 在“添加引用”对话框中选择“确定”按钮完成引用的添加。请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 设置 VBA IDE 选项file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w可以使用“选项”对话框来更改 VBA IDE 的特征。要打开“选项”对话框,请使用“工具”菜单然后选择“选项”。 “选项”对话框包含四个选项卡:“编辑器”、“编辑器格式”、“基本”和“固定”。页码,14/228(W)本节内容编辑器 编辑器格式 l 基本 l 固定 请将您关于此页内容的评论发送给我们l lVBA 入门 & 使用 VBA IDE 编辑工程 & 设置 VBA IDE 选项 &编辑器“编辑器”选项卡指定“代码”窗口和“工程”窗口的设置。 代码设置包括:l l l l l l l自动语法检查 需要变量声明 自动列表成员 自动快速信息 自动数据提示 自动缩进 制表符宽度窗口设置包括:l l l可使用拖放方式进行编辑 默认为完全模块视图 过程分隔符显示请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 设置 VBA IDE 选项 &编辑器格式“编辑器格式”选项卡指定代码的外观。 可以:l l l l l l l l改变代码的颜色 改变文字列表项 改变前景 改变背景 改变边界指示器 改变文字字体和大小 显示或隐藏边界指示器 显示或隐藏设置的文字样例请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 设置 VBA IDE 选项 &基本“基本”选项卡指定当前 VBA 工程的设置、错误处理和编译设置。 可以:l l l l l l改变窗体栅格的栅格设置 显示或隐藏工具提示 设置自动收拢窗口 选择接收状态丢失通知 确定处理错误的方法 将工程设置为根据需要编译或执行后台编译请将您关于此页内容的评论发送给我们VBA 入门 & 使用 VBA IDE 编辑工程 & 设置 VBA IDE 选项 &固定file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w通过“固定”选项卡,可以选择需要固定的窗口。请将您关于此页内容的评论发送给我们页码,15/228(W)VBA 入门 &进行初步练习现在,您已经学习了 AutoCAD VBA 编程的基本知识,接下来,让我们进行一个创建简单的“你好,世界”的练习。在此练习中,将会创建新的 AutoCAD 图形,并向该图形中添加一行文字,然后保存图形,全部操作均通过 VBA 来完成。 创建“你好,世界”文字对象的步骤 1. 从 AutoCAD 命令行输入以下命令来打开 VBA IDE: 命令:VBAIDE 2. 3. 4. 5. 6. 从 VBA IDE 的“查看”菜单中选择“代码”选项打开“代码”窗口。 从 VBA IDE 的“插入”菜单中选择“过程”选项,在工程中创建新过程。 当提示输入过程信息时,输入名称,例如 HelloWorld。请确保选定的“类型”是 Sub,选定的“作用域”是 Public。 选择“确定”。 在行 Public Sub HelloWorld() 和行 End Sub 之间输入以下代码(用于打开新图形)。 ThisDrawing.Application.Documents.Add 7. 紧接在步骤 6 输入的代码之后输入以下代码(用于创建字符串和定义其插入位置)。 Dim insPoint(0 To 2) As Double ' 声明插入点 Dim textHeight As Double ' 声明文字高度 Dim textStr As String ' 声明字符串 Dim textObj As AcadText ' 声明文字对象 insPoint(0) = 2 ' 设置插入点的 X 坐标 insPoint(1) = 4 ' 设置插入点的 Y 坐标 insPoint(2) = 0 ' 设置插入点的 Z 坐标 textHeight = 1 ' 将文字高度设置为 1.0 textStr = &你好,世界!&' 设置字符串 ' 创建 Text 对象 Set textObj = ThisDrawing.ModelSpace.AddText _ (textStr, insPoint, textHeight) 8. 紧接在步骤 7 中的输入代码之后输入以下代码(用于保存图形)。 ThisDrawing.SaveAs(&Hello.dwg&) 9. 从 VBA IDE 的“运行”菜单中选择“运行子程序或用户窗体”选项来运行程序。 当程序运行完时,AutoCAD 应用程序将置于最前。您应该能够看到图形中显示的文字“你好,世界!”。图形的名称应为“Hello.dwg”。请将您关于此页内容的评论发送给我们VBA 入门 &更多信息关于 VBA IDE 和 VBA 编程语言的详细信息,请参见 Microsoft 提供的帮助文件。要访问 Microsoft 帮助文件,请从 VBA IDE 的“帮助”菜单中选择 “Microsoft Visual Basic 帮助”。请将您关于此页内容的评论发送给我们VBA 入门 &AutoCAD VBA 工程术语file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w全局工程 存储在 .dvb 文件中的 VBA 工程。 内嵌工程 存储在 AutoCAD 图形中的 VBA 工程。 一般文档 没有包含 VBA 内嵌工程的 AutoCAD 图形。 智能文档 包含一个或多个 VBA 内嵌工程的 AutoCAD 图形。 当前工程 VBA IDE 中当前选定的工程。 ThisDrawing页码,16/228(W)ThisDrawing 是 VBA 编程术语,用来代表当前的图形。对于全局工程,ThisDrawing 通常是指 AutoCAD 中的活动文档。对于内嵌工程,ThisDrawing 则是指包含此工程的文档。 VBA IDE VBA 交互式开发环境。此应用程序可以用来编辑工程中的代码和窗体,或者从其他工程复制代码和窗体。还可以设置对其他应用程序对象模型的引用。 VBA 管理器 VBA 管理器用于管理工程。用户可以创建、删除、内嵌或提取工程。还可以查看有哪些工程内嵌在打开的图形中(如果有的话)。 “宏”对话框 “宏”对话框可以用来运行、删除和创建新宏,以及访问 VBA 工程选项。请将您关于此页内容的评论发送给我们VBA 入门 &AutoCAD VBA 命令VBAIDE 激活 VBA IDE。 VBA IDE 可以用来以交互方式编辑、运行和调试程序。虽然 VBA IDE 只能在 AutoCAD 运行时被调用,但是可以独立于 AutoCAD 应用程序窗口对它 进行最小化、打开和关闭操作。 VBALOAD 将 VBA 工程加载到当前的 AutoCAD 任务中。 VBARUN 从“宏”对话框或 AutoCAD 命令行中运行 VBA 宏。 VBAUNLOAD 从当前 AutoCAD 任务中卸载 VBA 工程。 如果 VBA 工程被修改过且尚未保存,将会出现“保存工程”对话框(或对等的命令行)询问用户是否要保存该工程。 VBAMAN 显示 VBA 管理器,供用户查看、创建、加载、关闭、内嵌和提取工程。 VBASTMT 从 AutoCAD 命令行执行 VBA 语句。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,17/228(W)要想有效地使用 AutoCAD ActiveX Automation,应该熟悉与要开发的应用程序类型相关的 AutoCAD 图元、对象和功能。对对象的图形和非图形特性了解 得越多,通过 AutoCAD ActiveX Automation 来操作这些特性就越简单。 请记住,只需按 F1 键即可访问 AutoCAD ActiveX Automation 帮助文件。如果在使用某个特定对象、方法或特性时遇到问题,请在 VBA IDE 中亮显该对 象、方法或特性,然后按 F1 键。本节内容了解 AutoCAD 对象模型 访问对象层次结构 l 集合对象 l 了解特性和方法 l 了解上级对象 l 定位类型库 l 在方法和特性中使用变量 l 使用其他编程语言 请将您关于此页内容的评论发送给我们l lActiveX Automation 基础知识 &了解 AutoCAD 对象模型对象为 AutoCAD? ActiveX? 接口的主要构件。每一个显露的对象均精确代表一个 AutoCAD 组件。AutoCAD ActiveX 接口中有许多不同类型的对象。例 如:l l l l l直线、圆弧、文字和标注等图形对象都是对象。 线型与标注样式等样式设置都是对象。 图层、编组和块等组织结构都是对象。 视图与视口等图形显示都是对象。 甚至图形和 AutoCAD 应用程序本身也是对象。对象按照分层结构来组织,其根是 Application 对象。这种层次结构的视图称为“对象模型”。对象模型给出了上级对象与下级对象之间的访问关系。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,18/228(W)本节内容l l lApplication 对象 Document 对象 集合对象file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w图形对象和非图形对象 Preferences、Plot 和 Utility 对象 l 使用新增 AutoCAD 功能 请将您关于此页内容的评论发送给我们l l页码,19/228(W)ActiveX Automation 基础知识 & 了解 AutoCAD 对象模型 &Application 对象Application 对象是 AutoCAD ActiveX Automation 对象模型的根对象。通过 Application 对象,用户可以访问任何其他的对象或任何对象指定的特性或方 法。 例如,Application 对象具有 Preferences 特性,该特性可以返回 Preferences 对象。通过此对象可以访问“选项”对话框中存储在注册表中的设置。 (DatabasePreferences 对象包含存储在图形中的设置,稍后将会讨论这些内容。)通过 Application 对象的其他特性,用户可以访问与应用程序相关的数 据,例如应用程序的名称和版本,以及 AutoCAD 大小、位置和可见性。Application 对象的方法可以执行与应用程序相关的操作,例如列表显示、加载和卸 载 ADS 与 ARX 应用程序,以及退出 AutoCAD。 Application 对象还提供指向 AutoCAD 图形(通过 Documents 集合)、AutoCAD 菜单和工具栏(通过 MenuBar 和 MenuGroups 集合)以及 VBA IDE (通过 VBE 特性)的链接。Application 对象还是 ActiveX 接口的全局对象,这表示 Application 对象的所有方法和特性都可以用于全局名称空间。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 了解 AutoCAD 对象模型 &Document 对象Document 对象(实际上就是 AutoCAD 图形)可以在 Documents 集合中找到,通过它,可以访问所有图形和大部分非图形 AutoCAD 对象。通过 ModelSpace 和 PaperSpace 集合可以访问图形对象(直线、圆、圆弧等),而通过具有类似名称的集合(例如 Layers、Linetypes 和 TextStyles)则可 以访问非图形对象(图层、线型、文本样式等)。通过 Document 对象还可以访问 Plot 和 Utility 对象。 要访问图形特性,请使用 Document 对象的 SummaryInfo 特性。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,20/228(W)请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 了解 AutoCAD 对象模型 &集合对象AutoCAD 将大部分对象进行编组,组成集合。虽然这些集合包含了不同类型的数据,但是可以使用相似的技术来处理它们。每一个集合都提供了向其中添 加对象的方法。大多数集合是通过 Add 方法完成的。但添加图元对象通常使用名为 Add&图元名& 的方法。例如,要添加直线,请使用 AddLine 方法。 集合还有一些其他的常用方法和特性。Count 特性用于获取集合中的对象个数(从零开始)。Item 方法用于获取集合中的任何对象。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 了解 AutoCAD 对象模型 &图形对象和非图形对象图形对象(也称为图元)是组成图形的可见对象(例如直线、圆、光栅图像等)。要创建这些对象,请使用相应的 Add&Entityname& 方法。要修改或查询 这些对象,请使用对象本身的方法或特性。每一个图形对象都拥有允许应用程序执行大部分 AutoCAD 编辑命令(例如复制、删除、移动、镜像等)的方 法。这些对象还提供了一些方法,用来设置和检索对象的扩展数据,亮显和更新对象,以及检索对象边框。图形对象具有诸如 Layer、Linetype、Color 和 Handle 之类的典型特性。还具有一些特有的特性,它们因对象类型不同而有所不同,例如 Center、Radius 和 Area。 非图形对象是指属于图形的一部分但不可见的(提示性的)对象,例如 Layers、Linetypes、DimStyles、SelectionSets 等。要创建这些对象,请使用其上 级集合对象的 Add 方法。要修改或查询这些对象,请使用对象本身的方法或特性。每一个非图形对象都有用于特定目的的方法和特性,都有设置和检索扩 展数据以及删除自己的方法。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 了解 AutoCAD 对象模型 &Preferences、Plot 和 Utility 对象在 Preferences 对象下有一组对象,分别对应“选项”对话框中的一个选项卡。这些对象提供对“选项”对话框中所有存储在注册表中的设置的访问。 DatabasePreferences 对象包含存储在图形中的设置。还可以利用 SetVariable 和 GetVariable 方法设置和修改选项(以及不属于“选项”对话框的系统变 量)。关于设置选项的详细信息,请参见设置 AutoCAD 系统配置。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,21/228(W)可以通过 Plot 对象访问“打印”对话框中的设置,而且应用程序可以通过此对象使用各种方法打印图形。关于打印的详细信息,请参见打印图形。 Utility 对象提供用户输入和转换函数。用户输入函数是提示用户在 AutoCAD 命令行中输入各种类型的数据(例如字符串、整数、实数、点等)的方法。转 换函数是操作 AutoCAD 特有的数据类型(例如点和角度)以及处理字符串和数值的方法。关于用户输入函数的详细信息,请参见提示用户输入。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 了解 AutoCAD 对象模型 &使用新增 AutoCAD 功能如果 Automation 工程使用了早期 AutoCAD 版本不具有的功能,则必须明确地声明要在工程中使用的 AutoCAD 接口。 如果 Automation 工程包含接口的明确声明,并且这些接口是 AutoCAD 特定版本中的新增接口,请勿在 AutoCAD 的较早版本中使用该工程。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 &访问对象层次结构从 VBA 内访问对象层次结构比较容易,因为 VBA 与当前的 AutoCAD 任务在同一个进程内运行,所以不需要使用额外的步骤将其连接到应用程序。 VBA 通过 ThisDrawing 对象提供指向当前 AutoCAD 任务中活动图形的链接。使用 ThisDrawing,用户可以快速访问当前的 Document 对象及其所有方法 和特性,还可以访问层次结构中的所有其他对象。 ThisDrawing 用于全局工程时,通常是指 AutoCAD 中的活动文档。ThisDrawing 用于内嵌工程时,通常是指包含该工程的文档。例如,全局工程中的以下 代码行将保存 AutoCAD 中当前活动的所有图形: ThisDrawing.Save本节内容l 引用对象层次结构中的对象 l 访问 Application 对象 请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 访问对象层次结构 &引用对象层次结构中的对象用户可以直接或通过自己定义的变量来引用对象。要直接引用对象,请将对象包含在调用层次结构中。例如,下列语句在模型空间中添加一条直线。请注 意,层次结构从 ThisDrawing 开始,再转到 ModelSpace 对象,然后调用 AddLine 方法: Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double Dim LineObj as AcadLine startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0 endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0 Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint) 要通过用户定义的变量引用对象,请首先将变量定义为所需类型,然后设置为相应的对象。例如,以下代码定义类型为 AcadModelSpace 的变量 (moSpace) 并将其设置为等于当前的模型空间: Dim moSpace As AcadModelSpace Set moSpace = ThisDrawing.ModelSpace 以下语句利用该用户定义的变量将直线添加到模型空间中:file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wDim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double Dim LineObj as AcadLine startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0 endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0 Set LineObj = moSpace.AddLine(startPoint,endPoint) 检索模型空间中的第一个图元页码,22/228(W)本例返回模型空间中的第一个图元对象,类似的代码还可以用来检索图纸空间中的第一个图元。注意:可以将所有的图形对象定义为 AcadEntity 对象: Sub Ch2_FindFirstEntity() ' 本例返回模型空间中的第一个图元 On Error Resume Next Dim entity As AcadEntity If ThisDrawing.ModelSpace.count && 0 Then Set entity = ThisDrawing.ModelSpace.Item(0) MsgBox entity.ObjectName + _ & is the first entity in model space.& 否则 MsgBox &There are no objects in model space.& End If End Sub请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 访问对象层次结构 &访问 Application 对象通过 Document 对象的 Application 特性可以访问 Application 对象。在对象层次结构中,Application 对象位于 Document 对象的上方。 通过 ThisDrawing 对象可以访问 Document 对象。例如,以下代码行可以更新应用程序: ThisDrawing.Application.Update请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 &集合对象集合对象是一种预定义的对象,包含相似对象的所有实例(即它是相似对象所有实例的上级对象)。以下是集合对象列表: 集合 包含当前 AutoCAD 任务中打开的所有文档。 ModelSpace 集合 包含模型空间中的所有图形对象(图元)。 PaperSpace 集合 包含活动图纸空间布局中的所有图形对象(图元)。 Block 对象 包含特定块定义中的所有图元。 Blocks 集合 包含图形中的所有块。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wDictionaries 集合 包含图形中的所有词典。 DimStyles 集合 包含图形中的所有标注样式。 FileDependencies 集合 包含“文件依赖性”列表中的所有项。 Groups 集合 包含图形中的所有编组。 Hyperlinks 集合 包含给定图元的所有超链接。 Layers 集合 包含图形中的所有图层。 Layouts 集合 包含图形中的所有布局。 Linetypes 集合 包含图形中的所有线型。 MenuBar 集合 包含 AutoCAD 中当前显示的所有菜单。 MenuGroups 集合 包含 AutoCAD 当前加载的所有菜单和工具栏。 PlotConfigurations 集合 包含图形中的命名打印设置。 RegisteredApplications 集合 包含图形中所有注册的应用程序。 SelectionSets 集合 包含图形中的所有选择集。 TextStyles 集合 包含图形中的所有文字样式。 UCSs 集合 包含图形中的所有用户坐标系 (UCS)。 Views 集合 包含图形中的所有视图。 Viewports 集合 包含图形中的所有视口。页码,23/228(W)本节内容访问集合 向集合对象中添加新的成员 l 遍历集合对象 l 删除集合对象的成员 请将您关于此页内容的评论发送给我们l lActiveX Automation 基础知识 & 集合对象 &访问集合file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,24/228(W)大部分的集合对象都是通过 Document 对象访问的。对于每一个集合对象,Document 对象都包含一个相应的特性。例如,以下代码定义一个变量,并将 其设置为当前图形的 Layers 集合: Dim layerCollection as AcadLayers Set layerCollection = ThisDrawing.Layers Documents、MenuBar 和 MenuGroups 集合都可以通过 Application 对象来访问。对于这些集合,Application 对象都包含相应的特性。例如,以下代码定 义一个变量,并将其设置为应用程序的 MenuGroups 集合: Dim MenuGroupsCollection as AcadMenuGroups Set MenuGroupsCollection = ThisDrawing.Application.MenuGroups请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 集合对象 &向集合对象中添加新的成员要向集合中添加新的成员,请使用 Add 方法。例如,以下代码创建一个新图层,并将其添加到 Layers 集合中: Dim newLayer as AcadLayer Set newLayer = ThisDrawing.Layers.Add(&MyNewLayer&)请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 集合对象 &遍历集合对象要选择集合对象的特定成员,请使用 Item 方法。Item 方法需要一个标识符,该标识符既可以是指定集合内项目位置的索引号,也可以是代表项目名称的字 符串。 Item 方法是集合的默认方法。如果引用集合时未指定方法名称,将使用 Item 方法。以下语句作用相同: ThisDrawing.Layers.Item(&ABC&) ThisDrawing.Layers(&ABC&) 注意请勿在使用 For Each 机制遍历集合的同时对任意对象使用图元编辑方法(例如复制、阵列、镜像等)。请在遍历完成后再尝试编辑集合中的对象,或 者创建临时数组并将其设置为等于该集合,然后遍历复制的数组并执行所需的编辑操作。 遍历 Layers 集合 本例遍历集合,并显示集合中所有图层的名称: Sub Ch2_IterateLayer() ' 遍历集合 On Error Resume Next Dim I As Integer Dim msg As String msg = && For I = 0 To ThisDrawing.Layers.count - 1 msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLf Next MsgBox msg End Sub 查找名为 MyLayer 的图层 本例引用名为 MyLayer 的图层,如果图层不存在,则发出消息: Sub Ch2_FindLayer() ' 使用 Item 方法查找名为 MyLayer 的图层file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wOn Error Resume Next Dim ABCLayer As AcadLayer Set ABCLayer = ThisDrawing.Layers(&MyLayer&) If Err && 0 Then MsgBox &The layer 'MyLayer' does not exist.& End If End Sub请将您关于此页内容的评论发送给我们页码,25/228(W)ActiveX Automation 基础知识 & 集合对象 &删除集合对象的成员要删除特定的标注样式,请使用成员对象的 Delete 方法。例如,以下代码删除图层 ABC: Dim ABCLayer as AcadLayer Set ABCLayer = ThisDrawing.Layers.Item(&ABC&) ABCLayer.Delete 删除某个对象后,不能在程序中再试图访问该对象。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 &了解特性和方法每个对象都具有关联的特性和方法。特性描述一个对象的各个方面,方法指可以在对象上执行的操作。创建对象之后,用户可以通过其特性和方法来查询和 编辑该对象。 例如,Circle 对象具有 Center 特性。此特性代表圆心处的三维世界坐标系坐标。要更改圆心,只需将此特性设置为新坐标即可。Circle 对象还具有 Offset 方法。使用此方法可以在距离现有圆的指定偏移距离处创建一个新对象。要查看 Circle 对象的所有特性和方法列表,请参见 AutoCAD《ActiveX and VBA Reference》中的 Circle 对象。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 &了解上级对象每一个对象都有一个永久链接的上级对象。所有的对象都是从一个称为根对象的上级对象中产生的。沿着从根对象到子对象的链接,用户可以访问接口中的 所有对象。另外,这些对象具有称为 Application 的特性,该特性直接链接回根对象。 AutoCAD 接口的根对象为 AutoCAD 应用程序。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 &定位类型库类型库包含通过 Automation 对象显示的对象、特性和方法。类型库是一个文件或是文件的一部分,用于描述一个或多个对象的类型。 类型库不存储对象,只存储信息。通过访问类型库,应用程序和浏览器可以确定对象的特征,例如对象支持的接口以及每个接口成员的名称和地址。 在使用由应用程序显示的 Automation 对象之前,必须先引用其类型库。VBA IDE 中自动设置了此引用。对于其他交互式开发环境,则必须创建 AutoCAD 类型库文件“acax17enu.tlb”的引用,该文件位于“C:\Program Files\Common Files\Autodesk Shared”目录中。要在 VBA IDE 或其他环境中访问图纸集管 理器对象,则必须创建 AcSmComponents17 1.0 类型库文件“AcSmComponents17.tlb”的引用,该文件位于“C:\Program Files\Common Files\Autodesk Shared”目录中。 可以在未引用应用程序的类型库的情况下使用应用程序的对象。不过,最好还是添加类型库引用,原因如下:l可以直接访问全局访问函数而无需验证。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wl l页码,26/228(W)可以在编译时检查函数、特性和方法调用的正确性,从而在运行时更快地执行。 可以声明库中已定义类型的变量,提高运行时可靠性和可读性。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 &在方法和特性中使用变量ActiveX Automation 使用变量来传递数组数据。这可能会使初学者感到困惑,但在了解基础知识之后,应该变得容易一些。另外,AutoCAD ActiveX Automation 还提供了帮助用户转换数据类型的实用程序。本节内容什么是变量? 使用变量作为数组数据 l 将数组转换为变量 l 解释变量数组 请将您关于此页内容的评论发送给我们l lActiveX Automation 基础知识 & 在方法和特性中使用变量 &什么是变量?变量是一种特殊的数据类型,可以包含任何类型的数据,固定长度的字符串数据和用户定义的类型除外。变量还可以包含特殊值 Empty、Error、Nothing 和 NULL。可以使用 VarType 或 TypeName VBA 函数来确定如何处理变量中的数据。 使用变量数据类型替换大部分的数据类型,可以更加灵活地处理数据。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 在方法和特性中使用变量 &使用变量作为数组数据变量用于和 AutoCAD ActiveX Automation 传递数组数据。这表示数组必须是变量,才能被 AutoCAD ActiveX Automation 方法和特性接受。此外,从 AutoCAD ActiveX Automation 输出的数组数据也必须作为变量处理。 注意在 AutoCAD 中,VBA 输入数组会自动被转换为变量。也就是说,在 VBA 中使用 ActiveX Automation 方法和特性时,不必向其输入变量数组。但所 有的输出数组都将采用变量的形式,所以请记得进行相应的处理。请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 在方法和特性中使用变量 &将数组转换为变量AutoCAD ActiveX Automation 提供了将数组数据转换为变量的实用程序方法。这个方法是 CreateTypedArray 方法,它可以创建包含整数数组、浮点数数 组、双精度数组等的变量。用户可以将产生的变量传递给任何 AutoCAD 方法或特性,只要这些方法或特性接受数值数组作为变量。 CreateTypedArray 方法需要输入数组中值的类型,并将数组数据进行转换。以变量返回值的数组。 使用 CreateTypedArray 方法创建样条曲线 以下代码使用 CreateTypedArray 转换三个数组:样条曲线的拟合点坐标及样条曲线的起点切向和端点切向。然后将变量传递给 AddSpline 方法,创建样 条曲线。 Sub Ch2_CreateSplineUsingTypedArray() ' 本例使用 CreateTypedArray 方法 ' 在模型空间中创建样条曲线对象。 Dim splineObj As AcadSpline Dim startTan As Variant Dim endTan As Variant Dim fitPoints As Variant Dim utilObj As Object ' 后期绑定 Utility 对象 Set utilObj = ThisDrawing.Utilityfile://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w' 定义 Spline 对象 utilObj.CreateTypedArray _ startTan, vbDouble, 0.5, 0.5, 0 utilObj.CreateTypedArray _ endTan, vbDouble, 0.5, 0.5, 0 utilObj.CreateTypedArray _ fitPoints, vbDouble, 0, 0, 0, 5, 5, 0, 10, 0, 0 Set splineObj = ThisDrawing.ModelSpace.AddSpline _ (fitPoints, startTan, endTan) ' 放大新创建的样条曲线 ZoomAll End Sub请将您关于此页内容的评论发送给我们页码,27/228(W)ActiveX Automation 基础知识 & 在方法和特性中使用变量 &解释变量数组从 AutoCAD ActiveX Automation 传回的数组信息是以变量传回的。如果知道数组的数据类型,可以使用数组方式访问变量。如果不知道变量中包含的数据 类型,请使用 VBA 函数 VarType 或 Typename。这些函数返回变量中数据的类型。如果需要遍历数组,可以使用 VBA 的 For Each 语句。 计算两点之间的距离 以下代码示范如何计算用户输入的两点之间的距离。在本例中,数据类型是已知的,因为所有的坐标值均为双精度数。三维坐标值是一个包含三个元素的双 精度数组,而二维坐标值是一个包含两个元素的双精度数组。 Sub Ch2_CalculateDistance() Dim point1 As Variant Dim point2 As Variant ' 获取用户输入的点 point1 = ThisDrawing.Utility.GetPoint _ (, vbCrLf & &First point: &) point2 = ThisDrawing.Utility.GetPoint _ (point1, vbCrLf & &Second point: &) ' 计算 point1 和 point2 之间的距离 Dim x As Double, y As Double, z As Double Dim dist As Double x = point1(0) - point2(0) y = point1(1) - point2(1) z = point1(2) - point2(2) dist = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2)) ' 显示计算出来的距离 MsgBox &The distance between the points is: & _ & dist, , &Calculate Distance& End Sub请将您关于此页内容的评论发送给我们file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wActiveX Automation 基础知识 &页码,28/228(W)使用其他编程语言本手册是专为 VBA 编程语言编写的。编程样例和示例应用程序均以 VBA 编写。如果要在其他编程环境中使用这些代码,用户必须更新代码以适合选择的 环境。 可以使用开发环境的文档来帮助转换代码样例。 注意AutoCAD 2009 的 COM 应用程序访问注册表键为“AutoCAD.Application.17”。本节内容l 将 VBA 代码转换为 VB 请将您关于此页内容的评论发送给我们ActiveX Automation 基础知识 & 使用其他编程语言 &将 VBA 代码转换为 VB要更新代码样例以在 VB 中使用,必须先引用 AutoCAD 类型库。要在 VB 中完成此操作,请从“工程”菜单中选择“引用”选项,启动“引用”对话 框。在“引用”对话框中,选择 AutoCAD 类型库,然后单击“确定”。 然后在代码样例中,将所有对 ThisDrawing 的引用替换为引用活动文档、用户指定的变量。要完成这项操作,请为 AutoCAD 应用程序 (acadApp) 和当前 的文档 (acadDoc) 定义变量。然后,将应用程序变量设置为当前的 AutoCAD 应用程序。 如果 AutoCAD 正在运行,指定 AutoCAD 版本号时,VB GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,发生的错误(本 例中)会被捕获然后清除。CreateObject 函数接着会试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会显示一 个消息框,说明发生的错误。 同时运行多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。关于验证 GetObject 所返回任务的详细信息, 请参见 Microsoft VBA 文档中的运行对象表 (ROT) 和 GetObject 函数。 要显示 AutoCAD 图形窗口,必须将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。 如果 GetObject 创建了一个新的 AutoCAD 实例(即调用 GetObject 时 AutoCAD 没有运行),没有将 Visible 设置为 TRUE 会导致 AutoCAD 应用程序 不可见,甚至 AutoCAD 不在 Windows 任务栏上显示。 注意使用依赖于版本的 ProgID。如果 CreateObject 或 GetObject 函数使用的是独立于版本的 ProgID,则将函数更改为使用依赖于版本的 ProgID。例 如,如果使用的是 CreateObject,请将 CreateObject (&AutoCAD.Application&) 更改为 CreateObject (&AutoCAD.Application.17&)。此外,如果 GetInterfaceObject 方法使用的是独立于版本的 ProgID,则必须将该方法更改成使用依赖于版本的 ProgID。 通过 Visual Basic 6 连接至 AutoCAD 本例使用 Err 的 Clear 和 Description 特性。如果用户编码环境不支持这些特性,则需要适当修改样例: Sub Ch2_ConnectToAcad() Dim acadApp As AcadApplication On Error Resume Next Set acadApp = GetObject(, &AutoCAD.Application.17&) If Err Then Err.Clear Set acadApp = CreateObject(&AutoCAD.Application.17&) If Err Then MsgBox Err.Description Exit Sub End If End If MsgBox &Now running & + acadApp.Name + _ & version & + acadApp.Version End Sub 接着,将文档变量设置为 AutoCAD 应用程序中的 Document 对象。Document 对象由 Application 对象的 ActiveDocument 特性返回。 Dim acadDoc as AcadDocumentfile://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wSet acadDoc = acadApp.ActiveDocument 从现在开始,使用 acadDoc 变量引用当前的 AutoCAD 图形。 VBA 与 VB 比较代码样例 本例示范在 VBA 和 VB 中创建直线。 使用 VBA 创建直线: Sub Ch2_AddLineVBA() ' 本例在模型空间中 ' 添加一条直线 Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double ' 定义直线的起点 ' 和端点 startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 ' 在模型空间中创建直线 Set lineObj = ThisDrawing._ ModelSpace.AddLine _ (startPoint, endPoint) ' 放大新创建的直线 ZoomAll End Sub 使用 VB 创建直线: Sub Ch2_AddLineVB() On Error Resume Next ' 连接至 AutoCAD 应用程序 Dim acadApp As AcadApplication Set acadApp = GetObject _ (, &AutoCAD.Application.17&) If Err Then Err.Clear Set acadApp = CreateObject _ (&AutoCAD.Application.17&) If Err Then MsgBox Err.Description Exit Sub End If End If页码,29/228(W)file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w' 连接至 AutoCAD 图形 Dim acadDoc As AcadDocument Set acadDoc = acadApp.ActiveDocument ' 创建直线的端点 Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 ' 在模型空间中创建 Line 对象 Set lineObj = acadDoc.ModelSpace.AddLine _ (startPoint, endPoint) ZoomAll acadApp.visible = True End Sub请将您关于此页内容的评论发送给我们页码,30/228(W)控制 AutoCAD 环境本章介绍在 AutoCAD 中开发应用程序的基础知识。说明如何控制 AutoCAD 环境并在其中有效地工作。本节内容打开、保存和关闭图形 设置 AutoCAD 系统配置 l 控制“应用程序”窗口 l 控制“图形”窗口 l 重置活动对象 l 设置和返回系统变量 l 精确绘图 l 提示用户输入 l 访问 AutoCAD 命令行 l 在没有文档打开时使用 l 输入其他文件格式 l 输出到其他文件格式 请将您关于此页内容的评论发送给我们l l控制 AutoCAD 环境 &打开、保存和关闭图形通过 Documents 集合和 Document 对象可以访问 AutoCAD? 文件功能。 要创建新图形或打开现有图形,请使用 Documents 集合中的方法。Add 方法用于创建新图形并将此图形添加到 Documents 集合中。Open 方法用于打开 现有图形。Documents 集合中的 Close 方法用于关闭 AutoCAD 任务中所有打开的图形。 Save 和 SaveAs 方法用于保存图形。有时候用户希望检查活动图形中是否存在未保存的更改。在退出 AutoCAD 任务或创建新图形之前,应当进行这样的 检查。使用 Saved 特性可以确保当前图形中不包含任何未保存的更改。 要输入和输出图形,请使用 Document 对象的 Import 和 Export 方法。 打开现有图形file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,31/228(W)本例使用 Open 方法打开一个现有图形。并使用 VBA 中的 Dir 函数在打开文件之前检查该文件是否存在。用户应当更改图形文件的名称或路径,以指定用 户的系统中的现有 AutoCAD 图形文件。 Sub Ch3_OpenDrawing() Dim dwgName As String dwgName = &c:\campus.dwg& If Dir(dwgName) && && Then ThisDrawing.Application.Documents.Open dwgName 否则 MsgBox &File & & dwgName & & does not exist.& End If End Sub 创建新图形 本例使用 Add 方法根据默认模板创建新图形。 Sub Ch3_NewDrawing() Dim docObj As AcadDocument Set docObj = ThisDrawing.Application.Documents.Add End Sub 保存活动的图形 本样例首先用其当前名称保存活动图形,然后再用新名称保存该图形。 Sub Ch3_SaveActiveDrawing() ' 用当前名称保存活动的图形 ThisDrawing.Save ' 用新名称保存活动的图形 ThisDrawing.SaveAs &MyDrawing.dwg& End Sub 测试图形中是否存在未保存的更改 本例检查是否存在未保存的更改,并验证用户是否选择“确定”以保存图形(如果没有选择“确定”,跳至结尾处)。如果用户选择“确定”,将使用 Save 方法保存当前图形,如下所示: Sub Ch3_TestIfSaved() If Not (ThisDrawing.Saved) Then If MsgBox(&Do you wish to save this drawing?&, _ vbYesNo) = vbYes Then ThisDrawing.Save End If End If End Sub请将您关于此页内容的评论发送给我们控制 AutoCAD 环境 &设置 AutoCAD 系统配置有九个与选项相关的对象,每个对象分别代表“选项”对话框中的一个选项卡。通过这些对象可以访问“选项”对话框中所有存储在注册表中的选项,可以 使用这些对象的特性来自定义许多 AutoCAD 设置。这些对象包括lPreferencesDisplayfile://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wl l l l l l l l页码,32/228(W)PreferencesDrafting PreferencesFiles PreferencesOpenSave PreferencesOutput PreferencesProfiles PreferencesSelection PreferencesSystem PreferencesUser可以通过 Preferences 对象访问这些对象。要访问 Preferences 对象,请使用 Application 对象的 Preferences 特性: Dim acadPref as AcadPreferences Set acadPref = ThisDrawing.Application.Preferences 然后可以使用 Display、Drafting、Files、OpenSave、Output、Profile、Selection、 System 和 User 特性来访问任何特定的 Preferences 对象。 将十字光标设置为全屏 Sub Ch2_PrefsSetCursor() ' 本例设置 AutoCAD 图形光标的十字光标 ' 设置为全屏。 ' 访问 Preferences 对象 Dim acadPref As AcadPreferences Set acadPref = ThisDrawing.Application.Preferences ' 使用 CursorSize 特性设置十字光标的大小 acadPref.Display.CursorSize = 100 End Sub 显示屏幕菜单和滚动条 Sub Ch2_PrefsSetDisplay() ' 本例使用 DisplayScreenMenu 和 DisplayScrollBars 特性 ' 分别启用屏幕菜单和禁用 ' 滚动条。 ' 访问 Preferences 对象 Dim acadPref As AcadPreferences Set acadPref = ThisDrawing.Application.Preferences ' 显示屏幕菜单并禁用滚动条 acadPref.Display.DisplayScreenMenu = True acadPref.Display.DisplayScrollBars = False End Sub本节内容l 数据库系统配置 请将您关于此页内容的评论发送给我们控制 AutoCAD 环境 & 设置 AutoCAD 系统配置 &数据库系统配置除上述九个 Preferences 对象外,还有一个 DatabasePreferences 对象,它包含存储在图形中的所有选项。提供此单独对象后,不必首先启动 AutoCAD 应用程序(ObjectDBX 应用程序),即可使图形存储的选项对访问 AutoCAD 图形的应用程序可用。 DatabasePreferences 对象位于 Document 对象之下。请将您关于此页内容的评论发送给我们控制 AutoCAD 环境 &控制“应用程序”窗口file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,33/228(W)控制“应用程序”窗口功能使开发人员可以灵活地创建既高效又智能的应用程序。有些时候,用户的应用程序有必要将 AutoCAD 窗口最小化,例如此时代 码正在其他应用程序(如 Excel)中运行任务的时候。此外,用户通常希望在执行诸如提示用户输入之类的任务之前,验证 AutoCAD 窗口的状态。 使用 Application 对象的方法和特性可以更改“应用程序”窗口的位置、大小和可见性。另外,还可以使用 WindowState 特性来最小化、最大化“应用程 序”窗口以及检查窗口的当前状态。 更改“应用程序”窗口的位置和大小 本例使用 WindowTop、WindowLeft、Width 和 Height 特性将 AutoCAD“应用程序”窗口放在屏幕的左上角,并将其大小调整为宽 400 像素、高 400 像 素。 Sub Ch3_PositionApplicationWindow() ThisDrawing.Application.WindowTop = 0 ThisDrawing.Application.WindowLeft = 0 ThisDrawing.Application.width = 400 ThisDrawing.Application.height = 400 End Sub 最大化“应用程序”窗口 Sub Ch3_MaximizeApplicationWindow() ThisDrawing.Application.WindowState = acMax End Sub 最小化“应用程序”窗口 Sub Ch3_MinimizeApplicationWindow() ThisDrawing.Application.WindowState = acMin End Sub 找出“应用程序”窗口的当前状态 本例查询“应用程序”窗口的状态,并将该状态以消息框的形式显示给用户。 Sub Ch3_CurrentWindowState() Dim CurrWindowState As Integer Dim msg As String CurrWindowState = ThisDrawing.Application.WindowState msg = Choose(CurrWindowState, &normal&, _ &minimized&, &maximized&) MsgBox &The application window is & + msg End Sub 使“应用程序”窗口不可见 下面的代码使用 Visible 特性使 AutoCAD 应用程序对最终用户不可见。 Sub Ch3_HideWindowState() ThisDrawing.Application.Visible = False End Sub请将您关于此页内容的评论发送给我们控制 AutoCAD 环境 &控制“图形”窗口与 AutoCAD“应用程序”窗口类似,对于“文档”窗口,可以最小化、最大化、重新定位、调整大小以及查看其状态。除此之外,还可以使用视图、视口和 缩放方法来更改图形在窗口中的显示方式。file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w页码,34/228(W)AutoCAD ActiveX 提供了许多显示图形视图的方法。可以在跟踪更改的整体效果时,控制图形的显示以快速移动到图形的其他区域;可以通过缩放更改放大 比例或通过平移调整视图在图形区中的位置;可以保存视图并在需要打印或参考特定细节时将其恢复;或者将屏幕拆分为多个平铺视口以同时显示多个视 图。本节内容更改“文档”窗口的位置和大小 使用“缩放” l 使用命名视图 l 使用平铺视口 l 更新“文档”窗口中的几何图形 请将您关于此页内容的评论发送给我们l l控制 AutoCAD 环境 & 控制“图形”窗口 &更改“文档”窗口的位置和大小可以使用 Document 对象修改任何“文档”窗口的位置和大小。使用 WindowState 特性可以将“文档”窗口最小化或最大化,还可以查看“文档”窗口的 当前状态。 放置“文档”窗口 本例使用 Width 和 Height 特性将活动“文档”窗口设置为宽 400 像素、高 400 像素。 Sub Ch3_SizeDocumentWindow() ThisDrawing.Width = 400 ThisDrawing.Height = 400 End Sub 将活动“文档”窗口最大化 Sub Ch3_MaximizeDocumentWindow() ThisDrawing.WindowState = acMax End Sub 将活动“文档”窗口最小化 Sub Ch3_MinimizeDocumentWindow() ThisDrawing.WindowState = acMin End Sub 查看活动“文档”窗口的当前状态 Sub Ch3_CurrentWindowState() Dim CurrWindowState As Integer Dim msg As String CurrWindowState = ThisDrawing.WindowState msg = Choose(CurrWindowState, &normal&, _ &minimized&, &maximized&) MsgBox &The document window is & + msg End Sub请将您关于此页内容的评论发送给我们控制 AutoCAD 环境 & 控制“图形”窗口 &使用“缩放”视图显示的是具有特定放大比例、位置和方向的图形。更改视图最常用的方法是使用某个 AutoCAD“缩放”选项,以增加或减小图形区域中显示的图像大 小。有关在 AutoCAD 中进行缩放的详细信息,请参见《用户手册》中的“放大视图(缩放)”。本节内容file://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm w定义“缩放”窗口 缩放视图 l 居中对齐对象 l 显示图形界限和范围 请将您关于此页内容的评论发送给我们l l页码,35/228(W)控制 AutoCAD 环境 & 控制“图形”窗口 & 使用“缩放” &定义“缩放”窗口可以通过指定定义区域的角点快速放大该区域。要通过指定边界来放大某个区域,请使用 ZoomWindow 或 ZoomPickWindow 方法。ZoomWindow 方法使 用户可以通过编程的方式定义代表“缩放”窗口的两个点;ZoomPickWindow 方法则要求用户拾取两个点。这两个拾取点将形成“缩放”窗口。 将活动图形缩放至两点定义的窗口 Sub Ch3_ZoomWindow() ' ZoomWindow MsgBox &Perform a ZoomWindow with:& & vbCrLf & _ &1.3, 7.8, 0& & vbCrLf & _ &13.7, -2.6, 0&, , &ZoomWindow& Dim point1(0 To 2) As Double Dim point2(0 To 2) As Double point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0 point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0 ThisDrawing.Application.ZoomWindow point1, point2 ' ZoomPickWindow MsgBox &Perform a ZoomPickWindow&, , &ZoomPickWindow& ThisDrawing.Application.ZoomPickWindow End Sub请将您关于此页内容的评论发送给我们控制 AutoCAD 环境 & 控制“图形”窗口 & 使用“缩放” &缩放视图如果需要按精确的比例缩放图像,可以用三种方法指定缩放比例:l l l相对于图形界限 相对于当前视图 相对于图纸空间单位要缩放视图,请使用 ZoomScaled 方法。该方法需要两个输入参数:缩放比例和缩放类型。缩放比例是一个数值,AutoCAD 对该数值的解释取决于用户选 择的缩放类型。 缩放类型确定缩放值是相对于图形界限、当前视图还是相对于图纸空间单位创建的。相对于图形界限缩放时,使用常量 acZoomScaledAbsolute;相对于当 前视图缩放时,使用常量 acZoomScaledRelative;相对于图纸空间单位缩放时,使用常量 acZoomScaledRelativePSpace。 使用指定的缩放比例放大活动图形 Sub Ch3_ZoomScaled() MsgBox &Perform a ZoomScaled using:& & vbCrLf & _ &Scale Type: acZoomScaledRelative& & vbCrLf & _ &Scale Factor: 2&, , &ZoomScaled& Dim scalefactor As Double Dim scaletype As Integer scalefactor = 2 scaletype = acZoomScaledRelativefile://C:\Users\Administrator\AppData\Local\Temp\~hh42F9.htm wThisDrawing.Application.ZoomScaled scalefactor, scaletype End Sub请将您关于此页内容的评论发送给我们页码,36/228(W)控制 AutoCAD 环境 & 控制“图形”窗口 & 使用“缩放” &居中对齐对象将

我要回帖

更多关于 清除浏览器缓存 的文章

 

随机推荐