

Revit二次开发——关联族参数
在建族的时候,有个关联族参数的操作。应用场景比如:给族里的元素关联材质,关联长度等。 string paramName = "材质"; FamilyParameter familyParameter = familyDoc.FamilyMa...
Revit二次开发——利用Dispatcher类添加进度条
当程序运行时间很长,然后避免程序假死,比较好的办法是增加一个进度条,如果当前只有你的这一个功能在跑,用Dispatcher类是一个简单的好选择。 这里用wpf的窗口来实现。 public partial class ProgressBarV...
Revit二次开发——非模态窗口
非模态窗口有一个好处,就是可以一直停留在程序之前,然后持续完成操作。但是在Revit二次开发中,非模态窗口也有几个注意事项。 1、需要在文档关闭的时候,把非模态窗口也关闭掉,不然会导致文档关闭,窗口还在这样奇怪的Bug。 2、非模态的窗口的...
Revit二次开发——加快过滤速度,以及对ElementIntersectsSolidFilter的API的Bug的处理办法
在Revit的API中有快过滤器和慢过滤器,其中慢过滤器和快过滤器合用会加快过滤器的速度。 首先来看一个例子,以下是一个用了ElementIntersectsSolidFilter 慢过滤器的例子,如果元素多达几千个,下面最后一行代码起码耗...

Revit二次开发——字体的问题
在Revit二次开发中设置文字字体还是一件比较容易的事情,因为有现成的API. 首先需要获取系统文字名称,这里用最简单的方式,百度一下: https://zhidao.baidu.com/question/69549353.html 获取好...

Revit二次开发——如何搭建多版本的框架,方便编程
Revit基本两年一大变。所以在做开发的时候需要做多个版本的才行。但是每个版本做一个项目又很不方便,因为很多代码类似,改了前面忘了后面的版本,所以很头疼,最好能够几个版本共用一个类,不同版本通过预编译来解决。这里只说怎么解决多...
Revit二次开发_在Revit启动后创建Tab
在Revit中,一般插件的UI是通过IExternalApplication接口的OnStartup函数的UIControlledApplication类型在Revit启动时进行创建的。 在查看SDK的时候发现UIApplication类型...
Revit二次开发_快速显示隐藏剖面框
难得不用加班,闲下来写两行代码。 最近遇到一种状况需要经常切换剖面框的可见性,于是想将剖面框的显示与隐藏做成一个按钮,方便切换。 其他类似元素想做成快速切换可见性应该可以使用类似做法。 这次的隐藏对象是剖面框,所以我直接就隐藏元素了。 以下...

Dynamo_导入图纸信息
=======================修正========================= =======================原文========================= 想用Excel先把图纸信息编辑好,然...

Dynamo_导入图纸信息_修正1(临时图纸编号)
上一会用Dynamo做了一个在Revit中导入图纸信息的功能,后面在项目中使用的时候发现一个比较严重的问题,就是如果我在Excel中的图纸编号与Revit中已有的图纸编号冲突的时候,会导致修改失败,于是做了一点小改动。 逻辑上就是先将要修改...
批处理_文件名操作
使用Revit批量导出CAD或PDF的时候文件名总会带一些前缀,用批处理写了一个小脚本去对文件名进行操作,可以实现批量去除前缀,添加前缀,字符串替换。 以下核心代码: rem 添加前缀 :cmdAddPrefix echo 要处理的文件类型...

Dynamo_随机获取填充样式
最近使用Dynamo的时候碰到一个问题,我需要随机取一些填充样式用于样式替换,于是我使用了自带的All Elements of Type获取项目中的填充样式,但这样获取的填充样式有一个问题就是绘图填充样式与模型填充样式都被包含在里面,而我只...
Revit二次开发_获取视图样式替换
目的是用于导出视图样板中的图形替换,但Revit中视图样板其实也属于视图,所以对于所有视图都通用。 方法十分简单,视图中的样式替换都可以通过OverrideGraphicSettings读取,要注意的地方是需要...

Revit二次开发_使用Winform获取用户输入
一个使用Winform窗体获取用户输入的例子。 新建一个简单窗体: 窗体部分代码: public partial class Form1 : Form { public Form1() { InitializeComponent...
Revit二次开发_载入族前对族进行检查
前段时间想到一个点,为了保证项目数据的统一,应当禁止载入未知来源的族,所有可以载入的族应由管理员审核通过存放在企业族库内。那么就需要Revit在族载入前对族进行检查,匹配路径或其他信息。其实严格的来讲还需要禁止编辑族,以及在拒...
Revit二次开发_显示最近的轴网交点
做项目的时候有时要通过轴网定位与别人交流,常规操作是点选最近的两根轴网,看轴网的名称。可能我记性太差,一个地方总是要确认几次才放心。现在也有一些插件可以将轴圈显示在工作视图最外侧,但在轴网比较多且密集的时候看起来效果还是比较糟糕的。 ...
Revit二次开发_计算管道长度时折算管件
Revit中统计出来的管道长度是实际的管道长度,而传统算量是把管件占的长度也计算到管道中的,虽说从理论来说Revit的量更准确,但在不讨论对错的情况下,倘若我希望兼容传统的算量规则的话,也是可以让Revit自动把管件长度也折算到...

Revit二次开发入门--创建一个简单的程序
创建一个简单的Revit外部命令程序【Revit2017+VS2015】: 1、打开VS,我的版本是VS2015,点击【新建项目】→【Visual C#】→【类库】,然后输入程序名称,如:Hello World。 2、点击【项目】→【添加引...

Revit二次开发--屏幕截图/图片导出
在Revit API中有一个方法Document.ExportImage(),可以将单个或多个视图导出为图片。 该方法需要传递一个ImageExportOptions类型的参数,在参数中你可以自定义需要导出的视图、图片地址、图片大小等。 单...

Revit二次开发--获取视图可见性中过滤器颜色
在Revit【视图】→【可见性/图形】中,我们可以通过设置过滤器来设置一类构件的颜色,如下图所示: 如果我们想通过代码来取得或设置这些过滤器的颜色,该怎么做呢? Revit API中提供了一个GetFilterOverrides()方法,该...