将形状相同但名字不同的图块合并为一个图块的多个实例


请问一下,有没有办法将形状相同但名字不同的图块合并为一个图块的多个实例?

你可以试试 ReplaceBlock ,关于 ReplaceBlock :point_down:
https://docs.mcneel.com/rhino/8/help/zh-cn/index.htm#commands/replaceblock.htm

你好,我们之前有写过一个类似功能的C#代码,命令为mergesameblock
社区好像无法上传RHP?如果版主允许我有导出可以直接运行的RHP。以下是当时的代码逻辑
相似的Block合并:
本案例为合并相似图块为同一个图块。
通过判断图块原始的几何体是否相似,反向合并不同的图块归位为同一个图块。
如果图块定义的几何体有缩放,则无法再判断。

代码难度四星半:思路难度大于代码本身
思路是分类处理看上去相同图块的几种不同类型

  1. 图块定义位置形状都相同:
    对于同一个图块定义,被Unique之后,虽然取消了关联,但是图块定义位置形状都相同。
    即使之后有缩放变形等等,(在变换前)图块炸开之后图块定义形状一致就很好判断
    通过图块定义的几何体种类,和位置(BoundingBox)来判断是否相同

  2. 图块定义的形状相同,但是位置和旋转不同:
    使用完全相同的几何体建Block,但是建立图块的时候有旋转,使得图块定义的几何体出现位移和旋转
    需要对几何体进行排除旋转位移的检测,目前采用的方法是提取特征点,并对特征点进行相对位置的Hash建立。
    建立特征点相对位置,通过按点顺序进行距离测定来判断。同时对于过多点的几何体,需要进行采样。
    所以通过距离进行测定能够判断旋转,但是无法判断缩放,如果需要判断缩放,需要更复杂的算法,不考虑了。

  3. 图块定义不同,包括相同几何形体形状有所缩放:
    则不进行合并,使用BoundingBox进行标记和输出
    当上述检测都不符合时,认为是不相似的图块。

用这个AIMO社区的分享码:wucl12-475668CD398D可以检索并直接下载源码并在RHINO 6 7 8直接编译运行,链接我就不放了。

AiMo-mergesameblock.rar (49 KB)
把后缀改成RHP就能导入了,公司电脑没有压缩文件,见谅