本書內容來源于作者在Revit二次開發(fā)實際工作中對所遇到的問題的總結和思考,全書共分4章,精煉出了工作中典型的疑難困惑知識點101個,內容涵蓋了Revit的開發(fā)環(huán)境、實戰(zhàn)中的C#語言應用、如何對接Revit以及相關的其他專業(yè)背景知識。同時,書中使用了大量的圖片、表格和實際工程代碼,從而極大地降低了工程專業(yè)人員學習Revit二次開發(fā)的難度。 而且,基于本書作者的工程專業(yè)出身,特別了解非計算機專業(yè)人員學習二次開發(fā)會遇到哪些問題,故書中所提煉出的問題都具有極強的針對性和專業(yè)性,同時也對計算機專業(yè)出身的Revit二次開發(fā)人員有很好的啟發(fā)。
從Revit搭建開發(fā)環(huán)境到進階算法知識
從API的具體應用到背后的原理介紹
101個典型業(yè)務問題
207段原創(chuàng)工作代碼
476張彩色高清配圖
構成一條平緩的學習曲線
助力工程專業(yè)人員快速掌握
快速掌握Revit二次開發(fā)的基本招式
使用編程解決問題,有點像是處理海外的房地產(chǎn)糾紛。當事人不僅需要懂外語,懂當?shù)氐姆,還需要了解房地產(chǎn)行業(yè)的有關知識,并且掌握辯護或申述的技巧。在Revit二次開發(fā)中,對應的就是C#語言、API規(guī)則、Revit操作和計算機圖形學等背景知識以及軟件開發(fā)原則和技巧。
目前市場上關于Revit二次開發(fā)的書,內容主要是以Revit API里面的各種類為中心進行介紹,默認讀者已經(jīng)掌握了其他三種能力。而實際上,想從事插件開發(fā)的人,大部分是非計算機專業(yè)的工程人員,他們并不熟悉各種背景知識,因此拿到一本Revit API開發(fā)教程后,會有讀不進去的感覺。
本書的目標是為工程專業(yè)人員學習Revit二次開發(fā)提供一個相對平緩的學習曲線,從而幫助工程人員快速掌握二次開發(fā)需要的各種能力。本書內容都來自作者的工作實踐,因此對于計算機專業(yè)的讀者,也能提供一些有益的參考。
本書第1章介紹搭建開發(fā)環(huán)境、基本的編程要點以及插件調試方法等內容。只有掌握這些知識,才能真正入門Revit二次開發(fā)。
第2章對實戰(zhàn)中會用到的C#語言有關技術和概念進行介紹。很多人自學C#語言之后,發(fā)現(xiàn)還是看不懂二次開發(fā)教程中的代碼。本章介紹引用類型、面向對象、LINQ、用戶交互等二次開發(fā)中非常關鍵而普通的C#語言教程又不會深入介紹的概念和技術。通過本章的學習,讀者能達到獨立編寫Revit插件的水平。
第3章介紹在實際工作中常用的Revit API有關操作,內容上分圖元選擇和過濾、構件參數(shù)、構件生成和編輯、機電、幾何、視圖、用戶交互等7個專題。書中代碼全部是作者工作中實際使用的代碼,可以直接拿來使用。除了重視實用性,這部分內容還注意介紹相關的原理和背景知識。比如幾何一直是Revit二次開發(fā)中比較難掌握的內容,本書結合幾何原理講解Revit中的幾何類,讓學習這部分內容時也不會很吃力。
第4章介紹算法編寫、設計原則和模式的應用、版本控制、與其他軟件交互等工作中需要用到的其他背景知識,從而幫助讀者掌握二次開發(fā)所有的基本招式。
衷心希望本書能幫助工程專業(yè)人員快速提高自己的Revit二次開發(fā)能力。讓我們一起努力,在追求個人身心幸福的同時,為社會、為國家發(fā)展做出更大的貢獻!
序
前言
第1章熟悉開發(fā)環(huán)境 /
第1節(jié)搭建開發(fā)環(huán)境 /
Q1怎樣搭建開發(fā)環(huán)境 /
Q2二次開發(fā)有哪些常用術語 /
Q3怎樣在Revit中創(chuàng)建一根管道 /
Q4怎樣設置開發(fā)模板 /
第2節(jié)編程的基本方法和注意點 /
Q5插件的開發(fā)流程是怎樣的 /
Q6插件的數(shù)據(jù)處理流程是怎樣的 /
Q7代碼是怎樣組織的 /
Q8編程中有哪些基本要點 /
Q9Visual Studio有哪些使用技巧 /
第3節(jié)調試和獲取幫助 /
Q10怎樣調試程序 /
Q11怎樣測試插件 /
Q12怎樣獲取幫助 /
第2章實戰(zhàn)中的C#語言應用 /
第1節(jié)鞏固C#語言知識 /
Q13程序中的成員是怎樣命名的 /
Q14如何深入理解變量 /
Q15C#語言中有哪些常用的關鍵字 /
第2節(jié)深入理解面向對象編程 /
Q16如何深入理解類 /
Q17如何深入理解接口 /
Q18如何深入理解泛型和集合 /
第3節(jié)LINQ和Winform基礎 /
Q19怎樣讀寫lamada和LINQ語句 /
Q20常用的LINQ查詢語句有哪些 /
Q21怎樣新建交互窗體 /
Q22怎樣在窗體中調用數(shù)據(jù) /
Q23Winform中有哪些常用控件 /
第3章如何對接Revit /
第1節(jié)圖元選擇和過濾專題 /
Q24Revit中的數(shù)據(jù)是怎樣組織的 /
Q25Element類有哪些重要的屬性和方法 /
Q26怎樣在插件中選擇圖元 /
Q27怎樣使用元素過濾器和元素收集器 /
第2節(jié)構件參數(shù)專題 /
Q28什么是事務 /
Q29怎樣獲取和修改參數(shù) /
Q30怎樣處理共享參數(shù) /
第3節(jié)構件生成和編輯專題 /
Q31什么是Document、UIDocument、Application和UIApplication /
Q32FamilyInstance類有哪些屬性和方法 /
Q33怎樣獲取族類型 /
Q34怎樣編輯構件 /
Q35與土建有關的類有哪些 /
第4節(jié)機電專題 /
Q36怎樣獲取管道系統(tǒng)類型 /
Q37怎樣設置管道系統(tǒng)材質 /
Q38怎樣在后臺加載管件族 /
Q39怎樣設置管道類型 /
Q40怎樣獲取CAD底圖上圖元的圖層 /
Q41什么是Connector類 /
Q42怎樣生成管道和管件 /
Q43怎樣連接管路附件到管道 /
Q44怎樣處理土建鏈接模型 /
Q45怎樣處理工作集 /
第5節(jié)幾何專題 /
Q46點和坐標系有哪些注意點 /
Q47什么是邊界表示法 /
Q48向量運算的幾何意義是什么 /
Q49Revit中的曲線有哪些方法和屬性 /
Q50Revit中的曲面有哪些特點和屬性 /
Q51怎樣進行2D布爾運算 /
Q52怎樣進行幾何變換 /
Q53怎樣利用坐標系變換解決問題 /
Q54怎樣根據(jù)圖塊生成族實例 /
Q55怎樣處理非統(tǒng)一縮放圖塊 /
Q56怎樣獲取元素的Solid /
Q57怎樣創(chuàng)建Solid /
Q58怎樣在模型中顯示幾何圖元 /
Q59怎樣匹配直線和對應的文字 /
Q60怎樣在后臺生成族文件 /
Q61怎樣獲取構件之間的距離 /
Q62怎樣獲取標注需要的Reference /
Q63幾何計算算法匯總 /
第6節(jié)視圖專題 /
Q64視圖是怎樣生成的 /
Q65View類有哪些屬性和方法 /
Q66與視圖有關的類有哪些 /
Q67怎樣在視圖中定位元素 /
Q68怎樣控制視圖中元素的顯示樣式 /
Q69怎樣為視圖加載過濾器 /
Q70怎樣創(chuàng)建剖面視圖 /
Q71怎樣新建三維和平面視圖 /
Q72怎樣將點投影到剖切面上 /
第7節(jié)用戶交互專題 /
Q73怎樣保存程序數(shù)據(jù)到本地 /
Q74怎樣使用外部事件 / Q75怎樣繪制臨時圖元 /
Q76怎樣在Revit中監(jiān)聽鍵盤和鼠標 /
Q77怎樣直接調用Revit界面上的命令 /
Q78怎樣響應用戶切換視圖的操作 /
Q79怎樣處理Revit的報錯窗口 /
Q80怎樣提升插件的用戶體驗 /
Q81怎樣在Revit界面添加命令 /
第4章進階相關專業(yè)背景知識 /
第1節(jié)深入了解算法及其應用 /
Q82怎樣搭建圖類型的數(shù)據(jù)結構 /
Q83怎樣連接圖中斷開的直線 /
Q84怎樣構造循環(huán)解決問題 /
Q85怎樣進行CAD底圖的預處理 /
Q86怎樣提高程序的運行效率 /
Q87如何使用遞歸加回溯法解決問題 /
Q88如何掌握遞歸思維 /
第2節(jié)處理復雜的代碼 /
Q89怎樣減少代碼的復雜度 /
Q90怎樣應用設計原則 /
Q91怎樣控制代碼版本 /
Q92怎樣減少嵌套的if...else語句 /
Q93怎樣使用模板方法簡化代碼 /
Q94怎樣對插件進行自動化測試 /
第3節(jié)與Excel和CAD交互 /
Q95怎樣導出和讀取Excel /
Q96CAD中的數(shù)據(jù)是怎樣組織的 /
Q97怎樣讀取CAD圖紙上的曲線 /
第4節(jié)其他.Net有關技術 /
Q98DataGridView有哪些高級應用 /
Q99有哪些處理文件有關的類 /
Q100怎樣使用XML序列化保存數(shù)據(jù) /
Q101其他有關技術簡介 /
參考文獻 / 致謝