5.5 KiB
5.5 KiB
| outline | ||
|---|---|---|
|
ParametricCylinder
- 源文件:
packages/sdk/src/parametric/ParametricCylinder.ts - 文档位置:
packages/docs/api/parametric/ParametricCylinder.md
类:ParametricCylinder
- 作用:高精度参数化圆柱体 支持完全自定义的圆柱体生成,包括顶部/底部半径、高度、分段数等参数 可以创建圆柱、圆锥、圆台等多种形状
- 继承/实现:
extends Mesh<BufferGeometry, Material>;implements IParametricGeometry
构造函数
new ParametricCylinder(options: ICylinderOptions = {})
-
作用:创建参数化圆柱体
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
options |
ICylinderOptions |
否 | - 圆柱体配置选项 |
- 出参:
ParametricCylinder - 返回说明:返回当前类实例。
属性
| 属性名 | 可见性 | 类型 | 作用 |
|---|---|---|---|
options |
public |
Required<ICylinderOptions> |
用于保存 options 对应的数据。 |
方法
createCone(radius: number = 1, height: number = 2, radialSegments: number = 64): ParametricCylinder
-
作用:创建圆锥体(顶部半径为0的圆柱体)
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
radius |
number |
否 | - 底部半径 |
height |
number |
否 | - 高度 |
radialSegments |
number |
否 | - 径向分段数 |
- 出参:
ParametricCylinder - 返回说明:圆锥体实例
createGeometry(): CylinderGeometry
-
作用:创建圆柱体几何体 作用:基于当前实例的
options构造并返回一个新的THREE.CylinderGeometry。 入参:无 出参:CylinderGeometry行为说明:读取options(包括radiusTop、radiusBottom、height、radialSegments等)并以这些参数构造THREE.CylinderGeometry,用于初始化或替换实例的geometry。 -
入参:无
-
出参:
CylinderGeometry -
返回说明:返回
CylinderGeometry。
updateParameters(options: Partial<ICylinderOptions>): void
-
作用:更新圆柱体参数并触发几何体重建 作用:合并并应用提供的参数到内部
options,随后重新生成几何体。 入参: -
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
options |
Partial<ICylinderOptions> |
是 | - Partial<ICylinderOptions> 要更新的参数字段集合 出参:void 行为说明:仅覆盖提供的字段,然后调用 updateGeometry() 以使几何体反映新的参数。 |
- 出参:
void - 返回说明:无返回值。
updateGeometry(): void
-
作用:更新几何体 作用:根据当前
options重新生成并替换网格的几何体。 入参:无 出参:void行为说明:销毁现有几何体(调用dispose()),调用createGeometry()创建新几何并赋值给this.geometry。 -
入参:无
-
出参:
void -
返回说明:无返回值。
dispose(): void
-
作用:销毁资源 作用:释放几何体与材质占用的 GPU/内存资源并断开引用。 入参:无 出参:
void行为说明:依次调用geometry.dispose()和material.dispose()(若材质支持),并清理内部引用,便于垃圾回收。 -
入参:无
-
出参:
void -
返回说明:无返回值。
构造示例
- 来源:
packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalCasingDamageDisasterPanel.vue
const position = {x: 0, y: 0.5, z: 0};
const cylinder = new ParametricCylinder({
radiusTop: 0.21,
radiusBottom: 0.21,
height: 0.2,
//------ 圆柱上下不闭合 开始------
openEnded: true,
//------ 圆柱上下不闭合 结束------
//------ 圆柱细分优化 开始------
radialSegments: 96,
//------ 圆柱细分优化 结束------
material: new THREE.MeshBasicMaterial({
color: '#ff0000',
side: THREE.DoubleSide,
}),
});
cylinder.renderOrder = 1;
cylinder.position.set(position.x, position.y, position.z);
viewer!.scene.add(cylinder);
- 来源:
packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalWellboreInstabilityDisasterPanel.vue
const position = {x: 1.5019181086420077, y: 1.1203964954097632, z: 1.5};
const cylinder = new ParametricCylinder({
radiusTop: 0.21,
radiusBottom: 0.21,
height: 0.2,
//------ 圆柱上下不闭合 开始------
openEnded: true,
//------ 圆柱上下不闭合 结束------
//------ 圆柱细分优化 开始------
radialSegments: 96,
//------ 圆柱细分优化 结束------
material: new THREE.MeshBasicMaterial({
color: '#ffff00',
side: THREE.DoubleSide,
}),
});
cylinder.renderOrder = 1;
cylinder.name = 'WellboreInstability_1';
cylinder.position.set(position.x, position.y, position.z);
viewer!.scene.add(cylinder);
函数示例
- 当前 Demo 中没有直接展示
ParametricCylinder的公开方法调用。
Demo 参考
ParametricCylinder
以下示例文件中可以看到该 API 的实际调用方式:
packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalCasingDamageDisasterPanel.vuepackages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalWellboreInstabilityDisasterPanel.vuepackages/demo/src/disasterFormationPanel/OilGasScene/CasingDamageDisasterPanel.vuepackages/demo/src/disasterFormationPanel/OilGasScene/WellboreInstabilityDisasterPanel.vuepackages/demo/src/panels/TunnelScene/StressApplicationPanel.vue