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
)

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

 

posted @ 2020-05-09 11:37  Min.Xiaoshuang  阅读(2346)  评论(0编辑  收藏  举报