/// <summary>/// 洞口边界,洞口可能是多个封闭区域组成/// </summary>/// <param name="open"></param>/// <returns></returns>public static List<CurveArray> GetOpeningBorder(this Opening open){List<CurveArray> listRtn = new List<CurveArray>();CurveArray ca = open.BoundaryCurves;List<Curve> listNewCurve = new List<Curve>();foreach (Curve curve in ca){if (!curve.IsBound){listRtn.Add(curve.GetArc().CircleToArcs().ToCurveArray());}else{listNewCurve.Add(curve);}}List<Curve> listDeal = new List<Curve>();for (int i = 0; i < listNewCurve.Count; i++){List<Curve> listOne = new List<Curve>();Curve curveThis = listNewCurve[i];bool blnRtn = curveThis.ExsitsInlist(listDeal);if (blnRtn){continue;}listOne.Add(curveThis);for (int j = i + 1; j < listNewCurve.Count; j++){Curve curveNext = listNewCurve[j];blnRtn = curveNext.ExsitsInlist(listDeal);if (blnRtn){continue;}blnRtn = curveNext.IsLinked(listOne);if (blnRtn){listOne.Add(curveNext);}}listDeal.AddRange(listOne);listRtn.Add(listOne.ToCurveArray());}return listRtn;}/// <summary>/// 圆分成两段弧线,圆为Unbond弧 /// </summary>    public static List<Curve> CircleToArcs(this Arc arc){List<Curve> listRtn = new List<Curve>();if (arc.IsBound){listRtn.Add(arc);}else{Plane plane = Plane.CreateByNormalAndOrigin(arc.Normal, arc.Center);listRtn.Add(NewArc(plane, arc.Radius, 0, Math.PI));listRtn.Add(NewArc(plane, arc.Radius, Math.PI, 2 * Math.PI));}return listRtn;}public static CurveArray ToCurveArray(this IList<Curve> listCurve){var ca = new CurveArray();foreach (var curve in listCurve){ca.Append(curve);}return ca;}/// <summary>/// 曲线是否在集合中/// </summary>/// <param name="curve"></param>/// <param name="listCurves"></param>/// <returns></returns>public static bool ExsitsInlist(this Curve curve, IList<Curve> listCurves, double tolerance = 0){if (listCurves == null || listCurves.Count <= 0){return false;}return listCurves.Contains(curve);}/// <summary>/// 首尾相接的集合内 /// </summary>/// <param name="curve"></param>/// <param name="listCurve"></param>/// <returns></returns>public static bool IsLinked(this Curve curve, IList<Curve> listCurve){bool blnRtn = false;foreach (Curve curExist in listCurve){if (curve.IsLinked(curExist)){blnRtn = true;break;}}return blnRtn;}

revit二次开发 获取洞口边界边线,获取竖井洞口的边界边线相关推荐

  1. Revit二次开发-【NO.05】获取元素的三种方法

    1.通过元素ID获取元素 2.通过过滤器获取元素 3.通过交互获取元素

  2. Revit二次开发 获取模型截面线、截面轮廓

    描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...

  3. Revit二次开发-根据名称获取标高

    Revit二次开发中,在创建元素或者对元素进行修改的时候,需要用到标高,此代码可以获取到当前文档中指定名称的标高, 思路是:先使用过滤器获取文档中所有的标高,再遍历元素,依据名称来匹配,从而得到你想要 ...

  4. Revit二次开发之获取当前电脑所有Revit版本

    一.背景 小伙伴们在做Revit插件安装包时,是否需要获取当前电脑已经安装了哪些版本的Revit呢? 二.解决思路 主要有两种思路 通过注册表 通过revit提供的方式 这里推荐第2种方式,因为这种方 ...

  5. Revit二次开发——自动生成构件图(总结)

    之前测试导出构件图的功能实现,拆分了各模块分布进行测试: Revit二次开发--一键导出构件图(1) Revit二次开发--叠合板自动配筋(2) Revit二次开发--自动标注钢筋思路(3) 本篇为这 ...

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

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

  7. Revit二次开发——引用dynamo中的几何库

    前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...

  8. Revit二次开发入门秘籍 01如何入门

    关于入门 我想在开始学习之前大家应该更需要知道如何入门,对比一下我们在学校的学习,我们需要书.老师-书上呢,是有所有的知识点,有重要的,有不重要的,而老师呢,会知道哪些是重点,也就是我们考试要考的,教 ...

  9. revit二次开发之数据库的使用

    一.背景 小伙伴们在revit二次开发时,可能会需要与数据库做交互,那么如何实现呢? 二.思路 笔者为此录制了一个教学视频,通俗易懂,大家直接看就行了 地址:https://www.bilibili. ...

  10. Revit二次开发入门捷径_升维学习、降维打击

    问题 入门Revit二次开发有捷径吗? 答案 量子力学:有也没有.(皮一下:叠加态) 没有:目的地只有一个,路只有一条,学习没有捷径. 有:虽然路只有一条,但我们可以借助交通工具,缩短时间就是捷径. ...

最新文章

  1. 什么是多项式时间?什么是NP问题?
  2. [转]详解编译预处理
  3. 点云处理库pyntcloud
  4. echart 饼图设置指引线_EXCEL中把饼图砍一半,美观程度瞬间提升
  5. mysql跨服务器查询语句_MySQL 跨服务器访问之-FEDERATED引擎
  6. 【老孙随笔】项目经理要如何看待技术?
  7. 我为什么要这么功利?
  8. 【渝粤教育】广东开放大学 商法 形成性考核 (40)
  9. oracle查看所有用户_Oracle实用命令查看共用一个表空间的所有用户
  10. host文件注释 ubuntu_Redis and MongoDB 设置密码验证(scrapy)(win)(ubuntu)
  11. AngularJS之中级Route【二】(七)
  12. 摄像头拍照功能是怎样实现的?自己动手做一个!
  13. 从零开始学centos(一)
  14. android 改机型玩王者,安卓手机改机型华为nova 8 Pro体验《王者荣耀》90帧超高帧率模式...
  15. vsto 安装成功后打开office word不加载
  16. 四、HTTP协议Header介绍
  17. git 仓库分支多文件夹管理
  18. 东西帝国时代:西半球的罗马帝国和东半球的秦汉帝国
  19. KY122 找出直系亲属
  20. 今日芯声 | 微软 Xbox 老大:关闭游戏直播平台 Mixer,我没有遗憾

热门文章

  1. python-urlparse :解析url
  2. matlab的filter函数,filter函数用法 matlab中filter函数的用法
  3. [转]恢复视力的方法(500度以下)
  4. 清理vmware 拖拽缓存
  5. word设置页眉页脚页码
  6. 混沌的市场里,怎么一眼识别出「好房子」
  7. 北大生命科学院ComBat 作者李程老师在线报告:三维基因组学与疾病
  8. JSPSSM204旅游景点线路网站 java毕业设计源码含论文和答辩ppt
  9. originos和HarmonyOS,vivo originos系统更新名单 origin os适配机型一览
  10. Cadence Allegro动态铜皮不避让走线解决方案图文及视频演示