XDataCAD开放给用户(程序员)的一个功能接口:可以往CAD实体上写入/绑定你的个人信息,CAD不会理会/管理你的个人信息,但会保存到DXF文件中。同时你也可以读取这些个人的信息,方便你编程使用。

QCAD读写dxf文件使用的dxflib。如下所示,利用dxflib写入扩展属性。

dw.dxfString(1001,"Point");
dw.dxfString(1002,"{");
dw.dxfString(1000,"代码");
dw.dxfString(1000,"201365845");
dw.dxfString(1002,"}");

QCAD源码中只需在读入和写入DXF时,加入读写扩展属性(自定义属性)即可。

写入属性

//    dw.dxfString(1001,"Point");
//    dw.dxfString(1000,"代码:201365845");
void RDxfExporter::writeCustomProperties(const REntity& p)
{QMap<QString, QVariantMap>customProperties=p.getCustomProperties();QString kv;foreach (QString title, customProperties.keys()) {QVariantMap properties=customProperties.value(title);dw->dxfString(1001, (const char*)RDxfExporter::escapeUnicode(title));foreach (const QString key, properties.keys()) {QVariant value=properties.value(key);kv=QString("%1:%2").arg(key,value.toString());dw->dxfString(1000,(const char*)RDxfExporter::escapeUnicode(kv));}}
}

读入属性

void RDxfImporter::importXData(QSharedPointer<REntity> entity)
{QStringList pJson;QString str;QPair<int,QVariant>p;foreach (const QString group, xData.keys()) {QList<QPair<int, QVariant>> properties=xData.value(group);for(int i=0;i<properties.size();++i){p=properties.at(i);str=p.second.toString();if(str.contains(':')){pJson=str.split(":");if(pJson.length()>1)entity->setProperty(RPropertyTypeId(group,pJson[0]),pJson[1]);}}}
}

这样就可以在QCAD属性编辑面板中添加自定义扩展属性。

DXF文件中保存的属性:

1001
QCAD
1000
age:29
1000
name:xxxxx
1000
sex:boy
1000
\U+...............................

dxf 文件的存储方式是以编码(组码)+ 数据的形式

DXF组码值 扩展数据内容
1001 XData 的AppID,即分组
1000~1009 字符串(<=255)
1002 XData的控制字符串{}
1010~1059 浮点数

示例:

dw.dxfString(1001,"扩展属性001");
dw.dxfString(1002,"{");
dw.dxfString(1000,"代码");
dw.dxfString(1000,"201365845");
dw.dxfString(1000,"长度");
dw.dxfDouble(1010,"10091.999");
dw.dxfString(1002,"}");

注:接下来就可以 对QCAD对象分组编码扩展属性。

entity->setProperty(RPropertyTypeId(group,key),value);

参考

CAD 扩展数据 https://www.cnblogs.com/xiaowangzi1987/p/13193276.html

QCAD dxf 扩展属性相关推荐

  1. Kotlin学习笔记(五) 扩展函数 扩展属性

    2019独角兽企业重金招聘Python工程师标准>>> 扩展函数和属性可以定义在对应的类中和kotlin文件中; 1.扩展函数 1.扩展函数可以由对象直接调用,在扩展函数中,用thi ...

  2. 一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成...

    一个存储验证信息的公用类: /// <summary>      /// 验证信息实体类      /// </summary>      public class RuleV ...

  3. flowable设计器节点属性扩展_Flowable-流程定义扩展属性

    上次讲述了任务节点的扩展属性,这次讲解一下流程的扩展属性 前端 1 stencilset_bpmn.json 中增加属性 { "name" : "process_devi ...

  4. linux getfattr中文乱码,在bash shell中使用getfattr查看文件扩展属性

    getfattr用法 用于获取文件扩展属性,返回一系列键值对,参考Linux Man Page. 常用OPTIONS -n name, --name=name Dump the value of th ...

  5. 【Kotlin】扩展属性 ( 扩展变量属性 | 扩展常量属性 | 注意事项 | 本质分析 )

    文章目录 I . 扩展属性 总结 II . 扩展属性 定义格式 III . 扩展属性 标准示例 IV . 扩展属性 注意事项 V . 扩展属性 本质分析 VI . 扩展属性 代码示例解析 I . 扩展 ...

  6. SQLServer错误:过程 sp_addextendedproperty,第 xxx 行对象无效。'dbo.xxx.xxx' 不允许有扩展属性,或对象不存在。...

    上传数据库到虚拟主机,在执行SQL脚本的时候出现以下的错误: 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,第 37 行 对象无效.'dbo.Messag ...

  7. 转: 利用SQL SERVER2005的XML字段类型实现类似商品扩展属性

    今天自己翻了两页自己的BLOG,发现真是越来越懒了,已经好长时间没有写技术相关的日志了,记得刚开始写BLOG的时候还经常写写自己的技术积累的,现在除了发布ZJ-BLOG的程序更新信息外,好像全成了自己 ...

  8. 不是Linux文件系统的权限,Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)...

    文件系统的权限管理(DAC体系:自主访问控制体系): 普通权限 特殊权限 文件的扩展属性 FACL(文件系统访问控制列表) 安全上下文: 任何在计算机中执行的任务都是由进程来实现的,所以进程就有必要访 ...

  9. PowerDesigner16中的对象无效,不允许有扩展属性 问题的解决

    PowerDesigner16中的对象无效,不允许有扩展属性 消息 15135,级别 16,状态 1,过程 sp_addextendedproperty,第 37 行 对象无效.'XXXXXXX' 不 ...

最新文章

  1. python join 的使用
  2. 技术人生:本周改进计划
  3. 一图看清全球270家典型区块链服务商
  4. docker history 查看docker镜像构建过程 还原dockerfile 查看启动参数
  5. 【Web安全】JSP内存马研究
  6. 流水调度问题c语言,基于遗传算法的流水车间调度问题汇总.doc
  7. java:退出功能_Java 8:功能VS传统
  8. 环形线圈车辆检测器突破了LOOP-LOCK
  9. c语言元素累积的计算,C语言:计算输出给定数组中每相邻两个元素的平均值的平方根之和。...
  10. Android——从HellowWorld开始
  11. Mysql之运算的使用
  12. 拍出来好看的拍照软件?这4款好看好用的App简直赞到爆~
  13. ssc335调试isp记录之色彩篇
  14. linux系统怎么进入救援模式,Linux怎么进入救援模式?
  15. 教你用Ossim平台检测网络的Shellcode攻击
  16. 约瑟夫环解法大全(C语言版)
  17. 线程中的setDaemon方法
  18. 20008-06-12 周四 晴 英语单词
  19. android 刘海机型适配,Android全面屏刘海适配
  20. WebRTC基础实践 - 5.通过RTCPeerConnection传输流媒体视频

热门文章

  1. PTA第02章练习题(Python)
  2. 小小盗号VC实现原理
  3. 小身板干大事:DATAhawk无人机独创手抛起飞实现3厘米精准测绘
  4. GPU、GPU驱动、OpenGL、游戏引擎之间的关系
  5. PowerTool kEvP.sys=V4.2 内核拒绝服务漏洞
  6. vSphere Client中虚拟机与客户机中的剪切板不能够拷贝、粘贴
  7. 2023年湖北安全员ABC报名时间和考试时间是什么时候?甘建二
  8. 三阶齐次线性方程求通解_三阶常系数线性微分方程特解的简单求法
  9. 在高分辨率屏幕上用VMware运行ubuntu显示过小的问题
  10. 证券投资深度学习_基于风险中性的深度学习选股策略