核心概念
切片位置本质
切片位置数值是基于组件局部坐标系的相对比例值,用于定义拉伸操作中"切割平面"的位置。这些数值不依赖具体尺寸,具有通用性和适配性。
坐标系基准
所有数值基于组件自身的局部坐标系,原点为组件几何中心,轴向与组件自然朝向一致。X轴为宽度,Y轴为深度,Z轴为高度。
数值范围
每个轴向的数值范围为-1.0(边界起点)至1.0(边界终点),0点对应组件中心。通过这些相对值可精准控制切片位置,无需关心具体尺寸。
参考坐标系
局部坐标系与基准点
所有切片位置数值基于组件自身的局部坐标系,而非全局坐标系。理解这一点是正确配置切片的基础。
原点位置
坐标系原点(0,0,0)为组件的几何中心,由SketchUp自动计算得出(bounds.center)。
X轴方向
X轴通常对应组件的宽度方向,从左(-1.0)到右(1.0)。
Y轴方向
Y轴通常对应组件的深度方向,从前(-1.0)到后(1.0)。
Z轴方向
Z轴通常对应组件的高度方向,从下(-1.0)到上(1.0)。
数值解析
X轴数值含义详解
| 数值 | 位置描述 | 计算公式(实际坐标) | 示意图(X轴) |
|---|---|---|---|
| -1.0 | 组件最左侧边界 | bounds.min.x | ├─────┼─────┼─────┼ |
| -0.75 | 左侧边界到中心的3/4处 | center.x - (axis_length / 2) * 0.75 | ─●───┼─────┼─────┼ |
| -0.5 | 左侧边界到中心的中点 | center.x - (axis_length / 2) * 0.5 | ────●─────┼─────┼ |
| -0.25 | 左侧边界到中心的1/4处 | center.x - (axis_length / 2) * 0.25 | ─────┼──●───┼─────┼ |
| 0 | 组件几何中心 | center.x | ─────┼─────●─────┼ |
| 0.25 | 中心到右侧边界的1/4处 | center.x + (axis_length / 2) * 0.25 | ─────┼─────┼──●───┼ |
| 0.5 | 中心到右侧边界的中点 | center.x + (axis_length / 2) * 0.5 | ─────┼─────┼────●───┼ |
| 0.75 | 中心到右侧边界的3/4处 | center.x + (axis_length / 2) * 0.75 | ─────┼─────┼─────┼──● |
| 1.0 | 组件最右侧边界 | bounds.max.x | ─────┼─────┼─────┼───┤ |
X轴切片
控制组件"宽度方向"的切片位置,数值范围从左侧(-1.0)到右侧(1.0)。
Y轴切片
控制组件"深度方向"的切片位置,数值范围从前侧(-1.0)到后侧(1.0)。
Z轴切片
控制组件"高度方向"的切片位置,数值范围从下侧(-1.0)到上侧(1.0)。
配置示例与效果
示例1: 中心单一切片
X轴配置: [0]在组件中心位置设置一个切片,将组件分为左右两部分。拉伸时,两侧会对称变化。
示例2: 三等分切片
Y轴配置: [-0.5, 0.5]在Y轴中心上下各1/4处设置两个切片,将组件分为上、中、下三部分。可单独控制中间区域的拉伸。
示例3: 五等分切片
X轴配置: [-0.75, -0.25, 0.25, 0.75]在X轴上按1/4比例均匀设置四个切片,将组件分为五个区域。适合复杂造型的精细局部拉伸。
示例4: 自定义多轴切片
多轴配置同时在多个轴向上设置切片,实现复杂的三维拉伸效果。此例在X轴设3个切片,Z轴设2个切片。
使用指南
如何配置切片位置
- 确定拉伸轴向:根据需要拉伸的方向,选择X轴(宽度)、Y轴(深度)或Z轴(高度)。
- 选择切片数量:根据组件复杂度和拉伸需求,决定在该轴向上设置多少个切片。
- 计算切片位置:使用-1.0至1.0之间的数值,表示切片相对于组件中心的位置。
- 应用配置:将切片位置数组(如[-0.5, 0.5])传入相关方法或保存在组件属性中。
实用技巧
- • 使用偶数个切片可实现对称拉伸效果
- • 在关键结构处增加切片,避免变形时出现异常
- • 复杂组件可在多个轴向上同时设置切片
- • 先在简单组件上测试配置,再应用到复杂模型
常见问题解答
为什么使用相对值而非固定尺寸?
使用相对值(-1.0至1.0)的优势在于配置不依赖组件实际大小,同一组切片位置可应用于不同尺寸的同类组件,确保比例一致性。
切片数量越多越好吗?
不一定。更多切片提供更精细的控制,但会增加计算复杂度,可能影响性能。建议根据实际需要选择适当的切片数量。
数值超出-1.0至1.0范围会怎样?
超出范围的数值会被自动约束到边界(-1.0或1.0),但可能导致意外的拉伸效果,建议保持在有效范围内。
如何处理嵌套组件?
对于嵌套组件,需确保每个组件都有独立的切片配置。代码中的`make_unique`方法会自动处理这一点,确保修改不会影响其他实例。