亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

OpenCascade Primitives BRep - Box

系統(tǒng) 2015 0

OpenCascade Primitives BRep - Box

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 Box BRep in OpenCascade, and also show how to use Tcl script to dump box BRep info.?

Key words. OpenCascade, BRep, Boundary Representation, Box, Winged-Edge Structure?

1. Introduction

邊界表示法(BRep: Boundary Representation)通過拓樸(Topology)和幾何(Geometry)給出了一個物體完整的描述,即用邊界來表示物體。?

在OpenCascade中的拓樸實體有以下幾種:?

l Vertex: a zero-dimensional shape corresponding to a point in geometry;?

l Edge: a shape corresponding to a curve, and bound by a vertex at each extremity;?

l Wire: a sequence of edges connected by their vertices;?

l Face: part of a plane(in 2D geometry) or a surface(in 3D geometry) bounded by a closed wire;?

l Shell: a collection of faces connected by some of the edges their wire boundaries;?

l Solid: part of 3D space bound by a shell;?

l Compound solid: a collection of solids.?

wps_clip_image-29668

Figure 1.1 Topological Entities in OpenCascade?

OpenCascade中的拓樸實體如上圖所示,其中Compound可以包含很多Solid;Solid由Shell包圍而成;Shell由相連的Face組成;Wire由相連的Edge組成;Edge對應(yīng)一條曲線,且曲線的端點處由Vertex組成;Vertex對應(yīng)空間中一個點。OpenCascade的拓樸結(jié)構(gòu)的類層次關(guān)系如下圖所示:?

wps_clip_image-26079

Figure 1.2 Topological Shape Hierarchy of OpenCascade?

OpenCascade的BRep表示中幾何曲線曲面是參數(shù)化表示的,即曲線上的點與一個參數(shù)u有關(guān),曲面上的點與兩個參數(shù)u,v來有關(guān)。因為是參數(shù)化表示的,所以曲線曲面是有向的(naturally orientated)。方向(Orientation)是重要的,對面而言方向是面上每個點處的法向。?

wps_clip_image-21272

Figure 1.3 Orientation of Faces?

使用參數(shù)表示的曲線曲面還需要注意曲線曲面的有界性Bounded,奇異性Singularity(曲面上的奇點Singular Point),曲面上的曲線(PCurve: Curve on Surface)等概念。?

本文通過使用Tcl腳本將OpenCascade中的基本形狀長方體Box的邊界表示BRep數(shù)據(jù)導(dǎo)出到文件,繼而方便分析Box在OpenCascade中的邊界表示。?

2. Dump Box BRep Info by Tcl

為了得到長方體的邊界表示數(shù)據(jù),先要用類BRepPrimAPI_MakeBox來生成一個TopoDS_Shape,再使用BRepTools::Dump()可以將這個TopoDS_Shape的信息以便于理解的方式輸出。如果用C++來編程,只有這兩句,但是為了編譯鏈接成功,需要包含相關(guān)的頭文件及引用相關(guān)的庫,需要編譯工具來編譯鏈接,還是比較麻煩的。本文使用Tcl腳本來輸出,體驗一下在OpenCascade中使用Tcl腳本編程的便利。?

在Draw Test Harness中輸入以下三行Tcl命令,即可以將Box的BRep信息輸出到屏幕:?

wps_clip_image-17115

Figure 2.1 Dump Box BRep info in Draw Test Harness?

考慮到輸出內(nèi)容過多,在命令窗口查看不便,有些信息被覆蓋,于是將這些信息導(dǎo)出到文件,Tcl代碼如下所示:?

      
        #

#
      
      
            Copyright (c) 2014 eryar All Rights Reserved.
      
      
        

#

#
      
      
                   File : box.tcl
      
      
        

#
      
      
                 Author : eryar@163.com
      
      
        

#
      
      
                   Date : 2014-03-17 19:00
      
      
        

#
      
      
                Version : 1.0v
      
      
        

#

#
      
      
            Description : Dump OpenCascade primitive box topology info to file.
      
      
        

#

#
      
      
              Key Words : OpenCascade, BRep, Tcl, Box
      
      
        

#
      
      
        

#


      
      
        #
      
      
         Load Modeling algorithms.
      
      
        pload MODELING




      
      
        #
      
      
         Make the box.
      
      

