当前位置:首页 > 帮助文档 > 网页开发 > 界面控制
简介工具栏菜单栏标尺栏属性栏命令栏模型栏状态栏浏览模式切换视区光标控制坐标图标右键弹出菜单返回当前图纸的最小外包矩形框返回当前视区坐标返回当前视区坐标的文档坐标值
简介

CAD控件界面上所有元素都可以控制显示或隐藏,点击此处在线演示。下面逐一介绍,控件界面上的元素位置如下图:


view.png

工具栏

控件界面工具栏的显示或隐藏,js代码实现如下:


//隐藏/显示工具栏
function HideToolbar()
{
    mxOcx.ShowToolBar("常用工具",isShow);
    mxOcx.ShowToolBar("绘图工具",isShow);
    mxOcx.ShowToolBar("编辑工具",isShow);
    mxOcx.ShowToolBar("特性",isShow);
    mxOcx.ShowToolBar("ET工具",isShow);

    isShow = !isShow;
}


隐藏工具栏效果如下:


toolbar.png


隐藏或显示工具条上的按钮


主要用到函数说明:


_DMxDrawX::HideToolBarControl


隐藏或显示工具条上的按钮,成功返回TRUE。详细说明如下:


参数 说明

BSTR pszToolBarName  

工具条名称

BSTR pszControlName

按钮名称,多个按钮名称,可以用逗号分隔开,为空,隐藏或显示所有按钮

VARIANT_BOOL isHide

是否隐藏按钮

VARIANT_BOOL isAutoRecalcLayout

是否自动重新布局窗口上的工具条


例如隐藏绘图工具栏上的绘线和绘矩形框按钮js中实现代码说明:


 mxOcx.HideToolBarControl("绘图工具","绘线,绘矩形框",true,true);


隐藏前:


hidebefore.png


隐藏后:


hideafter.png


MxDrawXCustomFunction::Mx_HideToolBarControl


隐藏或显示工具条上的按钮,成功返回TRUE。详细说明如下:


参数 说明

IN LPCTSTR pszToolBarName

工具条名称

IN LPCTSTR pszControlName = NULL

按钮名称,多个按钮名称,可以用逗号分隔开,为空,隐藏或显示所有按钮

IN BOOL isHide = TRUE

是否隐藏按钮

IN BOOL isAutoRecalcLayout = TRUE

是否自动重新布局窗口上的工具条


例如隐藏常用工具栏上的保存,保存为mxg文件,另存为dwg文件按钮js中实现代码说明:


var param = mxOcx.Call("Mx_NewResbuf","");
param.AddString("常用工具");
param.AddString("保存,保存为mxg文件,另存为dwg文件");
mxOcx.CallEx("Mx_HideToolBarControl", param);


隐藏前:


hidebefore1.png


隐藏后:


hideafter1.png


禁用或激活控件工具条上的某个命令按钮


主要用到函数说明:


_DMxDrawX::EnableToolBarButton


禁用或激活控件工具条上的某个命令按钮。详细说明如下:


参数 说明

BSTR pButtonName

工具条中的按钮名称

VARIANT_BOOL isEnable

是否禁用


例如页中禁用打开按钮代码:


document.getElementById("MxDrawOcxCtrl").EnableToolBarButton("打开dwg文件",0);


禁用前:


forbide.png


禁用后:


forbideafter.png


工具条文件


控件MxDraw52.dll所在目录下,所有的mxt都是工具条定义文件,每个mxt文件就是一个工具条, 如下:


文件名 说明
MxDraw-ToolBar.mxt 常用工具条
MxDraw-ToolBar-Draw.mxt 绘图工具条
MxDraw-ToolBar-DrawParam.mxt 特性工具条
MxDraw-ToolBar-Edit.mxt 编辑工具条
MxDraw-ToolBar-ET.mxt 扩展工具条


把不需要的工具条文件删除,控件加载时就不会显示该工具条。


它是文本文件,用记事本打开编辑,格式如下:


“//”是文件中的注释。


文件中第一行是工具条文件头信息,每列内容如下:


