看见大家对copy trim和offset讨论很多... 我也来提供一种解决办法
本帖需要稍微耐心看一下 其中的判断和推断是根据我对于rhino基础和grasshopper的了解 无法保证100%正确
附件里的Stream Gate 0,1,2分别对应三种情况(不熟悉这功能的同学: 换一下Value List里面值就可以更换解法)
结论党直接看最后一段+附件Stream Gate 1
copy trim的工作原理是基于uv remapping
如果出现断开的情况 还是因为uv出现了问题而出现uv问题 原因是offset这个功能的机制
图中0是原始rectangle
1是正值offset并且offset的corners选项=Sharp的结果
2是正值offset并且offset的corners选项=None的结果
3是基于1的输出取discontinuity的点重新连接成polyline的结果
另外还一个可能就是(无图) 就是offset选负值 也就是向内 再pts on 控制点依然维持4个 (这时copy trim不会出现问题)
offset的工作机制本身是不涉及线长的 平时我们看到的线长变化都是根据交点trim或延长线相交之后的结果
而polyline如果向外offset就会出现断开的情况(图2) 所以需要补足长度(corners不为none的情况,默认sharp)
然而最初的控制点都还在(在grasshopper里很难察觉)
可以理解为offset是原曲线的孩子 还带着原曲线的基因(控制点) 但是你无法看到
而copy trim恰巧根据这个工作... 这时如果就会出问题
我个人觉得解决方法写script最简单 但是如果你不会那三种语言之一...
boolean difference(无论是surface split或者region difference)实在是太慢 (好像是因为工作机制不基于uv remapping, 不确定 没仔细看过)
所以我想给不会写script 又不愿意等的同学另外一种方法...
其实很简单 就是想一下 把图中的1变成0需要什么方法?
也就是把基因洗掉 造一个新rectangle...
所以就重建一个rectangle就好了...
具体就是offset之后的crv 用discontinuity拆出4个点 连成闭合polyline
然后就没然后了
另 offset是一个很不稳定的功能 算法略差 除了这个控制点问题 曲线经常会自交
而2d offset本身也不是很简单就可以解决的问题
如果必须要用的话 最好用其他插件里面的offset(结果比较可控) 或者自己写一个
offset.gh
(18.93 KB, 下载次数: 36)
|
|
举报