revit中创建图纸指在模型中创建一个图纸视图(以下简称图纸),图纸中可以插入明细表和视图,并且可以打印;放置视图操作指在某个图纸中插入某一个视图。

创建图纸操作需要使用ViewSheet.Create(Document document, ElementId titleBlockTypeId);

titleBlockTypeId指标题栏的ID,标题栏是手动创建图纸的时候需要选择的图纸类型。

标题栏是图纸族的族类型,它的BuiltInCategory是OST_TitleBlocks,并且属于元素类型。获取标题栏时可通过建立以上三种过滤器获得所有标题栏。

标题栏ID是标题栏的ID。

放置视图操作需要使用Viewport.Create( Document  document, ElementId viewsheetId,ElementId viewId, XYZ point );

其中 viewsheetId指视图需要被放置到的图纸的ID,viewId指被放置的视图的ID,point指视图放置在图纸中哪一个位置。

平面视图的基准点的影响值有视图中项目基点、立面标记、裁剪框和构件的显示情况。

经本人实验获得的影响结果如下:

以下为实验代码(revit中以建筑样板新建项目,按视图名称所示修改视图可见性和裁剪框):

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 using Autodesk.Revit.DB;
  7 using Autodesk.Revit.UI;
  8 using Autodesk.Revit.ApplicationServices;
  9 using Autodesk.Revit.Attributes;
 10
 11 using System.Windows.Forms;
 12
 13 namespace Xincubus
 14 {
 15     [Transaction(TransactionMode.Manual)]
 16
 17     public class CreateViewSheet : IExternalCommand
 18     {
 19         public Result Execute(ExternalCommandData document, ref string message, ElementSet elements)
 20         {
 21
 22             UIApplication uiapp = document.Application;
 23             Document doc = uiapp.ActiveUIDocument.Document;
 24             FilteredElementCollector titleBlock = new FilteredElementCollector(doc);
 25             titleBlock.WherePasses(new ElementClassFilter(typeof(FamilySymbol)));
 26             titleBlock.WherePasses(new ElementCategoryFilter(BuiltInCategory.OST_TitleBlocks)).WhereElementIsElementType();
 27             FilteredElementCollector allView = new FilteredElementCollector(doc);
 28             allView.WherePasses(new ElementClassFilter(typeof(Autodesk.Revit.DB.View)));
 29             allView.WherePasses(new ElementCategoryFilter(BuiltInCategory.OST_Views)).WhereElementIsNotElementType();
 30
 31             ElementId titleBlockTypeId = null;
 32             Autodesk.Revit.DB.View view1 = null;
 33             Autodesk.Revit.DB.View view2 = null;
 34             Autodesk.Revit.DB.View view3 = null;
 35             Autodesk.Revit.DB.View view4 = null;
 36             Autodesk.Revit.DB.View view5 = null;
 37             Autodesk.Revit.DB.View view6 = null;
 38             Autodesk.Revit.DB.View view7 = null;
 39             Autodesk.Revit.DB.View view8 = null;
 40             if (titleBlock.Count() != 0)
 41             {
 42                 foreach (Element element in titleBlock)
 43                 {
 44                     if (element.Name == "A0 公制")
 45                     {
 46                         titleBlockTypeId = element.Id;
 47                         break;
 48                     }
 49                 }
 50             }
 51             if (allView.Count() != 0)
 52             {
 53
 54                 foreach (Element element in allView)
 55                 {
 56                     if (element.Name == "裁剪框+显示项目基点不显示立面")
 57                     {
 58                         view1 = element as Autodesk.Revit.DB.View;
 59                     }
 60                     if (element.Name == "裁剪框+显示项目基点显示立面")
 61                     {
 62                         view2 = element as Autodesk.Revit.DB.View;
 63                     }
 64                     if (element.Name == "裁剪框+隐藏项目基点显示立面")
 65                     {
 66                         view3 = element as Autodesk.Revit.DB.View;
 67                     }
 68                     if (element.Name == "裁剪框+隐藏项目基点隐藏立面")
 69                     {
 70                         view4 = element as Autodesk.Revit.DB.View;
 71                     }
 72                     if (element.Name == "无裁剪框+不显示项目基点不显示立面")
 73                     {
 74                         view5 = element as Autodesk.Revit.DB.View;
 75                     }
 76                     if (element.Name == "无裁剪框+不显示项目基点显示立面")
 77                     {
 78                         view6 = element as Autodesk.Revit.DB.View;
 79                     }
 80                     if (element.Name == "无裁剪框+显示项目基点不显示立面")
 81                     {
 82                         view7 = element as Autodesk.Revit.DB.View;
 83                     }
 84                     if (element.Name == "无裁剪框+显示项目基点和立面")
 85                     {
 86                         view8 = element as Autodesk.Revit.DB.View;
 87                     }
 88                 }
 89                 using (Transaction tr = new Transaction(doc))
 90                 {
 91                     if (tr.Start("Create ViewSheet") == TransactionStatus.Started)
 92                     {
 93                         ViewSheet viewSheetA = ViewSheet.Create(doc, titleBlockTypeId);
 94                         Viewport.Create(doc, viewSheetA.Id, view1.Id, new XYZ(0, 0, 0));
 95                         Viewport.Create(doc, viewSheetA.Id, view2.Id, new XYZ(0, 0, 0));
 96                         ViewSheet viewSheetB = ViewSheet.Create(doc, titleBlockTypeId);
 97                         Viewport.Create(doc, viewSheetB.Id, view3.Id, new XYZ(0, 0, 0));
 98                         Viewport.Create(doc, viewSheetB.Id, view4.Id, new XYZ(0, 0, 0));
 99                         ViewSheet viewSheetC = ViewSheet.Create(doc, titleBlockTypeId);
100                         Viewport.Create(doc, viewSheetC.Id, view5.Id, new XYZ(0, 0, 0));
101                         Viewport.Create(doc, viewSheetC.Id, view6.Id, new XYZ(0, 0, 0));
102                         ViewSheet viewSheetD = ViewSheet.Create(doc, titleBlockTypeId);
103                         Viewport.Create(doc, viewSheetD.Id, view7.Id, new XYZ(0, 0, 0));
104                         Viewport.Create(doc, viewSheetD.Id, view8.Id, new XYZ(0, 0, 0));
105                         tr.Commit();
106                     }
107                     else
108                         tr.RollBack();
109                 }
110             }
111                 return Result.Succeeded;
112             }
113         }
114     }

