diff options
| author | Denis Chevalier <perso@denischevalier.fr> | 2026-08-10 20:00:04 +0200 |
|---|---|---|
| committer | Denis Chevalier <perso@denischevalier.fr> | 2026-08-10 20:00:04 +0200 |
| commit | 32d3f3d945002c1413490449aa08522c78f4dcad (patch) | |
| tree | 79d588ee7f63b422818b3b98932261ba7df724ef /mechanical-specifications.typ | |
| parent | ee50cee9cc2d155ea6530da2c038d72b334ca8a4 (diff) | |
| download | same-32d3f3d945002c1413490449aa08522c78f4dcad.tar.gz same-32d3f3d945002c1413490449aa08522c78f4dcad.tar.bz2 same-32d3f3d945002c1413490449aa08522c78f4dcad.zip | |
replace chassis module loading svg
Diffstat (limited to 'mechanical-specifications.typ')
| -rw-r--r-- | mechanical-specifications.typ | 496 |
1 files changed, 483 insertions, 13 deletions
diff --git a/mechanical-specifications.typ b/mechanical-specifications.typ index ddc3254..de765f6 100644 --- a/mechanical-specifications.typ +++ b/mechanical-specifications.typ @@ -29,7 +29,7 @@ especially in terms of magnetic shielding. 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.], + [Finish], [Matte black powder coard (RAL 9005), all surfaces], ), caption: [Cassette construction parameters], ) <table-cassette-construction-parameters> @@ -252,7 +252,7 @@ especially in terms of magnetic shielding. text(size: 7.0pt)[$qty(6.35, "mm")$], ) }), - caption: [Cassette enclosure orthographic projections (front and side elevation) detailing external physical dimensions and lip offsets.], + caption: [Cassette enclosure orthographic projections (front and side elevation) detailing external physical dimensions and lip offsets], ) <figure-cassette-external-dimensions-diagram> #figure( @@ -268,12 +268,12 @@ especially in terms of magnetic shielding. [$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).], + ($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.], + [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], @@ -713,7 +713,7 @@ interlocking U-shaped steel channel: anchor: "south-west", ) }), - caption: [Cassette L-Channel structural spine technical drawings showing orthographic projections (left and rear elevations) and 3D isometric sheet metal form.], + 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> / Role: Structural spine. Holds the PCB and Front Panel. @@ -935,7 +935,7 @@ interlocking U-shaped steel channel: 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).], + 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> / Role: EMI Shielding and Protection. @@ -1196,7 +1196,7 @@ interlocking U-shaped steel channel: 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).], + 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> / Geometry: $qty(177.8, "mm") times qty(38.0, "mm")$, body section $qty(165.1, "mm")$ @@ -1613,7 +1613,7 @@ maintaining EMI shielding. anchor: "east", ) }), - caption: [Cassette ventilation system details detailing full $5 times 12$ slot top elevation array, magnified single slot geometry with $R = qty(1.25, "mm")$ corner radius, and cross-sectional natural convective cooling / RF electromagnetic shielding concept.], + caption: [Cassette ventilation system details detailing full $5 times 12$ slot top elevation array, magnified single slot geometry with $R = qty(1.25, "mm")$ corner radius, and cross-sectional natural convective cooling / RF electromagnetic shielding concept], ) <figure-cassette-ventilation-diagram> #figure( @@ -1927,7 +1927,7 @@ maintaining EMI shielding. anchor: "west", ) }), - caption: [Cassette DB-25 connector cutout technical drawing showing rear panel placement coordinates and magnified CAD geometry dimensions.], + caption: [Cassette DB-25 connector cutout technical drawing showing rear panel placement coordinates and magnified CAD geometry dimensions], ) <figure-cassette-db-25-connector-cutout-diagram> #figure( @@ -2796,7 +2796,7 @@ grid for compatibility with standard banana jack spacing and shorting bars. anchor: "west", ) }), - caption: [Panels grid specification technical drawing showing full $2 times 8$ grid matrix coordinates (origin X = $qty(9.525, "mm")$, origin Y = $qty(22.225, "mm")$, pitch = $qty(19.05, "mm")$) and component placement rules.], + caption: [Panels grid specification technical drawing showing full $2 times 8$ grid matrix coordinates (origin X = $qty(9.525, "mm")$, origin Y = $qty(22.225, "mm")$, pitch = $qty(19.05, "mm")$) and component placement rules], ) <figure-panels-grid-diagram> ===== Origin <panels-grid-origin> @@ -2957,9 +2957,479 @@ $qty(19, "inch")$ $qty(4, "U")$ rack-mount chassis with $8$ module positions. === Dimensional requirements <chassis-dimensional-requirements> #figure( - image("pictures/chassis-module-loading.svg"), - caption: [Chassis module loading dimensional requirements], -) <figure-chassis-dimensional-requirements> + cetz.canvas({ + import cetz.draw: * + + // Scale factor: 1 mm = 0.04 drawing units + let s = 0.04 + + // ========================================================================= + // VIEW A: SIDE ELEVATION CUTAWAY (Chassis & Module Clearance) + // ========================================================================= + let x-side-start = -3.8 + let y-side-bot = 0 + let h-panel = 177.8 * s // 4.2672 + let h-body = 165.1 * s // 3.9624 + let h-lip = 6.35 * s // 0.1524 + let d-body = 152.4 * s // 3.6576 + let d-cable = 28.0 * s // 0.672 (>= 25 mm cable bend zone) + + let y-side-top = y-side-bot + h-panel + let y-body-bot = y-side-bot + h-lip + let y-body-top = y-side-top - h-lip + let x-panel-front = x-side-start + let x-body-start = x-panel-front + 3.0 * s + let x-body-rear = x-body-start + d-body + let x-chassis-rear = x-body-rear + d-cable + + // View Title + content((x-body-start + (d-body + d-cable) / 2, y-side-top + 1.5), text( + size: 8.5pt, + weight: "bold", + )[VIEW A: SIDE ELEVATION CUTAWAY]) + content((x-body-start + (d-body + d-cable) / 2, y-side-top + 1.15), text( + size: 7pt, + fill: luma(90), + )[(Chassis enclosure & module interface clearance)]) + + // Chassis Steel Structure Outline (1.5 mm / 2.0 mm outer shell) + rect( + (x-body-start - 2.0 * s, y-side-bot - 2.0 * s), + (x-chassis-rear + 2.0 * s, y-side-top + 2.0 * s), + fill: luma(250), + stroke: 1.2pt + black, + ) + + // Cassette Guide Rails (Top and Bottom Channels) + rect( + (x-body-start, y-side-top - 8.0 * s), + (x-body-rear, y-side-top), + fill: luma(210), + stroke: 0.8pt + black, + ) + rect( + (x-body-start, y-side-bot), + (x-body-rear, y-side-bot + 8.0 * s), + fill: luma(210), + stroke: 0.8pt + black, + ) + + // Installed Cassette Outer Body (White fill inside chassis) + rect( + (x-body-start, y-body-bot), + (x-body-rear, y-body-top), + fill: white, + stroke: 1pt + black, + ) + + // Front Panel Attached to Cassette Lip + rect( + (x-panel-front, y-side-bot), + (x-body-start, y-side-top), + fill: luma(225), + stroke: 1.2pt + black, + ) + + // DB-25 Backplane Connector (Mating Pair at Rear of Cassette) + let db-h = 50.0 * s + rect( + (x-body-rear - 2.0 * s, y-side-bot + (h-panel - db-h) / 2), + (x-body-rear + 8.0 * s, y-side-bot + (h-panel + db-h) / 2), + fill: luma(180), + stroke: 0.9pt + black, + ) + + // Cable Bend & Wiring Harness Zone (Dashed hatched path behind backplane) + line( + (x-body-rear + 8.0 * s, y-side-bot + h-panel / 2), + (x-chassis-rear - 4.0 * s, y-side-bot + h-panel / 2), + (x-chassis-rear - 4.0 * s, y-side-bot + 15.0 * s), + stroke: (paint: luma(120), thickness: 0.8pt, dash: "dashed"), + ) + + // Dimensions for View A + // Total Panel Height (177.8 mm / 4U) + line( + (x-panel-front, y-side-bot), + (x-panel-front - 0.5, y-side-bot), + stroke: 0.4pt + luma(140), + ) + line( + (x-panel-front, y-side-top), + (x-panel-front - 0.5, y-side-top), + stroke: 0.4pt + luma(140), + ) + line( + (x-panel-front - 0.45, y-side-bot), + (x-panel-front - 0.45, y-side-top), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content( + (x-panel-front - 0.75, (y-side-bot + y-side-top) / 2), + text(size: 6.5pt, weight: "bold")[$qty(177.8, "mm")$ ($qty(4, "U")$)], + angle: 90deg, + ) + + // Lip Height (6.35 mm) + line( + (x-body-start, y-side-top), + (x-body-start + 0.4, y-side-top), + stroke: 0.4pt + luma(140), + ) + line( + (x-body-start, y-body-top), + (x-body-start + 0.4, y-body-top), + stroke: 0.4pt + luma(140), + ) + line( + (x-body-start + 0.35, y-body-top), + (x-body-start + 0.35, y-side-top), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.06, + stroke: 0.6pt + black, + ) + content((x-body-start + 0.65, (y-body-top + y-side-top) / 2), text( + size: 5.5pt, + )[$qty(6.35, "mm")$]) + + // Body Height (165.1 mm) + line( + (x-body-start + 0.8, y-body-bot), + (x-body-start + 0.8, y-body-top), + stroke: (paint: luma(140), thickness: 0.4pt, dash: "dashed"), + ) + line( + (x-body-start + 0.8, y-body-bot), + (x-body-start + 0.8, y-body-top), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content( + (x-body-start + 1.1, (y-body-bot + y-body-top) / 2), + text(size: 6.5pt)[$qty(165.1, "mm")$ body], + angle: -90deg, + ) + + // Cassette Depth (152.4 mm) + line( + (x-body-start, y-side-top + 2.0 * s), + (x-body-start, y-side-top + 0.5), + stroke: 0.4pt + luma(140), + ) + line( + (x-body-rear, y-side-top + 2.0 * s), + (x-body-rear, y-side-top + 0.5), + stroke: 0.4pt + luma(140), + ) + line( + (x-body-start, y-side-top + 0.45), + (x-body-rear, y-side-top + 0.45), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content(((x-body-start + x-body-rear) / 2, y-side-top + 0.65), text( + size: 6.5pt, + )[$qty(152.4, "mm")$]) + + // Cable Zone Depth (>= 25.0 mm) + line( + (x-chassis-rear, y-side-top + 2.0 * s), + (x-chassis-rear, y-side-top + 0.5), + stroke: 0.4pt + luma(140), + ) + line( + (x-body-rear, y-side-top + 0.45), + (x-chassis-rear, y-side-top + 0.45), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content(((x-body-rear + x-chassis-rear) / 2, y-side-top + 0.65), text( + size: 6pt, + )[$gt.eq qty(25.0, "mm")$]) + + // Callout Annotations for View A + line( + (x-body-rear + 3.0 * s, y-side-bot + h-panel / 2), + (x-body-rear + 1.2, y-side-bot + h-panel / 2 + 0.6), + stroke: 0.5pt + black, + ) + content( + (x-body-rear + 1.25, y-side-bot + h-panel / 2 + 0.6), + text(size: 6pt)[DB-25 backplane \ + (grounded via shell & pin 25)], + anchor: "south-west", + ) + + line( + (x-chassis-rear - 2.0 * s, y-side-bot + 20.0 * s), + (x-chassis-rear + 0.5, y-side-bot - 0.3), + stroke: 0.5pt + black, + ) + content( + (x-chassis-rear + 0.55, y-side-bot - 0.3), + text(size: 6pt)[Cable bend & wiring zone], + anchor: "west", + ) + + // ========================================================================= + // VIEW B: FRONT ELEVATION (Module Pitch Alignment) + // ========================================================================= + let x-front-view = 7.2 + let w-module = 38.0 * s // 0.912 + let pitch-module = 38.1 * s // 0.9144 + + // View Title + content((x-front-view + 1.5 * pitch-module, y-side-top + 1.5), text( + size: 8.5pt, + weight: "bold", + )[VIEW B: FRONT ELEVATION]) + content((x-front-view + 1.5 * pitch-module, y-side-top + 1.15), text( + size: 7pt, + fill: luma(90), + )[(Module pitch & slot interface alignment)]) + + // Chassis Front Frame + rect( + (x-front-view - 0.2, y-side-bot - 2.0 * s), + (x-front-view + 3 * pitch-module + 0.2, y-side-top + 2.0 * s), + fill: luma(240), + stroke: 1.2pt + black, + ) + + // Module Slot 1 (Module 1 Installed) + let m1-x = x-front-view + rect( + (m1-x, y-side-bot), + (m1-x + w-module, y-side-top), + fill: luma(250), + stroke: 1pt + black, + ) + circle( + (m1-x + w-module / 2, y-side-bot + h-lip / 2), + radius: 1.2 * s, + fill: white, + stroke: 0.6pt + black, + ) + circle( + (m1-x + w-module / 2, y-side-top - h-lip / 2), + radius: 1.2 * s, + fill: white, + stroke: 0.6pt + black, + ) + content((m1-x + w-module / 2, y-side-bot + h-panel / 2), text( + size: 6.5pt, + weight: "bold", + )[Module 1]) + + // Module Slot 2 (Module 2 Installed) + let m2-x = x-front-view + pitch-module + rect( + (m2-x, y-side-bot), + (m2-x + w-module, y-side-top), + fill: luma(250), + stroke: 1pt + black, + ) + circle( + (m2-x + w-module / 2, y-side-bot + h-lip / 2), + radius: 1.2 * s, + fill: white, + stroke: 0.6pt + black, + ) + circle( + (m2-x + w-module / 2, y-side-top - h-lip / 2), + radius: 1.2 * s, + fill: white, + stroke: 0.6pt + black, + ) + content((m2-x + w-module / 2, y-side-bot + h-panel / 2), text( + size: 6.5pt, + weight: "bold", + )[Module 2]) + + // Module Slot 3 (Empty Slot showing chassis guide rails) + let m3-x = x-front-view + 2 * pitch-module + rect( + (m3-x, y-side-bot), + (m3-x + w-module, y-side-top), + fill: white, + stroke: 0.8pt + black, + ) + rect( + (m3-x, y-side-top - h-lip), + (m3-x + w-module, y-side-top), + fill: luma(210), + stroke: 0.5pt + black, + ) + rect( + (m3-x, y-side-bot), + (m3-x + w-module, y-side-bot + h-lip), + fill: luma(210), + stroke: 0.5pt + black, + ) + content((m3-x + w-module / 2, y-side-bot + h-panel / 2), text( + size: 6pt, + fill: luma(100), + )[Empty slot \ (rails visible)]) + + // Centerlines for Module Center Pitch + line( + (m1-x + w-module / 2, y-side-bot - 0.4), + (m1-x + w-module / 2, y-side-top + 0.4), + stroke: (paint: luma(120), thickness: 0.4pt, dash: "dash-dotted"), + ) + line( + (m2-x + w-module / 2, y-side-bot - 0.4), + (m2-x + w-module / 2, y-side-top + 0.4), + stroke: (paint: luma(120), thickness: 0.4pt, dash: "dash-dotted"), + ) + line( + (m3-x + w-module / 2, y-side-bot - 0.4), + (m3-x + w-module / 2, y-side-top + 0.4), + stroke: (paint: luma(120), thickness: 0.4pt, dash: "dash-dotted"), + ) + + // Dimension: Module Pitch (38.1 mm / 1.5") + line( + (m1-x + w-module / 2, y-side-top + 0.35), + (m2-x + w-module / 2, y-side-top + 0.35), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content(((m1-x + m2-x + w-module) / 2, y-side-top + 0.55), text( + size: 6.5pt, + )[$qty(38.1, "mm")$ ($qty(1.5, "inch")$) pitch]) + + // ========================================================================= + // VIEW C: CASSETTE RAIL GEOMETRY & RETENTION (ENLARGED DETAIL) + // ========================================================================= + let x-rail-center = 4.8 + let y-rail-center = -3.6 + let rail-w = 38.1 * 0.08 // Magnified channel width (38.1 mm) + let rail-h = 6.35 * 0.08 // Magnified rail height (6.35 mm) + let lip-t = 1.2 * 0.08 // Sheet metal thickness (1.2 mm) + + let rx1 = x-rail-center - rail-w / 2 + let rx2 = x-rail-center + rail-w / 2 + let ry1 = y-rail-center - rail-h / 2 + let ry2 = y-rail-center + rail-h / 2 + + // View Title + content((x-rail-center, y-rail-center + 2.2), text( + size: 8.5pt, + weight: "bold", + )[VIEW C: CASSETTE RAIL GEOMETRY & RETENTION]) + content((x-rail-center, y-rail-center + 1.85), text( + size: 7pt, + fill: luma(90), + )[(Cross-section of guide rail channel - scale enlarged)]) + + // Main Chassis Guide Channel (U-shaped metal guide track) + line( + (rx1 - 0.4, ry2 + 0.4), + (rx1 - 0.4, ry1 - lip-t), + (rx2 + 0.4, ry1 - lip-t), + (rx2 + 0.4, ry2 + 0.4), + stroke: 1.2pt + black, + ) + line( + (rx1, ry2 + 0.4), + (rx1, ry1), + (rx2, ry1), + (rx2, ry2 + 0.4), + stroke: 1.2pt + black, + ) + + // Inserted Cassette Front Panel Lip (Mating into Channel) + rect( + (rx1 + 0.05, ry1 + 0.05), + (rx2 - 0.05, ry2), + fill: luma(230), + stroke: 0.8pt + black, + ) + + // Optional Spring Clip / Retention Latch (Contact spring on left side) + line( + (rx1 - 0.3, ry1 + 0.2), + (rx1 - 0.05, ry1 + 0.25), + (rx1 + 0.2, ry1 + 0.2), + stroke: 0.8pt + black, + ) + circle((rx1 - 0.3, ry1 + 0.2), radius: 0.04, fill: black) + + // Centerline + line( + (x-rail-center, ry1 - 0.6), + (x-rail-center, ry2 + 0.6), + stroke: (paint: luma(120), thickness: 0.4pt, dash: "dash-dotted"), + ) + + // Dimension: Channel Width (38.1 mm +0.2/-0.0 mm) + line((rx1, ry2 + 0.1), (rx1, ry2 + 0.7), stroke: 0.4pt + luma(140)) + line((rx2, ry2 + 0.1), (rx2, ry2 + 0.7), stroke: 0.4pt + luma(140)) + line( + (rx1, ry2 + 0.6), + (rx2, ry2 + 0.6), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content((x-rail-center, ry2 + 0.85), text( + size: 7pt, + )[Channel width: $qty(38.1, "mm") +0.2/-0.0$]) + + // Dimension: Rail Height (6.35 mm / 0.25") + line((rx2 + 0.1, ry1), (rx2 + 0.7, ry1), stroke: 0.4pt + luma(140)) + line((rx2 + 0.1, ry2), (rx2 + 0.7, ry2), stroke: 0.4pt + luma(140)) + line( + (rx2 + 0.6, ry1), + (rx2 + 0.6, ry2), + mark: (start: "stealth", end: "stealth"), + mark-size: 0.08, + stroke: 0.6pt + black, + ) + content( + (rx2 + 0.8, (ry1 + ry2) / 2), + text( + size: 6.5pt, + )[$qty(6.35, "mm")$ ($qty(0.25, "inch")$) rail height], + anchor: "west", + ) + + // Callout Annotations for View C + line( + (rx1 - 0.15, ry1 + 0.2), + (rx1 - 1.2, ry1 - 0.4), + stroke: 0.5pt + black, + ) + content( + (rx1 - 1.25, ry1 - 0.4), + text( + size: 6pt, + )[Optional positive retention \ (spring clip / latch mechanism)], + anchor: "east", + ) + + line( + (rx2 - 0.3, ry1 + 0.1), + (rx2 + 1.2, ry1 - 0.4), + stroke: 0.5pt + black, + ) + content( + (rx2 + 1.25, ry1 - 0.4), + text( + size: 6pt, + )[Metal-to-metal grounding contact \ (cassette lip insertion clearance)], + anchor: "west", + ) + }), + caption: [Chassis dimensional requirements and module loading interface specifications detailing Side Elevation Cutaway (View A), Front Elevation Module Pitch Alignment (View B), and enlarged Cassette Rail Geometry & Retention Cross-Section (View C).], +) <figure-chassis-dimensional-requirements-diagram> ==== Module interface dimensions <chassis-module-interface-dimensions> |
