筛选当前视图中所有的管道和轴网,创建横向和纵向的尺寸标注,
拾取一个点作为横向和纵向尺寸标注放置位置:

     FilteredElementCollector collector = new FilteredElementCollector(doc, doc.ActiveView.Id);ElementCategoryFilter filter1 = new ElementCategoryFilter(BuiltInCategory.OST_Grids);ElementCategoryFilter filter2 = new ElementCategoryFilter(BuiltInCategory.OST_PipeCurves);LogicalOrFilter orFilter = new LogicalOrFilter(filter1, filter2);collector.WherePasses(orFilter);ReferenceArray refArrayX = new ReferenceArray();ReferenceArray refArrayY = new ReferenceArray();XYZ xDir = new XYZ(1, 0, 0);XYZ yDir = new XYZ(0, 1, 0);double minY = double.MaxValue;double maxY = double.MinValue;XYZ minPoint = null;XYZ maxPoint = null;double minX = double.MaxValue;double maxX = double.MinValue;XYZ minPointX = null;XYZ maxPointX = null;foreach (Element elem in collector.ToElements()){if (elem is Grid){Grid grid = elem as Grid;Line gLine = grid.Curve as Line;XYZ gDir = gLine.Direction;if (gDir.IsAlmostEqualTo(xDir) || gDir.IsAlmostEqualTo(-xDir)){XYZ startPoint = gLine.GetEndPoint(0);double y = startPoint.Y;if (y < minY){minY = y;minPoint = startPoint;}else if (y > maxY){maxY = y;maxPoint = startPoint;}refArrayX.Append(new Reference(elem));}else if (gDir.IsAlmostEqualTo(yDir) || gDir.IsAlmostEqualTo(-yDir)){XYZ startPoint = gLine.GetEndPoint(0);double x = startPoint.X;if (x < minX){minX = x;minPointX = startPoint;}else if (x > maxX){maxX = x;maxPointX = startPoint;}refArrayY.Append(new Reference(elem));}}else if (elem is Pipe){Pipe pipe = elem as Pipe;Line pLine = (pipe.Location as LocationCurve).Curve as Line;XYZ pDir = pLine.Direction;if (pDir.IsAlmostEqualTo(xDir) || pDir.IsAlmostEqualTo(-xDir)){XYZ startPoint = pLine.GetEndPoint(0);double y = startPoint.Y;if (y < minY){minY = y;minPoint = startPoint;}else if (y > maxY){maxY = y;maxPoint = startPoint;}refArrayX.Append(new Reference(elem));}else if (pDir.IsAlmostEqualTo(yDir) || pDir.IsAlmostEqualTo(-yDir)){XYZ startPoint = pLine.GetEndPoint(0);double x = startPoint.X;if (x < minX){minX = x;minPointX = startPoint;}else if (x > maxX){maxX = x;maxPointX = startPoint;}refArrayY.Append(new Reference(elem));}}}//拾取一个点,基于该点的X、Y放置标注XYZ selectPoint = uiDoc.Selection.PickPoint(ObjectSnapTypes.None);XYZ yPoint1 = new XYZ(selectPoint.X, minY, 0);XYZ yPoint2 = new XYZ(selectPoint.X, maxY, 0);Line yLine = Line.CreateBound(yPoint1,yPoint2);XYZ xPoint1 = new XYZ(minX, selectPoint.Y, 0);XYZ xPoint2 = new XYZ(maxX, selectPoint.Y, 0);Line xLine = Line.CreateBound(xPoint1, xPoint2);using (Transaction trans = new Transaction(doc)){trans.Start("Create Dimension");doc.Create.NewDimension(doc.ActiveView, yLine, refArrayX);doc.Create.NewDimension(doc.ActiveView, xLine, refArrayY);trans.Commit();}

