Revit二次开发小技巧
baobao熊
这个作者很懒,什么都没留下…
展开
-
Revit二次开发小技巧(十七)实时监控模型线的生成
项目中需要一个需求,用户想调用出Revit中自带的绘制模型线方法,然后再绘制结束时,可以拿到绘制的模型线,然后实现后面的算法。这里记录一种方法,通过DocumentChange事件+修改Tag的PropertyChanged事件来实现对应的需求。原创 2023-01-09 00:56:07 · 901 阅读 · 4 评论 -
Revit二次开发小技巧(十六)寻找最短路径
最近遇到一个需求,指定两个配电箱,然后找到两个配电箱之间最短的桥架路径。原创 2022-12-29 00:24:17 · 1198 阅读 · 2 评论 -
Revit二次开发小技巧(十五)构件的最小矩形外轮廓
我们会经常遇到需要计算一个构件的最小外轮廓,一般直接取BoundingBox只有最大和最小值坐标,也是基于x-y坐标系下的。往往不是最小的矩形,所以分享下面的算法来计算最小的外轮廓,条件为法向量是指向Z轴的,暂时没有考虑曲线的情况原创 2022-12-15 23:12:44 · 632 阅读 · 1 评论 -
Revit二次开发小技巧(十四)封闭墙体最大外轮廓
封闭墙体找最大外轮廓原创 2022-12-12 23:20:50 · 444 阅读 · 0 评论 -
Revit二次开发小技巧(十三)共享参数操作封装类
共享参数操作自己封装的一个共享参数操作类,分享出来,希望可以对你有所帮助~~~ public class ShareParameterMethod { /// <summary> /// 文件保存路径 /// </summary> private string DataPath = ""; /// <summary> /// 参数组集合 /// &l原创 2021-12-12 23:30:50 · 606 阅读 · 0 评论 -
Revit二次开发小技巧(十二)组构件修改方法分享
有时候会涉及到组构件的修改,当是又想通过这一次的修改,可以同步到相同的组构件中。这里给大家分享一个自己封装的组构件修改的类,希望可以给大家点帮助。public class GroupMethod { /// <summary> /// 目标组(名字、相同组名称的集合) /// </summary> private List<Tuple<string, GroupType, IEnumerable&l原创 2021-10-24 20:18:45 · 1009 阅读 · 0 评论 -
Revit二次开发小技巧(十二)创建带洞口的墙
这里记录一下项目上遇到的问题,就是创建带洞口的墙的时候,会发现创建接口仅有一个线集合传进去(如下图)。当墙体有洞口的时候,线段就只能再一个集合中传进去了。这时候会遇到一点问题,就是直接把两个轮廓的线传进去,会出现无法创建墙体的错误(如下图)经过一段时间的研究,发现,只要所有的轮廓首尾相连,然后轮廓线的方向都一致,即顺时针或者逆时针,就可以生成墙体了。 public Result Execute(ExternalCommandData commandData, ref string message,原创 2021-10-04 18:08:44 · 705 阅读 · 0 评论 -
Revit二次开发小技巧(十一)计算点投影到一个平面上的点
在项目中遇到的一个问题,想把管道中的中心点投影到一个剖切视图上面,然后研究了一番,写了一个通用的方法,现在来记录一下。先上代码,后讲解~~~1、点投影到平面的方法(如下) /// <summary> /// 点投影到一个平面 /// </summary> /// <param name=""></param> /// <param name="xyz"></param>原创 2021-07-12 23:17:14 · 1472 阅读 · 0 评论 -
Revit二次开发小技巧(九)日志文件路径
当我们想记录自己写的插件报错信息或者记录界面的数据。如果是想存储再本地文件夹中,又担心Revit的访问权限不够会导致一些读取和写入文档时的错误,下面这个提供的是,Revit绝对能访问到的路径,Revit的日志文件的存储路径。API:使用:string path = Path.Combine(Path.GetDirectoryName(commandData.Application.Application.RecordingJournalFilename), "测试文档.txt");File.Wri原创 2021-03-19 06:19:52 · 742 阅读 · 0 评论 -
Revit二次开发小技巧(八)怎样子判断是否开启事务
背景:在开发初期,总是喜欢把Doc对象传入方法中,然后开启事务去生成某些构件(不推荐这样子)。这样子的操作就会导致外部已经开启了事务,然后方法内部又开启一次事务,会导致报错:说xx事务已经开启,但是没有关闭就开启新事务的bug。这样子就需要我们对当前事务做一个判断,当前项目是否开启了事务。Just Do It~~API(如下图)返回值为true的时候,说明已经上面已经开启事务了,这样子可以在方法中加一个判断,是否还需要开启事务去生成构件。...原创 2021-03-15 15:59:42 · 610 阅读 · 0 评论 -
Revit二次开发小技巧(七) 怎样子判断当前项目是否保存
背景:把用户使用的当前模型复制一份,然后在复制的临时项目中对模型结构进行不需要回退的处理。这时候就会出现一个问题。用户如果刚操作完没有保存,那你复制出去得到的将是旧的数据,会导致后面使用的时候出现误差。因此给大家带来一个API中提供判断的方法,Just Do It~~API(如下图):当返回值为True的时候,表明项目正在处于更改的状态,即没有保存。...原创 2021-03-15 15:49:21 · 255 阅读 · 0 评论 -
Revit二次开发小技巧分享(六)怎样子测试线方便
在项目中,会运用到很多内存中的线,即Line类。可是我们只能看到他的点坐标信息,但是并不能直接知道这个线在项目中所在的位置具体在哪里。所以自己封装了一个方法来给自己方便测试。Just Do It~~~ /// <summary> /// 生成详图视图来测试 /// </summary> /// <param name="allLineList"></param> /// <param na原创 2020-10-24 18:08:02 · 272 阅读 · 0 评论 -
Revit二次开发小技巧(三),程序人员的属性之扩展存储
在项目中,我们想把一些不相关的数据记录在构件中,但是,如果全部展示出来,会让设计人员觉得构件很杂很乱。这样子我们需要一些功能去把我们自己想存的数据给存在构件中,而且可以不让设计人员看到。在2012年的是RevitAPI提供了扩展存储的功能。(Schema)下面我们来讲解一下怎样子来操作:public void SetSchema( Wall wall, string guid, string name,string data ) { //设置Schema的数据结原创 2020-08-07 22:27:35 · 1063 阅读 · 2 评论 -
Revit二次开发小技巧(二) 平面上点到线的距离
在项目中,我们一般是用使用点先投影到线上面,然后再用这个点去和端点去算距离。但是如果那个点不能投影到线上面时,就会出现一些计算不准确的问题。也让我们尽量的避开RevitAPI中的一些坑。而且基本适用于所有点求点到直线距离的情况。这次交给大家一个用几何的方法计算点A到线BC的距离。代码如下:public double GetPointToLineDistance(XYZ aPoint,Line l) { //先分别得到点的坐标 XYZ bPo原创 2020-08-03 21:49:33 · 2087 阅读 · 1 评论 -
Revit二次开发小技巧(四)读取扩展存储的信息
上一次分享实现了怎样子给构件添加扩展存储,这一次就教大家怎样子来读取我们存进去的数据。这里用到的GUID码和读取数据的名称是需要和自己存进去的时候一致的。全部代码如下:public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIDocument uidoc = commandData.Application.ActiveUI原创 2020-08-09 16:06:52 · 704 阅读 · 0 评论 -
Revit二次开发小技巧(二) 用ViewFamily枚举来收集楼层平面视图
用ViewFamily枚举来收集楼层平面视图我们在写功能的时候,会遇到需要收集特定的楼层平面视图的情况,总会写一个方法,先收集所有的ViewPlan,然后再通过ViewFamilyType的名称去判断是不是楼层平面视图。public List<ViewPlan> GetFloorViewPlan(Document doc, List<ViewPlan> viewPlans, string floorName){ List<ViewPlan> views =原创 2020-08-01 21:12:15 · 1477 阅读 · 5 评论 -
Revit二次开发小技巧
**Revit小技巧(一) :添加项目模板## **我们每开始一个新的项目,都需要添加RevitAPI.DLL和RevitAPIUI.DLL引用还有相关的类的引用。还需要重复的输入定义文档的代码,如下图:这里提供的小技巧是:把已经配置好的项目文件做成一个项目模板,这样子在创建的时候可以直接创建相对应的类,里面已经添加好了引用和基础的代码。目的是:可以在一定程度上提升自己项目开始的速度,减少一些重复代码的输入。步骤:1、 创建一个新的类,把需要的代码和引用都布置好。2、 点击项目选项卡->原创 2020-07-29 22:16:13 · 684 阅读 · 0 评论