青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

OpenCascade Primitives BRep - Box

Posted on 2014-03-19 19:00 eryar 閱讀(3656) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

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對應一條曲線,且曲線的端點處由Vertex組成;Vertex對應空間中一個點。OpenCascade的拓樸結構的類層次關系如下圖所示:

wps_clip_image-26079

Figure 1.2 Topological Shape Hierarchy of OpenCascade

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

wps_clip_image-21272

Figure 1.3 Orientation of Faces

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

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

2. Dump Box BRep Info by Tcl

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

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

wps_clip_image-17115

Figure 2.1 Dump Box BRep info in Draw Test Harness

考慮到輸出內容過多,在命令窗口查看不便,有些信息被覆蓋,于是將這些信息導出到文件,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!"

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

wps_clip_image-2683

Figure 2.2 Run a Tcl File in Draw Test Harness

執行成功后會在D盤中生成一個box.txt的文件,文件部分內容如下所示:

wps_clip_image-30549

Figure 2.3 Box BRep Info Generated by Tcl Script

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

3. Box BRep in OpenCascade

翼邊結構(Winged-Edge Structure)及其邊的表格方式(Edge Table)可以清晰地表達出形狀的拓樸關系,表中內容有:

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表示的翼邊結構:

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

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

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

TopExp::MapShapesAndAncestors()

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

wps_clip_image-18209

Figure 3.3 Get Ancestor Shapes in OpenCascade

根據前面使用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的形狀。對應頂點的編號及其在空間中的坐標如下圖所示:

wps_clip_image-31918

Figure 3.5 Vertex of the Box BRep

wps_clip_image-12851

Figure 3.6 Edges of the Box BRep

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

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時,Face前面有方向性。如Face 5#前面有負號,意思是面的法向與Wire的方向相反,其他類似。

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

wps_clip_image-20622

Figure 3.9 Parametric Surfaces of the Box

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

wps_clip_image-28981

Figure 3.10 Curve info of the Edge in Box 

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

PCurve為#4號平面上的#23號參數曲線,由下圖可知#4號曲面對應的Face為#7,對應的Wire為#8:

wps_clip_image-24170

Figure 3.11 Surface of Face

wps_clip_image-9467

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

wps_clip_image-29612

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

4. Conclusion

本文通過使用Tcl在OpenCascade中生成Box的邊界表示信息,通過對數據的分析,得出Box在OpenCascade中的邊界表示方式。并通過與翼邊結構的對比,說明OpenCascade中的拓樸結構不是翼邊結構。通過分析邊界表示中的幾何數據,來理解邊界表示中幾何數據的應用。

