双向投影点图标

LK COMPONENT DOCS

双向投影点

沿指定方向把一个点投影到多种目标几何体;正向完全没有命中时自动反向查找,并返回最近命中点及其目标索引。

功能概览

该组件适合解决“目标可能位于点的任意一侧,但仍希望使用同一个方向向量完成查找”的投影任务。它先沿输入方向检查全部目标,找到正向命中时只在这些结果中选择距离输入点最近的一项;只有正向对全部目标都没有结果,才整体改用反方向重试。输出索引保持目标在“几何体”输入列表中的原始位置,因此可以用同一个索引从并行的名称、编号、材质或构件信息列表中取回对应数据。

可作为目标的对象包括平面、直线、圆、圆弧、曲线、盒体、曲面、Brep 和网格,以及能够转换为曲线、Brep 或网格的其他几何数据。无法识别的类型会产生警告,不会被当作有效障碍物。

双向投影点逻辑教程图
查找具有方向优先级:正向一旦存在任何命中,就不会比较反向目标。

适用场景

  • 从一个检测点寻找指定轴向上最近的板面、外壳或网格交点。
  • 目标可能分布在方向向量两侧,但正向目标应始终优先于反向目标。
  • 投影到多种混合几何体后,用目标索引同步查询构件编号或其他并行数据。
  • 以默认向下方向把单个点投向模型;向下无目标时再检查上方对象。

工作流程

  1. 准备一个有效输入点,并整理目标几何体列表;需要保留身份信息时,让并行信息列表与目标列表使用相同顺序。
  2. 连接投影方向;不连接时使用向下的世界 Z 轴反方向。
  3. 组件先沿该方向检查所有有效目标,并在正向命中中选择距离输入点最近的一项。
  4. 如果正向对全部目标都没有命中,组件才沿完全相反的方向重复检查。
  5. 将输出点用于定位、测距或后续建模,并用输出索引读取对应目标的数据。

输入

端口是否必需数据与结构默认、匹配与误接说明
点(P)必需单个有效三维点;每次求解处理一项。没有点或点无效时不产生有效结果。若要处理多个点,应由 Grasshopper 的数据匹配形成多次求解,而不是把点列表误接成单项。
方向(D)可选单个非零向量,表示优先投影方向。未连接时采用 −Z。向量长度不影响方向判断;零长度向量会报错。反向并非同时搜索,而是正向完全失败后的回退。
几何体(G)必需目标列表,支持平面、直线、圆、圆弧、曲线、盒体、曲面、Brep、网格及可转换几何。列表顺序决定输出索引。空项被跳过但仍保留其原始位置意义;至少要有一个有效目标。无法识别的类型会警告,目标列表不会与点逐项配对,而是共同参与本次最近命中查找。

输出

端口结果与结构典型下游
点(P)单个最近命中点。正向有结果时来自正向;正向全部失败时才可能来自反向。两侧都未命中时为空。距离测量、点定位、构造平面、曲线分割、几何生成或可视化标记。
索引(I)单个整数,表示命中目标在原始几何体列表中的位置;未命中时为 −1。列表取项、同步读取构件名称、编号、属性、颜色或其他与目标顺序一致的数据。

实际示例

假设输入点位于原点,方向设为世界 X 轴正方向。目标列表依次包含位于 X=8 的平面、位于 X=3 的盒体以及位于 X=−1 的网格。组件在正方向同时命中前两项,并选择距离为 3 的盒体交点;输出索引为 1。尽管反向网格距离输入点只有 1,它不会胜出,因为正向已经存在命中。如果移除或移动两个正向目标,使正向完全没有交点,组件才反向查找,随后输出网格上的交点和索引 2。这一结果可直接驱动“列表取项”,从与目标列表平行的构件编号列表中取得该网格对应的编号。

配合使用

  • 上游可用点参数、曲线评价或几何分析结果提供检测点;方向可来自单位向量、直线方向或局部坐标轴。
  • 将“点”输出连接到距离、移动、分割或标记组件,检查投影后的空间位置。
  • 将“索引”输出连接到列表取项,并把目标名称、编号或属性列表接入同一列表取项组件。
  • 若需要对每个目标分别保留所有交点,本组件的“只取方向优先的最近命中”规则并不适用,应改用能够输出全部交点的相交工具。

常见问题与限制

为什么更近的反向目标没有被选中?
正向优先级高于距离。只要正向存在任何命中,组件就不会检查或比较反向结果。
为什么输出点为空且索引为 −1?
正反两个方向都没有与有效目标相交,或目标列表没有可用几何体。检查方向、目标范围以及输入点是否位于可达射线上。
为什么出现不支持类型的警告?
该项既不是已支持的目标类型,也不能转换为曲线、Brep 或网格。警告项会被跳过,其他有效目标仍可参与查找。
索引为什么看起来有空档?
索引对应原始输入列表位置。列表中的空项会被跳过,但后续有效目标不会重新编号。
能否使用零向量表示不限定方向?
不能。该组件必须建立明确的优先方向,零长度方向会直接报错。