2026-10-14 22:03:18 +08:00
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
"""P09 工具法兰:末端法兰盘与 J6 直锁 hub。"""
|
|
|
|
|
|
import math
|
2026-10-15 03:31:20 +08:00
|
|
|
|
from arm.cad.helpers import cyl
|
|
|
|
|
|
from arm.cad.arm_build import D2R
|
|
|
|
|
|
from arm.kinematics import PLATE_T, X_ARM, Y_AXIS, Z_HUB6
|
|
|
|
|
|
from arm.cad.part_tools import CHAMFER_EDGE, CLAMP_BACKOFF, FILLET_SMALL, FILLET_TINY, make_direct_hub
|
2026-10-14 22:03:18 +08:00
|
|
|
|
|
|
|
|
|
|
def p_tool_flange(j6):
|
|
|
|
|
|
"""P09_工具法兰_螺旋体30%_墙4底5_竖打 深度圆角优化版
|
|
|
|
|
|
关键改进:
|
|
|
|
|
|
1. 外轮廓全圆角(R=4mm)
|
|
|
|
|
|
2. 法兰面倒角(2mm)
|
|
|
|
|
|
3. 螺孔边缘倒角(1.5mm)
|
|
|
|
|
|
"""
|
|
|
|
|
|
z_bot = Z_HUB6 - PLATE_T - 9.0
|
|
|
|
|
|
s = cyl(35.0, z_bot, Z_HUB6, X_ARM, Y_AXIS)
|
|
|
|
|
|
P09_M4 = []
|
|
|
|
|
|
|
|
|
|
|
|
# 4x M4螺栓孔
|
|
|
|
|
|
#
|
|
|
|
|
|
# 分布圆半径 20 -> 22(BCD 40 -> 44):R20 与 3xS01 输出螺钉的 Ø5.6 螺丝刀通道
|
|
|
|
|
|
# (make_direct_hub 里 cyl(2.8, 58.0, z_out+40) 在 BCD29=R14.5、相位 351.4/232.3/112.1°)
|
|
|
|
|
|
# 咬穿沉孔。0° 那个孔中心 (39.5,128) 到 351.4° 通道中心 (33.84,125.83) 只有 6.06mm,
|
|
|
|
|
|
# 而两孔半径之和是 3.5+2.8=6.30 —— 差 0.24mm,Ø7.0 沉孔壁被啃掉一块,
|
|
|
|
|
|
# 完整圆柱面(88mm²)裂成 45.7+35.4 两片,即用户截图里的月牙孔。
|
|
|
|
|
|
# 该相位差只有 8.6°,转动 M4 孔相位无法躲开(0/90/180/270 与 45 度错开全部仍 <6.30),
|
|
|
|
|
|
# 只能加大分布圆半径:R22 时最小中心距 7.96mm,余量 1.66mm。
|
|
|
|
|
|
# 边壁仍充足:R35 法兰外径 - (R22 + 沉孔 3.5) = 9.5mm。
|
|
|
|
|
|
for a in (0, 90, 180, 270):
|
|
|
|
|
|
rad = 22.0
|
|
|
|
|
|
u = rad * math.cos(a * D2R)
|
|
|
|
|
|
v = rad * math.sin(a * D2R)
|
|
|
|
|
|
# 实际切割推迟到 make_direct_hub 之后(见下)。这里只算出 4 个孔位。
|
|
|
|
|
|
P09_M4.append((X_ARM + u, Y_AXIS + v))
|
|
|
|
|
|
|
|
|
|
|
|
# 定位止口 + 走线孔
|
|
|
|
|
|
pilot = cyl(10.0, z_bot - 1.0, z_bot + 2.5, X_ARM, Y_AXIS)
|
|
|
|
|
|
thru = cyl(5.0, z_bot - 1.0, Z_HUB6 + 1.0, X_ARM, Y_AXIS)
|
|
|
|
|
|
s = s.cut(pilot).cut(thru)
|
|
|
|
|
|
|
|
|
|
|
|
# 直连法兰
|
|
|
|
|
|
# 【2026-10-03】M6 补上前端压盖后,J6 毂面必须让位 CLAMP_BACKOFF=5.5
|
|
|
|
|
|
# (详见 make_direct_hub 的 backoff)。P09 的法兰本体 z_bot/Z_HUB6 一个字没动,
|
|
|
|
|
|
# 让位的只是伸进 J6 腔里的那圈毂面 —— 圆盘下移后仍与法兰本体在局部 65..79.5
|
|
|
|
|
|
# 大面积交叠,熔接不受影响;工具端点 Z_TIP=93 也随之不变。
|
|
|
|
|
|
s = make_direct_hub(s, j6, r_disc=35.0, z_out=74.0, backoff=CLAMP_BACKOFF)
|
|
|
|
|
|
|
|
|
|
|
|
# 4x M4 孔(必须在 make_direct_hub 之后切)
|
|
|
|
|
|
#
|
|
|
|
|
|
# 直连法兰那步 fuse 了 R35 圆盘(局部 z=56.5..74 -> 全局 z=102..121 一侧),
|
|
|
|
|
|
# 会把先切的孔重新填死:分段求交显示 z=97..102 无干涉、z=102 以上整根杆都埋在料里
|
|
|
|
|
|
# (每段 12.57 mm^3 = pi*2^2*1,全截面被埋)。
|
|
|
|
|
|
#
|
|
|
|
|
|
# 孔径与深度同时修正:旧值 Ø3.7 比 M4 杆 Ø4.0 还细,且只到 z=105,
|
|
|
|
|
|
# 而 M4x16 头面在 z=97、杆要走到 z=113 —— 杆尾 8mm 无处可去(干涉 147.3 mm^3)。
|
|
|
|
|
|
# Ø4.4 是 M4 标准间隙孔(ISO 273 medium ≈ Ø4.3)。
|
|
|
|
|
|
# 孔顶要盖过 M4x16 的杆尾:头面 z=97 + 杆长 16 = z=113,故开到 Z_HUB6+4=115,
|
|
|
|
|
|
# 比杆尾多留 2mm(实测开到 112 时最后 1mm 杆尾仍撞料 37.7mm³)。
|
|
|
|
|
|
for (fx, fy) in P09_M4:
|
|
|
|
|
|
s = s.cut(cyl(2.2, z_bot - 1.0, Z_HUB6 + 4.0, fx, fy))
|
|
|
|
|
|
s = s.cut(cyl(3.5, z_bot - 1.0, z_bot + 4.0, fx, fy))
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 关键圆角优化 ==========
|
|
|
|
|
|
try:
|
|
|
|
|
|
# 外轮廓圆角
|
|
|
|
|
|
s = s.edges("|Z").fillet(FILLET_SMALL)
|
|
|
|
|
|
except:
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
# 法兰面倒角
|
|
|
|
|
|
s = s.edges("<Z").chamfer(CHAMFER_EDGE)
|
|
|
|
|
|
except:
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
# 顶部边缘圆角
|
|
|
|
|
|
s = s.edges(">Z").fillet(FILLET_TINY)
|
|
|
|
|
|
except:
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JOINT = 'J6'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def specs(JS):
|
|
|
|
|
|
"""本件的 (件号, 中文名, 构建 thunk, 配色, 说明) 清单;顺序即 BOM 顺序。"""
|
|
|
|
|
|
j6 = JS["J6"]
|
|
|
|
|
|
return [
|
|
|
|
|
|
("P09_工具法兰_螺旋体30%_墙4底5_竖打", "末端工具法兰", lambda: p_tool_flange(j6), 0xdc2626,
|
|
|
|
|
|
"V2圆角:外轮廓R=3mm,法兰面倒角2mm;【2026-10-02】打印填充由100%降到30%:该截面安全系数288是全机裕度最大的件,满填充纯属浪费(件号同步改为P09_工具法兰_螺旋体30%)"),
|
|
|
|
|
|
]
|