dynamo python 通过循环修改参数_第二章 | Dynamo 基础知识(Part 3)

Dynamo 的运算原则

这是你的 Dynamo 脚本。

f4bc6f62c7a0171bd407655c27002504.png

一个逻辑流畅、运行正常、节点相连、秩序竟井然的脚本。

虽然它目前可能还只是这样。

a0b76c494c425c8db20664ce57c521f9.png

但想要达到上述效果,除了要会拼电池,你还需要了解 Dynamo 背后的运算规则。


流与树

运算时,Dynamo 将优先计算 根(Root) 节点,并将结果按照 流(Flow)的走向,把上一节点的 输出 依次 输入下一节点,直至走完整棵 树(Tree)末梢(Leaf),最终脚本运行完成。

e69326d9fa4336fa7c867ce980a68c96.png

这样的模式被称为 树状架构(TreeStructure)。树状架构不仅仅存在于可视化编程,它是一种程序设计中是分常见的软件架构,能够科学的管理数据,以及提升程序运行的效率,了解了它,你便可以感知到其它日常软件的运行逻辑。

在树状架构中,除根节点与末梢之外,所有节点都有自己的 前任(Predecessor)继任(Successor),以自身为起点,对流进行单向追踪,所有与自身输入有关的节点都被称为该节点的前任,反之则是继任。

比如中间的 Watch 节点,它的前任与继任节点如下。

1af6d4776939e7bf80f6da3a7070578d.png

同时,每个节点都有判断自己 状态(State)过期(Stale)机制,如果自身过期,则该节点的所有继任者全部过期。

为了便于你理解,现在给你一些十分炫酷的卡片。

e792f4ba854e5e997316f50601733014.png

你将用这些卡片来替代这些节点,卡片的正面表示节点的状态是过期的,反面则表示更新的。

6fa33c796b9630cbfbf44fff660b073e.png

Dynamo 的每次计算,都只会按照过期节点的流关系,重新计算结果,计算完成之后,再将节点变回最新的状态。

33becd6f04e06ec0b4efabcf625153f2.png

每次更改节点,则该节点的继任者也将变为过期状态,Dynamo 将仅计算过期状态的节点。

  1. 你更新了一个节点

    d0bc438ade939504f966cccc181bdd24.png

  2. 这个节点的继任节点将全部过期

    08e011191f23ad1f2a046e4ea368a297.png

  3. Dynamo 将仅计算过期的这三个节点,把他们更新

    5c7d83609fdaca58a40cb6df63e60ba0.png

所以,不是每一次修改,Dynamo 都会整体重新计算,你的修改越靠近根部的节点,运算所需的时间就越长;越靠近末梢的节点,运算所需的时间就越短。


自动与手动

Dynamo 默认的模式是 自动模式(Automatic)的,这意味着 Dynamo 将时刻 检测(Inspect)你脚本中节点的状态,只要你的脚本中存在过期的节点,它都会重新计算结果,直到保持脚本中所有的节点都是更新的状态。

a4eb387677eb385ea6ceb43ace9b02ed.png

自动模式能实时反映出参数调整后的变化,是一种很智能的设计,但当碰上运算耗时的大型脚本时,这种实时反馈不仅会让软件变得卡顿,并且会使调整变得极为困难。

所以大型脚本中往往会使用 手动模式,关闭计算机对于脚本状态的检测,人为来控制脚本何时计算。虽说这样无法实时的反应运算结果,但你却可以一次更改多个节点,无需担心牵一发而动全身,能够提高用户的设计效率。

8cc05f37c8cb830386e30c7415712ab8.png


Tips

了解 Dynamo 的运算规则后,你还需要掌握一些特殊的 Dynamo 技巧才能做出一个优秀又美观的脚本。

输入集中

为了能随时找到调整参数的节点,我们需要把参数统一组合起来,按照 Dynamo 默认的流方向(从左至右),把所有与参数调整调整的节点,统一放置在界面的最左边

9dc0818619b33c5179fb4de9bad173f0.png


科学分组

与你在日常画图、建模时一样,满屏幕的节点也需要进行科学的分组。

de0da1b595511dfa099fe2bb28f91b7f.png

一般,Dynamo 中的节点都会按照实现的功能、步骤,统一封装起来。比如,把大象装进冰箱需要几步?

  1. 打开冰箱门

  2. 把大象放进去

  3. 关上冰箱门

