从DWG到XAML (I)

DWG的时间奇点

AutoCAD(Auto Computer Aided Design)是美国Autodesk公司首次于1982年生产的自动计算机辅助设计软件,用于二维绘图、详细绘 制、设计文档和基本三维设计。现已经成为国际上广为流行的绘图工具。CAD技术不是AutoDesk公司的专利, 同样CAD在计算机上的应用, 也不是AutoDesk公司开的先河. 在AutoCAD出现之前, 已经有了一家叫做VersaCAD的公司制作的同名软件出现在市场上. 由于VersaCAD很强 大也很贵, 所以AutoDesk在一开始选择了一条聪明的道路, 免费及开放, 这使得AutoCAD得以迅速传播和升级. 借助于AutoCAD的东风, DWG 文件格式成为事实上的二维设计绘图的标准格式, 这是其一. 前期的开放也为后来发生的事情埋下了引线, 这是其二.

但是历史在小局部偶尔也会开一下倒车. 在AutoCAD发展的过程中, 它逐步的转向了收费, 并且DWG文件成为了一个封闭的标准! 直到今 天, 互联网上依然无法得到一份完整的, 关于某个DWG文件格式版本的技术文档. AutoDesk利用AutoCAD的影响力给自己构建了一个帝国, 在赚取大把美钞的同时, 也关闭了DWG格式标准与其他软件系统互通的大门. 我们现在仅仅直到一点点朦胧的东西, 比如: DWG格式的组织 形式基于二进制编码; DWG格式具有自关联的压缩技术; DWG文件能够自验证等. 但也是仅仅如此而已, 没有任何细节可言.

同时, 基于AutoCAD这个庞大平台的二次开发也从未停止过. AutoLisp和ADS成为早期的主力. 后来AutoCAD发布了基于C++语言的二次开 发包-ObjectARX. 至此, 基于AutoCAD的二次开发行为第一次被明确定义了(至少笔者是这么认为). 这一开发行为的流程图大概看起来如左 : ObjectARX作为类库提供相关功能, 开发人员可以在任何编辑器中编辑二次开发代码; 通过C++编译器编译和链接; 最终生成动态链接库 载入到AutoCAD中实现功能扩展. 即使后来出现了ObjectARX面向其他语言比如C#语言的版本, 这一基本方式还是在本质上得到了保留. 互 操作成为部分可能, 虽然不是直接实现. 工程人员在AutoCAD软件内打开对应的DWG文件后, 可以通过二次开发的功能扩展, 使DWG格式内容 转化为可被其他系统认可的数据.

"AutoCAD在地上划了一个圈, 逼迫所有人把东西放到这个圈子里."

反抗者的步伐

中国有句话, 叫"哪里有压迫, 哪里就有反抗." 在AutoCAD的压迫下, 第一个揭竿而起的不是某个谁, 而是一个组织. 这个组织的名字 叫做"Open Design Alliance", 简称ODA. ODA是在一个月黑风高的晚上带着武器来的, 这个武器就是著名的OpenDWG文档和DWGDirect开放 类库. 前文说到AutoDesk初期的开放策略给自己埋下了隐患,这个隐患现在被ODA利用了. ODA在最初的DWG版本基础上, 通过类似于破解的 方式, 获取了DWG格式的大部分技术细节. ODA收取少量的注册费用以维持运营, 并且以开放的姿态发布了DWGDirect - 面向C++语言, DWGDirectX - 面向ActiveX控件, DWGDirect.NET - 面向.NET. ODA承诺, 面对AutoCAD的版本升级, 将以最快的速度更新这些类库. 实际 上它做到了: 现在, DWGDirect类库已经声称支持DWG/DXF/BDXF等格式最新的2010版本的读写. ODA的行为从根本上动摇了AutoDesk的根基. 2006 年11月22日 Autodesk 对 Open Design Alliance 提出了诉讼. 下面这一段是AutoDesk公司对于诉讼的官方声明:

"The ODA software libraries contain technology that falsely identifies customer data files their software creates as Autodesk-created files. We have the right to control the use of our trademark and we depend on that right in informing customers of the source of the files they are introducing in their CAD environments. The ODA interfered with our ability to do that. The ODA failed to respond to our reasonable request to stop violating our rights. As a result Autodesk is suing the ODA in order to defend its ability, through TrustedDWG, to assure our customers of the source of customer data files and make sure the origin of the files is not falsely attributed. The ODA’s latest software libraries mimic TrustedDWG and defeat the very purpose of the program. We are relying on trademark laws to protect our ability to inform customers of the source of customer data files."

诉讼还在继续, 走向也不得而知, 我们能确定的是, AutoDesk和ODA到现在都活得很好. 不过作为系统开发人员, 我们似乎更应该关注 OpenDWG文档和DWGDirect潜在的风险:

OpenDWG文档是以一种近似于破解的方式获取了DWG格式的细节. 这将会给使用DWGDirect的开发人员带来法律上的风险.

OpenDWG文档不是一个对DWG所有版本的完整描述. 它仅仅支持到2004, 并且部分支持2007.

甚至于在某一特定版本内部, OpenDWG文档至今还未破解部分字节的含义.

时间: 2024-10-31 16:20:53

