在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据。下面帮助的完整例子,在控件安装目录的 Sample\Ie\iedemo.htm 中。

主要用到函数说明:

_DMxDrawX::InsertBlock

向数据库中插入一个图块,DWG图块文件可以是本地文件,也可以是网络文件。详细说明如下:函数成功返回1,失败返回0。

参数 说明
BSTR pszDwgFileName

图块定义的dwg 文件,支持http://开头的网络路径

BSTR pszBlockName

新插入的图块名

_DMxDrawX::DrawBlockReference

绘制一个块引用对象,返回新绘的对象id。详细说明如下:

参数 说明
DOUBLE dPosX  

插入点的X坐标

DOUBLE dPosY

插入点的Y坐标

BSTR pszBlkName

图块名

DOUBLE dScale  

图块缩放比例

DOUBLE dAng

图块的旋转角度

MxDrawDatabase::ObjectIdToObject

由实体id返回实体对象。

MxDrawEntity::SetXData

设置实体的扩展数据,详细说明如下:

参数 说明
[in] IMxDrawResbuf* pXData

扩展数据链表

MxDrawEntity::GetXData

返回实体的扩展数据。

js中实现代码说明:

绘制一个块引用对象,并向新绘的对象写一个扩展数据,比如GUID,用来标识它。

// 得到网页中的控件对象
mxOcx = document.all.item("MxDrawXCtrl");
mxOcx.focus(); 把服务器上的dwg文件,插入到控件中,也可以是一个本地文件.
if(mxOcx.InsertBlock("http://www.mxdraw.com/downland/test.dwg","MyBlkName") != 0)
{
// 与用户交互,从图上点取一个插入点.
var point = mxOcx.GetPoint(null,"\n 点插入点:");
if(point == null)
{
// 用点击了取消键.
return;
}
// 绘制一个块引用对象,point.x,point.y是插入位置,MyBlkName是引用的块表记录名称.
var blkRefId = mxOcx.DrawBlockReference(point.x,point.y,"MyBlkName",1.0,0.0); // 得到控件的数据库对象. var database = mxOcx.GetDatabase();
//由块引用对象id,得到块引用实体.
var ent = database.ObjectIdToObject(blkRefId); if(ent == null)
{
alert("插入失败");
return;
} // 为新插入的对象写一个扩展数据,值为"guid val 324322"
WriteGuid("guid val 324322",ent,mxOcx) // 缩放视区,把所有实体都放到视区中显示.
mxOcx.ZoomAll();
alert("插入成功");
}
else
{
alert("插入失败");
}
}

读取扩展数据:

// 得到网页中的控件对象.
var mxOcx = document.all.item("MxDrawXCtrl"); // 与用户交互,在图上选择一个实体
var ent = mxOcx.GetEntity("选择要读扩展数据的实体:");
if(ent == null)
{
// 用户取消了选择.
return;
}
// 得到WriteGuid函数写的扩展数据.
alert(ReadGuid(ent) );

写扩展数据:

function WriteGuid(guid,ent,mxOcx)
{
// 创建一个扩展数据连表对象.
var exData = mxOcx.CallCustomFunction("Mx_NewResbuf",""); // 添一个扩展数据,应用程序名,1001是AutoCAD dxf组码,表示"对象标注id数据"是一个扩展数据名称.
exData.AddString("对象标注id数据",1001); // 设置一个字符串扩展数据,1000是AutoCAD dxf组码,表示是一个字符串
exData.AddString(guid,1000); // 设置对象扩展数据.
ent.SetXData(exData);
}

CAD在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据的更多相关文章

  1. CAD在网页中如何实现嵌套打印?

    当用户需要打印两个控件的图纸时,可以采用嵌套打印实现.点击此处在线演示. 实现嵌套打印功能,首先将两个控件放入网页中,js代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  2. CAD在网页中打印的图纸里面添加页眉及页脚

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  3. CAD在网页中增加一个射线

    主要用到函数说明: IMxDrawBlockTableRecord::AddRay 向记录中增加一个射线,详细说明如下: 参数 说明 point1 射线上的点1 point2 射线上的点2 js代码实 ...

  4. CAD在网页中如何设置实体闪烁?

    主要用到函数说明: MxDrawXCustomFunction::Mx_TwinkeEnt 闪烁实体.详细说明如下: 参数 说明 McDbObjectId id 被闪烁的实体对象id LONG lCo ...

  5. CAD在网页中返回当前图纸的最小外包矩形框

    主要用到函数说明: _DMxDrawX::GetMcDbDatabaseBound 返回当前图纸的最小外包矩形框,详细说明如下: 参数 说明 DOUBLE* pLbx 返回最小外包矩形框左下角X值 D ...

  6. CAD在网页中得到批注信息

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  7. CAD在网页中绘制批注

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  8. CAD在网页中如何得到用户自定义事件的参数?

    主要用到函数说明: _DMxDrawX::CustomEventParam 得到用户自定义事件的参数. js代码实现如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  9. 网页中flash设置

    我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...

随机推荐

  1. SQL语句小结

    1.创建数据库 create database 数据库名 2.删除数据库 drop  database 数据库名 3.创建表 1>.create table 表名 (col1 type1 [no ...

  2. Android学习笔记-获取手机内存,SD卡存储空间。

    前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获 ...

  3. 【PA 2014】Kuglarz

    [题目链接]            点击打开链接 [算法]            sum[i]表示前i个杯子中,杯子底下藏有球的杯子总数            那么,知道[i,j]这段区间中,藏有球的 ...

  4. Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1

    转自:http://blog.51cto.com/alinazh/1276363 在启动tomcat的时候出现错误: Line: 220 - com/opensymphony/xwork2/sprin ...

  5. C#面向过程之局部变量、成员变量、变量作用域、可变参数

    局部变量与成员变量:  局部变量:定义在方法里面的变量就叫做局部变量:没有默认的初始值,使用变量之前必须给它赋值成员变量:定义在类下面的变量叫做成员变量:如果是数值类型默认初始值为0 如果是引用类型默 ...

  6. MySQL 循环分支语法

    ---恢复内容开始--- Loop循环 label: LOOP statement_list IF exit_condition THEN LEAVE label; END IF; END LOOP ...

  7. vue项目开发中踩过的坑

    一.路由 这两天移动端的同事在研究vue,跟我说看着我的项目做的,子路由访问的时候是空白的,我第一反应是,不会模块没加载进来吧,还是....此处省略一千字... 废话不多说上代码 路由代码 { pat ...

  8. 洛谷P4158 [SCOI2009]粉刷匠

    传送门 设$dp[i][j][k][0/1]$表示在涂点$(i,j)$,涂了$k$次,当前点的颜色是否对,最多能刷对多少个格子 首先换行的时候肯定得多刷一次 然后是如果和前一个格子颜色相同,那么当前点 ...

  9. 公司6:JrVue重用布局

    JrVue是我们基于element重新封装的一套组件库;  为了提高开发效率, 方便对代码的统一管理和维护,  我们提供了一些统一的页面布局, 以及项目常用的中小型模块 我在master新拉一个分支J ...

  10. $CF19A\ World\ Football\ Cup$

    炒鸡\(6\)批的模拟题. 注意的是输入 把握好空格 大小写. 根据题目的这句话来排序 积分榜是按照以下原则制作的:胜利一个队得3分,平分1分,失败0分. 首先,球队按积分顺序排在积分榜上,分数相等比 ...