面向设计师的编程设计知识系统——PADKS

(Programming Aided Design Knowledge System)

在数字化、智能化迅速发展的背景下,设计师所面临的设计方式和技术环境正发生深刻变革。“面向设计师的编程设计知识系统(Programming Aided Design Knowledge System, PADKS)”正是针对这一趋势而构建的一套完整知识体系,旨在为建筑、景观、城乡规划等领域的设计者提供编程思维与实践能力的全面支撑。该系统涵盖从 Python 脚本语言、Grasshopper 可视化编程,到 ArcGIS 地理信息处理,再到 Kangaroo 动力学模拟与 NetLogo 多智能体建模等内容,形成从基础语法到实际设计项目应用的知识递进路径。

PADKS 的核心不是单纯教授一门编程语言,而是强调以“编程思维”重构设计过程的可能性,使设计者跳脱对工具的依赖,进而掌控工具、塑造工具,最终回归“设计的创造性”本源。从《学习Python——做个有编程能力的设计师》到《折叠的程序》、《参数模型构建》,每一册著作不仅是技术的讲解,更是设计方法论的延展。

这一系列书籍系统性地构建了编程语言与设计实践之间的桥梁,不仅解决Grasshopper或ArcGIS在功能拓展上的局限,更以项目实战驱动设计逻辑的重构,推动设计教育从“工具使用”向“逻辑思维”与“数据构建”转变。PADKS不仅适用于初学者入门,也是专业实践者深化理解与突破边界的创新平台。

🏷️出版信息

PADKS Monograph
📘 书名:学习PYTHON—做个有编程能力的设计师
✍️ 作者:包瑞清
📅 出版时间:2015年6月第1版
🏢 出版社:江苏凤凰科学技术出版社
🔢 ISBN:978-7-5537-4540-4
🧮 字数:14.4 千字
💰 定价:138.00元
PADKS Monograph
📘 书名:ArcGIS下的Python编程
✍️ 作者:包瑞清
📅 出版时间:2015年6月第1版
🏢 出版社:江苏凤凰科学技术出版社
🔢 ISBN:978-7-5537-4538-4
🧮 字数:14.0 千字
💰 定价:128.00元
PADKS Monograph
📘 书名:参数化逻辑构建过程
✍️ 作者:包瑞清
📅 出版时间:2015年6月第1版
🏢 出版社:江苏凤凰科学技术出版社
🔢 ISBN:978-7-5537-4537-4
🧮 字数:12.8 千字
💰 定价:118.00元
PADKS Monograph
📘 书名:折叠的程序
✍️ 作者:包瑞清
📅 出版时间:2015年6月第1版
🏢 出版社:江苏凤凰科学技术出版社
🔢 ISBN:978-7-5537-4539-4
🧮 字数:13.6 千字
💰 定价:128.00元
PADKS Monograph
📘 书名:编程景观
✍️ 作者:包瑞清
📅 出版时间:2015年6月第1版
🏢 出版社:江苏凤凰科学技术出版社
🔢 ISBN:978-7-5537-4536-4
🧮 字数:14.0 千字
💰 定价:128.00元
PADKS Monograph
📘 书名:参数模型构建
✍️ 作者:包瑞清
📅 出版时间:2015年6月第1版
🏢 出版社:江苏凤凰科学技术出版社
🔢 ISBN:978-7-5537-4535-4
🧮 字数:25.0 千字
💰 定价:188.00元

📖内容简介

1-⦿《学习PYTHON—做个有编程能力的设计师》

🔸推荐: 工作的目的也许是对产值的追求,而那句害人的“真理”说是什么最好的方法就是自己最熟悉的方法,也只是一种懒惰的借口,但是在快速追求产值的紧逼下,其成为了既定思考的方式,却殊不知那只是避免转换思维,学习新事物与深度思考的又一种重复性与思维惰性的“手工”劳作。

《学习PYTHON—做个有编程能力的设计师》从编程设计角度阐述利用Python脚本语言辅助设计的方法。在广大设计师从来没有想过设计行业与编程会发生关联时,编程设计已经对传统设计方法产生了影响,甚至变革。编程语言通过图形程序与设计构建了最为直接的联系,使得设计的过程更加智能化,以利用语言的魔力实现更复杂设计形式的创造和各类设计以及分析问题的解决途径。

设计者也开始以编程语言的逻辑思维方式,一种与直观的设计关照截然不同的思维方式,思考设计形式这个在理性逻辑思维与感性设计思维之间不断跳跃的过程,两者之间不断地影响与融合,这正是使用编程语言来辅助设计带来的影响,更是一种设计者乐此不疲的新设计过程的游戏,因为编程让设计过程更具创造力!

🔸内容简介: 《学习PYTHON—做个有编程能力的设计师》不是纯粹的Python编程学习,而是在学习基本Python编程语言时阐述辅助设计的方法,从Python Shell到RH_Python再到GH_Python,将Python真正作为设计者从事设计辅助的编程语言;同时,这又不是纯粹几何形式编程的说明,而是包括Python编程数据结构、基本语句、函数与类的学习过程。

在掌握Python语言的数据结构、基本语句、函数、类与异常,并通过具体案例阐述深入了解实践应用的方法之后,在“项目”部分探索与详细阐述了十个案例,包括:

“折叠的过程- 圆柱体V 形与Mesh 顶点排序”,结合Kangaroo动力学模块模拟折叠的过程,使用Python编写符合建立Mesh格网输入条件的点组织模式;

“盒体的展开”,讲述了如何把一个盒体连续展开在一个平面上,并获取多个解的方法;

“解读蚁群算法与TSP 问题以及在GH_Python 中的实现”,蚁群算法是一种用来在图中寻找优化路径的机率型算法,灵感来源于蚂蚁在寻找食物过程中发现路径的行为。本部分详细阐述蚁群算法并探索将其在Grasshopper平台中的Python脚本中实现和解决TSP旅行商问题;

“最短路径与Dijkstra 算法”,最短路径问题是图论研究中经典算法问题,旨在寻找图中两节点之间最短的路径,本部分使用Dijkstra 算法在GH Python中实现;

“探索性研究适宜分析方法GH_Python 下的实现”,适宜性分析的方法一般是在地理信息系统平台中实现,例如ArcGIS。适宜性分析在城乡规划和风景园林中经常被用到,根据应用的范畴又可以细分为城市建设用地的评价、环境影响评价、自然保护区及旅游区用地评价、区域规划和景观规划等。本次项目主要的研究目的是如何将适宜性分析在GH_Python 中实现;

“使用递归解决八皇后问题与满足特定间距要求的建筑布局”, 八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后。为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上;

“解读生命游戏_ 元胞自动机与建立生长模型”, 元胞自动机(Cellular Automaton),是一个时间和空间都离散的动力系统。散布在规则格网(Lattice Grid) 中的每一元胞(Cell) 取有限的离散状态,遵循同样的作用规则,依据确定的局部规则做同步更新。大量元胞通过简单的相互作用而构成动态系统的演化;

“GoogleEarth.KML 文件的调入程序”,规划设计过程中经常借助于Google Earth来寻找和定位地标和路径,那么如何将地标和路径直接加载到Gasshopper平台中,是本部分需要解决的问题; “解读粒子群(PSO) 算法与建立点运动程序”,粒子群算法,也称粒子群优化算法(Particle Swarm Optimization),缩写为PSO,模拟鸟群的捕食行为,通过追随当前搜索到的最优值来寻找全局最优解

“城市土地利用结构信息熵”,在信息论中,熵是接收的每条消息中包含信息的平均量,又被称为信息熵、信源熵等。消息往往代表来自分布或数据流中的事件、样本或特征。在规划设计领域引入信息熵,研究土地利用结构,分析功能的融合程度,信息熵的高低可以反映城市土地利用的均衡程度,熵值越高,表明不同职能的土地利用类型数越多。本部分案例主要通过Python 程序,阐述信息熵和均衡度公式计算过程。

