diff options
Diffstat (limited to 'mechanical-specifications.typ')
| -rw-r--r-- | mechanical-specifications.typ | 3264 |
1 files changed, 58 insertions, 3206 deletions
diff --git a/mechanical-specifications.typ b/mechanical-specifications.typ index de765f6..6e53a87 100644 --- a/mechanical-specifications.typ +++ b/mechanical-specifications.typ @@ -23,268 +23,13 @@ individual steel cassettes. We chose steel instead of aluminum, as it has better shielding properties, especially in terms of magnetic shielding. -#figure( - table( - columns: 2, - table.header([Parameter], [Value]), - [Material], [DC01 cold-rolled steel (EN 10130)], - [Thickness], [$qty(1.2, "mm")$], - [Finish], [Matte black powder coard (RAL 9005), all surfaces], - ), - caption: [Cassette construction parameters], -) <table-cassette-construction-parameters> +#include "tables/cassette-construction-parameters.typ" ==== External dimensions <cassette-external-dimensions> -#figure( - cetz.canvas({ - import cetz.draw: * - - // Scale factor: 1 mm = 0.06 drawing units - let s = 0.06 - - let h-panel = 177.8 * s // 6.223 - let h-body = 165.1 * s // 5.7785 - let h-lip = 6.35 * s // 0.22225 - let w-panel = 38.0 * s // 1.33 - let d-body = 152.4 * s // 5.334 - let t-panel = 3.0 * s // 0.105 (exaggerated slightly for visual clarity) - - let y-center = 0 - let y-top-panel = h-panel / 2 - let y-bot-panel = -h-panel / 2 - let y-top-body = h-body / 2 - let y-bot-body = -h-body / 2 - - // --- FRONT ELEVATION --- - let x-front-left = 0 - let x-front-right = w-panel - let x-front-mid = w-panel / 2 - - // View Title - content((x-front-mid, y-top-panel + 0.8), text( - size: 9pt, - weight: "bold", - )[FRONT ELEVATION]) - - // Front Panel Outline - rect( - (x-front-left, y-bot-panel), - (x-front-right, y-top-panel), - fill: luma(250), - stroke: 1.2pt + black, - ) - - // Hidden Body Transition Lines (Dashed) - line( - (x-front-left, y-top-body), - (x-front-right, y-top-body), - stroke: (paint: luma(130), thickness: 0.7pt, dash: "dashed"), - ) - line( - (x-front-left, y-bot-body), - (x-front-right, y-bot-body), - stroke: (paint: luma(130), thickness: 0.7pt, dash: "dashed"), - ) - - // Panel Mounting Screw Holes (Top and Bottom Lips) - circle( - (x-front-mid, y-top-panel - h-lip / 2), - radius: 0.08, - fill: white, - stroke: 0.8pt + black, - ) - circle( - (x-front-mid, y-bot-panel + h-lip / 2), - radius: 0.08, - fill: white, - stroke: 0.8pt + black, - ) - - // Dimension: Panel Width (38.0 mm) - line( - (x-front-left, y-bot-panel), - (x-front-left, y-bot-panel - 0.6), - stroke: 0.5pt + luma(120), - ) - line( - (x-front-right, y-bot-panel), - (x-front-right, y-bot-panel - 0.6), - stroke: 0.5pt + luma(120), - ) - line( - (x-front-left, y-bot-panel - 0.6), - (x-front-right, y-bot-panel - 0.6), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.12, - stroke: 0.7pt + black, - ) - content((x-front-mid, y-bot-panel - 0.9), text( - size: 7.5pt, - )[$qty(38.0, "mm")$]) - - // Dimension: Panel Height (177.8 mm / 4U) - line( - (x-front-left, y-top-panel), - (x-front-left - 0.6, y-top-panel), - stroke: 0.5pt + luma(120), - ) - line( - (x-front-left, y-bot-panel), - (x-front-left - 0.6, y-bot-panel), - stroke: 0.5pt + luma(120), - ) - line( - (x-front-left - 0.6, y-bot-panel), - (x-front-left - 0.6, y-top-panel), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.12, - stroke: 0.7pt + black, - ) - content( - (x-front-left - 0.95, y-center), - text(size: 7.5pt)[$qty(177.8, "mm")$ ($qty(4, "U")$)], - angle: 90deg, - ) - - // --- SIDE ELEVATION --- - let x-side-start = 2.8 - let x-panel-back = x-side-start + t-panel - let x-body-rear = x-panel-back + d-body - let x-side-mid = (x-side-start + x-body-rear) / 2 - - // View Title - content((x-side-mid, y-top-panel + 0.8), text( - size: 9pt, - weight: "bold", - )[SIDE ELEVATION]) - - // Cassette Steel Body - rect( - (x-panel-back, y-bot-body), - (x-body-rear, y-top-body), - fill: luma(235), - stroke: 1.2pt + black, - ) - - // Front Panel Plate Attached to Body - rect( - (x-side-start, y-bot-panel), - (x-panel-back, y-top-panel), - fill: luma(210), - stroke: 1.2pt + black, - ) - - // Rear DB-25 Connector Standoff / Bezel Projection - rect( - (x-body-rear, y-center - 0.6), - (x-body-rear + 0.25, y-center + 0.6), - fill: luma(240), - stroke: 0.8pt + black, - ) - - // Dimension: Depth (152.4 mm) - line( - (x-panel-back, y-top-panel), - (x-panel-back, y-top-panel + 0.2), - stroke: 0.5pt + luma(120), - ) - line( - (x-body-rear, y-top-panel - 0.4), - (x-body-rear, y-top-panel + 0.2), - stroke: 0.5pt + luma(120), - ) - line( - (x-panel-back, y-top-panel + 0.2), - (x-body-rear, y-top-panel + 0.2), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.12, - stroke: 0.7pt + black, - ) - content(((x-panel-back + x-body-rear) / 2, y-top-panel + 0.4), text( - size: 7.5pt, - )[$qty(152.4, "mm")$]) - - // Dimension: Body Height (165.1 mm) - line( - (x-body-rear, y-top-body), - (x-body-rear + 0.6, y-top-body), - stroke: 0.5pt + luma(120), - ) - line( - (x-body-rear, y-bot-body), - (x-body-rear + 0.6, y-bot-body), - stroke: 0.5pt + luma(120), - ) - line( - (x-body-rear + 0.6, y-bot-body), - (x-body-rear + 0.6, y-top-body), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.12, - stroke: 0.7pt + black, - ) - content( - (x-body-rear + 0.9, y-center), - text(size: 7.5pt)[$qty(165.1, "mm")$], - angle: -90deg, - ) - - // Dimension: Top Lip Height (6.35 mm) - line( - (x-panel-back, y-top-panel), - (x-body-rear + 1.8, y-top-panel), - stroke: 0.4pt + luma(160), - ) - line( - (x-panel-back, y-top-body), - (x-body-rear + 1.8, y-top-body), - stroke: 0.4pt + luma(160), - ) - line( - (x-body-rear + 1.65, y-top-body), - (x-body-rear + 1.65, y-top-panel), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.7pt + black, - ) - content( - (x-body-rear + 2.2, (y-top-panel + y-top-body) / 2), - text(size: 7.0pt)[$qty(6.35, "mm")$], - ) - }), - caption: [Cassette enclosure orthographic projections (front and side elevation) detailing external physical dimensions and lip offsets], -) <figure-cassette-external-dimensions-diagram> - -#figure( - table( - columns: 4, - table.header([Dimension], [Value], [Tolerance], [Note]), - [Panel height], - [$qty(177.8, "mm")$ ($qty(4, "U"), qty(7, "inch")$)], - [$plus.minus qty(0.1, "mm")$], - [Full rack unit height], - - [Grid pitch], - [$qty(38.1, "mm")$ ($qty(1.5, "inch")$)], - [N/A], - [Theoretical center to center spacing. Two columns of banana jacks - ($qty(0.75, "inch")$ grid)], - - [Panel Width], - [$qty(38.0, "mm")$ ($qty(1.5, "inch")$)], - [$+0.0 "/" -0.1 "mm"$], - [Undersized to accomodate paint thickness and thermal expansion], - - [Body height], [$qty(165.1, "mm")$, ($qty(6.5, "inch")$)], [$plus.minus qty(0.1, "mm")$], [Fits between rails], - - [Body width], [$qty(38.0, "mm")$ ($qty(1.5, "inch")$)], [$+0.0 "/" -0.1 "mm"$], [Same as panel], - - [Depth], [$qty(152.4, "mm")$ ($qty(6, "inch")$)], [$plus.minus qty(0.2, "mm")$], [Front to rear], - - [Lip height], [$qty(6.35, "mm")$ ($qty(0.25, "inch")$)], [N/A], [Top and bottom], - ), - caption: [Cassette external dimensions], -) <table-cassette-external-dimensions> +#include "diagrams/cassette-external-dimensions.typ" + +#include "tables/cassette-external-dimensions.typ" The panel lips extend above and below the cassette body to fill the full $qty(4, "U")$ rack opening while the body fits between the chassis rails. @@ -296,425 +41,7 @@ interlocking U-shaped steel channel: ===== L-channel (chassis) <l-channel-chassis> -#figure( - cetz.canvas({ - import cetz.draw: * - - // Scale factor: 1 mm = 0.030 drawing units - let s = 0.030 - - let h = 165.1 * s // 4.953 - let d = 152.4 * s // 4.572 - let w = 35.7 * s // 1.071 - let f = 8.0 * s // 0.240 (8 mm flange width) - - let db25-y = 55.0 * s // 1.650 - let bnc-y = 130.0 * s // 3.900 - let db25-x = 17.85 * s // 0.5355 (centered in 35.7 mm width) - - let y-bot = 0 - let y-top = h - - // ========================================== - // 1. LEFT ELEVATION (Left Wall: 152.4 x 165.1 mm) - // ========================================== - let x-left-start = 0 - let x-left-end = x-left-start + d - let x-left-mid = (x-left-start + x-left-end) / 2 - - // View Title - content((x-left-mid, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[LEFT ELEVATION]) - - // Main Left Wall Sheet - rect( - (x-left-start, y-bot), - (x-left-end, y-top), - fill: luma(245), - stroke: 1.2pt + black, - ) - - // Folded Flanges (Top, Bottom, Front folded 90 deg inward - shown as dashed lines) - // Top Flange - line( - (x-left-start, y-top - f), - (x-left-end, y-top - f), - stroke: (paint: luma(120), thickness: 0.7pt, dash: "dashed"), - ) - // Bottom Flange - line( - (x-left-start, y-bot + f), - (x-left-end, y-bot + f), - stroke: (paint: luma(120), thickness: 0.7pt, dash: "dashed"), - ) - // Front Flange (at x-left-start) - line( - (x-left-start + f, y-bot), - (x-left-start + f, y-top), - stroke: (paint: luma(120), thickness: 0.7pt, dash: "dashed"), - ) - - // PEM Nut Press-Fit Inserts on Flanges (Representative circles) - circle( - (x-left-start + f / 2, y-bot + 12 * s), - radius: 0.06, - fill: white, - stroke: 0.6pt + black, - ) - circle( - (x-left-start + f / 2, y-top - 12 * s), - radius: 0.06, - fill: white, - stroke: 0.6pt + black, - ) - circle( - (x-left-mid, y-bot + f / 2), - radius: 0.06, - fill: white, - stroke: 0.6pt + black, - ) - circle( - (x-left-mid, y-top - f / 2), - radius: 0.06, - fill: white, - stroke: 0.6pt + black, - ) - - // Dimensions: Depth & Height - line( - (x-left-start, y-bot), - (x-left-start, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-left-end, y-bot), - (x-left-end, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-left-start, y-bot - 0.6), - (x-left-end, y-bot - 0.6), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content((x-left-mid, y-bot - 0.9), text(size: 7pt)[$qty(152.4, "mm")$]) - - line( - (x-left-start, y-bot), - (x-left-start - 0.6, y-bot), - stroke: 0.4pt + luma(140), - ) - line( - (x-left-start, y-top), - (x-left-start - 0.6, y-top), - stroke: 0.4pt + luma(140), - ) - line( - (x-left-start - 0.6, y-bot), - (x-left-start - 0.6, y-top), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content( - (x-left-start - 0.9, (y-bot + y-top) / 2), - text(size: 7pt)[$qty(165.1, "mm")$], - angle: 90deg, - ) - - // ========================================== - // 2. REAR ELEVATION (Rear Closure: 35.7 x 165.1 mm) - // ========================================== - let x-rear-start = 5.8 - let x-rear-end = x-rear-start + w - let x-rear-mid = (x-rear-start + x-rear-end) / 2 - - // View Title - content((x-rear-mid, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[REAR ELEVATION]) - - // Main Rear Closure Plate - rect( - (x-rear-start, y-bot), - (x-rear-end, y-top), - fill: luma(235), - stroke: 1.2pt + black, - ) - - // Flanges (Top, Bottom, Right folded 90 deg inward) - line((x-rear-start, y-top - f), (x-rear-end, y-top - f), stroke: ( - paint: luma(120), - thickness: 0.7pt, - dash: "dashed", - )) - line((x-rear-start, y-bot + f), (x-rear-end, y-bot + f), stroke: ( - paint: luma(120), - thickness: 0.7pt, - dash: "dashed", - )) - line((x-rear-end - f, y-bot), (x-rear-end - f, y-top), stroke: ( - paint: luma(120), - thickness: 0.7pt, - dash: "dashed", - )) - - // DB-25 Cutout at Y = 55.0 mm (Centered) - let db25-w = 26.0 * s - let db25-h = 11.0 * s - rect( - (x-rear-start + db25-x - db25-w / 2, db25-y - db25-h / 2), - (x-rear-start + db25-x + db25-w / 2, db25-y + db25-h / 2), - fill: white, - stroke: 0.9pt + black, - ) - content((x-rear-start + db25-x, db25-y), text( - size: 5.5pt, - weight: "bold", - )[DB-25]) - - // BNC Cutout at Y = 130.0 mm (Centered, Facultative) - let bnc-r = 6.0 * s - circle( - (x-rear-start + db25-x, bnc-y), - radius: bnc-r, - fill: white, - stroke: 0.9pt + black, - ) - content((x-rear-start + db25-x, bnc-y), text( - size: 5pt, - weight: "bold", - )[BNC]) - - // Cutout Centerline Indicators & Heights - line((x-rear-start - 0.2, db25-y), (x-rear-end + 0.6, db25-y), stroke: ( - paint: luma(160), - thickness: 0.4pt, - dash: "dash-dotted", - )) - line((x-rear-start - 0.2, bnc-y), (x-rear-end + 0.6, bnc-y), stroke: ( - paint: luma(160), - thickness: 0.4pt, - dash: "dash-dotted", - )) - - // Width Dimension (35.7 mm) - line( - (x-rear-start, y-bot), - (x-rear-start, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-rear-end, y-bot), - (x-rear-end, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-rear-start, y-bot - 0.6), - (x-rear-end, y-bot - 0.6), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content((x-rear-mid, y-bot - 0.9), text(size: 7pt)[$qty(35.7, "mm")$]) - - // Height Dimensions: DB-25 (55 mm) & BNC (130 mm) - line( - (x-rear-end, y-bot), - (x-rear-end + 0.6, y-bot), - stroke: 0.4pt + luma(140), - ) - line( - (x-rear-end + 0.6, y-bot), - (x-rear-end + 0.6, db25-y), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content( - (x-rear-end + 0.9, db25-y / 2), - text(size: 6.5pt)[$qty(55.0, "mm")$], - angle: -90deg, - ) - - line( - (x-rear-end + 0.6, db25-y), - (x-rear-end + 0.6, bnc-y), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content( - (x-rear-end + 0.9, (db25-y + bnc-y) / 2), - text(size: 6.5pt)[$qty(130.0, "mm")$], - angle: -90deg, - ) - - // ========================================== - // 3. ISOMETRIC VIEW (3D Sheet Metal Structure) - // ========================================== - let iso-x0 = 12.5 - let iso-y0 = -1 - - // Helper function for isometric projection - // X = Width (0..35.7 mm), Y = Height (0..165.1 mm), Z = Depth (0..152.4 mm) - let p(x-mm, y-mm, z-mm) = { - let px = iso-x0 + (x-mm * 0.866 - z-mm * 0.866) * s - let py = iso-y0 + (y-mm + x-mm * 0.5 + z-mm * 0.5) * s - return (px, py) - } - - // View Title - content((iso-x0, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[ISOMETRIC VIEW]) - - // Left Wall Outer Face (Z=0..152.4, Y=0..165.1, X=0) - line( - p(0, 0, 0), - p(0, 0, 152.4), - p(0, 165.1, 152.4), - p(0, 165.1, 0), - close: true, - fill: luma(240), - stroke: 1pt + black, - ) - - // Rear Closure Outer Face (X=0..35.7, Y=0..165.1, Z=0) - line( - p(0, 0, 0), - p(35.7, 0, 0), - p(35.7, 165.1, 0), - p(0, 165.1, 0), - close: true, - fill: luma(225), - stroke: 1pt + black, - ) - - // Folded Inward Flanges (8 mm width) - // Left Wall Top Flange - line( - p(0, 165.1, 0), - p(0, 165.1, 152.4), - p(8.0, 165.1, 152.4), - p(8.0, 165.1, 0), - close: true, - fill: luma(210), - stroke: 0.8pt + black, - ) - - // Left Wall Front Flange - line( - p(0, 0, 152.4), - p(0, 165.1, 152.4), - p(8.0, 165.1, 152.4), - p(8.0, 0, 152.4), - close: true, - fill: luma(215), - stroke: 0.8pt + black, - ) - - // Rear Wall Bottom Flange - line( - p(0, 0, 0), - p(0, 0, 8.0), - p(35.7, 0, 8.0), - p(35.7, 0, 0.0), - close: true, - fill: luma(200), - stroke: 0.8pt + black, - ) - - // Left Wall Bottom Flange - line( - p(0, 0, 0), - p(0, 0, 152.4), - p(8.0, 0, 152.4), - p(8.0, 0, 8), - close: true, - fill: luma(210), - stroke: 0.8pt + black, - ) - - // Rear Wall Right Flange - line( - p(35.7, 0, 0), - p(35.7, 165.1, 0), - p(35.7, 165.1, 8.0), - p(35.7, 0, 8.0), - close: true, - fill: luma(200), - stroke: 0.8pt + black, - ) - - // Rear Wall Top Flange - line( - p(0, 165.1, 0), - p(0, 165.1, 8.0), - p(35.7, 165.1, 8.0), - p(35.7, 165.1, 0.0), - close: true, - fill: luma(200), - stroke: 0.8pt + black, - ) - - // DB-25 Cutout on Rear Face (Z=0) - let db-w2 = 13.0 - let db-h2 = 5.5 - line( - p(17.85 - db-w2, 55.0 - db-h2, 0), - p(17.85 + db-w2, 55.0 - db-h2, 0), - p(17.85 + db-w2, 55.0 + db-h2, 0), - p(17.85 - db-w2, 55.0 + db-h2, 0), - close: true, - fill: white, - stroke: 0.8pt + black, - ) - - // BNC Cutout on Rear Face (Z=0) - line( - p(17.85 - 4.5, 130.0 - 4.5, 0), - p(17.85 + 4.5, 130.0 - 4.5, 0), - p(17.85 + 4.5, 130.0 + 4.5, 0), - p(17.85 - 4.5, 130.0 + 4.5, 0), - close: true, - fill: white, - stroke: 0.8pt + black, - ) - - // PEM Nut Threaded Insert Points (Visual markers on top/front flanges) - circle(p(4.0, 165.1, 30.0), radius: 0.05, fill: black) - circle(p(4.0, 165.1, 120.0), radius: 0.05, fill: black) - circle(p(4.0, 0, 30.0), radius: 0.05, fill: black) - circle(p(4.0, 0, 120.0), radius: 0.05, fill: black) - circle(p(4.0, 30.0, 152.4), radius: 0.05, fill: black) - circle(p(4.0, 135.0, 152.4), radius: 0.05, fill: black) - circle(p(35.7 - 4.0, 30.0, 0), radius: 0.05, fill: black) - circle(p(35.7 - 4.0, 135.0, 0), radius: 0.05, fill: black) - circle(p(17.85, 165.1, 4.0), radius: 0.05, fill: black) - circle(p(17.85, 0, 4.0), radius: 0.05, fill: black) - - // Masked Unpainted Area Callout Annotation - line( - p(4.0, 165.1, 75.0), - (iso-x0 + 1.2, y-top), - stroke: 0.5pt + black, - ) - content( - (iso-x0 + 1.25, y-top - 0.3), - text(size: 6.5pt)[Unpainted EMI flange \ - contact area (PEM nuts \ - fitted)], - anchor: "south-west", - ) - }), - caption: [Cassette L-Channel structural spine technical drawings showing orthographic projections (left and rear elevations) and 3D isometric sheet metal form], -) <figure-cassette-lchannel-diagram> +#include "diagrams/l-channel-chassis.typ" / Role: Structural spine. Holds the PCB and Front Panel. / Geometry: @@ -743,200 +70,7 @@ interlocking U-shaped steel channel: ===== U-channel (cover) <u-channel-cover> -#figure( - cetz.canvas({ - import cetz.draw: * - - // Scale factor: 1 mm = 0.060 drawing units - let s = 0.060 - - let h = 165.1 * s // 4.953 mm - let d = 152.4 * s // 4.572 mm - let w = 35.7 * s // 1.071 mm - let f = 8.0 * s // 0.240 mm (8 mm flange overlap) - let t = 1.2 * s // Sheet metal thickness (1.2 mm) - - let y-bot = 0 - let y-top = h - - // ========================================== - // 1. FRONT ELEVATION (U-Profile End View: 35.7 x 165.1 mm) - // ========================================== - let x-front-start = 0 - let x-front-end = x-front-start + w - let x-front-mid = (x-front-start + x-front-end) / 2 - - // View Title - content((x-front-mid, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[FRONT ELEVATION]) - - // U-Channel Sheet Metal Cross-Section Outline - // Top Limb - rect( - (x-front-start, y-top - t), - (x-front-end, y-top), - fill: luma(210), - stroke: 0.8pt + black, - ) - // Right Side Wall - rect( - (x-front-end - t, y-bot), - (x-front-end, y-top), - fill: luma(230), - stroke: 0.8pt + black, - ) - // Bottom Limb - rect( - (x-front-start, y-bot), - (x-front-end, y-bot + t), - fill: luma(210), - stroke: 0.8pt + black, - ) - - // Inner Cavity Hatch/Indicator Line - line( - (x-front-start, y-bot + t), - (x-front-end - t, y-bot + t), - (x-front-end - t, y-top - t), - (x-front-start, y-top - t), - stroke: (paint: luma(140), thickness: 0.5pt, dash: "dotted"), - ) - - // Front Width Dimension (35.7 mm) - line( - (x-front-start, y-bot), - (x-front-start, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-end, y-bot), - (x-front-end, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-start, y-bot - 0.6), - (x-front-end, y-bot - 0.6), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content((x-front-mid, y-bot - 0.9), text(size: 7pt)[$qty(35.7, "mm")$]) - - // Front Height Dimension (165.1 mm) - line( - (x-front-start, y-bot), - (x-front-start - 0.6, y-bot), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-start, y-top), - (x-front-start - 0.6, y-top), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-start - 0.6, y-bot), - (x-front-start - 0.6, y-top), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content( - (x-front-start - 0.9, (y-bot + y-top) / 2), - text(size: 7pt)[$qty(165.1, "mm")$], - angle: 90deg, - ) - - // ========================================== - // 2. RIGHT ELEVATION (Inner Face View: 152.4 x 165.1 mm) - // ========================================== - let x-right-start = 3.5 - let x-right-end = x-right-start + d - let x-right-mid = (x-right-start + x-right-end) / 2 - - // View Title - content((x-right-mid, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[RIGHT ELEVATION (INNER FACE)]) - - // Main Right Wall Sheet Metal Surface - rect( - (x-right-start, y-bot), - (x-right-end, y-top), - fill: luma(245), - stroke: 1.2pt + black, - ) - - // Masked Unpainted Perimeter Area (8mm border where it mates with L-channel flanges) - rect( - (x-right-start + f, y-bot + f), - (x-right-end - f, y-top - f), - fill: luma(230), - stroke: (paint: luma(130), thickness: 0.7pt, dash: "dashed"), - ) - content( - (x-right-mid, (y-bot + y-top) / 2), - text(size: 7.5pt, fill: luma(100))[Painted Central Surface], - ) - - // Countersunk Through-Holes (Crosshair + concentric circles for 90-deg countersink) - let draw-csink(cx, cy) = { - circle((cx, cy), radius: 0.10, fill: white, stroke: 0.6pt + black) - circle((cx, cy), radius: 0.05, fill: luma(180), stroke: 0.4pt + black) - line((cx - 0.13, cy), (cx + 0.13, cy), stroke: 0.3pt + luma(120)) - line((cx, cy - 0.13), (cx, cy + 0.13), stroke: 0.3pt + luma(120)) - } - - // Top & Bottom Edge Countersunk Hole Pattern (matching top/bottom flanges) - draw-csink(x-right-start + 30.0 * s, y-top - f / 2) - draw-csink(x-right-start + 122.4 * s, y-top - f / 2) - draw-csink(x-right-start + 30.0 * s, y-bot + f / 2) - draw-csink(x-right-start + 122.4 * s, y-bot + f / 2) - - // Front & Rear Edge Countersunk Hole Pattern - draw-csink(x-right-start + f / 2, y-bot + 30.0 * s) - draw-csink(x-right-start + f / 2, y-top - 30.0 * s) - draw-csink(x-right-end - f / 2, y-bot + 30.0 * s) - draw-csink(x-right-end - f / 2, y-top - 30.0 * s) - - // Depth Dimension (152.4 mm) - line( - (x-right-start, y-bot), - (x-right-start, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-right-end, y-bot), - (x-right-end, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-right-start, y-bot - 0.6), - (x-right-end, y-bot - 0.6), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content((x-right-mid, y-bot - 0.9), text(size: 7pt)[$qty(152.4, "mm")$]) - - // Masked Border Callout Annotation - line( - (x-right-start + f / 2, y-top - 15.0 * s), - (x-right-start - 0.5, y-top - 1.0), - stroke: 0.5pt + black, - ) - content( - (x-right-start - 0.5, y-top), - text(size: 6.5pt)[Masked unpainted perimeter \ - (8 mm EMI contact area)], - anchor: "south-east", - angle: 90deg, - ) - }), - caption: [Cassette U-Channel cover technical drawings showing Front Elevation (profile) and Right Elevation (inner face showing masked unpainted EMI perimeter and countersunk hole grid)], -) <figure-cassette-uchannel-diagram> +#include "diagrams/u-channel-cover.typ" / Role: EMI Shielding and Protection. / Geometry: @@ -949,255 +83,8 @@ interlocking U-shaped steel channel: ===== Front panel <front-panel> -#figure( - cetz.canvas({ - import cetz.draw: * - - // Scale factor: 1 mm = 0.050 drawing units - let s = 0.050 - - let h-total = 177.8 * s // 8.890 mm - let h-body = 165.1 * s // 8.255 mm - let h-lip = 6.35 * s // 0.3175 mm (6.35 mm top/bottom lips) - let w = 38.0 * s // 1.900 mm (panel width) - let f = 8.0 * s // 0.400 mm (8 mm L-channel flange overlap) - - let y-bot = 0 - let y-lip-bot = h-lip - let y-lip-top = h-total - h-lip - let y-top = h-total - - // Helper: Draw M3 clearance hole (3.2 mm diameter) - let draw-m3-hole(cx, cy) = { - circle((cx, cy), radius: 1.6 * s, fill: white, stroke: 0.8pt + black) - line((cx - 2.5 * s, cy), (cx + 2.5 * s, cy), stroke: 0.3pt + luma(120)) - line((cx, cy - 2.5 * s), (cx, cy + 2.5 * s), stroke: 0.3pt + luma(120)) - } - - // Helper: Draw M3 countersunk hole (concentric circles + crosshair) - let draw-csink(cx, cy) = { - circle((cx, cy), radius: 3.0 * s, fill: white, stroke: 0.8pt + black) - circle((cx, cy), radius: 1.6 * s, fill: luma(200), stroke: 0.5pt + black) - line((cx - 4.0 * s, cy), (cx + 4.0 * s, cy), stroke: 0.3pt + luma(120)) - line((cx, cy - 4.0 * s), (cx, cy + 4.0 * s), stroke: 0.3pt + luma(120)) - } - - // ========================================== - // 1. FRONT ELEVATION (38.0 x 177.8 mm) - // ========================================== - let x-front-start = 0 - let x-front-end = x-front-start + w - let x-front-mid = (x-front-start + x-front-end) / 2 - - // View Title - content((x-front-mid, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[FRONT ELEVATION]) - - // Main Panel Outer Boundary - rect( - (x-front-start, y-bot), - (x-front-end, y-top), - fill: luma(245), - stroke: 1.2pt + black, - ) - - // Lip Limit Boundary Indicators (Dashed horizontal lines at 6.35 mm from top/bottom) - line( - (x-front-start, y-lip-bot), - (x-front-end, y-lip-bot), - stroke: (paint: luma(110), thickness: 0.7pt, dash: "dashed"), - ) - line( - (x-front-start, y-lip-top), - (x-front-end, y-lip-top), - stroke: (paint: luma(110), thickness: 0.7pt, dash: "dashed"), - ) - - // Centered M3 Panel Mounting Holes in Top and Bottom Lips - draw-m3-hole(x-front-mid, h-lip / 2) - draw-m3-hole(x-front-mid, h-total - h-lip / 2) - - // L-Channel Attachment Countersunk Holes (X = 4.0 mm, Y = 30.0 mm and 135.0 mm from body start) - let y-hole-lower = y-lip-bot + 30.0 * s - let y-hole-upper = y-lip-bot + 135.0 * s - let x-hole-lchannel = x-front-start + 4.0 * s - - draw-csink(x-hole-lchannel, y-hole-lower) - draw-csink(x-hole-lchannel, y-hole-upper) - - // Dimension: Panel Width (38.0 mm) - line( - (x-front-start, y-bot), - (x-front-start, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-end, y-bot), - (x-front-end, y-bot - 0.6), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-start, y-bot - 0.55), - (x-front-end, y-bot - 0.55), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content((x-front-mid, y-bot - 0.85), text(size: 7pt)[$qty(38.0, "mm")$]) - - // Dimension: Total Height (177.8 mm / 4U) - line( - (x-front-start, y-bot), - (x-front-start - 0.6, y-bot), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-start, y-top), - (x-front-start - 0.6, y-top), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-start - 0.55, y-bot), - (x-front-start - 0.55, y-top), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content( - (x-front-start - 0.85, (y-bot + y-top) / 2), - text(size: 7pt)[$qty(177.8, "mm")$ ($qty(4, "U")$)], - angle: 90deg, - ) - - // Dimension: Lip Height (6.35 mm) - line( - (x-front-end, y-top), - (x-front-end + 0.6, y-top), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-end, y-lip-top), - (x-front-end + 0.6, y-lip-top), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-end + 0.55, y-lip-top), - (x-front-end + 0.55, y-top), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.08, - stroke: 0.6pt + black, - ) - content( - (x-front-end + 1.2, (y-lip-top + y-top) / 2), - text(size: 6.5pt)[$qty(6.35, "mm")$], - ) - - // Dimension: Body Height (165.1 mm) - line( - (x-front-end, y-lip-bot), - (x-front-end + 0.6, y-lip-bot), - stroke: 0.4pt + luma(140), - ) - line( - (x-front-end + 0.55, y-lip-bot), - (x-front-end + 0.55, y-lip-top), - mark: (start: "stealth", end: "stealth"), - mark-size: 0.10, - stroke: 0.6pt + black, - ) - content( - (x-front-end + 0.85, (y-lip-bot + y-lip-top) / 2), - text(size: 7pt)[$qty(165.1, "mm")$], - angle: -90deg, - ) - - // ========================================== - // 2. REAR ELEVATION (INNER FACE: 38.0 x 177.8 mm) - // ========================================== - let x-rear-start = 4.5 - let x-rear-end = x-rear-start + w - let x-rear-mid = (x-rear-start + x-rear-end) / 2 - - // View Title - content((x-rear-mid, y-top + 0.8), text( - size: 8.5pt, - weight: "bold", - )[REAR ELEVATION (INNER FACE)]) - - // Painted Central Surface Area - rect( - (x-rear-start, y-bot), - (x-rear-end, y-top), - fill: luma(225), - stroke: 1.2pt + black, - ) - - // Masked Unpainted Area 1: Top Lip (6.35 mm full width) - rect( - (x-rear-start, y-lip-top), - (x-rear-end, y-top), - fill: luma(250), - stroke: (paint: luma(120), thickness: 0.6pt, dash: "dashed"), - ) - - // Masked Unpainted Area 2: Bottom Lip (6.35 mm full width) - rect( - (x-rear-start, y-bot), - (x-rear-end, y-lip-bot), - fill: luma(250), - stroke: (paint: luma(120), thickness: 0.6pt, dash: "dashed"), - ) - - // Masked Unpainted Area 3: L-Channel Front Flange Contact Strip (8 mm along right side in rear view) - rect( - (x-rear-end - f, y-lip-bot), - (x-rear-end, y-lip-top), - fill: luma(250), - stroke: (paint: luma(120), thickness: 0.6pt, dash: "dashed"), - ) - - // Center Painted Label - content( - (x-rear-start + (w - f) / 2, (y-lip-bot + y-lip-top) / 2), - text(size: 7.5pt, fill: luma(100))[Painted Surface], - ) - - // M3 Lip Holes in Rear View - draw-m3-hole(x-rear-mid, h-lip / 2) - draw-m3-hole(x-rear-mid, h-total - h-lip / 2) - - // L-Channel Attachment Holes in Rear View (X = 38.0 - 4.0 = 34.0 mm in rear view) - let x-hole-rear = x-rear-end - 4.0 * s - draw-m3-hole(x-hole-rear, y-hole-lower) - draw-m3-hole(x-hole-rear, y-hole-upper) - - // Masked Contact Area Callout Annotations - line( - (x-rear-mid, y-top - h-lip / 2), - (x-rear-end + 0.5, y-top + 0.3), - stroke: 0.5pt + black, - ) - content( - (x-rear-end + 0.55, y-top + 0.3), - text(size: 6.5pt)[Masked unpainted lip (chassis grounding)], - anchor: "south-west", - ) - - line( - (x-rear-end - f / 2, y-hole-upper + 10.0 * s), - (x-rear-end + 0.5, y-hole-upper + 10.0 * s), - stroke: 0.5pt + black, - ) - content( - (x-rear-end + 0.55, y-hole-upper + 10.0 * s), - text(size: 6.5pt)[Masked 8 mm flange contact strip], - anchor: "west", - ) - }), - caption: [Cassette Front Panel technical drawings showing Front Elevation (with countersunk L-channel attachment holes and lip mounting holes) and Rear Elevation (inner face detailing masked unpainted EMI contact areas)], -) <figure-cassette-front-panel-diagram> +#include "diagrams/front-panel.typ" + / Geometry: $qty(177.8, "mm") times qty(38.0, "mm")$, body section $qty(165.1, "mm")$ / Holes: Features Countersunk Through-Holes corresponding to the L-Channel's @@ -1238,722 +125,22 @@ will fail, degrading the SNR below the $qty(90, "dB")$ target. ==== Internal dimensions <cassette-internal-dimensions> |
