如何在dynamo中使用Python编程

欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207

一、为什么要使用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。
在这里插入图片描述
这里点开其中的Cirle方法就可以看到这里有5种创建圆的方法
在这里插入图片描述

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

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

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

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

结果如下:
在这里插入图片描述
这里介绍了一些重要的引用

// 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表格
在这里插入图片描述

四、注意事项

需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111

  • 1为了简单说明,本文只写了较为基础的例子,dynamo中所有的节点,基本上都能够在dynamo安装目录下找到
  • 2本文在例子中介绍了一些基本的dynamo dll 文件的引入方法,如有不足之处,欢迎指出
  • 3.我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货
  • 4.欢迎加入BIM行业开发交流1群,获取更多开发资料 群号:711844216
  • 5.微信搜索“工程人的编程课堂”公众号获得行业资讯,以及更多编程干货
  • 19
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值