视频如下:
代码工程下载:
http://www.mxcad.net:2080/video/com_mxtoolbar.zip
一、工具栏定义文件
1、如何找到控件对应的mxt定义文件
1)首先找到文件夹(自己安装位置);MxDraw52\Bin\vc100:

2)然后选择打开一个exe可执行文件;

3)再找到对应文件具体所在位置(工具条文件与控件位置不一致时,修改文件针对控件是无效的);

4) mxt文件可通过记事本打开进行修改。
2、工具栏定义文件是什么
1)部分工具条定义;

2)文件中第一行是参数,工具条文件头信息;
如:("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "常用工具" "Y")

3)通过mxt文件可修改工具栏,删除增加按钮,给增加的按钮添加自定义命令;
4)文件中后面每一行代表一个工具条按钮;

红色框各部分表示的含义:

5)如何删除:直接在文件夹把不需要的工具条文件删除,控件加载时就不会显示该工具条。
3、如何直接隐藏按钮
1)首先响应事件InitComplete;

2) 然后根据需要写入代码:如 直线和矩形按钮
private void axMxDrawX1_InitComplete(object sender, EventArgs e)
{
axMxDrawX1.HideToolBarControl("绘图工具", "绘线,绘矩形框", true, true);
}3) 编译运行,按钮被隐藏。

4、如何增加一个按钮
自定义按钮参考例子:samples\AspNet\AspNet\My-MxDraw-ToolBar.txt
1)用记事本打开mxt工具条文件;

2)添加按钮并保存如(“100”为ID,用作自定义命令);
("自定义打文件按钮" "自定义打文件按钮" "" "" "" "local:mytoolbar.bmp" "100")
3)输入自定义的命令(根据自身需求);例如
else if(100==e.iCommandId )
{
MessageBox.Show("用户定义命令执行....");
}4)编译运行---点击按钮---命令被执行。
5、COM接口
1)从指定文件加载:CAD控件默认是加载CAD控件程所在目录下的所有mxt文件,下面介绍如何显示指定加载工具文件。
COM接口: ToolBarFiles属性,它支持从服务器上加载工具文件,多个工具条文件用逗号隔开:

找到控件---属性--ToolbarFiles(可指定选择需要的mxt文件,也可加载所有的mxt文件,注意每一个文件要用逗号分开):

2)显示加载工具条文件:CAD控件支持在需要时,再动态加载工具条文件,接口说明如下:
COM接口: _DMxDrawX::LoadToolBar

视频如下:
代码工程下载:
http://www.mxcad.net:2080/video/com-mxmenu.zip
二、菜单栏定义文件
1、如何找到控件对应的mnu定义文件
1)找到安装的文件目录:MxDraw52\Bin\vc100;
2)选择打开一个exe可执行文件;
3)找到对应文件具体所在位置(菜单栏文件与控件位置不一致时,修改文件针对控件是无效的);
4)mnu文件可通过记事本打开进行修改。
2、如何新增一个按钮
1)用记事本打开mxmenu.mnu文件(所有的mnu文件都是菜单栏文件);
2)添加按钮并保存(“100”为ID,用作自定义命令);
"自定义新建(&N)1" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp" "" "100" "ID_NEW_BUTTOM"
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"
3)输入自定义的命令;例如隐藏菜单栏;
else if(100==e.iCommandId )
{ axMxDrawX1.ShowMenuBar = isShow;
isShow = !isShow;
}4)编译运行,点击新建按钮,命令被执行。
3、如何让控件一启动就隐藏某个按钮
1)首先响应事件InitComplete;

2)然后根据需要写入代码:例如隐藏新建和打开
private void axMxDrawX1_InitComplete(object sender, EventArgs e)
{
axMxDrawX1.HideMenuBarControl("新建(&N),打开(&O)", true);
}4)再编译运行,此时文件---新建、保存按钮直接被隐藏。
4、如何删除不需要的按钮及说明
1)如何删除:直接在文件夹把不需要的菜单栏文件删除,控件加载时就不会显示该工具条;
2)文件中第一行菜单文件头信息;

3) 文件中后面每一行代表一个菜单栏按钮;

4)通过mnu文件可修改菜单栏,删除增加按钮,给增加的按钮通过id添加自定义命令。
5、怎么修改控件默认的菜单文件
视频如下:
1)在安装位置找到打开MxDraw5.2Help;

2)双击打开,搜索“Iniset"找到_DMxDrawX::Iniset 数据 成员;

3)可看见序号60为指定菜单文件;

4)找到:正编辑的工程--控件属性--Iniset

5)如果想用mymxmenu.mnu文件代替默认文件(新建同理),如图(多个则用逗号分开);


6)此处两个文件不同之处如红框所示,更改后打开菜单栏文件显示则为图二。
图一:mxmenu.mnu文件

图二:mymxnenu.mnu文件

