0024181: Text to BRep functionality
[occt.git] / samples / tcl / bottle.tcl
CommitLineData
40093367 1# Script reproducing creation of bottle model as described in OCCT Tutorial
2
3pload MODELING VISUALIZATION
4
5# Construct bottle body
6
7# set basic dimensions
8dset height 70
9dset width 50
10dset thickness 30
11
12# construct base profile (half)
13vertex v1 -width/2 0 0
14vertex v2 -width/2 -thickness/4 0
15edge e1 v1 v2
16
17point p2 -width/2 -thickness/4 0
18point p3 0 -thickness/2 0
19point p4 width/2 -thickness/4 0
20catch {gcarc arc cir p2 p3 p4}
21mkedge e2 arc
22
23vertex v4 width/2 -thickness/4 0
24vertex v5 width/2 0 0
25edge e3 v4 v5
26
27wire w1 e1 e2 e3
28
29# complete profile by mirror and make a prism
30copy w1 w2
31tmirror w2 0 0 0 0 1 0
32
33wire w3 w1 w2
34mkplane f w3
35
36prism p f 0 0 height
37
38# fillet all edges
39explode p e
40blend 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
41
42# neck dimensions
43dset neckradius thickness/4
44dset neckheight height/10
45
46# add neck
47pcylinder c neckradius neckheight
48ttranslate c 0 0 height
49
50bfuse f b c
51
52# make body hollow
53explode c f
54offsetshape body f -thickness/50 1.e-3 c_2
55
56# Construct threading
57
58# make two cylinders
59cylinder c1 0 0 height 0 0 1 neckradius*0.99
60cylinder c2 0 0 height 0 0 1 neckradius*1.05
61
62# define threading dimensions in parametric space
63dset major 2*pi
64dset minor neckheight/10
65
66# make parametric curves for threading
67ellipse el1 2*pi neckheight/2 2*pi neckheight/4 major minor
68ellipse el2 2*pi neckheight/2 2*pi neckheight/4 major minor/4
69
70trim arc1 el1 0 pi
71trim arc2 el2 0 pi
72
732dcvalue el1 0 x1 y1
742dcvalue el1 pi x2 y2
75
76line l x1 y1 x2-x1 y2-y1
77parameters l x2 y2 1.e-9 U
78trim s l 0 U
79
80# construct 3d edges and wires
81mkedge E1OnS1 arc1 c1 0 pi
82mkedge E2OnS1 s c1 0 U
83mkedge E1OnS2 arc2 c2 0 pi
84mkedge E2OnS2 s c2 0 U
85
86wire tw1 E1OnS1 E2OnS1
87wire tw2 E1OnS2 E2OnS2
88mkedgecurve tw1 1.e-5
89mkedgecurve tw2 1.e-5
90
91# build threading as solid
92thrusections -N thread 1 0 tw1 tw2
93
94# add threading to the body
b514beda 95compound body thread bottle1
96
97# define text
98text2brep text2d OpenCASCADE Times-Roman 8 bold composite=0
99prism text text2d 0 0 2
100trotate text 0 0 0 0 1 0 90
101ttranslate text 24.75 -2 65
102
103# cut operation
104bcut bottle bottle1 text
40093367 105
106# display result
107vdisplay bottle
108vfit
109vsetdispmode 1