0031067: Visualization - Aspect_Window::DoResize() should be a non-const method
[occt.git] / samples / tcl / snowflake.tcl
1 # Creation of 2d drawing
2
3 #Category: Modeling
4 #Title: Snowflake - creation of 2d drawing
5
6 pload MODELING AISV
7
8 puts "Generating sample drawing of snowflake..."
9
10 # make circular elements
11 circle c11 5 5 0 5
12 circle c12 5 5 0 3
13 circle c21 18 7 0 7
14 circle c22 18 7 0 5
15 circle c31 28.5 5 0 5
16 circle c32 28.5 5 0 3
17 trim c21 c21 pi/4 -pi/4
18 trim c22 c22 pi/4 -pi/4
19 trim c31 c31 pi/4 -pi/4
20 trim c32 c32 pi/4 -pi/4
21 line l21 18 7 0 1 1 0
22 line l22 18 7 0 1 -1 0
23 line l31 28.5 5 0 1 1 0
24 line l32 28.5 5 0 1 -1 0
25 trim l21 l21 5 7
26 trim l22 l22 5 7
27 trim l31 l31 3 5
28 trim l32 l32 3 5
29 line l1 -6 0 0 0.86602540378443864 0.5 0
30 line l2 -6 1 0 1 0 0
31 trim l1 l1 0 30
32 trim l2 l2 0 45
33 mkedge c11 c11
34 mkedge c12 c12
35 mkedge c21 c21
36 mkedge c22 c22
37 mkedge c31 c31
38 mkedge c32 c32
39 mkedge l21 l21
40 mkedge l22 l22
41 mkedge l31 l31
42 mkedge l32 l32
43 mkedge l1 l1
44 mkedge l2 l2
45 wire b11 c11
46 wire b12 c12
47 orientation b12 R
48
49 # build one ray
50 plane p -6 0 0 0 0 1
51 mkface f1 p b11
52 add b12 f1
53 wire b2 c21 l21 c22 l22
54 mkface f2 p b2
55 wire b3 c31 l31 c32 l32
56 mkface f3 p b3
57 prism f5 l1 -5 8.6602540378443864 0
58 prism f4 l2 0 -1 0
59 compound f1 f2 f3 bc
60 bfuse r bc f4
61 bcut r r f5
62 tcopy r r1
63 tmirror r1 -6 0 0 0 1 0
64 bfuse w r r1
65 unifysamedom w w
66 donly w
67
68 # construct complete snowflake
69 tcopy w w1
70 tcopy w w2
71 tcopy w w3
72 tcopy w w4
73 tcopy w w5
74 trotate w1 -6 0 0 0 0 1 60
75 trotate w2 -6 0 0 0 0 1 120
76 trotate w3 -6 0 0 0 0 1 180
77 trotate w4 -6 0 0 0 0 1 240
78 trotate w5 -6 0 0 0 0 1 300
79 bfuse w w w1
80 bfuse w w w2
81 bfuse w w w3
82 bfuse w w w4
83 bfuse w w w5
84 shape wsh Sh
85 foreach f [explode w f] {add $f wsh}
86 renamevar wsh w
87 unifysamedom r w
88
89 # keep only wires in compound
90 eval compound [explode r w] snowflake
91 tscale snowflake -6 0 0 1.5
92
93 # draw frame loosely following GOST 2.104-68
94 polyline frame -100 -100 0 172 -100 0 172 100 0 -100 100 0 -100 -100 0
95 polyline t1 52 -100 0 52 -45 0 172 -45 0
96 polyline t2 52 -60 0 172 -60 0
97 polyline t3 52 -85  0 172 -85 0
98 polyline t4 122 -100 0 122 -60 0
99 polyline t5 122 -80 0 172 -80 0
100 polyline t6 122 -65 0 172 -65 0
101 polyline t7 142 -80 0 142 -85 0
102 polyline t8 137 -80 0 137 -60 0
103 polyline t9 154 -80 0 154 -60 0
104 compound frame t1 t2 t3 t4 t5 t6 t7 t8 t9 lines
105
106 # add text
107 text2brep sample "SAMPLE" -font Arial -height 10 -pos 90 -55 0 -aspect bolditalic
108 text2brep occ "Open CASCADE" -font Times -height 6 -pos 125 -95 0
109 text2brep name "Snowflake" -font Courier -height 7 -pos 65 -75 0 -aspect italic
110 text2brep material "Ice" -font Courier -height 7 -pos 75 -95 0 -aspect italic
111 text2brep sheets "Sheets 1" -font Courier -height 3.5 -pos 145 -83 0 -aspect italic
112 text2brep scale "Scale\n\n1:100" -font Courier -height 3.5 -pos 157 -63 0 -aspect italic -valign topfirstline
113 text2brep mass "Mass\n\n1 mg" -font Courier -height 3.5 -pos 140 -63 0 -aspect italic -valign topfirstline
114 eval compound [explode sample w] sample
115 eval compound [explode occ w] occ
116 eval compound [explode name w] name
117 eval compound [explode material w] material
118 eval compound [explode sheets w] sheets
119 eval compound [explode scale w] scale
120 eval compound [explode mass w] mass
121 compound sample occ name material sheets scale mass text
122
123 compound snowflake lines text drawing
124
125 # display in 3d view
126 vinit Driver1/Viewer1/View1 w=1024 h=768
127 vdisplay snowflake lines text
128 vrenderparams -msaa 8
129 vsetcolor snowflake 0 0 0 
130 vsetcolor lines 0 0 0 
131 vsetcolor text 0 0 0 
132 vbackground -color WHITE
133 vtop
134 vfit
135
136 # add dimension:
137 # detect vertices extremal in X direction
138 bounding snowflake -save x1 y1 z1 x2 y2 z2
139 plane f1 x1 0 0 1 0 0
140 plane f2 x2 0 0 1 0 0
141 mkface f1 f1
142 mkface f2 f2
143 bsection s1 snowflake f1
144 bsection s2 snowflake f2
145 # select only upper vertices (nearer to the upper bound)
146 explode s1 v
147 explode s2 v
148 plane fup 0 y2 0 0 1 0
149 mkface fup fup
150 for {set i 1} {$i <= 2} {incr i} {
151   set dmin 1e10
152   for {set j 1} {$j <= 2} {incr j} {
153     distmini d s${i}_$j fup
154     set dist [dval d_val]
155     if {$dmin > $dist} {
156       set dmin $dist
157       eval set v$i s${i}_$j
158     }
159   }
160 }
161 vdimension length -length -shapes $v1 $v2 -plane xoy -value 0.001 -dispunits mm -showunits -flyout 70 -label above -color black -text 5 3d sh
162
163 if { [regexp HAVE_GL2PS [dversion]] } {
164     puts "You can use command vexport to generate PDF: vexport your_file_path.pdf"
165 }