从DWG到XAML (I)的相关文章

从DWG到XAML (III)

.NET中的 XPS Packaging类库及一个DWFx Packaging类库的实现 DocumentViewer 其实复杂的事情原本可以很简单. 你想要的那个轮子, 也许别人早就为你造好了. 在这里也是如此. 比如全部你想要的, 就是在你的系 统前端可以直接查看DWG文件, 那么全部需要做的, 仅仅是简单的从DWG导出为DWFx文件, 然后使用WPF的DocumentViewer控件打开这个文件 就可以了. 这个示例程序可以从这里获取. XAML 1. <DocumentViewer Na

从DWG到XAML (II)

什么是XPS XPS 是 XML Paper Specification 的简称. 它诞生于2006年下半年, 跟随Windows Vista发布并且在Vista平台上应用颇多, 是微软开 发的一种文档保存与查看的规范.这个规范本身描述了这种格式以及分发.归档.显示以及处理 XPS 文档所遵循的规则.最为显著的特点 是,XPS 所用的置标语言(Markup Language)是 WPF 所用的 XAML 的一个子集,因此显示 Windows 应用程序所用的方法可以用于 XPS 文 档. 为了推广

04.移动先行之谁主沉浮----XAML的探索

如果移动方向有任何问题请参考===> 异常处理汇总-移动系列(点) 移动先行之谁主沉浮? 带着你的Net飞奔吧! 链接======>(点)   XMAL引入 XAML 类似于 HTML,是一种特殊的XML语言 XAML本质上属于一种.NET Programming Language 主要应用在 Windows 8.Windows Phone.Silverlight 和 WPF 中   1.XMAL 命名空间的声明 分析一下头文件 详细注解 在属性里面改过名字后就会以x:开头 补充:xmlns(

捕捉WPF应用程序中XAML代码解析异常

由于WPF应用程序中XAML代码在很多时候是运行时加载处理的.比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有错误,此时XAML代码解析器通常会抛出称为XamlParseException的异常.但是抛出的XamlParseException异常提供的信息非常简单,或者是很不准确.此时我们关于通过对变通的方法来获取更多的异常信息: 我们知道,WPF应用程序中的XAML代码是在InitializeComponent方法中解析的.而这个方法通常位于窗口对象的

Silverlight-JavaScript API 中的 FindName、CreateFromXaml 和 XAML 名称范

对象树和 FindName 在 JavaScript API 中,初始对象树始终通过分析 XAML 来构造.除了一些能够分析字符串的类型转换用 法,加载 XAML 是在 JavaScript API 中"构造"对象的唯一方式.构造了这样的树之后,您通常会希望与该 对象树进行交互.为此,需要脚本对象引用树中的一个对象. 建立这样的引用的最佳方法是将 Name 或 x:Name 属性分配给计划在运行期间引用对象所在的 XAML 中的 任何对象元素.在 JavaScript API 中,名称

Windows 8开发入门(一) 使用Xaml+C#开发第一个Metro Style应用程序

首先我们需要安装Windows 8以及VS2012,下载地址:http://msdn.microsoft.com/zh- CN/windows/apps/br229516/ 然后我们打开VS2012,选择Windows Metro Style,然后选择创建Blank App项目如下图: 开发入门(一) 使用Xaml+C#开发第一个Metro Style应用程序-windows开发入门"> 其新建完成的项目结构如下: 我 们拖动一个按钮和ListBox到界面中,设置按钮事件以及ListBox

Silverlight编程模型、XAML和HTML DOM

基于 Silverlight 的应用程序使用浏览器宿主中的 Silverlight 插件通过一个基于浏览器的文档对 象模型 (DOM) 和一个包括对象树概念的特定于 Silverlight 的编程模型来公开其功能.如果使用 Silverlight 编程模型,则可以选择以下三个 API 变体之一:由浏览器解释的 JavaScript.托管代码或 由动态语言运行时 (DLR) 解释的动态语言.本主题讨论 DOM 与各可能的 API 变体之间的关系,此外, 还讨论各种 API 和应用程序模型如何使用

Silverlight:使用内联XAML

您应指定包含 XAML 的内联 HTML 内容区域,而不是使用由统一资源标识符 (URI) 引用的离散文件或包来设置初始 Silverlight 内容. 重要说明: 内联 XAML 是一个仅可用于 Silverlight 的 JavaScript API 的概念.内联 XAML 与 Silverlight 的托管 API 不兼容. 使用内联 XAML 由于它与浏览器 DOM 之间的关系,内联 XAML 构成了使用 JavaScript API 的深思熟虑的选择.如果没有托管项目文件(该文件在其根

VS 2012 Update 2新功能:XAML designer载入时间的性能增强

微软已经发布了Visual Studio 2012的Update 2,并带来了丰富的新功能.本次更新提供了一些VS2012的"重大改进".早在1月的时候,微软就为本次更新提供了一个预览版本,以收集大家的测试和反馈,而现在,本次更新的最终版本已能够下载了.新功能中有一个新的"VS Blue"主题,其中也涉及到了XAML designer载入时间的性能增强. 微软在官方一篇博文里表示,"与VS2012.1一样(VS2012.2包含VS2012.1),本次发布包