按一根有效平面闭合曲线,将点列表分类为线内、线上和线外,并分别保留原始点及列表序号。
功能概览
组件使用单根有效、平面、闭合且无自交的曲线作为分类边界。每个输入点先按三维距离判断是否在曲线上:最近距离小于或等于容差时属于“线上”。其余点若离曲线平面超过容差,归入线外并产生汇总警告;平面容差内的点按曲线平面上的区域包含关系区分内外。微小离面点只在判断内外时投影,输出仍保留输入的原始三维坐标。三个结果列表均按各自原输入顺序排列,重复点不合并。
适用场景
- 按闭合轮廓筛选区域内的构件定位点、测量点或采样点。
- 分别处理边界点、内部点和外部点,并保留与输入数据表对应的索引。
- 把轮廓分类结果连接到不同的下游加工、显示或属性分支。
工作流程
- 提供有效的闭合平面曲线;轮廓应无自交和重叠。
- 连接待分类点列表;索引在每个 Grasshopper 列表分支内从 0 计数。
- 可选设置正的有限容差;未连接时使用当前 Rhino 文档绝对容差。
- 分别读取三组点及配对索引。点仍为原始坐标,不会被投影或移动。
输入
| 端口 | 是否必需 | 数据与结构 | 默认、匹配与误接说明 |
|---|---|---|---|
| 点列表(P) | 必需 | Point 列表;每个分支独立编号,顺序和重复点均保留。 | 所有点必须有效;空点会报错并指出原序号,不会过滤后重编。可接入单个或多项点数据。 |
| 闭合曲线(C) | 必需 | 一根有效、平面、闭合且无自交的 Curve。 | 不接受开放曲线、空间曲线、自交/重叠边界或无效曲线。该端口为 item,多曲线按 GH 数据匹配规则求解。 |
| 容差(T) | 可选 | 一个大于零的有限数值,模型单位。 | 未连接时采用 Rhino 文档绝对容差;接入但数据为空不会静默回退。该容差同时用于三维线上判定和平面距离检查。 |
输出
| 端口 | 结果与结构 | 典型下游 |
|---|---|---|
| 线内点(Pi) | 落在闭合区域内部的原始点列表,保持其在输入分支中的先后顺序。 | 内部构件处理、区域显示或筛选。 |
| 线内序号(Ii) | 与线内点逐项对应的零起始整数索引。 | 从同一输入分支的其他数据列表提取对应记录。 |
| 线上点(Pon) | 到边界三维距离不超过容差的原始点列表。 | 边界容差检查、边缘对象单独处理。 |
| 线上序号(Ion) | 与线上点对应的零起始整数索引。 | 读取边界点关联的输入数据。 |
| 线外点(Po) | 闭合区域以外的原始点;超出平面容差的点也归入此组。 | 区域外对象过滤、警告复核或另一分支处理。 |
| 线外序号(Io) | 与线外点逐项对应的零起始整数索引。 | 定位并检查被排除的点。 |
实际示例
XY 平面上的正方形顶点为 (0,0)、(10,0)、(10,10)、(0,10),再闭合回起点。输入点依次为 (5,5,0)、(0,5,0)、(12,5,0),容差为 0.01。组件输出线内点索引 [0],线上点索引 [1],线外点索引 [2]。若再输入一个 (5,5,0.005),因其距曲线不近且离平面在容差内,按投影位置归入线内,但输出坐标保留 z=0.005。
若输入 (5,5,1),它距离曲线平面超过容差,会进入线外并触发离面点警告;该点不会因投影到正方形中心而被误分到线内。点在线附近但三维距离大于容差时,也不会仅因二维投影落在边界上而归为线上。
配合使用
- 上游可接点参数、测量点或其他点运算组件;闭合边界可来自闭合轮廓建模流程。
- 每类点与对应序号保持一一配对;使用索引从与输入分支同序的属性列表提取相关记录。
- 可把三类点分别送入预览或几何操作;该组件只分类,不删除原几何,也不生成投影点。
常见问题与限制
- 边界上的点为何分类不同?
- 只有三维最近距离小于或等于当前容差的点归为线上。调整容差会改变边界判定,且数值使用 Rhino 模型单位。
- 曲线投影平面内的点为什么进入线外?
- 若该点离曲线所在平面超过容差,会直接归为线外;组件不会把远离平面的点投影后分类。
- 可否输入自交轮廓或多个边界?
- 不支持自交或重叠曲线;输入端设计为一根曲线 item。复杂区域应先形成单根无自交边界或拆分求解。
- 输出索引是整棵数据树的全局序号吗?
- 不是。每个列表分支各自从 0 编号,点、索引和并行属性需在对应分支内匹配。