Revit二次开发
imfour
这个作者很懒,什么都没留下…
展开
-
Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
revit内访问网页原创 2024-08-16 00:52:42 · 464 阅读 · 0 评论 -
Revit二次开发_使用Http发送网络请求
在revit开发中使用http请求示例。原创 2024-08-15 01:50:51 · 147 阅读 · 0 评论 -
Revit二次开发_使用InnoSetup打包插件
使用innoSetup打包revit插件的脚本示例原创 2024-08-14 02:52:50 · 332 阅读 · 0 评论 -
Revit二次开发_删除项目中所有视图过滤器
一段用于删除项目中视图过滤器的代码原创 2024-08-13 03:19:52 · 99 阅读 · 0 评论 -
Revit二次开发-创建并切换到新文档
方法用于创建新项目,但这个方法仅在内存中对项目进行创建,Revit的界面并不会将这个项目显示出来。方法,该方法可以打开一个相关视图,以显示输入的元素。利用该方法,传入文档中被显示在某个视图中的一个元素,就可以将该文档切换成活动文档。方法时,如果传入的元素的相关视图都没有被打开,则会弹出一个警告框,需要用户手动确认是否遍历全部视图。如果不想显示该警告框,则需要通过。也就是说,目前在API提供的方法中,需要重新打开文档才能激活成活动文档。下面的代码片段实现了在Revit中创建一个新项目,并直接切换成活动文档。原创 2023-04-17 03:01:28 · 762 阅读 · 0 评论 -
Revit二次开发_快速切换快捷键的插件
以前在办公室总要去同事电脑排查问题,或者有时要用公用电脑进行Revit演示,但不同使用者的快捷键方案不一样 而Revit的快捷键管理只能通过手动导入导出的方式进行快捷键的批量替换 通过这个扩展工具,Revit可以保存多套快捷键方案,并可以很方便地进行切换使用方法:将RevitShortcutExpansion.addin和RevitShortcutExpansion.dll放到C:\ProgramData\Autodesk\Revit\Addins\\<你的Revit版本号>\里,原创 2022-05-23 15:35:30 · 417 阅读 · 0 评论 -
Revit二次开发_修改快捷键
目录示例代码Revit 2019命令ID快捷键设置规则保留的快捷键Revit官方的似乎并没有提供修改快捷键的api,感谢@魏无忌的这篇博文——Revit开发之快捷键相关类_魏无忌的博客-CSDN博客,在对应的dll里找到一些可用的方法。通过UIFramework.ShortcutsHelper类,以及UIFrameworkServices.ShortcutItem类,可以用代码对功能进行快捷键的指定与删除示例代码//获得 选择链接 命令的ShortcutItem对象S原创 2022-05-15 22:07:38 · 2283 阅读 · 0 评论 -
Revit二次开发_关于TransactionMode标签
好久没写东西了,随便写点什么以前刚学Revit二次开发的时候并不是很理解为什么每个外部命令都要设置TransationMode,后面碰碰撞撞写了一些功能有了概念后才慢慢理解。using Autodesk.Revit.Attributes;using Autodesk.Revit.DB;using Autodesk.Revit.UI;namespace MyTest{ [Transaction(TransactionMode.Manual)] class Class1 :原创 2020-11-08 16:03:53 · 746 阅读 · 0 评论 -
Revit二次开发_对参数进行文本替换、加前缀、加后缀
我一般都用Dynamo做简单的参数批量修改,但也不能要求项目上每个人都会用Dynamo,这需求偶尔又会有,于是写成插件。想慢慢写成一个通用一点的参数管理工具,批量写入或者修改什么的,看精力了。目前功能还是针对特定参数进行文本替换、加前缀、加后缀。代码: class ModifyValue : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref strin原创 2020-06-07 01:46:11 · 966 阅读 · 0 评论 -
Revit二次开发_打开与关闭插件功能页(Tab)的可见性
偶尔会写一些关于Revit的教程,为了避免产生疑惑,截图的时候一般展示原始的Revit界面。不想看到插件的功能页的话可以把插件的注册文件移走,避免插件加载,但这个方法相对来说还是有点繁琐,所以直接用API在Revit里进行tab页的显示与隐藏。要对tab进行管理的话,需要引用AdWindows.dll库,这个库可以在Revit程序的根目录找到。下面这段代码通过判断keyTip来区分原始Tab与插件Tab,然后切换插件Tab的可见性。代码:Autodesk.Windows.RibbonC原创 2020-06-06 20:06:06 · 1231 阅读 · 4 评论 -
Revit二次开发_为天花板平面设置工作平面
发现Revit创建的天花板平面默认是没有工作平面的,使用例如Selection.PickPoint()这类需要工作平面的方法会报错,需要设置一下工作平面。代码实现起来也很简单,读取天花板平面的标高,用标高生成一个SketchPlane,再将这个SketchPlane设置到视图中就可以了。代码:activeView.SketchPlane = SketchPlane.Create(doc, activeView.GenLevel.Id);一点强迫症,跑完命令后我希望把视图恢复到本原创 2020-06-06 18:06:53 · 2000 阅读 · 2 评论 -
Revit二次开发_对段落进行整体缩放
还是要多休息,用了甲方提供的项目样板,里面预设的设计说明图幅和项目对不上,调比例,导入CAD都碰到了不同的问题,于是直接上代码下面代码可以框选注释文字,进行整体缩放,没有考虑文字类型的重命名,使用的时候要注意将文字先复制到一个空项目,缩放后改类型名称粘回去 [Transaction(TransactionMode.Manual)] public cla...原创 2020-04-16 19:45:13 · 514 阅读 · 0 评论 -
Revit二次开发_轴网快速标注
通过Revit二次开发实现对平行轴网的快速标注。交互操作是框选轴网->点选尺寸标注出现的位置->生成两道尺寸标注。要达到设想的结果一些地方需要特殊考虑:框选操作容易误选轴网,起码要把与所选轴网不平行的轴网过滤出来。选用了第二步操作所选点的最近轴网作为轴网平行的参考基准。遍历所有框选的轴网,如果轴网与基准轴网的向量相同或相反,则判定为平行轴网; 外侧的尺寸标注需...原创 2019-06-29 01:00:46 · 2706 阅读 · 0 评论 -
Revit二次开发_重复执行命令直至使用Esc结束
Revit有部分创建元素的命令有一个特点,就是创建命令执行完后会重新调用这个命令,除非使用Esc或者右键取消这个命令。例如创建门,常规交互是这样的:点击门按钮->进入选择状态->选择一面墙->门族被创建->重新进入选择状态。如果编写的插件也想实现类似的交互效果,其实也很简单,只需要把命令写到一个方法内部,方法最后重新调用本身即可。要注意的是当在选择状态取消命令时会出现O...原创 2019-06-22 00:57:10 · 3068 阅读 · 2 评论 -
Revit二次开发_调用Revit的图元创建界面创建图元
RevitAPI中有许多特定图元的创建方法,例如Wall.Create,Document.NewFamilyInstance等等,调用这些方法后会在文档中直接创建出对应的图元,但有时候希望使用Revit的创建界面进行图元的创建:先点击图元创建按钮->选择类型或调整参数->鼠标移到工作界面中预览创建图元->鼠标点击生成。这时可以使用UIDocument.PostRequestFor...原创 2019-04-13 03:00:10 · 1138 阅读 · 0 评论 -
Revit二次开发_项目文件分离
赶项目节点的时候觉得导图纸、分离模型这种工作实在是太难受了,图纸量大的时候即麻烦又容易出错,于是通过二次开发的方法直接将导CAD、PDF、分离模型的工作整合成批量导出,并且自动放到对应的路径。写到分离模型的时候发现了一些API里面不太友好的地方,首先是项目不能直接由当前文档分离,需要先把当前文档关掉,通过打开的方式分离;但是API又不支持直接关掉当前文档,而且又没有给出直接切换文档的方法…最后解决...原创 2019-03-05 20:55:26 · 2056 阅读 · 1 评论 -
Revit二次开发_末端点位修改检查
这段时间一直在忙项目,加上过年休息了一段时间,重新接触代码的时候竟感到有点陌生,思绪也有点乱,看来状态还是要慢慢调整回来呀。因为软件及协同方式的原因,Revit相对Cad来说会更容易出现误删除元素的情况,这段时间做项目的时候出现了两次电气末端点位误删除或误修改的情况,所以想通过二次开发来对这些点位进行检查,降低项目的审核成本。思路其实很简单,首先在第一次点位确定后,读取点位的ID与位置信息...原创 2019-02-17 18:57:13 · 798 阅读 · 0 评论 -
Revit二次开发_快速显示隐藏剖面框
难得不用加班,闲下来写两行代码。最近遇到一种状况需要经常切换剖面框的可见性,于是想将剖面框的显示与隐藏做成一个按钮,方便切换。其他类似元素想做成快速切换可见性应该可以使用类似做法。这次的隐藏对象是剖面框,所以我直接就隐藏元素了。以下核心代码: View activeView = uidoc.ActiveView;原创 2018-01-08 22:14:46 · 3969 阅读 · 0 评论 -
Revit二次开发_获取视图样式替换
目的是用于导出视图样板中的图形替换,但Revit中视图样板其实也属于视图,所以对于所有视图都通用。 方法十分简单,视图中的样式替换都可以通过OverrideGraphicSettings读取,要注意的地方是需要对读出来的数据一些判别。 对于类别替换的写入其实方法十分类似,几乎可以套用。 以下代码: private cl...原创 2018-04-17 00:07:06 · 2935 阅读 · 1 评论 -
Revit二次开发_使用Winform获取用户输入
一个使用Winform窗体获取用户输入的例子。新建一个简单窗体:窗体部分代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load...原创 2018-04-17 22:30:31 · 2796 阅读 · 2 评论 -
Revit二次开发_显示最近的轴网交点
做项目的时候有时要通过轴网定位与别人交流,常规操作是点选最近的两根轴网,看轴网的名称。可能我记性太差,一个地方总是要确认几次才放心。现在也有一些插件可以将轴圈显示在工作视图最外侧,但在轴网比较多且密集的时候看起来效果还是比较糟糕的。 于是通过二次开发做了一个快速识别轴网定位的功能,通过点选一个点,识别最近的两根方向不一样的轴网,弹窗显示并自动复制到剪贴板中。 现在主要针对的是直...原创 2018-04-30 12:28:47 · 1275 阅读 · 0 评论 -
Revit二次开发_载入族前对族进行检查
前段时间想到一个点,为了保证项目数据的统一,应当禁止载入未知来源的族,所有可以载入的族应由管理员审核通过存放在企业族库内。那么就需要Revit在族载入前对族进行检查,匹配路径或其他信息。其实严格的来讲还需要禁止编辑族,以及在拒绝载入后需要向管理员反馈信息。这里通过二次开发先简单实现载入族时进行对族进行自检的这么一个简单的功能,后面如果有机会希望可以对整个功能进行深化。 ...原创 2018-04-19 13:47:15 · 1989 阅读 · 0 评论 -
Revit二次开发_计算管道长度时折算管件
Revit中统计出来的管道长度是实际的管道长度,而传统算量是把管件占的长度也计算到管道中的,虽说从理论来说Revit的量更准确,但在不讨论对错的情况下,倘若我希望兼容传统的算量规则的话,也是可以让Revit自动把管件长度也折算到管道里面的。 折算的逻辑其实比较简单,首先获得管道,查询一下管道的连接件是否有连接有管件,如果连接了的话就计算连接件到族位置点的距离,将这段距...原创 2018-05-04 15:08:28 · 1704 阅读 · 0 评论 -
Revit二次开发_利用射线法进行三维测量
在原创 2018-06-04 00:58:22 · 2524 阅读 · 0 评论 -
Revit二次开发_类别对应的BuiltInCategory枚举
开发的时候需要用到所有模型类别与注释类别的BuiltInCategory值,于是按照Revit的类别显示的顺序将类别名称转成了对应的枚举值。模型类别:HVAC 区 : OST_HVAC_Zones专用设备 : OST_SpecialityEquipment体量 : OST_Mass停车场 : OST_Parking光栅图像 : OST_RasterImages卫浴装置 : OST...原创 2018-06-15 22:27:42 · 5428 阅读 · 7 评论 -
Revit二次开发_WPF的使用
Revit中如果要获取用户输入,除了Winform,还可以使用WPF。在这里记录一个使用WPF编写的简单窗口例子。例子中读取了Revit的自带族库路径,然后根据族库的结构生成树状列表,用户可以在树状列表中选择族载入到项目中。不知为何,即使是一样的界面,但觉得WPF做出来的窗体比Winform的顺眼些…窗口:WPF标签:<Window x:Class="ClassLibr...原创 2018-07-21 14:05:03 · 5976 阅读 · 10 评论 -
Revit二次开发_墙的偏移调整
在做项目的时候有时候会碰到建筑专业与结构专业同步进行建模的情况,这时因为结构模型尚不完整,建筑的墙建模的高度是标高到标高,而不是实际的板面到板底或梁底。所以需要等到结构模型完整后再重新调整一遍。这个调整的工作虽然比较简单,但重复性比较强,工作量也不少,于是利用二次开发做了一下优化。具体逻辑是在墙的高度一半的位置选了几个点,根据这些点上下检测楼面及梁面,如果能检测到对应的面,获得距离换算出墙的顶...原创 2018-08-24 02:32:20 · 5227 阅读 · 0 评论 -
Revit二次开发_通过改变族扩展名限制族的使用
使用SaveAs保存族文档的时候尝试将文件保存成其他后缀,发现保存出来的文件依然可以使用Revit打开,但会缺失一些功能:1、文件不显示缩略图;2、无法通过常规手段将族载入到项目中(例如拖拽文件到项目中、项目中的载入族、族中的载入到项目);3、使用Revit打开后,无法将其另存为rfa后缀的族文件;4、直接修改文件后缀的方法当然也是无法变回来的。除了这些功能的限制,转换后的文件...原创 2018-09-10 02:37:02 · 1404 阅读 · 5 评论 -
Revit二次开发_将数据导入Excel
有时需要将Revit模型的一些信息提取到Excel中进行处理或者是作为记录进行储存,但也许是因为Revit的数据结构相对复杂,并不支持直接将数据导出Excel,所以平时通过二次开发将信息输出到Excel中。常使用的输出方法有三个,分别是com组件;NPOI库;Epplus库。com组件需要电脑安装Excel软件,由于Excel版本比较多,导出的时候要注意版本的问题。下面的代码通过com组件...原创 2018-10-07 18:17:20 · 5731 阅读 · 2 评论 -
Revit宏的使用
Revit自带的宏功能也是很强大的。我认为宏功能有两个比较大的优势,一个是可以直接保存在项目文件中,即使将文件发送给其他人后,其他人不需要安装其他工具也可以直接使用编写好的宏功能;另外一个是对于一些简单功能的开发或者进行简单的可行性探究时,直接使用宏比使用其他IDE会更直接更方便。这里记录一个使用C#编写Revit宏的例子。将关键代码复制到ThisDocument中,运行宏后,可以将视图中基于...原创 2018-12-11 01:05:39 · 2921 阅读 · 0 评论 -
Revit二次开发_在Revit启动后创建Tab
在Revit中,一般插件的UI是通过IExternalApplication接口的OnStartup函数的UIControlledApplication类型在Revit启动时进行创建的。在查看SDK的时候发现UIApplication类型下也有创建UI的方法,测试了下发现可以在启动Revit后实现UI的添加。以下代码: public class TestCommand : IEx原创 2017-11-30 09:08:30 · 823 阅读 · 0 评论