box theBox 1.0 2.0 3.0
      
        

set boxInfo [dump theBox]




      
      
        #
      
      
         Save box BRep info to file.
      
      
        if
      
       [catch {open d:/box.txt w+
      
        } theFile] {

    puts 
      
      
        "
      
      
        Cannot open d:/box.txt for writing: $theFile
      
      
        "
      
      
        

} 
      
      
        else
      
      
         {

    puts $theFile $boxInfo

    flush $theFile

    close $theFile

}



puts 
      
      
        "
      
      
        Dump Info Finished!
      
      
        "
      
    

將上述內(nèi)容保存到文件box.tcl,并在Draw Test Harness中輸入如下命令:?

wps_clip_image-2683

Figure 2.2 Run a Tcl File in Draw Test Harness?

執(zhí)行成功后會在D盤中生成一個box.txt的文件,文件部分內(nèi)容如下所示:?

wps_clip_image-30549

Figure 2.3 Box BRep Info Generated by Tcl Script?

為了方便讀者測試及本文中分析的Box數(shù)據(jù)的準確性,box.tcl和box.txt都可通過文章后面的鏈接下載。?

3. Box BRep in OpenCascade

翼邊結(jié)構(gòu)(Winged-Edge Structure)及其邊的表格方式(Edge Table)可以清晰地表達出形狀的拓樸關(guān)系,表中內(nèi)容有:?

l 邊的名稱,即邊的編號Edge Name;?

l 邊的起止頂點Start vertex and end vertex;?

l 相連的兩個面 Left face and right face;?

l 遍歷左面時訪問邊的順序The predecessor and successor edges when traversing its left face;?

l 遍歷右面時訪問邊的順序The predecessor and successor edges when traversing its right face;?

如下圖所示為Edge Table表示的翼邊結(jié)構(gòu):?

wps_clip_image-3145

Figure 3.1 Edge Table of Winged-Edge Structure?

從上圖可知,給出一個邊a后,從表中可以清晰看出與邊a相連的頂點及面的信息。?

如下圖所示為一個Edge Table的示例:?

wps_clip_image-1751

Figure 3.2 Complete Edge Table for Pyramid?

由上可知,給出翼邊結(jié)構(gòu)表示中的一個邊,可以很方便得到與之相連的頂點和面的信息。?

但是OpenCascade中沒有使用翼邊結(jié)構(gòu)來表示形狀,可以從圖1.2所示的類結(jié)構(gòu)得出。因為每個形狀只包含子形狀的數(shù)據(jù),不包含其父形狀的數(shù)據(jù),所以在OpenCascade中不能反向訪問其父形狀(In OpenCascade, there is no back pointer from sub-shapes to ancestor shapes.),所以若想得到與給定頂點或邊相連的面或環(huán)等信息,必須使用這個工具:?

TopExp::MapShapesAndAncestors()?

如下圖所示使用上述工具得到與指定邊相連的所有面的信息:?

wps_clip_image-18209

Figure 3.3 Get Ancestor Shapes in OpenCascade?

根據(jù)前面使用Tcl腳本生成的Box,尺寸分別為1.0,2.0,3.0:?

wps_clip_image-8661

Figure 3.4 The Box generated by Tcl Script?

為了正確顯示出Box,每個面的法向必須與上圖中的箭頭方向一致。下面通過box.txt中的拓樸信息的編號,從vertex開始來組裝成一個Solid的形狀。對應(yīng)頂點的編號及其在空間中的坐標如下圖所示:?

wps_clip_image-31918

Figure 3.5 Vertex of the Box BRep?

wps_clip_image-12851

Figure 3.6 Edges of the Box BRep?

上圖中根據(jù)邊中的頂點的方向,標示出邊的方向:從標號為+正的頂點到標號為-負的頂點。?

wps_clip_image-27297

wps_clip_image-29905

Figure 3.7 Wire #4 of Box BRep?

由圖可知,由于Wire #4是由邊E30,E9,E20,E13組成,由于30和9號邊前有負號,所以需要反向,方向反向的邊用紅色箭頭標示。其它Wire的處理與此類似。通過上面左右兩幅圖的對比,可以清楚知道哪些Edge在組成Wire時反向了。?

wps_clip_image-16517

Figure 3.8 Faces and Shells of Box BRep?

