从本次文章开始,我来写一些关于Dynamo与Revit交互的教程,这样能更贴近日常应用,希望对小伙伴们的学习有一些帮助。
那么本次教程,我们就从最基本的轴网说起,之前做体量,我们都是正序来的,这次我们倒着来,根据我们想要什么,一步一步推导。
首先,找到创建轴网的节点,可以搜索Grid也可以展开节点列表,到轴网创建节点分组下,我们可以看到,创建轴网,Dynamo默认给了三种方法:
分别是沿弧线创建轴网,通过直线创建轴网和通过起始点创建轴网,创建方法大同小异。
这里我们选择通过线创建轴网,那么就需要一条线,搜索一下Line,选用第一个搜索结果:Line.ByStartPointEndPoint这个节点:
image然后我们发现,创建线,需要起始点,然后我们搜索Point,创建两个点:
image这时候,我们只需要给两个点,输入x,y坐标就能够生成一条轴网了。
image但是我们需要的,是生成一列轴网,两个点肯定不够。我们在空白处双击,生成Code Block节点,我们根据规则,输入0..#x..#y,创建一个列表,x为轴线数量,y为轴线间距。
image然后我们搜索slider,获得滑块节点:
image这里我们选用Integer Slider创建三个滑块,分别作为竖向轴网数量,轴网间距和轴网长度,如下图:
image这样,我们就得到了竖向轴网,然后我们框选这些节点,将x,y值对调,就得到了水平方向的轴网,这里不再赘述。
但是,我们发现,虽然轴网是生成了,但效果却惨不忍睹:
image于是,我决定对生成的轴网进行美化,我们要调整的有轴网两端的缩进长度和轴网编号,思考下如何才能用参数控制这些呢?
首先是轴网两端的偏移长度,我们的目的是水平轴网两端伸出一个固定长度,这里再创建一个滑块,作为缩进长度参数。通过如下的公式,我们就得到了垂直轴网长度,和两端的偏移量。
image通过简单的数学计算,我们可以完美的控制两端的轴网偏移。
image这个时候,只剩轴网编号不对了,我们通过Element.SetParameterByName来调整,这个比较简单,还是通过数学公式,创建一个轴号列表,如下图:
image我们创建一个列表,第一个值输入,此值加上竖向网格数量再减一,就得到了末尾轴网编号。
注:这里value值要求输入字符串,所以需要通过String from Object节点转换下列表。
相同的,我们需要对水平轴网的编号调整,方式也是样的,如下图:
image这里我们是通过水平轴网的数量换算,所以需要将字母转换为ASCII码,计算完再转换成字母,然后创建字母列表,并赋值即可,这里我们创建一个Python Script节点,代码如下图:
image于是就得到了比较满意的轴网,如下图:
image但是,我们的轴网不一定都是等间距的,这时候,我们就得手动创建列表,来生成轴网,如下图:
image image由上图我们可以看出,轴网的实际间距,并不是我们数字列表中的值,而都是参照0位置偏移的。
为了解决这个问题,我们换种方式,创建点的列表,希望输入值即为轴网间距,如下图:
image然后我们获取列表的索引,并按照0..n的形式重新构建列表索引,之后按照这种形式重新创建列表,如下图:
image然后我们将子列表的每项求和,得到新的列表,然后将之前创建轴网的节点拿过来,就能得到想要的轴网了,如下图:
image效果如下图:
image之后的美化过程就大同小异了,大家自己尝试即可,这里就不再赘述了。
好了,今天的教程就到这里了,对你有启发吗?
有什么想法,记得后台给我留言哦
网友评论