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文檔至今還未破解部分字節的含義.
筆者不是ODA的粉絲. 恰恰相反, 筆者對於這種破解的行為持懷疑和否定的態度. 但是毫無疑問, OpenDWG文檔和DWGDirect類庫重新定 義了二次開發的流程, 使在AutoCAD平台外使用和修改DWG文件成為現實. 事實上, 國內很多公司在使用OpenDWG. 現在, 由於OpenDWG文檔 和DWGDirect的流行, 二次開發的流程被重新修訂為:
使用AutoCAD制作DWG文件
向外部系統傳遞DWG文件
外部系統利用DWGDirect讀取數據.
ODA開了掘墓的先河, 後來者自然蜂擁而上. 現在在互聯網上, 基於OpenDWG的各種類庫琳琅滿目, 凡此種種, 卻已不足道也.
強者的聯姻
外部世界對於AutoDesk來說有點風雨欲來的味道. 互操作的群眾呼聲越來越大, OpenDWG越來越讓它頭疼. 到了二十一世紀第一個十年 的末期, 系統軟件理論及實踐都攀升至一個前所未有的高度, 系統開發人員們越來越清楚地認識到DWG格式的封閉和對於互操作支持的匮乏 , 嚴重影響了一些自動化系統對於DWG工程圖的使用.
在這樣的背景下, 為了應對圖形輸出,發布,共享和互聯的呼聲, AutoCAD 2009開始聲稱支持一種新的文件格式DWFx. DWFx基於標准 ISO/IEC 29500-2:2008 Open Packaging Conventions (OPC, Office Open XML文檔標准的一部分), 可以看成是一種XPS兼容格式. DWFx格 式基於平文組織, 和所有的xps文檔一樣, 它其實是一個zip包, 裡面包含了圖形信息, 對象定義等內容.
現在AutoDesk終於邁出了在開放道路上的第二步, 和另一個軟件巨頭微軟站到了一起. DWG文件可以發布為DWFx格式, 並且使用Office Visio(可以查看XPS文檔)直接打開觀看; 另外, 在.NET類庫中, 可以直接使用DocumentViewer來查看DWFx文檔. 雖然依然無法修改DWG文件 , 但是畢竟可以在外部系統中直接現實工程圖文件了.
尾聲
"青山遮不住,畢竟東流去." 認清形勢總是一個比較痛苦的過程, 也來得比較緩慢. 但是我們還是希望, AutoDesk在互聯共享的道路上 能更進一步. 現狀是, ObjectARX如入中天, 是絕對的主流; OpenDWG如火如荼, 卻暗藏隱患; DWFx完成了讀工程圖的大部分功能(有些數據 內容在從DWG到DWFx的轉換過程中被忽略掉了), 在寫的道路上裹足不前(這在很大程度上取決於AutoDesk的意願).
DWFx還是有些意思的. 對於一些特定的需求, DWFx更輕型更快捷. 這個系列的下一節, 准備仔細地剖析DWFx文件格式及.NET應用, 最後 一節將發布一個筆者寫的完全基於C#的, 在部分功能上能操作DWFx內容的DWFx類庫.
出處:http://sun.cnblogs.com/