CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

创建 AutoCAD 命令

2024-5-18 19:13| 发布者: admin| 查看: 110| 评论: 0|原作者: admin|来自: AutoCAD

创建 AutoCAD 命令

ObjectARX 应用程序通常定义一个或多个命令,用户可以从 AutoCAD 命令提示符调用这些命令。对于工具应用程序,只需一个命令即可创建工具目录、工具选项板和工具。首次加载应用程序时,此命令仅使用一次。命令成功创建工具组件后,AutoCAD 会将其信息以及 ObjectARX 模块的路径保存到 ATC 文件中。此后,“工具选项板”框架在初始化“工具选项板”窗口时加载应用程序。您的工具和选项板将成为“工具选项板”窗口默认配置的一部分,直到它们被移除。

对于此项目,您将创建一个名为 CREATESIMPLE 的新 AutoCAD 命令。您可以通过单击 ObjectARX 向导的 ObjectARX 命令按钮,然后从 ARX 命令列表网格的右键单击菜单中选择 “New”(新建)来定义此命令。或者,如果您没有使用 ObjectARX 向导,则可以按照 ObjectARX 应用程序基础知识中所述创建已注册的命令。

使用 AcadToolImpl 创建刀具实例

  1. 创建名为 CREATESIMPLE 的新 AutoCAD 命令。如果使用 ObjectARX 向导启动项目,请使用其工具栏创建此命令。否则,请使用标准 ObjectARX 过程来定义和注册 AutoCAD 命令。
  2. 在 CREATESIMPLE 命令处理程序中提供以下代码,以便为库存工具、工具选项板和命令工具创建 ATC 内容:
    CComObject<CSimpleTool> tool;
    // Don't redefine the stock tool if it's already in the catalog
    if (AcTcGetManager()->FindStockTool(tool.GetObjectCLSID()) !=
            NULL)
    return;
    AcTcCatalog* pCatalog =
        tool.CreateStockToolATC(_T(“SimpleCatalog”));
    AcTcPalette* pPalette = tool.CreatePaletteATC(pCatalog,
        _T(“SimplePalette”));
    tool.CreateCommandToolATC(pPalette, “Line”, “IDB_TOOL1”,
        “_LINE “);
  3. 在调用创建工具和工具选项板 ATC 内容后,添加以下调用以刷新“工具选项板”窗口的显示:
    AcTcGetManager()->LoadCatalogs(); // Refresh the palette in
                                      // AutoCAD.
  4. 请确保 SimpleTool.h 文件包含在定义命令处理程序的文件中。
  5. 重新生成应用程序。
  6. 在AutoCAD中测试CREATESIMPLE命令并检查新工具选项板。

现在,您拥有一个工作工具选项板,其中包含启动LINE命令的单个工具。若要添加更多工具,只需对以下任一方法进行其他调用:

  • CreateToolATC()
  • CreateCommandToolATC()
  • CreateFlyoutToolATC()

要使用 ,必须已创建形状目录。您可以通过调用 来执行此操作。有关使用这些函数的信息,请参阅添加浮出控件部分。CreateFlyoutToolATC()CreateShapeCatalogATC()

该函数提供了一个可选参数 ,允许您通过提供图像文件名来覆盖库存工具的默认图标图像设置。该函数的可选参数允许您覆盖工具的默认名称。CreateToolATC()szToolImageOverrideCreateFlyoutToolATC()szToolNameOverride

由于此示例应用程序未使用 COM 对象的属性,因此不会遇到未初始化变量的问题。但是,大多数工具选项板应用程序创建的工具都依赖于自定义数据。要初始化包含自定义工具数据的成员变量,coclass 需要覆盖该方法。您应该在方法中执行初始化,而不是在 coclass 构造函数中执行初始化,因为构造函数仅用于创建库存工具。AcadToolImpl::New() New()

重写 New() 方法

  1. SimpleTool.h 文件中,在 coclass 声明的 public 部分中声明 的标准覆盖:New()
    STDMETHOD(New)()
    {
    }
  2. 实现此方法,为属性成员变量添加初始化。此项目的方法在类声明中以内联方式定义,如下所示:New()
    STDMETHOD(New)()
    {
        tcscpy(m_tcCmdName, _T("_LINE"));
        // Add other property variable initializations here...
        return S_OK;
    }
  3. 在 CREATESIMPLE AutoCAD 命令的实现中,在创建目录、选项板和工具 ATC 条目之前调用新工具。New()

以下清单显示了完成的命令处理程序代码:

CComObject<CSimpleTool> tool;
// Don't redefine the stock tool if it's already in the catalog
if (AcTcGetManager()->FindStockTool(tool.GetObjectCLSID()) !=
        NULL)
return;
if (SUCCEEDED(tool.New())) {
    AcTcCatalog* pCatalog =         tool.CreateStockToolATC(_T(“SimpleCatalog”));     AcTcPalette* pPalette = tool.CreatePaletteATC(pCatalog,         _T(“SimplePalette”));     tool.CreateCommandToolATC(pPalette, “Line”, “IDB_TOOL1”,         “_LINE “);     AcTcGetManager()->LoadCatalogs(); // Refresh the palette in                                       // AutoCAD
}

通过调用 ,可以将工具的属性设置为默认值。然后,可以在创建工具之前将部分或全部属性重置为专用值。New()


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 11:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部