建筑师为什么要会Python编程

我们生存的这个时代是一个数字化的时代, 建筑师可以通过使用一系列与建筑设计类相关的软件工具,把他们的设计从“概念变成图纸”。
大到公司,比如 BIM 的管理模式,云端协同的工作方式,以及使用程序化、参数化完成的设计方案,大数据用于方案的分析和表现等等;小到个人,越来越多的人使用 grasshopper、dynamo 等等可视化编程软件,协助并完成自己的设计工作,都是这一切的直观体现。

随着各种各样数字化参数化工具的出现,建筑师可以很轻松地的实时的动态的为几何图形进行参数设置,从而生成复杂的设计。

可是光有技术,并不管用;要有掌握这门技术的人,才能充分地消化掉这一波技术红利,从而实现自己和企业巨大的飞跃。

建筑师为什么要会Python编程 范文模稿
(图片来自网络侵删)

更何况,技术是不断更新迭代的,今日还新潮的技术,可能明日就被更新的技术淘汰。

在这样的情况下,我们需要用这也就要求我们建筑师,在掌握好自己设计技能的同时,也拥有一定的计算机技能;既能掌握核心技术,又能快速适应技术迭代。

可见的未来,将会有一大批既会设计,又懂编程的建筑师存在,竞争将空前激烈。
越早成为建筑业里会编程的存在,就能越早吃上这个领域的饭,在到来竞争到来的时候,你才能吃得越香。

现在问题来了,你作为这些数字化软件的使用者,你的一举一动实际上是受到这些软件的限制, 你生成的这个形体即归功于你的设计,同时也归功于编写该参数化工具的程序员。

这些工具嵌入了程序员的算法与代码。
而这些算法即拓展了建筑师们的概念,但是同时也束缚了建筑师思想。

面对这个尴尬的问题,建筑师需要认真考虑设计与算法的关系。

设想一下,如果建筑师自己会编程, 那么建筑师也就具有了生成或拼装这些算法及工具的能力. 那么这必然会成为一种优势,使得建筑师摆脱算法的束缚, 获得设计的自由, 从而使得设计更加具有原创性。

在现实工作环境中, 随着越来越多开源的算法及越来越容易的编程语言的产生,即使对一些建筑师天生就不喜欢编程,也不得不去积极的面对编程这个问题, 因为只有建筑师对这些工具越熟悉, 建筑师的素养及专业性越有可能发挥对淋漓尽致, 反之建筑师可能会成为越来越多的各种各样的建筑设计类软件的附庸。

基于以上的分析,下面就编程对设计创造及编程对设计流程管理两个方面探讨其对建筑设计的影响。

建筑师常用软件集

编程能帮我们做什么?

1.能够代替人类完成大量的,有规律的,重复的工作,速度快,准确度高

比如要给10,0000个建筑单体,按照一定规律变化排序,并一一写上其所有信息,如果让人来做,不但担心错误和误差,几天几夜也做不完,可是如果你写一个脚本给计算机运行,它几分钟之内便可以完成这项工作,并且可以做到" 0 "误差。

2.拥有编程基础能让我们快速的掌握新软件和新技术

编程基础,就是类似于九阳神功一般的存在,因为对软件认知的提升(甚至可以直接通过 API ),对于各种新软件、新技术,我们都能做到快速上手。

3.可以突破限制,完成比复杂更复杂的设计

在 Grasshopper 等程序化软件问世之前,人类做异形建筑、曲面建筑是十分吃力的事情,甚至一度无法通过技术手段实现自己的方案。
掌握编程技术,你就可以使用自己的设计的脚本,实现比复杂更复杂的设计。

4.能够依据自身需求,为自己量身定做适合的功能

做不同的项目,有不同的需求,有时软件很难以面面俱到。
可是如果拥有一定的开发能力,便可以针对自己的需求,为自己量身定做,最适合自己的功能。

编程如何拓展了设计与创造?

参数化设计:

很显然, 现在大量的建筑设计是通过autocad, revit, rhino, sketchup 等应用软件完成概念设计的. 如果没有这些绘图软件,只是依靠丁字尺与图板,会大大增加建筑师的工作时间,大量的枯燥的绘图工作。

但是这些软件本质上只是一种绘图及可视化工具, 只是起到了增强我们的手的技巧的功能。

