最近發現 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 有點注意事項 (不重合的狀況下):測試
qt.conf 的內容舉例以下:ui
[Paths]
Prefix=E:/sources/FreeCAD/FreeCAD-vs2017-build/../FreeCADLibs_12.1.2_x64_VC15插件
導入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格式的描述,網上有一大堆這方面的文章,AutoDesk也有幫助文檔闡述了dxf格式。文本形式的比較友好,它老是採用一個組碼+相關值的方式,並且組碼與相關值都各自佔一行。
不一樣的組碼錶明不一樣的類型,好比 0 SECTION 表示段的開始, 0 ENDSEC 表示段結束;而後 0 HEADER表示爲HEADER段,圖形對象在 ENTITIES 段內。
不少庫並不會處理dxf的所有內容,好比 FreeCAD 內帶的 dxf.h/dxf.cpp ,就是隻讀取 ENTITIES 段之下的圖元的,其他的信息都丟棄處理。