NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 48340|回复: 35
打印 上一主题 下一主题

[工作记录] Python与Grasshopper的联合.

  [复制链接]
跳转到指定楼层
1m
发表于 2012-12-25 17:19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自:http://cadesign.cn/bbs/thread-11-1-1.html

                               
登录/注册后可看大图


                               
登录/注册后可看大图

以程序语言为基础的参数驱动技术辅助设计逐渐的成为三维模型构建的主流,是未来发展的重要方向。现在计算机语言发展已经构建出一个强大的阵营,包括C,C++,C#,Java,VB,Python,PHP,Perl等等。设计师似乎难以想象自己何时竟与程序语言构建了联系。而这种联系竟然是未来发展的一个重要方向。在规划,建筑,景观设计师的培训机制中,国内尚且很少有将其与设计挂钩的相关课程。如果作为设计师培训课程的一部分,设计行业的发展必然会出现另一种局面。
在众多的程序语言中,让设计师极为棘手的莫过于选择哪种语言。被认为只有计算机专业才应该掌握的程序语言,对于设计师来讲系统的学习要耗费非常大的精力。实际上也并不推荐学习难度大的C语言等耗费精力的语言。对于设计师,扎实的设计基本功和空间感悟、美学修养是其永不变的基础。语言是在这个基础之上,放大设计师可以触及到的形态领域。目前三维分析设计软件基本都有自己的脚本语言。MAYA是MEL,自8.5之后支持Pyhton语言。Rhinoceros是RhinoScript,自5.0之后嵌入Ironpython,Houdini使用的是HScript,自9.0后使用HOM(Houdini Object Mode),支持Python语言。地理信息软件,ArcGis8基于地理视图的脚本语言开始引入,9.0开始支持Python。VUE自然景观生成软件与FME地理数据转化平台同样支持Python语言。Python程序语言在逐渐的被更为广泛的三维分析设计软件所支持,这正是在于Python语言的优美,同时可以让设计师在短时间内即可掌握,并进入实践的语言。
    在程序语言的辅助设计下,设计内容也日趋复杂,仅依靠传统纸笔的设计方式难以达到目的。而在三维模型构建程序中,仅仅依靠传统建模方式,会带来繁重的工作量。尤其在设计不断整合,来回修改的过程中,依靠程序语言(编码)的方式,可以大幅度减轻工作难度,将重点放置于设计推敲上,并进入和探索新的形态领域。
    在未接触程序语言时,设计师看待语言的态度是神秘的。由无数代码产生的图形总比直观的形态推敲要抽象的多。实际上一旦读懂语言,所关注的重点自然是这种构建逻辑的合理性,不会被抽象的语言所迷惑。当然,程序越简单,可读性越强是最好的。不仅使模块易于操作修改,同时使其他设计师或程序员也更加易读。Python语言与GH的结合 ,极大的拓展了GH的模型构建能力。
    使用Python语言协助设计,相对于其他编程语言,例如Rhino另一个支持的语言VB,和C等语言来说,python语言能够给予设计师更流畅的表达,“…但最重要的是,Python是一种使你在编程时能够保持自己风格的程序设计语言。你不用费什么劲就可以实现你想要的功能,并且编写的程序清晰易懂(和当前流行的其他各种程序设计语言相比更是如此)。”-<Beginning Python from Novice to Professional>由 Python语言编写的程序可以感觉到类似于一篇优雅的散文。在使用Python协助设计的过程中,设计师不用过多的关注类似其他语言那样严格的控制结构,例如给予VB语言的Rhinoscript,必须声明变量,语句块结构结束需要有End If, End Sub关键字标示结束。更重要的是Python语言与一般英语结构相似,例如:   
name=input('What is your name?')
if name.endswith('Gumby'):
    print ('Hello,Mr.Gumby')
else:
print('Hello,Stranger')
   
注:学习Python建议首先阅读([挪]Mangus Lie Hetland.Begining Python from novice to professional second edition python基础教程,司维,曾军葳,谭颖华译.北京,人民邮电出版社,2010.)在实际编程过程中需要(David M.Beazley.Python Essential Reference fourth edition python 参考手册.谢俊,杨越,高伟译.2011.北京,人民邮电出版社.)一书为辅助,可以帮助查询语法和命令。
    针对RHINO平台的Python可以从官方网址下载教程(Skylar Tibbits,Arhur van der Harten, Steve Baer.2011.Python for rhinoceros 5.),实际操作过程中需要参考RHINO提供的Rhino IronPython帮助文件;


                               
