可以直接從Navisworks 文件連接到外部數據庫,並在場景中的對象與數據庫表中的字段之間創建鏈接以引入額外特性。
1.連接mdb數據庫
新建數據連接
單擊“新建”按鈕,新建數據連接,輸入一個名稱,ccc,再選擇ODBC驅動類型:mdb數據庫
------------------這里的Database1.mdb內容如下:
點擊確定,會在新建連接窗口中的連接欄顯示連接字符串,這就是普通的ODBC數據庫連接串。
----------------------
以下藍字是幫助中的內容,很有用:
如果要選擇的數據庫具有特定名稱(例如 test.mdb)並且該名稱始終位於模型文件(位於生成的 NWD/NWF 而不是原始 NWD/NWF 中)旁邊,請鍵入:DBQ=%pushpath(%poppath(%currentpath),"test.mdb"); DRIVER={Microsoft Access Driver (*.mdb)};
如果要選擇的數據庫與原始模型文件(例如 AutoPlant)同名,請鍵入:DBQ=%join(%removeext(%removepath(%sourcepath)),".mdb"); DRIVER={Microsoft Access Driver (*.mdb)};
指定要查詢的數據庫中的表:
在“SQL 語句”字段中,在 SELECT 之后單擊,然后輸入選擇語句,例如:SELECT * FROM tblBoilerData WHERE "NWUniqueID" = %prop("Entity Handle", "Value");
此語句指示 Autodesk Navisworks 從 tblBoilerData 表中選擇所有列,同時要求名為 NWUniqueID 的列與名為 Entity Handle/Value 的類別/特性對匹配。
-------------------------------
設置特性字段
雙擊“字段名稱”字段,然后鍵入數據庫列的名稱aaa和bbb。
輸入“顯示名稱”,將會顯示在特性對話框中,它可以與字段名稱不一樣。
配置SQL語句
SELECT * FROM tab1 WHERE aaa = %intprop("LcOaNode", "LcOaSceneBaseUserName");
tab1是數據庫表名
aaa是主鍵的列名
LcOaNode和LcOaSceneBaseUserName是兩個內部名稱,要顯示內部名稱,可以在選項中設置:
設置完,特性對話框就會變成這樣,顯示內部名:
那么這句SQL的意思就是:
SELECT * FROM tab1 WHERE aaa = %intprop("LcOaNode", "LcOaSceneBaseUserName");
當選中的對象,它的某一個屬性值(這里是項目LcOaNode中的名稱LcOaSceneBaseUserName),等於數據庫中aaa的值時,
將在特性對話框中顯示剛才設置的列值(兩列aaa和bbb)
最終效果
選擇一個模型,由於我們的數據庫中只有兩個值,我們選擇名稱為/1MZ_FWD0001/B1的模型,
此時屬性中會出現我們定義的自定義特性:
2.連接EXCEL文件
與連接access數據類似。
連接數據庫的那一步選擇:Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
再指定EXCEL文件的位置。
在這里,我們的EXCEL文件內容為:設置的自定義特性字段名稱為nnn,qqq,xxx
SQL語句設置時,需要注意:
1),首行內容為字段名字
2),表名為方括號括起來的以$符號結尾Sheet名如: [Sheet1$]
SELECT * from [Sheet1$] where nnn = %intprop("LcOaNode", "LcOaSceneBaseUserName");
最終效果
選擇名字為/1MZ_FWD0001/B1的模型,屬性對話框如下:
可以用數據庫完成很多有意思的事。