文件

96 行
5.1 KiB
Python

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# -*- coding: utf-8 -*-
u"""把螺丝位置算成常量表,供各板建模脚本引用(只算不改模型)。
依据全部来自**实测贴合面**(`contact_map.py` 回读,不是推的):
| 贴合对 | 沿哪个轴 | 重叠区 | 能否打 M3 |
|---|---|---|---|
| 端板 ↔ 南/北板 | y | z 82.0 × x 27.4 | ✅ 宽裕 |
| 端板 ↔ 顶盖 | z | x 27.4 × y 103.7 | ✅ 宽裕 |
| **托盘 ↔ 南/北板** | y | **z 10.0 × x 106.0** | ✅ 10 mm 带够打 |
| 南板 ↔ 顶盖 | z | x 152.8 × **y 2.3** | ⛔ 太窄,不在此处打 |
⇒ 螺丝分三组,全部 M3:
A. **侧板 → 端板**(水平,沿 y):每块侧板两端各 2 颗,共 8 颗。
螺丝穿过侧板拧进端板的 y 端面(端板本体 2.4 厚 + L 脚区,
实际拧入的是端板板厚方向 ⇒ 需在端板端面加 **Ø6×6 凸台**才有肉,
否则 2.4 板边攻不住 M3)。
B. **侧板 → 托盘**(水平,沿 y):沿 x 均布 3 颗 × 2 块 = 6 颗。
打在 z 10.0 那条带的中线 z=−5.0 上,拧进托盘侧端面
(托盘面板 2.4 厚 + 立柱区 ⇒ 同样要在托盘端面加凸台)。
C. **顶盖 → 端板**(竖直,沿 z):每端 2 颗,共 4 颗。
打在端板顶面 x 27.4 宽的带上,位置避开风口(风口中心 y=51.345、Ø60)。
⚠ 3D 打印件不直接攻螺纹:凸台里预留 **Ø4.2×6 热熔螺母孔**(M3),
与托盘立柱顶面用的规格一致,全机统一 M3 + 热熔螺母。
"""
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', write_through=True)
# ── 已实测的几何边界 ──────────────────────────────────────────────────
EP_W = (-27.4, 0.0) # 西端板 x
EP_E = (98.0, 125.4) # 东端板 x
EP_Y = (-1.655, 104.345) # 端板 y(对称)
EP_Z = (-10.0, 72.0) # 端板 z
TRAY_X = (-4.0, 102.0)
TRAY_Y = (-1.655, 104.345)
TRAY_Z = (-12.4, 0.0)
PANEL_T = 2.4
SOUTH_Y = (-4.055, -1.655)
NORTH_Y = (104.345, 106.745)
TOP_Z = (72.0, 74.4)
FAN_CY, VENT_R = 51.345, 30.0
SCREW_D = 3.4 # 过孔
INSERT_D, INSERT_DEPTH = 4.2, 6.0 # 热熔螺母
BOSS_D = 8.0 # 凸台外径
P = print
P(u'【A 组】侧板 → 端板(沿 y 水平,每块侧板两端各 2 颗,共 8 颗)')
P(u' 螺丝轴线沿 y;孔在侧板上,凸台在端板的 y 端面。')
# ⛔ 上一版漏了「南板和北板各要一套」:只按两个端板算了 4 颗,
# 而 A 组是**侧板→端板**,南、北两块侧板各自都要在两端各打 2 颗 ⇒ 实际 8 颗。
a = []
for panel, py in ((u'南板', EP_Y[0]), (u'北板', EP_Y[1])):
for tag, (x0, x1) in ((u'西端', EP_W), (u'东端', EP_E)):
cx = (x0 + x1) / 2.0
for z in (EP_Z[0] + 12.0, EP_Z[1] - 12.0): # 上下各留 12
a.append((panel, tag, round(cx, 3), round(z, 3)))
P(u' %s→%s x=%7.2f z=%6.2f (螺丝穿过 y=%.3f 那块侧板)'
% (panel, tag, cx, z, py))
P(u' ⇒ 端板需在 y=%.3f 与 y=%.3f 两个端面各加 2 个 Ø%.1f 凸台(含 Ø%.1f 螺母孔)'
% (EP_Y[0], EP_Y[1], BOSS_D, INSERT_D))
P(u'\n【B 组】⛔ **已取消**(2026-09-13)')
P(u' 原因一:托盘南北边缘与底板 PCB 之间只剩 1.665 / 6.355 mm,放不下 Ø8 凸台;')
P(u' 原因二:盒子刚性由「两端板 + 南北板 + 顶盖」四面围合已足够,')
P(u' 托盘本身由端板 L 脚的 4 颗 Ø3.4 锁孔固定在托盘面板上。')
P(u' ⇒ 螺丝总数由 18 减到 **12**(A 8 + C 4)。南北板上已打好的 3 个 B 组孔保留无害。')
P(u'\n【B 组·原方案,仅存档】侧板 → 托盘(沿 y 水平,每块 3 颗,共 6 颗)')
P(u' 打在托盘侧端面,贴合带 z −10~0,取中线 z=−5.0。')
b = []
for x in (TRAY_X[0] + 15.0, (TRAY_X[0] + TRAY_X[1]) / 2.0, TRAY_X[1] - 15.0):
b.append((round(x, 3), -5.0))
P(u' x=%7.2f z=%6.2f' % (x, -5.0))
P(u' ⇒ 托盘需在 y=%.3f 与 y=%.3f 端面各加 3 个凸台' % (TRAY_Y[0], TRAY_Y[1]))
P(u'\n【C 组】顶盖 → 端板(沿 z 竖直,每端 2 颗,共 4 颗)')
c = []
for tag, (x0, x1) in ((u'西端', EP_W), (u'东端', EP_E)):
cx = (x0 + x1) / 2.0
for y in (EP_Y[0] + 14.0, EP_Y[1] - 14.0): # 避开风口 Ø60(中心 y=51.345)
d = abs(y - FAN_CY)
c.append((tag, round(cx, 3), round(y, 3)))
P(u' %s x=%7.2f y=%7.2f 离风口中心 %.1f(需 > %.1f)%s'
% (tag, cx, y, d, VENT_R, u'✅' if d > VENT_R else u'⛔'))
P(u' ⇒ 顶盖在这 4 处开 Ø%.1f 过孔;端板顶面 z=%.1f 加 Ø%.1f 凸台'
% (SCREW_D, EP_Z[1], BOSS_D))
# A 组已含南北两块侧板(不再乘 2);B 组是"每块 3 颗 × 2 块"故乘 2;C 组已含两端。
P(u'\n合计 M3 螺丝 **%d 颗**(A %d + C %d;B 组已取消),配 Ø%.1f×%.0f 热熔螺母'
% (len(a) + len(c), len(a), len(c), INSERT_D, INSERT_DEPTH))
P(u'⚠ 托盘立柱顶面原有的 4 个 Ø4.2 螺母孔(锁底板 PCB)与本表无关,另计。')