OpenCASCADE Performance Test
eryar@163.com
Abstract. Use the Draw Test Harness to test the performance of OpenCASCADE by Tcl scripts. From the test result, you will check whether the OpenCASCADE meet your need.
Key Words. OpenCASCADE, Performance Test, Draw Test Harness, Tcl/Tk
1. Introduction
OpenCASCADE開發平臺提供了3D曲面和實體造型,CAD數據交換及可視化的功能。作為C++的開發庫,OpenCASCADE最適于處理3D造型的CAD,制造、測量(CAM)及數值仿真(CAE)等軟件的開發。
Draw Test Harness使用Tcl封裝了OpenCASCADE的很多命令,通過編寫Tcl腳本,可以方便地測試OpenCASCADE相應的功能。
本文主要介紹使用Tcl/Tk腳本在Draw Test Harness中測試OpenCASCADE的網格及可視化的性能。
Figure 1.1 Test 1000 Spheres
2.Mesh Test
實體形狀顯示需要被網格化,網格化速度的快慢直接影響顯示的速度。所以先測試一下OpenCASCADE的網格剖分算法的速度。相應的Tcl腳本如下所示:
#
# Copyright (c) 2014 eryar All Rights Reserved.
#
# File : testocc.tcl
# Author : eryar@163.com
# Date : 2014-09-25 18:10
# Version : 1.0v
#
# Description : Test the OpenCASCADE performance.
#
pload MODELING VISUALIZATION
set shapeCount 100
set count 10
set distance 5000
#psphere s 3.0
#restore data/occ/CrankArm.brep s
#restore data/occ/Moto.brep s
restore data/occ/F1.brep s
puts "\nMeshing the $shapeCount shapes
"
chrono aTimer start
for {set i 0} {$i < $shapeCount} {incr i 1} {
copy s s$i
set dx [expr ($i%$count)*$distance]
set dy [expr ($i/$count)*$distance]
set dz 0.0
ttranslate s$i $dx $dy $dz
# mesh the shape
incmesh s$i 1 1
}
chrono aTimer show
下面對上述代碼進行簡單分析:
v 用pload命令加載所需要的建模及可視化模塊;
v 用restore命令加載一個brep文件到形狀變量s;
v 用chrono打開一個計時器aTimer;
v 用ttranslate來陣列復制形狀s得到的形狀;
v 用incmesh來對形狀進行網格化;
Figure 2.1 Mesh 100 F1
上述Tcl測試了網格化100輛F1賽車的時間如上圖所示。可以修改上述Tcl腳本代碼,來測試網格化10000個球所需要的時間。
3.Display Test
網格化之后可以顯示出形狀了。下面的Tcl腳本測試了OpenCASCADE的顯示性能:
puts "\nDisplaying the $shapeCount shapes
"
chrono aTimer start
for {set i 0} {$i < $shapeCount} {incr i 1} {
vdisplay s$i
}
chrono aTimer show
chrono aTimer stop
vsetdispmode 1
vfit
puts "\nShow the frame rate
"
vfps
顯示效果如下圖所示:
Figure 3.1 Hundreds of F1
其中命令vfps是顯示當前視圖的幀頻數的。100輛F1的幀數有26,速度還行,稍有卡滯。
4. Conclusion
根據上述Tcl腳本可以看出OpenCASCADE的網格及可視化的性能還可以??梢孕薷纳鲜龃a,來測試顯示10000個球體所需要的時間。
最后給出上述Tcl測試用的模型數據及Tcl腳本完整代碼供下載使用。