项目完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using Autodesk.Revit.UI;//IExternalCommand用
using Autodesk.Revit.DB;//Document用
using Autodesk.Revit.Attributes; //TransactionAttribute和RegenerationAttribute
using Autodesk.Revit.DB.Structure;//StructuralType.NonStructural用namespace GridPractise
{[TransactionAttribute(TransactionMode.Manual)][RegenerationAttribute(RegenerationOption.Manual)]public class Class1 : IExternalCommand{public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){UIDocument uidoc = commandData.Application.ActiveUIDocument;//定义用户文件夹Document revitDoc = uidoc.Document; //将uidoc转换为DocumentFilteredElementCollector coll = new FilteredElementCollector(revitDoc);//创建元素过滤收集器ElementClassFilter gridFilter = new ElementClassFilter(typeof(Grid));//过滤类型为轴网的元素List<Element> grid = coll.WherePasses(gridFilter).ToElements().ToList();//创建轴网List<Line> gridLines = new List<Line>();//创建轴线List<XYZ> intPos = new List<XYZ>();//创建交点foreach(Grid gri in grid){gridLines.Add(gri.Curve as Line); //将轴网转换为线}foreach(Line ln1 in gridLines)//找到第一根线{foreach(Line ln2 in gridLines)//找到第二根线{XYZ normal1 = ln1.Direction;XYZ normal2 = ln2.Direction;if (normal1.IsAlmostEqualTo(normal2))continue; //如果两根轴线方向相同,则遍历下一组IntersectionResultArray results;SetComparisonResult intRst = ln1.Intersect(ln2, out results);//如果两根轴线相交,则输出交点if(intRst == SetComparisonResult.Overlap && results.Size  == 1)//出去重复的交点{XYZ tp = results.get_Item(0).XYZPoint;//获取不重复的点if(intPos.Where(m=>m.IsAlmostEqualTo(tp)).Count() == 0){intPos.Add(tp); //收集所有的交点}}}}//在交点处创建柱子Level level =  revitDoc.GetElement(new ElementId(510300)) as Level;//定义轴网,其Id为510300(以自己创建的轴网Id为准)FamilySymbol familysymbol = revitDoc.GetElement(new ElementId(510872)) as FamilySymbol;//定义柱子,其Id为52557using (Transaction trans = new Transaction(revitDoc)){trans.Start("dfs");if (!familysymbol.IsActive)familysymbol.Activate();//设为Activate状态foreach (XYZ p in intPos){//创建柱子FamilyInstance familyInstance = revitDoc.Create.NewFamilyInstance(p, familysymbol, level, StructuralType.NonStructural);}trans.Commit();}return Result.Succeeded;}}
}

效果:

参考资料:
周婧祎 《Autodesk Revit 2016二次开发入门教程》

[Revit二次开发] 轴网交点创建柱子相关推荐

  1. Revit二次开发——三角面创建

    Revit二次开发--三角面创建 文章目录 Revit二次开发--三角面创建 前言 一.三角面是什么? 二.三角网 三.使用步骤 1.引入库 2.开启事务 3.创建 总结 前言 三角面是创建实体的基础 ...

  2. Revit二次开发中如何创建结构平面,修改结构平面的视图范围

    创建结构平面: 使用API:public static ViewPlan Create(Document document, ElementId viewFamilyTypeId, ElementId ...

  3. Revit二次开发-根据两个点创建剖面视图

    /// <summary>/// 根据两个点创建剖面视图/// </summary>/// <param name="doc">文档</p ...

  4. Revit二次开发 通过boundingBox创建实体

    用户选择任意元素,生成这个元素的包围盒实体.就这么简单.被curveLoop不封闭整到人傻掉 namespace SizeAdjustment{[Autodesk.Revit.Attributes.T ...

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

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

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

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

  7. Revit二次开发——Ribbon菜单的创建以及各种不同的button(按钮)的代码总结

    目录 一.创建普通的一个panel里面三个32px*32px的pushbutton,剩下两个写法一样 二.创建三个层叠按钮 层叠按钮图标需为16px*16px 层叠按钮最多为一列放三个,这个也要创建个 ...

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

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

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

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

最新文章

  1. Spring - Java/J2EE Application Framework 应用框架 第 10 章 使用JDBC进行数据访问
  2. 厉害了!用 JS 实现人脑和计算机交互
  3. 实现数据排序的几种方法
  4. 曝鸿蒙os手表,华为Watch GT 2曝光:第一款使用鸿蒙OS的智能手表
  5. CentOS7部署NFS
  6. [ERR0134] Requested Service is not available【转载】
  7. Android之自定义ContentProvider详解
  8. python创建数据库计算机积极拒绝、无法连接_Python3 请求网页源码 目标计算机积极拒绝,无法连接...
  9. 如何在几秒钟内退出所有 Mac 应用程序?
  10. 微信小程序onReachBottom不触发
  11. abaqus算出来的转角单位是什么_ABAQUS中的单位使用方法
  12. JavaWeb——JavaScript精讲之DOM、BOM对象与案例实战(动态添加删除表格)
  13. python安装pandas pytz_python安装pandas+pytz
  14. java 圆的类_java:设计实现圆形类、正方形类、长方形类
  15. 基于网络爬虫技术的网络新闻分析
  16. 【优动漫 PAINT应用篇】绘制插画之草稿
  17. java中入参_JAVA传参
  18. 贴一个之前写的阴阳师源码,供各位学习
  19. 配置好的HTTPS服务,无法访问
  20. C++判断两字符串是否相等

热门文章

  1. 如何退出Dos——附DOS命令大全
  2. 【IT观察】作为一个DBA,如何选择数据库
  3. 悲观锁、乐观锁、自旋锁和读写锁
  4. Json - 学习/实践
  5. codewars练习(5)backwardsPrime--提交失败-Execution Timed Out (12000 ms)
  6. Mac鼠标滚轮控制浏览器
  7. PHP面向对象基础七
  8. 数据结构期末考试——选择题
  9. 气传导耳机和骨传导耳机哪个好?气传导耳机要优于骨传导
  10. torch.atan2函数详细解答