欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207
小伙伴们在dynamo中使用PythonScript时,可能有些代码可以复用,比如函数,我们就可以将其保存在py文件中,然后再不同的PythonScript中进行调用。
首先,我们看下情景
# -*- 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中的几何图元
clr.AddReference("ProtoGeometry")
from Autodesk.DesignScript.Geometry import *
#导入revit节点
clr.AddReference("RevitNodes")
from Revit.Elements import *
import Revit
# 导入几何体转换方法(将dynamo中输出的几何体转为revit中的几何体)
clr.ImportExtensions(Revit.GeometryConversion)
# 导入元素转换(revit转dynamo)
clr.ImportExtensions(Revit.Elements)
import sys
IN[0];
#自定义函数
def Add(a,b):
c=a+b;
return c
#然后使用我们自己定义的这个Add函数
result=Add(1,2);
OUT=result;
#HanShu.py的内容
# -*- coding: UTF-8 -*-
def Add(a,b):
c=a+b;
return c
再看我们的PythonScript中的代码如何书写
# -*- 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中的几何图元
clr.AddReference("ProtoGeometry")
from Autodesk.DesignScript.Geometry import *
#导入revit节点
clr.AddReference("RevitNodes")
from Revit.Elements import *
import Revit
# 导入几何体转换方法(将dynamo中输出的几何体转为revit中的几何体)
clr.ImportExtensions(Revit.GeometryConversion)
# 导入元素转换(revit转dynamo)
clr.ImportExtensions(Revit.Elements)
#前面都一样,主要修改了这部分,导入自定义函数
import sys
#HanShu.py文件的地址
hanShuLocation=r"D:\自己构建的函数库";
#将文件所在的地址导入到系统的环境变量中,这样就可以使用HanShu.py文件了
sys.path.append(hanShuLocation)
#导入这个py文件中的函数(*代表这个py文件里面的所有函数,博主这里只写了一个函数进去,所以就导入了一个)
from HanShu import *
IN[0];
result=Add(1,3);
OUT=result;
好了,到这里我们就实现了PythonScript中引用自定义py函数的功能。
1.不管在自己定义的py文件中,还是PythonScript中,都要把下面的代码放入最前面。免得出现由于中文引起的错误。
# -*- coding: UTF-8 -*-
2.如果我们自定义的函数,用到了revit相关的功能,那么我们需要把下面和revit有关的引用代码添加到自己定义的函数包HanShu.py中,否则会出现global name ‘xxx’ is not defined错误。
# -*- 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中的几何图元
clr.AddReference("ProtoGeometry")
from Autodesk.DesignScript.Geometry import *
#导入revit节点
clr.AddReference("RevitNodes")
from Revit.Elements import *
import Revit
# 导入几何体转换方法(将dynamo中输出的几何体转为revit中的几何体)
clr.ImportExtensions(Revit.GeometryConversion)
# 导入元素转换(revit转dynamo)
clr.ImportExtensions(Revit.Elements)
def Add(a,b):
c=a+b;
return c
3.大家好,我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货。