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

部署运行你感兴趣的模型镜像

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

一、背景

小伙伴们在使用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二次开发以及编程干货。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值