切片位置数值含义

理解基于组件局部坐标系的相对比例值,掌握精准控制拉伸操作的核心参数

核心概念

切片位置本质

切片位置数值是基于组件局部坐标系的相对比例值,用于定义拉伸操作中"切割平面"的位置。这些数值不依赖具体尺寸,具有通用性和适配性。

坐标系基准

所有数值基于组件自身的局部坐标系,原点为组件几何中心,轴向与组件自然朝向一致。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个切片。

使用指南

如何配置切片位置

  1. 确定拉伸轴向:根据需要拉伸的方向,选择X轴(宽度)、Y轴(深度)或Z轴(高度)。
  2. 选择切片数量:根据组件复杂度和拉伸需求,决定在该轴向上设置多少个切片。
  3. 计算切片位置:使用-1.0至1.0之间的数值,表示切片相对于组件中心的位置。
  4. 应用配置:将切片位置数组(如[-0.5, 0.5])传入相关方法或保存在组件属性中。

实用技巧

  • • 使用偶数个切片可实现对称拉伸效果
  • • 在关键结构处增加切片,避免变形时出现异常
  • • 复杂组件可在多个轴向上同时设置切片
  • • 先在简单组件上测试配置,再应用到复杂模型

常见问题解答

为什么使用相对值而非固定尺寸?

使用相对值(-1.0至1.0)的优势在于配置不依赖组件实际大小,同一组切片位置可应用于不同尺寸的同类组件,确保比例一致性。

切片数量越多越好吗?

不一定。更多切片提供更精细的控制,但会增加计算复杂度,可能影响性能。建议根据实际需要选择适当的切片数量。

数值超出-1.0至1.0范围会怎样?

超出范围的数值会被自动约束到边界(-1.0或1.0),但可能导致意外的拉伸效果,建议保持在有效范围内。

如何处理嵌套组件?

对于嵌套组件,需确保每个组件都有独立的切片配置。代码中的`make_unique`方法会自动处理这一点,确保修改不会影响其他实例。