summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/circuit-macros/examples/Plate.m4
blob: b3a08a243959b2a7b27061a13e1606f58462e0f5 (plain)
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
.PS
# Plate.m4
# ASME_Y14-5.m4
# https://en.wikipedia.org/wiki/Geometric_dimensioning_and_tolerancing
# See the ASME Y14.5 standard, Figure 6-30. 
scale = 100/3
cct_init
ifdef(`ASME_Y14-5_',,
 `sinclude(ASME_Y14-5.m4def)
  sinclude(../ASME_Y14-5.m4def) ')
ifsvg(`svg_font(sans-serif,10bp__)',
`textht = 10bp__*2/3
 ifpostscript(,latexcommand({\sf\small))')
# ASME Y14.5 specs:
 arrowht = textht*0.8
 arrowwid = textht*0.6
 maxpswid = 12

#                           Diameters
 d1 = (20.13+20.00)/2
 d2 = 31.7
 d3 = 36
 d4 = (40.60+40.45)/2
 d5 = 57
 d6 = 86
 d7 = 100
 d8 = 8.0
 adj = 1.5

Section: [
 Orig: (0,0)
 T0: (0,-d7/2)
 T1: (6,-d5/2)
 T2: (15.5,-d3/2)
 T3: (22,-d3/2-adj)
 T4: (32,-d2/2)
 T5: (41.3,0)
 T6: (9.5,-d4/2)
# for_(0,5,1,`"m4x" at T`'m4x')
#                           Hatching
 H: hatchbox(invis ht d7 wid 41.3,2,thick 0.4,-45) with .w at Orig
 box invis fill_(1) wid T5.x-T1.x ht T1.y-H.s.y with .se at H.se
 box same with .ne at H.ne
 box invis fill_(1) wid T3.x-T2.x ht T2.y-T1.y with .nw at T2
 box same with .sw at (T2.x,-T2.y)
 box invis fill_(1) wid T4.x-T3.x ht T3.y-T1.y with .nw at T3
 box same with .sw at (T3.x,-T3.y)
 box invis fill_(1) wid T5.x-T4.x ht T4.y-T1.y with .nw at T4
 box same with .sw at (T4.x,-T4.y)
#                           Section outline lower
 line from (0,-d4/2) to T0 then right T1.x-T0.x then up 1
 arcto(T1,(T2,T1),1)
 line to (T2,T1) then up 1
 arcto(T2,(T3,T2),1)
 arcto((T3,T2),T3,0.5)
 arcto(T3,(T4,T3),0.5)
 arcto((T4,T3),T4,1)
 arcto(T4,(T5,T4),1)
 line to (T5,T4) then to (T5.x,-T4.y) then left 1
#                           Section outline upper
 line from (0,d4/2) to (0,-T0.y) then right T1.x-T0.x then down 1
 arcto((T1.x,-T1.y),(T2.x,-T1.y),1)
 line to (T2.x,-T1.y) then down 1
 arcto((T2.x,-T2.y),(T3.x,-T2.y),1)
 arcto((T3.x,-T2.y),(T3.x,-T3.y),0.5)
 arcto((T3.x,-T3.y),(T4.x,-T3.y),0.5)
 arcto((T4.x,-T3.y),(T4.x,-T4.y),1)
 arcto((T4.x,-T4.y),(T5.x,-T4.y),1)
 line to (T5.x,-T4.y)

 box wid 6 ht d8 fill_(1) with .w at (0,d6/2)
 box wid 6 ht d8 fill_(1) with .w at (0,-d6/2)
 box invis wid T6.x ht d4 fill_(1) with .w at Orig
 box wid T5.x-T6.x ht d1 fill_(1) with .e at T5

 line from (Orig.x,-T6.y) to (Orig.x,T6.y)
 arcto(T6,(T6,Orig),1)
 arcto((T6.x,-T6.y),(0,-T6.y),1)
 line to (0,-T6.y) 

define(`dialabel',
`[tmpthick = linethick; linethick_(1)
  [Y14_dia_]; [$1 wid ifelse(`$2',,textht,`$2')] with .w at last [].e+(0.5,0)
  linethick_(tmpthick)]')

thinlines_
 dimension_(from (0,T6.y) to (0,-T6.y),40,dialabel("40.60" "40.45",12),textht*3)
 line up 4 from AE_dimen_.end
 Y14_frame(Y14_per_,Y14_dia_;"0";"(M)","A") with .sw at Here
 Y14_frame("B") with .s at last [].n+(0,6)
thicklines_(1)
 datumarrow(from last [].s to 2nd last [].n)
thinlines_
 dimension_(from T2 to (T2.x,-T2.y),30,
   dialabel("35.5" "36.0",12),textht*3)
 dimension_(from T0 to T0+(T1.x,0),-8," 6.1 " " 5.9 ",textht)
 dimension_(from S_dimen_.end to S_dimen_.end+(T2.x,0),-9,
   "15.4" "15.6",textht*4)
   line from E_dimen_.start to (T2,T1) chop 0 chop 1
 dimension_(from S_dimen_.end to S_dimen_.end+(T3.x,0),-9,
   "21.9" "22.1",textht*4)
   line from E_dimen_.start to T3 chop 0 chop 1
 dimension_(from S_dimen_.end to S_dimen_.end+(T4.x,0),-9,
   "31.9" "32.1",textht*4)
   line from E_dimen_.start to (T4,T3) chop 0 chop 1
 dimension_(from S_dimen_.end to S_dimen_.end+(T5.x,0),-9,
   "41.2" "41.4",textht*4)
   line from E_dimen_.start to (T5,T4) chop 0 chop 1
   line from S_dimen_.start to T0 chop 0 chop 1
 dimension_(from (0,d7/2) right T6.x,8,"9.6" "9.4",3*textht)
   line from E_dimen_.start to (T6.x,d4/2) chop 0 chop 1
 ctrline(from (-3,0) to T5+(3,0),T5.x/2)
 ctrline(from (-3,d6/2) right T1.x+6)
 ctrline(from (-3,-d6/2) right T1.x+6)
 dimension_(from T5-(0,d1/2) to T5+(0,d1/2),-14,
  dialabel("20.13" "20.00",4*textht),textht*3)
 dimension_(from T5-(0,d2/2) to T5+(0,d2/2),-35,
  dialabel("31.8" "31.6",3*textht),textht*3)
 arrow <- from (T5.x+6,d1/2) by (Rect_(20,75)) then right 6
 Y14_frame(Y14_cir_,"0.06" wid 3*textht,"A","B") with .w at Here
 Y14_frame("C") with .n at last [].se+(-6,-8)
thicklines_(1)
 datumarrow(from last [].n up 8)
thinlines_
 arrow <- from (T5.x+6,-d2/2) by (Rect_(10,-75)) then right 4
 Y14_frame(Y14_cir_,"0.1" wid textht*2,"C") with .w at Here
 arrow <- from ((T3.x+T4.x)/2,d3/2+adj) by (Rect_(30,75)) then right 4
 "M42 X 1.5 - 6g" wid 9*textht ljust
 Y14_frame(Y14_pos_,Y14_dia_;"0.1" wid textht*2;"(M)","C";"(M)") \
   with .nw at last "".sw+(0,-2)
 line from (T2.x,-T1.y) up 25 chop 1 chop 0
 Y14_frame(Y14_par_,"0.06" wid 3*textht,"A") with .sw at Here
 Y14_frame(Y14_sur_,"  0.1 " wid 3*textht,"A") with .sw at last [].nw
 arrow <- from (0,-d6/2+10) left 13
 Y14_frame(Y14_fla_,"0.02" wid 4*textht) with .e at Here
 Y14_frame("A") with .n at last [].s+(0,-6)
 datumarrow(from last [].n up 6)
 ]

Topview:[
 C: circle diam d7
 for i=0 to 7 do { circle diam d8 at C+(Rect_(d6/2,i/8*360)) }
 C5: circle diam d5 at C
 C4: circle diam d3+2*adj at C
 C3: circle dashed diam d3 at C
 C2: circle diam d2 at C
 C1: circle diam d1 at C

thinlines_
 dimension_(from C.w-(0,10) to C.e-(0,10),-C.rad-15,
   dialabel("100" "99",textht*3),textht*5)
 dimension_(from C5.w-(0,5) to C5.e-(0,5),-C.rad-5,
   dialabel("57.2" "56.8",textht*4),textht*5)
 arrow <-> from C+(Rect_(d6/2,-120)) to C+(Rect_(d6/2,60))
 line from last arrow.end to C+(Rect_(d7/2+6,60)) then right 4
   dialabel("86.2" "85.8",textht*4) with .w at Here+(1,0)
 ctrline(from (C.x-(d6-d7/2),C.y) to (C.x+(d6-d7/2),C.y))
 ctrline(from (C.x,C.y-d6/2+d8/2) to (C.x,C.y+d6/2-d8/2))
 for_(0,315,45,`ctrarcr(C,d6/2,(m4x-22.5)*dtor_,(m4x+22.5)*dtor_)
  ctrline(from C+(Rect_(d6-d7/2,m4x)) to C+(Rect_(d7/2,m4x))) ')
 arcdimension_(from C+(0,d7/2) to C+(Rect_(d7/2,135)) with .c at C,
   8,"8 X 45`'iflatex($^\circ$)" wid textht*3.5,15,1)
 ifsvg("svg_deg" wid textht*2/3 with .w at last "".e)
 move to C+(0,d6/2)
 arrow <- from Here+(Rect_(8/2,75)) to Here+(Rect_(25,75)) then right_ 3
 "8 X" wid 3*textht ljust
 linethick_(1); [Y14_dia_] with .w at last "".e+(1,0)
 "7.9 - 8.1" wid 8*textht ljust
 Y14_frame(Y14_pos_,Y14_dia_;"0.14" wid 3*textht;"(M)","A","C") \
   with .nw at 2nd last "".sw+(0,-2)

 ] with .C at Section.Orig+(4.5*scale,0)


ifpostscript(,latexcommand(}%))
ifsvg(command "</g>")
.PE