CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

应用程序初始化和加载时优化 (.NET)

2023-1-1 17:15| 发布者: admin| 查看: 567| 评论: 0|来自: AutoCAD

摘要: 托管应用程序可以选择通过实现可选的 Autodesk.AutoCAD.Runtime.IExtensionApplication interface.

托管应用程序可以选择通过实现可选接口来执行初始化或终止任务。Autodesk.AutoCAD.Runtime.IExtensionApplication

该接口提供与方法。由于无法手动卸载托管应用程序,因此在 AutoCAD 程序关闭时将调用该方法的任何实现。Autodesk.AutoCAD.Runtime.IExtensionApplicationInitialize()Terminate()Terminate()

如果应用程序定义了大量数据类型,则可以通过实现和使用两个可选的自定义属性来优化其加载时间性能。这些属性(和)可帮助 AutoCAD 程序查找应用程序的初始化例程和命令处理程序。IExtensionApplicationExtensionApplicationCommandClass

任何托管应用程序都可以使用这些属性。但是,它们的优化效果只能在较大的应用中测量。

使用扩展应用程序和命令类属性

当 AutoCAD 程序加载托管应用程序时,它会查询应用程序的程序集以获取属性。如果找到此属性,AutoCAD 程序会将属性的关联类型设置为应用程序的入口点。如果未找到此类属性,AutoCAD 将搜索所有导出的类型以进行实施。如果未找到实现,AutoCAD 程序将跳过特定于应用程序的初始化步骤。ExtensionApplicationIExtensionApplication

该属性只能附加到一种类型。它附加到的类型必须实现接口。ExtensionApplicationIExtensionApplication

除了在应用程序中搜索实现之外,AutoCAD 程序还会查询应用程序的程序集以获取一个或多个属性。如果找到此属性的实例,AutoCAD 程序将仅搜索其关联的类型以查找命令方法。否则,它将搜索所有导出的类型。IExtensionApplicationCommandClass

可以为定义 AutoCAD 命令处理程序的任何类型声明属性。如果应用程序使用该属性,则必须为包含 AutoCAD 命令处理程序方法的每个类型声明此属性的实例。CommandClassCommandClass

以下过程介绍如何使用这些属性。

  1. 定义实现的类型。Autodesk.AutoCAD.Runtime.IExtensionApplication

    如果不需要执行初始化或终止任务,请提供接口方法的空白实现。

  2. 在程序集上下文中,声明属性。ExtensionApplication
  3. 将实现接口的类型传递给属性。IExtensionApplicationExtensionApplication
  4. 在部件上下文中,为定义 AutoCAD 命令方法的每个类声明一个属性。CommandClass
  5. 将命令方法的类的类型传递给属性。CommandClass
注意:必须在程序集上下文中声明这些属性。

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()
        {
            ...
        }
    }
}

路过

雷人

握手

鲜花

鸡蛋

最新评论

python编程Autocad从入门到精通

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-6 20:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部