pth 点转圆孔_改良 · 圆孔

由基点 + 轴向向量生成圆孔管状 Brep,支持四种孔类型同步输出(过孔/底孔/工艺孔/机丝孔)
📂 LK → Hole 📄 PointToHole_UI5.cs 🖥️ 自定义UI 📐 动态输出 🎛️ 右键菜单

📖 功能概述

输入一个基点轴向向量,根据选定的螺钉规格,同时生成多种不同类型的圆孔(过孔/底孔/工艺孔/机丝孔)实体。每种孔类型对应不同的孔径标准,各自的输出端口可通过自定义 UI 面板独立开关。

💡 核心特性:
  • 四孔合一 — 一个组件同时输出过孔(VH)、底孔(BH)、工艺孔(PH)、机丝孔(TH),每种孔使用不同的孔径标准
  • 自定义 UI 面板 — 右键菜单弹出带复选框和下拉菜单的配置面板,无需连线即可切换规格、材料、输出类型
  • 动态输出端口 — 输出端口随 UI 开关自动显示/隐藏,画布整洁
  • 手动半径覆盖 — 连接"半径"端口后可覆盖规格查表,自定义孔径(此时只输出过孔)
  • HoleInfo 元数据 — 所有输出孔均附着类型和规格信息

🖥️ 自定义 UI 面板

右键点击组件,弹出自定义 MyUserControl5 面板,包含以下控件:

分组控件选项说明
孔类型开关 4 个 CheckBox 过孔(VH) / 底孔(BH) / 工艺孔(PH) / 机丝孔(TH) 勾选后对应的输出端口显示并产生结果。可多选。
规格选择 Dropdown M3 ~ M16 选择螺钉规格,决定各孔径值
材料类型 Dropdown 铝型材 / 钢型材 切换孔径取值表
锁定/解锁 CheckBox 锁定 / 解锁 锁定状态下禁用规格选择和材料切换(当"半径"输入连接时自动锁定)
攻丝类型 CheckBox 攻丝 / 不攻丝 切换机丝孔的孔径标准(JSR / JSR2),仅影响 TH
💡 UI ↔ 属性双向同步:所有 UI 控件的状态与组件内部属性(S1~S4, Sid, Sid2, Lock, Stp)双向绑定。通过 UI 面板或 Write/Read 反序列化修改都会保持同步。

📥 输入参数

名称类型必填说明
(P) Point 必需 圆孔的基点(默认隐藏)。孔的中轴线穿过此点。
向量 (V) Vector 必需 圆孔的轴向方向(默认隐藏),组件内部自动单位化。
圆孔长度 (L) Number 可选 孔的贯穿长度(默认 40)。必须 > 0,否则跳过求解。
半径 (R) Number 可选 手动指定的半径值。连接后覆盖规格查表,且仅输出过孔(VH),其他孔类型自动禁用。

📤 输出参数(动态)

以下输出端口由 UI 面板中的复选框控制是否显示。默认仅"过孔"开启:

名称类型孔径来源说明
过孔 (Via hole) (VH) Brep GKR[Sid]/2 或 手动R 螺钉贯穿的通孔。默认开启。
底孔 (Bottom hole) (BH) Brep DKR[Sid]/2 用于攻丝前的预钻孔。默认关闭。
工艺孔 (Process hole) (PH) Brep GYKR[Sid]/2 加工工艺孔。默认关闭。
机丝孔 (Tapped hole) (TH) Brep JSR[Sid]/2 或 JSR2[Sid]/2 机丝攻丝孔,孔径由攻丝类型决定。默认关闭。
动态注册方式:勾选/取消勾选时,组件通过 Params.RegisterOutputParam() / Params.UnregisterOutputParameter() 动态添加或移除输出端口。

🧠 核心算法流程

1
读取输入
P, V, L, (R)
2
查表获取
4 种半径
3
CreatePipe
4 种孔独立
4
输出
选中类型

🔍 步骤 2 详细:半径确定逻辑

条件行为
R == -1(未连接或值未改变)使用规格查表:根据 UI 选择的 Sid(规格索引)和 Sid2(铝/钢)从 GKR/DKR/GYKR/JSR 系列列表中获取对应的标准半径
R != -1(手动输入)使用 R 值作为半径,且 只输出过孔(VH),Message 显示"φXXX圆孔"
Lock == true(自动锁定)当半径端口已有连线(SourceCount > 0)时,BeforeSolveInstance 中自动锁定 UI

🔧 步骤 3 详细:几何构造

  1. 创建轴向线Line(P, V, L),然后平移 L/2 使孔居中在 P 点两侧
  2. 管线生成Brep.CreatePipe(line, radius, true, PipeCapMode.Round, true, 0.1, 0.1),带圆头封口的管状实体
  3. HoleInfo — 每个孔都通过 HoleInfo.SetHoleInfo() 附着类型("圆孔"/"机丝孔")和规格名称
  4. 输出 — 根据 S1~S4 开关状态,将对应的孔 Brep[] 设置到对应名称的输出端口

🔒 自动锁定机制

BeforeSolveInstance() 中执行 Rparam()

💾 序列化与状态持久化

组件通过 Write / Read 持久化以下状态:

属性类型说明
S1Sty_1Boolean过孔开关
S2Sty_2Boolean底孔开关
S3Sty_3Boolean工艺孔开关
S4Sty_4Boolean机丝孔开关
SidSIDInteger规格索引
Sid2SID2Integer材料索引
LockLockBoolean锁定状态

🧪 典型使用场景

场景说明
型材连接孔 输入型材立柱中心点位 + 方向,同时输出过孔和工艺孔,分别用于螺钉连接和加工定位。
攻丝前钻孔 开启底孔(BH)输出,生成攻丝前的预钻孔,再接入攻丝组件。
自定义非标孔 连接"半径"端口输入自定义直径,覆盖标准规格,生成单个非标过孔。
多规格比对 复制多个组件,分别设定不同规格,并排输出观察孔径差异。

⚠️ 注意事项

📋 组件信息

名称点转圆孔_改良
英文名圆孔 (PointToHole_UI5)
分类LK → Hole
基类GH_Component + IGH_VariableParameterComponent
特色自定义UI面板、动态输出端口、4种孔类型、半径覆盖、自动锁定
GUID{FFDE8636-75AB-4A6B-AB0B-DA700402CEF8}

更新日期:2026-06-29