即便如此,这些软件中的一些参数设置依然影响了我们的设计思维, 通过简单的修改参数就能马上获得可视化出新的造型,大大缩短了把概念转化为空间及造型的速度. 随着参数化越来越优化,建筑师可以快速的进行概念比较,从而发展出他们想要的结果。

而编程的技能可以把参数化设计发展到极致, 通过编程可以设置更加有条理有系统的参数,便于形成新的建筑形式,从而可以探索建筑如何随着参数变化而改变。

在这种语境中,编程语言也就成了新的建筑材料,新的建筑形式,通过非常简单的几行代码,就可以生成一个非常复杂的形体. 甚至可以通过巧妙的参数设置及编排,生成一些之前软件无法生成的空间或形体。

生成设计/GENERATIVE DESIGN:

基于算法或AI的设计, 相比较于参数化设计, 在这个设计模式中, 计算机不再只是人类的一只手, 计算机在模拟人类的大脑,甚至是计算机与人脑的合作。

通过人类的算法设计加上电脑的算法计算, 就可以生成大量的合作成果,然后建筑师再次运用自己的专业判断从大量的成果选择出最优化的方案再继续发展,快速迭代完成概念阶段的设计. 在这种模式中计算机成为了创作或者说设计的重要的组成部分. 而编程技能也就成为了这种模式不可或缺的技能了。

这一模式最明显的特征就是计算机的不可取代性,没有计算机人类人工是无法设计出这些东西的。

通常情况下,设计工具软件预编译了很多设计师无法理解的复杂自动化程序算法,因此,这也造成了建筑师对该工具的使用是有限的. 而建筑师通过编程了解了这些算法代表了什么,以及他们如何影响几何结果之后,建筑师在设计中就可以利用这些算法,进行人机合作。

数字建造/Digital Fabrication:

随着工业化程度的提升,数字化建造的时代已经来临, 通过对数控机床到3D打印机, 从激光切割到通用机器人的使用,必然对建筑设计造成巨大的影响。

对于这些设备及机器使用, 编程技术也变得不可或缺, 只有通过计算机语言才有可能与这些设计进行沟通与交流。

编程如何拓展了设计流程与管理?

从流程及管理的角度来看, 我们已经处于数字化时代。

当今建筑设计变得越来越复杂,需要越来越多的工种. 编程的能力在不久的将来可能成为一种必须掌握的应对数字时代的技能。

现实中我们大部分的工作是在计算机上完成的, 通常情况下我们使用的都是现成的应用程序, 这些程序能够完成我们大部分的工作,但是由于建筑项目的复杂性,依然有不少我们需要解决的问题是我们的软件所不能够完成的。

出于各种原因,比如商业利益等等, 这些应用程序他们之间相互不兼容, 没法无缝的协同工作. 因此我们需要工具让这些软件按照我们的意愿去工作。

而编程能力就是这一工具,有了这一工具,就有了以下优势:

能够掌握整个设计的主权:

经常的,我们都会碰到如果这个软件可以这么这么地, 我就可以非常快的那么那么地完成任务了.而当今的这些应用软件比如rhino, revit , sktechup 都有API, 通过几行简单的代码,建筑师就可以控制整个设计流程,因此也就可以根据具体需求进行调整。

用最少的工夫做最更多的工作:

会编程的建筑师有着更高的工作效率。
通过在软件上编写一个方程式来完成一项工作,而通常这会需要很多步和冗长的时间。

比如你需要将100多个文件从一个文件夹复制到另一个文件夹,并用今天的日期将其重命名。
您可以手动执行此操作,这可能会花费您数小时的时间,或者您可以编写一个程序去执行。

再比如你需要把Excel表与门窗表相关联,列出所有门号及其关联的房间号和房间名称。
如果你有两千多扇门需要整理,很显然你是无法手动完成此操作。
借助编程代码,你可以在几分钟内更新门窗表。

代码可以让计算机完成这些无聊的重复性工作(它比人做得更好), 而省下来的时间可以让你去应对更有趣更有挑战性的任务。

编程可以帮助你解决问题。

并非每个人都希望成为一名专职程序员,但是会编程是一项技能, 通过简单的学习一些代码可以帮助你解决每天遇到的问题。
有了这项技能,建筑师除了会使用软件公司为我们提供的工具之外,建筑师也打造自己的工具。

