马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 DanielJin 于 2014-7-25 13:15 编辑
【By DanielJin】由浅入深学Grasshopper 中级 01 任意曲面生桁架 欢迎加入我们的参数化群,群号312673316。该贴是4月中旬写的,帖子中涉及时间问题请自行脑补。
前言:4.04-4.18由于学校同时给安排了两个设计,所以接连14天设计“周”另我苦不堪言。由于电脑比较多,在分开渲图的时候闲置了一台。首先感谢各位对上期教程的支持 由于闲置一台电脑,把昨天做的一个结构GH作为教程讲解(主要是各位亲在支持的同时不停地呼唤下一期的更新T.T)。下一期应该就是过了18号才会发了。这一期我直接写上了中级,是希望告诉各位,这一篇与上一篇难度明显加大,数据处理的能力明显提高。还在纠结于上一篇教程的朋友这一篇看一看图个乐呵即可!如果已经开始入门gh并且慢慢开始上手的可以看本篇。至于论坛众多大神您可以给个支持评个100分然后提出自己更好地建议。我也有很多问题会在教程中写出希望各位的指导。
本帖最早的思路来自于NCF的曲面桁架的生成,但是在教程中是由一根曲线做出的规则曲面桁架。本人的建筑屋顶部分是一个不规则的曲面(异性建筑害死人,这就是条尼玛不归路啊!!!T.T)在具体曲线建桁架的时候有些地方数据会出问题导致无法生成桁架,楼主也没能解决,因此钻研五十余年用了很笨的方法做了此贴。望各位轻喷。
如图,当set one surface时候运算器出错。(我其实一直想知道是不是新版本运算器用法有区别了?)
教程: 本人的思路概况可以分为以下步骤,首先拾取曲面,然后分割,offset,得出分割面中点和角点,利用角点和中点连线生斜向杆,两层面各角点uv方向连线生横杆,节点加球(可选),面出厚度生玻璃(薄膜,板)迂回千百次,只为佳人心。
首先我们要做的就是拾取surface。我的surface由于长得很不帅,所以随手画了个符合大众审美的。这里有一个小的知识点,在实际运用中由于你的屋顶(比如我体育馆)动辄跨度百十米,可以先scale缩放减少运算量,等全部做完bake好了再等比放大回来。
我的机器配置还不错,因此我接下来会疯狂的为您演示很多错误的做法(事实证明很多我能想到的故意连错的错误都导致我的程序在死循环,虽然我vb当年42我也依稀记得vb里有个end loop的命令,不知道gh里有没有类似的命令能不让gh再傻呵呵的计算下去。目前为止已经卡死八次),因为我发现很多帖子都告诉你怎么做,很少提到为什么不能这么干。通过这样比对我认为您可以更容易理解很多视频教程,论坛教程上为何高手要绕一圈这样处理而非最简单的走直线(因为走不通比如会卡死)。还有新手一定要注意保存不然就会我这样一但傻叉连错了就完了。
拾取曲面以后,我们要进行的工作就是将平面分割。然后将平面offset一下。再将上头的面中点找出来。 这时候按照原来的教程,要用item list分别导出四个角进行连线。我看了看数据,四个角已经自动分好组了,按照理论来说直接和中点连线即可。如下图,一个颜色是一簇数据。
直接连线。
接下来我用panel比对了一下,发现上边一百个点,下边四百个点,对应应该有四百条线对吧?对于下边一百个分割后的小面来说,同一个位置点(不算边上)一定是有四个的,因为有四个surface。但是根据display的颜色来看树形数据自动分组,连接以后未觉有何不妥。Panel也都显示是四百条线。
接下来我们说一下生成横向杆件,很多新手会这样做,因为下边已经有了四百个点,直接用polyline链接。 看,貌似结果还不错。可是这样真的好吗...真的对吗...你真的比我还帅吗... 我们在做任何操作之前,一定要记住,保存加看数据结构。参数化设计和参数是离不开的,参数的数据类型也是很重要的。我们先来看一下正确的(理智)做法:
我们再来对比一下我们的。用一个曲线上点的控制器,连上拖拽一下,你会看到曲面上的所有点。这个点会转一圈。BOOM!重叠了发现了吗?
这样直接连接的结果是我们生成的不是横向的线(尽管看起来是,如同我剧照上的女演员永远是那么美)可实际呢?实际是一百个小方块。那么按照正确的做法,分别将所有点生成线,只需要横竖11+11=22条线。这样你的模型会更节省资源。
我们换种说法,刚才那样的方法就相当于给平面生墙,前者是每一个平面生墙以后在堆叠在一起,墙和墙会重叠尽管最后也是长得一样。后者是直接用轴线生成了片墙,除了横竖交接的地方永远都只是一面墙。当然这个方法也适用于快速生墙,如下图。
接下来我们在上边的面寻找边角点,也做出来横向的杆件。但是我出现了错误。
仔细检查发现是surface的输入端出现了问题。这里有一个知识点,当面(brep)被炸开了以后,F对应的是面,这个面是face,和surface不一样,是一个没有边的面,请自行理解。对于一个没有边线的face来说,是无法进行point to surface的。我们改变一下输入端。让边线edge的元素进来。 接下来我们用中心点生成上边的面。由中点生成的上边的面要比下边的面uv方向各少一个单位。需要说明的是,由于gh升级了,重新定义了表达的方法。我们必须输入x-1.这一点可以在详细的说明中看到接入端名称。
生成了上边的面,数据类型完全一样。
需要说明的是 如果这时候你发现在之前的点和面不吻合,记得吧布尔值设置一下。
按理说我们就可以直接像下头的面一样生杆件了,但是我也出现了点和中点不对应的情况。
因此我们用ncf的小技巧,直接把点投影到中点上。 用一个向量display可以清楚地看出来点的位移。
这时候有人会问,哎呀中点生面面生点在挪到中点你烦不烦啊干嘛不直接用中点polyline生个横杆?
看到了吗?因为所有点的顺序是连着的,所以点会出现首尾相连的情况。 接下来我们要进行链接了,好习惯,先看一下数据结构是否正确。 (他奶奶的连错了又卡死了,重新来过吧。提醒各位,在C 用户 你的名字 appdata roaming mcneel rhino 5.0 autosave和grasshopper autosave有自动保存的文件,大家可以应对卡死,或者经常清理一下免得占用太多地方。我一个带环境的模型五百多M你敢信?... )
接下来的工作就很简单了我就不截图了(主要是因为刚卡死,现在重新进去拾取surface太卡)。找到中点的控制器,生个节点球玩儿,再把面相应加个厚度,再把线pipe生成管,你就可以做属于你自己的任意曲面的桁架了。相比较来说这个运算器命令少点,算是个简化版?
最后一点要说明的是,由于生成pipe,光滑的曲面太耗资源,大家可以按照需求生成方形的管。方法如下。
把extrude以后的东西给补上来
关于大家的回复,想说两句。因为是论坛新人,基本都会回复。您说多谢分享我会说分享是美德诸如此类的。后来渐渐发现这个工作量太大...所以再留言我可能就不会一一回复了,不是我态度傲慢啊~~望各位海涵!但是您的留言我都会认真看,有疑问我一定会仔细回答。若您长篇幅认真写出了自己的意见和建议,我基本都会给您评分以表示对我的支持和对您的感谢。好了我继续滚去作图了,下一期教程不出意外还是会回归basic系列,4.18交图以后才会发。请您期待。帖子内容如有不妥望请斧正!
|