• <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>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            OpenCascade Sweep Algorithm

            Posted on 2018-04-26 21:22 eryar 閱讀(3126) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            OpenCascade Sweep Algorithm

            eryar@163.com

            Abstract. Sweeps are the objects you obtain by sweeping a profile along a path. Sweep is a very useful modeling algorithm. The paper focus on the introduction of the sweep algorithms in the opencascade. 

            Key Words. Sweep, Prism, Revol, Pipe, Frenet Trihedron, 

            1. Introduction

            隨著計(jì)算機(jī)技術(shù)的發(fā)展和普及,計(jì)算機(jī)輔助設(shè)計(jì)與制造(CAD/CAM)技術(shù)也得到了迅猛發(fā)展,它們推動(dòng)許多領(lǐng)域的設(shè)計(jì)革命,計(jì)算機(jī)輔助設(shè)計(jì)與制造技術(shù)的發(fā)展和應(yīng)用水平已經(jīng)成為衡量一個(gè)國(guó)家現(xiàn)代化水平的重要標(biāo)志之一。

            最近中興事件在國(guó)內(nèi)引起了大家的廣泛討論,由于目前國(guó)內(nèi)還制造不出能替代的芯片,所以可以從中找到與發(fā)達(dá)國(guó)家之間的差距,其實(shí)在CAD領(lǐng)域又何嘗不是這樣呢?不過在通用CAD方面,國(guó)內(nèi)有一些軟件廠家,有替代產(chǎn)品。而在行業(yè)CAD方面,一直是國(guó)外軟件的天下。

            原來(lái)國(guó)內(nèi)有些聲音是“造不如買,買不如租”,引進(jìn)了許多國(guó)外軟件。這些國(guó)外軟件是很優(yōu)秀,極大地提高了生產(chǎn)力。如果一直買,不思進(jìn)取,結(jié)果應(yīng)該會(huì)像中興一樣。如果自己造,剛開始是需要投入很大的成本,但是后面優(yōu)勢(shì)是不言而喻的。

            國(guó)際上的三維內(nèi)核目前功能相對(duì)齊全,開源的只有OpenCASCADE。國(guó)內(nèi)的相關(guān)內(nèi)核只從《計(jì)算機(jī)圖形學(xué)》的書上見過,沒有看過實(shí)物。還有一些軟件廠商收購(gòu)的國(guó)外內(nèi)核。開源的OpenCASCADE用來(lái)學(xué)習(xí)造型相關(guān)算法還是很不錯(cuò)的。通過學(xué)習(xí)源碼,不僅可以知其然,還可以做到知其所以然。

            本文主要對(duì)OpenCASCADE中的Sweep掃掠算法的用法進(jìn)行介紹,先會(huì)正確使用。正確使用是研究其實(shí)現(xiàn)原理的基礎(chǔ)。

            掃掠算法是圖形學(xué)中很常見的造型算法,就是將指定的輪廓Profile沿著一條路徑Path掃掠來(lái)得到模型。點(diǎn)掃掠得到邊;邊掃掠得到面;面掃掠得到體。

            wps_clip_image-23837

            Figure 1. Generating a sweep

            類BRepPrimAPI_MakeSweep是掃掠算法的基類,如下圖所示:

            wps_clip_image-9215

            從其派生的幾個(gè)類分別用于:

            l BRepPrimAPI_MakePrism:生成線性掃掠;

            l BRepPrimAPI_MakeRevol:生成旋轉(zhuǎn)掃掠;

            l BRepOffsetAPI_MakePipeShell: 生成通用的掃掠;

            下面對(duì)這幾種情況分別進(jìn)行說明。

            2.Prism

            通過類BRepPrimAPI_MakePrism可以創(chuàng)建線性掃掠,也就是拉伸體。在Draw Test Harness中可以使用命令prism來(lái)創(chuàng)建拉伸體。

            polyline p  0 0 0 1 0 0 1 2 0 0 1 0 0 0 0
            prism r p 0 0 1
            vdisplay p r

            在Draw Test Harness中運(yùn)行上述命令,可以得到一個(gè)線性拉伸體,如下圖所示:

            wps_clip_image-31373

            其中紅色為輪廓Profile,經(jīng)過線性掃掠得到右邊所示的拉伸體。

            3.Revol

            通過類BRepPrimAPI_MakeRevol可以創(chuàng)建旋轉(zhuǎn)掃掠,也就是旋轉(zhuǎn)體。在Draw Test Harness中可以使用命令revol來(lái)創(chuàng)建旋轉(zhuǎn)體。

            polyline p  0 0 0 1 0 0 1 2 0 0 1 0 0 0 0
            revol r p 3 0 0 0 1 0 280
            vdisplay p r

            在Draw Test Harness中運(yùn)行上述命令,可以得到一個(gè)旋轉(zhuǎn)體,如下圖所示:

            wps_clip_image-31096

            其中紅色為輪廓Profile,經(jīng)過旋轉(zhuǎn)掃掠得到右邊所示的旋轉(zhuǎn)體。

            4.Pipe Shell

            通用的掃掠算法使用類BRepOffAPI_MakePipeShell,在Draw Test Harness中使用如下命令:

            l mksweep

            l addsweep

            l deletesweep

            l sestsweep

            l buildsweep

            其中setsweep命令有如下選項(xiàng):

            setsweep options [arg1 [arg2 [...]]] : options are :
               -FR : Tangent and Normal are given by Frenet trihedron
               -CF : Tangente is given by Frenet, the Normal is computed to minimize the torsion
               -DT : discrete trihedron
               -DX Surf : Tangent and Normal are given by Darboux trihedron,
                   Surf have to be a shell or a face
               -CN dx dy dz : BiNormal is given by dx dy dz
               -FX Tx Ty TZ [Nx Ny Nz] : Tangent and Normal are fixed
               -G guide  0|1(Plan|ACR)  0|1|2(no contact|contact|contact on border) : with guide

            -FR選項(xiàng):切矢和法向由Frenet標(biāo)架確定;

            -CF選項(xiàng):切矢由Frenet標(biāo)架指定,法向通過計(jì)算最小扭轉(zhuǎn)來(lái)確定;

            -DT選項(xiàng):切矢和法向由Darboux標(biāo)架確定;

            -CN選項(xiàng):副法向由指定的dx, dy, dz確定;

            -FT:切矢和法向是固定的;

            下面通過例子來(lái)說明setsweep中這些標(biāo)架選項(xiàng)的原理。

            polyline p  0 0 0 1 0 0 1 2 0 0 1 0
            circle c 0 0 0 1 0 0 0.2
            mkedge e c
            wire w e
            mksweep p
            addsweep w
            setsweep -FX 1 0 0
            buildsweep r -C
            vdisplay p w r

            運(yùn)行上述Draw Test Harness腳本得到如下圖所示模型:

            wps_clip_image-10339

            通過setsweep -FX 1 0 0 使輪廓Profile沿著掃掠路徑Path移動(dòng)時(shí),法向始終為X軸方向。

            將setsweep設(shè)置為FR,即使Profile沿著Path移動(dòng)時(shí)采用Frenet標(biāo)架,更改后的腳本如下:

            mksweep p
            addsweep w
            setsweep -FR
            buildsweep r -C
            vdisplay p w r

            wps_clip_image-15947

            由上圖可以看出,輪廓Profile沿著路徑Path移動(dòng)時(shí),輪廓的法向始終與路徑平行,即與路徑的切線一致。

            通過上面命令的對(duì)比可以理解setsweep中的選項(xiàng)原理了。關(guān)于更多形式的標(biāo)架,如Darboux標(biāo)架之類的,可以自己搜索學(xué)習(xí)。

            其中buildsweep命令有如下選項(xiàng):

            buildsweep result [-M/-C/-R] [-S] [tol] : options are
               -M : Discontinuities are treated by Modfication of
                    the sweeping mode : it is the default
               -C : Discontinuities are treated like Right Corner
                    Treatement is Extent && Intersect
               -R : Discontinuities are treated like Round Corner
                    Treatement is Intersect and Fill
               -S : To build a Solid

            buildsweep有指定不連續(xù)的處理方式及是否生成實(shí)體。其中

            n -C:將路徑Path中不連續(xù)的地方通過延長(zhǎng)和相交進(jìn)行處理;

            n -R:將路徑Path中不連續(xù)的地方通過相交和填充進(jìn)行處理;

            下面通過例子來(lái)說明buildsweep中選項(xiàng)的用法。通過運(yùn)行下面的Draw 腳本:

            polyline p  0 0 0 1 0 0 1 2 0 0 1 0 0 0 0
            circle c 0 0 0 1 0 0 0.2
            mkedge e c
            wire w e
            mksweep p
            addsweep w
            buildsweep r -C
            vdisplay p w r

            在buildsweep時(shí)使用-C選項(xiàng),得到效果如下圖所示:

            wps_clip_image-25485

            將上述腳本中更改一下buildsweep的選項(xiàng),由-C改為-R,即:

            buildsweep r -R

            得到的效果如下圖所示:

            wps_clip_image-4615

            由上面兩個(gè)結(jié)果對(duì)比可以理解buildsweep的-C和-R選項(xiàng)了。

            5.Conclusion

            OpenCASCADE提供了掃掠造型的算法。對(duì)于掃掠造型的兩個(gè)特例Prism和Revol,提供了類BrepPrimAPI_MakePrism和BRepPrimAPI_MakeRevol來(lái)分別生成拉伸體和和旋轉(zhuǎn)體。

            對(duì)于通用的掃掠造型算法,提供了類BRepOffsetAPI_MakePipeShell來(lái)生成。使用這個(gè)類的時(shí)候需要注意輪廓Profile在掃掠路徑Path上的標(biāo)架及掃掠路徑曲線不連續(xù)的處理。

            6.References

            1. OpenCASCADE Modeling Algorithms.

            2. 詹海生. 李光鑫. 馬志欣. 基于ACIS的幾何造型技術(shù)與系統(tǒng)開發(fā). 清華大學(xué)出版社. 2002

            3. 陳維桓. 微分幾何. 北京大學(xué)出版社. 



            為了方便大家在移動(dòng)端也能看到我的博文和討論交流,現(xiàn)已注冊(cè)微信公眾號(hào),歡迎大家掃描下方二維碼關(guān)注。
            Shing Liu(eryar@163.com)

             

            深夜久久AAAAA级毛片免费看| 国产精品久久久久影视不卡| 久久青青草原精品国产软件| 久久综合九色欧美综合狠狠 | 亚洲国产精品热久久| 99久久精品费精品国产| 久久成人国产精品免费软件| 精品一区二区久久| 久久这里的只有是精品23| 99999久久久久久亚洲| 少妇被又大又粗又爽毛片久久黑人| 久久久SS麻豆欧美国产日韩| 国产成人香蕉久久久久| 日韩精品无码久久久久久| 天天做夜夜做久久做狠狠| 久久精品国产亚洲AV麻豆网站 | 国产精品99久久99久久久| 精品免费久久久久国产一区| 亚洲欧美伊人久久综合一区二区 | 国产精品美女久久久久av爽| 久久综合久久美利坚合众国| 99精品久久久久久久婷婷| 久久香蕉超碰97国产精品| 欧美亚洲另类久久综合婷婷| 久久96国产精品久久久| 亚洲AV无码久久寂寞少妇| 久久久精品久久久久特色影视| 人妻精品久久无码区| 久久国产免费直播| 欧美日韩精品久久久久| 亚洲国产成人久久笫一页| 久久精品成人欧美大片| 青青热久久综合网伊人| 久久久久99精品成人片试看| 久久精品国产99国产精品导航| 欧美精品丝袜久久久中文字幕| 99热精品久久只有精品| 久久久WWW成人| 久久久久亚洲精品天堂久久久久久| 欧美日韩中文字幕久久伊人| 国产亚洲婷婷香蕉久久精品|