随着基于CAD的应用软件飞速发展,经常需要保存一些与图形可视性无关的数据,即非图形参数。例如在绘制化验样图中包含品位数据。MxCAD定义一类新的参数——实体扩展数据。扩展数据与实体的可视性无关,而是用户根据需要自定义的数据,因此扩展数据的类型与数目都是任意的。扩展数据不能单独地存在,它必须依附于某一个实体,因而它与实体的图形参数共存。由于扩展数据与实体的可视性无关,因而它对图形毫无影响。由此可见,实体扩展数据的引入,既保持了图形的简洁性,又保留了用户必需的信息。因此,它对实现图形的美观性与数据的完备性有重大意义。点击此处在线演示

扩展数据组码及其说明

图元名 组码 说明
字符串

1000

扩展数据中的字符串最长为 255 个字节(第 256 个字符将被保存为空字符)
应用程序名称

1001

字符串名称最长为 31 个字节(第 32 个字符将被保存为空字符)。 注意:请不要向您的扩展数据中添加组码 1001
控制字符串

1002

一个扩展数据控制字符串即可以是 "{" 也可以是 "}"。这些大括号可以使应用程序通过把数据细分为表来组织它们的数据。左大括号开始表,右大括号结束最近的表。表可以被嵌套
图层名称

1003

与扩展数据相联系的图层的名称
二进制数据

1004

二进制数据被组织到可变长度的数据组 中。每个数据组最长为 127 个字

节。在 ASCII DXF 文件中,二进制数据被表示为十六进制数字字符串,每个二进制字节两个字符

数据库句柄

1005

图形数据库中的图元句柄
3 个实数

1010,1020,1030

三个实数值的次序为 X、Y 和  Z。它们可被用于表示点或矢量记录
世界空间位置

1011,1021,1031

与简单的三维点不同,世界空间坐标可被移动、缩放、旋转和连同属于扩展数据的上级图元一起产生镜像。当命令 STRETCH 被用于上级图元且此点位于所选窗口中时,世界空间位置也可被拉伸
世界空间位移

1012,1022,1032

同样三维点也可被缩放,旋转和连同上级图元一起产生镜像(但不能被移动或拉伸)
世界方向

1013,1023,1033

同样三维点也可被旋转和连同上级图元一起产生镜像(但不能被移动、缩放或拉伸)
实数

1040

一个实数
距离

1041

一个可连同上级图元一起被缩放的实数值
缩放比例

1042

同样是一个可连同上级图元一起被缩放的实数值。与距离的区别在于此图元为应用程序定义的
整数

1070

一个 16 位整数(有符号的或无符号的)
长整数

1071

一个 32 位符号(长型)整数

主要用到函数说明:

MxDrawEntity::SetXData

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

参数 说明

[in] IMxDrawResbuf* pXData

扩展数据链表

js代码实现如下:

function SetXData(){
var ent = mxOcx.GetEntity("选择要写扩展数据的实体:");
if(ent == null)
{
return;
}
var exData = mxOcx.Call("Mx_NewResbuf","");
exData.AddStringEx("TestApp",1001);
exData.AddStringEx("甲",1000);
ent.SetXData(exData);
}

主要用到函数说明:

MxDrawEntity::GetXData

返回实体的扩展数据。

js代码实现如下:

function GetXData(){
var ent = mxOcx.GetEntity("选择要读扩展数据的实体:");
if(ent == null)
{
return;
}
var exData = ent.GetXData("TestApp"); if(exData.Count == 0)
{
alert("没有扩展数据"); }
else
{
// 向命令行窗口打印扩展数据。
exData.PrintData();
alert(exData.AtString(1));
}
}

主要用到函数说明:

MxDrawEntity::SetxDataString

写一个字符串扩展数据,详细说明如下:

参数 说明

[in] BSTR val

字符串值

szAppName

扩展数据名称

nItem

该值所在位置

js代码实现如下:

function WriteXData(){
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");
selEnt.message = "选择要写扩展数据的对象";
if (selEnt.go() != 1)
return;
var ent = selEnt.Entity();
if (ent == null)
return;
if (ent.SetxDataString("ExDataName", 0, "ExDataValue")) {
alert("写扩展数据成功");
}
else {
alert("写扩展数据失败");
}
}

主要用到函数说明:

MxDrawEntity::GetxDataString2

读取一个字符扩展数据,详细说明如下:

参数 说明

[in] LONG lItem

该值所在位置

