1 # Script reproducing creation of bottle model as described in OCCT Tutorial
3 pload MODELING VISUALIZATION
5 # Construct bottle body
12 # construct base profile (half)
13 vertex v1 -width/2 0 0
14 vertex v2 -width/2 -thickness/4 0
17 point p2 -width/2 -thickness/4 0
18 point p3 0 -thickness/2 0
19 point p4 width/2 -thickness/4 0
20 catch {gcarc arc cir p2 p3 p4}
23 vertex v4 width/2 -thickness/4 0
29 # complete profile by mirror and make a prism
31 tmirror w2 0 0 0 0 1 0
40 blend b p thickness/12 p_1 thickness/12 p_2 thickness/12 p_3 thickness/12 p_4 thickness/12 p_5 thickness/12 p_6 thickness/12 p_7 thickness/12 p_8 thickness/12 p_9 thickness/12 p_10 thickness/12 p_11 thickness/12 p_12 thickness/12 p_13 thickness/12 p_14 thickness/12 p_15 thickness/12 p_16 thickness/12 p_17 thickness/12 p_18
43 dset neckradius thickness/4
44 dset neckheight height/10
47 pcylinder c neckradius neckheight
48 ttranslate c 0 0 height
54 offsetshape body f -thickness/50 1.e-3 c_2
59 cylinder c1 0 0 height 0 0 1 neckradius*0.99
60 cylinder c2 0 0 height 0 0 1 neckradius*1.05
62 # define threading dimensions in parametric space
64 dset minor neckheight/10
66 # make parametric curves for threading
67 ellipse el1 2*pi neckheight/2 2*pi neckheight/4 major minor
68 ellipse el2 2*pi neckheight/2 2*pi neckheight/4 major minor/4
76 line l x1 y1 x2-x1 y2-y1
77 parameters l x2 y2 1.e-9 U
80 # construct 3d edges and wires
81 mkedge E1OnS1 arc1 c1 0 pi
82 mkedge E2OnS1 s c1 0 U
83 mkedge E1OnS2 arc2 c2 0 pi
84 mkedge E2OnS2 s c2 0 U
86 wire tw1 E1OnS1 E2OnS1
87 wire tw2 E1OnS2 E2OnS2
91 # build threading as solid
92 thrusections -N thread 1 0 tw1 tw2
94 # add threading to the body
95 compound body thread bottle1
98 text2brep text2d OpenCASCADE Times-Roman 8 bold composite=0
99 prism text text2d 0 0 2
100 trotate text 0 0 0 0 1 0 90
101 ttranslate text 24.75 -2 65
104 bcut bottle bottle1 text