首页 > 技术文章 > 日志篇 协同cad

JJBox 2020-09-03 20:40 原文

首先利用局域网通讯可以实现协同,

例如我利用Socket实现过一个功能,在A电脑的CAD画图,B电脑的CAD就跟着画出来.

然后实现的过程有个问题是,如果传数据来的时候,用户还不能操作CAD,数据读出读入时候需要锁就对了.

这个问题就要利用类似通知的方法来异步实现,也就是你不画图的时候自动根据队列载入,或者你点"载入"时候才载入.

到此为止都很容易实现.

那么关键的问题来了: 人家的图元应该是人家的,你没有更改的权限,如果要更改,需要通知对方.

唉!...这不是revit嘛!

对!...这就是revit的协同功能...所以要引入"权限"的概念...

如果是普通cad图元,建议你放弃,除非桌子加一个"用户"的功能,并且修改大量的自带命令,阻止非当前用户修改.

但是cad的二次开发也极难实现,而唯一可行的是,例如天正那种利用自定义图元加一个属性,覆盖掉所有普通图元,并且完全覆盖掉cad原始命令.

这虽然可以实现,但是工作量很大,并且如果出现普通图元,那么怎么办?转化图元?权限归属?

而非自定义图元虽然也能够通过xdata或者词典数据验证从而实现,

不过实现的情况是,国内有大量的lisp插件,虽然说覆盖cad原始命令可以处理一部分,但是lisp如果可以删除这部分图元,那么表示这个"权限"脱钩了.所有图元将会变成"你的"...

所以根本实现的方法也只能寄望cad的原生去实现.

关键是,国内cad厂商他们的协同是根据git一样的奇葩思维,所以国内cad厂商可以在这方面发力.

不过,之所以国内cad厂商不给力,主要也因为cad市场已经由大量的桌子用户形成.

加上桌子的二次开发的API提供和帮助方面已经超越了任何国内cad公司.

桌子还要求开发者写博客与二次开发们解答问题呢.

(完)

推荐阅读