如:("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "常用工具" "Y")


第几列 例程中的内容 说明
1 "MxDrawToolBarFile" 工具条文件标志字符串
2 "MxDraw.dll" 工具条中按钮图片资源加载文件 注:后面图标默认从该dll中加载
3 "(214 211 206)" 在资源文件中,按钮图片的透明色
4 "top" 位置,可以是:top,left,bottom,right
5 "常用工具" 工具条名称 注:显示\隐藏函数会使用
6 "Y" 是否可以浮动,Y \N


文件中后面每行代表一个工具条按钮。


每列的内容如下:


如:("打开网上dwg文件" "打开网上dwg文件" "_OpenWebDwg" "IDB_OPENWEBDWG_BITMAP" "" "" "" "Y")


命令名称 命令提示字符串 命令名 控钮在资源文件中的位图ID ID类型 资源文件名 命令ID 没有命定义时,是否不要加载工具按钮
打开网上dwg文件 打开网上dwg文件 _OpenWebDwg IDB_OPENWEBDWG_BITMAP "" "" "" "Y"



在工具条添加一个按钮


修改MxDraw52\Bin\vc100目录下的MxDraw-ToolBar.mxt文件:


L%XVY98]%IJ)ED~3~NWJS{N.png


// 如下,是从工具条所在本地目录的bmp加载,local:表示是个本地的bmp
("自定义打文件按钮" "自定义打文件按钮" "Mx_OpenMxg" "" "" "local:mytoolbar.bmp")
("自定义打文件按钮" "自定义打文件按钮" "Mx_OpenMxg" "" "" "local:mytoolbar.bmp")



改成:


// 如下,是从工具条所在网络目录的bmp加载,web:表示是网上加载
("自定义打文件按钮" "自定义打文件按钮" "Mx_OpenMxg" "" "" "web:mytoolbar.bmp")
("自定义打文件按钮" "自定义打文件按钮" "" "" "" "local:mytoolbar.bmp" "100")


效果如下,多了两个按钮了,用户可以给增加的按钮添加自定义命令。


toolbarb.png


在B/S模式下,一步一步的说一下,如何用户自定义工具条,并响应点击事件。 详细例子可以参考samples\AspNet\AspNet.sln, samples\AspNet\ My-MxDraw-ToolBar.txt。


1、新建菜单文件


新一个文本文件: My-MxDraw-ToolBar.txt,内容如下:


定一个按钮,按钮名为“自定义按钮“,图标是服务器上加载,图标名为mytoolbar.bmp,按钮点击执行命令,命令id为99。


("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "MyTest工具" "Y")
("自定义按钮" "自定义按钮" "" "" "" " web:mytoolbar.bmp " "100")


2、把文件上传到服务器


把My-MxDraw-ToolBar.txt, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。


3、Js程序里引用工具条


工具条文件放在当前网页目录下。


<param name="ToolBarFiles" value="./ My-MxDraw-ToolBar.txt ">


4、响应命令执行事件,如下:


function DoCommandEventFunc(iCmd)
{
    if (iCmd == 100) {
        //该函数在mxcustom.js中 
        alert("工具条按钮点击");
}
}


document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
菜单栏

控件界面菜单栏的显示或隐藏,js代码实现如下:


//隐藏/显示菜单栏
function HideMenuBar()
{

    mxOcx.ShowMenuBar(isShow);
    isShow = !isShow;
}


隐藏菜单栏效果如下:


menubar.png


主要用到函数说明:


_DMxDrawX::HideMenuBarControl


隐藏或显示工具条上的按钮,成功返回TRUE。详细说明如下:


参数说明

VARIANT_BOOL isHide

是否隐藏按钮

sControlName

按钮名称,多个按钮名称,可以用逗号分隔开,为空,隐藏或显示所有按钮


例如隐藏菜单栏上的新建和打开按钮js中实现代码说明:


 mxOcx.HideMenuBarControl("新建(&N),打开(&O)",true);


隐藏前:


hidemnubefore.png


隐藏后:


hidemnuafter.png


菜单栏文件


控件MxDraw52.dll所在目录下,所有的mnu文件,都是 菜单定义文件 ,它是文本文件,用记事本打开编辑,格式如下:


文件中第一行是菜单文件头,每列内容如下 :


文件类型字符串资源文件名(后面菜单的图标默认从该dll中加载)图标的透明颜色位置菜单名是否可以浮动,Y \N
"MxDrawMenuBarFile""MxDraw.dll"(214 211 206)"top""主菜单""Y"


后面每列的内容如下:


命令名称点击执行的命令图标索引字符串资源文件名命令提示字符串"命令ID"ID类型(目前控件内部使用,一般为空)
"新建(&N)"Mx_New"IDB_NEW_BITMAP""""""1"""


命令名称:


    新建(&N)。


点击执行的命令:

    COM接口使用DMxDrawX::RegistUserCustomCommand注册命令。


图标索引字符串:


    IDB_NEW_BITMAP。


资源文件名:


    1.  为空取默认资源文件名,该名称需要去掉控件版本号如:MxDraw52.dll写成MxDraw.dll,控件会根据具体情况加上这个版本号。

    2.  资源文件如是local:开头,表示是一个本地bmp文件,如:取mytoolbar.bmp做工具按钮图标:local:mytoolbar.bmp

         比如:菜单图标从本地bmp文件加载:

         "自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"

    3.  资源文件如是web:开头,表示是一个网络服务器上的bmp文件,如:取mytoolbar.bmp做工具按钮图标: web:mytoolbar.bmp

          比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:

          "自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"


命令提示字符串:


    为空。


命令ID:


    指定菜单点击后响应的命令事件id,如不为空,可以在控件的命令执行事件中响应菜单点击事件: ImplementCommandEvent。


ID类型:


    目前控件内部使用,一般为空。


比如:菜单图标从本地bmp文件加载:


"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"


比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:


"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"


在菜单栏添加一个按钮


1、新建菜单定义文件


新建一个文本文件将后缀名改为mnu(例如mxcad.mnu,此文件可以用记事本打开),文本里面的内容如下:


定义一个菜单按钮,按钮名为自定义新建,图标可以从服务器上加载(从服务器上加载写为web:mytoolbar.bmp),也可以从本地加载(从本地加载写为local:mytoolbar.bmp,本示例图标从本地上加载),图标名为mytoolbar.bmp,按钮点击执行命令,命令id为100。


// 菜单条文件头说明.
// "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "是否可以浮动,Y \N "
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主菜单" "Y"

// 菜单内容说明
// "命令名称"  "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID"  "ID类型" 
"POPMENUS" "文件(&F)"
"自定义新建(&N)1" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"   "" "100" "ID_NEW_BUTTOM"
"自定义新建(&N)2" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"   "" "100" "ID_NEW_BUTTOM"
"自定义新建(&N)3" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"   "" "100" "ID_NEW_BUTTOM"
"新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "MxEdit.mrx"  "" "" "ID_NEW_BUTTOM"
"打开(&O)" "Mx_OpenMxg" "IDB_OPENMXG_BITMAP" "" "" "" "ID_OPEN_BUTTOM"
"打开DWG文件(&M)" "OpenDwg" "IDB_OPENDWG_BITMAP" "" "" ""  "ID_OPENDWG_BUTTOM"
"SEPARATOR"
"最近文件(&X)" "Mc_Empty" "" "" "" "" "ID_FILE_MRU_FILE1"
"SEPARATOR"
"退出(&X)" "Mc_Empty" "" "" "" "" "ID_APP_EXIT"
"POPMENUE"


    “//”是文件中的注释

    文件中后面每行代表一个菜单项

    "POPMENUS" "文件(&F)",表示一个弹出菜单开始

    "POPMENUE" 表示弹出菜单的结束


将图标文件mytoolbar.bmp和菜单定义文件mxcad.mnu放到MxDraw52\Bin\vc100目录下。


L%XVY98]%IJ)ED~3~NWJS{N.png


2、若需要图标从服务器上面加载,需要把图标文件和菜单定义文件上传到服务器


把mxcad.mnu, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。


3、Js程序里引用菜单


菜单定义文件放在当前网页目录下。


<param name="Iniset" value="MenuFile=./mxcad.mnu">


[SZP(~)G{0MWJ`~4]W6JPSU.png


4、响应命令执行事件,如下:


function DoCommandEventFunc(iCmd)
{
    if (iCmd == 100) {
        //该函数在mxcustom.js中 
        alert("菜单按钮点击");
}
}


document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;


效果如下:


mnuebar.png


右键弹出菜单


控件支持鼠标右键弹出菜单,菜单的文件格式和前面的主菜单文件格式一样。 详细参考例子,samples\ie\iedemoTest.htm。


COM接口DMxDrawX::TrackPopupMenu


在B/S模式下,下面一步一步的说明如何支持该功能:


1、新建菜单定义文件


新一个文本文件: mxpop.mnu,内容如下:


定义一个菜单按钮,按钮名为MyMenuButtonName,图标是服务器上加载,图标名为mytoolbar.bmp,按钮点击执行命令,命令id为99。


"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主菜单" "Y"
"POPMENUS" "文件(&F)"
"MyMenuButtonName(&N)"  ""  ""  "web:mytoolbar.bmp"  "" "99"
"POPMENUE"


2、把文件上传到服务器


把mxpop.meu, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。


3、响应鼠标右键事件,弹出菜单


菜单定义文件放在当前网页目录下。


document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;


function MouseEvent(dX, dY, lType) {
// 3表示鼠标右键按下   
 if(lType == 3)
{
        var  sPopMenu = mxOcx.GetOcxAppPath() + ".\\mxpop.mnu"
        mxOcx.TrackPopupMenu(dX, dY, sPopMenu);
        // 设置1,表示鼠标事件,不再往下传递.
        mxOcx.SetEventRet(1);
}
}


4、响应命令执行事件,如下:


function DoCommandEventFunc(iCmd)
{
    if (iCmd == 99) {
        //该函数在mxcustom.js中 
        alert("菜单按钮点击");
}
}


document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
标尺栏

控件界面标尺栏的显示或隐藏,js代码实现如下:


//隐藏/显示标尺栏
function HideRulerWindow()
{

    mxOcx.ShowRulerWindow(isShow);
    isShow = !isShow;
}


隐藏标尺栏效果如下:


RulerWindow.png

属性栏

控件界面属性栏的显示或隐藏,js代码实现如下:


//隐藏/显示属性栏
function HidePropertyWindow()
{

    mxOcx.ShowPropertyWindow(isShow);
    isShow = !isShow;
}


隐藏属性栏效果如下:


PropertyWindow.png

命令栏

控件界面命令栏的显示或隐藏,js代码实现如下:


//隐藏/显示命令栏
function HideCommandWindow()
{

    mxOcx.ShowCommandWindow(isShow);
    isShow = !isShow;
}


隐藏命令栏效果如下:


CommandWindow.png

模型栏

控件界面模型栏的显示或隐藏,js代码实现如下:


//隐藏/显示模型栏
function HideModelBar()
{

    mxOcx.ShowModelBar(isShow);
    isShow = !isShow;
}


隐藏模型栏效果如下:


ModelBar.png

状态栏

控件界面状态栏的显示或隐藏,js代码实现如下:


//隐藏/显示状态栏
function HideStatusBar()
{

    mxOcx.ShowStatusBar(isShow);
    isShow = !isShow;
}


隐藏状态栏效果如下:


StatusBar.png

浏览模式切换

控件界面浏览模式切换,js代码实现如下:


//模式切换
var isBrowner = false;
function BrownerMode() {
    isBrowner = !isBrowner;
    mxOcx.BrowseMode = isBrowner;
    mxOcx.ShowMenuBar = !isBrowner;
    mxOcx.ShowPropertyWindow = !isBrowner;
}


浏览模式切换效果如下:


BrownerMode.png

视区

设置设置视区背景色


JS把背景色变成红色= 123,绿色=55,蓝色=78,颜色值是由(0xFF FF FF)6位的16进制数据组成,分别代表示(0x红,绿,蓝),比如要设置颜色: 红色= 123,绿色=55,蓝色=78的颜色。


123= 0x7B, 55=0x37, 78=0x4E


也就是0x7B 37 4E, 0x7B374E = 8075086。所以设置ViewColor =8075086:


<param name="ViewColor" value="8075086">


设置视区背景色为渐变色


设置背景为渐变色填充,RGB是填充的渐变色,标记为 0,不使用渐变填充颜色,1使用渐变填充颜色。


axMxDrawX1.Iniset = "ViewGradientColor=" + "255" + ";1";
axMxDrawX1.ViewColor = Color.FromArgb(10, 22, 200, 0);



设置水印背景


COM接口_DMxDrawX::Watermark


例如:设置文件名:d:\\mxcad.jpg,透明度为70,居中显示,x方向距离为5,y方向距离为5,如下:


ocx.Watermark = "d:\\mxcad.jpg,70,5,5,1"


JS例子:


var iShowWatermark = false;
function ShowWatermark() {
    iShowWatermark = !iShowWatermark;
    if (iShowWatermark) {
        mxOcx.Watermark = mxOcx.GetOcxAppPath() + "\\Watermark.png" + ",20,5,5,1";
        mxOcx.ViewColor = 16777215; // 背景色改成白色
    }
    else {
        mxOcx.Watermark = "";
        mxOcx.ViewColor = 0; // 背景色改成白色
    }
}


绘光栅图到背景


COM接口_DMxDrawX::DrawImageToBackground


参考说明如下:


BSTR sFileName 光栅图文件.DWGBMPJPG文件路径
LONG lLeftUpX栅图显示的在控件视区显示的左上角位置X,视区窗口坐标
LONG lLeftUpY 栅图显示的在控件视区显示的左上角位置Y,视区窗口坐标


把DWG文件当着背景导入


COM接口_DMxDrawX::OpenBackgroundFile


把一个dwg文件,或者图像文件当着一个背景导入,参考说明如下:


VARIANT_BOOL isGreyness是否灰显示
LONG lightColor 背景灰度显示颜色
VARIANT_BOOL isZoomE  是否自动把调用ZoomE操作
VARIANT_BOOL isUpDisplay 是否自动调用更新显示
sFile DWGBMPJPG文件路径


对象夹点显示颜色


COM接口IniSet="GripColor=RGB"


例如: JS,把夹点颜色改成 红色= 123,绿色=55,蓝色=78,设置GripColor=8075086:


<param name="IniSet" value="GripColor=8075086">
光标控制

设置光标线显示长度:


COM接口_DMxDrawX::CursorLong
_DMxDrawX::SetCursorCrossLong


    设置为0表示无限长:CursorLong= 0,默认值为30。


设置光标矩形框大小:


COM接口_DMxDrawX::CursorWidth
_DMxDrawX::SetCursorPickRect


    默认值为6 ,单位是屏幕像素大小。


自定义设置光标


COM接口,临时需要改变光标,用如下函数完成:


保存光标状态,与RestoreCursor配合使用_DMxDrawX::SaveCursor
设置光标,从cur光标文件加载_DMxDrawX::SetCursor
恢复光标_DMxDrawX::RestoreCursor


设置默认缺省时光标


COM接口_DMxDrawX::UseArrowCursor


设置默认使用箭头光标,不要使用缺省的十字光标:


<param name="UseArrowCursor" value="1">


从文件加载一个默认光标,控件默认状态下将使用这个光标,路径是个相对MxDrawX.ocx所在目录下的文件。


Iniset属性,DEFAULTCURSOR=MyCursor.cur。


例如JS:


<param name="Iniset" value="DEFAULTCURSOR=MyCursor.cur">


光标位置


得到位置,文档坐标,是个MxDrawPoint对象。


COM接口_DMxDrawX::GetInputCursorPos


设置光标位置,文档坐标。


COM接口_DMxDrawX::SetInputCursorPos
坐标图标

显示或隐藏接口:


COM接口 DMxDrawX::IsDrawCoord


例如隐藏坐标图标,JS:


<param name="IsDrawCoord" value="0">


隐藏前:


hidebefore3.png


隐藏后:


hideafter3.png

右键弹出菜单

用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下 :


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"


    此处的关键字为命令行提示命令。


新一个文本文件: 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"


新一个文本文件: 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"


文件中第一行是菜单文件头,每列内容如下 :


文件类型字符串 资源文件名(后面菜单的图标默认从该dll中加载) 图标的透明颜色 位置 菜单名
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单"


    “//”是文件中的注释

    文件中后面每行代表一个菜单项

    "POPMENUS" "对象(&O)",表示一个弹出菜单开始

    "POPMENUE" 表示弹出菜单的结束

    "SEPARATOR" 表示弹出菜单的分割线


后面每列的内容如下:


命令名称 点击执行的命令 图标索引字符串 资源文件名 命令提示字符串 "命令ID" ID类型(目前控件内部使用,一般为空)
"新建(&N)" Mx_New "IDB_NEW_BITMAP" "" "" "" ""


命令名称:


    新建(&N)。


点击执行的命令:

    其它语言使用DMxDrawX::RegistUserCustomCommand注册命令。


图标索引字符串:


    IDB_NEW_BITMAP。


资源文件名:


    1.  为空取默认资源文件名,该名称需要去掉控件版本号如:MxDraw52.dll写成MxDraw.dll,控件会根据具体情况加上这个版本号。

    2.  资源文件如是local:开头,表示是一个本地bmp文件,如:取mytoolbar.bmp做工具按钮图标:local:mytoolbar.bmp

         比如:菜单图标从本地bmp文件加载:

         "自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"

    3.  资源文件如是web:开头,表示是一个网络服务器上的bmp文件,如:取mytoolbar.bmp做工具按钮图标: web:mytoolbar.bmp

          比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:

          "自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"


命令提示字符串:


    为空。


命令ID:


    指定菜单点击后响应的命令事件id,如不为空,可以在控件的命令执行事件中响应菜单点击事件: ImplementCommandEvent。


ID类型:


    目前控件内部使用,一般为空。


2、响应鼠标右键事件,弹出菜单


主要用到函数说明:


_DMxDrawX::TrackPopupMenu


在指定位置弹出一个菜单。详细说明如下:


参数 说明

DOUBLE dX

弹出菜单的位置X值,是文档坐标

DOUBLE dY

弹出菜单的位置Y值,是文档坐标

sMenuFile

菜单定义文件,支持http开头的网络路径


if(lType == 3)
{
    // 右键按下
    var ret = mxOcx.Call("Mx_IsRuningCommand", "");
    var sStatuIsOK = ret.AtString(0);
    var sStatuIsintellisel = ret.AtString(1);
    if ((sStatuIsOK == "Ok") && (sStatuIsintellisel != "intellisel")){
        // 在命令下运行.
        var sMenu = mxOcx.GetOcxAppPath() + "\\mxpoptest.mnu";
        mxOcx.TrackPopupMenu(dX, dY, sMenu);
        // 设置1,表示鼠标事件,不再往下传递.
        mxOcx.SetEventRet(1);
        return;
    }
    else
    {
        // 非命令下运行
        var filter = mxOcx.NewResbuf();
        var ent = mxOcx.FindEntAtPoint(dX, dY, filter);
        var sPopMenu;
        if(ent != null)
        {
            mxOcx.ClearCurrentSelect();
            mxOcx.AddCurrentSelect(ent.ObjectID,true,true);

            sPopMenu = mxOcx.GetOcxAppPath() + "\\MxPopMenuEnt.mnu"
        }
        else
        {
            sPopMenu = mxOcx.GetOcxAppPath() + "\\MxPopMenu.mnu"
        }


        mxOcx.TrackPopupMenu(dX, dY, sPopMenu);
        // 设置1,表示鼠标事件,不再往下传递.
        mxOcx.SetEventRet(1);
    }
}


3、响应命令执行事件,如下:


function DoCommandEventFunc(iCmd)
{
    if (iCmd == 55) {
        
        alert("菜单按钮点击");
}
}


4、运行效果如下:


当CAD控件视区无实体时用户右击效果:


rightkey.png


当CAD控件视区有实体时用户右击实体效果:


rihghtkey1.png


当CAD控件在命令下运行时用户右击实体效果:


rightkry2.png


用户定义命令执行效果:


rightkey9.png

返回当前图纸的最小外包矩形框

js代码实现如下:


var pRet =mxOcx.Call("Mx_GetMcDbDatabaseBound", "");

if (pRet.AtString(0) == "Ok") {
    alert(
        "LBx:" + pRet.AtDouble(1) +
        "LBy:" + pRet.AtDouble(2) +
        "Rtx:" + pRet.AtDouble(3) +
        "Rty:" + pRet.AtDouble(4));
}
else {
    alert("调用失败");
}
返回当前视区坐标

js代码实现如下:


var pRet = mxOcx.CallLongParam1("Mx_GetViewCoord", 1);

if (pRet.AtString(0) == "Ok") {
    alert(
        "LBx:" + pRet.AtDouble(1) +
        "LBy:" + pRet.AtDouble(2) +
        "Rtx:" + pRet.AtDouble(3) +
        "Rty:" + pRet.AtDouble(4));
}
else {
    alert("调用失败");
}
返回当前视区坐标的文档坐标值

js代码实现如下:


var pRet = mxOcx.Cal("Mx_GetViewCoord");

if (pRet.AtString(0) == "Ok") {
    alert(
        "LBx:" + pRet.AtDouble(1) +
        "LBy:" + pRet.AtDouble(2) +
        "Rtx:" + pRet.AtDouble(3) +
        "Rty:" + pRet.AtDouble(4));
}
else {
    alert("调用失败");
}
梦想CAD是专业的CAD插件(控件),可轻松在网页、手机及BS/CS程序中浏览编辑DWG文件,不需安装AutoCAD即可运行。经十余年累积已非常稳定可靠,有关键的空间搜索算法,并使用汇编优化,可同时处理50万级实体,有非常高的图形显示和处理效率。
联系我们
技术TEL:400-888-5703
185-8173-1060
客服I QQ: 3570505660
技术I QQ: 827867134
技术II QQ:6884123
VIP服务购买
销售TEL:156-8136-8971
销售QQ:710714273
用户交流
控件QQ交流群1:73281982
控件QQ交流群2:112199959
MxCAD软件群 1:515771658
技术I:QQ
827867134
客服I:QQ
3570505660
销售QQ
710714273
联系电话400-888-5703