🔸目录

数据结构
  • 1 列表(List)
  • 1.1 索引
  • 1.2 列表的基本操作
  • 1.3 列表的方法
  • 2 元组(Tuple)
  • 3 字典(Dictionary)
  • 3.1 Python 的字典与Grasshopper 的树型数据结构
  • 3.2 Python 字典的方法
  • 3.3 GhPython 与树型数据结构
  • 4 字符串(String)
  • 4.1 用Python 替代Grasshopper 处理字符串的方法
  • 4.2 字符串格式化
  • 4.3 re(regular expression) 正则表达式
基本语句
  • 1 print() 与import
  • 1.1 print()
  • 1.2 使用import 导入模块或者函数
  • 2 赋值的方法
  • 3 循环语句
  • 4 条件语句
函数
  • 1 创建函数
  • 2 随机模块
  • 3 递归
  • 4 时间模块
  • 1 创建类
  • 2 迭代器
  • 3 生成器
项目
  • Case_1: 折叠的过程- 圆柱体V 形与Mesh 顶点排序
  • Case_2: 盒体的展开
  • Case_3: 解读蚁群算法与TSP 问题以及在GH_Python 中的实现
  • Case_4: 最短路径与Dijkstra 算法
  • Case_5: 探索性研究适宜分析方法GH_Python 下的实现
  • Case_6: 使用递归解决八皇后问题与满足特定间距要求的建筑布局
  • Case_7: 解读生命游戏_ 元胞自动机与建立生长模型
  • Case_8:GoogleEarth.KML 文件的调入程序
  • Case_9: 解读粒子群(PSO) 算法与建立点运动程序
  • Case_10: 城市土地利用结构信息熵

🔸设计师为什么要学习python编程语言

为什么( 建筑、景观、规划)设计师也要学习编程语言? 为什么学习编程语言会选择Python ?设计者在没有接触过任何编程语言辅助设计情况下,面对突然的“新”领域,必然会质疑。然而没有任何事物的出现是一下子的,为什么要学习Python 也是从逐渐产生的需求开始。大部分设计者已经开始使用节点可视化编程语言Grasshopper 来协助设计,为设计的创新性带来无限的可能,并解决各类设计过程中遇到的问题,但是由于节点可视化编程本身的特点,静态的数据处理方式在一定程度上限制了编程语言对数据结构处理的能力,然而这完全可以从Python 动态、更加自由处理数据的方法中获得弥补;另外Grasshopper 逐渐扩大的组件群体虽然尽可能满足各类设计的需求但是仍然无法与Python 的模块库相比,从math、random、decimal、numbers、fractions 到abc、array、bisect、Collections、functools 等为Python 编程语言带来无限的潜力,同时包括Python 作为脚本语言嵌入到三维模型软件从软件平台获取的模块;再者Python 从1989 年底发明,第一个公开发行版发行于1991 年以来,因为受到广泛应用领域的支持,日益完善并持续不断地发展,相对Python语言,Grasshopper 节点可视化编程语言在2000 年之后开始发展起来的,面对的主要是细分的设计领域,同时Grasshopper 出现的目的是为了减少设计者学习纯粹语言的负担,能够快速使用组件连线编写程序,并获得实时的几何形式变化,然而事情总是有两个方面,在方便设计者的同时也减弱了纯粹语言本身所应具有的语句魔力。既解决Python 转向设计领域的使用,又解决Grasshopper 节点可视化编程的限制,最合适的方法不是强调某一个方面,而是将二者结合, Rhinoceros 平台嵌入了Python 脚本PythonScript,Grasshopper 也嵌入了GhPython,可以完美地实现Python 的不同接口方式。

如何摆正Python 在设计领域的地位? 如何正确地定位Python 的使用模式? 从Grasshopper 、Rhinoceros、ArcGIS 到MAYA, 更多的设计领域软件平台对Python语言的支持,使得设计者不用担心不得不学习各类不同编程语言来满足不同平台的需要,Python 作为脚本语言具有支持更多各类平台的优势,同时Python 语言因本身的发展规模和可预见的持续发展潜力以及语言简洁易学的特点,必然成为设计者首选的语言,而不是C#又或者VB。设计者学习Python 的目的是为了更好地辅助设计,解决各类设计上遇到的问题和探索更广阔的设计形式领域,而不是使用编程语言来代替核心的设计,那些仅仅依靠编程语言玩弄形式而缺失基本的艺术审美层次的设计只会抹杀编程语言本应该处理解决设计问题的作用。除非特殊情况,不建议使用Rhinoceros 嵌入的脚本PythonScript,而是使用Grasshopper 中嵌入的GhPython,将Grasshopper 与Python 结合起来。设计的核心是如何处理设计问题,设计的特点是不断地推敲设计形式和不断地修改提升,并具有创造性,纯粹的Python 语言脚本无法实时方便地观察几何形式的变化,也不能够快速地建立起根据设计构思实现的几何形式,而这些需求Grasshopper 却可以满足,构建了一种数据结构调整实时观察几何形式变化推敲的设计过程,然而设计上遇到的各类问题单凭Grasshopper 很难处理解决,需要借助Pyhton 更强大的语言协助处理,于是Grasshopper 与GhPython 就构成了辅助设计最好的组合方式。

《学习Python——做个有编程能力的设计师》不是纯粹的Python 编程介绍,而是在介绍基本Python 编程语言时阐述如何辅助设计,从Python Shell 到PythonScript 再到GhPython,将Python 作为设计者设计辅助的编程语言;这不是纯粹的对几何形式编程的说明,还包括对Python 编程数据结构、基本语句、函数与类的说明。整本书都是在编程与设计、理性与感性的逻辑思维之间不断地跳跃,这正是编程让设计更具创造力的核心本质。


2-⦿ 《ArcGIS下的Python编程》

基于ArcGIS的Python编程,辅助规划设计无限拓展的途径!

🔸推荐: 基于ArcGIS的地理信息系统可以辅助规划师从地理信息角度解决相关的规划设计问题,例如从信息化角度智能化管理城市信息数据,进行相关的空间分析、网络分析、地统计以及辅助制图。然而规划师的欲望是无止境的,寻求更自由的计算机辅助规划设计的技术,以及获得更强解决问题的能力,就需要具备编程设计的知识。基于ArcGIS的Python脚本语言正是可以辅助规划师得以自由解决问题的一个途径。

具有编程能力的规划设计师将具有更强解决问题的能力以及拓展无限的创造力,自身的专业知识为如何编写程序解决问题提供了最为直接的基础,这是专业开发人员力所不能及。针对Python 编写程序处理地理信息系统不仅提高了处理地理信息数据的效率,更是可以针对需要解决的问题构建处理问题的程序,从程序编写的角度思考解决问题的方法。

《ArcGIS下的Python编程》为规划师提供了学习基于ArcGIS的脚本语言Python教材,将对Python语言的讲述与ArcGIS的模块ArcPy相结合,并通过实际案例探讨“自然村落选址因子权重评定的遗传算法”、“基于景观感知敏感度的生态旅游地观光线路自动选址”和“解读蚁群算法与TSP 问题”,理解编程规划设计的方法。

🔸内容简介:《ArcGIS下的Python编程》对于ArcGIS 下Python 脚本使用方法的阐述是从Python 语言本身和基于ArcGIS的Python 两个方面同时着手,因此在阅读本书时不需要预先具备Python 基础知识。本书包括七个部分,Python 与ArcGIS,ArcGIS 下的地理数据与Python 数据结构,Python 的基本语句与使用Python 访问地理数据,创建函数与使用Python 处理栅格数据,创建类与网络分析,异常与错误,以及程序的魅力。主要阐述的逻辑线存在并行的两条线,一个是针对Python 的,从对于Python 介绍、数据结构、基本语句到创建函数、创建类和异常;另一个是针对ArcGIS 下的Python ,从ArcPy 站点包、访问以及管理地理信息数据的方法、处理要素类、处理栅格数据到网络分析和与地理处理模型的结合方法。两条线同时推进阐述,互相支持印证,并结合实际解决问题的应用方法,例如如何转化KML 文件和.dwg 格式文件并增加字段数据,以及适宜性分析栅格计算重分类的方法和寻找最近设施点的网络分析,遗传算法应用等。

