有没有专门关于python在建筑中的应用和教程?

WBOY
Freigeben: 2016-06-06 16:22:16
Original
7933 Leute haben es durchsucht

最好有实例

回复内容:

谢邀 @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,两百多行而已。
有没有专门关于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 的參數化控制,於是就有了這個東西:
有没有专门关于python在建筑中的应用和教程?(另外半邊是Kramaba的優化,中間粉色的是Goat的optimiser,不重要。)
結果就是一個可以改變參數批量化產生各種Michell Truss的東西:
有没有专门关于python在建筑中的应用和教程?
這還只是比較簡單的用法,整個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寫的,見下。)
有没有专门关于python在建筑中的应用和教程?
因為代碼量真的小很多……而且支持越來越完善。故大家現在依然在用。

但是……(對,“但是君”又來了……)他們大多數都是在用純的pythonscript,更有甚者因為是做結構優化和計算,只要輸出點陣文件即可,所以連rhino環境都不用。
比如這個算用Force Density算網格的(用Mathematica也可以實現,但Rhino裡面的python真的是不可以呢。):
The force density method « BLOCK blog

關於Block Research Group和dfab在做什麼,各位自己看網站:
BLOCK Research Group
dfab | NCCR Digital Fabrication

瑞士這是在國家出錢做建造,美帝都望塵莫及,我們目前是真心是追不上啊……

這些是我目前了解的建築方面最前沿的應用。但是教程呢,是真心沒有的。出教程的都是已經成熟的內容,前沿research大家都在摸索,要教程難道要上帝視角么……

其他周邊方向,比如結構分析和計算,就和建築離得比較遠了。


至於其他領域應用,比如CAM之流,故事就很多了……@马逸东西同學談的比較廣,有些細節和客觀事實有待推敲,但大體方向上問題不大。


P.S.
最後多說兩句。建築引入這套參數化思想和系統已經有10年有餘。開始都在專注與形式的複雜性,結果造出了很多結構奇葩的建築。現在已經進入一個可以把結構納入設計交互流程里來的時代,各種實時結構分析和優化軟件也如雨後春筍般出現。(其實也是因為computation ability提高的緣故。)

未來的發展肯定是具有物理特性的計算機模型。電腦里的建築也不再會是一個形式而已。個人覺得未來的建築師會越來越需要了解一定的結構知識。不一定會算,但要懂。

懂,你懂麼?(^_^) 国外有许多网站都有很棒的教程
下面有几个推荐的

面向设计师的Python基础教程 by 王大川
xuexiniu.com/thread-631
清楚地讲解python的基本指令与观念

Plethora Project
plethora-project.com/ed
非常知名的网站

跟我读 『RhinoPython 101』系列视频教学
bbs.shaper3d.com/thread
将Rhino Python官方文件以视频方式讲解

Ezio Blasetti
code.algorithmicdesign.net
於UPenn 等知名大学任教的教授个人网站

digital [sub] stance
Posts about python on Digital [Sub]stance

Designalyze
designalyze.com/softwar 看到楼上好多回答 ,说明大家都挺感兴趣。 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我学的是 help.autodesk.com/view/ 也是以前MEL现在注入了python。

从我举例来看,你就看出python如何强势了。


另外在我自己的ikuku主页上我也会写一些关于计算机语言如何应用在建筑里面的例子。 不多,但是如果你们想跟我探讨或者什么的, 非常欢迎。 文章 | 马海东
图书 | 马海东 有一个,叫《跟我一起读RhinoPython101》有视频和书籍可在网上下载,我正在学。 @猫无忌说的那个包瑞清博士写的《学习python——做个有编程能力的设计师》也能学,是专注于景观和规划的,而且门槛有点高,没有Python语言基础看不懂的。
景观用编程来做很合适的,因为他们要处理大量的数据,这些工作让电脑来做就最好不过了。
有没有专门关于python在建筑中的应用和教程? 有没有专门关于python在建筑中的应用和教程? FreeCAD,你搜一下就出来了.开源软件,可以用Python编程绘图建模,也可以用传统的方法绘图,除了有建筑设计模式还有其他的模式.软件可以下载教程和实例.


然而目前在实际工作中并没有什么鸟用.纯娱乐向 楼上的通通都给我让开。这猫多人竟然一个都答不对,还好我读书多。
这个刚好前段时间逛书店,让我大吃一鲸,有个景观的写了几大本书,吓得我哦。
仔细一看,人家是一个博士,我瞬间觉得心安理得了。这几本书如下:
《编程景观》、《学习Python-做个有编程能力的设计师》、《ArcGIS下的Python编程》和《折叠的程序》
-------------------------------------------------------------------------------------------------------------------
这里是正儿八经的景观专业的在抢程序员的饭碗案例,我大致翻了一下,代码太多了。不想看,毕竟我是用c#的结构设计狮,专业不对口。 扑通跪下了、现在建筑师都来抢我们程序员的饭碗了么?
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!