若對文中內容有任何意見、建議都可以與我取得聯系,郵箱:eryar@163.com,歡迎討論、交流、指導。

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区精品视频| 91久久国产综合久久| 午夜精品久久久久久久白皮肤| 一区二区高清| 亚洲午夜精品17c| 亚洲综合欧美| 久久久久欧美| 欧美精品午夜| 国产女人18毛片水18精品| 中文精品视频一区二区在线观看| 国产一区二区精品丝袜| 国产日韩成人精品| 亚洲国产成人91精品| 一本色道久久综合| 欧美中文字幕第一页| 欧美成年网站| 中文欧美字幕免费| 久久久久久穴| 欧美三日本三级三级在线播放| 国产精品国产三级国产普通话三级 | 欧美视频中文一区二区三区在线观看| 欧美日韩国产成人精品| 国产美女诱惑一区二区| 亚洲国产精品va| 午夜激情综合网| 亚洲国产精品成人综合色在线婷婷| 亚洲人成网站999久久久综合| 午夜精品99久久免费| 欧美久色视频| 一区二区在线免费观看| 亚洲欧美日本日韩| 最新中文字幕亚洲| 久久精品国产69国产精品亚洲| 欧美人与性禽动交情品| 在线观看日韩www视频免费| 亚洲欧美日韩精品在线| 最新高清无码专区| 蜜臀av在线播放一区二区三区| 欧美日韩午夜剧场| 亚洲精品视频一区二区三区| 久久久五月天| 午夜精品一区二区三区四区| 欧美日韩一区二区三区在线观看免| 亚洲成人在线免费| 久久久综合视频| 午夜天堂精品久久久久| 国产精品久久久久久久久借妻 | 国产精品日韩精品欧美在线| 亚洲精品国产欧美| 欧美高潮视频| 久久久久9999亚洲精品| 国产欧美日韩在线视频| 午夜精品视频在线观看| 亚洲乱码国产乱码精品精| 欧美成人一区二区三区在线观看| 影院欧美亚洲| 蜜桃av一区二区在线观看| 欧美一区二区精美| 最新国产拍偷乱拍精品| 久久精品中文字幕免费mv| 欧美性大战久久久久久久| 亚洲片区在线| 亚洲国产成人不卡| 欧美高清在线一区| 亚洲精选在线观看| 亚洲精品日韩综合观看成人91| 欧美1区2区3区| 亚洲人成毛片在线播放| 亚洲三级色网| 欧美午夜剧场| 久久岛国电影| 久久在线视频| 亚洲日韩成人| 亚洲少妇中出一区| 国内精品久久久久影院薰衣草| 久久精品一级爱片| 老司机凹凸av亚洲导航| 亚洲美女诱惑| 亚洲制服丝袜在线| 影音先锋久久久| 亚洲精品视频免费在线观看| 国产精品久久久久免费a∨大胸| 久久精品91| 欧美成人免费小视频| 亚洲综合日韩在线| 久久久久**毛片大全| 在线视频你懂得一区二区三区| 亚洲香蕉伊综合在人在线视看| 国产主播精品| 亚洲美女毛片| 韩国三级电影久久久久久| 亚洲二区精品| 国产一区二区中文字幕免费看| 亚洲国产成人91精品| 国产精品国产三级国产aⅴ入口| 久久一区二区三区四区五区| 欧美精品在线视频| 久久亚洲欧洲| 国产精品日韩电影| 91久久国产综合久久| 国产欧美一区二区白浆黑人| 欧美激情精品久久久久久变态| 国产精品一卡| 亚洲免费av观看| 亚洲国产精品免费| 亚洲欧美一区在线| 这里只有精品视频在线| 久久久99免费视频| 亚洲欧美在线看| 欧美精品三级在线观看| 老司机精品视频网站| 国产精品入口66mio| 亚洲国产高清一区| 一区精品久久| 久久国产视频网| 欧美一进一出视频| 国产精品高潮呻吟久久av无限| 亚洲大胆视频| 91久久久久| 久久综合免费视频影院| 久久久亚洲精品一区二区三区| 国产精品成人一区二区三区吃奶| 亚洲第一福利在线观看| 亚洲综合三区| 99这里有精品| 欧美国产精品久久| 欧美国产国产综合| 在线欧美电影| 久久资源在线| 欧美激情第1页| 亚洲人成小说网站色在线| 久久综合亚洲社区| 欧美va天堂| 亚洲国产高清高潮精品美女| 久久精品在线播放| 蜜乳av另类精品一区二区| 在线观看日韩av电影| 久久综合伊人77777| 欧美成年人视频网站欧美| 亚洲电影免费观看高清完整版在线| 久久精品欧美日韩| 麻豆国产精品va在线观看不卡 | 一区二区国产在线观看| 欧美日韩精品一区视频| 在线综合视频| 久久精品国产免费观看| 好看的日韩av电影| 久久综合五月天婷婷伊人| 欧美国产一区二区三区激情无套| 1769国内精品视频在线播放| 欧美www视频| 这里只有精品丝袜| 久久久久久9999| 亚洲激情在线播放| 欧美日韩一区二区国产| 亚洲图片欧洲图片av| 久久久99免费视频| 亚洲精品精选| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 中日韩高清电影网| 久久免费视频这里只有精品| 亚洲高清在线观看一区| 欧美日韩一区二区三区免费| 亚洲一区视频| 欧美高清在线一区| 亚洲欧美日韩一区二区三区在线| 狠狠狠色丁香婷婷综合久久五月 | 一区二区毛片| 国产亚洲精品v| 欧美91视频| 香蕉久久夜色精品| 亚洲黄色天堂| 久久久亚洲人| 亚洲一区久久久| 亚洲韩日在线| 国产亚洲一区二区三区| 欧美精品一区三区在线观看| 性欧美video另类hd性玩具| 亚洲国产欧美一区| 久久久久久欧美| 亚洲综合色网站| 91久久在线播放| 国产日韩综合| 欧美日韩一区二区精品| 美日韩精品免费观看视频| 亚洲免费中文| 亚洲精品国产精品国自产观看| 亚洲色图综合久久| 亚洲人成77777在线观看网| 午夜在线a亚洲v天堂网2018| 日韩视频中文字幕| 一区免费视频| 国产亚洲一区在线| 欧美亚男人的天堂| 欧美激情中文字幕乱码免费| 久久激情综合| 欧美一区在线直播| 亚洲免费一在线| 亚洲午夜电影网| av成人免费|