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