一个典型的操作是将建筑设计分解为几何组件。在 CGA 形状语法中,组件拆分允许将形状分解为较小尺寸的形状。

下面的操作根据其几何形状将前驱形状拆分为其组件,并对每个组件执行一组操作。

comp(组件){选择器:操作| 选择器:操作…}

参数组件标识要拆分的组件的类型;例如,可以将面设置为f,边设置为e ,顶点设置为v选择器参数定义组件的选择。

作为一个基本示例,下面的规则为形状 A 的几何形状的所有面创建一个新的形状 B :

A --> comp(f) { all : B }

 

同样我们使用

comp(e) { all : B }

 

comp(v) { all : B }

 

分别分割成边和顶点。

选择器

要仅访问选定的组件,我们使用操作调用,例如:

comp(f) { 3 : B }

创建一个由原始形状的第三个面组成的形状。这样的调用不是很通用,并且需要用户了解先前形状的几何形状的拓扑。因此,作为替代方案,我们使用选择器: 

Building --> comp(f) { side : Facade }

 

此 CGA 语法仅选择建筑物几何图形的垂直侧面并相应地创建新的立面形状为此,规则解释器分析几何组件的方向(面法线的方向相对于示波器的方向)。

例子

Building --> extrude(10)

建筑物占地面积被拉伸到 3D 体量模型。生成的范围以黄色显示。示波器的 x、y 和 z 尺寸分别以红色、绿色和蓝色表示。枢轴以相同的颜色显示。

GUID-9A9B94A1-ECE0-4DBA-B5A9-27589890D29D-web
Building --> extrude(10)
 comp(f) { front : color("#FFFF00") Main. |
           side  : color("#00FFFF") Side. }

体量模型分为一个立面(正面)和多个侧立侧面)。现在每个面都是新形状的几何形状(形状和侧面形状)。新形状的范围和枢轴取决于面的方向。x 轴指向第一条边,z 轴指向面法线。示波器的 z 维度为零。

GUID-F6D682E6-6AC3-457F-B623-4558021DE1D1-web
 

通常,立面会进一步细分为楼层。每个新的MainSide形状都有其枢轴和范围的定位和定向,以便可以方便地编写外观规则。

有关详细信息,请参阅 CGA组件拆分操作