Revit二次开发——所有管道和轴网创建标注相关推荐

  1. Revit二次开发之管道避让

    管道翻弯避避让 本项目实现了管道碰撞的时候跳跃或者翻弯的方式实现避让的功能.废话不多说,直接上代码 这个Command类是项目的主要类. using System; using System.Coll ...

  2. Revit 二次开发 获取多段轴网的location

    点开多段轴网会发现轴网类型为MultiSegmentGrid,里面没有Locaiton可以获取,如果想要获取路径可以通过两种方式进行获取 方式一: Revit中可以进行编辑草图模式的均可以通过删除构件 ...

  3. revit二次开发获取管道连接器、弯头信息

    笔记代码如下: /// <summary>/// 获得管道连接器和弯头的信息/// </summary>public void GetConnector(){//获得管道Ref ...

  4. Revit二次开发_轴网快速标注

    通过Revit二次开发实现对平行轴网的快速标注.交互操作是框选轴网->点选尺寸标注出现的位置->生成两道尺寸标注. 要达到设想的结果一些地方需要特殊考虑: 框选操作容易误选轴网,起码要把与 ...

  5. revit二次开发之教学视频

    一.背景 刚入门revit二次开发的小伙伴,很多是零基础的工程人员,为了解决这个问题,博主做了revit二次开发的一系列教学视频(包括C#基础与revit二次开发两个模块),来帮助大家更好的入门. 二 ...

  6. 橄榄山BIM大学论坛正式启用,有Revit二次开发专版。可去那里问问题 http://bbs.glsbim.com

    为了更好的使用让大家有一个好的Revit二次开发交流的BBS,创建了Revit二次开发的专版论坛. 有什么问题,可以到那里去提问,我们也向各路英雄推介论坛,吸引大家过来学习和互相帮助. 进入Revit ...

  7. C# Revit二次开发基础/核心编程---建筑建模-标高和轴网

    一.本节课程 C# Revit二次开发基础/核心编程---建筑建模-标高和轴网 二.本节要讲解的知识点 1.标高的高度.创建标高 2.轴网曲线.创建轴网 具体内容 1.标高 标高是有限水平平面,大多数 ...

  8. Revit二次开发之轴网标注

    Revit二次开发之轴网标注 using System; using System.Collections.Generic; using Autodesk.Revit.DB; using Autode ...

  9. 【Revit二次开发】标高

    标高 标高 参考代码 标高 标高和轴网相当于地球的经度和纬度,在Revit里面起到"定海神针"的作用,整个建筑都是基于它们建立起来的,大多数元素都是基于标高来定位. 标高是有限的水 ...

最新文章

  1. Java架构技术文档:并发编程+设计模式+常用框架+JVM+精选视频
  2. F# 4.0于全平台发布
  3. 优先队列(priority_queue)的原理及用法
  4. 游戏行业DDoS 6年谈:什么样的架构才可以对DDoS免疫?
  5. 【十大经典数据挖掘算法】EM
  6. 从《在小吃店遇见凯恩斯》初识经济
  7. 赛锐信息:基于SAP ERP系统的企业内部审计介绍
  8. sdibt 1244类似于拓扑排序
  9. python绘制动态条形图_Python 绘图与可视化 matplotlib 动态条形图 bar
  10. 202012没有oracle加密,Windows2012远程桌面提示"这可能是由于 CredSSP 加密 Oracle 修正" 修复方法...
  11. Codeforces - 102222H - Fight Against Monsters - 贪心
  12. java程序员面试宝典第四版pdf下载
  13. macOS Ventura 正式版发布 苹果官方详解macOS 13 Ventura正式版
  14. 最新emoji表情代码大全_抖音不用考虑我我没感受铁打的图片,最新表情包高清大全[多图]-软件教程...
  15. 空间机器人建模与仿真报告
  16. 使用Roslyn动态编译代码
  17. Google Earth Engine(GEE)——美国俄勒冈大学制作的可视化土地分类下载器
  18. 宝塔面板修改默认的放行端口8888为8001并且生效
  19. spring结合时,web.xml的配置
  20. 计算机应用技术的论文如何写,计算机应用技术专业论文大纲模板范本 计算机应用技术专业论文大纲怎么写...

热门文章

  1. Hive 客户端 Beeline 、IDEA|Eclipse使用JDBC连接hiveserver2
  2. 产教融合 |2021年度校企协同育人实训班 重庆理工大学重庆芝诺大数据有限公司...
  3. 循环结构while及do...while的用法
  4. llvm编译linux,下载与编译LLVM和Clang
  5. AirPods 2/Pro 使用方法
  6. 自监督学习--图像上色论文 Colorful Image Colorization
  7. Revit中绘制弯曲的靠背栏杆和生成过梁
  8. vue其他之“vue常用方法2”
  9. Aquatox水环境与水生态模型应用教程
  10. 知识变现海哥:如何把自己的想法变现?