• <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 麻花鉆頭造型實例分析

            Posted on 2017-09-18 23:35 eryar 閱讀(2115) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            OpenCASCADE 麻花鉆頭造型實例分析

            eryar@163.com

            Abstract. OpenCASCADE provides a simple twist drill bit modeling example in Tcl script. The blog will give a details of some key points, when you understand the key points, you can modeling the shape like that.

            Key Words. OpenCASCADE, Twist Drill Bit Modeling, Tcl

            1.Introduction

            OpenCASCADE的Draw Test Harness中提供了一個麻花鉆頭造型的實例,如下圖所示:

            wps_clip_image-8478

            Figure 1. A Simple Twist Drill Bit by OpenCASCADE

            鉆頭造型主要涉及到旋轉形狀的造型方法,放樣造型及布爾操作。本文結合鉆頭的Tcl腳本來詳細說明造型過程。對于有同樣造型需求的,可以在理解造型方法的基礎上實現自己需要的參數化形狀。

            2.Modeling Tcl Script

            通過Draw Test Harness的菜單Samples->View samples可以找到Drill例子,如下圖所示:

            wps_clip_image-20966

            Figure 2. Drill bit modeling sample

            對應的Tcl腳本位于samples/tcl文件夾中,列出如下:

            # Sample: creation of simple twist drill bit
            #Category: Modeling
            #Title: Drill
            
            pload MODELING VISUALIZATION
            # drill parameters (some terms taken from http://www.drill-bits.cn/drill-bits-quality.asp)
            
            dset R  4.    ;# outer radius
            
            dset D  2*R   ;# diameter
            
            dset Rr 3.5   ;# chisel radius (outer radius minus body clearance)
            
            dset b  1.    ;# web thickness (approximate)
            
            dset d  b/2
            dset H  80.   ;# height of the spiral part
            
            dset a  3.*pi ;# total angle of spiral rotation
            
            dset sigma 118 ;# point angle, in degrees
            # Create section profile by sequence of Boolean operations
            # on simple planar objects
            
            puts "Creating the drill section profile..."
            polyline rectangle1 d -R 0  R -R 0 -d R 0 -R R 0  d -R 0
            circle circle1 0 0 0 0 0 1 R
            mkedge circle1 circle1
            wire circle1 circle1
            circle circle2 0 0 0 0 0 1 Rr
            mkedge circle2 circle2
            wire circle2 circle2
            plane p0
            mkface rectangle1 p0 rectangle1
            mkface circle1 p0 circle1
            mkface circle2 p0 circle2
            bcommon sec rectangle1 circle1
            # note use of 'fuse' instead of 'bfuse' -- we need to get single face
            
            fuse sec sec circle2
            # Construct flute profile so as to have cutting lip straight after sharpening.
            # Here we need to take into account spiral shift of the flute edge
            # along the point length -- the way to do that is to make spiral
            # from the desired cutting lip edge and then intersect it by plane
            
            polyline lip d -d/2 0  d -R -R/tan(sigma/2*pi/180)
            polyline sp 0 0 0 0 0 H
            cylinder cc 0 0 0 0 0 1 0 -4 0 4
            line ll 0 0 a 80
            trim ll ll 0 sqrt(a*a+H*H)
            vertex v1 0 -R 0
            vertex v2 0 -R H
            trotate v2 0 0 0 0 0 1 180.*a/pi
            mkedge ee ll cc v1 v2
            wire gg ee
            mksweep sp
            setsweep -G gg 0 0
            addsweep lip
            buildsweep spiral -S
            mkface f0 p0 -R R -R R
            bsection sflute spiral f0
            # here we rely on that section curve is parameterized from 0 to 1 
            # and directed as cutting lip edge;
            # note that this can change if intersection algorithm is modified
            
            explode sflute e
            mkcurve cflute sflute_1
            cvalue cflute 0. x0 y0 z0
            cvalue cflute 1. x1 y1 z1
            vertex vf0 x0 y0 z0 
            vertex vf1 x1 y1 z1
            # -- variant: replace curve by arc with start at x0,y0,z0 and end at x1,y1,z1,
            # -- such that tanget at start point is along Y
            #dset Rflute ((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0))/(2*(x1-x0))
            #circle aflute x0+Rflute y0 0  0 0 1  Rflute
            #mkedge sflute_1 aflute vf0 vf1
            # make rounding in the flute; use circle with radius Rr/2
            
            circle cround x0+Rr/2 y0 0 0 0 1 Rr/2
            vertex vf3 x0+Rr y0 0
            mkedge sflute_2 cround vf3 vf0
            vertex vf2 R -R 0
            edge sflute_3 vf3 vf2
            edge sflute_4 vf2 vf1
            wire w2 sflute_1 sflute_2 sflute_3 sflute_4
            mkface flute p0 w2
            # cut flute from profile
            
            bcut sec sec flute
            trotate flute 0 0 0 0 0 1 180.
            bcut sec sec flute
            donly sec
            # sweep profile to get a drill body
            
            puts "Sweeping the profile..."
            mksweep sp
            setsweep -G gg 0 0
            explode sec w
            addsweep sec_1
            buildsweep base -S
            # sharpen the drill (see http://tool-land.ru/zatochka-sverla.php)
            
            puts "Sharpening..."
            dset theta a*R/H*sin((90-sigma/2)*pi/180)
            plane ax1 d 1.9*D "H+1.9*D/tan(pi/180.*sigma/2.)" 0 -1 -1
            pcone sh1 ax1 0 100*sin((sigma-90)/2*pi/180.) 100
            trotate sh1 0 0 0 0 0 1 -theta*180/pi
            tcopy sh1 sh2
            trotate sh2 0 0 0 0 0 1 180
            box sh -D/2 -D/2 72 D D 20
            bcommon qq sh1 sh2
            bcut sharpener sh qq
            bcut body base sharpener
            # make a shank
            
            puts "Making a shank..."
            plane pl2 0 0 -40 0 0 1
            pcylinder shank pl2 4 40
            pcone transit R 0 R
            plane pl3 0 0 -40 0 0 -0.5
            pcone tail pl3 R 0 0.5
            bfuse shank shank tail
            bfuse shank shank transit
            bfuse drill body shank
            # check result
            
            checkshape drill
            # show result
            
            puts "Displaying result..."
            incmesh drill 0.01
            vdisplay drill
            vsetdispmode drill 1
            vrenderparams -msaa 8
            vfit
            # show section and sweep path
            
            ttranslate sec_1 0 0 H; trotate sec_1 0 0 0 0 0 1 a*180/pi; incmesh gg 0.01; vdisplay gg sec_1

             

            下面結合Tcl腳本來對鉆頭的造型過程進行詳細說明。

            3.Twist Drill Bit Parameters

            腳本首先加載相應的模塊:造型模塊和顯示模塊,分別為MODEING和VISUALIZATION。然后設置鉆頭相關參數變量:

            wps_clip_image-20435

            Figure 3. Drill Bit 

            變量名及其說明:

            變量名variable 說明 detail
            R 外半徑 outer radius
            D 直徑D
            Rr Chisel Radius
            b Web thickness(approximate)
            d  
            H 螺旋部分的高度Height of the spiral height
            a 螺旋角度Total angle of spiral rotation
            sigma 鉆尖角度Point angle in degrees.

             

             

             

             

             

             

             

            先定義這些變量的思想也是參數化的思想,將這些變量值改變就會得到不同的鉆頭模型。參數化的思想在CAD軟件中比較常見,如AutoCAD中的動態塊,PDMS中的設備模板Template等,都屬于參數化的方法。通過修改參數讓一個或多個幾何體形狀發生變化。

            4.Create Drill Section Profile

            創建鉆頭截面的Tcl腳本如下所示:

            # Create section profile by sequence of Boolean operations
            # on simple planar objects
            
            puts "Creating the drill section profile..."
            polyline rectangle1 d -R 0  R -R 0 -d R 0 -R R 0  d -R 0
            circle circle1 0 0 0 0 0 1 R
            mkedge circle1 circle1
            wire circle1 circle1
            circle circle2 0 0 0 0 0 1 Rr
            mkedge circle2 circle2
            wire circle2 circle2
            plane p0
            mkface rectangle1 p0 rectangle1
            mkface circle1 p0 circle1
            mkface circle2 p0 circle2
            bcommon sec rectangle1 circle1
            # note use of 'fuse' instead of 'bfuse' -- we need to get single face
            
            fuse sec sec circle2

             

            生成的圖形如下圖所示:

            wps_clip_image-30324

            Figure 4 Profile construction curves

            其中變量Rectangle1是圖中綠色表示的四邊形,Circle1是黃色表示的外圓,Circle2是紅色表示的內圓。通過布爾操作求取Rectangle1和Circle1的公共部分得到如下圖所示的截面:

            wps_clip_image-28102

            Figure 5 Common of Rectangle1 and Circle1

            將公共部分與內圓Circle2合并得到如圖所示截面:

            wps_clip_image-8412

            Figure 6. Fuse of Common part and Circle2

            下面在這個截面的基礎上生成鉆頭的螺旋凹槽,這里是相對關鍵的地方,生成凹槽的時候還要考慮螺旋。

            # Construct flute profile so as to have cutting lip straight after sharpening.
            # Here we need to take into account spiral shift of the flute edge
            # along the point length -- the way to do that is to make spiral
            # from the desired cutting lip edge and then intersect it by plane
            
            polyline lip d -d/2 0  d -R -R/tan(sigma/2*pi/180)
            polyline sp 0 0 0 0 0 H
            cylinder cc 0 0 0 0 0 1 0 -4 0 4
            line ll 0 0 a 80
            trim ll ll 0 sqrt(a*a+H*H)
            vertex v1 0 -R 0
            vertex v2 0 -R H
            trotate v2 0 0 0 0 0 1 180.*a/pi
            mkedge ee ll cc v1 v2
            wire gg ee
            mksweep sp
            setsweep -G gg 0 0
            addsweep lip
            buildsweep spiral -S
            mkface f0 p0 -R R -R R
            bsection sflute spiral f0

             

            代碼生成的圖形如下圖所示:

            wps_clip_image-27754

            Figure 7. Flute of the drill bit

            通過將線lip沿著路徑直線sp和螺旋線gg放樣得到螺旋截面spiral,再將螺旋截面spiral和底平面f0求交得到sflute。

            # here we rely on that section curve is parameterized from 0 to 1 
            # and directed as cutting lip edge;
            # note that this can change if intersection algorithm is modified
            
            explode sflute e
            mkcurve cflute sflute_1
            cvalue cflute 0. x0 y0 z0
            cvalue cflute 1. x1 y1 z1
            vertex vf0 x0 y0 z0 
            vertex vf1 x1 y1 z1
            # -- variant: replace curve by arc with start at x0,y0,z0 and end at x1,y1,z1,
            # -- such that tanget at start point is along Y
            #dset Rflute ((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0))/(2*(x1-x0))
            #circle aflute x0+Rflute y0 0  0 0 1  Rflute
            #mkedge sflute_1 aflute vf0 vf1
            # make rounding in the flute; use circle with radius Rr/2
            
            circle cround x0+Rr/2 y0 0 0 0 1 Rr/2
            vertex vf3 x0+Rr y0 0
            mkedge sflute_2 cround vf3 vf0
            vertex vf2 R -R 0
            edge sflute_3 vf3 vf2
            edge sflute_4 vf2 vf1
            wire w2 sflute_1 sflute_2 sflute_3 sflute_4
            mkface flute p0 w2

             

            通過求得的交線再構造圓弧和線段來構造出鉆頭凹槽的截面,如下圖所示:

            wps_clip_image-2949

            Figure 8. Make flute section

            將凹槽截面flute從前面構造的截面中去除:

            # cut flute from profile
            
            bcut sec sec flute

             

            wps_clip_image-22613

            Figure 9. Make drill bit profile

            將凹槽截面繞Z軸旋轉180度,再去布爾減原來的截面:

            trotate flute 0 0 0 0 0 1 180.
            bcut sec sec flute

             

            wps_clip_image-9522

            Figure 10. Make drill bit profile

            這樣鉆頭的截面就生成了。

            5.Sweeping the Profile

            將上面鉆頭截面沿著直線sp和螺旋線gg放樣:

            # sweep profile to get a drill body
            
            puts "Sweeping the profile..."
            mksweep sp
            setsweep -G gg 0 0
            explode sec w
            addsweep sec_1
            buildsweep base -S

             

            生成圖形如下圖所示:

            wps_clip_image-20384

            Figure 11. Sweep the profile

            通過放樣得到了鉆頭的螺桿base。

            6.Sharpening

            得到鉆頭的螺桿后需要生成鉆頭的鉆尖,根據鉆尖角point angle變量sigma來造型。

            # sharpen the drill (see http://tool-land.ru/zatochka-sverla.php)
            
            puts "Sharpening..."
            dset theta a*R/H*sin((90-sigma/2)*pi/180)
            plane ax1 d 1.9*D "H+1.9*D/tan(pi/180.*sigma/2.)" 0 -1 -1
            pcone sh1 ax1 0 100*sin((sigma-90)/2*pi/180.) 100
            trotate sh1 0 0 0 0 0 1 -theta*180/pi
            tcopy sh1 sh2
            trotate sh2 0 0 0 0 0 1 180
            box sh -D/2 -D/2 72 D D 20
            bcommon qq sh1 sh2
            bcut sharpener sh qq
            bcut body base sharpener

             

            先構造兩個圓錐體(sh1和sh2)和一個長方體sh,再通過布爾運算得到兩個圓錐體sh1,sh2的公共部分qq。如下圖所示:

            wps_clip_image-23669

            wps_clip_image-5130

            Figure 12. Modeling point angle

            再從長方體sh中減去兩個圓錐的公共部分得到如下圖所示:

            wps_clip_image-3000

            wps_clip_image-24408

            Figure 13. Modeling point angle

            wps_clip_image-12972

            將螺桿減去上面得到的sharpener就完成鉆尖的造型,如下圖所示:

            wps_clip_image-4999

            Figure 14. Modeling point angle

            7.Make Shank

            完成螺桿和鉆尖造型后,就來實現麻花鉆頭的最后部分,鉆頭柄shank。

            # make a shank
            
            puts "Making a shank..."
            plane pl2 0 0 -40 0 0 1
            pcylinder shank pl2 4 40
            pcone transit R 0 R
            plane pl3 0 0 -40 0 0 -0.5
            pcone tail pl3 R 0 0.5
            bfuse shank shank tail
            bfuse shank shank transit
            bfuse drill body shank

             

            鉆頭柄部由兩個圓錐(transit和tail)和一個圓柱shank組成。最后將這三個形狀合并得到完成的鉆頭的柄部shank。

            wps_clip_image-20511

            Figure 15. Modeling Shank

            8.Conclusion

            通過對OpenCASCADE中麻花鉆頭的造型實例分析,可見這個鉆頭造型用到的算法主要是放樣及布爾操作。在生成螺旋線時主要是使用pcurve的方式。最后還要理解參數化的造型思想,通過定義變量來生成參數化的模型。

            日韩十八禁一区二区久久 | 99久久精品免费看国产一区二区三区 | 热99RE久久精品这里都是精品免费 | 国内精品久久久久| 日本三级久久网| 日本亚洲色大成网站WWW久久| 久久成人小视频| 2022年国产精品久久久久| 99久久免费只有精品国产| 亚洲欧美精品一区久久中文字幕| 精品综合久久久久久98| a级成人毛片久久| 人人妻久久人人澡人人爽人人精品 | 综合久久久久久中文字幕亚洲国产国产综合一区首 | 欧美伊人久久大香线蕉综合 | 久久精品国产免费观看| 国产精品18久久久久久vr| 国产精品久久久久久久人人看| 国产精品久久久久久影院| 欧美久久久久久午夜精品| 99久久免费国产精品热| 中文字幕精品久久久久人妻| 国产精品久久成人影院| 亚洲午夜久久久久妓女影院| 久久精品国产精品亜洲毛片| 久久久无码一区二区三区| 久久久国产视频| 精品久久久久中文字幕一区| 精品久久久久久亚洲精品| 综合久久国产九一剧情麻豆| 久久免费观看视频| 色综合久久精品中文字幕首页| 久久青青草原亚洲av无码app| 一级a性色生活片久久无少妇一级婬片免费放 | 久久久久亚洲AV片无码下载蜜桃| 中文字幕精品久久| 久久一区二区三区免费| 久久久精品日本一区二区三区| 久久久久久a亚洲欧洲aⅴ| 72种姿势欧美久久久久大黄蕉| 狠狠色综合网站久久久久久久高清 |