zoukankan      html  css  js  c++  java
  • 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.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代表视图对应的族类别,可以通过以下代码获取,三维视图的类别主要为以下三种:

    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
    )

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

  • 相关阅读:
    PhpStorm6 创建yii framework项目
    RestSharp104.1反序化用法
    qt_plugin_instance: identifier not found 解决办法
    使用jsonlib2.1.jar报,org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"转载
    win7下安装和卸载oracle 10g转载
    删除c,c++,java源文件中全部注释的Python脚本
    webkit允许跨域访问
    【JavaP6大纲】分布式事务篇:两阶段提交(2PC)
    【JavaP6大纲】功能设计篇:秒杀场景设计
    【JavaP6大纲】功能设计篇:库存超卖问题
  • 原文地址:https://www.cnblogs.com/minhost/p/12856255.html
Copyright © 2011-2022 走看看