托管应用程序可以通过实现可选接口来选择执行初始化或终止任务。Autodesk.AutoCAD.Runtime.IExtensionApplication 该接口提供了 和 方法。由于无法手动卸载托管应用程序,因此在 AutoCAD 程序关闭时将调用该方法的任何实现。Autodesk.AutoCAD.Runtime.IExtensionApplicationInitialize()Terminate()Terminate() 如果应用程序定义了大量数据类型,则可以通过实现和使用两个可选的自定义属性来优化其加载时性能。这些特性可帮助 AutoCAD 程序查找应用程序的初始化例程和命令处理程序。IExtensionApplicationExtensionApplicationCommandClass 任何托管应用程序都可以使用这些属性。然而,它们的优化效果只有在较大的应用中才能测量。 使用 ExtensionApplication 和 CommandClass 属性当 AutoCAD 程序加载托管应用程序时,它会查询应用程序的组件以查找属性。如果找到此特性,AutoCAD 程序会将该特性的关联类型设置为应用程序的入口点。如果未找到此类属性,AutoCAD 将在所有导出的类型中搜索实现。如果未找到实现,AutoCAD 程序将跳过特定于应用程序的初始化步骤。ExtensionApplicationIExtensionApplication 该属性只能附加到一种类型。它所附加到的类型必须实现接口。ExtensionApplicationIExtensionApplication 除了在应用程序中搜索实现之外,AutoCAD 程序还会查询应用程序的组件中的一个或多个属性。如果找到此属性的实例,AutoCAD 程序将仅搜索其关联类型的命令方法。否则,它将搜索所有导出的类型。IExtensionApplicationCommandClass 可以为定义 AutoCAD 命令处理程序的任何类型声明属性。如果应用程序使用该特性,则必须为包含 AutoCAD 命令处理程序方法的每个类型声明此特性的实例。CommandClassCommandClass 以下过程介绍如何使用这些属性。
注意:必须在程序集上下文中声明这些属性。
VB.NET... Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.Interop Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices <Assembly: ExtensionApplication(GetType(HelloWorld.HelloWorldApp))> <Assembly: CommandClass(GetType(HelloWorldCommands))> Namespace HelloWorld Public Class HelloWorldApp Implements Autodesk.AutoCAD.Runtime.IExtensionApplication ... End Class Public Class HelloWorldCommands ' Defines a command that prompts a message on the AutoCAD ' command line. <Autodesk.AutoCAD.Runtime.CommandMethod("HELLO")> Public Sub HelloCommand() ... End Sub End Class End Namespace C#... using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Interop; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; [assembly: ExtensionApplication(typeof(HelloWorld.HelloWorldApp))] [assembly: CommandClass(typeof(HelloWorld.HelloWorldCommands))] namespace HelloWorld { public class HelloWorldApp : Autodesk.AutoCAD.Runtime.IExtensionApplication { ... } public class HelloWorldCommands { // Defines a command that prompts a message on the AutoCAD // command line. [CommandMethod("HELLO")] public void HelloCommand() { ... } } } 父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-7 19:45
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.