R2:底板 / 刀片布局布线脚本、快照、截图与规划文档更新(含外壳、打印件、布线归档)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
@@ -0,0 +1,98 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
u"""由 topshell_v1.py 派生 topshell_v2.py(加西端滤网导轨 + 内联倒角),只做文本补丁,不碰 SolidWorks。"""
|
||||
import io
|
||||
import sys
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', write_through=True)
|
||||
SRC = r'C:\Users\35138\.claude\jobs\11836093\tmp\topshell_v1.py'
|
||||
DST = r'C:\Users\35138\.claude\jobs\11836093\tmp\topshell_v2.py'
|
||||
s = open(SRC, encoding='utf-8').read()
|
||||
|
||||
|
||||
def rep(old, new, count=1):
|
||||
global s
|
||||
n = s.count(old)
|
||||
if n != count:
|
||||
raise SystemExit(u'锚点 %r 出现 %d 次(期望 %d)' % (old[:40], n, count))
|
||||
s = s.replace(old, new)
|
||||
|
||||
|
||||
rep(u'# -*- coding: utf-8 -*-\nu"""**一体顶盖** TopShell_v1',
|
||||
u'# -*- coding: utf-8 -*-\nu"""**v2 = v1 + 西端插拔式滤网导轨 + 建模内倒角**(2026-09-13)。\n'
|
||||
u'导轨让包围盒西界变成唇边 x −43.8,add_fillets 的「包围盒角」判据会漏掉西侧两角 ⇒ 圆角在加导轨之前做。\n\n'
|
||||
u'(以下为 v1 说明)**一体顶盖** TopShell_v1')
|
||||
rep(u"TopShell_v1.SLDPRT'", u"TopShell_v2.SLDPRT'")
|
||||
rep(u"'TOPSHELL_V1'", u"'TOPSHELL_V2'")
|
||||
|
||||
FILLET = u'''
|
||||
# ── [3b] 外轮廓 4 条竖边倒 R3(此时包围盒 = 盒体本身,导轨还没加)─────────
|
||||
P(u'\\n[3b] 外轮廓竖边倒 R3')
|
||||
_bx = bbox()
|
||||
_cand = []
|
||||
for _e in prop(D(bodies()[0]), 'GetEdges'):
|
||||
_E = D(_e)
|
||||
try:
|
||||
_p0 = [v * 1000 for v in prop(D(prop(_E, 'GetStartVertex')), 'GetPoint')]
|
||||
_p1 = [v * 1000 for v in prop(D(prop(_E, 'GetEndVertex')), 'GetPoint')]
|
||||
except Exception:
|
||||
continue
|
||||
if abs(_p0[0] - _p1[0]) > 1e-6 or abs(_p0[1] - _p1[1]) > 1e-6 or abs(_p0[2] - _p1[2]) < 1e-6:
|
||||
continue
|
||||
if all(min(abs(_p[i] - _bx[i]), abs(_p[i] - _bx[i + 3])) < 0.01 for _p in (_p0, _p1) for i in (0, 1)):
|
||||
_cand.append(_E)
|
||||
_done = 0
|
||||
for _E in _cand:
|
||||
for _r in (3.0, 2.0, 1.5):
|
||||
part.ClearSelection2(True)
|
||||
_E.Select4(False, EMPTY)
|
||||
try:
|
||||
_f = fm.FeatureFillet3(195, M(_r), 0, 0, 0, 0, 0, None, None, None, None, None, None, None)
|
||||
except Exception:
|
||||
_f = None
|
||||
if _f:
|
||||
_done += 1
|
||||
break
|
||||
P(u' 候选 %d 条,成功 %d 条;直方图 %s' % (len(_cand), _done, hist()))
|
||||
if _done != 4 or hist().get(3.0, 0) != 4:
|
||||
P(u'⛔ 圆角没做全,停手'); sys.exit(8)
|
||||
|
||||
'''
|
||||
rep(u'\n# ── 面上草图切除(带候选映射)', FILLET + u'\n# ── 面上草图切除(带候选映射)')
|
||||
|
||||
RAILS = u'''
|
||||
# ── [6b] 西端插拔式滤网导轨(前视面草图 L 形轮廓,向 −z 拉满高)───────────
|
||||
FW, CLR, SLOT_T, LIP_T, SPACER, LIP = 70.0, 0.3, 3.4, 2.0, 4.0, 3.0
|
||||
XO = X0 - SLOT_T - LIP_T # 唇边外表面 −43.8
|
||||
YS0, YS1 = FAN_CY - FW / 2 - CLR, FAN_CY + FW / 2 + CLR # 滑槽 y 16.045 ~ 86.645
|
||||
P(u'\\n[6b] 滤网导轨:滑槽 x %.1f~%.1f(厚 %.1f)、y %.3f~%.3f;唇边 x %.1f~%.1f 压边 %.1f'
|
||||
% (X0 - SLOT_T, X0, SLOT_T, YS0, YS1, XO, X0 - SLOT_T, LIP))
|
||||
rails = [
|
||||
[(X0, YS0 - SPACER), (XO, YS0 - SPACER), (XO, YS0 + LIP), (X0 - SLOT_T, YS0 + LIP),
|
||||
(X0 - SLOT_T, YS0), (X0, YS0)],
|
||||
[(X0, YS1 + SPACER), (XO, YS1 + SPACER), (XO, YS1 - LIP), (X0 - SLOT_T, YS1 - LIP),
|
||||
(X0 - SLOT_T, YS1), (X0, YS1)],
|
||||
]
|
||||
pick(u'前视基准面', 'PLANE')
|
||||
sm.InsertSketch(True)
|
||||
sm.AddToDB = True
|
||||
for poly in rails:
|
||||
for i in range(len(poly)):
|
||||
a, b = poly[i], poly[(i + 1) % len(poly)]
|
||||
sm.CreateLine(M(a[0]), M(a[1]), 0.0, M(b[0]), M(b[1]), 0.0)
|
||||
sm.AddToDB = False
|
||||
sm.InsertSketch(True)
|
||||
boss(H, True)
|
||||
lips = [(fb[1], fb[4]) for ax, sg, fb, a, _ in planes()
|
||||
if ax == 0 and sg == -1 and abs(fb[0] - XO) < 0.02 and abs(fb[3] - XO) < 0.02]
|
||||
P(u' 唇边外表面 %d 个(期望 2):%s' % (len(lips), [(round(a, 3), round(b, 3)) for a, b in sorted(lips)]))
|
||||
want_l = [(YS0 - SPACER, YS0 + LIP), (YS1 - LIP, YS1 + SPACER)]
|
||||
if len(lips) != 2 or any(abs(a - c) > 0.02 or abs(b - d) > 0.02 for (a, b), (c, d) in zip(sorted(lips), want_l)):
|
||||
P(u'⛔ 导轨不对,停手'); sys.exit(9)
|
||||
|
||||
'''
|
||||
rep(u'\n# ── 验收 ──', RAILS + u'\n# ── 验收 ──')
|
||||
rep(u"check(u'最终', [X0, Y0, -H, X1, Y1, 0.0])", u"check(u'最终', [XO, Y0, -H, X1, Y1, 0.0])")
|
||||
rep(u"(期望 {1.7: 8, 2.1: 4, 30.0: 2})", u"(期望 {1.7: 8, 2.1: 4, 3.0: 4, 30.0: 2})")
|
||||
|
||||
open(DST, 'w', encoding='utf-8').write(s)
|
||||
print(u'写出', DST)
|
||||
在新工单中引用
屏蔽一个用户