Compile FreeCAD on Windows
eryar@163.com
1.Introduction
FreeCAD是一個(gè)參數(shù)化的三維造型軟件,主要用于任意大小的實(shí)際模型的設(shè)計(jì)。參數(shù)化的建模方式可以通過修改相關(guān)參數(shù)從而方便地修改你的設(shè)計(jì)。FreeCAD是開源軟件,并提供了便利地自定義方式,也提供了腳本,從而根據(jù)自己的需要去擴(kuò)展功能。FreeCAD是跨平臺(tái)(Windows, Mac和Linux),可以讀寫許多開放的模型文件,如STEP,IGES,STL,SVG,DXF,OBJ,IFC,DAE等。
如果說學(xué)習(xí)OpenCASCADE可以了解一些幾何內(nèi)核底層的算法,那么學(xué)習(xí)FreeCAD則可以用來實(shí)現(xiàn)一些具體的功能,從而將三維的技術(shù)應(yīng)用到實(shí)際的生活中去,創(chuàng)造出有意義的功能。
本文詳細(xì)說明如何在Windows平臺(tái)上編譯FreeCAD源碼。如果你已經(jīng)可以正常編譯OpenCASCADE這種開源庫的源碼,那么編譯FreeCAD還是很簡(jiǎn)單的。
2.Preparation
編譯FreeCAD源碼之前,需要做些準(zhǔn)備工作:下載源碼及所需的第三方庫。其中源碼可以從github上下載,地址為:https://github.com/FreeCAD
為了方便其源碼的編譯,F(xiàn)reeCAD將所需要的第三方庫打包在一起取名LibPack,方便開發(fā)者自己編譯。LibPack可以從sourceforge上下載:
https://sourceforge.net/projects/free-cad/files/FreeCAD%20LibPack/
Figure 2.1 Download LibPack of FreeCAD
找到與自己編譯器版本一致的LibPack下載。如果想在Visual Studio2008中編譯,則下載FreeCADLibs_11.1_x86_VC9.7z。下載好源碼和LibPack就萬事具備了,我們先來粗略地看下LibPack中都有哪些庫:
Figure 2.2 3rd party libraries used in FreeCAD
從include可以看出,幾何內(nèi)核主要使用了oce(OpenCASCADE社區(qū)版),腳本使用了Python,顯示使用了Inventor,網(wǎng)格庫還使用了SMESH,逆向工程的功能使用了pcl,還用到了boost及eigen矩陣計(jì)算庫,程序界面使用了Qt等。由此可見,F(xiàn)reeCAD中的第三方庫的數(shù)量比OpenCASCADE中的要多,所以編譯成功的關(guān)鍵就是要將這些第三方庫配置正確。
還好FreeCAD的開發(fā)團(tuán)隊(duì)提供了這些第三方庫,如果自己去準(zhǔn)備這些庫也要花不少時(shí)間和精力。
3.Compiling
FreeCAD在Windows中編譯主要使用CMake,通過CMake生成Visual Studio工程文件。如果直接Configure源碼文件夾中的CMakeLists.txt會(huì)有如下圖所示的錯(cuò)誤:
Figure 3.1 Could not find libpack error
根據(jù)錯(cuò)誤信息,說是沒有在指定目錄找到libpack,所以自己將FREECAD_LIBPACK_DIR設(shè)置到下載的libpack中去之后,就可以Configure成功了,如下圖所示:
Figure 3.2 CMake success
Configure成功后,即可使用Generate來生成FreeCAD_trunk.sln工程文件,從而用Visual Studio來打開和編譯了。
Figure 3.3 FreeCAD projects in Visual Studio
看著自己編譯一個(gè)模塊,在FreeCAD的功能選擇中就多出一個(gè)模塊,還是很有感覺的。自己動(dòng)手編譯下,經(jīng)過漫長(zhǎng)的等待后得到可以運(yùn)行的程序也是有些收獲。
4.Play
編譯成功后,就迫不及待地想測(cè)試下很有亮點(diǎn)的功能,如網(wǎng)格設(shè)計(jì)、逆向工程、機(jī)器人等模塊。
Figure 4.1 Shape in Wireframe mode
Figure 4.2 Shape Mesh
Figure 4.3 Assembly in FreeCAD
看到Assembly中只有那一個(gè)按鈕,裝配功能基本上不能用。如果有了裝配功能,那么FreeCAD的功能就和常見的那些三維軟件功能類似了。裝配功能中需要用到了三維的約束,像什么面對(duì)齊,同軸等,商用軟件會(huì)用到西門子的約束求解庫DCM,DCM相關(guān)信息可參考simens官方網(wǎng)站:
https://www.plm.automation.siemens.com/en_us/products/open/d-cubed/
有需要DCM的可直接與他們聯(lián)系,不過價(jià)格也是不便宜的。
Figure 4.4 DCM of SIEMENS
沒有了google找點(diǎn)東西還是很費(fèi)勁,用baidu和bing中文版的都沒找到什么有用的東西。用了Bing英語版的,才找到,如下圖同樣輸入關(guān)鍵字dcm3d,百度中出來的東西完全無用:
Figure 4.5 Search result of DCM3d
FreeCAD中機(jī)器人功能的視頻:http://www.tudou.com/listplay/5zDaAoucSXQ/
Figure 4.6 Robot in FreeCAD