怎么使用Grasshopper去删除CAD重复的线段

今天Link给大家带来一个相当实用的小插件,这个Grasshopper算法就是能够让我们快速的删除导入的CAD图中重复的线段。

好多人在绘制CAD图的时候会残留一些重复的线段,这些情况在新手设计师非常的常见,那这些重复的线段在导入犀牛之后会给我们后面的设计造成很大的困扰,因此我们要去除这些重复线段,但是在犀牛中去除重复线段的算法非常的原始,它只能去除同一个位置而且长度相同的线段,但是真实情况是这些重复的线段是夹杂在长线段里面的。

今天给大家介绍的是删除圆弧线段的算法,删除圆弧线段的话大家必须知道以下几个基本参数:

\1. 判断圆弧的中心点是否在同一个位置

\2. 判断圆弧的线段长度

首先我们来解决第一个问题判断圆弧中心点是否在同一个位置,要判断点是否在同一个位置,方法是非常多的,我这里使用的方法是获取圆弧的中心点,然后把中心点的xyz坐标值全部加起来,判断和的总数是否相同,当然这个算法也有局限性,因为有可能点在不同的位置的xyz坐标值相加之后的和是相同的,但是我基于我们平时做设计的时候那些点的坐标应该是乱数随机的数字,点的坐标3个值的和相加之后相等的可能性并不高。

Grasshopper的算法看下图

在下面的图中从左到右分别是获取点,分界点的坐标,把点坐标加起来,最后一个运算器是把重复的数据清除掉。

img

下面这一段的算法可能会稍微复杂一些。

它的原理就是把点坐标值之和输入到member index运算器里去,通过member index运算器可以输出点坐标集合所在的位置,在下图中我们看到I端口输出的数据就是坐标值的位置。

给数据再输入到Tree数据统计运算器里,他会统计出相同的坐标值的数据个数,我们从数据可以判断出多少个数据是相同的。下图中数字等于1的说明只有一个坐标,数字等于2的说明有2个坐标是相同的,那我们通过分流运算器把只有一个坐标和多个坐标的值分离。

img

到此为止我们就完成了坐标分离的工作。

接下来我们把坐标相同的线的集合进行长度的判断,由重复线的特性可知,2条线重叠在一起我们只要获取较长的那一段就可以了。

这个Grasshopper算法的核心就是判断一个列表内所有曲线的长度,然后把长度按从大到小排列我们只要获取第一个也就是最长的那一段就行了。

img

Ps:按长度排序这个算法是非常有用的我们在用Grasshopper做一些幕墙或者一些深化设计的时候会经常用到,大家可以把这个算法写成一个grasshopper小插件以便以后使用。

最后我们把之前的数据集合起来,还要加一个Clean的运算器把一些空的字符去掉,这些空的是否有可能在之前筛选的时候会产生,所以用这个Clean的运算器把它清理掉,这样我们的算法就完成了。

img

最后附上整个grasshopper算法的完成图

大家如果有什么不明白的话可以在下边的评论区留言,我在针对留言在做一些解答,好啦谢谢大家收看咱们下期再见。

给TA买糖
共{{data.count}}人
人已赞赏
grasshopper

Grasshopper系列所有文章汇总链接

2021-4-6 14:26:16

grasshopper

如何在Grasshopper中找到犀牛中选择的线段的编号

2021-5-16 10:10:35

4 条回复 A文章作者 M管理员
  1. 小隐青

    谢谢分享

  2. Coy101

    受教了,谢谢分享

  3. Gavin13340

  4. 牛哇

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索