随着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

扩展数据链表

c#代码实现如下:

  1. private void SetXData()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity ent = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的实体:"));
  6.  
  7. if (ent == null)
  8. {
  9. return;
  10. }
  11. MxDrawResbuf exData = new MxDrawResbuf();
  12. exData.AddStringEx("TestApp", 1001);
  13. exData.AddStringEx("甲", 1000);
  14. ent.SetXData(exData);
  15. }

主要用到函数说明:

MxDrawEntity::GetXData

返回实体的扩展数据。

c#代码实现如下:

  1. private void GetXData()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity ent = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要读扩展数据的实体:"));
  6. if (ent == null)
  7. {
  8. return;
  9. }
  10. MxDrawResbuf exData = ent.GetXData("");
  11.  
  12. if (exData.Count == 0)
  13. {
  14. MessageBox.Show("没有扩展数据");
  15.  
  16. }
  17. else
  18. {
  19. // 向命令行窗口打印扩展数据。
  20. exData.PrintData();
  21. MessageBox.Show(exData.AtString(1));
  22. }
  23. }

主要用到函数说明:

MxDrawEntity::SetxDataString

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

参数 说明

[in] BSTR val

字符串值

szAppName

扩展数据名称

nItem

该值所在位置

C#代码实现如下:

  1. private void WriteXData()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
  6. if (selEnt == null)
  7. return;
  8. if (selEnt.SetxDataString("ExDataName", 0, "ExDataValue"))
  9. {
  10. MessageBox.Show("写扩展数据成功");
  11. }
  12. else
  13. {
  14. MessageBox.Show("写扩展数据失败");
  15. }
  16. }

主要用到函数说明:

MxDrawEntity::GetxDataString2

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

参数 说明

[in] LONG lItem

该值所在位置

[out, retval] BSTR* pRet

返回该变量值

szAppName

扩展数据名称

C#代码实现如下:

  1. private void ReadXData()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
  6.  
  7. if (selEnt == null)
  8. return;
  9.  
  10. string val = selEnt.GetxDataString2("ExDataName", 0);
  11. if (axMxDrawX1.IsOk())
  12. {
  13. MessageBox.Show(val);
  14. }
  15. else
  16. {
  17. MessageBox.Show("没有扩展数!");
  18. }
  19. }

主要用到函数说明:

MxDrawEntity::SetxDataDouble

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

参数 说明

[in] BSTR val

字符串值

szAppName

扩展数据名称

nItem

该值所在位置

C#代码实现如下:

  1. private void SetxDataDouble()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
  6.  
  7. if (selEnt == null)
  8. return;
  9. if (selEnt.SetxDataDouble("ExDataName", 0, 55.5))
  10. {
  11. MessageBox.Show("写扩展数据成功");
  12. }
  13. else
  14. {
  15. MessageBox.Show("写扩展数据失败");
  16. }
  17. }

主要用到函数说明:

MxDrawEntity::GetxDataDouble2

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

参数 说明

[in] LONG lItem

该值所在位置

[out, retval] BSTR* pRet

返回该变量值

szAppName

扩展数据名称

C#代码实现如下:

  1. private void GetxDataDouble()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
  6.  
  7. if (selEnt == null)
  8. return;
  9.  
  10. double val = selEnt.GetxDataDouble2("ExDataName", 0);
  11. if (axMxDrawX1.IsOk())
  12. {
  13. MessageBox.Show(val.ToString());
  14. }
  15. else
  16. {
  17. MessageBox.Show("没有扩展数!");
  18. }
  19. }

主要用到函数说明:

MxDrawEntity::SetxDataLong

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

参数 说明

[in] BSTR val

字符串值

szAppName

扩展数据名称

nItem

该值所在位置

c#代码实现如下:

  1. private void SetxDataLong()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
  6.  
  7. if (selEnt == null)
  8. return;
  9. if (selEnt.SetxDataLong("ExDataName", 0, 123456))
  10. {
  11. MessageBox.Show("写扩展数据成功");
  12. }
  13. else
  14. {
  15. MessageBox.Show("写扩展数据失败");
  16. }
  17. }

主要用到函数说明:

MxDrawEntity::GetxDataLong2

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

参数 说明

[in] LONG lItem

该值所在位置

[out, retval] BSTR* pRet

返回该变量值

szAppName

扩展数据名称

c#代码实现如下:

  1. private void GetxDataLong()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
  6.  
  7. if (selEnt == null)
  8. return;
  9.  
  10. int val = selEnt.GetxDataLong2("ExDataName", 0);
  11. if (axMxDrawX1.IsOk())
  12. {
  13. MessageBox.Show(val.ToString());
  14. }
  15. else
  16. {
  17. MessageBox.Show("没有扩展数!");
  18. }
  19. }

主要用到函数说明:

MxDrawEntity::GetAllAppName

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

参数 说明

[out, retval] IMxDrawResbuf** ppRet

返回IMxDrawResbuf扩展数据名称数组

