梦想CAD控件com接口扩展数据
随着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#代码实现如下:
- private void SetXData()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity ent = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的实体:"));
- if (ent == null)
- {
- return;
- }
- MxDrawResbuf exData = new MxDrawResbuf();
- exData.AddStringEx("TestApp", 1001);
- exData.AddStringEx("甲", 1000);
- ent.SetXData(exData);
- }
主要用到函数说明:
MxDrawEntity::GetXData
返回实体的扩展数据。
c#代码实现如下:
- private void GetXData()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity ent = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要读扩展数据的实体:"));
- if (ent == null)
- {
- return;
- }
- MxDrawResbuf exData = ent.GetXData("");
- if (exData.Count == 0)
- {
- MessageBox.Show("没有扩展数据");
- }
- else
- {
- // 向命令行窗口打印扩展数据。
- exData.PrintData();
- MessageBox.Show(exData.AtString(1));
- }
- }
主要用到函数说明:
MxDrawEntity::SetxDataString
写一个字符串扩展数据,详细说明如下:
参数 | 说明 |
---|---|
[in] BSTR val |
字符串值 |
szAppName |
扩展数据名称 |
nItem |
该值所在位置 |
C#代码实现如下:
- private void WriteXData()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
- if (selEnt == null)
- return;
- if (selEnt.SetxDataString("ExDataName", 0, "ExDataValue"))
- {
- MessageBox.Show("写扩展数据成功");
- }
- else
- {
- MessageBox.Show("写扩展数据失败");
- }
- }
主要用到函数说明:
MxDrawEntity::GetxDataString2
读取一个字符扩展数据,详细说明如下:
参数 | 说明 |
---|---|
[in] LONG lItem |
该值所在位置 |
[out, retval] BSTR* pRet |
返回该变量值 |
szAppName |
扩展数据名称 |
C#代码实现如下:
- private void ReadXData()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
- if (selEnt == null)
- return;
- string val = selEnt.GetxDataString2("ExDataName", 0);
- if (axMxDrawX1.IsOk())
- {
- MessageBox.Show(val);
- }
- else
- {
- MessageBox.Show("没有扩展数!");
- }
- }
主要用到函数说明:
MxDrawEntity::SetxDataDouble
写一个Double扩展数据,详细说明如下:
参数 | 说明 |
---|---|
[in] BSTR val |
字符串值 |
szAppName |
扩展数据名称 |
nItem |
该值所在位置 |
C#代码实现如下:
- private void SetxDataDouble()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
- if (selEnt == null)
- return;
- if (selEnt.SetxDataDouble("ExDataName", 0, 55.5))
- {
- MessageBox.Show("写扩展数据成功");
- }
- else
- {
- MessageBox.Show("写扩展数据失败");
- }
- }
主要用到函数说明:
MxDrawEntity::GetxDataDouble2
读取一个Double扩展数据,详细说明如下:
参数 | 说明 |
---|---|
[in] LONG lItem |
该值所在位置 |
[out, retval] BSTR* pRet |
返回该变量值 |
szAppName |
扩展数据名称 |
C#代码实现如下:
- private void GetxDataDouble()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
- if (selEnt == null)
- return;
- double val = selEnt.GetxDataDouble2("ExDataName", 0);
- if (axMxDrawX1.IsOk())
- {
- MessageBox.Show(val.ToString());
- }
- else
- {
- MessageBox.Show("没有扩展数!");
- }
- }
主要用到函数说明:
MxDrawEntity::SetxDataLong
写一个long扩展数据,详细说明如下:
参数 | 说明 |
---|---|
[in] BSTR val |
字符串值 |
szAppName |
扩展数据名称 |
nItem |
该值所在位置 |
c#代码实现如下:
- private void SetxDataLong()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
- if (selEnt == null)
- return;
- if (selEnt.SetxDataLong("ExDataName", 0, 123456))
- {
- MessageBox.Show("写扩展数据成功");
- }
- else
- {
- MessageBox.Show("写扩展数据失败");
- }
- }
主要用到函数说明:
MxDrawEntity::GetxDataLong2
读取一个Long扩展数据,详细说明如下:
参数 | 说明 |
---|---|
[in] LONG lItem |
该值所在位置 |
[out, retval] BSTR* pRet |
返回该变量值 |
szAppName |
扩展数据名称 |
c#代码实现如下:
- private void GetxDataLong()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要写扩展数据的对象"));
- if (selEnt == null)
- return;
- int val = selEnt.GetxDataLong2("ExDataName", 0);
- if (axMxDrawX1.IsOk())
- {
- MessageBox.Show(val.ToString());
- }
- else
- {
- MessageBox.Show("没有扩展数!");
- }
- }
主要用到函数说明:
MxDrawEntity::GetAllAppName
得到所有扩展数据名称,详细说明如下:
参数 | 说明 |
---|---|
[out, retval] IMxDrawResbuf** ppRet |
返回IMxDrawResbuf扩展数据名称数组 |
c#代码实现如下:
- private void GetAllAppName()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要读扩展数据的对象"));
- if (selEnt == null)
- return;
- //得到所有扩展数据名称
- MxDrawResbuf val = selEnt.GetAllAppName();
- if (val == null)
- {
- return;
- }
- for (var i = 0; i < val.Count; i++)
- {
- //返回链表中的指定位置字符串变量值
- MessageBox.Show(val.AtString(i));
- }
- }
主要用到函数说明:
MxDrawEntity::DeleteXData
删除扩展数据,详细说明如下:
参数 | 说明 |
---|---|
pzsAppName |
删除的扩展数据名称,如果为空,删除所有扩展数据 |
c#代码实现如下:
- private void DeleteXData()
- {
- MxDrawUtility mxUtility = new MxDrawUtility();
- MxDrawPoint point;
- MxDrawEntity selEnt = (MxDrawEntity)(mxUtility.GetEntity(out point, "选择要读扩展数据的对象"));
- if (selEnt == null)
- return;
- //删除的扩展数据名称,如果为空,删除所有扩展数据。
- if (selEnt.DeleteXData("ExDataName"))
- {
- MessageBox.Show("删除扩展数据成功");
- }
- else
- {
- MessageBox.Show("删除扩展数据失败");
- }
- }
梦想CAD控件com接口扩展数据的更多相关文章
- 梦想CAD控件网页版扩展数据
随着基于CAD的应用软件飞速发展,经常需要保存一些与图形可视性无关的数据,即非图形参数.例如在绘制化验样图中包含品位数据.MxCAD定义一类新的参数——实体扩展数据.扩展数据与实体的可视性无关,而是用 ...
- 梦想CAD控件COM接口自定义命令
在CAD软件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处下载演示实例. _DMxDrawX::RegistUserCustomCommand 向CAD控件注 ...
- 梦想CAD控件COM接口光栅图处理
在CAD操作过程中,我们在设计绘图时,光栅图像也就是我们常说的图片,应用非常广泛,在CAD中可以直接插入光栅图像,并且可以对光栅图像进行裁剪.透明度调整等一些操作,在网页可以快速实现我们所需功能. 一 ...
- 梦想CAD控件COM接口标注样式
增加标注样式 用户可以增加标注样式到数据库,具体实现c#代码如下: private void CreateDim() { //返回控件的数据库对象 MxDrawDatabase database = ...
- 梦想CAD控件COM接口搜索图面上的文字
点击此处下载演示实例 主要用到函数说明: _DMxDrawX::NewSelectionSet 实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数. _DMxDrawX::NewResbuf ...
- 梦想CAD控件COM接口文字样式
增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现c#代码如下: private void CreateText() { MxDrawApplication app = new ...
- 梦想CAD控件图块COM接口知识点
梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...
- 梦想CAD控件图层COM接口知识点
梦想CAD控件图层COM接口知识点 一.新建图层 主要用到函数说明: _DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 c#中实现代码 ...
- 如何在网页中浏览和编辑DWG文件 梦想CAD控件
如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com 梦想绘图控件5.2 是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 201 ...
随机推荐
- WebLog Expert
Weblog expert是一个快速和强大的访问日志分析器.这会让你了解你的网站的访客:活动统计,访问的文件的路径,通过该网站,信息指页面,搜索引擎,浏览器,操作系统,和更多.该计划所产生的易于阅读的 ...
- CF#315 C
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...
- C#项目的生成事件及批处理文件
一个C#项目,如果为同一个解决方案的其他项目所引用,则其编译后,会将DLL拷贝到引用项目中:但如果它并不被其他项目引用,但又想编译后能够自动将生成的东西拷贝过去,可以在项目的生成事件中,写上一些批处理 ...
- 实时人工智能:微软发布Project Brainwave预览版 现场可编程门阵列(Field Programmable Gate Array,简称FPGA) 硬件设计可以迅速演进
https://mp.weixin.qq.com/s/bAPiPURZd-YsbV5PbzwpQQ 编者按:随着各大公司对于数据计算的要求越来越高,实时AI成为了研究者们关注的重点.在美国西雅图举行的 ...
- URAL1553 Caves and Tunnels 树链剖分 动态树
URAL1553 维护一棵树,随时修改某个节点的权值,询问(x,y)路径上权值最大的点. 树是静态的,不过套动态树也能过,时限卡的严就得上树链剖分了. 还是那句话 splay的核心是splay(x) ...
- iOS开发——多线程
很多朋友都说iOS开发中,最难理解和学习的就是多线程,很多的原理实现都是通过log看到,也比较抽象,本人也是在多线程方面投入过很多脑细胞..无论这方面的知识掌握和应用起来是否轻松,牢固的基本功.正确的 ...
- ubuntu 12.04不能mount nfs目录与挂载后只读不能写问题 (转载)
转自:http://blog.chinaunix.net/uid-20680966-id-3810455.html 服务器用的是fedora 12 以前在helper2416开发板上挂载服务器上的n ...
- Odoo免费开源企业信息化平台助力企业成功
企业信息化变革之路 信息孤岛的真实由来 打开百度App,看更多图片 左边为当下企业现状,右边为Odoo的整体 企业信息孤岛的严重性,来自于企业的自身高速发展,企业以销售为生命主题围绕着客户会搭建一系列 ...
- 基于.Net Core的API框架的搭建(3)
5.加入缓存支持 我们希望为项目增加缓存支持,我们选择Redis做为缓存数据库. 首先,我们在Services目录增加一个缓存接口类ICacheService: using System; using ...
- linux 定义变量 ,添加变量值
1.设置值$name=test2. 输出变量的值 echo $echo $name3. 增加变量内容PATH=$PATH:/home/bin/testPATH="$PATH":/h ...