最好有实例回复内容:
谢邀 @hat600,谈谈体会。python最近比较火啊,好像编程入门都不用学c++了大家直接上手python,不过也确实方便。其实笔者感觉使用rhino+grasshopper+gh其它插件基本可以覆盖参数化设计/数字建造的大部分方面,能用到python的都是很少的内容了。受笔者的眼界所限,只谈rhino+python好了。rhino+gh的特点是易上手,易理解;界面直观;有大量轮子(插件)可以用。缺点是只能面向过程编程。而python没有编程基础的话上手还有些困难,优点是灵活度高,可以面向对象编程。对于python语法,比如可以去codecademy:learn to code上学习,一个交互式在线平台。对于rhinopython,其实mcneel已经给出不少资料了:python scripting for rhino and grasshopper [mcneel wiki]其中提到的designalyze,有视频有源码,可惜需翻墙。这本rhinopythonprimer也有很多例子。中文资料在shaper3d有一些。戳:rhino脚本与开发-rhino(犀牛)中国技术支持与推广中心我其实比较常用ghpython | grasshopper,使得python代码可以集成到grasshopper里。这样写代码时互动性强些,而且它可以方便的调用grasshopper算法。以上是涉及编程的内容。掌握rhinopython不仅需要了解python语法,还需要对几何的原理nurbs和mesh有深入理解。如果能精通rhinopython的话,rhino肯定也可以异常熟练了。下面从cad/cam来谈建筑吧,编程可以辅助设计,比如创造形体,比如目标优化。可以辅助分析,比如分析光照视线通风等等。可以辅助建造,设计节点,设计加工刀路等等。说到造型的话,algorithmic design这个网站还挺有意思,不少案例都是python的代码。目标优化(optimization,或者叫数学规划)也值得一书,计算机科学里有很多搜索算法用于此类问题。gh里面galapagos是个暴力优化器,kangaroo能解决特定几何问题,除此外有时coding还是需要的。但在很多方面,其实都有插件了,没太大必要用python自己造轮子。比如设计加工刀路这件事,当然可以自己写编译器把几何信息翻译成gcode,但是也是有rhinocam, silkworm, kuka|prc之类的gh插件,直接可以做到。当然,有时这些插件办不到的事情,还就得自己coding。确实有些东西如果没有相应插件的话,用gh很难做出来的,比如multiagent system,就必须自己写class了。最后贴张图,笔者用做过的小设计用rhinopython建模和模拟的。这个用grasshopper比较难所以选择了用python,两百多行而已。
2016.02.18更新最近在做一些computation和optimization的內容,發現grasshopper裡面的python奇慢無比,借google調查了一下,有些結論。首先說rhino,根據論壇上mcneel公司的人的說法:(does rhino 5 use all 6 cores on 6 core processors?)rhino is not a “multi-threaded” application. it does split off a few minor processes to other cores but nothing major. that’s because modeling is a serial process. modeling has to be done ‘in order’.所以rhinosdk基本上不提供multi-thread的用法。gh基於rhino,按論壇上的說法也是基本上不支持multi-thread的。那麼gh裡面的python是不是就沒辦法開多線程了呢?理論上是可以的:ghpython – new component and parallel modules但是用沒有用呢,我是沒看過比較好的實例。個人感覺原因是:普通的geometric operation靠現在的cpu計算能力基本上是可以滿足的,最多等5min。所以剛需並不高。確實需要並行計算的是更大型的計算量,比如optimization。gh自帶的galapagos, 還是第三方比如octopus或者goat這種優化解算器。而這些又都是打包好的模塊,無法在python裡面用上面文章裡面的並行計算模塊調用…… (所以python裡面的並行真的很雞肋啊)單純的optimization又不需要依賴于rhino平台,直接在rhino外面操作即可。那是不是設計geometry的optimization就沒辦法做了呢?其實不是的,雖然目前沒有見到特別好的解決方案,之前做research的一個組用的方法是:在rhino外面操作,然後把geometry通過obj導入回來,或者實時傳遞點坐標在rhino裡面重建mesh。最後,我同時在嘗試遷移至dynamo平台。——————————————————————————————原答案:一堆感謝不點讚,你們這些壞人!———————————————正式答題。這應該是我在知乎上第一個涉及專業相關的問題,慢慢答。(其實昨日看成在建築方面的“應用”……一激動遂mark之。剛才仔細一看是問“教程”……那麼敝人就兼顧著都說一點,簡單介紹一下這方面內容在建築中的前沿領域都在做什麼。)首先,python的語言教程其實很多,像 @马逸东西 说的codecademy。另外還有udacity和coursera上面的。現在mooc類課程很多,隨便找一下就有。側重點有些是語言本身的性質,有些偏應用。(udacity作為工業界類mooc,實用性非常強。)個人還是首推自家學校在edx上開的這門:introduction to computer science and programming using python其他的基本教程直接從@马逸东西 的答案里找即可。既然是建築相關,一般離不開rhino。下面來說一下python和rhino的關係。python其實有很多版本,rhino因為是win平台起家而且用了很多.net的內容,在python的選擇上自然也是依託.net的ironpython。所以,大家說的rhino中的python,其實就是ironpython。這個在安裝rhino的時候會安裝一個,也可以自己下載最新版本然後替換。rhino裡面的python用法有二:其一為不藉助grasshopper的pythonscript,有簡單的ide可以debug和step;其二為grasshopper裡面的python component,只有一個寫script的小窗口,只能test,不能debug。(至於怎麼用external editor寫code,這又是另外一個故事了,暫且按下不表。)ghsshopper裡面的寫script的原生component有兩個,c#和vb,是david rutten直接寫的,與gh和rhino整合非常好。python這貨,其實是個領養的娃娃。由於不會賣萌,初期很不受待見。後來修修補補才差不多,但還是有點不堪大用。rhinoscriptsyntax和rhino是兩套東西,一個用guid,一個用實體的geometry。這兩個娃什麼區別呢?guid呢,全稱其實是globally unique identifier,可以理解為一個geometry的名字。就像你叫小明,你哥哥叫小萌,比你多個草字頭,代表不是一個人。但你們的媽媽可以一邊喊“小萌快回來吃飯啦”,一邊跑去揪著你的耳朵把你拎回家來。兩種操作,結果都是你們回來吃飯了。(誰讓媽媽喊你回來你不聽話,活該!)用名字當然很簡單,省時省力,但有些人沒有名字,只能動手……於是就會出現兩種混用的情況。會很亂,也非常容易出錯。另外就是如果和gh的component混用,gh自帶的數據結構處理起來也比較麻煩。一般的做法是全都flat過再接入。出來的也是list的數據類型。這樣對很多初學者來說,會一定程度上限制class的用法。我見過的即使是eth內部人寫的script,也都是function為主,很少用class。但是最麻煩的問題還不是這個。由於gh其實是個圖形編程平台,其實大部分的建模都可以用gh的component本身解決。即使像“循環”這類問題,也有hoopsnake和anemone可以一定程度上解決,只要你邏輯能理清。所以最需要coding的問題是component解決不了而有沒有人開發相關插件的問題。這個在research裡面很常見。比如上學期上一門optimisation的課,裡面要實現一個michell truss 的參數化控制,於是就有了這個東西:(另外半邊是kramaba的優化,中間粉色的是goat的optimiser,不重要。)(另外半邊是kramaba的優化,中間粉色的是goat的optimiser,不重要。)結果就是一個可以改變參數批量化產生各種michell truss的東西:這還只是比較簡單的用法,整個script從構思到實現大概用時半天多。但真正複雜的項目一個是規模大,一個是用到的數學多。而作為一個好用的程序語言,最重要的一方面就是有足夠多的外接library提供各種函數可以用。可python最重要的一個數學函數庫numpy在ironpython里不能調用……不能調用……不能調用……(現在可以在x86的rhino裡面用了,所以裝了x64版本rhino的孩子們,再去裝一個吧 。o(∩_∩)o)於是當初就是各種問題,各種不好用。c#就沒有這個問題,本身支持也好。gsd那邊mdes項目的technology項目主要就是用c#,估計也跟其教授當初開始涉足這方面時候python太挫有關……############### 我是分割線 #############但是,python由於其語言本身簡潔有力,很多好的特性,其發展是很有前景的。而且eth的gramazio kohler research (就是那個各種機械臂的dfab,現在併入國家出錢支持的nccr。)以及block research group里,用python的也不少。(我是不會告訴你們最出名的那個搭建磚墻的項目的原始code就是python寫的,見下。)因為代碼量真的小很多……而且支持越來越完善。故大家現在依然在用。但是……(對,“但是君”又來了……)他們大多數都是在用純的pythonscript,更有甚者因為是做結構優化和計算,只要輸出點陣文件即可,所以連rhino環境都不用。比如這個算用force density算網格的(用mathematica也可以實現,但rhino裡面的python真的是不可以呢。):the force density method « block blog關於block research group和dfab在做什麼,各位自己看網站:block research groupdfab | nccr digital fabrication瑞士這是在國家出錢做建造,美帝都望塵莫及,我們目前是真心是追不上啊……這些是我目前了解的建築方面最前沿的應用。但是教程呢,是真心沒有的。出教程的都是已經成熟的內容,前沿research大家都在摸索,要教程難道要上帝視角么……其他周邊方向,比如結構分析和計算,就和建築離得比較遠了。至於其他領域應用,比如cam之流,故事就很多了……@马逸东西同學談的比較廣,有些細節和客觀事實有待推敲,但大體方向上問題不大。p.s.最後多說兩句。建築引入這套參數化思想和系統已經有10年有餘。開始都在專注與形式的複雜性,結果造出了很多結構奇葩的建築。現在已經進入一個可以把結構納入設計交互流程里來的時代,各種實時結構分析和優化軟件也如雨後春筍般出現。(其實也是因為computation ability提高的緣故。)未來的發展肯定是具有物理特性的計算機模型。電腦里的建築也不再會是一個形式而已。個人覺得未來的建築師會越來越需要了解一定的結構知識。不一定會算,但要懂。懂,你懂麼?(^_^)
国外有许多网站都有很棒的教程下面有几个推荐的面向设计师的python基础教程 by 王大川http://www.xuexiniu.com/thread-63124-1-1.html清楚地讲解python的基本指令与观念plethora project http://www.plethora-project.com/education/2011/09/12/rhino-python-tutorials/非常知名的网站跟我读 『rhinopython 101』系列视频教学http://bbs.shaper3d.com/thread-22775-1-1.html将rhino python官方文件以视频方式讲解ezio blasetti http://code.algorithmicdesign.net/following/posts於upenn 等知名大学任教的教授个人网站digital [sub] stanceposts about python on digital [sub]stancedesignalyze http://designalyze.com/software/python
看到楼上好多回答 ,说明大家都挺感兴趣。 python在编程语言中算比较年轻的, 但是由于跨平台能力非常强。 寄生于各个宿主里面。 以前一般用javascript(rhino)t的地方或者mel(maya里面用的)或者vb (catia里面)等等 都开始注入了python,更别提计算机领域里面各种其他的应用甚至互联网开发也都用起了python。 因此学习与掌握python对编程是非常有帮助的,而且确实也比较容易, 如楼上莫个楼主所说的可以用200多行完成一个小case。除非你是想用可视化图形话的编程语言比如grasshoper 之类。 如果你想学一门真正的计算机语言用于建筑。 那么用python是比较好的选择。 尤其是对于计算机语言没有任何基础的学员。对于有编程基础的学员我的建议是从java入手,比如processing之类的。以上提到了三种语言,加上以前的javascript 是四种。现在说说教程,我最近接触了 rhino的python, 我读的是这本: python scripting for rhino and grasshopper [mcneel wiki] 这是基于以前javascript的教程基层上改写成python教程的。 另外maya的python我学的是 http://help.autodesk.com/view/mayaul/2015/enu/?gu
马海东图书 |
马海东
有一个,叫《跟我一起读rhinopython101》有视频和书籍可在网上下载,我正在学。 @猫无忌说的那个包瑞清博士写的《学习python——做个有编程能力的设计师》也能学,是专注于景观和规划的,而且门槛有点高,没有python语言基础看不懂的。景观用编程来做很合适的,因为他们要处理大量的数据,这些工作让电脑来做就最好不过了。
freecad,你搜一下就出来了.开源软件,可以用python编程绘图建模,也可以用传统的方法绘图,除了有建筑设计模式还有其他的模式.软件可以下载教程和实例.然而目前在实际工作中并没有什么鸟用.纯娱乐向
楼上的通通都给我让开。这猫多人竟然一个都答不对,还好我读书多。这个刚好前段时间逛书店,让我大吃一鲸,有个景观的写了几大本书,吓得我哦。仔细一看,人家是一个博士,我瞬间觉得心安理得了。这几本书如下:《编程景观》、《学习python-做个有编程能力的设计师》、《arcgis下的python编程》和《折叠的程序》——————————————————————————————————————-这里是正儿八经的景观专业的在抢程序员的饭碗案例,我大致翻了一下,代码太多了。不想看,毕竟我是用c#的结构设计狮,专业不对口。
扑通跪下了、现在建筑师都来抢我们程序员的饭碗了么?