双向拉伸 截面拉伸 · ExtrudeTwoDirection

将曲线或曲面沿指定方向拉伸,支持双向和单向两种模式
📂 LK → Brep 📄 ExtrudeTwoDirection.cs 🔘 按钮切换

📖 功能概述

将输入的曲线曲面沿指定向量方向拉伸为实体,支持两种模式:

对于非封闭的曲面(有露出边缘),组件会自动检测边缘并封口,生成闭合实体。

📥 输入参数

名称类型必填说明
截面 (B) Curve / Brep 必需 需要拉伸的几何体。支持曲线(拉伸为曲面)或曲面(拉伸为实体)。
方向 (D) Vector3d 必需 拉伸的方向向量。双向模式下方向长度翻倍(正反各一半),单向模式下为完整长度。

📤 输出参数

名称类型说明
拉伸结果 (E) Brep 拉伸后的曲面或实体。曲线输入时输出拉伸曲面,曲面输入时输出封口后的实体。

🔘 按钮功能

组件带有切换按钮,点击切换两种拉伸模式:

🔵 双向模式

方向向量长度自动翻倍,沿正反方向各拉伸一半。原始截面位于结果的正中央。

例:方向向量为 (0,0,10),则向正 Z 拉 5 个单位,向负 Z 拉 5 个单位。

🟢 单向模式

沿方向向量正向完整拉伸。原始截面位于结果的起始位置。

例:方向向量为 (0,0,10),则向正 Z 拉 10 个单位,原始位置在底部。

🧠 核心逻辑

📐 曲线拉伸 → 曲面

当输入为曲线时:

  1. 调用 Surface.CreateExtrusion 将曲线沿向量拉伸成曲面
  2. 执行 Faces.SplitKinkyFaces() 分割扭曲面片
  3. 双向模式下对结果整体平移 -0.5 × 方向向量,使曲线位于中间

📐 曲面拉伸 → 闭合实体

当输入为曲面时:

  1. 查找曲面上所有未封闭的边缘(裸露的边缘)
  2. 拉每个裸露边缘生成侧面曲面
  3. 将原始曲面平移到目标位置作为顶面
  4. 使用 Brep.JoinBreps 将底面、侧面和顶面合并为闭合实体
  5. 双向模式下整体平移 -0.5 × 方向向量
1
输入
截面 + 方向
2
识别输入
类型
3
曲线:拉伸成面
曲面:封口成体
4
双向 → 居中
单向 → 原位

🧪 典型使用场景

场景说明
对称拉伸 双向模式适合需要对称居中的造型。例如以平面为中间面,向两侧等距拉伸成体。
直壁建模 单向模式适合从基底生长的壁面。例如从地平面向上拉伸墙体。
曲面封实体 将非封闭曲面沿法线方向拉伸并封口,得到有厚度的实体。
曲线变片体 将边界曲线拉伸为片状曲面,作为后续布尔运算的切割面。

⚠️ 注意事项

📋 组件信息

名称截面拉伸
英文名ExtrudeTwoDirection
分类LK → Brep
基类ButtonComponent
GUID1528961C-053E-402E-88DD-9B40D896CEE4