Dynamo 中的 Python Script

Dynamo 中的 Python Script

随着对编程知识越来越多的掌握, 甚至可以打造你自己的独有工具箱,造就建筑师独特的风格及原创性。

这么多编程语言,为什么选Python?

1.Python 是一门简洁的,高级的语言

对于非计算机专业的广大建筑师来说,Python 相对其它的语言,能够让我们更容易入门,学习起来,也最为简单。
毕竟,Python 是写给人看的。

2.Python 前景光明,且有大量资料可供参考

随着人工智能,科学计算,大数据等技术的兴起,Python 这几年的发展也是风生水起,不但使用的人数节节高升,资料也是遍地开花。

3.Python 是一门优秀的粘合剂语言

因为 Python 简明的特性,它在调用其它编程语言写成的功能时,格外的得心应手,比如用 Python 调用 C++ 写成的 API,就是一种常见的情况。
此外,如果遇见两种不同语言写成的模块,Python 也能很好的执行它们。

Rhino 与 Grasshopper

4.Python拥有海量的第三方库

强大的第三方库

Python 拥有海量的第三方库,能够实现各种强大的功能。
所以自己写不出来没关系,导入大神写的,知道怎么用就可以了。

5. Python 对于数据的生成和处理,有得天独厚的优势

相比于各种强类型语言提取数据的繁琐与复杂,Python 在处理数据时游刃有余,且 Python 有一个巨大而活跃的科学计算社区。

如今 BIM、GIS、智慧城市等等与建筑业相关的技术,都要涉及到数据处理相关的任务,Python 绝对是你处理数据的必备神器。

PyQgis

6. 建筑师常用的软件对于 Python 支持情况良好

很多建筑师常用的软件,都自带 Python 解释器,软件商们也给 Python 开发,提供了强有力的支持。

比如下面这些我们常用的软件,就都可以使用 Python 进行工作:

Python是一种易于读写的语言, 功能强大,足以构建工具类程序并自动化无聊的东西。

Python跨平台,这意味着可以在Windows、Mac、ubuntu中使用。

更重要的是python语言被叫做胶水语言, 几乎所有的建筑设计类软件都提供了Python的开发环境:

rhino,grasshopper,revit,dynamo,blender,maya , 3ds max …

虽然adobe的产品的api用的是JavaScript, sketchup的api使用的是ruby, 但是通过windows的dotnet框架,Python依然可以被用于photoshop, sketchup …

通过Python你就可以把设计流程中的各个软件串联起来成为一个整体。

PyRevit 与 RevitPythonShell

注: 以下内容基于经验及改编自Python社区。

简便

Python的语法非常优雅,甚至没有像其他语言的大括号,分号等特殊符号,代表了一种极简主义的设计思想。
阅读Python程序像是在读英语。
也正是由于Python程序代码简单,所以与其他程序语言相比起来,后期的程序维护也会更容易,更舒心。
这是初学者学习Python的最大原因。
当你第一次开始编程时,你肯定不希望从具有严格语法和奇怪规则的编程语言开始。

开源性社区

Python是免费开源的。
程序员可以通过共享、复制和交换它,也使得Python形成了强大的社区,使它更加完善,技术发展更快。
几乎任何python问题, 你百度或谷歌一下就有答案。

兼容性

Python兼容众多平台,所以开发者不会遇到使用其他语言时常会遇到的困扰。

面向对象

Python既支持面向过程,也支持面向对象编程。
面向对象的程序语言通常十分复杂的,而Python却设法保持简洁。

Python使得程序员的开发效率不断提高。
它适用于网站、桌面应用开发、自动化脚本、复杂计算系统、科学计算、生命支持管理系统以及物联网、游戏、机器人、自然语言处理等很多方面。
下面是几个经常使用的库:

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。
PIL功能非常强大,但API却非常简单易用。

matplotlib: 图表绘制。

requests: 处理URL资源特别方便。

NumPy: Numpy被认为是Python中最受欢迎的机器学习库之一。

json: JSON格式处理。

tkinter: 图形界面GUI。

参考资料: 计算机辅助建筑设计——BIM/数字建造/编程&脚本。

联系我们

在线咨询:点击这里给我发消息