本文目前仅包括怎样用objectarx.net 创建CUI,你可以用cad中的cui命令进行创建,不过我不喜欢那种方式,会附带很多无用的信息。
1个自定义局部cui包括如下内容:
head:这个基本不变
MenuGroup:这个是主要的菜单资源,包括了菜单所用到的命令以及菜单项的组成和工具栏等。
其中菜单组命令为MacroGroup ,里面包括了每个菜单用到的命令,每个命令由名称、命令、图标文件、注释等组成。
PopMenu表示菜单项的组成,里面包括了菜单的名称,挂接到命令ID,是否是分割条等。
ToolBar 表示工具栏的设置。
步骤:
1. 07以上版本,添加引用Accui.dll
2. 添加引用 using Autodesk.AutoCAD.Customization;
3. 得到主配置对象
string mainCui = Application.GetSystemVariable("MENUNAME") + ".cui";// 从AUTOCAD系统变量MENUNAME得到main cui文件
CustomizationSection cw = new CustomizationSection(mainCui);
4. 创建局部自定义cui对象
CustomizationSection pcs = new CustomizationSection();
pcs.MenuGroupName = strMenuGroupName;
5. 添加菜单的命令组
MacroGroup mg = new MacroGroup(dtMacroGroup.TableName, pcs.MenuGroup);
MenuMacro mm = null;
foreach (System.Data.DataRow r in dtMacroGroup.Rows)
{
mm = new MenuMacro(mg, r["name"].ToString(), r["command"].ToString(), r["UID"].ToString(), MacroType.Any);
mm.macro.HelpString = r["HelpString"].ToString();
mg.AddMacro(mm);
}
6. 添加菜单项的设置
StringCollection sc = new StringCollection();
sc.Add("POP1");
PopMenu pm = new PopMenu(dtPopMenu.TableName, sc, dtPopMenu.Namespace, pcs.MenuGroup);
PopMenuItem pmi = null;
foreach (DataRow r in dtPopMenu.Rows)
{
// 添加下拉菜单
if (Convert.ToBoolean( r["IsSeparator"]))
{
pmi = new PopMenuItem(pm); //用此构造方法,即为分割条
pm.PopMenuItems.Add(pmi);
}
else
{
foreach (MenuMacro m in mg.MenuMacros)
{
if (m.ElementID == r["MenuMacroID"].ToString())
{