由上圖可知,每個Face由一個Wire組成。注意到由Face組成Shell時,F(xiàn)ace前面有方向性。如Face 5#前面有負號,意思是面的法向與Wire的方向相反,其他類似。?

最后的Solid由Shell組成。這樣Box的拓樸數(shù)據(jù)就形成了。其中Face, Edge, Vertex中包含了幾何數(shù)據(jù)。Face的參數(shù)表示的幾何數(shù)據(jù)位于surfaces部分,如下圖所示:?

wps_clip_image-20622

Figure 3.9 Parametric Surfaces of the Box?

Edge中包含了多種曲線數(shù)據(jù),在Box的Edge中就包含兩種曲線數(shù)據(jù),一種是三維曲線;一種是曲面上的曲線。如下圖所示:?

wps_clip_image-28981

Figure 3.10 Curve info of the Edge in Box??

其中Curve3D對應(yīng)的就是參數(shù)化的三維曲線,這個很好理解。PCurve為曲面上的曲線。下面以Edge#9為例,來說明邊中的幾何數(shù)據(jù)。三維曲線#12是原點為(0,2,3)方向為X方向的直線,在參數(shù)區(qū)間[0,1]的端點處,直線對應(yīng)的兩個點為(0,2,3)和(1,2,3),分別對應(yīng)#31Vertex和#21Vertex。所以Vertex前面的-負號表示Edge中曲線終點,+正號表示Edge中曲線的起點。?

PCurve為#4號平面上的#23號參數(shù)曲線,由下圖可知#4號曲面對應(yīng)的Face為#7,對應(yīng)的Wire為#8:?

wps_clip_image-24170

Figure 3.11 Surface of Face?

wps_clip_image-9467

根據(jù)#23號二維參數(shù)曲線計算得出曲面上的U,V分別為(3, 0)和(3, 1),將得到U,V代入#4曲面中得出對應(yīng)的曲面上的點,計算過程如下所示:?

wps_clip_image-29612

從中可以看出,PCurve表示的曲線與三維曲線#12相同,不過其中還保存了曲面的信息。?

4. Conclusion

本文通過使用Tcl在OpenCascade中生成Box的邊界表示信息,通過對數(shù)據(jù)的分析,得出Box在OpenCascade中的邊界表示方式。并通過與翼邊結(jié)構(gòu)的對比,說明OpenCascade中的拓樸結(jié)構(gòu)不是翼邊結(jié)構(gòu)。通過分析邊界表示中的幾何數(shù)據(jù),來理解邊界表示中幾何數(shù)據(jù)的應(yīng)用。?

若對文中內(nèi)容有任何意見、建議都可以與我取得聯(lián)系,郵箱:eryar@163.com,歡迎討論、交流、指導(dǎo)。?

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

PDF Version and Tcl Script: OpenCascade Primitives BRep-Box

OpenCascade Primitives BRep - Box


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人久久视频 | 亚洲精品高清在线 | 天天综合在线视频 | 欧美夜夜| 中国欧美一级毛片免费 | 国产精品第 | 欧美成人鲁丝片在线观看 | 精品国产品香蕉在线 | 国产高清在线精品二区一 | 欧美午夜精品一区二区三区 | 国产成人精品无缓存在线播放 | 久久人人爽人人爽人人片av不 | 中文字幕精品在线视频 | 国产精品久久免费观看 | 日本一区二区在线视频 | 国产精品欧美久久久久天天影视 | 国产伦精品一区二区三区在线观看 | 免费爱爱的视频太爽了 | 免费看成人毛片日本久久 | 这里只有精品国产 | 五月激激激综合网色播免费 | 九九精品免视频国产成人 | 日日摸夜夜夜夜夜添 | 欧美日韩免费在线观看 | 亚洲小视频 | 日韩欧美亚洲每的更新在线 | 亚洲高清视频网站 | 成人a免费α片在线视频网站 | 国产成人一区二区 | 亚洲综合视频网 | 九九天天影视 | 亚洲视频日韩视频 | 免费国产成人综合 | 日本a毛片在线播放 | 色一情一欲一爱一乱 | 久久久久国产成人精品亚洲午夜 | 99视频精品全部 在线 | 狠狠色狠狠色综合 | 免费精品国产福利片 | 欧美精品二区 | 国产乱肥老妇精品视频 |