在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法
[MXDRAW CAD控件文档]
下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中.

  1. 主要用到函数说明
    A. ImplementCommandEventFun
    控件的命令事件函数,与用户交互的操作,需要放到命令事件函数内实现,这样控件才能保证正常的Windows 消息循环被处理。
    B. ImplementMouseEventFun
    控件的鼠标事件函数,可以用JS程序里,响应鼠标事件,详细说明如下:
    void MouseEvent(LONG lType, DOUBLE dX, DOUBLE dY, LONG lRet);
    LONG lType 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标左键释放 6是鼠标右键释放 7是鼠标中键按下 8是鼠标中键释放 9是鼠标中键双击 10是鼠标中键滚动
    DOUBLE dX 事件发生时的鼠标X坐标,文档坐标
    DOUBLE dY 事件发生时的鼠标Y坐标,文档坐标
    LONG
    lRet lRet 返回非0,消息将不在往下传递
    C. DrawLine
    用于在DWG图上绘制一条直线,详细说明如下:
    参数 说明
    DOUBLE dX1 直线的开始点x坐标
    DOUBLE dY1 直线的开始点y坐标
    DOUBLE dX2 直线的结束点x坐标
    DOUBLE dY2 直线的结束点y坐标
    D. IMxDrawSelectionSet::SelectAtPoint2
    返回一点坐标下面的实体对象,可以设置过滤条件,返回某层,某类型等属性的对象。
  2. JS中实现代码说明
    A. 在网页中引用控件,
    clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的GUID.
    控件程序可以做成CAB安装包,并可进行数据签名,方便网页中自动安装下载.
    详细参考例子:http://www.mxdraw.com/iedemo.html
    <objectclassid="clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2"id="MxDrawXCtrl" codebase="http://www.mxdraw.com/MxDrawX.CAB#version=1,0,0,1"width=100% height=90%>
    <paramname="_Version" value="65536">
    <paramname="_ExtentX" value="24262">
    <paramname="_ExtentY" value="16219">
    <paramname="_StockProps" value="0">
    <!--<param name="DwgFilePath"value="http://www.mxdraw.com/downland/test.dwg"&gt; -->
    <paramname="IsRuningAtIE" value="1">
    <paramname="EnablePrintCmd" value="1">
    <paramname="ShowStatusBar" value="1">
    <paramname="ShowMenuBar" value="1">
    <paramname="ShowToolBars" value="1">
    <paramname="ShowCommandWindow" value="1">
    <paramname="ShowModelBar" value="1">
    <paramname="IniFilePath"value="AutoActive=N,LoadMrx=PropertyEditor.mrx">
    <param name="ToolBarFiles" value="MxDraw-ToolBar.mxt,MxDraw-ToolBar-DrawParam.mxt,MxDraw-ToolBar-Draw.mxt,MxDraw-ToolBar-Edit.mxt">
    </object>
    <script>

B. 设置命令事件回调函数
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun= DoCommandEventFunc;
C. 设置鼠标事件回调函数
document.getElementById("MxDrawXCtrl").ImplementMouseEventFun= MouseEvent;
D. 在命令事件交互绘制一条直线
该事件将会被,网页中的myclick按钮点击触发,如下:
function myclick()
{
document.getElementById("MxDrawXCtrl").DoCommand(1);
}
下面是绘制直线代码:
function DoCommandEventFunc(iCmd)
{
// 命令事件ID.
if (iCmd == 1)
{
// 得到网页的中的控件对象.
varmxOcx = document.all.item("MxDrawXCtrl");
mxOcx.focus();
varpoint1 = mxOcx.GetPoint(null,"\n 点取开始点:");
if(point1== null)
{
return;
}
varpoint2 = mxOcx.GetPoint(point1,"\n 点取结束点:");
if(point1== null)
{
return;
}
// 绘制一条直线.
mxOcx.DrawLine(point1.x,point1.y,point2.x,point2.y);
}
}

E. 在鼠标事件中得到鼠标点击的对象.
function MouseEvent(dX,dY,lType)
{
// 4是鼠标左键双击
if(lType== 4)
{
// 得到网页的中的控件对象
varaxMxDrawX1 = document.getElementById("MxDrawXCtrl");
// 创建一个选择集对象
varss = axMxDrawX1.CallCustomFunction("Mx_NewSelectionSet","");
// 创建一个点对象
varpt = axMxDrawX1.CallCustomFunction("Mx_NewPoint","");
// 创建一个过滤条件对象
var fil= axMxDrawX1.CallCustomFunction("Mx_NewResbuf","");
// 把鼠标点击坐标,赋值给点对象.
pt.x = dX;
pt.y =dY;
// 在该点处构造选择集.
ss.SelectAtPoint2(pt,fil);
//ss.Coune是选择集中对象数目
if(ss.Count > 0)
{
// 得到选择集中的第一个点对象.
var ent = ss.Item(0);
// 输出信息.
alert("点击了" + ent.ObjectName + "对象");
}
// 取消后面的命令。
axMxDrawX1.SendStringToExecute("");
return1;
}
return 0;
}