最后一部分则通过具体的案例来阐述应用ArcGIS下Python编程规划的方法,初步包括三个课题的探讨:

“课题探讨_A_ 自然村落选址因子权重评定的遗传算法“,村落选址受制于山水,如何在复杂的地形中谋得栖身之所,避免自然灾害的侵扰并具有舒适宜人的小气候是人类不断探索的课题。假定根据既然有村落选址的特点反推权重设置具有一定的合理性,并根据反推的权重应用于影响因子计算新的地块获取选址。在这个过程中,使用优化算法中的遗传算法求解;

“课题探讨_B_ 基于景观感知敏感度的生态旅游地观光线路自动选址“,根据《基于景观感知敏感度的生态旅游地观光线路自动选址》的研究,将计算模型程序化,不仅提升模型计算的效率,更有利于不断修正研究过程中出现的问题以及加入更多不同类型影响因子后,进行综合性评价分析,并为类似的研究提供基础性程序片断;

“课题探讨_C_ 解读蚁群算法与TSP 问题“,蚁群算法(Ant Colony Optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。本案例将蚁群算法在ArcGIS的Python脚本中实现。

🔸目录

Python 与ArcGIS
  • 1 Python
  • 2 将地理信息系统作为过程的空间分析
  • 2.1 区位与网络结构
  • 2.2 调研者路线
  • 2.3 场地现状信息录入与基本分析
  • 2.4 基础的数据地理信息化辅助规划设计分析
  • 2.5 专题地图叠合的方法
  • 2.6 作为过程的空间分析
  • 3 Python 与ArcGIS
  • 3.1 .kml 文件格式
  • 3.2 通过Python 使用工具箱里的工具
  • 3.3 通过Python 使用环境设置
  • 3.4 通过Python 使用函数
  • 3.5 通过Python 使用类
  • 3.5 获取和设置参数
ArcGIS 下的地理数据与Python 数据结构
  • 1 ArcGIS 下的地理数据
  • 1.1 文件地理数据库和个人地理数据库
  • 1.2 ArcSDE 地理数据库
  • 1.3 创建地理数据列表
  • 2 Python 数据结构-List 列表、Tuple 元组与Dictionary 字典
  • 2.1 列表(List)
  • 2.2 元组(Tuple)
  • 2.3 字典(Dictionary)
  • 3 Python 数据结构-String 字符串
  • 3.1 字符串格式化
  • 3.2 re(regular expression) 正则表达式
Python 的基本语句与使用Python 访问地理数据
  • 1 描述数据
  • 2 Python 的基本语句
  • 2.1 print() 与import
  • 2.2 赋值的方法
  • 2.3 循环语句
  • 2.4 条件语句
  • 3 Table 属性表与Cursor 游标
  • 3.1 读取几何、写入几何与几何标记(geometry tokens)
  • 3.2 游标和锁定
  • 3.3 在Python 脚本中使用SQL 结构化查询语
  • 3.4 数据存在判断与在Python 脚本中验证表和字段名称
创建函数与使用Python 处理栅格数据
  • 1 创建函数
  • 2 形式参数的传递
  • 3 Raster 栅格数据
  • 3.1 栅格数据(Mesh 面Quad 类型)
  • 3.2 专题数据
  • 3.3 影像数据
  • 3.4 栅格函数
  • 3.5 TIN 表面模型(Mesh 面Triangle 类型)
  • 4 使用Python 处理栅格数据
  • 4.1 栅格计算(地图代数运算)
  • 4.2 重分类
  • 4.3 条件分析工具集
创建类与网络分析
  • 1 创建类
  • 2 网络分析
  • 2.1 从GoogleEarth 中调入路径以及服务设施和源点
  • 2.2 建立文件地理数据库、要素数据集并导入用于网络分析的基础数据
  • 2.3 最近设施点分析
异常与错误
  • 1 异常
  • 1.1 Python 内置异常
  • 2 错误
程序的魅力
  • 1 课题探讨_A_ 自然村落选址因子权重评定的遗传算法
  • 1.1 准备数据
  • 1.2 确定研究区域
  • 1.3 确定影响因子
  • 1.4 假设权重,叠合相加各个影响因子的成本栅格
  • 1.5 遗传算法
  • 1.6 将计算结果应用于类似场地
  • 2 课题探讨_B_ 基于景观感知敏感度的生态旅游地观光线路自动选址
  • 2.1 技术线路与基础数据
  • 2.2 视域感知因子_ 可视区域计算
  • 2.3 视域感知因子_ 最佳观赏距离计算
  • 2.4 视域感知因子_ 最佳观赏方位
  • 2.5 视域感知因子_ 栅格叠加求和
  • 2.6 生态感知因子_ 景观类型
  • 2.7 生态感知因子_ 资源价值
  • 2.8 生态感知因子_ 栅格叠加求和
  • 2.9 景观感知敏感度
  • 2.10 地形因子
  • 2.11 观光线路适宜性成本栅格计算
  • 2.12 观光线路自动获取
  • 3 课题探讨_C_ 解读蚁群算法与TSP 问题
  • 3.1 蚁群算法与TSP 问题概述
  • 3.2 蚁群算法程序解读
  • 3.3 蚁群算法在ArcGIS 下的应用
  • 4 分享程序

🔸GIS 辅助规划设计无限拓展的途径

GIS(Geographic Information System) 地理信息系统在城市规划、生态规划、风景园林规划行业中具有举足轻重的价值。但是GIS 应用领域的广泛性与无限拓展的知识领域使得规划设计者在开始地理信息领域探索时总是无所适从,往往被淹没在浩瀚的知识领域中。实际上对于不同的专业领域,在使用GIS 协助规划设计时,会根据自身的需求选择适合的知识方向和内容,从而找对方向点便于顺利切入。GIS 技术不应该仅仅成为专业GIS 开发者的工具,更应该是规划设计者需要掌握的基础知识。在实际规划设计过程中,将传统的规划设计方法向地理信息系统方向转化,从地理信息的角度管理、分析、研究、规划设计项目,在一定程度上地理信息系统成为规划整个流程的基础框架,所有的规划内容从地理信息数据的录入与管理、对于地理信息数据的分析研究开始,从基于数据的本质内容规划。

从地理信息系统角度切入规划设计的方法主流是使用ArcGIS,由ESRI 出品的一个地理信息系统系列软件的总称。ArcGIS 提供了丰富的地理信息数据管理和分析的工具,同时在不断地拓展,并可以在地理处理中构建地理处理信息模型,流程化处理地理信息数据,然而当需要批处理地理信息数据,或者现有的ArcGIS 中的地理处理工具不能够满足分析研究的需求时,最直接的方式是使用程序语言自行编写工具达到分析研究的目的。ArcGIS 已经开始支持并不断拓展Python 支持的力度,从Python 语言自身发展的历程和针对建筑、规划设计行业三维软件平台越来越多的支持,Python 必然成为针对规划设计者的程序语言。ArcGIS 逐步地发展了ArcPy 站点包,提供使用Python 语言操作所有地理处理工具(包括扩展模块)的入口,并提供多种有用的函数和类,以用于处理和询问GIS 数据。使用 Python 和ArcPy,可以开发出大量用于处理地理数据的实用程序。

程序语言在辅助规划设计领域的优势逐渐凸显,对于规划设计方法更高级技术的追求必然对规划设计者提出新的具有挑战性的要求。编程语言的逐步发展和成熟为相关专业学科的发展奠定了坚实的基础,然而由于编程语言发展阶段的历史原因,大部分规划设计专业的院校并没有开设编程语言课程和针对规划设计领域的编程语言课程,因此大部分规划设计者并不具有通过编程处理问题的能力。具备编程能力并不只是针对专业开发人员的基本要求,规划设计者应该成为具有编程能力的规划设计者,从而更加自由并从全新的视角审视与解决问题,而不必求助于专业开发人员。具有编程能力的规划设计者将具有更强解决问题的能力以及拓展无限的创造力,自身的专业知识为如何编写程序解决问题提供了最为直接的基础,这是专业开发人员力所不能及。针对Python 编写程序处理地理信息系统不仅提高了处理地理信息数据的效率,更是可以针对需要解决的问题构建处理问题的程序,从程序编写的角度思考解决问题的方法。

本书对于ArcGIS 下Python 脚本使用方法的阐述是从Python 语言本身和基于ArcGIS的Python 两个方面同时着手,因此在阅读本书时不需要预先具备Python 基础知识。本书包括七个部分,Python 与ArcGIS,ArcGIS 下的地理数据与Python 数据结构,Python 的基本语句与使用Python 访问地理数据,创建函数与使用Python 处理栅格数据,创建类与网络分析,异常与错误,以及程序的魅力。主要阐述的逻辑线存在并行的两条线,一个是针对Python 的,从对于Python 介绍、数据结构、基本语句到创建函数、创建类和异常;另一个是针对ArcGIS 下的Python ,从ArcPy 站点包、访问以及管理地理信息数据的方法、处理要素类、处理栅格数据到网络分析和与地理处理模型的结合方法。两条线同时推进阐述,互相支持印证,并结合实际解决问题的应用方法,例如如何转化KML 文件和.dwg 格式文件并增加字段数据,以及适宜性分析栅格计算重分类的方法和寻找最近设施点的网络分析,遗传算法应用等。

结合规划设计专业阐述ArcGIS 下Python 编写处理地理信息数据方法的专著也许本书是国内第一本,难免存在不妥之处,敬请批评指正,从而逐步修正和完善。


3-⦿ 《参数化逻辑构建过程》

进入基于Grasshopper节点可视化编程的参数化设计领域入门级教材,为未接触和已接触参数化的实践者以正确的入门途径!

🔸推荐: 从参数化设计思潮开始出现时的沸沸扬扬到归于理性的平静,对于参数化设计方法的思考也从纯粹玩味形式过渡到实实在在解决设计过程中的问题。基于Rhinoceros的节点式编程插件Grasshoper的出现,为进入到参数化设计领域的实践者提供了最为基础的工具。

《参数化逻辑构建过程》正是为未曾接触或有所接触参数化设计的设计师提供从Grasshopper开始探索参数化设计的入门级教材,书中详细阐述Grasshopper节点可视化编程的基本方法,结合案例深入阐述程序编写的核心技术_数据结构和数据管理,引导学习者从正确的途径入手,真正进入到基于Grasshopper程序编写解决设计问题的参数化设计领域。

《参数化逻辑构建过程》一方面强调程序编写的核心技术,同时强调实际的运用,不断的将学习者从传统的三维模型直接构建的方法中引入到基于数据管理的编程思维构建模型和进行设计分析的方法上。

🔸内容简介: 这是一本可以帮助想进入编程设计领域的设计者学习的手册。从内容上避免了对所有Grasshopper组件的详细解析,而将重点放在逐渐学习编程设计逻辑构建方法的过程中,从基础、数据处理、空间定位与方向向量到封装与制造、表皮形式和精细化设计。避免谈论不务实的纯粹形式,深入到编程设计的本质编程的方法和核心数据结构的处理,一开始就从正确的途径着手进入这个具有魔力的领域。

“基础部分”讲解了Grasshopper和Add-ons的安装,以及Grasshopper的界面;

“数据结构与数据管理”部分是Grasshopper程序编写的核心技术,如果需要更加智能化的辅助甚至主导设计,需要熟知数据的组织方式和管理方法。本部分详细阐述了List列表与Tree树型数据的数据结构,并将对核心技术的应用方法贯穿于整本书的始终。同时讲述了外部数据,例如高程数据调入的方法;

基于程序编写构建三维模型和进行相关设计空间分析,需要掌握参考平面和向量在”空间方向与定位”上的技术,并阐述程序编写中最为常用的“区间、数列和随机”;

当程序的规模逐步增大时,需要对程序进行封装,书中在”程序编写与封装“中例举了台阶编写和封装的实例;

最后三部分,通过”制造“、”表皮“和”精细化设计“,以实际案例说明程序编写是如何解决设计相关问题的,进一步理解参数化设计思维与编程设计思维。

🔸目录

基础
  • Grasshopper 的安装
  • Grasshopper 的界面
  • Grasshopper 的组件
  • 纯粹数据的输出
  • 数据结构与数据管理
  • Grasshopper 作者David Rutten 的树状图表与数据结构
  • 数据管理的两类核心技术——List 列表与Tree 数据路径的结构管理
  • 数据列表模式分组与编织重组
  • List 列表类
  • 数据流匹配
  • 常用的几个数据组织方式
  • 线性( 列表) 数据与树型数据的变换操作对几何体构建的影响
  • Tree 树型数据类
  • Tree 类核心组件Path Mapper
  • Path Mapper 组织数据结构应用
  • 外部数据的调入
  • 蛋白质数据库
  • 调入高程数据
  • 调入.shp 地理信息数据
  • 调入图像数据
  • 空间方向与定位
  • 空间方向-Vector 向量
  • Deform- 变形
  • 磁力场
  • 空间定位-Plane 参考平面
  • 截面
区间、数列和随机
  • 区间
  • 对数螺旋
  • 弧线段放样
  • 数列和随机
  • 随机的图案
  • 程序编写与封装
  • 台阶程序编写与封装
  • 台阶程序编写
  • 台阶程序封装
  • 道路程序编写与封装
  • 道路程序编写
  • 道路程序封装
制造
  • 设计概念的产生
  • 设计基本逻辑构建过程
数据标注
  • 几何表皮展平
程序优化
  • 程序编写与封装
  • 表皮形式_A
  • 表皮形式_B
  • 表皮形式_C
精细化设计
  • 梭形建筑

🔸参数化设计的本质——编程的思维

设计领域逐渐熟知且正在被广泛应用的参数化,给设计过程带来了无限的创造力并提高了设计的效率。但是殊不知编程才是参数化的根本,最为常用的参数化平台Grasshopper 节点可视化编程以及纯粹语言编程Python、C#、VB 都是建立参数化模型的基础。这里并不支持类似Digital Project( 来自于Catia)等尺寸驱动,使用传统对话框的操作模式的参数化平台,因为对话框式的操作模式更类似于现有组件的安装拼接,淹没了设计本应该具有的创造性,如果已经具有了设计模型,在向施工设计方向转化时可以考虑使用Digital Project 或者Revit等更加精准合理的构建。对于开始设计概念、方案设计甚至细部设计却应考虑使用编程的方法,Grasshopper 与Python 组合的自由程度让设计的过程更加随心所欲。

参数化只是编程的一部分应用,建立参数控制互相联动的有机体。因为Grasshopper 最初以参数化的方式渗入到设计的领域,但是Grasshopper 的本质是程序语言,而编程可以带来更多对设计处理的方法,在Grasshopper 平台开始逐渐成熟,其所带来的改变已经深入到更加广泛的领域,因此仅仅用参数化来表述Grasshopper 的应用已经不合时宜。更甚至Python 语言可以实现参数化构建,那么Python 就是纯粹的为参数化服务的吗?很显然不是,这个过程重要的是学会编程,学会编程的思维方式,用这种方式来创造设计的过程,创造未知领域的形态。“每个人都应该学会编程,因为编程教会你如何去思考”,编程在各个领域中被广泛应用,但是在设计领域里却被认为只有软件工程师才会使用编程来开发供设计师使用的软件,这又是一种误解。在设计者被软件束缚的这么多年里,还在期盼着某款设计软件会增加什么有用的功能从而方便设计,所以在不断的追随着软件的更新,学习开发者所提供的几个有用的功能,那是否想过自己本应该就进入到功能开发的这个层面上来亲自改变计算机辅助设计的过程呢?恐怕目前几乎所有的设计者甚至都没有考虑过这样的问题。

大部分软件都会全部或者部分开源,提供再开发者创造出意想不到的设计,同时也会给再开发者与程序编写的说明,支持很好的学习编程接口的方法。例如Linux 系统有自己异常活跃的社区,数之不尽的想法汇集于此,又或者苹果的网上应用超出百万,解决各类问题,从金融、健康、商务、教育、饮食到旅游、社交网络、体育、天气、生活等无所不包。而对于设计领域首先需要改变自己那根深蒂固的想法,“设计仅仅关注形式功能“的思想束缚拒绝了这个信息化时代本应该给设计领域带来的实惠。还有什么比固步自封、安于现状更可怕的呢?编程能够改变的不仅是被误解的软件开发,它所改变的是设计思考的方式,是设计过程的改变和创造。一旦尝试开始转变思维方式,编程所具有的魔力会不断地散发出来。

数据是程序编写核心需要处理的问题,如果需要更加智能化的辅助甚至主导设计,需要熟知数据的组织方式和管理方法。Grasshopper 和Python 都具有强大的数据管理方法,例如Grasshopper 的数型数据和各类数据处理的组件,Python 的字典、元组和列表。在参数化的领域关注数据是掌握这门工具的基础,切记需要时刻观察数据的变化,避免盲目的连接数据。

没有任何可以投机取巧的方法帮助设计者进入到这个领域。毕竟这不是在学习所谓的一款软件,而这种看法却也占据着几乎所有设计行业。这是编程的领域,因此需要学习的是编程的知识,是编程的思维方法,是编程让设计更具创造力的方法。而参数化也仅仅是编程领域中的一簇,各类设计的问题从结构到生态,从材料到形式都可以试图以编程的思维去从新思考这个过程。

在日新月异科技发展的世纪,编程是设计领域发展的方向。编程与设计,在过去不曾想过两者竟然能够被联系在一起,至今开始探索两者的关系,到未来还有什么意想不到的事情在等待着!


4-⦿ 《折叠的程序》

用程序诠释“纸“折叠过程的魅力!

🔸推荐: 折叠的过程令人着迷,一张简简单单的纸通过折叠可以构建千变万化的形式,这个过程本身就是形式创造的一种方法。总会拿起一张纸开始把玩,虽然实际折叠过程为设计创作提供了一种设计形式研究的手段,但是如何把这多变的形式转化为实际的建造,能否通过实际的折叠研究出基本的形式再在计算机中直接构建最终的结果呢?如果在信息化技术已经发展到目前的阶段水平下,还在使用“静态”构建的方法已经表现出设计本身的固守或者对于编程设计知识体系的茫然。设计的过程是创造的过程,实际折叠的过程才是设计的根本,而不是折叠的结果,因此在计算机中使用编程的方法直接开始折叠过程的研究而不是折叠结果的构建。

《折叠的程序》以Paul Jackson 编写的《从平面到立体——设计师必备的折叠技巧,Folding Techniques for Designers:From Sheet to Form》为基础研究折叠的方法,但是放弃传统用纸折叠的方式,进而寻求应用计算机程序折叠的途径。通过Grasshopper+Kangaroo+Python 编写折叠的过程,研究实际折叠过程中无法达到的更深入形式探索的领域,精确控制施加的力,甚至施加具有正弦函数特征的力;精确的捕捉折叠过程中任意时刻;方便计算折叠形式的尺寸、角度,以及在基本形式下各种实际建造的变化,例如作为墙体表皮的形式、幕墙的形式、建筑的空间、地形的变化等等与实际结合的方法。

🔸内容简介: 也许是受到传统计算机辅助设计的影响,大部分设计者总会将目前的计算机辅助设计停留在某个命令如何操作的基础上,也许是种无奈。基本的命令操作很重要毋庸置疑,但是编程辅助设计的方法本身已经不再是某个基本的命令,而是一个编程设计的知识系统。设计者应该具有编程的能力来创造性地设计和研究设计的过程,使用编程的方法探索设计的各类问题。

《折叠的程序》是面向建筑师编程设计知识体系研究的一个方向,是使用编程的方法研究折叠的过程,以此抛砖引玉改变传统设计意识的束缚,从根本的方面阐述编程辅助设计的方法。

《折叠的程序》开篇主要阐述编写折叠的程序核心的Grasshopper模块动力学模拟Kangaroo,通过翻译设计者Daniel Piker的帮助文件,对Kangaroo的使用方法有较深入的理解;

” 开始折叠的程序“、”基础褶皱“、”其他褶皱“、”V 形褶皱“、”拱形与抛物线形“和”无折缝或一条折痕“部分都是以Paul Jackson 编写的《从平面到立体——设计师必备的折叠技巧,Folding Techniques for Designers:From Sheet to Form》为基础研究折叠的方法,但是通过程序的编写实现折叠的过程;

除了对于折叠程序的探讨,在” 基于动力学设计方法探索“中,通过程序探索索膜结构、极小曲面与无限周期极小曲面和展平的程序方法;

用程序的方法重新诠释折叠的过程并不仅仅是换种思维来表述折叠,同时也并不仅仅是为了熟练掌握Grasshopper 加Kangaroo 动力学模块,更重要的是编程设计的思维。对于很多设计师应该能够根据前文阐述的折叠程序发展出很多出色的设计形式,一方面是根据折叠方法的研究,创造出更多的折叠形式;另一方面是根据折叠的形式衍生出建筑形式。“折叠的建筑”部分利用前文阐述的一个程序,加以梳理完成一个建筑概念的设计。

🔸目录

动力学与折叠的程序
  • 1 折叠的过程
  • 1.1 构建具有折痕的“纸”
  • 1.2 力对象与解算的几何对象
  • 1.3 解算与几何对象的输出
  • 2 关于Kangaroo
  • 2.1 作者
  • 2.2 什么是粒子系统Partical System ?
  • 2.3 Kangaroo 的主引擎组件(Kangaroo Physics Engine)
  • 2.4 Kangaroo 设置(Kangaroo Settings)
  • 2.5 工具(Utilities)
  • 2.6 Kangaroo 的力(Forces)
开始折叠的程序
  • 1 变换旋转
  • 1.1 构建具有折痕的“纸”
  • 1.2 力对象与解算的几何对象
  • 1.3 解算与几何对象的输出
  • 2 对称重复
  • 2.1 平移
  • 2.2 反射
  • 2.3 旋转
  • 2.4 滑动反射
  • 3 拉伸和倾斜
  • 3.1 构建具有折痕的“纸”
  • 3.2 力对象与解算的几何对象
  • 3.3 解算与几何对象的输出
基础褶皱
  • 1 手风琴式
  • 1.1 线型
  • 1.2 旋转
  • 1.3 圆柱体
  • 1.4 圆锥体
  • 2 刀片褶皱
  • 2.1 线型
  • 2.2 旋转
  • 2.3 反射
  • 2.4 圆柱体
  • 2.5 圆锥体
  • 3 盒形褶皱
  • 3.1 线型
  • 3.2 旋转
  • 3.3 圆柱体
  • 3.4 圆锥体
  • 4 增量褶皱
其他褶皱
  • 1 螺旋褶皱
  • 1.1 简单的螺旋
  • 1.2 盒形螺旋
  • 2 聚集褶皱
  • 2.1 手风琴褶皱
  • 2.2 刀片褶皱
  • 2 扭曲褶皱
V 形褶皱
  • 1 基础的V 形褶皱
  • 1.1 沿中轴折叠
  • 1.2 沿对角线折叠
  • 2 变形
  • 2.1 移动对称线
  • 2.2 改变V 形褶皱的角度
  • 2.3 打破对称
  • 3 V 形叠加
  • 3.1 重复
  • 3.2 平行但不相等
  • 3.3 随机的对称线
  • 3.4 变形
  • 4 圆柱体V 形
拱形与抛物线形
  • 1 拱形
  • 1.1 X 形拱形
  • 1.2 V 形拱
  • 2 抛物线
无折缝或一条折痕
  • 1 无折缝
  • 2 一条折痕(折缝)
基于动力学设计方法探索
  • 1 基于Kangaroo 官方折叠案例
  • 2 索膜结构
  • 2.1 关于索膜结构
  • 2.2 索膜结构形式探索
  • 3 展平

🔸用程序诠释“纸”折叠过程的魅力

在不经意间看到Paul Jackson 编写的《从平面到立体——设计师必备的折叠技巧,Folding Techniques for Designers:From Sheet to Form》时,作者就产生用程序编写的方法研究折叠过程的想法,编写完《学习Python——做个有编程能力的设计师》之后,就开始编写《折叠的程序》这本书。《折叠的程序》不仅涉及基本的Grasshopper 节点式程序编写,同时以Grasshopper 的动力学扩展组件Kangaroo 为基础,并使用Python 编写大量辅助程序。这也是为什么阅读《折叠的程序》需要具备Grasshopper、Kangaroo 以及Python 这三个方面的知识系统。在caDesign 设计构建的“面向建筑师的编程知识系统”中,如果需要学习Grasshopper 的基础知识可以阅读《参数化逻辑构建过程》,如果需要学习Python可以阅读《学习Python——做个有编程能力的设计师》,而Kangaroo 部分直接阅读本书《折叠的程序》。

折叠的过程令人着迷,一张简简单单的纸通过折叠可以构建千变万化的形式,这个过程本身就是形式创造的一种方法。总会拿起一张纸开始把玩,虽然实际折叠过程为设计创作提供了一种设计形式研究的手段,但是如何把这多变的形式转化为实际的建造,能否通过实际的折叠研究出基本的形式再在计算机中直接构建最终的结果呢?如果在信息化技术已经发展到目前的阶段水平下,还在使用“静态”构建的方法已经表现出设计本身的固守或者对于编程设计知识体系的茫然。设计的过程是创造的过程,实际折叠的过程才是设计的根本,而不是折叠的结果,因此在计算机中使用编程的方法直接开始折叠过程的研究而不是折叠结果的构建。

开始使用Grasshopper+Kangaroo+Python 编写折叠的过程,并且研究实际折叠过程无法达到的更深入形式探索的领域。在实际折叠过程中并不能精确地控制施加的力,也并不能方便地施加多种形式的力,或者施加具有正弦函数特征的力,这些在实际折叠过程中无法实现的使用程序编写的方法却可以轻易做到;在实际折叠过程中精确地捕捉折叠过程任意时刻也很难做到,但是计算机的模拟可以在任何迭代的时刻停止甚至记录下每一时刻的形式变化;更加让设计者头痛的是实际折叠的形式结果如何转变为实际的建造,基于编程的折叠过程研究本身就是基于数据,因此可以很方便地计算折叠形式的尺寸、角度,以及在基本形式下各种实际建造的变化,例如作为墙体表皮的形式、幕墙的形式、建筑的空间、地形的变化等等与实际结合的方法。

折叠的过程并不是动力学形式研究全部,仅是动力学形式研究的一种,因此Kangaroo所提供的动力学组件并不会全部使用,折叠的过程也不是某个组件的学习,而是一种设计形式研究的方法探索。设计是一种创造,编程设计也是一种创造,一种改变设计过程的创造。

“纸”在程序中表现为Mesh 的格网,在研究折叠的过程构建具有折痕的“纸”是模拟研究的基础。构建各种形式的格网大部分程序的组件使用Grasshopper 的Mesh 组件部分,但是很多富于变化的折痕借助Python 会更加方便,因此折叠过程研究中积累了大量使用Python 组织数据的方法,例如组织顶点的排序、组织索引值、树形数据的模式分组等,这些Python 程序提供了构建Mesh 格网的一种方法,可以更加方便和容易地构建具有折痕的“纸”。

研究本身是一种乐趣,作为设计形式探索的一种方法——折叠在编程辅助设计研究的基础上,实现更具有创造性的研究过程。


5-⦿ 《编程景观》

用“编程设计”的思维探索风景园林规划设计的途径!

🔸推荐: 最开始的时候人们是利用表情和手势进行思想交流,后来发明了语言表达更丰富的思想和信息,继而文字的创造、印刷术的发现、再到电报、电话和手机无线通信,信息传达的高技术性,使交流便捷而又多元化。风景园林学科的发展,跨学科多专业的高度交叉性也日益凸显,尤其计算机科学的进步,编程语言的成熟,已经能够建立起编程景观的知识体系,依据传统规划设计方法拓展新的设计技术。

《编程景观》从编程地形,编程种植,编程道路、置石与台阶,编程建筑以及探索基于地理信息系统与参数化设计方法协作处理的基本流程来探索使用Grasshopper节点可视化编程、Python、NetLogo多智能体思考编程景观的方法、途径和价值;同时,试图突破传统计算机辅助设计的限制,倡导由设计师编写适合于自身设计习惯的程序来辅助设计。

《编程景观》包含丰富的探索内容,例如基于磁场的地形自动衍生的程序,依据NetLogo建立多智能体行为规则模拟水文的过程等。《编程景观》试图将编程设计思维渗入到风景园林规划设计当中来解决设计的问题,让风景园林规划设计趋于数据化、智能化、参数化和系统化。

🔸内容简介: 编程景观是基于计算机技术的,工欲善其事,必先利其器,因此设计师步入这个领域的首要要求就是必须会使用编程设计工具,例如节点式编程语言Grasshopper 、经常作为脚本语言的Python以及多智能体仿真平台NetLogo等,而不是传统意义上AutoCAD 的操作命令,因此需要首先明确编程设计不是单纯的计算机操作,而是一门新的学科,一个能够辅助设计、拓展设计、变革设计甚至主导设计的设计领域,一个基于传统的设计方法并与之并行的分支,一种研究程序语言、数学几何、逻辑构建和设计统计、数据分析并用于辅助及主导设计的方法。

《编程景观》提出了形式模块逻辑构建的概念,强调设计师利用编程设计的思维建立适于设计师自身辅助设计的程序,例如通过建立改善地形设计、道路、种植和置石等程序,智能化解决设计的相关问题。

“编程地形“部分讲述了使用Grasshopper智能化梳理.dwg格式等高线、自动化标准的程序。阐述如何利用磁场的方式建立自动衍生地形的程序,并结合Python编写高程重分类、土方计算、土地平整、计算坡度、坡向、起伏度,以及水文分析、提取山顶点、影响因子的权重评定和可视区域分析等内容;

“编程种植“部分探索辅助植物种植的程序,并初步尝试模拟植物生成演替的过程;

“编程道路、置石与台阶”部分编写相关园林要素建立的程序,并探索A*寻路算法在求取最近路径上的应用;

“景观规划协作处理基本流程“部分主要试图探索将基于ArcGIS的地理信息系统平台的信息化与基于Grasshopper平台的参数化设计方法相融合的途径,和多智能体仿真平台下NetLogo中地理信息数据分析研究的方法;

“编程建筑”以一个系统的案例,阐述编程设计方法应用的一个基本流程,从概念的建立、方案深化、标注数据到结构优化和表皮展平;

“寻找基本图式”部分初步探索形式衍生的方法,为进一步的设计提供形式参考。

🔸目录

形式模块的逻辑构建
  • 1 参数智能化设计策略下实践项目概述
  • 2 改善地形设计的体验
  • 2.1 概念阶段地形设计方法的逻辑构建
  • 2.2 建立方案阶段辅助地形设计的逻辑构建程序
  • 3 改善道路、置石和种植设计的体验
  • 3.1 改善道路的设计体验
  • 3.2 改善置石的设计体验
  • 3.3 改善种植的设计体验
  • 4 服务设施逻辑构建程序的建立
  • 4.1 随机拼接木平台的逻辑构建
  • 4.2 逻辑构建程序具有更强的场地适应性
  • 5 结语
编程地形
  • 1 梳理.dwg 格式等高线
  • 1.1 .dwg 格式的等高线的问题
  • 1.2 将.dwg 格式文件导入到Rhinoceros 平台
  • 1.3 基本的处理程序编写
  • 1.4 生成三维地形表面
  • 2 根据主要等高线构建地形
  • 3 调入地理信息高程与坡度数据
  • 3.1 调入高程数据生成地形表面
  • 3.2 调入坡度数据并赋予分类颜色
  • 4 逻辑构建过程下设计思维方式的转变
  • 4.1 地形设计( 磁场版)
  • 4.2 高程重分类的封装
  • 4.3 土方计算、平整土地与标注
  • 4.4 高程、坡度、坡向、起伏度和重分类
  • 4.5 提取山顶点
  • 4.6 水文分析
  • 4.7 基于NetLogo 的水文分析
  • 4.8 影响因子的权重值评定
  • 4.9 可视区域分析
编程种植
  • 1 辅助种植制图
  • 1.1 单株种植
  • 1.2 列植
  • 1.3 片植
  • 1.4 灌木
  • 1.5 三维树木(L-System 系统)
  • 1.6 种植标注
  • 2 植物生长演替
  • 3 植物群落
编程道路、置石与台阶
  • 1 编程道路
  • 1.1 辅助道路制图
  • 1.2 寻找坡度相同的路径
  • 1.3 基于动力学道路线汇聚推衍
  • 1.4 A* search algorithm A* 寻路算法
  • 2 编程置石
  • 2.1 单独置石
  • 2.2 汀步
  • 3 编程台阶
景观规划协作处理基本流程
  • 1 统一坐标(WGS84)
  • 2 三维空间分层
  • 3 数据的关联
  • 4 节点空间设计融合
  • 5 在NetLogo 中加载GIS 数据与分析研究
编程建筑
  • 1 编程建筑
  • 1.1 基本结构线的建立
  • 1.2 建筑的深化设计
  • 1.3 标注数据
  • 1.4 展平表皮
  • 1.5 结构优化
  • 2 编程构筑
  • 2.1 逻辑构建过程
  • 2.2 Grasshopper 程序
寻找基本图式
  • 1 基于泰森多边形的空间图式
  • 2 肌理的抽象提取
  • 3 建筑布局与角点连线
  • 4 基于多智能体仿真模拟白蚁搬运获取自然形态

🔸做个有编程能力的设计师

风景园林学科专业的高度交叉性,使设计师需要具备更广泛的领域知识,例如生态、植物、美术、文学、建筑、规划、计算机辅助设计技术等,但是其中计算机辅助设计部分涉及的内容包括AutoCAD、Photoshop、SketchUp 等,在设计企业招聘风景园林设计师时对计算机辅助设计的要求也是如此,这种状态说明目前国内主要的风景园林专业在计算机辅助设计领域的内容和设计方法依旧是传统的,尚未在此基础上拓展编程设计领域,仅有几所大学与几个企业在尝试着这方面的探索。

编程设计并不是传统的计算机辅助设计制图,而是一个对设计方法进行创新式探索的新领域,但其并非要替代传统的设计方法,仅是设计方法研究领域中又一拓展的分支,这是一个多元化的途径。

编程设计是基于计算机技术的,工欲善其事,必先利其器,因此设计师步入这个领域的首要要求就是必须会使用编程设计工具,例如基于Rhinoceros 的节点式编程语言Grasshopper 和Python,Grasshopper 与Python 都是编程语言, 而不是传统意义上AutoCAD 的操作命令,因此需要首先明确编程设计不是单纯的计算机操作,而是一门新的学科,一个能够辅助设计、拓展设计、变革设计甚至主导设计的设计领域,一个基于传统的设计方法并与之并行的分支,一种研究程序语言、数学几何、逻辑构建和设计统计数据分析并用于辅助及主导设计的方法。

设计方法的改变对设计师能力架构的调整提出了要求,除非是基于传统的设计方法,否则在拓展更广阔的设计领域时,需要将编程设计方法纳入学科架构,以利于设计过程中的交互,这也是解决目前掌握该领域知识的设计师相对寥寥无几而不易进行团队合作的尴尬境地的最佳方式。对这一困境的改变,是对学科教学体系的调整,在大学本科阶段风景园林专业已经要求开设一门计算机编程语言,例如有部分学校选择了VB 语言,但是这门课程的开设仅是大学基础教育的一个环节,还没有预测到编程语言竟然能够在设计领域起到如此大的作用,对编程设计领域的研究建议将VB 语言教学更改为在三维设计,地理信息系统领域更广泛使用的Python 语言教学,并同时将其与设计领域结合,改变传统单纯的学习过程,这将有助于编程设计的普及和未来团队间的协同合作。

深入的编程设计课程也应该在研究生阶段开设,毕竟这不是仅学习一个软件的问题,而是一个新领域的探索。编程设计基于传统的设计方法并与之并行,强调不同设计方法的共存。在对参数模型构建方法( 编程设计包含) 的褒贬不一的讨论中,掌握该领域的知识才能够看清楚参数化的本质,才具有正确的评判能力和发言权。目前存在几个讨论的焦点,一是参数化是高端的、遥不可及的技术,那只是学科架构的问题,既然大学阶段已经开设了编程语言课程,就可以将其与参数设计相结合,而且越来越多的义务教育课程已经开始语言程序的学习;二是参数化处理的都是扭曲的、高端的、不切合实际的建筑,那是因为在传统方法根本无法解决的情况下,夸大了参数化在该方面的作用而忽略了参数模型构建在处理传统设计形式方面具有同样的优势;三是参数化只是一门类似传统AutoCAD 的计算机操作技术,是技术人员的事情,但这是给自己寻找的一个借口,在条件允许的情况下,每个人都应该成为一名具有编程能力的设计师,即运用编程能力辅助及主导设计应该是学科教育体系的一个必要环节,并使之成为一个常态的存在而不是全新的、鲜为人知的事物,这个方向是确定的。


6-⦿ 《参数模型构建》

设计师进入以Grasshopper节点可视化编程为基础的参数化设计领域必备的案头工具书!

🔸推荐: 以Grasshopper为基础的参数化设计领域,需要熟练掌握Grasshopper节点式编程技术。Grasshopper程序编写的核心技术是数据结构和数据管理,而掌握核心技术的基础就是Grasshopper的所有基础组件。只有清楚认知每一个组件的功用,才能够自由应用组件对数据进行管理,实现参数化设计的目的。

《参数模型构建》中讲述了几乎所有的Grasshopper组件,并包含很多组件巧妙组合应用的方法,以及相关实例。Grasshopper的基础组件到Version August-27,2014,Build 0.9 0076时已达到700多个。面对这么多的组件,我们需要一本可供查询的工具书,这就是本书编写的主要目的。除了对几乎所有组件的解释可供设计师作为案头查询手册,同时,在内容组织上通过针对性的实例强调组件的具体应用方法,达到对组件熟练使用的目的。

《参数模型构建》是设计师进入以Grasshopper节点可视化编程为基础的参数化设计领域必备的案头工具书。

🔸内容简介: 编程设计的方法与传统的设计不是割裂的,但与之又有所差异,在设计的本质上就已经发生了改变,因此进入编程设计领域将面临两个方向需要解决的问题。一个是支持编程设计基本技术层面的操作,二是设计本身思维方式的转变。编程设计普及较慢的一个很大阻碍在于基本技术的学习需要耗费一定的精力,但是这样的付出是一种必然。

《参数模型构建》主要是按照Grasshopper中组件的分组组织本书讲解的架构。包括“基础“部分,讲述Grasshopper和Add-ons的安装,并通过一个小案例说明使用Grasshopper节点可视化编程的基本操作流程;

“基本参数”部分讲述几何体类型、数据类型和输入类以及常用的工具,探索了地理信息高程数据调入的方法,基于遥感影像林地提取的方法,尤其通过Galapagos进化解算组件研究虹桥三杆系统和四杆系统的搭建模式;

“数学“部分涉及到区间、运算符、多项式、三角函数、时间、矩阵和脚本等内容,探索在Grasshopper中实现逐时气象数据可视化处理的方法,适宜性评价程序编写的方法等,并展示了使用Python脚本语言实现表皮连续展平的程序;

“数据处理“部分是Grasshopper编程的核心组件,只有对List列表和Tree树型数据中的组件使用方法有较清晰的认知,才能够自由的组织数据结构。该部分较多的通过方格网土方计算方法、复杂几何形体的构建探索具体数据组织的方法;

“向量”、”曲线“、”曲面“和”格网“部分涉及到具体几何,点、线和面的建立、分析、属性提取等组件,通过具体几何模型的建立方法来阐述相关组件的使用;

“相交”和“变形”部分的组件使用方法相对比较简单,都是对几何形式变化的操作;

“显示”部分则涉及到显示、统计、预览和色彩的组件。

《参数模型构建》写作的目的就是使该书成为设计师在使用Grasshopper节点可视化编程实现参数化设计时,查询组件使用方法的工具书。

🔸目录

基本参数
  • Geometry:几何体类型
  • Primitive:数据类型
  • Input:输入类
  • Util:基本参数下的工具类
数学
  • Domain:区间
  • Operators:运算符
  • Polynomials:多项式
  • Trig:三角函数
  • Time:时间
  • Matrix:矩阵
  • Util:数学下的工具类
  • Script:脚本
数据处理
  • List:列表
  • Sequence:数列
  • Tree:树型数据
  • Text:字符串(文本)
  • Sets:数据集
向量
  • Point:点
  • Vector:向量
  • Plane:参考平面
  • Grid:格栅
  • Field:磁场
曲线
  • Spline:曲线
  • Primitive:基本曲线
  • Division:曲线分段方法
  • Analysis:曲线分析
  • Util:曲线工具
曲面
  • Freeform:自由曲面
  • Primitive:基本几何体
  • Analysis:曲面分析
  • Util:曲面工具
格网
  • Add_ons:扩展模块
  • Mesh:Mesh 格网建立的方法
  • Triangulation:三角剖分
  • Analysis:Mesh 分析
  • Util:Mesh 工具
相交
  • Mathematical:数学计算
  • Physical:物理计算
  • Region:区域计算
  • Shape:几何计算
变形
  • Affine:仿射
  • Array:阵列
  • Euclidean:欧几里得
  • Morph:变体
  • Util:变形工具
显示
  • Colour:色彩
  • Dimensions:尺寸标注
  • Preview:预览
  • Graphs:图表统计
  • Vector:显示向量

🔸参数化设计的是与非

编程设计是以程序编写的方法辅助设计过程的方式,参数化是以编程设计为基础强调设计过程的逻辑性、关联性、建立参数控制互相联动有机体的过程。因此编程设计才是学习的核心,即应该以学习程序语言的方法来学习编程设计的方法,并理解参数化是作为编程设计方法探索设计过程的一个分支。

参数化的设计方法是在计算机出现之后产生的,因此一般具有参数化性质的手绘以及实际模型方案构思推敲的案例不会是一种真实的参数化设计。虽然过往未采用计算机处理数据逻辑,但是辅助设计所使用的各种数学关系,例如矩阵、折叠、三角函数及各种几何关系变化,任何能够转化为数学关系的设计方法,其几何构建逻辑与参数化设计方式均具有一致性。编程设计的本质是数据,是将纯粹的设计形式转化为一种数据操作。世间万物甚至不存在的形态都可以按照数学的逻辑进行构建,例如使用L-System 系统在计算机中模拟树木。编程设计可以构建传统的设计内容以及未知的设计形式,其前提是基于数据的管理。

参数化设计进入国内开始,似乎误导了国内设计师,将参数化“玄虚化”、以及过分强调“生成”概念,多代理系统、元胞自动机、遗传算法等让人一开始就摸不着头脑且将参数化设计“高难度化”的数学程序概念,必然无形中为参数化在国内的推行设置了障碍,并将参数化设计直接等同于扎哈• 哈迪德、鸟巢+ 水立方,成为仅仅是对形式探索的工具。参数化的方法基础是程序编写,从编程设计的角度辅助设计过程可以获得过去不能够涉猎的领域,也能够诠释传统的设计,并可以达到各专业协同设计的目的。例如在建几何结构的优化;生态分析中采光系数分析、太阳辐射分析、风环境分析、热环境分析,以及各种能够转化为数据的分析条件都可以被调入到参数化设计平台协同设计;同时可以编写不同软件平台的接口数据,以及进行诸如寻找最短路径、视线遮挡分析等,之所以编程设计能够涉猎如此广的领域,是因为程序编写面对的不再是几何形体本身,而是它背后所关联的数据。

编程设计的本质是数据的组织,这与使用直接三维推敲,按照软件提供的命令直接构型的方法具有本质上的区别。例如直接手绘或者通过拖动曲线控制点来调节代表水岸线的曲线,而基于编程设计的参数化方法并不是直接的形式拖曳,更倾向于构建一种几何构建的逻辑,这个逻辑也并不唯一,它最大的特点是可以根据初始设定的条件来自动完成水岸线的设计,而设计的结果同样不唯一,达到这一目的的途径就是对数据的管理。

学习编程设计的平台推荐首选基于Rhinoceros 的Grasshopper,该工具已经在各大国际性的公司——SOM、ARUP 等设计企业得以运用并付诸于实践目前,哈佛大学、AA 建筑学院、清华大学也在教授此类课程。编程设计的关键是处理数据,软件只是处理数据的平台,因此编程设计更应该是一门学科,而不是软件操作,如同了解一个民族,必须先学会他们的语言。这个认识是必需的,也是看待基于编程设计参数化方法的正确态度,以能够引导参数化的学习。

Grasshopper 软件平台是可视化的节点式编程,这与Python 等语言编程不同,其数据连接的方式可以系统地处理数据流程,操作方法也并不难。其核心是各个单独的组件,各种数据管理的方法,例如数学三角函数、布尔运算、泰森多变形、列表管理、树型数据的管理、颜色值、参考平面、向量等。因此学习可视化节点式编程操作的软件平台,需要熟悉每个组件的数据处理方法,并加以综合运用。除了Grasshopper 本身提供的组件外,其Addons(Grasshopper 的扩展模块)涉及更多不同的领域,例如基于动力学的Kangaroo、静力结构分析的Karamba、表面划分处理的PanelingTools、气象数据可视化与生态分析的Ladybug 和Honeybee 等,并在不断增加中。试图一次性掌握所有的组件很困难,会感觉到无休无止,而且新的设计分析和模型构建模块在不断地出现,所以应该在掌握Grasshopper本身的组件后,有针对性地研习Add-ons 部分。

本书编写的逻辑按照Grasshopper 组件面板分组进行,穿插案例,解释组件及其相关知识,重视组件在实际中的运用。这种阐述的方法需要运用数学中的三角函数、微积分等基本知识,它们是用于解决实际问题的基础。需要思考如何使用这些基本的组件来解决,实际问题的多样性、不确定性,另外,参数化的设计方法是基于编程设计,核心仍然是学习一门语言。

本书对于编程设计的研习仍旧处于探索阶段,编程设计的学科性也并不能被一本书所囊括,不妥之处在所难免,敬请指正。