Revit二次开发视图和图纸

一.观点的分类 Revit的所有元素都通过视图显示。我们经常看到的3D、平面、立面都是由各种视图呈现的。对于文档,它可以包含各种视图对象。根据视图的类型,我可以将视图分为 ......

一、视图的分类

Revit所有的元素都通过视图来呈现,我们经常看到的三维、平面、立面都是各种不同的视图呈现的,对于一个Document来说,其可以包含各种各样的视图对象,根据视图的类型,我可以将视图分为5个类别:

Revit二次开发 视图与图纸-风君子博客

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.LoadsReportViewType.PanelScheduleViewType.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代表视图对应的族类别,可以通过以下代码获取,三维视图的类别主要为以下三种:

Revit二次开发 视图与图纸-风君子博客

IEnumerable<ViewFamilyType> viewFamilyTypes = from elem in new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType)) let type = elem as ViewFamilyType where type.ViewFamily == ViewFamily.ThreeDimensional select type;

三维视图可以通过通过设置EyePositionOriginForwardDirectionUpDirection等设置观察者的信息,同时可以设置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 )

得到明细表后,需要指定明细表的字段信息。其他明细表的信息,下一个博客见