c#代码实现如下:

  1. private void GetAllAppName()
  2. {
  3. MxDrawUtility mxUtility = new MxDrawUtility();
  4. MxDrawPoint point;
  5. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要读扩展数据的对象"));
  6.  
  7. if (selEnt == null)
  8. return;
  9. //得到所有扩展数据名称
  10. MxDrawResbuf val = selEnt.GetAllAppName();
  11. if (val == null)
  12. {
  13. return;
  14. }
  15. for (var i = 0; i < val.Count; i++)
  16. {
  17. //返回链表中的指定位置字符串变量值
  18. MessageBox.Show(val.AtString(i));
  19. }
  20. }

主要用到函数说明:

MxDrawEntity::DeleteXData

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

参数 说明

pzsAppName

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

c#代码实现如下:

  1. private void DeleteXData()
  2. {
  3.  
  4. MxDrawUtility mxUtility = new MxDrawUtility();
  5. MxDrawPoint point;
  6. MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要读扩展数据的对象"));
  7.  
  8. if (selEnt == null)
  9. return;
  10. //删除的扩展数据名称,如果为空,删除所有扩展数据。
  11. if (selEnt.DeleteXData("ExDataName"))
  12. {
  13. MessageBox.Show("删除扩展数据成功");
  14. }
  15. else
  16. {
  17. MessageBox.Show("删除扩展数据失败");
  18. }
  19. }

梦想CAD控件com接口扩展数据的更多相关文章

  1. 梦想CAD控件网页版扩展数据

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

  2. 梦想CAD控件COM接口自定义命令

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

  3. 梦想CAD控件COM接口光栅图处理

    在CAD操作过程中,我们在设计绘图时,光栅图像也就是我们常说的图片,应用非常广泛,在CAD中可以直接插入光栅图像,并且可以对光栅图像进行裁剪.透明度调整等一些操作,在网页可以快速实现我们所需功能. 一 ...

  4. 梦想CAD控件COM接口标注样式

    增加标注样式 用户可以增加标注样式到数据库,具体实现c#代码如下: private void CreateDim() { //返回控件的数据库对象 MxDrawDatabase database = ...

  5. 梦想CAD控件COM接口搜索图面上的文字

    点击此处下载演示实例 主要用到函数说明: _DMxDrawX::NewSelectionSet 实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数. _DMxDrawX::NewResbuf ...

  6. 梦想CAD控件COM接口文字样式

    增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现c#代码如下: private void CreateText() { MxDrawApplication app = new ...

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

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

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

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

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

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

随机推荐

  1. WebLog Expert

    Weblog expert是一个快速和强大的访问日志分析器.这会让你了解你的网站的访客:活动统计,访问的文件的路径,通过该网站,信息指页面,搜索引擎,浏览器,操作系统,和更多.该计划所产生的易于阅读的 ...

  2. CF#315 C

    #include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...

  3. C#项目的生成事件及批处理文件

    一个C#项目,如果为同一个解决方案的其他项目所引用,则其编译后,会将DLL拷贝到引用项目中:但如果它并不被其他项目引用,但又想编译后能够自动将生成的东西拷贝过去,可以在项目的生成事件中,写上一些批处理 ...

  4. 实时人工智能:微软发布Project Brainwave预览版 现场可编程门阵列(Field Programmable Gate Array,简称FPGA) 硬件设计可以迅速演进

    https://mp.weixin.qq.com/s/bAPiPURZd-YsbV5PbzwpQQ 编者按:随着各大公司对于数据计算的要求越来越高,实时AI成为了研究者们关注的重点.在美国西雅图举行的 ...

  5. URAL1553 Caves and Tunnels 树链剖分 动态树

    URAL1553 维护一棵树,随时修改某个节点的权值,询问(x,y)路径上权值最大的点. 树是静态的,不过套动态树也能过,时限卡的严就得上树链剖分了. 还是那句话 splay的核心是splay(x) ...

  6. iOS开发——多线程

    很多朋友都说iOS开发中,最难理解和学习的就是多线程,很多的原理实现都是通过log看到,也比较抽象,本人也是在多线程方面投入过很多脑细胞..无论这方面的知识掌握和应用起来是否轻松,牢固的基本功.正确的 ...

  7. ubuntu 12.04不能mount nfs目录与挂载后只读不能写问题 (转载)

    转自:http://blog.chinaunix.net/uid-20680966-id-3810455.html 服务器用的是fedora 12  以前在helper2416开发板上挂载服务器上的n ...

  8. Odoo免费开源企业信息化平台助力企业成功

    企业信息化变革之路 信息孤岛的真实由来 打开百度App,看更多图片 左边为当下企业现状,右边为Odoo的整体 企业信息孤岛的严重性,来自于企业的自身高速发展,企业以销售为生命主题围绕着客户会搭建一系列 ...

  9. 基于.Net Core的API框架的搭建(3)

    5.加入缓存支持 我们希望为项目增加缓存支持,我们选择Redis做为缓存数据库. 首先,我们在Services目录增加一个缓存接口类ICacheService: using System; using ...

  10. linux 定义变量 ,添加变量值

    1.设置值$name=test2. 输出变量的值 echo $echo $name3. 增加变量内容PATH=$PATH:/home/bin/testPATH="$PATH":/h ...