螺钉2 单元体螺钉孔_弯曲适配 · 螺钉孔

在弯曲型材立柱上生成螺钉孔,使用扫掠 + 曲线求交定位
📂 LK → Hole 📄 ScrewHole2.cs 🔘 按钮 🎛️ 右键菜单 📐 动态参数

📖 功能概述

ScrewHole2 是 ScrewHole 的弯曲型材适配版。两者功能相似(在型材立柱上生成螺钉过孔+工艺孔),但定位方式不同:

💡 设计背景:当型材立柱不是直面(有横向弯曲)时,直接点投影可能找不到正确的切面位置。ScrewHole2 通过构建从基点到曲线起点的扫掠面,然后与参考面求交,得到贴合弯曲表面的孔位置。

🔄 ScrewHole vs ScrewHole2 差异对照

方面ScrewHole(直线版)ScrewHole2(弯曲版)
定位方式点投影到 Brep扫掠面 + CurveBrep 求交
第3个输入投影向量 (V) — 指定投影方向基线 (C) — 弯曲型材的截面轨迹曲线
适用场景直面型材立柱弯曲型材立柱("适应横向弯曲")
切线计算直接用输入向量 V从 CurveBrep 交点在基线上求切线方向

📥 输入参数

名称类型必填说明
螺钉基点 (P) Point 必需 型材位置的螺钉基点(默认隐藏)。
基点转换 (X) Transform 必需 转换矩阵(默认隐藏),将基点映射到世界坐标。
基线 (C) Curve 必需 弯曲型材的截面轨迹曲线默认隐藏),用于定位孔在弯曲表面上的位置。
投影面 (B) Brep 必需 螺钉定位参考面(默认隐藏),用于 CurveBrep 求交确定最终孔位。
半径 (R) Number 可选 手动半径,覆盖规格查表。连接后仅输出过孔。
孔长度表 (D) Number 可选 3个数字列表,默认 [-150, 130, 150]。
圆孔长度 (L) Number 可选 手动模式下的圆孔长度(默认 40)。

📤 输出参数

名称类型说明
过孔 (Via Hole) (VH) Brep 螺钉过孔段。使用 GKR/2 半径。
工艺孔 (Process Hole) (PH) Brep 加工工艺孔段。使用 GYKR/2 半径。手动半径模式不输出。

🧠 核心算法流程(差异部分)

1
Transform
基点 → 世界
2
扫掠 +
CurveBrep 求交
3
基线上求切线
确定孔方向
4
3段偏移
→ 2条轴向线
5
CreatePipe
输出结果

🔍 步骤 2:扫掠 + 求交(核心差异)

  1. 构造扫掠线 — 从转换后的点 G基线的起点 创建连接线段
  2. 扫掠面Brep.CreateFromSweep(C, line.ToNurbsCurve(), false, 0.01) 沿基线 C 扫掠得到辅助面
  3. 提取边线 — 收缩扫掠面的各个面到边,收集边缘曲线并合并
  4. CurveBrep 求交Intersection.CurveBrep(mergedEdges, B, 0.01, out curves, out points),获取交点在参考面上的位置
💡 为什么这么做?弯曲型材上,简单的点投影无法得到贴合曲面的孔位。通过先构建从基点到基线的扫掠面,再用这条边线与参考面求交,能得到更精确的弯曲表面贴合位置

📐 步骤 3:切线方向(另一差异)

与 ScrewHole 直接使用输入向量 V 不同,ScrewHole2 使用基线上交点处的切线方向作为孔道的轴向:

后续步骤(步骤 4→5)

与 ScrewHole 完全相同:按 Len 三段偏移 → 构造两条线 → CreatePipe 生成管体 → HoleInfo 附着。

⚠️ 注意事项

📋 组件信息

名称单元体螺钉孔_弯曲适配
英文名螺钉孔 (ScrewHole2)
分类LK → Hole
基类RighrClick_ButtonComponent + IGH_VariableParameterComponent
特色扫掠面+求交定位、弯曲适配、按钮(正向/反向)、动态参数
GUID{ECA30629-1191-4837-87A7-CECAB2412583}

更新日期:2026-06-29