aboutsummaryrefslogtreecommitdiff
path: root/mechanical-specifications.typ
diff options
context:
space:
mode:
Diffstat (limited to 'mechanical-specifications.typ')
-rw-r--r--mechanical-specifications.typ221
1 files changed, 218 insertions, 3 deletions
diff --git a/mechanical-specifications.typ b/mechanical-specifications.typ
index e39a05e..3be195d 100644
--- a/mechanical-specifications.typ
+++ b/mechanical-specifications.typ
@@ -1,4 +1,5 @@
#import "lib/unify.typ": qty, qtyrange
+#import "@preview/cetz:0.5.2"
= Mechanical specifications <mechanical-specifications>
@@ -36,9 +37,223 @@ especially in terms of magnetic shielding.
==== External dimensions <cassette-external-dimensions>
#figure(
- image("pictures/cassette-external-dimensions.svg"),
- caption: "Cassette external dimensions",
-) <figure-cassette-external-dimensions>
+ cetz.canvas({
+ import cetz.draw: *
+
+ // Scale factor: 1 mm = 0.035 drawing units
+ let s = 0.035
+
+ 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.2),
+ (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(