你就可以把与打开冰箱门相关的所有节点都选中,创建组,并取名 打开冰箱门,来完成科学分组的工作。

883bde9129d6f29ae9955051b06fe02f.png


真名而不是外号

我们之前曾经提过,相比在节点库中翻箱倒柜地找寻节点,更聪明的办法是善用搜索。但无论你是哪种语言的 Dynamo,最好都用英文关键词搜索。

你现在新建一个空脚本,在里面放上一个 Point.ByCoordinates的节点,并且保存到桌面。

ab1c304d36410803d224505c08b1b69b.png

这时你右键这个 dyn 文件,然后在 打开方式 一栏中选择使用记事本打开,你就能看到这个节点的源码,它长这样:

c15bb5743570b55d2f0ca7aa20494c39.png

往下翻,你会看见这个源码中为数不多的中文出现在了一行叫作 Description 的地方,这意味着中文仅仅只是这个节点的注释。

d6b2d15360cec345a47d8aaab18c7dd1.png

注释是会随着地区的不同而时刻变化的,即使是在我国的台湾省,也会因为繁体字的原因,让你搜 点 这个关键字一无所获。

而英文的关键字 Point,则无论是在哪个版本中都会存在。

所以中文只相当于这个节点在中国的外号,而英文则是这个节点的真名,要想最快的找到一个人,自然是叫真名来得更快、更准确。


记忆关键词

仅仅认识几个英文单词是不够的,想要用好搜索功能,你还需要记住一些图元在 Dynamo 中的独特叫法,比如:Revit 中的图元叫做 Element、 Dynamo 中的图元叫 Geometry、线叫做 Curve 而不是常规的 Line、参数的 Parameter Value 等等。

在使用 Dynamo 的过程中,尝试去记忆这些关键词,将会提高你的搜索效


清除节点布局与清除组内布局

现在你已经完成了脚本的设计,输入都布置在了左端,也做好了科学分组,为了让节点布置更加的美观,你可以在菜单栏的 编辑 选项中找到 清除节点布局 的选项,他可以让你的节点布置变得规整。

同样,右键组,你也可以找到 清除组内布局 的选项,它也能让你组内的节点布置,变得规整。


总结

截止到目前,你已经基本掌握了 Dynamo 的基础知识与使用习惯了,在此我们需要复习一下,以便开始接下来的实战案例学习。

几个概念
  • 计算机 -- 一个绝对忠诚,绝对精准,执行速度超高的女仆

    fb56df77c32a7b230881418ef5563ab6.png

  • 编程 -- 一种跨物种交流、调教计算机行为的方式

  • 编程语言 -- 计算机能听懂的话


什么是编程

编程是对于计算机的一种调教,告诉计算机,她该怎样代替你完成你的工作。就像你想要你忠诚的仆人代替你完成一系列的工作,在一开始,你也得教她如何去做一样,如果教得好,那么今后只要有类似的事情,她都能用极高的效率(效率是人类的几万 - 几千万倍)来帮你完成,而你只需要喝完咖啡之后检查一下她做完的成果,岂不美哉?

a42741f52ec707221a614f462d59ff21.png


如何设计脚本

只要你的思考不是偶尔的灵机一动或者不可捉摸的天马行空,那么无论是你做事的流程,抑或是你做事的思维习惯,还是说我们做的一些抉择与判断,其实它都有一种逻辑,或者蕴含了某种规律在里面,有些我们已经规律化了,我们称其为流程,有些连我们自己都没有意识到,这个叫潜意识。

流程也好,潜意识也罢,只要有规律,我们就能把它描述给计算机听,然后让她根据这个规律,模仿并代替你去完成你的任务。

而我们要做的,就是:

  1. 捕捉并提炼你做事的思维和方法(把你自己抽象化)

  2. 梳理逻辑、总结规律(画流程图,UML 图等)

  3. 翻译成计算机能听懂的语言(写代码)

  4. 把上述内容描述给计算机听,并且调教计算机(调试脚本或程序)

此时,计算机就能模仿你的样子,代替你完成你的工作。

如果你的规律总结的足够优秀,足够抽象,那么计算机就能代替你完成这一整个类型的工作,而不需要再去做任何修改。


你的分享,我的动力

关注公众号 archipython,做一名会编程的建筑师。

4724336495b340c98082a7dd5ae1ce39.png

Be a Architect Powered By Python

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值