明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2999|回复: 9

[经验] 浅淡扩展数据的设计

[复制链接]
发表于 2017-9-24 23:03 | 显示全部楼层 |阅读模式
本帖最后由 vectra 于 2017-9-24 23:05 编辑

复杂的应用往往涉及到扩展数据,良好的扩展数据设计可以方便维护以及和其它应用程序交互。

下面是一种常见的不好的设计模式
1001 “A”
1070 100
1001 “VAR”
1040 180.0

....

这里,设计者将应用名APPID作为变量(属性)名称来使用。之所以这样写估计就是方便了LISP来随机访问和修改指定名称的数值。每个应用名后面只包含一个变量值,可以用很简单的代码来处理。

但是如果你的图形刚好还需要运行其它应用,并且另一个应用恰巧用到了一个名为“A”的APPID,后果会怎样?
APPID存在是为了区别不同的应用的,从而实现应用范围内的数据封装隔离。比如"A"和"VAR"都是一个计算管道阻力的应用的变量,那APPID可以取为"PIPE_FRICTION",然后数据格式变成这样。

1001 “PIPE_FRICTION”
1070 100
1040 180.0

....


嗯,和其它应用区别开了,但是变量的含义是通过属性出现的位置决定的,在这里第一个扩展属性是A,第二个属性是VAR。当你修改了代码,需要增加或变化属性的次序时,产生了扩展属性的不同版本,而为了和已经发布的程序兼容,你必须处理不同版本的扩展数据。增加了代码的复杂性和维护的开销。

然后产生了第三种记录扩展数据的方式

1001 “PIPE_FRICTION”
1000 “A”
1070 100
1000 “VAR”
1040 180.0
...

这里约定每个属性由两行组码来保存,第一个1000的字符串组码保存的变量的名称,紧随其后的不同组码值代表了该名称属性的类型和具体的值。
扩展、修改组码对的值仍相对容易,虽然增加了扩展数据占用的空间,但大大提高了扩展数据的可理解性和可维护性。

复杂、后续可能经常需要升级扩展的数据建议采用第三种设计模式,应用非常简单时,也可以采用第二种模式。而第一种,应该是需要避免的。


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2017-9-24 23:06 | 显示全部楼层
占楼,为代码预留。
发表于 2017-9-25 08:41 | 显示全部楼层
有些CAD图档使用扩展数据,确实给设计加工带来很多的便利。软件必须有专用的APP来解读,否则就算是读出来了扩展数据就是一串数字,没有实际意义。(我看到图档里打开提示缺少什么APP.CORE APP了,这毕竟是自己厂开发的)
发表于 2017-11-28 15:17 | 显示全部楼层
扩展数据有什么具体实用的例子吗?谢谢!
发表于 2017-11-28 20:49 | 显示全部楼层
其实,则就是一些增值二次开发软件所使用的方法。
发表于 2017-11-28 21:53 | 显示全部楼层
vectra 你好! 有扩展数据应用实例可分享吗?
发表于 2017-11-30 19:38 | 显示全部楼层
顶一下下! 別沉了!
 楼主| 发表于 2017-11-30 21:20 | 显示全部楼层
yoyoho 发表于 2017-11-28 21:53
vectra 你好! 有扩展数据应用实例可分享吗?

可以参考 http://bbs.mjtd.com/thread-111766-1-1.html

一键打印3.0版本发布(v3.02更新)

这贴。

这个批量打印程序就使用了扩展数据,在每个图框上保存好打印相关设置,免去重复设置,实现快速批量的打印。
发表于 2017-12-1 08:30 | 显示全部楼层
vectra 发表于 2017-11-30 21:20
可以参考 http://bbs.mjtd.com/thread-111766-1-1.html

一键打印3.0版本发布(v3.02更新)

感谢 vectra 分享程序! 3Q!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-23 17:26 , Processed in 0.497761 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表