Dynamo數(shù)據(jù)淘金——04//導(dǎo)出數(shù)據(jù)到Excel

這一節(jié)將會把Revit中的數(shù)據(jù)導(dǎo)出到Excel文檔,從而實現(xiàn)快捷編輯的目的.眾所周知,對于同類型的大量數(shù)據(jù)進(jìn)行修改時,Excel始終是首選.這些數(shù)據(jù)包括房間數(shù)據(jù)、門窗數(shù)據(jù)、族構(gòu)件數(shù)據(jù)等等.在Revit中,明細(xì)表有著Excel的功能,對數(shù)據(jù)進(jìn)行了羅列與提取,然而缺點是批量修改困難,優(yōu)點是數(shù)據(jù)的同步更新.而通過將數(shù)據(jù)導(dǎo)出到Excel再進(jìn)行修改的方法卻仍然需要將數(shù)據(jù)導(dǎo)入Revit以實現(xiàn)數(shù)據(jù)同步的目標(biāo),這一點將在下一節(jié)闡述.

把Revit中的數(shù)據(jù)導(dǎo)出到Excel文檔,以房間為例,理論上有兩種方法:一是創(chuàng)建明細(xì)表后導(dǎo)出txt數(shù)據(jù);二是利用Dynamo獲取參數(shù)數(shù)據(jù)導(dǎo)出.
一、創(chuàng)建明細(xì)表后導(dǎo)出txt數(shù)據(jù)
(1)打開自帶案例文件,創(chuàng)建房間明細(xì)表

(2)添加明細(xì)表字段

(3)先按照標(biāo)高進(jìn)行排序成組,再按照編號排序

(4)生成如下明細(xì)表

(5)執(zhí)行文件——導(dǎo)出——報告——明細(xì)表


(6)導(dǎo)出時取消復(fù)選框,導(dǎo)出列頁眉,即可導(dǎo)出txt數(shù)據(jù)

(7)新建Excel文檔,打開txt數(shù)據(jù)

(8)默認(rèn)下一步,即可導(dǎo)入數(shù)據(jù)


在此基礎(chǔ)上進(jìn)行數(shù)據(jù)修改即可(數(shù)據(jù)僅為示范)

二、利用Dynamo獲取參數(shù)數(shù)據(jù)導(dǎo)出
既然明細(xì)表可以導(dǎo)出數(shù)據(jù),為何還使用Dynamo導(dǎo)出數(shù)據(jù)呢?因為考慮到Excel數(shù)據(jù)的導(dǎo)入,修改后的數(shù)據(jù)要實現(xiàn)"數(shù)據(jù)同步",就應(yīng)將這些參數(shù)與房間掛鉤,這些可以通過Dynamo實現(xiàn).因此,利用Dynamo獲取參數(shù)數(shù)據(jù)導(dǎo)出不僅是另一種思路,也是為了更好理解Excel數(shù)據(jù)導(dǎo)入的必經(jīng)之路.
(1)打開Dynamo,建立Data.ExportExcel節(jié)點

(2)完善節(jié)點,指定文件路徑名稱(filePath)為test01;表單名字為"房間明細(xì)表";開始行列(startRow startCol)為0,代表從Excel的第一行第A列開始寫入數(shù)據(jù);覆寫(overWrite)為True,代表文件允許覆蓋重寫.

(3)節(jié)點只剩下data為空,下面開始獲取data.最后將data接入即可.
(4)獲取房間元素.形成列表.

(5)對房間列表進(jìn)行成組,以"標(biāo)高"為關(guān)鍵詞成組(案例文件有Level1與Level2兩個標(biāo)高,因此房間列表被分成兩個列表)

(6)再對房間進(jìn)行排序,按照編號進(jìn)行排序.有一點需要注意,由于上一步進(jìn)行了成組操作,房間列表成了二級列表,因此要將List.SortByKey的級別改為二級.

(7)將列表壓扁拍平成一級列表,并查看編號參數(shù).發(fā)現(xiàn)排序沒問題,但按照標(biāo)高分組時,默認(rèn)將Level2排在了Level1前面(先是20X,后是10X).

(8)修改節(jié)點,保證Level1在前,Level2在后.

(9)再次獲取"標(biāo)高"、"名稱"參數(shù).并將三個參數(shù)創(chuàng)建新列表.

(10)對列表進(jìn)行轉(zhuǎn)置并增加表頭標(biāo)題.應(yīng)清楚每個子列表對應(yīng)的是Excel中的一行.

(11)將此節(jié)點接入Data.ExportExcel節(jié)點的data接口,即可實現(xiàn)數(shù)據(jù)Excel導(dǎo)出.


好啦,大功告成!