今天专门讲一个——CommandMethod。我们都在知道CAD操作要快,必须要熟悉掌握各种命令。在Lisp开发中,在函数后C:即可添加一个命令,非常方法,在.NET API也可以非常方便的设置命令,它需要CommandMethod属性。
    先来看CommandMethod的定义,它的构造函数很多,其中参数最全的一个如下图所示:
    AutoCAD .NET二次开发——CommandMethod - 图1
    groupName组名,string,命令编组名称,一般在小项目开发中用得比较少。
    globalName,全局名称, string,即命令,它应该是唯一的,不然在调用时会发生意外。
    localizedNameId, 本地名称,string,指定语言的本地命令名称,不知道有什么用。
    flags, 命令标志,CommandFlags,定义命令的行为。详见附表。
    contextMenuExtensionType, 上下文菜单类型标志 ,Type, 定义命令处于活动状态时的上下文菜单行为。
    helpFileName, 帮助文件名string,帮助文件,含有命令活动状态下按下F1时要显示的帮助主题。
    helpTopic ,帮助主题,string。帮助文件中的主题。

    除上面这个构造函数外,它还有5个:
    CommandMethodAttribute(string globalName)
    CommandMethodAttribute(string globalName, CommandFlags flags)
    CommandMethodAttribute(string groupName, string globalName, CommandFlags flags)
    CommandMethodAttribute(string groupName, string globalName, string localizedNameId, CommandFlags flags)
    CommandMethodAttribute(string groupName, string globalName, string localizedNameId, CommandFlags flags, string helpTopic)
    CommandMethodAttribute(string groupName, string globalName, string localizedNameId, CommandFlags flags, Type contextMenuExtensionType)

    在使用时的注意事项有:
    (1)CommandMethodAttribute和CommandMethod是一个,不管使用哪一个都可以;
    (2)CommandMethodAttribut的使用需要添加相关引用,包括accoremgd,acdbmgd和acmgd三个;
    (3)CommandMethod后的有效行必须是一个函数。

    附表:Command Flags命令标志

    枚举值 描述
    ActionMacro 可以用动作录制器录制命令动作;
    DocReadLock 命令执行时将被只读锁定;
    Interruptible 提示用户输入时可以中断命令;
    Modal 别的命令运行时不能运行此命令;
    NoActionRecording 不能用动作录制器录制命令动作;
    NoBlockEditor 不能从块编辑器使用该命令;
    NoHistory 不能将命令添加到repeat-last-command(重复上一个命令)历史列表;
    NoPaperSpace 不能从图纸空间使用该命令;
    NoTileMode 当TILEMODE置1时不能使用该命令;
    NoUndoMarker 命令不支持撤销标记。用于不修改数据库因而也就无需出现在撤销记录中的那些命令;
    Redraw 不清空取回的先选择后执行设置及对象捕捉设置;
    Session 命令运行于应用程序上下文,而不是当前图形文档上下文;
    Transparent 别的命令运行时可以运行此命令;
    Undefined 只能通过全局名使用命令;
    UsePickSet 清空取回的先选择后执行设置;