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 -(浮点型、字符串、布尔
    逐个组件计算的表达式。 所有表达式的类型必须相同。

返回

包含每个组件的 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 操作等。


在本主题中