Dynamo环境下如何在PythonScript中导入SQL命令生成的.dll文件读取数据,并创建族实例

接着上篇,本博客介绍dynamo与SQL数据库交互的另一种方法,导入.dll文件,读取数据并创建族实例。(自从学习了py,发现它的包容性太强了,爱了爱了!!)
下图为要读取的数据信息:
Dynamo环境下如何在PythonScript中导入SQL命令生成的.dll文件读取数据,并创建族实例_第1张图片
读取信息并创建族实例代码如下:

#默认导入的Dynamo库
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
from Autodesk.DesignScript.Geometry import Point as DyPoint
#导入dynamo封装的revit库
clr.AddReference('RevitNodes')
import Revit
from Revit.Elements import *
#几何转换与非几何转换
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

#导入RevitAPI与RevitUI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

#引入文档与事务模块
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

#导入系统数据模块
import clr
clr.AddReference('System.Data')
import System
#导入DATA中全部的类
from System.Data import *
from System.Data.SqlClient import *

#导入SqlHelper类
clr.AddReferenceToFileAndPath(r"D:\PythonLearning\Dynamo例子\SQLHelper\SQLHelper\bin\Debug\SQLHelper.dll")
from SQLHelper import SqlHelper

SqlHelper.MyConstr="Data Source=DESKTOP-99KV917;Initial Catalog=RevitDataTest;Integrated Security=true"

#该节点的输入内容将存储为 IN 变量中的一个列表。
dataEnteringNode = IN

#【3】声明list储存族实例
column_list=[];
#【4】获取当前文档
revitDoc=DocumentManager.Instance.CurrentDBDocument
#【5】过滤族类型方法
def  GetFamilyTypes(revitDoc,str_N):
    #过滤符合条件的柱类型
    collector=FilteredElementCollector(revitDoc)
    #元素过滤
    result=collector.OfCategory(BuiltInCategory.OST_Columns).OfClass(FamilySymbol).ToElements()
    for symbol in result:
        if symbol.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME).AsString()==str_N:
            return symbol  

#读取的表(行标:ColumnId、c_x、c_y、c_z、c_type)
reader= SqlHelper.ExecuteReader("select * from CreateColumn")
reader= SqlHelper.ExecuteReader("select * from CreateColumn")
while reader.Read():
        x=reader["c_x"]
        y=reader["c_y"]
        z=reader["c_z"]
        types=reader["c_type"]
        point =DyPoint.ByCoordinates(x,y,z)
        famInstance=Revit.Elements.FamilyInstance.ByPointAndLevel(GetFamilyTypes(revitDoc,types).ToDSType(True),point,IN[0])
        column_list.append(famInstance)

#将输出内容指定给OUT
OUT = column_list

节点如下:
Dynamo环境下如何在PythonScript中导入SQL命令生成的.dll文件读取数据,并创建族实例_第2张图片
本篇与上篇博客是最近学到的,为了加深印象,也为了以后好找,决定以博客形式发布一下。业界不断学习的小白,加油!

你可能感兴趣的:(Dynamo可视化编程,python,数据库)