![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Revit二次开发工具类
文章平均质量分 58
w051108
这个作者很懒,什么都没留下…
展开
-
Revit二次开发 - 实体碰撞过滤器
从原创 2021-04-01 17:16:45 · 869 阅读 · 0 评论 -
Revit二次开发 - 族库最近使用菜单
RibbonGallery当时在“构件坞”中看到这种样式的ribbon菜单,觉得挺有意思的,于是找它的实现方案:1、首先用Adwindows找到“构件坞”的Tab;2、再找到“最近使用”的Panel,看看它里面的控件是啥对象;3、这样就找到了RibbonGallery,发现它在我们常使用的“RevitAPIUI.dll”中是没有封装,那么就只有Adwindows了;4、最后搜索找资料,几乎没有... ...这只能结合调试时对象的属性,测试如何使用,挺麻烦的。(当然可以反编译构件坞,虽原创 2021-03-30 23:15:36 · 888 阅读 · 4 评论 -
如何编写自己的数据访问层
概述 在二开(族库、算量等)或者大部分管理软件的开发中,多数系统架构是基于数据库设计的,那么怎么设计数据访问层呢?一、设计框架图中分成三块:1、左边的xxxServices为app公开访问数据接口;2、中间红色部分为底层操作数据库接口,通过依赖注入的方式给xxxServices使用;3、xxx DAL为底层操作数据库接口的具体实现,可能是SQL Server的实现,可能是用于程序开发的的Fake数据提供的实现,也可能是阿里云、腾讯云等云服务器的数据访问的实现等;二、导出..原创 2021-01-04 15:30:48 · 2234 阅读 · 5 评论 -
Revit二次开发 - 安装包的制作
如何把我们发布的库制作成安装包,直接百度“制作安装包工具”有许多软件推荐,比如说NSIS、SetupFactory、InstallShield等等;这些软件大同小异,添加我们的库文件,提供交互界面设置基本参数,比如说软件名称、版本号、默认安装路径等等,如果界面操作无法满足当前需求的话,可以结合它提供的脚本来做更多的事情,比如写注册表、修改addin文件等等;学会一种制作安装包的工具并且能灵活应用挺好的,能快速的打包自己的程序,而且这些软件大部分提供了保存项目的功能,也就是一个模板,而且脚本基本通用,原创 2020-11-01 22:30:46 · 933 阅读 · 1 评论 -
revit二次开发 外部事件调用方法
/// <summary> /// 外部事件应该在OnStartup事件中注册, /// 否则可能会无法执行 /// </summary> class ExternalEventManagement { bool _register = false; Dictionary<ExternalEventType, IExternalEventHandlerExt> _dicEventHandle...原创 2020-07-31 23:17:41 · 1367 阅读 · 0 评论 -
Revit二次开发 - 菜单配置
Ribbon菜单,这个大家肯定不会陌生,除非黑科技 - -#,不然任何一款插件开发完成后都需要给用户准备界面操作菜单,如下图所示。创建菜单的方式有两种:像SDK Sample中的例子一样,硬核写在代码中 通过外部配置文件灵活的生成菜单用第一种方式写过菜单的开发者应该深有体会,硬核写实在太麻烦了,菜单一多,调整按钮位置都是很需要耐心的事情,而且每次菜单的修改都会导致需要重新发布程序,哪怕是敲错了一个文字。你的程序经过 编译、打包、加密、发布 一套流程下来突然发现菜单的一个文本写错了,这不抽原创 2020-09-03 23:46:10 · 915 阅读 · 0 评论 -
Revit二次开发 - 算量模块 - 几何接口
Revit接口GeometryCreationUtilitiesBooleanOperationsUtilsStructuralFramingUtilsJoinGeometryUtils二维平面开源库https://sourceforge.net/projects/polyclipping/问题1:项目中梁柱基本都发生了剪切的关系,如果需要获取构件原始的Solid,可能就需要先打断这些关系再取,我说的可能不是很清楚,但是如果你在正在做这方面的事情时,应该会遇到这些问题并且原创 2020-09-01 21:50:04 · 885 阅读 · 0 评论 -
Revit二次开发 - 算量模块 - 构件预览
下图为一知名算量软件的构件预览的效果,我们自己开发算量软件应该绕不过它,不管是开发还是测试,该功能提供了直观查看和校核结果的途径,话不多说,看实现。它的参考文档可以查看SDK的中AnalysisVisualizationFramework文件夹下的内容;也可以直接百度搜Revit二次开发 AVF,能找到和下面相似的代码;我感觉用AVF能直接解决显示构件的效率问题。 static class AVFSolidUtils { public static voi原创 2020-09-01 21:31:43 · 950 阅读 · 1 评论 -
Revit二次开发 - 位置查看帮助类
revit二次开发中,从顶层抽象上看,很大部分的需求,就是如何把正确的构件摆放在正确的位置,最后得出一个正确的结果所有,如何快速、直观的查看 构件坐标、轮廓、坐标系统 等等位置信息变得尤为重要,它能提高我们的开发效率和正确率。我们一般的操作是在lookup中查看,不过它的结果是一长串的数字,一眼看不出问题,最后写接口把这些数据创建到document中,比如:需要查看梁的方向,我会创建用一个带有箭头的线把梁的LocationCurve创建出来;比如常规模型,需要看出该构件的位置,则把这个点打出来,如下原创 2020-08-21 11:21:43 · 547 阅读 · 0 评论 -
Revit二次开发 - 插件更新升级
加载插件的方式一般有两种1、通过自己做的一个壳程序(.exe)再启动revit加载插件2、打开Revit就自动加载插件第一种方式的升级操作很好办到的,因为在启动Revit之间,你是知道Revit的插件是否需要更新,如需更新,直接从服务器下载覆盖即可,不存在动态库被占用的情况;而第二种方式,在加载你的插件后,需要更新的相关库可能已经被加载revit环境中了,这时覆盖可能会提示被占用的异常。这时就需要把你的库调整下结构了(可作参考):addin文件指向加载器"WXVisual.Rev原创 2020-08-13 23:59:12 · 1215 阅读 · 0 评论 -
Revit二次开发 - 动态模型更新DMU
当你关心的构件(注册时)行为发生改变时,revit会通过回调的方式相应该事件class UpdaterTemplateService : IUpdater { const string UpdaterId = "082604f4-9551-4bd3-b676-d5e10fb99577"; readonly AddInId _appId = null; readonly UpdaterId _updaterId = null; //原创 2020-08-13 23:23:55 · 1227 阅读 · 0 评论 -
Revit二次开发 - 过滤元素
在revit二次开发中,过滤指定类型元素的需求是很常见的,比如说获取标高、轴网、三维视图、FamilySymbol等等,于是乎: /// <summary> /// 元素过滤服务 /// </summary> public static class FilterElementService { #region 通用过滤器 /// <summary> /// 过滤元素原创 2020-08-11 22:14:00 · 986 阅读 · 0 评论 -
Revit二次开发 - 创建共享参数
/// <summary> /// 共享参数服务 /// </summary> class SharedParameterService { Document _document = null; readonly string ShareParamFileName = "visual_ShareParam.txt"; /// <summary> /// ...原创 2020-08-01 14:16:39 · 782 阅读 · 1 评论 -
Revit二次开发 - 设置元素颜色和透明度
public static class ElementColorUtils { static ElementId _fillPatternElementId = null; /// <summary> /// 设置 元素填充颜色 /// </summary> /// <param name="element"></param> /// <param.原创 2020-08-11 17:36:56 · 1436 阅读 · 0 评论