chiark / gitweb /
6f36f355706820666aa29c8abbc39c4f4ba9ce21
[trains.git] / layout / parts.i4
1 define(`def_thing_l_r',`
2 dnl OBJNAME-EXCLUDING-L
3  defpart $1r
4   abs c 200 200 0
5   objflip $1l c c =
6  enddef
7 ')
8
9 # Conventionally, points' toes are c, the straight through is a
10 # and the curve is b.  Segments run from c towards a and b.
11 #
12 # Crossings (including slips) run `vertically' and have
13 # tl, tr, bl, br.  Segments run from b* to t*.
14
15 define(`def_point_ord',`
16 dnl OBJNAME-EXCLUDING-PT-L ANGLE STRAIGHT-L CURVE-LONGER CURVE-DIVERGE-Y MIN-R
17  defpart pt_$1l
18   abs c 200 200 0
19   segment /P0
20   extend c a len $3
21   rel a b $4 -$5 $2
22   segment /P1
23   join c b $6
24  enddef
25  def_thing_l_r(`pt_$1')
26 ')
27
28 define(`def_point_curve',`
29 dnl OBJNAME-EXCLUDING-PT-L TIGHT-ANG TIGHT-RECT TIGHT-DIVERGE-Y SHALLOW.. MIN-R
30  defpart pt_$1l
31   abs c 200 200 0
32   rel c a $6 -$7 $5
33   rel c b $3 -$4 $2
34   segment /P0
35   join c a $8
36   segment /P1
37   join c b $8
38  enddef
39  def_thing_l_r(`pt_$1')
40 ')
41
42 define(`def_point_y',`
43 dnl OBJNAME-EXCLUDING-PT HALF-ANG RECT HALF-DIVERGE-Y MIN-R
44  defpart pt_$1
45   abs c 200 200 0
46   rel c l $3 -$4  $2
47   rel c r $3  $4 -$2
48   segment /P0
49   join c l $5
50   segment /P1
51   join c r $5
52  enddef
53 ')
54
55 define(`def_crossing',`
56 dnl OBJNAME-EXCLUDING-CROSS HALF-ANG HALF-LENGTH
57  defpart cross_$1
58   abs m 200 200 0
59   rel m ml 0 0 $2
60   rel m mr 0 0 -$2
61   segment F
62   extend mr tr len $3
63   extend mr bl len -$3
64   segment B
65   extend ml tl len $3
66   extend ml br len -$3
67  enddef
68 ')
69
70 def_point_ord(`peco_s', 22.5, 87,  -0.5, 17,    200) #ST-5,6     not minr 230 ?
71 def_point_ord(`peco_m', 14,  126.5,-1.55,13.21, 315) #SL-395,396 not minr 457 ?
72 def_point_ord(`peco_l',  8,  160,  -0.4, 13.21, 914) #SL-388,389
73  # catalogue says 123.7 for STRAIGHT-L ?!
74  # SL-<n> and SL-E<n> have the same geometry
75
76 def_point_curve(`peco_c',  10, 154.4, 13.8,  3, 156.0, 0.8, 457)
77  dnl 163.2-  } dist to markings on paper cribsheet from c
78  dnl 32.8-   }
79
80 def_point_y(`peco_y', 4, 127, 8.4, 800) # not minr 762 ?
81
82 #def_crossing(`mythical',7,   80)
83 def_crossing(`peco_l',  4,   93.75)
84 def_crossing(`peco_s', 12.5, 46)
85 def_crossing(`pecof_s', 10,  51.85)
86
87
88 def_crossing(`atlas_15',   7.5, 64)
89 def_crossing(`atlas_15m',  7.5, 61)
90 def_crossing(`atlas_90',  45,   62.4)
91 def_crossing(`atlas_90m', 45,    8.5)
92 def_crossing(`atlas_30',  15,   32.9)
93 def_crossing(`atlas_30m', 15,   30.9)
94 def_crossing(`atlas_60',  30,   48.5)
95 def_crossing(`atlas_60m', 30,   14.5)
96 def_crossing(`atlas_20',  10,   63.5)
97 def_crossing(`atlas_20m', 10,   46.0)
98 def_crossing(`atlas_45',  22.5, 50.9)
99 def_crossing(`atlas_45m', 22.5, 19.5)
100
101 define(`def_point_shino',`
102 dnl OBJNAME-EXCLUDING-PT-L($1) A($2) B($3) Q($4)
103 dnl not R($5)
104  defpart pt_$1l
105   abs c 200 200 0
106   layer s
107   rel c strintersect $3 0 $4
108   rel strintersect strbackanal -$3
109   layer =
110   rel strbackanal b $2
111   segment /P1
112   join c b 240 arcline
113   segment /P0
114   extend c a len $2
115  enddef
116  def_thing_l_r(`pt_$1')
117 ')
118
119 def_point_shino(`shino_4', 136, 45, 14.25)
120 def_point_shino(`shino_6', 177, 49,  9.50)
121 def_point_y(`shino_y', 7.125, 140, 10.9, 750) # not minr 500 ?
122
123 defpart pt_shino_x3
124   abs c 200 200 0
125   layer s
126   rel c strintersectc  74 0   9.5
127   rel c strintersectb 103 0 -12
128   layer =
129   rel strintersectc l 141
130   rel strintersectb r 112
131   segment /P1
132   extend c m len 215
133   segment /P0
134   join c l 315 arcline
135   segment /P2
136   join c r 315 arcline
137 enddef
138
139 define(`def_slip2',`
140 dnl OBJNAME-EXCLUDING-SLIP2 HALF-LEN HALF-ANG
141  defpart slip2_$1
142   # configurations:  bl-tl 0  bl-tr 1  br-tl 2  br-tr 3
143   abs m 200 200 0
144   rel m ml 0 0  $3
145   rel m mr 0 0 -$3
146   segment /S2
147   extend ml tl len $2
148   segment -/S2
149   extend ml br len -$2
150   segment /S1
151   extend mr tr len $2
152   segment -/S1
153   extend mr bl len -$2
154   segment /S0
155   join bl tl 500
156   segment /S3
157   join br tr 500
158  enddef
159 ')
160
161 def_slip2(`shino', 114, 4.75)
162 def_slip2(`pecof',  77, 5.00)
163
164 define(`def_scis',`
165 dnl OBJNAME-EXCLUDING-SCIS HALF-LENGTH HALF-SPACING HALF-ANG MIN-R
166  defpart scis_$1
167   abs bl 200 200 0
168   rel bl m $2 $3
169   rel m br -$2 $3
170   extend bl ml len $2
171   extend ml tl len $2
172   extend br mr len $2
173   extend mr tr len $2
174   layer s
175   rel m mxl 0 0 $4
176   rel m mxr 0 0 -$4
177   layer =
178   join bl mxr $5
179   join mxr tr $5
180   join br mxl $5
181   join mxl tl $5
182  enddef
183 ')
184
185 def_scis(`pecof', 135.42, 13.5,  10, 315)
186 def_scis(`shino', 154,    13.5, 9.5, 315)
187
188 define(`tt_do_circle',`
189  layer s
190  rel mid forcirc0$2 0 $1 0
191  rel mid forcirc1$2 0 -$1 180
192  layer l
193  join forcirc0$2 forcirc1$2 0
194  join forcirc1$2 forcirc0$2 0
195  layer =
196 ')
197
198 defpart tt_peco
199  layer =
200  abs mid 200 200 0
201  extend mid out len 80
202  extend -mid -in len 80
203
204  tt_do_circle(80, `')
205 enddef
206
207 define(`tt_atlas_out',`
208  layer s
209  rel mid mid$1 0 0 $1
210  layer =
211  rel mid$1 out$1 109 0
212 ')
213
214 defpart tt_atlas
215  layer =
216  abs mid 200 200 0
217  extend mid out len 109
218  extend -mid -in len 109
219
220  tt_atlas_out(`0')
221  tt_atlas_out(`15')
222  tt_atlas_out(`30')
223  tt_atlas_out(`45')
224  tt_atlas_out(`60')
225  tt_atlas_out(`75')
226  tt_atlas_out(`90')
227  tt_atlas_out(`105')
228  tt_atlas_out(`120')
229  tt_atlas_out(`135')
230  tt_atlas_out(`150')
231  tt_atlas_out(`165')
232  tt_atlas_out(`180')
233  tt_atlas_out(`195')
234  tt_atlas_out(`210')
235  tt_atlas_out(`225')
236  tt_atlas_out(`240')
237  tt_atlas_out(`255')
238  tt_atlas_out(`270')
239  tt_atlas_out(`285')
240  tt_atlas_out(`300')
241  tt_atlas_out(`315')
242  tt_atlas_out(`330')
243  tt_atlas_out(`345')
244
245  tt_do_circle(95.25, i)
246  tt_do_circle(109, `')
247 enddef
248
249 defpart tt_atlas_motor
250  abs cout 200 200 0
251  layer p
252  rel cout bl -40 -40
253  rel cout br -40  40
254  extend bl tl len 89
255  extend br tr len 89
256  join tl -tr 0.1
257 enddef