美文网首页BIM的乐趣
Dynamo参数化轴网,这些对你很有帮助

Dynamo参数化轴网,这些对你很有帮助

作者: 九哥BIMer | 来源:发表于2020-03-15 13:45 被阅读0次

    从本次文章开始,我来写一些关于Dynamo与Revit交互的教程,这样能更贴近日常应用,希望对小伙伴们的学习有一些帮助。

    那么本次教程,我们就从最基本的轴网说起,之前做体量,我们都是正序来的,这次我们倒着来,根据我们想要什么,一步一步推导。
    首先,找到创建轴网的节点,可以搜索Grid也可以展开节点列表,到轴网创建节点分组下,我们可以看到,创建轴网,Dynamo默认给了三种方法:

    image

    分别是沿弧线创建轴网,通过直线创建轴网和通过起始点创建轴网,创建方法大同小异。

    这里我们选择通过线创建轴网,那么就需要一条线,搜索一下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

    之后的美化过程就大同小异了,大家自己尝试即可,这里就不再赘述了。

    好了,今天的教程就到这里了,对你有启发吗?

    有什么想法,记得后台给我留言哦

    相关文章

      网友评论

        本文标题:Dynamo参数化轴网,这些对你很有帮助

        本文链接:https://www.haomeiwen.com/subject/imzfjhtx.html