Revit二次開發 視圖與圖紙


一、視圖的分類

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
)

得到明細表后,需要指定明細表的字段信息。其他明細表的信息,下一個博客見

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM