찾다
백엔드 개발파이썬 튜토리얼有没有专门关于python在建筑中的应用和教程?

最好有实例

回复内容:

谢邀 @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#的结构设计狮,专业不对口。 扑通跪下了、现在建筑师都来抢我们程序员的饭碗了么?
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬과 시간 : 공부 시간을 최대한 활용파이썬과 시간 : 공부 시간을 최대한 활용Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

파이썬 : 게임, Guis 등파이썬 : 게임, Guis 등Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.