语法
- comp(component) { selector operator operations | ... }
参数
- component - selector要分割为的组件
- f - 面。
- e - 边。
- fe - 面边。
- v - 折点。
- g - 组。
- m - 材料。
- h - 孔洞。
- selector - (selector、bool、float)
- { front | back | left | right | top | bottom } - 通过将分量的 y 法线方向划分为相应的象限(相对于当前形状的范围坐标系)来分析其 y 法线。
- { object.front | object.back | object.left | object.right | object.top | object.bottom | object.side } - 通过将分量的 y 法线方向划分为相应的象限(相对于当前初始形状的对象坐标系)来分析它们的 y 法线。
- { world.south | world.north | world.west | world.east | world.up | world.down | world.side } - 通过将分量的 y 法线方向划分为相应的象限(相对于世界坐标系)来分析它们的 y 法线。
- { vertical | horizontal | aslant | nutant } - 相对于当前形状的局部坐标系的 xz 平面分析 y 法线。 法线和 xz 平面之间的角度用于对分量进行分类,范围以度为单位:
- 水平:]78.75, 90]
- 倾斜:]11.25, 78.75]
- 垂直:]-11.25, 11.25]
- 下垂:]-78.55, -11.25]
- 水平:]-90, -78.75]
- side - 选择除水平分量外的所有分量。
- { border | inside } - 分别位于几何边界或完全位于几何内部的组件。 边界边仅连接到一个面;边界面包含一个或多个边界边;边界折点是一个或多个边界边的起点或终点。 该选择器不适用于孔洞。
- { eave | hip | valley | ridge } - 这些选择器仅适用于边,并且设计为与屋顶结合使用。 有关详细信息,请参阅以下部分。
- { street.front | street.back | street.left | street.right | street.side } - 如果 streetWidth 属性在初始形状上可用,这些选择器可用于识别面向街道的组件。 有关详细信息,请参阅以下部分。
- all - 选择所有组件。
- { isTagged(tagQuery) | isTagged(tagQuery, subcomponent) } - 选择标记组件:有关详细信息,请参阅以下部分。
- 逻辑表达式 (bool) - 选择表达式计算结果为 true 的所有组件。 用户定义的函数以及上述选择器均可在表达式中使用。
- index (float) - 选择第 index 个组件(从 0 开始)。
- operator运算符用于定义如何使用所选组件生成后续形状。 有效运算符如下:
- : 将每个所选组件放入新形状。
- = 所有选定组件将合并成一个新形状。
- operations要在新创建的形状上执行的形状操作的顺序。
描述
通过 comp 操作(组件分割),可以将形状划分为拓扑组件,这些拓扑组件可以是面、边、折点、组、材料或孔洞。 可以使用 index 或一组选择器来选择组件。 如果至少一个几何组件(通常是一个面)满足要求,则组和材料组件满足特定的选择关键字。 选定的组件将转换为新的形状,并通过一系列形状操作进行处理。 根据 operator,将为每个单独的选定组件创建一个形状 (":") ,或者为整个选定组件集创建一个形状 ("=")。
组件分割的选择参数以排除方式工作:如果参数选择了特定组件,则该组件不能成为另一个选择的一部分(从左到右)。
新生成的形状的局部坐标系(pivot 和 scope)根据几何的拓扑对齐;组件分割是可操纵形状枢轴的几个形状操作之一。
- f
如果是面组件分割,则 x 轴将平行于面的第一条边,z 轴将指向面的法线。 枢轴将位于面的第一个边的第一个折点;范围将是面的边界框,即,新兴形状的范围的 z 维度设置为零。 请参阅示例。
- e
如果是边组件分割,枢轴和范围的 x 轴沿着边,而 z 轴指向相邻面的法线的平均值。 范围的 y 和 z 维度设置为零,x 维度是边的长度。 枢轴将位于边的端点之一。 边的索引如下:索引 0 是第一个面的第一条边,索引 1 是第一个面的第二条边,以此类推。共享的边在第二次遇到时被跳过。 请参阅示例。
- fe
与边相反,面边被视为对于每个面都是单独的。 类似地,首先按照面建立索引,其次是按照每个边建立索引,但不会跳过共享边。 此外,与边相反,面边具有唯一的方向,该方向由其所属的面的方向确定。 枢轴和范围的 x 轴面向面,z 轴指向与边垂直的面和面法线。 枢轴将位于面边的第一个折点。 请参阅示例。
- v
如果是折点组件分割,枢轴位于折点处,z 轴将指向相邻面法线的平均值,并且所有范围维度均设置为零。
comp 形状属性
每个生成的形状都设置了许多 comp 形状属性,请参阅 comp 属性。
修剪平面
此外,对于面,组件分割会生成修剪平面。 修剪平面以二等分角沿着新面的共享边放置。 修剪平面的目的是双重的。 一方面,修剪可处理两个相邻面的边界上的几何交叉点,而另一方面,修剪可用于处理非矩形面。 修剪平面是使用插入操作、原始操作或修剪操作来应用的。
根据共享边的方向,修剪平面分为水平平面和垂直平面。 可以通过将修剪属性设置为 true 或 false 来打开或关闭它们。 默认情况下,垂直修剪平面的修剪功能将被激活,而水平修剪平面的修剪功能将被取消激活。 查看下面的修剪平面示例。
注:
- 仅当使用 : 运算符时才会生成修剪平面。
- 可以在程序化运行时首选项中配置修剪平面。
遮挡物形状
在应用组件分割之前,自动生成遮挡物形状。 遮挡物形状设置为适用于未标注遮挡查询。
屋顶边
有许多选择器旨在对典型的屋顶边进行分类:
- eave - 屋顶底部的水平边界边。 边始终围绕原始面逆时针定向。
- hip - 内部边连接到至少一个屋檐边。 四坡边始终朝上,即终点的 y 坐标比起点大。
- valley - 两个连接面形成凹陷的内部边。 山谷边始终朝上,即终点的 y 坐标比起点大。
- ridge - 并非四坡或山谷的内部边。 山脊边始终朝上,即终点的 y 坐标比起点大。
这些选择器只能应用于边组件分割。
下图显示了示例。
街道选择器
可以使用 street.front 选择器选择与街道相邻的组件,可以使用 street.back 选择器选择后部组件,并且可以使用 street.left 和 street.right 选择器选择位于前后之间的组件。 street.side 合并左右组件。 以下是 street.xxx 选择器的示例。
这些选择器取决于 streetWidth 属性映射的可用性。请参阅自动生成的街道宽度属性。 如果该属性不可用,则组件选择将回退到 object.xxx 选择器。
相关内容
示例
立面选择/面分割细节
让我们将建筑物的质量模型分为主立面和许多侧立面。 注意枢轴的方向(带注记的轴)。 | |
| |
现在,每个面都具有新形状的几何;新形状的范围和枢轴取决于面的方向。 x 轴将指向第一条边,z 轴将指向面法线。 范围的 z 维度为零。 |
选择器 1:基于象限
通过使用选择器为球面几何的表面着色来演示选择器。 该选择与局部坐标系(显示的范围)相对。
|
选择器 2:基于与 y 轴的角度
注意球体两极上的水平区域(蓝色)。
|
逻辑选择表达式
可以在逻辑选择器表达式中使用静态选择器。 可同时将顶面和前面组合到单个形状中。
| |
将仅选择表面积大于 1 并且不在内部的表面。
| |
将使用自定义函数以选择顶面以及正好具有 3 个折点的所有面。
|
基于索引的选择
通过按索引直接查找网格,也可以将网格分解成其组件。 索引方案本质上是在模型本身中进行编码的。 | |
仅选择圆柱的面 0、2 和 4。
|
修剪平面
在共享边处,插入修剪平面(绿色)。
| |
使用修剪平面剪切插入的几何。
| |
默认情况下,水平修剪平面已关闭。 在插入几何之前启用它们会得到不同的结果。
|
运算符
对于选择器所选择的每个组件,使用 ":" 运算符都会得到新形状。 在下面的示例中,为拉伸几何的每一侧创建一个形状。 因此,地块形状有五个后继形状(每侧一个)。 每个后继形状的枢轴和范围的设置都不同。
| |
相反,对于选择器所选择的所有组件,使用 "=" 运算符都会得到一种新的形状。 在下面的示例中,为拉伸几何的所有五个侧面创建一个形状。 新形状的几何包含所有五个面,并且相对于第一个选定面设置了枢轴和范围。
|
边界和内部选择器
图片显示了初始形状。 它是一个细分平面,由多个面组成。 | |
该示例选择边界和内部面并为其着色。
| |
在此处,选择了边界和内部边,并插入了彩色立方体。
| |
最后,边界和内部折点用于插入彩色立方体。
|
isTagged 选择器
本示例将根据包络操作应用的表面标签为表面组件着色。
| |
将使用标签查询 "envelope.side" 以同时选择所有底面、斜面和内侧面并为其着色。
| |
将选择标记为 "envelope.top" 的表面边并插入彩色立方体。
| |
将选择标记为 "envelope.top" 的表面折点并插入彩色球体。
|
注:
默认情况下,可以根据相邻表面的标签选择边,可以根据相邻表面和边的标签选择折点。 但是,要根据边或折点的标签选择表面,必须提供 subcomponent 参数,如以下部分所示。
高级标签选择
通过使用 e 子组件选择器,将选择与标记为 "envelope.bottom" 的表面共享边或者具有此类标记的边的所有表面。
请注意,同时还将选择标记为 "envelope.bottom"(蓝色)的表面。 | |
本示例将选择与底面的边相邻的所有斜面。
| |
本示例将选择与底面共享折点的所有边并插入彩色立方体。
|
边分割细节
建筑物质量模型被分割为其边,并且内置立方体模型被插入到每个边形状中。 将新形状的 pivot 设置为边的起始顶点,对齐方式如下:x 轴指向边,z 轴为相邻面法线的平均值,y 轴与另外两个从前的轴垂直。 范围的平移和旋转为零,大小为(边长度,0,0)。
| |
分割为面边会创建更多组件,对于每个面,都将边分开来处理。 边朝向面方向。 现在将 pivot 设置为边的起始折点,x 轴指向面方向,z 轴指向与边垂直的面和面法线。
|
折点分割细节
建筑物质量模型被分割为其折点。 新形状的枢轴(上述规则中的 VShapes)设置为折点位置,对齐方式如下:z 轴是相邻面法线的平均值,并且选择了 x 轴和 y 轴,以使其彼此垂直。 范围的平移、旋转和大小为零。
|
组分割细节
树模型被分割为组。
|
材料分割细节
树模型被分割为材料。 在这种情况下,组和材料是相同的。
|