在 Brep 列表中查找离指定三维点最近的有效模型,并返回它在原始列表中的零起始序号。
功能概览
组件逐个检查输入列表里的有效 Brep,求查询点到每个几何体最近位置的距离,并输出最短距离对应的原始索引。它返回的是整数索引,不会输出最近点、距离或被选中的 Brep。空值、无效几何或无效包围盒会被跳过,但跳过不会压缩其余模型的原始序号。等距时选择原始序号较小的候选。
适用场景
- 按检测点、鼠标采样点或测量点找到最近的构件记录。
- 将查询点匹配到候选实体列表,再用索引读取并行属性列表中的名称、编号或类别。
- 在多个备选几何间建立最近对象选择逻辑;结果索引可接入 List Item。
工作流程
- 准备一组 Brep 几何,并保证其顺序与要查询的属性列表一致。
- 将几何列表接到“Breps”输入,将有效三维点接到“点”输入。
- 读取“索引”输出;索引从零开始,指向输入原列表,而不是过滤后的有效模型列表。
- 用该索引从同顺序的属性列表取值,或通过列表选择组件取得对应模型。
输入
| 端口 | 是否必需 | 数据与结构 | 默认、匹配与误接说明 |
|---|---|---|---|
| Breps(B) | 必需 | Brep 列表;列表位置构成原始零起始索引。 | 空值、无效 Brep 或无效包围盒跳过并给出警告。索引仍保留原列表位置;普通曲线、点或 Mesh 不符合输入类型。 |
| 点(P) | 必需 | 单个有效 Point3d 查询点。 | 无默认值;无效点产生错误,不会进行筛选。点与 Brep 使用同一 Rhino 三维模型坐标空间。 |
输出
| 端口 | 结果与结构 | 典型下游 |
|---|---|---|
| 索引(I) | 一个整数,表示最近有效 Brep 在原始 Brep 列表中的位置,从 0 开始。 | 接 List Item 取得对应 Brep 或并行属性值;也可用于分支选择与索引标注。 |
实际示例
将四个构件依次放入 Breps 列表,列表索引分别为 0、1、2、3;第二项为空值。查询点到有效模型 0、2、3 的最近距离分别为 42、9、18 个模型单位,则组件输出 2。空项不导致模型 3 的索引变成 2,输出仍可直接读取原属性列表的第三项。
如果没有任何有效候选,组件发出“没有可用于筛选的有效 Brep”警告且不输出索引。该组件只做最近距离选择,不会判断点在实体内外,也不会把距离阈值之外的模型排除。
配合使用
- 上游接 Brep 参数或生成 Brep 列表的几何组件;查询点可来自点参数、测量数据或其他点运算结果。
- 索引输出接列表选取组件,读取与 Brep 列表保持同序的名称、ID、材料或其他信息。
- 如需得到最近点坐标或距离,应使用能输出最近点/距离的几何计算流程;本组件只返回索引。
常见问题与限制
- 为什么索引似乎偏移了一项?
- 输出为从 0 开始的原始列表索引。Grasshopper 面板通常显示列表位置;若手工编号按 1 起算,需要转换后再展示。
- 跳过无效 Brep 后,索引会重新连续编号吗?
- 不会。跳过项计入原始位置,因此索引可用于访问未过滤的平行列表。
- 多个 Brep 距离相同时选哪一个?
- 选择原始索引较小的有效 Brep。浮点几何计算可能受模型精度影响,近似相等的距离未必构成严格平局。
- 输出能表示距离或几何吗?
- 不能。输出只有最近候选的索引;组件不会提供距离、最近点或选中 Brep。