如何在Dynamo(PythonScript中导入第三方模块)

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

一、背景

小伙伴们在使用dynamo中的PythonScript节点时,为了丰富PythonScript节点的功能,那么就需要引入第三方模块。首先,我们得明白,PythonScirpt节点是基于IronPython的,因此模块的导入方式与python是不一样的。本文就介绍如何在IronPython中导入第三方模块。

二、思路

  • 首先,这种模块必须是支持IronPython,而不是只支持Python
  • 接着我们需要区分两种模块。
  1. 第一种是IronPython自带的模块
    比如Math模块,直接 import math就可以使用了
  2. 第二种是在.net中写好,为IronPython准备好的模块
    对于这种,其实又包含两种情况
    2.1.第一种,使用revit中准备好的模块,比如RevitAPI
    2.2.第二种,导入自定义模块/第三方模块,实例可以参看在dynamo中导入矩阵运算

对于这两大类,三种情况,就用下面的代码进行说明

三、代码

1.导入IronPython自带模块

import math #导入自身的数学库模块
import clr  #导入自身对.net dll引用的功能模块,不管是revit中定义好的模块,还是自定义/第三方模块,都需要先引入这个模块,然后再通过这个模块方法进行导入

2.1导入revit中准备好的模块

import clr #导入自身对.net dll引用的功能模块
# 导入Revit自身的模块 RevitAPI.dll 和 RevitAPIUI.dll
clr.AddReference("RevitAPI")  #导入RevitAPI.dll文件,文件后缀.dll可以省略
clr.AddReference("RevitAPIUI")#导入RevitAPIUI.dll文件,文件后缀.dll可以省略
import Autodesk #导入Autodesk命名空间
from Autodesk.Revit.DB import * #再从具体的命名空间下引入模块
from Autodesk.Revit.UI import * #再从具体的命名空间下引入模块

2.2导入自定义模块/第三方模块

import clr #导入自身对.net dll引用的功能模块
import sys #导入系统功能的模块,下面主要用于指定dll路径
sys.path.append(r"dll文件所在的地址")  # 指定dll文件所在的地址,前面有r转义字符,直接复制粘贴地址就行
clr.AddReference ("xxx.dll") # 需要导入的dll名称
import xxxNamspace  # 导入这个dll文件中,我们需要使用到的函数的命名空间
#上面这些操作的简便写法如下:
import clr    
clr.AddReferenceToFileAndPath(r"dll文件所在的地址\xxx.dll")
import xxxNamspace  # 导入这个dll文件中,我们需要使用到的函数的命名空间

四、注意事项
1.在IronPython中导入.net下写好的dll与python导入模块是有区别的。
2.对于导入IronPython自身,或者revit写好的模块是不需要指定路径的(IronPython,dynamo已经帮我们做好了)。
3.对于导入自定义/外部模块是需要我们在程序中添加好路径的。
4.如果小伙伴们有需要,笔者会出一个自定义模块的教程。
5.大家好,我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货。

你可能感兴趣的:(revit二次开发,Ironpython,Dynamo,PythonScript,IronPython)