JS实现预览DWG文件

您所在的位置:网站首页 苹果手机怎么打开dwg文件怎么打开 JS实现预览DWG文件

JS实现预览DWG文件

2023-11-27 15:51| 来源: 网络整理| 查看: 265

前言:近日,接到一些无理的需求,需要在网页上实现预览CAD图纸文件(dwg格式)。为此,本人特意去各大学术论坛调研(百度、Google)。最终寻找到以下方法,本着开源的精神,在此分享出来。

注意:只支持IE浏览器、360浏览器标准模式

以下内容是代码部分

index.html MxDrawX ActiveX 5.2 function alert(str) { var mxOcx = document.getElementById("MxDrawXCtrl"); if(mxOcx) mxOcx.Call("Mx_Alert",str); } function OpenFile() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.SendStringToExecute("OpenDwg"); } function ZoomE() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.SendStringToExecute("ZoomE"); } function WindowZoom() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.SendStringToExecute("WindowZoom"); } function ZoomR() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.DoCommand(56); } var isShow = false; function HideToolbar() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.ShowToolBar("绘图工具",isShow); MxDrawX.ShowToolBar("编辑工具",isShow); isShow = !isShow; } function Pan() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.DoCommand(55); } function ZoomWindow() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.SendStringToExecute(); } function HideLayoutBar() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.ShowToolBars = !MxDrawX.ShowToolBars; } function PrintCmd() { var MxDrawX = document.getElementById("MxDrawXCtrl"); MxDrawX.SendStringToExecute("Plot"); } 打开DWG文件 | 范围缩放 | 窗口缩放 | 实时缩放 | 视区移动 | 显示/隐藏 工具条 | 打印 | 返回主页 绘制自定义实体 | 绘制动画 | 显示水印 | 浏览模式切换 | 设置超连接 | 绘制标记 | 写扩展数据 | 读扩展数据 | 查找图上文字 | 选择范围打印 LoadMxDrawX("https://demo.mxdraw3d.com:3562/test.dwg","https://demo.mxdraw3d.com:3562/MxDrawX52.CAB#version=11,0,0,1","https://demo.mxdraw3d.com:3562/MxDrawx86Setup.exe","https://demo.mxdraw3d.com:3562/MxChromex86Setup.exe"); 控件已经购买微软代码签名证书,正常下都能自动在网页中加载,建议使用IE为内核的浏览器,CAB安装包有13M,所以加载需要一定时间(2M网络,一般3分钟左右,),请耐心等待... 如果不能加载,请关掉你电脑上的杀毒软件,特别是360安全卫土和360杀毒,然后再试... 或者下载MxDrawx86Setup.exe,MxDrawx64Setup.exe手动安装后,然后再试... 下载MxDrawX52.CAB自动安装包到本地 下载MxDrawX52.CAB... 下载MxDrawx86Setup.exe手动32位安装包到本地 下载MxDrawx86Setup.exe... 谷歌浏览器使用,安装指定Chrome内核浏览器 下载sogou_explorer_11.0.1_0722.exe... var mxOcx = document.getElementById("MxDrawXCtrl"); function DoCustomEntity() { document.getElementById("MxDrawXCtrl").DoCommand(1); } function DoDynInsert() { document.getElementById("MxDrawXCtrl").DoCommand(2); } function DoCmd(iCmd) { mxOcx.DoCommand(iCmd); } function DoCommandEventFunc(iCmd) { if (iCmd == 1) { //该函数在mxcustom.js中 InsertCustomEntity(); } else if (iCmd == 2) { DynInsert(); } else if (iCmd == 3) { InsertImage(); } else if (iCmd == 4) { DrawGif(); } else if (iCmd == 5) { ModifyImage(); } else if (iCmd == 6) { BrownerMode(); } else if (iCmd == 7) { ShowWatermark(); } else if (iCmd == 8) { SetHyperlink(); } else if (iCmd == 99) { DoUserCustomMenu(); } else if (iCmd == 9) { DrawFlag(); } else if (iCmd == 10) { CreateGroup(); } else if (iCmd == 11) { WriteXData(); } else if (iCmd == 12) { ReadXData(); } else if (iCmd == 13) { FindText(); } else if (iCmd == 14) { Print(); } else if (iCmd == 15) { PrintHtml(); } else if (iCmd == 55) { mxOcx.SendStringToExecute("P"); } else if (iCmd == 56) { mxOcx.SendStringToExecute("ZoomR"); } } function DoDynWorldDrawFun(dX, dY, pWorldDraw, pData) { var sGuid = pData.Guid; mxOcx.SetEventRet(0); if (sGuid == "TestDynDraw") { // 动态插入图块。 var firstPt = pData.GetPoint("pt1"); if (firstPt == null) return; var sBlkName = pData.GetString("BlkName"); var secondPt = mxOcx.NewPoint(); secondPt.x = dX; secondPt.y = dY; var vec = firstPt.SumVector(secondPt); var dAng = vec.Angle(); pWorldDraw.DrawBlockReference(firstPt.x, firstPt.y, sBlkName, 1.0, dAng * 180.0 / 3.14159265 + 90.0); mxOcx.SetEventRet(1); } else if (sGuid == "TestDynDraw1") { var sBlkName = pData.GetString("BlkName"); pWorldDraw.DrawBlockReference(dX, dY, sBlkName, 1.0, 0.0); } } function DynInsert() { var sBlkName = "Tree"; var sBlkFile = mxOcx.GetOcxAppPath() + "\Blk\树.dwg"; mxOcx.InsertBlock(sBlkFile, "Tree"); var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPssage = "点取插入点"; var spDrawData1 = getPt.InitUserDraw("TestDynDraw1"); spDrawData1.SetString("BlkName", "Tree"); if (getPt.go() != 1) { return; } var frstPt = getPt.value(); if (frstPt == null) { return; } var getSecondPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); var spDrawData = getSecondPt.InitUserDraw("TestDynDraw"); getSecondPssage = "点取旋转角度"; getSecondPt.basePoint = frstPt; getSecondPt.setUseBasePt(true); spDrawData.SetPoint("pt1", frstPt); spDrawData.SetString("BlkName", "Tree"); if (getSecondPt.go() != 1) { return; } spDrawData.Draw(); } function DoInputPointToolTipFun(ent) { var sHyperlinks = ent.Hyperlinks; if (sHyperlinks.length != 0) { var sClassName = ent.ObjectName; var tip = "" + sClassName + "" + sHyperlinks + ""; mxOcx.SetEventRetString(tip); } ent = null; CollectGarbage(); } function DoHyperlinkClickFun(ent, dX, dY) { mxOcx.GotoURL(ent.Hyperlinks); mxOcx.SetEventRet(1); } function DoUserCustomMenu() { var filter = mxOcx.NewResbuf(); var ent = mxOcx.GetPopupMenuEntity(filter); if (ent == null) return; var sName = ent.ObjectName; var sT = "点击了:" + sName + "实体"; alert(sT); } // 控件鼠标事件 function MouseEvent(dX, dY, lType) { if (lType == 3) { // 鼠标右键按下 var filter = mxOcx.NewResbuf(); // 5020 = RTDXF0,只选择直线实体,设置过滤条件 //filter.AddStringEx("LINE",5020); 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); } } //初始化 function InitMxDrawX() { if (mxOcx) { if (!mxOcx.IsIniting()) { clearInterval(mxtime); mxOcx.ReDraw(); // 控件初始化完成,需要在启动做的事,在这里做 // 启动时打开文件 //var sDwgFile = mxOcx.GetOcxAppPath() + "\管道安装大样图.dwg"; //mxOcx.OpenDwgFile("http://demo.mxdraw3d.com:3562/test.dwg"); //.... mxOcx.ImpInputPointToolTipFun = DoInputPointToolTipFun; console.log("Init ok") } } } mxtime = setInterval(InitMxDrawX, 100); document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc; document.getElementById("MxDrawXCtrl").ImpDynWorldDrawFun = DoDynWorldDrawFun; document.getElementById("MxDrawXCtrl").ImpInputPointToolTipFun = DoInputPointToolTipFun; document.getElementById("MxDrawXCtrl").ImpHyperlinkClickFun = DoHyperlinkClickFun; document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent; document.getElementById("MxDrawXCtrl").ImpExplodeFun = ExplodeFun; document.getElementById("MxDrawXCtrl").ImpGetGripPointsFun = GetGripPointsFun; document.getElementById("MxDrawXCtrl").ImpMoveGripPointsAtFun = MoveGripPointsFun; document.getElementById("MxDrawXCtrl").ImpTransformByFun = TransformByFun; document.getElementById("MxDrawXCtrl").ImpGetGeomExtentsFun = GetGeomExtentsFun; function InsertImage() { var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPssage = "点取图片的插入中点"; if (getPt.go() != 1) { return; } var frstPt = getPt.value(); if (frstPt == null) { return; } var sImageFile = mxOcx.GetOcxAppPath() + "\mxcad.jpg"; mxOcx.DrawImageMark(frstPt.x, frstPt.y, -100.0, 0.0, sImageFile, "", true); } function DrawGif() { var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPssage = "点取图片的插入中点"; if (getPt.go() != 1) { return; } var frstPt = getPt.value(); if (frstPt == null) { return; } var sImageFile1 = "http://demo.mxdraw3d.com:3562/1.png"; var sImageFile2 = "http://demo.mxdraw3d.com:3562/2.png"; var sImageFile3 = "http://demo.mxdraw3d.com:3562/3.png"; // var lId = mxOcx.DrawImageMark(frstPt.x, frstPt.y, -20, 45.0 * 3.14159265 / 180.0, sImageFile1, // sImageFile1 + "," + sImageFile2 + "," + sImageFile3, true); var lId = mxOcx.DrawImageMark(frstPt.x, frstPt.y, 2, 0, sImageFile1, sImageFile1 + "," + sImageFile2 + "," + sImageFile3, true); mxOcx.TwinkeEnt(lId); } function ModifyImage() { var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnssage = "选择图像对象"; if (selEnt.go() != 1) return; var image = selEnt.Entity(); if (image == null) return; if (image.ObjectName != "McDbMxImageMark") { alert("选择对象不是图像") return; } var sImageFile = mxOcx.GetOcxAppPath() + "\mxcad.jpg"; image.ImageFile = sImageFile; } function geturl() { return document.URL; } var isBrowner = false; function BrownerMode() { isBrowner = !isBrowner; mxOcx.BrowseMode = isBrowner; mxOcx.ShowMenuBar = !isBrowner; mxOcx.ShowPropertyWindow = !isBrowner; } var iShowWatermark = false; function ShowWatermark() { iShowWatermark = !iShowWatermark; if (iShowWatermark) { mxOcx.Watermark = "http://www.mxdraw.com/download/Watermark.png" + ",20,5,5,1"; mxOcx.ViewColor = 16777215; // 背景色改成白色 } else { mxOcx.Watermark = ""; mxOcx.ViewColor = 0; // 背景色改成白色 } } function SetHyperlink() { var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnssage = "选择要设置的对象"; if (selEnt.go() != 1) return; var ent = selEnt.Entity(); if (ent == null) return; ent.Hyperlinks = "www.mxdraw.com"; mxOcx.DynToolTipTime = 100; } function CreateGroup() { mxOcx.Prompt("选择要做成组的实体:"); var ss = mxOcx.NewSelectionSet(); // var pt1 = mxOcx.NewPoint(); // var pt2 = mxOcx.NewPoint(); // var filter = mxOcx.NewResbuf(); // ss.Select(8, pt1, pt2, filter); ss.Select2(8, null, null, null); var param = mxOcx.NewResbuf(); for (var i = 0; i < ss.Count; i++) { var ent = ss.Item(i); if (ent == null) continue; param.AddObjectId(ent.ObjectID); } if (param.Count == 0) return; mxOcx.CreateGroup("", param); } function DrawFlag() { while (true) { var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPssage = "点取绘制点"; if (getPt.go() != 1) { return; } var frstPt = getPt.value(); if (frstPt == null) return; var dLen = mxOcx.GetCursorPickRect(); dLen = mxOcx.ViewLongToDocCoord(dLen); dLen *= 3.0; mxOcx.DrawVectorLine(frstPt.x - dLen, frstPt.y - dLen, frstPt.x + dLen, frstPt.y + dLen, 255 ); mxOcx.DrawVectorLine(frstPt.x - dLen, frstPt.y + dLen, frstPt.x + dLen, frstPt.y - dLen, 255 ); mxOcx.DrawVectorCircle(frstPt.x, frstPt.y, dLen * 0.5, 65280); mxOcx.UpdateDisplay(); } } function WriteXData() { var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnssage = "选择要写扩展数据的对象"; if (selEnt.go() != 1) return; var ent = selEnt.Entity(); if (ent == null) return; if (ent.SetxDataString("ExDataName", 0, "ExDataValue")) { alert("写扩展数据成功"); } else { alert("写扩展数据失败"); } } function ReadXData() { var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnssage = "选择要读取扩展数据的对象"; if (selEnt.go() != 1) return; var ent = selEnt.Entity(); if (ent == null) return; var val = ent.GetxDataString2("ExDataName", 0); if (mxOcx.IsOk()) { alert(val); } else { alert("没有扩展数!"); } } function FindText() { var param = mxOcx.NewResbuf(); param.AddString(""); param.AddDouble(3); var ret = mxOcx.CallEx("Mx_ShowMTextDialog", param); if (ret.AtString(0) != "Ok") { return; } var txt = ret.AtString(1); var ss = mxOcx.NewSelectionSet(); var spFilte = mxOcx.NewResbuf(); // 把文字对象,当着过滤条件. spFilte.AddStringEx("TEXT,MTEXT", 5020); // 得到图上,所有文字对象. ss.Select2(5, null, null, null, spFilte); // 遍历每个文字. var bFind = false; for (var i = 0; i < ss.Count; i++) { var ent = ss.Item(i); if (ent == null) continue; if (ent.ObjectName == "McDbText") { var sTxt = ent.TextString; if (sTxt == txt) { // 把文字放到视区中间. mxOcx.PutEntityInView(ent.ObjectID, 300); var dLen = mxOcx.ViewLongToDocCoord(80); // 绘制一个标记圆. mxOcx.DrawVectorCircle(ent.Position.x, ent.Position.y, dLen, 65280); bFind = true; } } else if (ent.ObjectName == "McDbMText") { var param = mxOcx.NewResbuf(); param.AddObjectId(ent.ObjectID); var ret = mxOcx.CallEx("Mx_GetMTextContent", param); if (ret.AtString(0) == "Ok") { if (ret.AtString(1) == txt) { // 把文字放到视区. mxOcx.PutEntityInView(ent.ObjectID, 300); var dLen = mxOcx.ViewLongToDocCoord(80); // 绘制一个标记圆. mxOcx.DrawVectorCircle(ent.Location.x, ent.Location.y, dLen, 65280); bFind = true; break; } } } ent = null; } if (!bFind) { alert("没有找到文字对象"); } // 在这里必须显示释放控件的COM对象指针. ss = null; spFilte = null; CollectGarbage(); } function PrintHtml() { var print = mxOcx.NewComObject("IMxDrawPrint"); if (print.PrintHtml(true)) { alert("打印成功"); } else { alert("打印失败"); } } function Print() { var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPssage = "点取打印范围第一点"; if (getPt.go() != 1) { return; } var frstPt = getPt.value(); if (frstPt == null) return; var utl = mxOcx.NewUtility(); var secondPt = utl.GetCorner(frstPt, "点取打印范围第二点"); if (secondPt == null) return; var print = mxOcx.NewComObject("IMxDrawPrint"); if (print.Print(frstPt.x, frstPt.y, secondPt.x, secondPt.y)) { alert("打印成功"); } else { alert("打印失败"); } } mxcustom.js // 插入自定义实体函数 function InsertCustomEntity() { var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPssage = "点取第一点"; if (getPt.go() != 1) return; var frstPt = getPt.value(); if (frstPt == null) return; var getSecondPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getSecondPssage = "点取第二点"; getSecondPt.basePoint = frstPt; getSecondPt.setUseBasePt(true); if (getSecondPt.go() != 1) return; var secondPt = getSecondPt.value(); if (secondPt == null) return; var ent = mxOcx.DrawCustomEntity("TestMxCustomEntity", ""); ent.SetPoint("spt", frstPt); ent.SetPoint("ept", secondPt); ent.SetString("MxObjectAppName", "我的自定义实体名"); } // 格式化字符串 function formatNumber(num, pattern) { var strarr = num ? num.toString().split('.') : ['0']; var fmtarr = pattern ? pattern.split('.') : ['']; var retstr = ''; // 整数部分 var str = strarr[0]; var fmt = fmtarr[0]; var i = str.length - 1; var comma = false; for (var f = fmt.length - 1; f >= 0; f--) { switch (fmt.substr(f, 1)) { case '#': if (i >= 0) retstr = str.substr(i--, 1) + retstr; break; case '0': if (i >= 0) retstr = str.substr(i--, 1) + retstr; else retstr = '0' + retstr; break; case ',': comma = true; retstr = ',' + retstr; break; } } if (i >= 0) { if (comma) { var l = str.length; for (; i >= 0; i--) { retstr = str.substr(i, 1) + retstr; if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr; } } else retstr = str.substr(0, i + 1) + retstr; } retstr = retstr + '.'; // 处理小数部分 str = strarr.length > 1 ? strarr[1] : ''; fmt = fmtarr.length > 1 ? fmtarr[1] : ''; i = 0; for (var f = 0; f < fmt.length; f++) { switch (fmt.substr(f, 1)) { case '#': if (i < str.length) retstr += str.substr(i++, 1); break; case '0': if (i < str.length) retstr += str.substr(i++, 1); else retstr += '0'; break; } } return retstr.replace(/^,+/, '').replace(/.$/, ''); } // 自定义实体绘制函数 function ExplodeFun(pCustomEntity, pWorldDraw) { var sGuid = pCustomEntity.Guid; if (sGuid == "TestMxCustomEntity") { if (!pCustomEntity.IsHave("ept")) return; var stp = pCustomEntity.GetPoint("spt"); if (stp == null) return; var ept = pCustomEntity.GetPoint("ept"); if (ept == null) return; var mxUtility = mxOcx.NewUtility(); var vec = ept.SumVector(stp); vec.Mult(0.5); var midPt = mxOcx.NewPoint(); midPt.x = stp.x; midPt.y = stp.y; midPt.Add(vec); var dAng = vec.Angle(); dAng = mxUtility.GetDimAngle(dAng); var dDis = 0.0; dDis = stp.DistanceTo(ept); var sTxt = "L=" + formatNumber(dDis, '#.##'); dAng = dAng * 180.0 / 3.14159265; vec.RotateByXyPlan(3.14159265 / 2.0); vec.Normalize(); vec.Mult(10); stp.Add(vec); ept.Add(vec); pWorldDraw.DrawLine(stp.x, stp.y, ept.x, ept.y); vec.Mult(2); stp.Sum(vec); ept.Sum(vec); pWorldDraw.DrawLine(stp.x, stp.y, ept.x, ept.y); pWorldDraw.SetColorIndex(1); pWorldDraw.DrawText(midPt.x, midPt.y, sTxt, 5, dAng, 1, 2); mxOcx.SetEventRet(1); } } // 返回自定义实体夹点 function GetGripPointsFun(pCustomEntity) { var sGuid = pCustomEntity.Guid; if (sGuid == "TestMxCustomEntity") { if (!pCustomEntity.IsHave("ept")) return; var stp = pCustomEntity.GetPoint("spt"); if (stp == null) return; var ept = pCustomEntity.GetPoint("ept"); if (ept == null) return; var ret = mxOcx.NewResbuf(); ret.AddPoint(stp); ret.AddPoint(ept); mxOcx.SetEventRetEx(ret); } } // 移动自定义实体夹点 function MoveGripPointsFun(pCustomEntity, lGridIndex, dOffsetX, dOffsetY) { var sGuid = pCustomEntity.Guid; if (sGuid == "TestMxCustomEntity") { if (!pCustomEntity.IsHave("ept")) return; var stp = pCustomEntity.GetPoint("spt"); if (stp == null) return; var ept = pCustomEntity.GetPoint("ept"); if (ept == null) return; if (lGridIndex == 0) { stp.x = stp.x + dOffsetX; stp.y = stp.y + dOffsetY; pCustomEntity.SetPoint("spt", stp); } else { ept.x = ept.x + dOffsetX; ept.y = ept.y + dOffsetY; pCustomEntity.SetPoint("ept", ept); } mxOcx.SetEventRet(1); } } // 变换自定义实体 function TransformByFun(pCustomEntity, pMatXform) { var sGuid = pCustomEntity.Guid; if (sGuid == "TestMxCustomEntity") { if (!pCustomEntity.IsHave("ept")) return; var stp = pCustomEntity.GetPoint("spt"); if (stp == null) return; var ept = pCustomEntity.GetPoint("ept"); if (ept == null) return; stp.TransformBy(pMatXform); ept.TransformBy(pMatXform); pCustomEntity.SetPoint("spt", stp); pCustomEntity.SetPoint("ept", ept); mxOcx.SetEventRet(1); } } // 返回自定义实体最小外包 function GetGeomExtentsFun(pCustomEntity) { var sGuid = pCustomEntity.Guid; if (sGuid == "TestMxCustomEntity") { if (!pCustomEntity.IsHave("ept")) return; var stp = pCustomEntity.GetPoint("spt"); if (stp == null) return; var ept = pCustomEntity.GetPoint("ept"); if (ept == null) return; var ret = mxOcx.NewResbuf(); ret.AddPoint(stp); ret.AddPoint(ept); mxOcx.SetEventRetEx(ret); } } function GetOsnapPointsFun(pCustomEntity, lOsnapMode, dPickPointX, dPickPointY, dLastPointX, dLastPointY) { // enum OsnapMode { kOsModeEnd = 1, // kOsModeMid = 2, // kOsModeCen = 3, // kOsModeNode = 4, // kOsModeQuad = 5, // kOsModeIns = 7, // kOsModePerp = 8, // kOsModeTan = 9, // kOsModeNear = 10, // kOsModeInt = 11 // }; var sGuid = pCustomEntity.Guid; if (sGuid == "TestMxCustomEntity") { if(!pCustomEntity.IsHave("ept") ) return; var stp = pCustomEntity.GetPoint("spt"); if(stp == null) return; var ept = pCustomEntity.GetPoint("ept"); if(ept == null) return; if(lOsnapMode == 1) { // 端点捕捉。 var pickPoint = mxOcx.NewPoint(); pickPoint.x = dPickPointX; pickPoint.y = dPickPointY; var dDis1 = pickPoint.DistanceTo(stp); var dDis2 = pickPoint.DistanceTo(ept); var ret = mxOcx.NewResbuf(); if(dDis1 < dDis2) { ret.AddDouble(stp.x); ret.AddDouble(stp.y); } else { ret.AddDouble(ept.x); ret.AddDouble(ept.y); } mxOcx.SetEventRetEx(ret); } else if(lOsnapMode == 10) { // 最近点捕捉. var pickPoint = mxOcx.NewPoint(); pickPoint.x = dPickPointX; pickPoint.y = dPickPointY; var line = mxOcx.NewEntity("IMxDrawLine"); line.EndPoint = ept; line.StartPoint = stp; var closePoint = line.GetClosestPointTo2(pickPoint,false); if(closePoint != null) { var ret = mxOcx.NewResbuf(); ret.AddDouble(closePoint.x); ret.AddDouble(closePoint.y); mxOcx.SetEventRetEx(ret); } } } } mxocx.js function LoadMxDrawX(dwgfile,cabpath,msipath,chrompath) { var s, classid, Sys = {}, ua = navigator.userAgent.toLowerCase(); (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : (s = ua.match(/trident/([\d.]+)/)) ? Sys.ie9 = s[1] : (s = ua.match(/firefox/([\d.]+)/)) ? Sys.firefox = s[1] : (s = ua.match(/chrome/([\d.]+)/)) ? Sys.chrome = s[1] : (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : (s = ua.match(/version/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0, classid = "74A777F8-7A8F-4e7c-AF47-7074828086E2", Sys.ie || Sys.ie9 ? (document.write(" "), document.write(" "), document.write(' '), document.write('codebase="' + cabpath + '" width="90%" height="90%" align="left"> '), document.write(' '), document.write(' '), document.write(' '), document.write(''), document.write(' '), document.write(''), document.write(' '), document.write(' '), document.write(' '), document.write(''), document.write(' '), document.write(''), document.write(''), document.write(''), document.write(''), document.write('不能装载文档控件,使用IE,或QQ,360浏览器兼容模式。请在检查浏览器的选项中检查浏览器的安全设置。请点击安装控件'), document.write('')) : Sys.chrome ? (document.write('


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3