92ac0eb7 |
1 | # Creation of 2d drawing |
2 | |
031224c9 |
3 | #Category: Modeling |
4 | #Title: Snowflake - creation of 2d drawing |
92ac0eb7 |
5 | |
6 | pload MODELING AISV |
7 | |
031224c9 |
8 | puts "Generating sample drawing of snowflake..." |
9 | |
92ac0eb7 |
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 |
92ac0eb7 |
61 | bcut r r f5 |
977ad983 |
62 | tcopy r r1 |
63 | tmirror r1 -6 0 0 0 1 0 |
64 | bfuse w r r1 |
65 | unifysamedom w w |
92ac0eb7 |
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 |
fe1a6e4e |
84 | shape wsh Sh |
85 | foreach f [explode w f] {add $f wsh} |
86 | renamevar wsh w |
92ac0eb7 |
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 |
ac84fcf6 |
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 |
92ac0eb7 |
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 | |
031224c9 |
123 | compound snowflake lines text drawing |
92ac0eb7 |
124 | |
125 | # display in 3d view |
126 | vinit Driver1/Viewer1/View1 w=1024 h=768 |
127 | vdisplay snowflake lines text |
63fad07e |
128 | vrenderparams -msaa 8 |
031224c9 |
129 | vsetcolor snowflake 0 0 0 |
130 | vsetcolor lines 0 0 0 |
131 | vsetcolor text 0 0 0 |
132 | vsetcolorbg 255 255 255 |
92ac0eb7 |
133 | vtop |
031224c9 |
134 | vfit |
135 | |
f16a6cc5 |
136 | # add dimension: |
137 | # detect vertices extremal in X direction |
1a0339b4 |
138 | bounding -s snowflake -save x1 y1 z1 x2 y2 z2 |
f16a6cc5 |
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 |
031224c9 |
162 | |
163 | if { [regexp HAVE_GL2PS [dversion]] } { |
164 | puts "You can use command vexport to generate PDF: vexport your_file_path.pdf" |
165 | } |