comp 函数

语法

  • float[] comp(component) { selector operator expression | ... }
  • string[] comp(component) { selector operator expression | ... }
  • bool[] comp(component) { selector operator expression | ... }

参数

  1. component, selector, operator
    这些参数与 comp 操作的相同。
  2. expression—(float, string, bool)
    逐个组件计算的表达式。 所有表达式的类型必须相同。

返回

包含每个组件的 expression 返回值的数组。

描述

comp 函数与 comp 操作非常相似,可用于将形状拆分成不同的拓扑组件(相对于 componentselectoroperator),从而生成新的组件形状。 但是与操作相比,函数不会按形状操作的顺序处理所选组件。 而是会对所选的每个组件形状执行函数 expression 计算。 对应的返回值将以有序数组的形式进行组织,作为 comp 函数的结果返回。 有关可用 componentselectorsoperators 的详细信息,请参考 comp 操作的文档。

返回的数组具有诸多属性:

  • component 分别设置为 f, e 等时,其大小将等于面数、边数等。
  • 例如,如果 component 设置为 f,数组将包含每个面的 expression 返回值:位于位置 0 且索引为 0 的面的值,位于位置 1 且索引为 1 的面的值,以此类推。
  • 对于每个对应拓扑实体,将复制为合并的组件形状 (operator =) 计算的 expressions 并插入相关索引位置。
  • 对于 selector 未选择的拓扑实体,将使用默认值(分别为 0, "", false)插入相关的索引位置。
注:
  • comp 函数用于收集有关当前形状及其组件的信息,而不会更改当前形状或将后续形状添加到形状树。

  • 返回的数组大小有限。 可在程序运行时首选项中进行配置(默认值:100000)。

相关内容

解释示例

折点 | 组件形状属性

形状分割成其 6 个折点 (all)。 系统会请求每个折点组件的组件索引。 这些值将在数组中按折点索引顺序进行组织。

const array = comp(v) { all : comp.index }

Lot --> print(array)

(6)[0, 1, 2, 3, 4, 5]
形状分割成其 6 个折点 (

边 | 范围形状属性

在本示例中,将具有 7 条边的形状分割成其 6 条 border 边。 每个边组件会通过范围属性请求自己的长度。 边 2 未选中,但是会以默认值 0 插入数组中。

edgeLength = scope.sx
	
const array = comp(e) { border : edgeLength }

(7)[7,15,0,17,15,10,16]
具有 7 条边的形状分割成其 6 条

面边 | 合并形状运算符

具有 8 个面边的形状分割成其 2 个 front 面边以及由 2 个 back 面边 (operator =) 组成的合并形状。 对于每个 front 边,将使用组件形状属性构成一个字符串。 第二个字符串表达式仅计算一次,但是返回值将插入所有相应的 back 边索引处。 其余边未选中,但是会以默认值(空字符串 "")插入。

const array = comp(fe) { front : comp.sel + comp.index |
                         back  = str(comp.index)       }
		   
(8)[front0,,0,,,0,,front1]
分割成 2 个

面 | 遮挡查询

具有 6 个面的形状分割成由 4 个 side 面组成的形状 将计算一次遮挡查询,并将结果插入所有 side 面的数组中。 其余面未选中,但是会以默认值 (false) 插入。

const array = comp(f) { side = touches }
		   
(6)[false,true,true,true,true,false]
分割成 4 个

有关应用程序,请参阅 setback 操作等。