转载于:https://www.cnblogs.com/Xincubus/p/7160992.html

revit 二次开发之创建图纸和放置视图相关推荐

  1. NX二次开发-UFUN创建图纸注释uc5540

    NX二次开发-UFUN创建图纸注释uc5540 NX9+VS2012#include <uf.h> #include <uf_drf.h>UF_initialize();//创 ...

  2. NX二次开发 UFUN创建图纸尺寸表达式抑制 UF_DRF_add_controlling_exp

    NX二次开发 UFUN创建图纸尺寸表达式抑制 UF_DRF_add_controlling_exp NX8.0+VS2010#include <uf.h> #include <uf_ ...

  3. 【Revit 二次开发 】创建带箭头的文字注释(字体设置+引线箭头设置)

    此篇文章仅是自己的开发经验分享,不具备官方参考价值,如有不足,欢迎批评指正 开发目的: 创建一个带箭头的文字注释 字体为新宋体,大小2.5mm,宽度系数0.7,箭头为30度实心箭头 like this ...

  4. Revit二次开发—载入族并交互式放置

    文章目录 核心代码 问题一:按esc取消放置时报错 问题二:如何在放置一个族实例之后退出放置 问题三:已存在所载入族时,如何正常放置 参考资料 核心代码 using (Transaction tx = ...

  5. bim 二次开发c语言,BIM百科 | Revit二次开发入门--创建一个简单的程序①

    获取<每日一技,我的成长轨迹>汇总 · 请访问柏慕联创官方网站: www.lcbim.com · Revit插件制作实例步骤: 1.创建你的第一步骤插件 启动 Visual C# 速成版开 ...

  6. 【Revit二次开发】创建一个拉伸实体(正方体)+创建一个自定义族类型

    写在前面 这个例子是在族文件是测试的(打开Revit,选择新建族,选择公制常规模型,如下图一).创建好以后是空白的,如下图二 图一 图二 实现例子前有几个疑问: 拉伸实体是什么?创建拉伸实体的方法是什 ...

  7. revit二次开发概念_BIM百科 | Revit二次开发入门--创建一个简单的程序

    获取<每日一技,我的成长轨迹>汇总 · 请访问柏慕联创官方网站: www.lcbim.com · 创建一个简单的Revit外部命令程序[Revit2017+VS2015]: 1.打开VS, ...

  8. Revit二次开发入门--创建一个简单的程序

    创建一个简单的Revit外部命令程序[Revit2017+VS2015]: 1.打开VS,我的版本是VS2015,点击[新建项目]→[Visual C#]→[类库],然后输入程序名称,如:Hello ...

  9. Revit二次开发 ---->创建revit选项卡

    1.创建一个选项卡,添加选项卡名称 2.在选项卡下方创建一块区域(Panel) para1:选项卡名称,para2:是该区域名称 3.创建一个按钮数据PushButtonData para1:可以随便 ...

最新文章

  1. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...
  2. Android system server之WindowManagerService按键消息传播流程
  3. css提取页面元素唯一性_一日一技:爬虫如何正确从网页中提取伪元素?
  4. 12C 新特性 | 标量子查询自动转换
  5. 【需求】如何编写高质量“软件需求说明书”(转)
  6. vue.js 输入框金额限制
  7. phpstudy和php,phpstudy和wamp哪个好
  8. ai跟随路径_AI 路径寻找器(形状组合工具)-怎么使用,使用教程
  9. python基本代码教程-如何真正零基础入门Python?(第一节)
  10. 好用的浏览器主页有哪些?
  11. 微型计算机电路试卷,微机原理试卷及答案2
  12. xpath爬取当当网
  13. 从“冰山理论”看无代码开发与用户的科学分工
  14. 看门狗的喂法(独立看门狗和窗口看门狗的区别)!
  15. 外包项目注意事项问题
  16. 四款电脑桌面上的优质软件,硬核又实用,有个性而不张扬
  17. 拒绝洗脑式广告,无限重复洗脑式广告应该受到谴责。怎么有效抵制这类广告?...
  18. chp6面向对象三大特性 题目7 考点:继承、访问修饰符
  19. CPU:别再拿我当搬砖工了!
  20. 数字化和社会化商业转型中首席信息官的作用

热门文章

  1. 51Nod NOIP2018提高组省一冲奖班模测训练
  2. 微信小程序自定义顶部栏、等十个重要的常见功能总结
  3. Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户、项目、聚类、混合的协同过滤推荐算法WebShopRSMEx 源代码下载
  4. 《浮图秀》如何优雅查看B站视频封面大图?
  5. excel转html乱码,EXCEL表格中数字乱码是什么原因?
  6. docker中安装nacos报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
  7. 海德汉 LSV2 协议采集 2
  8. 如何在浏览器中打开jupyter notebook
  9. 【diskgenius】【Error on partition resizing.(2000011a)Out of disk space.】【The partition(or volume)“PART
  10. BlockChain的理解