[out, retval] BSTR* pRet

返回该变量值

szAppName

扩展数据名称

js代码实现如下:

function ReadXData() {
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnt.message = "选择要读取扩展数据的对象";
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("没有扩展数!");
} }

主要用到函数说明:

MxDrawEntity::SetxDataDouble

写一个Double扩展数据,详细说明如下:

参数 说明

[in] BSTR val

字符串值

szAppName

扩展数据名称

nItem

该值所在位置

js代码实现如下:

function SetxDataDouble(){
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");
selEnt.message = "选择要写扩展数据的对象";
if (selEnt.go() != 1)
return;
var ent = selEnt.Entity();
if (ent == null)
return;
if (ent.SetxDataDouble("ExDataName", 0, 55.5)) {
alert("写扩展数据成功");
}
else {
alert("写扩展数据失败");
}
}

主要用到函数说明:

MxDrawEntity::GetxDataDouble2

读取一个Double扩展数据,详细说明如下:

参数 说明

[in] LONG lItem

该值所在位置

[out, retval] BSTR* pRet

返回该变量值

szAppName

扩展数据名称

js代码实现如下:

function GetxDataDouble() {
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnt.message = "选择要读取扩展数据的对象";
if (selEnt.go() != 1)
return; var ent = selEnt.Entity();
if (ent == null)
return; var val = ent.GetxDataDouble2("ExDataName", 0);
if (mxOcx.IsOk()) {
alert(val);
}
else {
alert("没有扩展数!");
} }

主要用到函数说明:

MxDrawEntity::SetxDataLong

写一个long扩展数据,详细说明如下:

参数 说明

[in] BSTR val

字符串值

szAppName

扩展数据名称

nItem

该值所在位置

js代码实现如下:

function SetxDataLong(){
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");
selEnt.message = "选择要写扩展数据的对象";
if (selEnt.go() != 1)
return;
var ent = selEnt.Entity();
if (ent == null)
return;
if (ent.SetxDataLong("ExDataName", 0, 123456)) {
alert("写扩展数据成功");
}
else {
alert("写扩展数据失败");
}
}

主要用到函数说明:

MxDrawEntity::GetxDataLong2

读取一个Long扩展数据,详细说明如下:

参数 说明

[in] LONG lItem

该值所在位置

[out, retval] BSTR* pRet

返回该变量值

szAppName

扩展数据名称

js代码实现如下:

function GetxDataLong() {
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity"); selEnt.message = "选择要读取扩展数据的对象";
if (selEnt.go() != 1)
return; var ent = selEnt.Entity();
if (ent == null)
return; var val = ent.GetxDataLong2("ExDataName", 0);
if (mxOcx.IsOk()) {
alert(val);
}
else {
alert("没有扩展数!");
} }

主要用到函数说明:

MxDrawEntity::GetAllAppName

得到所有扩展数据名称,详细说明如下:

参数 说明

[out, retval] IMxDrawResbuf** ppRet

返回IMxDrawResbuf扩展数据名称数组

js代码实现如下:

function GetAllAppName() {

    var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");
selEnt.message = "选择需要读取的对象";
if (selEnt.go() != 1)
return;
var ent = selEnt.Entity();
if (ent == null)
return;
//得到所有扩展数据名称
var val = ent.GetAllAppName();
if (val == null) {
return;
}
for(var i = 0;i < val.Count; i++ ){
//返回链表中的指定位置字符串变量值
alert(val.AtString(i));
} }

主要用到函数说明:

MxDrawEntity::DeleteXData

删除扩展数据,详细说明如下:

参数 说明

pzsAppName

删除的扩展数据名称,如果为空,删除所有扩展数据

js代码实现如下:

function DeleteXData() {

    var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");
selEnt.message = "选择要删除扩展数据的对象";
if (selEnt.go() != 1)
return;
var ent = selEnt.Entity();
if (ent == null)
return;
if (ent.DeleteXData("ExDataName")) {
alert("删除扩展数据成功");
}
else {
alert("删除扩展数据失败");
} }

