批量定位铝板


拿到垂直边,这一个做法我微调了一下,从原来的阈值改成了排序


确保按照先左后右排序


确保曲线的走势是从上往下


拿到右侧的线,offset一定距离,就是铝板的缝隙
注意曲线的走势一旦确定,offset的方向也唯一确定。


使用编织,将左线和offset后的右线重新穿插起来


两次shift电池,注意这里正负号不要搞错,另外图上忘记标注,shift第三个输入端wrap=False
shift前后变化见四种颜色


提取线的起点和起点方向,作为orient的输入端
注意evaluate curve电池返回的切向量tangeng vector必定是单位向量
所以在这里的orient并不会对物体缩放

以上步骤应该都在基础操作的范围内。
之后的步骤会比较特殊,也会比较抽象。
在这里我们不直接使用orient操作物体,而是提取了orient电池的X输出端,也就是transform变换矩阵
注意:移动,旋转,缩放,镜像,orient等每个电池都会有一个额外的X输出端,它们都是变换矩阵。
相关的数学知识可以百度和谷歌查阅。GH也提供一些简单的矩阵显示和运算,方便研究。


我们首先在最前面插入一个Y方向移动一定距离的变换矩阵,这样排序完毕的铝板就会排列在原来第一个铝板上方一定距离,这个距离可以自己设定,也可以是0
观察panel输出,会发现后面几个矩阵因为是orient产生的,因此属于复合矩阵,无法直观显示(orient做了移动,旋转和缩放,虽然在这里缩放因子是1,但缩放矩阵仍然存在)


将矩阵列表反转
然后生成一个倒序的等差数列备用


使用shift电池对矩阵列表进行操作,因为逻辑不那么直观
可以直接先看结果
1:红色为第一个铝板的变换矩阵列表,第一个铝板只需要按照红色箭头移动一下就可以
2:第二个铝板首先按照右侧蓝色箭头orient到第一个铝板的末尾,然后就可以按照第一个的方式去运动,沿着左侧的蓝色箭头
3:第三个铝板首先按照最右侧的绿色箭头orient到第二个铝板的末尾,然后按照第二个铝板的orient列表移动,一共运动三次
4:第四个第五个以此类推

可以想象为5个小朋友需要站成一列,一开始是分散的状态
5号先跑到4号的后面,并用手搭住4号的肩膀
4号跑到3号的后面,并用手搭住3号的肩膀,注意这时候5号为了保证和4号是同步的,需要完全跟着4号跑
3号跑到2号后面,此时4和5号都是跟着3号跑的,跑的时候三个人永远保持固定的前后位置,因此三个人的变换矩阵应该是完全一样的。
以此类推

最后发现5号需要移动4次,1号只需要移动0次
如果是这个GH案例,因为1号还额外跑了一点距离,因此5号需要移动5次,1号需要移动1次

回顾上一张图,为了达成5个物体的变换矩阵列表内的矩阵数量是从1个到5个的倒序列表。需要构造4,3,2,1,0数列作为shift的数量。同时一开始的矩阵列表需要反转顺序。


最后使用compound将每个物体需要移动的矩阵列表合并起来

矩阵相关的内容比较抽象,我也不确定是否能讲清楚,最好还是自己尝试在实际GH中去查看和摸索。
如果还有问题,欢迎发帖或者回帖讨论。

3 个赞