文件

81 行
5.2 KiB
Python

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# -*- coding: utf-8 -*-
u"""派生嵌入式底盖版(2026-09-13 用户:底盖螺丝拧紧后嵌入顶盖、被顶盖包裹):
topshell_v9 → topshell_v10:四面墙向下延长一个底盖厚度 3.6(墙底 z −10 → −13.6),**角柱仍止于 z=−10** 当限位
bottomplate_v5 → bottomplate_v6:外形 = 顶盖内腔(x −16~113.5、y −1.655~104.345)四边各让 0.3,四角 R1(由 add_fillets 做)
place_v9 → place_v10:新包围盒 + 嵌入判据(底面与墙底齐平、四边间隙 0.3)
整机外形不变 134.3 × 110.8 × 88.0(墙底正好补到原底盖底面 −13.6)。纯文本补丁,锚点断言次数。"""
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', write_through=True)
T = u'C:\\Users\\35138\\.claude\\jobs\\11836093\\tmp\\'
CLR = 0.3
IX0, IX1, IY0, IY1 = -16.0, 113.5, -1.655, 104.345
BP = (IX0 + CLR, IY0 + CLR, IX1 - CLR, IY1 - CLR)
def patch(src, dst, pairs, head):
s = open(T + src, encoding='utf-8').read()
for old, new, n in pairs:
c = s.count(old)
if c != n:
raise SystemExit(u'%s:锚点 %r 出现 %d 次(期望 %d)' % (src, old[:70], c, n))
s = s.replace(old, new)
s = s.replace(u'# -*- coding: utf-8 -*-\n', u'# -*- coding: utf-8 -*-\n# ' + head + u'\n', 1)
open(T + dst, 'w', encoding='utf-8').write(s)
print(u'写出', dst)
patch('topshell_v9.py', 'topshell_v10.py', [
(u"TopShell_v9.SLDPRT'", u"TopShell_v10.SLDPRT'", 1),
(u"'TOPSHELL_V9'", u"'TOPSHELL_V10'", 1),
(u"H = 84.4 # 顶外 74.4 → 墙底 −10",
u"H = 84.4 # 顶外 74.4 → 角柱底 −10(底盖顶面限位)\n"
u"PLATE_T = 3.6 # 底盖厚\n"
u"H_WALL = H + PLATE_T # v10:墙向下包住底盖 ⇒ 墙底 −13.6", 1),
(u"P(u'\\n[2] 四面墙 环形轮廓,向 −z 拉 %.1f' % H)", u"P(u'\\n[2] 四面墙 环形轮廓,向 −z 拉 %.1f(包住底盖)' % H_WALL)", 1),
(u"boss(H, True)\ncheck(u'墙', [X0, Y0, -H, X1, Y1, 0.0])", u"boss(H_WALL, True)\ncheck(u'墙', [X0, Y0, -H_WALL, X1, Y1, 0.0])", 1),
(u"check(u'顶板', [X0, Y0, -H, X1, Y1, 0.0])", u"check(u'顶板', [X0, Y0, -H_WALL, X1, Y1, 0.0])", 1),
(u"check(u'最终', [X0, Y0, -H, X1, Y1, 0.0])", u"check(u'最终', [X0, Y0, -H_WALL, X1, Y1, 0.0])", 1),
], u'v10:嵌入式底盖 —— 墙向下延长 3.6 包住底盖(墙底 −13.6),角柱仍止于 −10 当限位;其余同 v9')
patch('bottomplate_v5.py', 'bottomplate_v6.py', [
(u"BottomPlate_v5.SLDPRT'", u"BottomPlate_v6.SLDPRT'", 1),
(u"'BOTTOMPLATE_V5'", u"'BOTTOMPLATE_V6'", 1),
(u"INSET = 0.5\nX0, X1, Y0, Y1 = -18.4 + INSET, 115.9 - INSET, -4.055 + INSET, 106.745 - INSET # 无滤网:西沿回到顶盖外沿 −18.4",
u"CLR = %.1f # v6:嵌进顶盖内腔,四边各让 %.1f\n"
u"X0, X1, Y0, Y1 = %.1f + CLR, %.1f - CLR, %.3f + CLR, %.3f - CLR # = 顶盖内腔 %s 各让 CLR"
% (CLR, CLR, IX0, IX1, IY0, IY1, (IX0, IX1, IY0, IY1)), 1),
], u'v6:嵌入式 —— 外形 = 顶盖内腔四边各让 0.3,拧紧后顶面压住顶盖角柱底(z −10)、底面与墙底齐平(−13.6)')
p = open(T + 'place_v9.py', encoding='utf-8').read()
pairs = [
(u"(u'TopShell_v9.SLDPRT', (0, 0, 74.4), [-18.4, -4.055, -10.0, 115.9, 106.745, 74.4])",
u"(u'TopShell_v10.SLDPRT', (0, 0, 74.4), [-18.4, -4.055, -13.6, 115.9, 106.745, 74.4])"),
(u"(u'BottomPlate_v5.SLDPRT', (0, 0, -10.0), [-17.9, -3.555, -13.6, 115.4, 106.245, 0.0])",
u"(u'BottomPlate_v6.SLDPRT', (0, 0, -10.0), [%.1f, %.3f, -13.6, %.1f, %.3f, 0.0])" % BP),
(u"""P(u'\\n[4] 贴合:顶盖墙底 ↔ 底盖顶面')
ts = [b for nn, b in box.items() if 'TOPSHELL' in nn.upper()][0]
bp = [b for nn, b in box.items() if 'BOTTOMPLATE' in nn.upper()][0]
P(u' 顶盖 z 下沿 %.3f / 底盖板面 z −10(底盖 box 上沿 %.3f 是 PCB 立柱顶)'
% (ts[2], bp[5]))
allok &= abs(ts[2] + 10.0) < 0.05""",
u"""P(u'\\n[4] 嵌入:底盖藏在顶盖墙内')
ts = [b for nn, b in box.items() if 'TOPSHELL' in nn.upper()][0]
bp = [b for nn, b in box.items() if 'BOTTOMPLATE' in nn.upper()][0]
_gap = (bp[0] - (%.1f), bp[1] - (%.3f), (%.1f) - bp[3], (%.3f) - bp[4])
P(u' 墙底 z %%.3f / 底盖底面 z %%.3f(应齐平)' %% (ts[2], bp[2]))
P(u' 底盖离墙内侧间隙 西 %%.3f 南 %%.3f 东 %%.3f 北 %%.3f(应各 0.3)' %% _gap)
P(u' 底盖顶面 z −10(= 角柱底面限位,由零件本地 −3.6~0 + 装配 dz −10 保证)')
allok &= abs(ts[2] - bp[2]) < 0.05 and all(abs(g - 0.3) < 0.05 for g in _gap)""" % (IX0, IY0, IX1, IY1)),
(u"((u'v9_iso', 7),)", u"((u'v10_iso', 7), (u'v10_bottom', 2))"),
]
for old, new in pairs:
if p.count(old) != 1:
raise SystemExit(u'place 锚点 %r ×%d' % (old[:60], p.count(old)))
p = p.replace(old, new)
p = p.replace(u'# -*- coding: utf-8 -*-\n', u'# -*- coding: utf-8 -*-\n# v10:嵌入式底盖总装(TopShell_v10 + BottomPlate_v6)\n', 1)
open(T + 'place_v10.py', 'w', encoding='utf-8').write(p)
print(u'写出 place_v10.py')
print(u'底盖外形 x %.1f~%.1f y %.3f~%.3f' % (BP[0], BP[2], BP[1], BP[3]))