// 自定义命令示例(需用[CommandMethod]标记) public class CustomCommands { [CommandMethod("MYCOMMAND1")] public void MyCommand1() { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("执行命令1"); }
[CommandMethod("MYCOMMAND2")] public void MyCommand2() { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("执行命令2"); } } ```
2 个回复
CAD小苏 - 专注所以信赖!
赞同来自:
浩辰cad 2026版开发自定义菜单的方式跟AutoCAD是一致的,可以参考我们的开发文档,
如果有更具体的开发问题,您可以继续向我提问
匿名用户
赞同来自:
在浩辰CAD的C#二次开发中,自定义菜单主要用于扩展CAD的功能入口,方便用户调用自定义命令。以下是具体的实现方式、所需引用的DLL及核心说明:
### 一、需引用的核心DLL
浩辰CAD的.NET二次开发依赖其官方提供的API库,核心DLL如下(通常位于浩辰CAD安装目录的`\Bin\`文件夹下):
- **GcadNet.dll**:核心API库,包含CAD应用程序(`Application`)、文档(`Document`)等基础对象,是二次开发的基础。
- **GcadUi.dll**:UI相关API库,包含菜单(`Menu`)、菜单项(`MenuItem`)、工具栏等界面元素的类,用于自定义用户界面。
引用方式:在C#项目中,通过“添加引用”手动选择上述DLL(需确保路径正确,对应浩辰CAD的安装版本)。
### 二、自定义菜单的3种主要方式
根据实现逻辑和场景,自定义菜单主要有以下3种方式:
#### 1. 代码动态创建(最常用,灵活度高)
通过C#代码直接调用浩辰CAD的UI API,动态创建菜单、菜单项并绑定命令,适合需要根据程序逻辑动态调整菜单的场景。
**核心步骤:**
- 获取浩辰CAD的主菜单对象(根菜单);
- 创建自定义子菜单(如“我的工具”);
- 向子菜单中添加菜单项,并绑定对应的自定义命令(通过命令字符串关联);
- 将子菜单添加到主菜单中。
**示例代码:**
```csharp
using Gcad.ApplicationServices;
using GcadUi;
using System;
public class CustomMenu
{
// 程序加载时初始化菜单
public void InitializeMenu()
{
try
{
// 获取浩辰CAD主菜单
Menu mainMenu = Application.MainMenu;
// 创建自定义子菜单(显示文本为“我的工具(&T)”,&T表示快捷键Alt+T)
Menu myMenu = new Menu("我的工具(&T)");
// 创建菜单项1:绑定命令“MYCOMMAND1”
MenuItem item1 = new MenuItem("命令1(&1)", "MYCOMMAND1"); // 第二个参数为命令字符串
// 添加菜单项到子菜单
myMenu.Add(item1);
// 创建分隔线
myMenu.Add(new MenuItem("-"));
// 创建菜单项2:绑定命令“MYCOMMAND2”
MenuItem item2 = new MenuItem("命令2(&2)", "MYCOMMAND2");
myMenu.Add(item2);
// 将自定义子菜单添加到主菜单(可指定位置,如最后)
mainMenu.Add(myMenu);
}
catch (Exception ex)
{
Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("菜单创建失败:" + ex.Message);
}
}
}
// 自定义命令示例(需用[CommandMethod]标记)
public class CustomCommands
{
[CommandMethod("MYCOMMAND1")]
public void MyCommand1()
{
Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("执行命令1");
}
[CommandMethod("MYCOMMAND2")]
public void MyCommand2()
{
Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("执行命令2");
}
}
```
**注意:** 菜单初始化代码需在程序加载时执行(如通过`IExtensionApplication`接口的`Initialize`方法),确保CAD启动后菜单生效。
#### 2. 通过CUI文件定义(可视化配置,适合固定菜单)
浩辰CAD支持自定义用户界面文件(`.cui`或`.cuix`,类似AutoCAD的CUI),可通过可视化工具(如浩辰CAD自带的“自定义用户界面”编辑器)编辑菜单结构,再通过代码加载该文件。
**核心步骤:**
- 手动创建CUI文件:在浩辰CAD中输入`CUI`命令,打开编辑器,新建菜单、菜单项并关联命令,保存为`.cui`文件;
- 代码中加载CUI文件:通过`Application.LoadCuiFile`方法加载自定义CUI,将菜单合并到CAD主界面。
**示例代码:**
```csharp
using Gcad.ApplicationServices;
public void LoadCustomCui()
{
string cuiPath = @"C:\MyCustomMenu.cui"; // CUI文件路径
if (System.IO.File.Exists(cuiPath))
{
Application.LoadCuiFile(cuiPath, true); // 第二个参数表示合并到现有界面
}
}
```
**优势:** 无需硬编码菜单结构,可通过CAD界面直接修改,适合菜单固定不变的场景。
#### 3. 注册表注册(适合全局生效,较少用)
通过修改Windows注册表,将菜单配置写入浩辰CAD的注册表项,实现菜单在所有CAD实例中生效。但此方式灵活性低,且修改注册表有风险,一般不推荐。
**核心路径(示例):**
`HKEY_CURRENT_USER\Software\Gstarsoft\GstarCAD\2024\Profiles\<<未命名配置>>\Menus`
在该路径下添加字符串值,键为菜单名称,值为命令字符串或CUI文件路径。
### 三、关键说明
- **菜单生命周期**:动态创建的菜单在程序卸载后会消失(需重新加载);CUI文件或注册表方式的菜单会长期生效。
- **版本兼容性**:不同版本的浩辰CAD(如2022/2024)的API可能略有差异,需确保DLL版本与CAD版本一致。
- **调试建议**:通过浩辰CAD的`APPLOAD`命令加载编译后的`.dll`,使用`NETLOAD`命令调试,若菜单未显示,检查代码中是否有异常(可通过`Editor.WriteMessage`输出日志)。
如需更详细的API文档,可参考浩辰CAD安装目录下的《浩辰CAD .NET二次开发手册》,或访问浩辰官方开发者社区获取支持。