梦想CAD控件网页版扩展数据的更多相关文章

  1. 梦想CAD控件网页版搜索图面上的文字

    在网页中查找到CAD控件图纸上的文字.点击此处在线演示. 主要用到函数说明: _DMxDrawX::NewSelectionSet 实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数. _DM ...

  2. 梦想CAD控件网页版关于自定义命令

    在CAD控件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处在线演示. _DMxDrawX::RegistUserCustomCommand 向CAD控件注册一 ...

  3. 梦想CAD控件网页版线型

    增加线型 主要用到函数说明: _DMxDrawX::AddLinetype 增加一个线型定义.详细说明如下: 参数 说明 BSTR pszName 线型名 BSTR pszLineDefine 线定义 ...

  4. 梦想CAD控件com接口扩展数据

    随着CAD应用软件的飞速发展,经常需要保存一些与图形可视性无关的数据,即非图形参数.例如在绘制化验样图中包含品位数据.MxCAD定义了一类参数——实体扩展数据.扩展数据与实体的可视性无关,而是用户根据 ...

  5. 梦想CAD控件网页版标注样式

    增加标注样式 _DMxDrawX::AddDimStyle 增加一个新的标注样式,如果当前已经有指定名的标注样式,就直接失败返回.详细说明如下: 参数 说明 BSTR pszName 新增加的标注样式 ...

  6. 梦想CAD控件网页版文字样式

    增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现js代码如下: function CreateText(){ //返回控件的数据库对象 var database =mxOcx. ...

  7. 如何在网页中浏览和编辑DWG文件 梦想CAD控件

    如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com 梦想绘图控件5.2  是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 201 ...

  8. 梦想CAD控件图块COM接口知识点

    梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...

  9. 梦想CAD控件图层COM接口知识点

    梦想CAD控件图层COM接口知识点 一.新建图层 主要用到函数说明: _DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 c#中实现代码 ...

随机推荐

  1. PHP中的extract函数的用途 extract($_GET);extract($_POST)

    把客户端表单中的变量名取出来 addslashes -- 使用反斜线引用字符串 extract(addslashes($_POST)); --处理POST表单 把客户端<FORM METHOD= ...

  2. .net Core使用Orcle官方驱动连接数据库 C#参考教程 http://www.csref.cn

    .net Core使用Orcle官方驱动连接数据库   最近在研究.net Core,因为公司的项目用到的都是Oracle数据库,所以简单试一下.net Core怎样连接Oracle. Oracle官 ...

  3. (十)Net Core项目使用Cookies (八)Net Core项目使用Controller之三-入参

    (十)Net Core项目使用Cookies 一.简介 1.Net Core可以直接使用Cookies,但是调用方式有些区别. 2.Net Core将Request和Response分开实现. 二.基 ...

  4. TCP/IP常见问题总结(二)

    上一篇的传送门:TCP/IP常见问题总结(一) 6. TCP滑动窗体与回退N帧协议 TCP作为一个提供可靠服务的传输层协议,对于数据的发送必须拥有一套良好的反馈机制.让发送方得知接收方接收到了数据.而 ...

  5. python爬虫【第2篇】【多进程】

    一.多进程 1.fork方法(os模块,适用于Lunix系统) fork方法:调用1次,返回2次.原因:操作系统经当前进程(父进程)复制出一份进程(子进程),两个进程几乎完全相同,fork方法分别在父 ...

  6. easyUI datagrid 前端假分页

    datagrid有两种分页方式,真分页和假分页. 所谓真分页,就是真的每次只获取一张分页的数据. 所谓假分页,就是将所有数据全部获取下来,然后利用其分页控件进行分页. 下面具体说说假分页: 1.dat ...

  7. 使用Hibernate防止SQL注入的方法

    之前写代码,往后台传入一个组织好的String类型的Hql或者Sql语句,去执行. 这样其实是很蠢的一种做法!!!! 举个栗子~~ 我们模仿一下用户登录的场景: 常见的做法是将前台获取到的用户名和密码 ...

  8. zabbix如何添加主机监控

    1,首先,监控的主机安装zabbix客户端.zabbix提供多种监控方式,我们这里监控的主机上边安装agentd守护端进行数据收集并监测. 其中客户端安装我们这里就不介绍了,请参考之前教程里边的客户端 ...

  9. android短信拦截

    广播分2种,无序广播和有序广播.可以理解为散列和队列广播. 首先无序广播,不能中断,分发机制有点类似散列发送.这种广播的的发送为:context.sendBroadcast这种广播是不能中断的,请看A ...

  10. .NET 导入导出Excel

    第一种方式:OleDb 需要安装office,且读数据慢,而且有数据格式的Cell读出数据不正确等问题.放弃. 第二种方式:NPOI开源库 使用NPOI导入导出Excel应该是.NET开发很常用的手段 ...