← 返回函数库

comp

Geometry Subdivision Component 部分实现

CityEngine 官方语法

comp(selector) { label1 : Rule1 | label2 : Rule2 | ... }\ncomp(selector) { all : Rule | none : Rule }

参数说明

参数类型默认值说明
selectorselector组件类型:f(面)、e(边)、v(顶点)、h(洞)、fe(面+边)等。
labelselector组件标签:front、back、left、right、top、bottom、all、none、side。
Rulerule对应组件的规则名称或操作序列。

描述

组件分割(component split)。将当前形状按组件类型(面、边、顶点)分解,并用标签匹配将不同组件分配给不同规则。comp 是 CGA 中最核心的操作之一。

当前实现支持 comp(f) 的面分割,支持 front/back/left/right/top/bottom/all/none/side 标签。comp(e) 和 comp(v) 的支持有限。

官方示例

面组件分割:将体块分为顶面和侧面。

Mass --> comp(f) { top : Roof | side : Wall }

提取所有面:

Mass --> comp(f) { all : Face }

实现说明

CGA.js 中的 comp 实现基于 CityEngine 2025.1 官方文档。

🎨 3D 预览 — 组件分割

@StartRule\nLot --> primitiveCube(4, 4, 4)\n        comp(f) { top: Roof | side: Wall }\n\nRoof --> color(0.8, 0.3, 0.2)\nWall  --> color(0.6, 0.7, 0.75)

代码编辑器自动补全

枚举值自动补全:输入 comp( 时,补全列表直接显示:
comp(f)comp(e)comp(v)
分别对应面、边、顶点组件分割。