OpenCascade Primitives BRep-Cylinder
eryar@163.com
Abstract. BRep is short for Boundary Representation. Boundary Representation gives a complete description of an object by associating topological and geometric information for solid modeling. In this case, objects are described by their boundaries. There are two types of information in BRep: Topological information and Geometric information. This paper is concerned with the Cylinder BRep in OpenCascade, and also show how to use Tcl script to dump cylinder BRep info.
Key words. OpenCascade, BRep, Boundary Representation, Cylinder
1. Introduction
本文通過(guò)在Draw Test Harness中的Tcl腳本來(lái)生成圓柱Cylinder的邊界表示(BRep)數(shù)據(jù),通過(guò)對(duì)生成的數(shù)據(jù)進(jìn)行分析,來(lái)理解OpenCascade中的Cylinder的邊界表示方式。
如下圖所示為使用Tcl命令在Draw Test Harness中生成的圓柱:
Figure 1.1 Cylinder Generated by Tcl in Draw Test Harness
2. Dump Cylinder BRep Info by Tcl
使用Tcl腳本在Draw Test Harness中輸出圓柱(Cylinder)的邊界表示(BRep)數(shù)據(jù)的腳本程序如下圖所示:
Figure 2.1 Tcl Script to Dump Cylinder BRep Info
上述Tcl生成一個(gè)底面位于原點(diǎn)(0,0,0)半徑為10,高度為20的圓柱,如下圖所示:
Figure 2.2 The Cylinder Generated by Tcl
3. Cylinder BRep in OpenCascade
還是從頂點(diǎn)(Vertex)開(kāi)始編號(hào),來(lái)對(duì)圓柱(Cylinder)的BRep表示進(jìn)行理解。從導(dǎo)出的信息可知,圓柱有兩個(gè)頂點(diǎn)Vertex,對(duì)其編號(hào),如下圖所示:
Figure 3.1 Vertex of Cylinder
圓柱共有三條Edge,編號(hào)分別是#9,#10,#12。下面對(duì)三條Edge中的幾何曲線進(jìn)行分析。其中#9邊Edge中包含了三條幾何曲線:一條三維空間曲線3D Curve和兩條曲面上曲線PCurve,三條曲線的取值范圍都是[0,2PI]。空間曲線3是圓心(0,0,0)半徑為10,位于圓柱底部的圓,參數(shù)方程如下所示:
Figure 3.2 Curve 3D in Edge #9
Figure 3.3 PCurve 5 on Surface 1 of Edge #9
曲面1上的參數(shù)曲線PCurve 5是位于原點(diǎn)(0,0)方向?yàn)閡方向的直線。當(dāng)u取[0,2PI]時(shí),得到曲面上u,v值分別為(0,0)和(2PI,0)。對(duì)應(yīng)到曲面1上時(shí),u的取值范圍為[0,2PI],v的值為0。曲面1的參數(shù)方程如下所示:
當(dāng)u取[0,2PI],v恒為0時(shí),代入曲面參數(shù)方程得到空間圓的參數(shù)方程。
同理曲面3上的參數(shù)曲線PCurve 6是位于平面上的圓。邊Edge#12與Edge#9一樣,只不過(guò)#12是位于圓柱頂部的圓。
Figure 3.4 Edge #10 of the Cylinder
邊Edge#10中的三維空間曲線是起點(diǎn)為(10, 0, 0)方向?yàn)閆軸的直線,取值范圍[0,20]。曲面1上的參數(shù)曲線3,4是銜接邊(Seam Edge),對(duì)應(yīng)于BRep_CurveOnClosedSurface。代入曲面的參數(shù)方程時(shí),u只取兩個(gè)固定值0和2PI,v取值范圍為[0,20]得到的曲線與三維空間曲線相同。將所有邊編號(hào)繪出圖示如下:
Figure 3.5 Edges of the Cylinder
圓柱Cylinder的環(huán)Wire有三個(gè):Wire #4,Wire#6和Wire#8。其中Wire#4是圓柱底部的圓,Wire#6是圓柱頂部的圓。Wire#8是上下兩個(gè)圓加上一個(gè)銜接邊(Seam Edge)組成閉合環(huán)。將所有環(huán)Wire編號(hào)繪出圖示如下:
Figure 3.6 Wires of the Cylinder
Wire#4,Wire#6和Wire#8分別對(duì)應(yīng)Face#3,F(xiàn)ace#5和Face#7。不過(guò)要注意面的朝向(Orientation)。最后這三個(gè)面Face組成一個(gè)Shell#2,Shell#2中又給每個(gè)Face定義了朝向。Shell#2組成了一個(gè)Solid#1。
4. Conclusion
通過(guò)Tcl生成的圓柱Cylinder的邊界表示BRep信息,分析了OpenCascade中的圓柱的邊界表示方式。要注意理解朝向(Orientation)對(duì)每個(gè)拓樸結(jié)構(gòu)的意義。
5. References
1. OpenCascade, Test Harness User’s Guide 2013
2. OpenCascade, BRep Format Description White Paper, 2013
3. John K. Ousterhout, Tcl and Tk Toolkit, 1993