转载于:https://blog.51cto.com/10455293/2087727

在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法相关推荐

  1. 在HTML网页中使用ActiveX控件

    From: http://blog.163.com/haizai219@126/blog/static/4441255520097264447968/ 1. 摘要: 在企业应用中,为了实现一些特殊的功 ...

  2. MFC中动态创建控件以及添加事件响应

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  3. MFC中动态创建控件及添加消息响应的方法实例

    动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...

  4. 在Project中引用zedgraph控件

    在Project中引用控件 一般情况下,此控件应该是使用在表现层(UI层),所以你可以直接在你的UI层直接引用,当然,为了你方便使用,你可以先把他加到控件箱里头(ToolBox) 方法: 对着控件箱右 ...

  5. 在delphi中引用第三方控件时,找不到dcu的解决办法

    好久没有使用delphi7来编程了,由于以前的一个项目需要升级,今天又重拾delphi7.不得不说在当时delphi真的好强,可惜了borland,它曾经是我心中的英雄,编程的首选.闲话少说步入正题. ...

  6. 网页中嵌入Excel控件

    前提, 客户端必须装windows office Excel,我机器上装的时office 2003,如果你机器装的是office 2007只要把 object id="_obj_Excel& ...

  7. 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件

    适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...

  8. VS2010下ocx开发:(2)在C#程序中调用ocx控件

    在本文中,给出一个C#示例程序,调用上一篇博文中创建的MultiplyDemo.ocx控件.注意需要保证该控件已经注册过. 启动Visual Studio 2010,使用C#创建一个Windows窗体 ...

  9. winform界面嵌入dwg图纸_WPF中使用WinForm控件预览DWG文件(学习笔记)

    操作环境:XP,C# ,.Net4.0和VS2010中测试 WinForm中使用DWGThumbnail不用这么麻烦,下面讨论的是在WPF中使用,WPF中无法直接引用DWGThumbnail.ocx来 ...

最新文章

  1. 疯狂的消化之旅|消化系统简介
  2. spring mvc接收数组
  3. 程序员从入门到大师,需要翻过这些山?
  4. js请求结果拦截机器_CefSharp请求资源拦截及自定义处理
  5. VMware安装系统时没有弹出分区设置
  6. 再谈要不要成为全栈工程师
  7. opencv中,c和c++版本区别体验
  8. 一流设计导航|16map|效率导航最全设计类软件!速度收藏!!
  9. 【转】拷贝构造函数的参数类型必须是引用
  10. 如何判断web应用是否添加到主屏幕
  11. python实践项目(一)
  12. 思科asa5515端口映射_思科防火墙端口映射配置方法
  13. 怎样把孩子写的日记或作文制成电子版呢?
  14. 微信小程序 腾讯地图大头针定位,获取当前地址,地图移动选点,定位当前位置
  15. 文本匹配-bimpm
  16. 《MINECRAFT我的世界 新手完全攻略(第3版)》一1.1 注册与下载
  17. 电脑怎样设置桌面待办,桌面待办事项软件
  18. Java实现 LeetCode 400 第N个数字
  19. 软考-高级项目管理(二十)
  20. 点滴:python数据集的文本标签转换成数值

热门文章

  1. linux的基本命令tail,Linux基本命令(示例代码)
  2. 微软 python替代vba_微软将要用Python取代VBA,Python工程师又双叒叕要涨薪了!
  3. c语言第三章作业3.13,2012年计算机等级二级C语言章节习题及答案(13)
  4. python中的pylab_Python数值计算:一 使用Pylab绘图(1)
  5. linux yum安装python3_在Linux - Centos上安装Python3(上)
  6. 素数在c语言中怎么表示,请问素数怎么样表示
  7. datatable的数据进行组内排序_Spark实现分组Top-k排序的四种方案(scala语言)
  8. linux下清理脚本,脚本--Linux下清理IPC资源
  9. 相分离在聚集多价信号蛋白过程中的作用Phase transitions in the assembly of multivalent signalling proteins
  10. 利用系统级别的光谱成像技术分析细胞器的互作组学