您的位置:首页 > 其它

利用AutoCAD I/O 和View & Data 做DWG图纸的无纸化签字

2016-02-28 23:14 423 查看
在几次活动中,听到有用户提及一些审批流程里,需要对DWG图纸签字,通常在图纸的标题栏里。标题栏中的文字项是Attribute,如果是文本好办,直接设置其TextString,而如果是签字,则只能打印出纸质的。能不能无纸化签字,甚至不需要安装AutoCAD做签字呢?利用 AutoCAD I/O 和View & Data,这个成为了可能。

有客户也提到DWG图纸签名技术是早就有的,见此文章,我认为这只是对图纸增加单一信息,是对任何图纸,类似水印的信息。而标题栏是工程图特有的一种信息表达,而且多个栏目内容,DWG图纸签名技术并未解决对标题栏的应用。

节前利用零星时间写了个程序,用户在网页里对图纸标题栏对应部分添加内容,要么新的字串,要么是签字。这是演示视频。CSDN不能嵌入视频?!

只能贴视频地址 http://v.youku.com/v_show/id_XMTQ4NTE1MTExNg==.html?from=s1.8-1-1.2

源代码和帮助文档在GitHub上:

https://github.com/xiaodongliang/ViewData-DWG-TitleBlock-Signature

主要验证可行性,用户体验上还有很大差距。比如,不是对着标题栏格子签名,而是先让用户在一旁的面板签字,把签字的图片流进行处理。有兴趣的朋友可继续改造提高。

一些技术细节:

1. 如何在浏览器中签名:

    我使用了一个JS库,Javascript library of signature 非常棒,可以感知笔画的力度,笔画流畅而且还能有粗细和笔锋。此库还能将签名导出为图片流。所以我将其图片流记录下来传到云端处理。最理想的方式是直接在浏览器中,在对应的格子里签名,由于标题栏既可以是文本又可以是签名,而且标题栏的范围要使用鼠标签个合适大小的还比较困难,所以我创建一个Viewe
& Data的面板,让用户可以选择文本或签字,签字的话,也有比较宽裕的空间着手

2. 签名在DWG对应什么

   估计首先想到的就是将签名图嵌入到DWG,AutoCAD中有光栅图和OLE两种方式嵌入图片,前者需要图片文件跟着DWG发布,造成View&Data转换更多的复杂步骤。后者呢又必须考虑到本地是否有缺省显示图片的机制,,而且API不支持创建OLE :(。而且两者都很难设置图片和标题栏的位置匹配,还有背景色。这花费了我大量的时间研究。最后毅然放弃,转向将签名笔画解释为Solid实体,即一个点一个Solid,这样不仅能精确的复制出原始签名,而且缩放和调整相当方便,内嵌到DWG中,方便修改和删除。实现这个机制的时间是前面折腾图片时间的十分之一。方案很重要啊!

3. 如何定位标题栏的格子

     显然,View&Data不会去考虑到这个细节。所以我先是创建了.NET程序,扔到AutoCAD IO。此程序有两个命令,当用户上载图纸到云端,其中一个命令将对其标题栏解析,提取出标题栏对应块定义,属性定义,属性的高宽等信息,制作成json串供给客户端使用,这样当用户鼠标点击标题栏时,会根据属性的高宽检测出当前鼠标所对应的属性,在签名的面板里显示出来。当用户签字完成后,更新后的json串传到AutoCAD IO,由另外一个命令解析,获取更新内容例如签名的文件流,对标题栏更新。各位朋友看看有无更好的方式。 



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: