戏说CAD开发 DWG文件格式浅析

原创 2005年03月02日 00:54:00

     可恶的AutoDESK用自己的操作方式和格式一同天下,据统计世界上有70%的图纸是dwg格式的。所以大家都不得不去琢磨这个dwg,如果那个公司说要推出自己的格式抗衡dwg,你就全当他在说梦话吧。毕竟林子很大吗。。:)

    OpenDesign一直在破解dwg格式,做的是最成功的一个了。应该说是唯一的一个。这个组织三番两次的邀请AutoDESK加入他们,结果人家理都不理。

     当然,我们用OpenDWG来解析dwg是最好不过了。OpenDWG早期的版本有ODT和ODV,新的好像是DWG Drict,好多人直接用ODV就可以显示出DWG了。 但是这种需求毕竟不多。 我要查询属性啊? 我要测量距离噢? 我要简单的编辑啊,,我要毕竟复杂的编辑,,别说了。 ODV当然不中..。.所以我要表一下ODT,ODT全名OpenDWG Tool Kit.。它提供的函数可以解析2002以前版本的dwg。

         有的公司自以为买了OPENDWG就万事大吉,其实不然。 ODT可以帮你解析DWG文件,但是解出来的东东放在什么地方啊? 你有MLINE,有POLYLINE,有MTEXT,有HATCH,有XDATA,有DIMSTYLE。。。吗?
德国有个POWERCAD的最新版还没有支持到SPLINE呢?

       DWG中包含了模型空间和图纸空间,不要说你不知道这两个空间。
      然后,记录了几个样式链表,字体样式链表,文字样式链表,尺寸样式链表,VIEW链表,VIEWPORT链表,冻结链表,块链表,剖面线链表,线型链表,MLINE样式链表等;
      下来是一些要保存到图纸中的系统变量,烦如牛毛,
       下来是就是真正模型空间中的实体了。。。

       字体和文字样式不同,以后我们可以专门的讨论这个。
       所谓字体是.shp.shx字体。每个文字样式都可能用到shx字体,也有可能是ttf字体。Text创建和画的时候要检查自己的文字样式,文字样式再找相关的shx字体。

       尺寸样式中有六七十个选项来控制,这些选项在实际对尺寸的影响中有不仅相同,因为尺寸保存了一个块,为了画的时候快一点。恶心吧? 所以一定要一个重建机制来伺候这些家伙。

     view链表是用来记录显示位置的。

     VIEWPORT链表主要是图纸空间中用来调整打印效果的。

     冻结链表呢? 在dwg中,有一些图层是隐藏的,并且这些隐藏的图层很少用到,结果就被人家冻结了。为了提高速度哦,不用去读它。

        块链表里面包含了块的信息,每个块都有自己的entity链表。 有些内部块要注意。比如“*d”开头的是尺寸块。还有模型空间和图纸空间也用块机制来管理。 我发现AutoCAD很喜欢用块来简化一些操作,这一点应该借鉴。

   剖面线和线型链表记录了他们各自的形状定义。 奇怪了吧? 剖面线型和线型的定义竟然保存在文件中。对,这样的好处是我这个dwg文件可以在其它任何acad上打开,我有自己的线型定义,不要你系统的线型。如果对于用户自己定义的线型和剖面线更是省事多多了。。另外,线型和剖面线的形状定义也不会占太多的空间,几行text文本而已啦。

      ....

       如果你有兴趣,又有时间,建议你看看Intellicad的源码。 他们用来ODT,同时他们也仿照dwg建立模型。       

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用CadLib实现CAD(dxf、dwg格式)文件的读取和显示

使用CadLib实现CAD(dxf、dwg格式)文件的读取和显示

autocad dwg 文件格式

  • 2008-10-18 00:23
  • 969KB
  • 下载

arcGIS加载cad的dwg文件

从知乎看到的,确实可行;https://www.zhihu.com/question/34799374 作者:问题天天多多 链接:https://www.zhihu.com/question/...

DWG文件格式转换工具

  • 2015-04-23 09:43
  • 18.69MB
  • 下载

ODA 关于DWG文件格式说明

  • 2015-12-22 21:41
  • 533KB
  • 下载

浅析Hadoop文件格式

轉載地址:http://www.infoq.com/cn/articles/hadoop-file-format Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据...

Python的运行机制--pyc文件格式浅析

Python的原始代码在运行前都会被先编译成字节码,并把编译的结果保存到一个一个的PyCodeObject中,pyc 文件即是把PyCodeObject从内存中以marshal格式保存到文件后的结果。...
  • I2Cbus
  • I2Cbus
  • 2014-11-22 18:24
  • 6860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)