NCF参数化建筑论坛

标题: 一个曲面网架的生成代码(9楼有练习题) [打印本页]

作者: 夜神    时间: 2010-6-5 15:36
标题: 一个曲面网架的生成代码(9楼有练习题)
本帖最后由 夜神 于 2010-6-5 22:43 编辑

[attach]8201[/attach]

Option Explicit
run Rhino.GetObject("select a surface", 8)
FUNCTION run(sf)
DIM i,j,p(),mm,nn,uDomain,vDomain,spanMM,spanNN
mm=8 : nn=10  '分段数
uDomain=Rhino.SurfaceDomain (sf, 0)
vDomain=Rhino.SurfaceDomain (sf, 1)
REDIM p((mm+1)*(nn+1)-1)
  spanMM=(uDomain(1)-uDomain(0))/mm
spanNN=(vDomain(1)-vDomain(0))/nn
FOR i=0 TO mm
  FOR j=0 TO nn
   p(i*(nn+1)+j)=Rhino.EvaluateSurface (sf, Array(i*spanMM,j*spanNN))
   Rhino.AddSphere  p(i*(nn+1)+j), 3
  NEXT
NEXT
'横杆
FOR i=0 TO mm
  FOR j=0 TO nn-1
   Rhino.AddCylinder p(i*(nn+1)+j), p(i*(nn+1)+j+1), 0.7
  NEXT
NEXT
'斜杆
FOR i=0 TO mm-1
  FOR j=0 TO nn-1
   Rhino.AddCylinder p(i*(nn+1)+j), p((i+1)*(nn+1)+j+1), 0.7
  NEXT
NEXT
'纵杆
FOR i=0 TO mm-1
  FOR j=0 TO nn
   Rhino.AddCylinder p(i*(nn+1)+j), p((i+1)*(nn+1)+j), 0.7
  NEXT
NEXT
Rhino.DeleteObject sf
END FUNCTION

运行后按提示选择一个曲面(单曲面),OK了。
这个程序只有最基本的东西,在此基础上作其他修改很容易。
作者: 飞着的疯子    时间: 2010-6-5 16:11
学习学习!!
作者: 城市边缘工厂    时间: 2010-6-5 16:47
不错,学习学习
作者: 夜神    时间: 2010-6-5 17:08
谢谢斑竹鼓励!

这个程序做完网架后会删除原始曲面,所以要注意保存。可以把最后一句Rhino.DeleteObject sf删除以保留原始曲面。
作者: claudemit    时间: 2010-6-5 17:52
谢谢Lz
感觉RS里做东西的操作方式,好像GH升级之前的数组结构啊
刚开始学RS 希望LZ有空多来给我这样的菜鸟指导指导
作者: stratagem    时间: 2010-6-5 18:05
哇  用编程啊,高手!!!!
作者: panhao1    时间: 2010-6-5 22:02
我觉得直接用mesh做个大概型,然后细分
再连接每个face的 1,3 点更好些
作者: 夜神    时间: 2010-6-5 22:34
我觉得直接用mesh做个大概型,然后细分
再连接每个face的 1,3 点更好些
panhao1 发表于 2010-6-5 22:02

这个方法我也考虑过,主要问题有三个:
1)mesh的细分用程序很难控制,比如均匀、等距等要求;
2)face的1、3点恐怕也不好找,自动生成的mesh顶点序号有时是没规律的;
3)这个例子比较简单,如果要拼复杂的图案花样,用mesh来整体规划是个头痛的工作。

——浅见
作者: 夜神    时间: 2010-6-5 22:41
这个带图案的网架是在这个程序基础上略作变化得到的,给大家当练习做一下,嘿嘿~

[attach]8223[/attach]
作者: fwhhh    时间: 2010-6-5 23:06
这种规律性较强的还是用编程语言实现较好
作者: cjsyzwsh    时间: 2010-6-6 19:28
程序主要是能够自由一些玩玩,而且有一定的研究性。
作者: claudemit    时间: 2010-6-7 04:08
[attach]8363[/attach]
积极响应练习
我很菜 只会傻连。。。而且v方向分段数必须为4的倍数才行
怎么把多余的sphere去掉啊
求LZ变化后的代码观摩
作者: 夜神    时间: 2010-6-7 09:36
拼花网架的代码我已经找不到了,时间太久只剩图了。

提示一下思路:
分离出一个单元来,用四方连续的方式生成连续图案。单元内部先假设所有构件都有(横杆、竖杆、左斜杆、右斜杆、球),然后定义一个数组,该数组由布尔变量组成,每个变量对应单元中一个构件的存在状态:1表示存在,0表示不存在,布尔变量数组的值实际上就是图案特征了,这个要自己设计。建模时按十字加交叉网格的方式建,每个构件建模之前检查它的布尔变量值,如果是0就跳过去……你的明白?  :)
作者: claudemit    时间: 2010-6-7 14:52
需要消化一阵子 我教材还没看完。。。
过两天集中学习下
我也觉得应该分离出单元来做,奈何语句不熟
这个就是用FOR XXX step 4 xxx傻连得
谢谢啦
作者: 夜神    时间: 2010-6-7 15:58
我从来不用step,我一般是用取余函数(mod),mod函数可以不必管四倍整数的问题
作者: zhyf154    时间: 2010-6-10 16:58
哪里有RhinoScript的教程啊?我也想学习一下
作者: zdb888    时间: 2010-6-11 21:07
不错, 好好学习学习
作者: jasonbb88    时间: 2010-6-11 21:52
thx          thx
作者: marcowoo    时间: 2010-6-18 22:00
感谢分享!学习~
作者: aiwei1206    时间: 2010-7-2 17:56
不错 见识了啊 生命持续学习不止
作者: 最牛的粽子    时间: 2010-12-15 22:47
好啊。。。练习练习
作者: woodwest    时间: 2010-12-17 01:05
阿,还是能看懂一些!
作者: 05310130    时间: 2010-12-21 00:07
不错不错!!
作者: gogoalec    时间: 2010-12-21 23:19
很好 我正在学习如何加入图案
作者: dandantian    时间: 2011-7-29 21:26
{:3_47:}{:3_58:}
作者: 456    时间: 2011-9-21 02:33
script   在那里操作  ,我什么输入script没找到呢?
作者: Tony    时间: 2011-11-5 20:49
顶夜神兄~~~~
作者: anboyh    时间: 2011-11-7 14:41
活到老学到老。
作者: wrn    时间: 2011-11-19 11:02
hao....................
作者: lorenzo13    时间: 2012-3-27 03:03
取余函数确实会比step好用
作者: nightrain2    时间: 2012-4-10 09:26
不错的例子,感谢分享
作者: gtl535    时间: 2012-4-10 10:17
不错不错,学习了
作者: ajun    时间: 2012-4-14 23:56
好用
{:3_46:}
作者: ajrr    时间: 2012-4-22 12:35
我觉得还是GH好用
作者: 横穿马路    时间: 2016-7-12 14:45
不错,学习学习
作者: DONNA    时间: 2016-7-13 00:40
用编程啊,高手!!!!




欢迎光临 NCF参数化建筑论坛 (http://bbs.ncf-china.com/) Powered by Discuz! X3.2