视频如下:
代码工程下载:
http://www.mxcad.net:2080/video/com-pop-up menu.zip
三、右键弹出菜单
1、新建三个mnu文件
1)第一个文件:mxpoptest.mnu 内容如下(此文件为在命令下运行菜单);
// 菜单条文件头说明. // "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单2" // 菜单内容说明 // "命令名称" "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID" "ID类型" "是否命令当着函数执行" "POPMENUS" "对象(&O)" "确定" "" "" "" "确定" "" "ID_OK_BUTTON" //"取消" "" "" "" "取消" "" "ID_CANCLE_BUTTON" "关键字" "" "" "" "关键字" "" "ID_KEYWORD_BUTTON" "SEPARATOR" "Test(&E)" "Test" "" "" "编辑文字" "55" "" "Y" "POPMENUE"
2)第二个文件:MxPopMenuEnt.mnu 内容如下(此文件为在非命令下运行点击实体菜单);
// 菜单条文件头说明. // "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单2" // 菜单内容说明 // "命令名称" "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID" "ID类型" "POPMENUS" "对象(&O)" "删除(&E)" "_Erase" "IDB_ERASE_BITMAP" "复制(&Y)" "_Copy" "IDB_COPY_BITMAP" "移动(&V)" "_Move" "IDB_MOVE_BITMAP" "旋转(&R)" "_Rotation" "IDB_ROTATION_BITMAP" "缩放(&L)" "_Scale" "IDB_SCALE_BITMAP" "SEPARATOR" "对象特性(&O)" "Mx_ShowProperties" "IDB_PROPERTY_BITMAP" "PropertyEditor.mrx" "SEPARATOR" "用户自加命令(&U)" "" "" "" "" "99" "POPMENUE"
3)第三个MxPopMenu.mnu,内容如下(此文件为在非命令下运行无实体右击菜单);
// 菜单条文件头说明. // "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单1" // 菜单内容说明 // "命令名称" "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID" "ID类型" "POPMENUS" "弹出菜单1(&V)" "新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "MxEdit.mrx" "" "" "ID_NEW_BUTTOM" "打开(&O)" "Mx_OpenMxg" "IDB_OPENMXG_BITMAP" "" "" "" "ID_OPEN_BUTTOM" "重画(&R)" "Re" "IDB_REGEN_BITMAP" "SEPARATOR" "实时缩放(&Z)" "ZoomR" "IDB_ZOOM_BITMAP" "SEPARATOR" "上一步" "ZoomP" "ID_PRVVIEW_BITMAP" "窗口缩放(&W)" "WindowZoom" "IDB_ZOOMW_BITMAP" "范围缩放(&E)" "ZoomE" "IDB_ZOOME_BITMAP" "视区平移(&P)" "P" "IDB_PAN_BITMAP" "视区旋转(&L)" "Mx_Plan" "IDB_PLAN_BITMAP" "MxEdit.mrx" "SEPARATOR" "鸟瞰(&D)" "DsViewer" "IDB_DSVIEWER_BITMAP" "放大镜(&M)" "MagnifyingGlass" "IDB_MAGNIFYINGCLASS_BITMAP" "SEPARATOR" "视区背景色(&C)" "_ViewColor" "IDB_VIEWCOLOR_BITMAP" "线重(&S)" "_ShowLineWeight" "IDB_LINEWEIGHT_BITMAP" "绘图模式(&A)" "_DrawModle" "IDB_DRAWMODLE_BITMAP" "全屏显示(&F)" "MxFullScreen" "IDB_FULLSCREEN_BITMAP" "SEPARATOR" "用户坐标系(&U)" "Mx_Ucs" "IDB_UCS_BITMAP" "MxEdit.mrx" "POPMENUE"
4)我们打开文件夹MxDraw52\Bin\vc100,可以看见目录中是存在这三个菜单文件的;

5)不需要的文件可以在目录中直接删除,或者在记事本中添加修改。
2、如何弹出
1)响应命令执行事件,如下:
private void axMxDrawX1_ImplementCommandEvent(object sender, AxMxDrawXLib._DMxDrawXEvents_ImplementCommandEventEvent e)
{
if(e.iCommandId == 99)
{
MessageBox.Show("用户定义命令执行....");
}
}2)响应鼠标右键事件,弹出菜单;
private void axMxDrawX1_MouseEvent(object sender, AxMxDrawXLib._DMxDrawXEvents_MouseEventEvent e)
{
if (e.lType == 3)
{
// 右键按下
string sCmd = "" ;
if (axMxDrawX1.IsRuningCommand(ref sCmd))
{
// 在命令下运行.
String sMenu = axMxDrawX1.GetOcxAppPath() + "\\mxpoptest.mnu";
axMxDrawX1.TrackPopupMenu(e.dX, e.dY, sMenu);
// 设置1,表示鼠标事件,不再往下传递.
axMxDrawX1.SetEventRet(1);
}
else
{
// 非命令下运行
MxDrawXLib.MxDrawResbuf filter = new MxDrawXLib.MxDrawResbuf();
MxDrawXLib.MxDrawEntity ent = (MxDrawXLib.MxDrawEntity)axMxDrawX1.FindEntAtPoint(e.dX, e.dY, filter);
String sPopMenu;
if(ent != null)
{
axMxDrawX1.ClearCurrentSelect();
axMxDrawX1.AddCurrentSelect(ent.ObjectID,true,true);
sPopMenu = axMxDrawX1.GetOcxAppPath() + "\\MxPopMenuEnt.mnu";
}
else
{
sPopMenu = axMxDrawX1.GetOcxAppPath() + "\\MxPopMenu.mnu";
}
axMxDrawX1.TrackPopupMenu(e.dX, e.dY, sPopMenu);
// 设置1,表示鼠标事件,不再往下传递.
axMxDrawX1.SetEventRet(1);
}
}
}3) 编译运行,即可弹出右键菜单