如何在dynamo中使用Python编程

欢迎加入BIM行业开发交流1群 群号:711844216

一、为什么要使用python?

Dynamo的出现,是为了方便建筑师实现参数化编程,可是当用到一定的深度以后,会发现节点太多,管理起来不方便,有些功能用节点并不能实现。python作为一种灵活的编程脚本语言,可以实现节点功能以外,还能引入第三方函数,大大增加参数化设计的方便性。本文将介绍如何在python中引用dynamo dll

二、dynamo与dll文件的关系(反编译工具的使用)

想将dynamo中的节点变成python代码,首先得知道节点对应的dynamo dll文件在哪

  • 运行环境,revit2017,revit2018,dynamo 2.0
  • dynamo自带的节点,在dynamo的安装目录C:\Program Files\Dynamo\Dynamo Core\2\
  • dynamo中的Revit节点,C:\Program Files\Dynamo\Dynamo Revit\2\Revit_2018\

拿创建几何的geometry来说,我们找到dynamo的安装目录C:\Program Files\Dynamo\Dynamo Core\2\ProtoGeometry.dll文件,然后利用反编译工具ILSpy打开,这里用ILSpy打开。在例子的引用中介绍了几种重要dll。
如何在dynamo中使用Python编程_第1张图片
这里点开其中的Cirle方法就可以看到这里有5种创建圆的方法
如何在dynamo中使用Python编程_第2张图片

知道这个后,我们就可以直接通过Dynamo中的Python代码脚本进行圆形的生成了。下面通过读取EXCEL,然后生成圆。

三、读取excel表格,批量创建圆实例

思路:1.将EXCEL读取节点组合转换为Python代码

2.将圆形生成节点组合转换为Python代码

结果如下:
如何在dynamo中使用Python编程_第3张图片
这里介绍了一些重要的引用

// An highlighted block
# -*- coding: UTF-8 -*-  
import math 
import clr
# 导入 RevitAPI 和 RevitAPIUI
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
#导入dyamo中的几何图元,这里就将上个内容中提到的Geometry节点引入了进来
clr.AddReference("ProtoGeometry")
from Autodesk.DesignScript.Geometry import *
#导入revit节点,如果要使用revit节点中的方法
clr.AddReference("RevitNodes")
from Revit.Elements import *
#涉及到revit和dynamo几何元素装换,采用下列代码
import Revit
# 导入几何体转换方法(将dynamo中输出的几何体转为revit中的几何体)
clr.ImportExtensions(Revit.GeometryConversion)
# 导入元素转换(revit转dynamo)
clr.ImportExtensions(Revit.Elements) 
#导入系统文件操作,这样才能顺利将EXCEL读取节点进行装换
import System
from System.IO import FileInfo
#导入dynamoEXCEL读取功能
clr.AddReference("DSOffice")
from DSOffice import Data
#导入列表功能节点
clr.AddReference("DSCoreNodes")
import DSCore
from DSCore import *

#这里采用圆心与半径的方法创建圆
#将EXCEL读取节点进行转换
circleExcel=FileInfo(IN[0]);
circleInformation=Data.ImportExcel(circleExcel,"Sheet1",False,True); 
circleList=[];
for i in range(1,10):
	x=circleInformation[i][1];
	y=circleInformation[i][2];
	z=circleInformation[i][3];
	r=circleInformation[i][4];
	center =Point.ByCoordinates(x,y,z)
	circle =Circle.ByCenterPointRadius(center,r)
	circleList.Add(circle);
OUT=circleList;

这个是EXCEL表格
如何在dynamo中使用Python编程_第4张图片

四、注意事项

  • 1为了简单说明,本文只写了较为基础的例子,dynamo中所有的节点,基本上都能够在dynamo安装目录下找到
  • 2本文在例子中介绍了一些基本的dynamo dll 文件的引入方法,如有不足之处,欢迎指出
  • 3.我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货
  • 4.欢迎加入BIM行业开发交流1群,获取更多开发资料 群号:711844216

微信搜索“BIM视界”公众号获得行业资讯,以及更多编程干货

你可能感兴趣的:(revit二次开发)