在java中實現 AutoCAD api

因爲在項目中需要從autoCAD 的dwg文件中提取標題框中的屬性插入到數據庫中實現圖紙的批量入庫.

一開始在網上搜索這方面的資料,其中有一些控件可以脫離autoCAD系統提取的,但都是要收費的.比如openDwg是用的比較多的.但是要交費成爲會員才能使用.於是想自己分析DWG的文件格式,然後自己寫個控件出來.找到了DWG文件格式說明.一看,嚇一跳,如此的複雜,自己寫是不現實的.

只好找其他的門路了.後來知道了ActiveX Automation,可以通過 ActiveX Automation操作AUTOCAD,進而提取DWG文件的信息.於是用VB寫了個控件,在客戶端調用.但在javascript中調用需要數字簽名,自己用其他工具生成的證書問題多多,不能爲ActiveX控件進行簽名,只好放棄.

但是這種方式也不能脫離AUTOCAD Application.感覺這樣的話怪怪的,整個系統都要被AUTOCAD Application牽絆,脫離不了ms的windows.後來經過分析,其實自己的思路被java牽絆着,老是排斥ms的東西.而客戶他們使用的是AUTOCAD,他只能在ms的windows上運行,並且客戶的服務器也是ms的.這樣的話服務端的開發使用.net或java都可以,但客戶選擇了後者.這樣的話就可以在服務器端同過java調用AUTOCAD的api控制AUTOCAD Application操作DWG了.


現在的設想是:系統中client將DWG文件上傳至server,在server上取得DWG中的信息,然後返回給客戶端.
於是在servlet中利用jacob調用ActiveX組件操作.問題出現了,每個client的請求都會打開一個Application,這樣將佔用大量的系統資源.受到數據庫連接池的啓發,可將AUTOCAD Application看作是一個數據庫,在系統啓動是打開,以後client的每個請求就是一個連接,用完後關閉.

這還只是初步的設想.具體的利用jacob進行調用.雖然在AUTOCAD的網站中搜索到可以用java進行二次開發,不過好象是針對ms的j++.所以只好通過jacob來調用ActionX了.由於利用jacob來實現調用需要輸入大量的參數.所以對api還需要進一步的封裝.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章