一、視圖的分類
Revit所有的元素都通過視圖來呈現,我們經常看到的三維、平面、立面都是各種不同的視圖呈現的,對於一個Document來說,其可以包含各種各樣的視圖對象,根據視圖的類型,我可以將視圖分為5個類別:
1、ViewPlan:代表平面視圖
平面視圖是Revit用於呈現平面投影的視圖,其主要包含以下類型:
面積平面:ViewType.AreaPlan
天花板平面:ViewType.CeilingPlan
結構平面:ViewType.EngineeringPlan
樓層平面:ViewType.FloorPlan
2、View3D:三維視圖
三維視圖:ViewType.ThreeD
漫游視圖:ViewType.Walkthrough
3、ViewDrafting:草圖視圖
繪制視圖:ViewType.DraftingView
渲染視圖:ViewType.Rendering
4、ViewSection:詳圖視圖
剖切視圖:ViewType.Section
5、ViewSheet:圖紙視圖
圖紙:ViewType.DrawingSheet
6、ViewSchedule 數據表視圖
明細表和數量:ViewType.Schedule
7、還有其他視圖類型直接來自View的
如立面ViewType.Elevation、報告ViewType.CostReport、內部View.Internal、圖列:ViewType.Legend、報告ViewType.LoadsReport\ViewType.PanelSchedule\ViewType.PresureLossReport、項目瀏覽器ViewType.ProjectBrowser、報告ViewType.Report、系統瀏覽器ViewType.SystemBrowser
二、視圖的創建:
1、三維視圖View3D
//創建透視視圖 public static View3D CreatePerspective( Document document, ElementId viewFamilyTypeId ) //創建正交視圖 public static View3D CreateIsometric( Document document, ElementId viewFamilyTypeId )
viewFamilyTypeId代表視圖對應的族類別,可以通過以下代碼獲取,三維視圖的類別主要為以下三種:
IEnumerable<ViewFamilyType> viewFamilyTypes = from elem in new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType)) let type = elem as ViewFamilyType where type.ViewFamily == ViewFamily.ThreeDimensional select type;
三維視圖可以通過通過設置EyePosition\Origin\ForwardDirection\UpDirection等設置觀察者的信息,同時可以設置CropBox設置剪切盒子的大小。
2、平面視圖ViewPlan
平面視圖,主要包含樓層、結構、天花板、面積平面等,在創建的時候,也需要指定ViewFamilyType的信息,其創建方法如下:
public static ViewPlan Create( Document document, ElementId viewFamilyTypeId, 視圖族類型 ElementId levelId 平面視圖對應的標高 )
平面視圖比較簡單,傳入指定的類別和標高,即可創建
3、繪制視圖viewDrafting
繪制視圖是一個專門用於繪制圖形的視圖,其本身和模型無關,其可以通過二維繪制工具進行繪制,得到需要的圖紙,其創建過程如下:
public static ViewDrafting Create( Document document, ElementId viewFamilyTypeId )
草圖視圖也有一個子類,可以從圖片加載創建一個視圖,常常用來給指定圖紙指定固定圖集元素
其創建方法如下:
public static ImageView Create( Document document, string imageFileName )
4、剖切視圖ViewSection
剖切視圖是通過剪切模型來顯示指定類別的結構,其創建方法如下:
public static ViewSection CreateSection( Document document, ElementId viewFamilyTypeId, BoundingBoxXYZ sectionBox 指定的剖切范圍 )
同時也可以通過剖切視圖來創建索引視圖和詳圖視圖,其創建方法分別如下:
ublic static View CreateCallout( Document document, ElementId parentViewId, ElementId viewFamilyTypeId, XYZ point1, XYZ point2 )
public static ViewSection CreateDetail( Document document, ElementId viewFamilyTypeId, BoundingBoxXYZ sectionBox )
5、圖紙視圖(ViewSheet)
圖紙視圖是獨立的頁面,其不需要關聯任何模型元素,但是其他各種視圖和明細表都可以放置在圖紙視圖之內,創建圖紙視圖的時候,需要指定一個圖框,其創建方法如下:
public static ViewSheet Create( Document document, ElementId titleBlockTypeId )
public static ViewSheet CreatePlaceholder( Document aDoc )
創建一個占位符的圖紙對象
我們可以通過viewprot對象的靜態方法,將指定的視圖添加到圖紙之上,其方法如下:
public static Viewport Create( Document document, ElementId viewSheetId, ElementId viewId, XYZ point )
通過傳入圖紙的ID,視圖的ID,和位置信息,可以將指定的視圖添加到圖紙之上。
6 明細表ViewSchedule
可以通過明細表,形成表格的方式,將項目中的信息提取到表格之中的呈現方式。
其可以分為:
明細表(或數量)
關鍵字明細表
材質提取
注釋明細表
修訂明細表
視圖列表
圖紙列表
配電盤明細表
其創建方法如下:
6.1 普通明細表
通過傳入指定的類別信息,創建明細表
public static ViewSchedule CreateSchedule( Document document, ElementId categoryId )
得到明細表后,需要指定明細表的字段信息。其他明細表的信息,下一個博客見