簡述FreeCAD在vs2017下的編譯與dxf導入

最近發現 FreeCAD 官方在發佈 0.19_pre 時已提供 vs2017 x64的LibPack,如今就再來測試一下。python

編譯

下載 FreeCADLibs_12.1.2_x64_VC15.7z 官方LibPack以後,解壓後能夠將vs2017的生成目錄與LibPack重合,也能夠不重合。不重合的話能夠更好地看清楚編譯後的 FreeCAD 都會產生哪些文件。git

不重合 LibPack,使用cmake生成vs2017工程項目文件,這裏邊最主要的是二個變量的設定:FREECAD_LIBPACK_DIR要設置到LibPack解壓目錄,另外須要將 BUILD_QT5 開啓,而後就能夠了。github

運行

啓動編譯成功的 FreeCAD 有點注意事項 (不重合的狀況下):測試

  • 有可能啓用後找不到python的相關文件而啓動失敗。這個時候建議設置 FC_PYTHONHOME 至 FreeCAD-LibPack 解壓後目錄的 bin 子文件夾;由於在FreeCAD啓動代碼裏會取 FC_PYTHONHOME 重置 PYTHONHOME 環境變量。
  • 有可能由於找不到 Qt 的platform插件而啓動失敗。建議向 編譯後 FreeCAD_d.exe 所在目錄添加 qt.conf 文件,使得Qt知道他的庫路徑在哪一個地方。若是是重合LibPack目錄的此項不用設置。

qt.conf 的內容舉例以下:ui

[Paths]
Prefix=E:/sources/FreeCAD/FreeCAD-vs2017-build/../FreeCADLibs_12.1.2_x64_VC15插件

導入dxf, dwg

導入dxf, dwg類型的文件,是在 Draft 模塊之下的 Init.py 裏邊增長的,dxf 由 importDXF.py 負責,dwg 由 importDWG.py 負責。orm

其中 importDWG.py 是採用 ODA 的 TeighaFileConverter.exe 來進行中轉的,也就是說若是導入dwg,那麼它先用 TeighaFileConverter.exe 將dwg轉換成爲 dxf,而後將dxf格式的文件導入;導出也是如此,先轉換成爲dxf文件,再由 TeighaFileConverter.exe 將dxf轉換成爲dwg。對象

第一次看到這樣的轉換思路,在缺乏穩定可靠的dwg導入導出庫時,這樣的思路感受不錯。文檔

導入 dxf 格式,在 importDXF.py 內是這樣處理,首先從 user.cfg 讀取設置,若是 BaseApp/Preferences/Mod/Draft/dxfUseLegacyImporter 的設置爲True,則啓用 python 語言的庫進行導入,這個庫沒有的話,會從github上下載。而後還有一個配置項,是否每次都去嘗試下載最新的。下載的4個文件(dxfLibrary.py, ...) 會放在 Macro 目錄或者是 UserAppData。qt

默認狀況第一次啓動時,user.cfg 內是沒有設置 BaseApp/Preferences/Mod/Draft/dxfUseLegacyImporter 的,則取默認值爲False,這時就採用 Import 模塊的 readDXF() 來執行dxf文件的導入,這是C++寫成的。

dxf文件的格式

dxf格式的描述,網上有一大堆這方面的文章,AutoDesk也有幫助文檔闡述了dxf格式。文本形式的比較友好,它老是採用一個組碼+相關值的方式,並且組碼與相關值都各自佔一行。

不一樣的組碼錶明不一樣的類型,好比 0 SECTION 表示段的開始, 0 ENDSEC 表示段結束;而後 0 HEADER表示爲HEADER段,圖形對象在 ENTITIES 段內。

不少庫並不會處理dxf的所有內容,好比 FreeCAD 內帶的 dxf.h/dxf.cpp ,就是隻讀取 ENTITIES 段之下的圖元的,其他的信息都丟棄處理。

相關文章
相關標籤/搜索