登录/注册后可看大图
GH Python:


比较GH与Python脚本,Python命令行形式的编程环境是基础的语言,可以理解为GH中所有的命令都可以通过Python命令行形式的语言得以实现,甚至可以扩展  GH的组件,也就是为什么设计师在了解了GH之后,还要学习脚本语言。使用GH,在设计的过程中不免受制于GH现有组件,有些设计逻辑不得不求助于Python等脚本语言才可以实现。将GH与Python结合可以使GH功能无限扩展。实际上GH内嵌了c#,VB语言,目前GH版本Version November-24,2011,Build0.8,0031的Python需要额外加载。
  使用GH中的Python组件把 RhinoPython中编写的程序调入进来,在调入的过程中,需要根据GHPython的输入,输出的方式调整代码。
    这里把主要的控制参数作为输入条件,包括basicpoint,lengthunit,angle,offsetvalue,topbplineheight,multiple1,multiple2,multiple3,floorheight。同时,针对random.choice函数,增加了初始化随机数生成器,seed([x]),在GH中可以实时的获得随机几何形式,增加设计调整的便利。下面列出主要针对GHPython组件调整的代码部分,与RhinoPython一致的部分以省略号替代。


                               
登录/注册后可看大图



评分

参与人数 1照度 +3 收起 理由
pqwpqw12345 + 3 表示赞同!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏22 分享分享
2m
发表于 2012-12-25 19:03:24 | 只看该作者
多谢!很有收获!
3m
发表于 2012-12-25 20:43:21 | 只看该作者
给力~有相关教程没?
4m
发表于 2012-12-25 22:22:45 | 只看该作者
一大堆废话,说白了就一句:Rhino下用python要在GH里面用。
5m
发表于 2012-12-25 23:10:35 | 只看该作者
有详细一点的教程吗,关于python的?
6m
发表于 2012-12-25 23:27:34 | 只看该作者
maniux 发表于 2012-12-25 22:22
一大堆废话,说白了就一句:Rhino下用python要在GH里面用。

其实普及作用还是有的,,,还是很感谢楼主的。。。
7m
发表于 2012-12-26 08:05:03 | 只看该作者
混迹于NCF的老湿~
8m
发表于 2012-12-26 09:40:02 | 只看该作者
感谢楼主分享,
9m
发表于 2012-12-26 11:48:20 | 只看该作者
看来得学习编程了
10m
发表于 2012-12-26 15:36:07 | 只看该作者
学习了,先mark再看!
11m
发表于 2012-12-27 00:11:48 | 只看该作者
谢谢 主楼 伟大的分享  支持你的~~~~ 加油
12m
发表于 2012-12-29 09:39:42 | 只看该作者

谢谢 主楼 伟大的分享  支持你的~~~~ 加油
13m
发表于 2012-12-30 15:01:16 | 只看该作者
语言到底难么?很想知道有必要学么?
14m
 楼主| 发表于 2013-1-5 23:46:15 | 只看该作者
en
, python倒是不难,不过,用到时很少,只有grasshopper解决不能时,才会想到python, 不过学会python也不是只为了grasshopper,很多三维软件都支持python, 例如arcgis,所以抽空当乐趣学习下了。
15m
发表于 2013-3-20 07:23:20 | 只看该作者
很不错,有收获
16m
发表于 2013-3-27 10:40:23 | 只看该作者
很不错,可以扩展gh的使用范围!!!
17m
发表于 2013-5-16 21:27:31 | 只看该作者
多谢分享。普及作用起到了
18m
发表于 2013-6-7 15:08:52 来自手机 | 只看该作者
我觉得这帖子挺好的
19m
发表于 2013-8-22 10:15:34 | 只看该作者
RichieBall 发表于 2013-1-5 23:46
en
, python倒是不难,不过,用到时很少,只有grasshopper解决不能时,才会想到python, 不过学会python也不 ...

楼主请教一下,python如何调用gh的运算器啊,比如取出曲线和Plane的交点,gh是curve|plane运算器,我在帮助文件里没有找对相应代码的编写,请教下楼主该怎么解决!以及其他类似的情况的通常解决办法!谢谢……
20m
 楼主| 发表于 2013-8-22 13:41:10 | 只看该作者
en, 其实gh的组件基本都是rhino.python包含的,一般调用的都是rhino.python

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-5-2 21:27 , Processed in 0.258050 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表