一个典型的操作是将建筑设计分解为几何组件。在 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 语法仅选择建筑物几何图形的垂直侧面并相应地创建新的立面形状。为此,规则解释器分析几何组件的方向(面法线的方向相对于示波器的方向)。
例子
建筑物占地面积被拉伸到 3D 体量模型。生成的范围以黄色显示。示波器的 x、y 和 z 尺寸分别以红色、绿色和蓝色表示。枢轴以相同的颜色显示。 |
|
体量模型分为一个主立面(正面)和多个侧立面(侧面)。现在每个面都是新形状的几何形状(主形状和侧面形状)。新形状的范围和枢轴取决于面的方向。x 轴指向第一条边,z 轴指向面法线。示波器的 z 维度为零。 |
通常,立面会进一步细分为楼层。每个新的Main和Side形状都有其枢轴和范围的定位和定向,以便可以方便地编写外观规则。
有关详细信息,请参阅 CGA组件拆分操作。