Posted on 2012-08-13 23:29
eryar 閱讀(32571)
評(píng)論(38) 編輯 收藏 引用 所屬分類:
2.OpenCASCADE
OpenCASCADE的安裝與編譯
The Installation and Compilation of OpenCASCADE
eryar@163.com
一、安裝OpenCASCADE
可以從OpenCASCADE的官網(wǎng)上下載其安裝包,可以選擇最新的版本,下載網(wǎng)址為:
http://www.opencascade.org/getocc/download/loadocc/ 。如果只用其庫(kù)來編程已經(jīng)夠了,安裝好下載的安裝包即可。若想對(duì)其進(jìn)行調(diào)試,必須先把它編譯成功。想編譯通過,必須下載第三方庫(kù),因?yàn)?strong>OpenCASCADE中用到了第三方的工具。如:FreeImage為通用圖形格式的支持;FreeType和Ftgl為對(duì)文字渲染的支持,包括對(duì)中文渲染的支持;gl2ps用來將渲染的內(nèi)容轉(zhuǎn)換為矢量圖形輸出,等等。第三方庫(kù)都可以從官網(wǎng)上提供的鏈接來下載,因?yàn)椴煌陌姹究赡苡玫降牡谌綆?kù)的版本也不同,必須保持一致。下載地址為:
http://www.opencascade.org/getocc/download/3rdparty/ 。對(duì)于Windows操作系統(tǒng)下載各相應(yīng)版本如下所示:
有的時(shí)候編譯通不過,可能報(bào)的錯(cuò)誤就是第三方庫(kù)的版本與安裝好的OpenCASCADE的版本不一致造成的。把與編譯工具相應(yīng)版本的第三方庫(kù)重新編譯并放到相應(yīng)的目錄下就可解決問題。這也是OpenCASCADE推薦的方法,原文如下:The recommended way to do this is to download each of the third-party tools from its web site and build it using the relevant tools.
二、編譯OpenCASCADE
OpenCASCADE6.5.0以后對(duì)編譯環(huán)境的設(shè)置采用了批處理的方式。在安裝完畢后的文件目錄中有個(gè)ros的文件夾,其中有幾個(gè)批處理文件:env.bat、env_build.bat、msvc.bat。打開這幾個(gè)批處理文件,會(huì)發(fā)現(xiàn)它們就是在設(shè)置編譯環(huán)境。早期版本是直接寫到系統(tǒng)的環(huán)境變量中去,現(xiàn)在是運(yùn)行批處理文件msvc.bat,根據(jù)不同的工具,輸入以下參數(shù),示例為:vc8 win32 Debug adm\win32\vc8\OCCT.sln。即運(yùn)行命令切換到ros文件夾,輸入下面的命令:msvc.bat vc8 win32 Debug adm\win32\vc8\OCCT.sln就可以啟動(dòng)整個(gè)項(xiàng)目,后面是一些選項(xiàng)設(shè)置,如使用的是VC8編譯工具,平臺(tái)為win32,輸出為Debug。若是使用的Visual Studio 10則輸入?yún)?shù)vc10 win32 Debug adm\win32\vc10\OCCT.sln即可,也很方便。
編譯順序也是非常重要的,必須按如下順序進(jìn)行:
1. Foundation Classes (file FoundationClasses.sln)
2. Modeling Data (file ModelingData.sln)
3. Modeling Algorithms (file ModelingAlgorithms.sln)
4. Visualization (file Visualization.sln)
5. Application Framework (file ApplicationFramework.sln)
6. Data Exchange (file DataExchange.sln)
7. Draw (file Draw.sln)
如下圖清晰所示:
三、總結(jié)
編譯成功后,可以為以后程序的調(diào)試打下基礎(chǔ);也可對(duì)OpenCASCADE有個(gè)大概認(rèn)識(shí)。希望你也能編譯成功。若有任何問題,可與我聯(lián)系:eryar@163.com。
視頻:
OpenCASCADE Compilation http://t.cn/RNKAMut
PDF版本:
OpenCASCADE Installation and Compilation: OpenCASCADE Installation and Compilation
Feedback
你好,十分感謝,還希望大俠能夠提供一下 samples 的生成方式,我的老是報(bào)錯(cuò)
@謝謝
你好!
有時(shí)間寫一個(gè)samples 的編譯說明。
其實(shí)在samples\mfc\standard文件夾中的readme.txt中有詳細(xì)說明,仔細(xì)看看就知道了。
非常感謝大俠回復(fù),
通過你的方法我將框架編譯成功,
samples其實(shí)我已經(jīng)編譯成功了,但是就是運(yùn)行不了,老是報(bào)錯(cuò), read me 里面的內(nèi)容我也研究了一下,總感覺 samples\mfc\standard 文件下的 msvc.bat 跳轉(zhuǎn)有問題,老是報(bào) 未找到相應(yīng)文件, 然后我只能手動(dòng)打開 samples\mfc\standard 文件夾下的 vs10
然后是編譯報(bào)錯(cuò) 找不到頭文件,沒辦法所有的都重新加載 原來的加載設(shè)置都刪除,重新加載 win/vc9下的文件, 用新生成的 win/vc10 不能夠通過編譯,也找不到頭文件,只能用vc9,最后花了好大功夫編譯通過了,結(jié)果運(yùn)行找不到dll文件,于是又將dll 復(fù)制到 window/system32 大費(fèi)周章,錯(cuò)誤在減少,但是最后還是不能運(yùn)行, (說明,第一次安裝好了后,直接運(yùn)行deom是沒有問題的,通過我的編譯后,就不能運(yùn)行了),希望大俠能明示, 謝謝大俠了
@謝謝
不客氣。
運(yùn)行Samples的方法,OpenCASCADE也在ReadMe.md文件中進(jìn)行了說明:
2. Launching Open CASCADE Technology samples:
---------------------------------
To run the Open CASCADE Technology samples:
execute run.bat [vc8|vc9|vc10] [win32|win64] [Release|Debug] [SampleName]
To run the Animation sample:
execute run.bat vc8 win32 Debug Animation
因?yàn)镺penCASCADE的samples用到OpenCASCADE其他相關(guān)的dll,進(jìn)而可能依賴一些第三方庫(kù),所以Samples程序只要能找到所有依賴的dll就可運(yùn)行了,包括第三方庫(kù)的dll。為了不影響機(jī)器的環(huán)境變量,用這種批處理的方式來運(yùn)行例子也很方便的(這樣就不需要將相關(guān)的dll復(fù)制到system32中去了)。
你好大俠,我的表達(dá)有問題,我的意思是 調(diào)試的時(shí)候出的問題,如何調(diào)試samples , 謝謝
@謝謝
將Samples編譯成功后,編譯方法如下:
3. Modifying and rebuilding samples:
--------------------------------------------
You can modify, compile and launch all sample projects in MS Visual C++ at once:
execute msvc.bat [vc8|vc9|vc10] [win32|win64] [Release|Debug]
To run all sample projects in MS Visual C++ at once:
execute msvc.bat vc8 win32 Debug
使用編譯時(shí)的批處理啟動(dòng)Samples項(xiàng)目,并將你出錯(cuò)的Sample工程設(shè)置為當(dāng)前Project,F(xiàn)5即可調(diào)試了。
msvc.bat vc10 win32 Debug
這個(gè)我執(zhí)行了,但是找不到文件,報(bào)錯(cuò)
我是用的最新版的6.7.1 感覺 路徑里面多了一個(gè) //..//..//
好像是路徑錯(cuò)了,我只好手動(dòng)打開了,
msvc.bat vc10 win32 Debug
請(qǐng)問大俠 為什么老是找不到路徑呢
@謝謝
路徑不多,我6.7.1的Samples都可以正常編譯。
是不是你的6.7.1的路徑中包含了空格?
把與編譯工具相應(yīng)版本的第三方庫(kù)重新編譯并放到相應(yīng)的目錄下就可
是什么意思呢?
@張三
就是OpenCASCADE編譯時(shí)設(shè)置的第三方庫(kù)所在的include/lib/bin相應(yīng)的目錄中。
如果用的批處理,編譯好的lib/dll輸出到批處理里面對(duì)應(yīng)的目錄。
帥eryar,我知道@謝謝是什么意思了,他的問題我也遇到了。我也是用VC10,而6.7.1默認(rèn)面向VC9。
下載VC10的第三方類庫(kù)設(shè)置好路徑以后,七個(gè)類庫(kù)可以通過編譯,但想要運(yùn)行例子(run.bat),必須先編譯例子,即先運(yùn)行mfc例子下的msvc,打擊打開后提示“無法打開如下文件(接著是空白),無法加載文件”,因?yàn)榭吹降氖强瞻祝乙仓浪傅牡氖侨鄙偈裁次募M(jìn)而無法加載對(duì)應(yīng)的ALL-vc10.sln。我檢查了env.bat和對(duì)應(yīng)的msvc.bat,看著沒有問題,不知道是不是@謝謝說的無法正確連接路徑。
請(qǐng)問你遇到這個(gè)問題了嗎?
在ReadMe.md里面最后有一句提示:make sure your PATH environment variable contains a directory, msdev.exe is located in.
更正
“打擊” = “雙擊”
“我也知道” = “我也不知道”
@歐帥
OpenCASCADE6.7.1的Samples編譯是有問題,我編譯試過,需要修改opencascade6.7.1文件夾中的msvc.bat,修改如下內(nèi)容:
rem Launch Visual Studio - either professional (devenv) or Express, as available
if exist "%DevEnvDir%\devenv.exe" (
rem start "" "%DevEnvDir%\devenv.exe" "%PRJFILE%"
start "%DevEnvDir%\devenv.exe" "%PRJFILE%"
與早期版本相比是多了個(gè)引號(hào),將引號(hào)去掉即可。
解決。
什么都不說了,You're the most niubiable person I've ever seen.
您好! 我安裝opencascade 總是出錯(cuò) 不知什么原因
編譯的時(shí)候有5個(gè)項(xiàng)目提示 無法解析的外部變量
還有 編譯完之后 draw.bat無法運(yùn)行
謝謝~
@孤獨(dú)劍
Hi,
你好!
那就是必須的第三方庫(kù)沒有正確配置導(dǎo)致的錯(cuò)誤。
如果是用opencascade安裝包來編譯,安裝完成后,根據(jù)編譯器及平臺(tái)修改下custom.bat后,直接運(yùn)行msvc.bat編譯即可一次成功。
Best Regards,
Shing Liu
您好,我安裝編譯了occ6.8,但draw.exe不能啟動(dòng),提示0xc000007b錯(cuò)誤,我的電腦win8 64位,網(wǎng)上查了一下,可能是需要dirextx9.0,但從網(wǎng)上下載的directx總被360檢測(cè)出有病毒,不知博主可有好的解決方法推薦,謝謝
@佚名
Hi,
你好!
DRAWEXE依賴Tcl/Tk,occ的三維目前是用OpenGL顯示,沒有依賴DX3D的。
如果Tcl/Tk的庫(kù)沒有找到也可能報(bào)這種錯(cuò)誤。
occ的做法是用批處理配置好環(huán)境變量后用draw.bat來啟動(dòng)Draw的,可以參考下這種方式。
Best Regards,
Shing Liu
博主您好,很久以來一直關(guān)注您的博客,也請(qǐng)教過一些問題,但有一個(gè)問題我一直無法解決,就是自定義旋轉(zhuǎn)原點(diǎn)的問題,occ每次旋轉(zhuǎn)前總統(tǒng)計(jì)圖元的形心,自動(dòng)將旋轉(zhuǎn)原點(diǎn)定在形心處,但有時(shí)為了觀察局部圖形,將圖形放大后一旋轉(zhuǎn)想觀察的部分都飄到屏幕外,我如何能在不改變?cè)创a的情況下設(shè)定旋轉(zhuǎn)點(diǎn),比如一條線,本來繞線的中點(diǎn)旋轉(zhuǎn),我想觀察其端部區(qū)域,如何將旋轉(zhuǎn)點(diǎn)設(shè)在端點(diǎn)處,謝謝!
@佚名
Hi 佚名,
你好!
occ6.8之后引入了Camera類,你可以嘗試下在處理鼠標(biāo)事件的地方自己來調(diào)整camera,而不用occ的view中的旋轉(zhuǎn)函數(shù)。
Best Regards,
Shing Liu
確實(shí)有效.以前一直用6.3版本,剛接觸6.8,對(duì)它的新特性還不熟悉,謝謝博主指導(dǎo)
你好,我得MFC Sample編譯通過了,但是在啟動(dòng)起來以后總是報(bào):“Geometry.exe 中的 0x77b915ee 處有未經(jīng)處理的異常: 0x00000000: 操作成功完成。”是拋出了Standard_Failure異常,各位有沒有遇到過這種情況?
我知道了,"CSF_ShadersDirectory" 環(huán)境變量沒設(shè)置好,導(dǎo)致到不到OpenGL所需要的文件夾“Shaders”
@oneOfHUSTCAD
嗯,如果用配置好的環(huán)境變量來啟動(dòng)例子,就不會(huì)出現(xiàn)這種問題了。
就像安裝好的例子程序都是通過批處理文件啟動(dòng)的。
有興趣的聯(lián)絡(luò)我微信benzcn
為什么我的draw.bat提示 tkloop: error in tk initialization. tcl reported: invalid command name "tcl_find library"
@yyy
這是第三主庫(kù)Tcl/Tk沒有配置正確導(dǎo)致的。
@eryar
處理好了,之前把tcltk里面的兩個(gè)dll復(fù)制到system32里了,刪掉就好了,應(yīng)該是和批處理命令里面定義的環(huán)境變量沖突了
@yyy
我是不喜歡去污染system32的,最多可以把相關(guān)庫(kù)的dll路徑加到環(huán)境變量path中去。
樓主你好,我在編譯的時(shí)候遇到2個(gè)問題:
1、配置好custom.bat后,通過msvc.bat啟動(dòng)VC,發(fā)現(xiàn)項(xiàng)目無法編譯,原因是附加包含目錄里面用到了宏CSF_OPT_INC,而打開宏目錄,發(fā)現(xiàn)該宏的值只有一個(gè)路徑opencascad\inc。
為解決這個(gè)辦法,我只好手動(dòng)把所有項(xiàng)目附加包含目錄中的這個(gè)宏替換成custom.bat中的那長(zhǎng)長(zhǎng)的一大串目錄,這樣編譯成功了,但不知道這樣處理是否正確。
2、編譯成功后在VC中運(yùn)行DRAWEXE,能夠成功;但是我想在win32/vc10/bind下直接運(yùn)行,我把所有相關(guān)的DLL拷貝到了該目錄,卻提示
"couldn't read file "ddefault": no such file or directory"
我知道這個(gè)TCL/TK環(huán)境沒有配置好導(dǎo)致的,問題是如何解決呢?
@OCC_Study
Hi,
你好!
1.custom.bat就是用來配置inc和lib的,如果你已經(jīng)可以編譯成功了, 就沒什么影響;
2. 這是DRAW 的Tcl路徑?jīng)]找到報(bào)錯(cuò),這個(gè)路徑也是通過環(huán)境變量來配置的。
建議還是用批處理來啟動(dòng)DRAWEXE。
Best Regards,
Shing Liu
博主您好,
我現(xiàn)在使用的是OCC7.2版本的,我試著編譯打開MFC的案例,發(fā)現(xiàn)里面的貼圖功能最后貼出來的圖是黑色的(瓶子,地圖,廚房被貼的地方都是黑色的),沒有效果,不知道是什么原因?是我沒配置好,還是OCC這方面功能還不完善?
@birds
Hello,
有可能是顯卡支持的不好。
在Draw Test Harness中輸入命令:
vglinfo
看看你的顯卡信息。
On desktop, 3D viewer for optimal performance requires graphics processing unit (GPU) supporting OpenGL 3.3 or above. Ray tracing requires OpenGL 4.0+ or OpenGL 3.3+ with GL_ARB_texture_buffer_object_rgb32 extension. Textures within ray tracing will be available only when GL_ARB_bindless_texture extension is provided by driver.
On mobile platforms, OpenGL ES 2.0+ is required for 3D viewer (OpenGL ES 3.1+ is recommended). The ray tracing is not yet available on mobile platforms. Some old hardware might be unable to execute complex GLSL programs (e.g. with high number of light sources, clipping planes).
OCCT 3D Viewer, in general, supports wide range of graphics hardware - from very old to new. Therefore, if you observe some unexpected visual issues - first check for OpenGL driver update (or firmware update in case of mobile platforms); but beware that driver update might also come with new bugs. Don't forget to report these bugs to vendors.
博主您好,
您能幫我看下嗎,這是什么問題?
Draw[1]> pload ALL
1
Draw[2]> vinit
Driver1/Viewer1/View1
Draw[3]> vglinfo
OpenGL info:
GLvendor: ATI Technologies Inc.
GLdevice: AMD Radeon(TM) R7 350X
GLversion: 4.6.13547 Compatibility Profile Context 25.20.15025.1002
GLSLversion: 4.60
Max texture size: 16384
Max combined texture units: 160
Max MSAA samples: 8
Viewport: 409x409
GPU memory: 4096 MiB
ResolutionRatio: 1
@birds
可以按OCC文檔上的說明,先更新顯卡驅(qū)動(dòng)試試。