如何在dynamo(Pythonscript)中使用矩阵运算(numpy的替代方法)

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

一、背景

有个小伙伴想在dynamo中使用矩阵运算,翻译过来就是如何在Ironpython中使用矩阵运算。
这里给小伙伴们讲下python与Ironpython的区别
python:类似普通话,我们目前见到的python版本,基本上都是这个(比如现在很火的机器学习),通常会使用numpy库来完成矩阵运算
Ironpython:类似方言,在.net平台上的python版本,由于支持Ironpython的numpy库在2011年就已经不再更新了,所以博主给小伙伴们推荐另外一种在使用dynamo中使用矩阵运算的方法。
开发环境:revit2018,dynamo2.0(最近几个版本应该都支持)

二、思路

通过Mapack在Ironpython中代替numpy来进行矩阵运算
为什么在IronPython中使用Mapack而不是numpy,可以参考博主的另外一篇文章
如何在Ironpython中使用矩阵(numpy)
Mapack是IronPython官方推荐的一个矩阵运算库,详情参看下面网址连接:
http://opensimulator.org/git/opensim-libs-save/IronPython/IronPython-1.1.1/Tutorial/Tutorial.htm
网址中的,TUTORIAL 1 .Exercise 3 Task 2就介绍了Mapack的基本操作,
Task 2: Mapack - Loading the .NET libraries - AddReferenceToFile
笔者在代码中,也会有一个简单的介绍。
由于这个网站中提供的Mapack下载地址不再有效,小伙伴们可以进群711844216,在常用Dll文件中找到Mapack.dll

三、代码

# 启用 Python 支持和加载 DesignScript 库
# 支持中文
# -*- coding: utf-8 -*- 
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# 通过下面这两行代码,导入博主给小伙伴的Mapack.dll
clr.AddReferenceToFileAndPath("E:\mac\Mapack.dll")
from Mapack import *
# 该节点的输入内容将存储为 IN 变量中的一个列表。
dataEnteringNode = IN
# 将代码放在该行下面
#构建一个2行2列的矩阵
m = Matrix(2, 2)
#值如下
'''
| 1 | 2 |
| 3 | 4 |
'''
m[0,0]=1
m[0,1]=2
m[1,0]=3
m[1,1]=4
#构建一个2行1列的矩阵
n = Matrix(2,1)
#值如下
'''
| 1 | 
| 2 | 
'''
n[0,0] = 1
n[1,0] = 2
#进行乘法运算
d=m*n;
# 将输出内容指定给 OUT 变量。
OUT =d

可以得到结果(图片右下角)
在这里插入图片描述
方法小结:
加减法使用:m+n,m-n
乘除法使用:m*n,m/n
与代数的运算使用:m*3,m/3
转置使用:m.Transpose()

注意事项

1.在dynamo中使用第三方库,这个库文件一定是要支持IronPython而不是只支持Python的,博主后面会写一篇如何在dynamo中导入第三方库的方法,大家可以关注博主博客,得到最新文章;
2.矩阵的运算,两个运算矩阵的写法一定要匹配,相信小伙伴们在高中,大学应该都掌握的不错了,剩下的就是用上面的这些方法使用了。
3.如果小伙伴们觉得本文对您有帮助,可以给本文点个赞,并关注博主,博主后面会持续更新Revit二次开发相关文章.

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值