編程讀寫CAD文件驗證


背景

B/S應用系統,根據用戶上傳數據:業務數據和CAD坐標數據,經過一系列運籌算法運算后,輸出一批坐標數據,作為給用戶的規划結果。此時需要方便直觀的給用戶展示坐標數據。可選方式有兩個:

  • web頁面畫圖直接展示,能夠迅速展示給用戶結果,但用戶只能根據圖形大概位置估計,不能夠看到很精細的位置,故該方式只可作為預覽使用
  • 把坐標數據輸出到CAD軟件能夠識別的文件中,用戶下載文件后,直接用AutoCAD軟件直接打開該文件,藉由CAD軟件功能的豐富性,可以看到很精細的坐標位置,亦可利用AutoCAD二次人為調整加工。

故:需要調研編程讀寫CAD文件的可行性

AutoCAD文件格式

文件格式 共同點 不同點
DWG Autocad軟件可直接讀寫並相互轉換 CAD的圖形文件,DWG僅是CAD專用文件格式,
DXF ^ 用於CAD與其它軟件之間進行CAD數據交換的CAD數據文件格式,文本文件,文件可能比dwg大很多

故選用dxf格式作為調研格式

目標運行環境

  • Linux

編程語言考量

因項目中服務器端使用到了兩種編程語言,故分別調研該兩種編程語言

  • Java
  • Python

驗證范圍

本次驗證是為了確認是否能夠通過程序代碼對CAD的dxf文件進行編輯,編輯以后保存的dxf文件能否被Autocad軟件正確打開,數據是否會缺失,不同dxf年份格式的dxf文件是否可正確保存和打開。

各編程語言的可選開源包

Python

包名 版本 優缺點
ezdxf 0.13 直接讀寫dxf格式文件
pyautocad - 必須運行在安裝有AutoCAD軟件的機器上

Java

包名 版本 優缺點
kabeja
YCAD
JDXF
jdwglib
Teigha 必須運行在安裝有AutoCAD軟件的機器上
dxf

驗證環境

  • 硬件
    設備為惠普筆記本電腦,win10系統,64位。
  • 軟件
    • Python 3.7
    • Java8
    • Autocad2015
    • Autocad2016
    • 以及一張dwg格式的工程cad圖紙

驗證過程

  1. 用CAD軟件將DWG格式的工程圖轉成各年份的dxf格式(dxf2000, dxf2004, dxf2007, dxf2010, dxf2013, R12)
  2. 編寫代碼讀入dxf格式文件並新建圖層,在新建的圖層上用代碼畫幾個圓形和正方形,保存為對應年份的dxf格式文件
  3. 通過AutoCAD軟件重新打開代碼編輯過並保存的各年份dxf文件,核對是否畫圖成功,文件大小是否有改變。
  4. 通過AutoCAD自帶的文件數據提取功能遍歷CAD圖中的所有元素,輸出execl,核對元素數量是否有出入

驗證結果

Python

  • ezdxf
    能夠正常讀寫dxf文件

    通過CAD軟件打開dxf文件輸出execl后發現原文件有887410個元素,代碼畫圖保存后的文件有887415個元素,多出的五個元素為代碼新增的一個圓形以及四條線段組成的矩形。元素數目是對應的

Java

Java各包文檔偏少,多數是讀取dxf文件,目前沒有找到合適的用例或api去編寫測試代碼去編輯dxf文件,故目前給出驗證可行性結論,有待繼續深入研究

注意事項

  • DWG文件轉換為R12 dxf格式時,會出現轉換后的文件過大(600M),並且轉換后的文件打不開。(Auto2015和Auto2016均會出現這種情況),故不能選用該版本的dxf
  • ezdxf庫保存的dxf文件轉換成DWG格式時,打開會跳出錯誤彈框,需要修復才能打開展示,修復后內容展示正常並且元素沒有減少。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM