1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
.PS
# Chuck.m4
gen_init s_init(Views) sinclude(tst.dim)
#
#################################################################
divert(-1)
`r_box(angle,pos,string)
Rotated text on a white background
(requires pstricks)'
define(`r_box',
`ifpstricks(`M4tmp: ifelse(`$2',,Here,`$2')
command sprintf("\rput{%g}(%g,%g){",`$1',crl(M4tmp.x),crl(M4tmp.y))
f_box(`$3') at Orig
command "}%"')')
define(`crl',`int(`($1)'/scale*1000000)/1000000')
`r_dimen(linespec,offset,label,tic offset,<->,pos)
dimension_ with rotated text on white background'
define(`r_dimen',
`M4tmp: dimension_(`$1',`$2',,,`$4',`$5')
r_box(rp_ang*rtod_,ifelse(`$6',,M4tmp+vec_(0,`$2'),`$6'),`$3')')
`ctrline(linespec,len)
Centerline'
define(`cdashl',0.1*scale)
define(`cgapl',0.03*scale)
define(`ctrline',`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1'))
define(`m4h',ifelse(`$2',,1*scale,`$2'))dnl
m4n = int(rp_len/2/(m4h))*2+1
for i=1 to m4n do {
line to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0)
move to rvec_(cgapl,0); line to rvec_(cdashl,0); move to rvec_(cgapl,0)
line thick dimensionth to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0) } ')
`ctrarcr(pos,radius,startang,endang,len)
Arc cr centerline'
define(`ctrarcr',`dnl
define(`m5h',ifelse(`$5',,1*scale,`$5'))dnl
rp_len = abs((`$2')*(`$4'-(`$3')))
m5n = int(rp_len/2/(m5h))*2+1
m5a = (rp_len/m5n/2-cdashl/2-cgapl)/(`$2')
m5s = cdashl/(`$2')
m5sa = `$3'
for m4irr=1 to m5n do {
arc from `$1'+(rect_(`$2',m5sa)) to `$1'+(rect_(`$2',m5sa+m5a)) \
with .c at `$1'
m5sa = m5sa+m5a+cgapl/(`$2')
arc from `$1'+(rect_(`$2',m5sa)) to `$1'+(rect_(`$2',m5sa+m5s)) \
with .c at `$1'
m5sa = m5sa+m5s+cgapl/(`$2')
arc from `$1'+(rect_(`$2',m5sa)) to `$1'+(rect_(`$2',m5sa+m5a)) \
with .c at `$1'
m5sa = m5sa+m5a
} ')
divert(0)dnl
#################################################################
scale = 25.4*2
tic = 3.6bp__
command "{\sf"
define(`visible_thick',`linethick_(visibleth)')
define(`hidden_thick',`linethick_(hiddenth)')
define(`dimension_thick',`linethick_(dimensionth)
arrowwid = 1.5*arrowwid; arrowht = 1.5*arrowht; ')
d1 = 230
d2 = 204
d3 = 140
visibleth = 1.2
dimensionth = 0.4
hiddenth = dimensionth
Orig: Here
visible_thick
D3: circle diam d3 at Orig
D2: circle diam d2 at Orig
rr = d1/2
r = 40
h = 110/2
thet = asin((h+r)/(rr+r))
X1: rect_(rr,thet)
P1: rect_(rr+r,thet)
dimension_thick
cross(at (P1.x,-P1.y))
cross(at (-P1.x,P1.y))
# Top outer visible line
visible_thick
# top arcs
arc ccw from (-P1.x,h) to (-X1.x,X1.y) with .c at (-P1.x,P1.y)
arc cw to X1 with .c at Orig
arc ccw from X1 to (P1.x,h) with .c at P1
# right end
line from (P1.x,h) to (305/2,h) then to (305/2,32/2) then left 40-3
arc ccw rad 3
line down 32-2*3
arc ccw rad 3
dimension_thick {
r_dimen(up 32 with .c at (305/2-5,0),0,32)
arrow <- up 8 right 8 then right 4 from last arc.sw
"3$\,$R" ljust
r_dimen(up h*2 at (305/2,0),-10,110)
}; visible_thick
line right 40-3 then to (305/2,-h) then to (P1.x,-h)
# bottom arcs
arc ccw to (X1.x,-X1.y) with .c at P1.x,-P1.y
arc cw to (-X1.x,-X1.y) with .c at Orig
arc ccw to (-P1.x,-h) with .c at (-P1.x,-P1.y)
# left end
line from (-P1.x,-h) to (-305/2,-h) then to (-305/2,-25/2) then right 25
down; arc ccw rad 3
line right 40-25-2*3
arc ccw rad 3
line up 25
{R: line invis down 10 at (2nd last line,last line) }
arc ccw rad 3
line left 40-25-2*3
arc ccw rad 3
line to (-305/2,25/2) then to (-305/2,h) then to (-P1.x,h)
dimension_thick
# centre
ctrline(right 305-30 with .c at Orig,60)
ctrline(up d1+10 with .c at Orig,)
{BX: box invis ht 25+2*3 wid 40-25 rad 3 with .w at (-305/2+25,0)}
Q: line invis from BX.n to BX.s; R: line invis from BX.se up 10 left 10
X: Intersect_(Q,R)
line <-> from BX.se to X then to (X.x,-X.y) then to BX.nw
r_box(90,BX,```3$\,$R''')
# Drill centres
D[1]: 35,sqrt(85^2-35^2)
D[2]: -D[1].x,D[1].y
D[3]: -D[1].x,-D[1].y
D[4]: D[1].x,-D[1].y
ctrline(from D[3] to D[1] chop 15)
ctrline(to rvec_(2*15,0))
ctrline(from D[3]+vec_(-15,0) to D[3]+vec_(15,0))
ctrline(from D[2] to D[4] chop 15)
ctrline(to rvec_(2*15,0))
ctrline(from D[2]+vec_(-15,0) to D[2]+vec_(15,0))
visible_thick
for i=1 to 4 do {
circle diam 16 at D[i]
for j = 0 to 7 do { arcr(D[i],23/2,j/8*twopi_,(j+3/4)/8*twopi_) ccw }
}
hidden_thick
for s=-1 to 1 by 2 do {
line dashed from (-305/2,s*h) to (305/2,s*h)
line dashed from (-305/2,s*30.6) to (305/2,s*30.6)
line dashed from (-305/2,s*21.1) to (305/2,s*21.1)
line dashed from (-305/2+25+2,s*21.1) to (305/2,s*21.1)
line dashed dashwid/2 from (-305/2+25,s*25/2) down -s*(40/2-25/2-2);
if s<0 then { arc dashed dashwid/4 ccw rad 2 } \
else { up; arc dashed dashwid/4 cw rad 2 }
line dashed to ((305/2,0),Here)
for k = -1 to 1 by 2 do {
move to (k*305/2,s*(30.6+10))
{ dashline(from Here+(0,s*9.5/2) right -k*16,,dashwid/2)
dashline(right -k*9.5/2/2 up -s*9.5/2,,dashwid/3)
dashline(left -k*9.5/2/2 up -s*9.5/2,,dashwid/3)
dashline(left -k*16,,dashwid/2)
dashline(from Here+(-k*16,0) up s*9.5,,dashwid/2.5) }
{ dashline(from Here+(0,s*11/2) right -k*36.5,,dashwid/2)
dashline(right -k*11/2/2 up -s*11/2,,dashwid/3)
dashline(left -k*11/2/2 up -s*11/2,,dashwid/3)
dashline(left -k*36.5,,dashwid/2)
dashline(from Here+(-k*36.5,0) up s*11,,dashwid/2.5) }
{ dashline(from Here+(0,s*13/2) right -k*32,,dashwid/2)
dashline(down s*13,,dashwid/2)
dashline(left -k*32,,dashwid/2) }
ctrline(right -k*20 chop -3 chop 0); ctrline(right -k*20 chop 0 chop -3)
}
}
dimension_thick
# bottom
dimension_(from (-305/2,-h) to (305/2,-h),-(rr*1.1-h),"305",20pt__)
# outer radii
r_dimen(from (-P1.x,P1.y) down 40*cosd(30) right 40*sind(30),0,40,,->)
r_dimen(from (P1.x,-P1.y)+(Rect_(40,120)) \
down 40*cosd(30) right 40*sind(30),0,40,,<-)
# main diameter
r_dimen(from (Rect_(rr,180+50)) to (Rect_(rr,50)),,230,,,(Rect_(50,50)))
# inner circles
r_dimen(from (Rect_(d2/2,180+25)) to (Rect_(d2/2,25)),,204,,,(Rect_(25,25)))
r_dimen(from (Rect_(d3/2,180-12)) to (Rect_(d3/2,-12)),,140,,,(Rect_(25,-12)))
# bolt hole placement diameter
r_dimen(from Orig to (Rect_(85,-43)),,``85$\,$R'',,->,(Rect_(20,-43)))
# left slot
r_dimen(from (-305/2+6,-25/2) up 25,0,25)
r_dimen(from (-305/2,-26) right 40,0,40)
line from last line.end to (last line.end.x,BX.s.y) chop -tic chop 0
r_dimen(from (-305/2,26) right 25,0,25)
line from last line.end to (last line.end.x,BX.n.y) chop -tic chop 0
# right slot
r_dimen(from (305/2-40,-32/2-10) right 40,0,40)
line from (305/2-40,-32/2) down 10+tic
# drill-holes
for i=1 to 4 do {
ctrarcr(Orig,85,atan2(D[i].y,D[i].x)-10*dtor_,atan2(D[i].y,D[i].x)+10*dtor_)
}
ctrarcr(Orig,85,atan2(D[4].y,D[4].x)+10*dtor_,atan2(D[4].y,D[4].x)+25*dtor_)
ctrline(up 30 at D[3])
ctrline(up 30 at D[4])
r_dimen(from D[3]+(0,-14) right 35,0,35)
r_dimen(from (0,D[3].y-14) right 35,0,35)
command "}%"
.PE
|