![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Revit
文章平均质量分 51
C# WPF
硬核小青年
建筑信息化、BIM平台二次开发、IFC标准研究
展开
-
Revit二次开发的资源调用路径
Revit 二次开发过程中,经常需要调用一些外部资源,例如图片、视频、文本文件等等,从而实现定制化的功能。对于界面图标或图片资源的使用,相对而言比较简单,具体见:Revit二次开发使用相对路径显示图片,而要在后台代码中顺利地拿到生成操作为Content的资源并不容易。可谓前有狼后有虎。情况1:获取到的是Revit.exe的路径,而非dll路径System.AppDomain.CurrentDomain.SetupInformation.ApplicationBaseApplication...原创 2021-08-24 14:57:51 · 1035 阅读 · 0 评论 -
Revit按钮图标尺寸设置
控件关联的图片分为LargeImage(一般为32×32像素)和Image(一般为16×16像素),下图所示。原创 2018-08-08 10:07:06 · 594 阅读 · 0 评论 -
Revit族自动化批量添加族参数
Revit族自动化批量添加族参数转载 2020-10-15 09:03:38 · 2310 阅读 · 0 评论 -
Revit 版本对应的 Dynamo 版本
关注公众号及时获取文章更新Revit 版本 Dynamo 版本 2015 1.2.2 2016 1.3.2 2017 1.3.3 或者 2.0.1 2018 1.3.3 或者 2.0.1 2019 1.3.3 或者 2.0.1 GAME OVER!...原创 2020-03-17 08:52:09 · 5254 阅读 · 1 评论 -
使用钩子(Hook)实现Revit API中 PickObjects 完成按钮的触发
关注公众号及时获取文章更新在实际的Revit 二次开发项目中,经常需要与Revit 模型元素进行交互,那么除了借助于过滤器来获取对应元素之外,直接拾取元素(PickObjects 函数)也是常见的一种方式。然而在多选操作中,如果不是熟手,很容易找不到多选完成的按钮(其位置见图1,确实显得不起眼)。图1在Windows中,提供一种Hook机制,中文里常常被译作“钩子”或者“挂钩”,可...原创 2020-03-10 16:52:19 · 3100 阅读 · 12 评论 -
关于Revit 共享参数的那点事
根据Autodesk官方的定义,共享参数是参数定义,可用于多个族或项目中。它最牛掰的功能在于可以直接在项目文档里给族添加参数 >>>> 就是这么简单粗暴,来我们一起了解一下Revit 中这个神奇的参数定义功能!目录1. 共享参数的概念2. 操作方法3. 代码实现4. 注意事项1. 共享参数的概念刚才已经提到过了共享参数是用于参数定义...原创 2020-02-27 23:26:09 · 5717 阅读 · 3 评论 -
Revit & Navisworks 二次开发—获取材质贴图
Retrieving textures via Navisworks API (no solution)关于Revit API 获取材质贴图位图 bitMap(可行)代码如下:string[] targetMaterialNames = { // A standard Revit material, with // textures in standard pat...原创 2019-12-13 15:53:43 · 2712 阅读 · 3 评论 -
Navisworks二次开发自动化(Automation)程序,运行时报错,找不到程序集
解决方法:取消勾选“首选32位” dll 的复制到本地改为True以下程序实现功能为:使用控制台打开Navisworks软件,并打开C:\Users\110\Desktop\铲车.nwc路径下的文件,同时运行名为“NavisTest.BrIM”的插件,该插件读取文件中第一个模型的名称和文件名称...原创 2019-12-03 15:51:21 · 500 阅读 · 0 评论 -
关于 WhereElementIsNotElementType() 过滤的理解
List<Element> elems = new FilteredElementCollector(doc) .WhereElementIsNotElementType().ToElements().ToList();WhereElementIsElementType()WhereElementIsNotElementType()...原创 2019-11-27 09:14:03 · 935 阅读 · 0 评论 -
Revit 二次开发—连接MySQL数据库
MySQL官方下载地址在.NET框架下使用MySQL数据库,需要安装MySQL Connector/NET,否则无法使用,且两者版本需保持一致。此外,为使得VS 2017 能够连接上MySQL数据库,需要另外安装MySQL for Visual Studio。参考:vs2017连接mysql...原创 2019-11-10 20:52:29 · 1547 阅读 · 0 评论 -
Revit 二次开发—获取 Revit 版本信息
原创 2019-11-07 15:42:34 · 756 阅读 · 0 评论 -
Revit 2011 可否用API来链接 Rvt 文件?
问:REVIT 2011的API中如何实现链接rvt文件。sdk里面chm文件里面好像只有导入CAD的。我需要在我的rvt文件里面导入另外几个rvt文件进来并显示。下图为Revit 2020 API ,表明:导入和链接均不提供对 RVT 文件的操作。答复:Revit2011没有提供API来连接外部rvt文件。Revit 2012 也没有开放链接外部rvt的API,...转载 2019-11-07 15:24:06 · 309 阅读 · 0 评论 -
pyRevit
pyRevit 是 针对AutodeskRevit® 的快速应用开发(RAD)环境。 它可以帮助您在Revit环境中使用任何一种你熟悉的编程语言来调用Revit API ,从而快速搭建出你所要的自动化功能以及插件。 它还附带了一系列功能强大的工具,可以展示其作为开发环境的功能。 下载并安装pyRevit,启动Revit,并注意包含这些工具的新** pyRevit **选项卡。 pyRevit还...原创 2019-09-11 10:42:50 · 4271 阅读 · 0 评论 -
2019 Revit二次开发企业
转载自同济大学建筑设计研究院梁裕卿:https://mp.weixin.qq.com/s/B2lM513kEA07r6MVRNN2Qw目录Revit二次开发企业2019最新整理北京:上海:南京杭州济南苏州合肥深圳武汉郑州西安天津长沙绍兴常州广州洛阳重庆福建成都Revit二次开发企业2019最新整理北京:...转载 2019-06-05 10:09:06 · 2175 阅读 · 0 评论 -
Revit 二次开发—获取Revit安装目录
1、System.Windows.Forms.Application.StartupPath获取了应用程序的安装路径2、System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase获取和设置包括该应用程序的目录的名称。3、System.Windows.Forms.Application.Executa...原创 2019-05-09 22:01:15 · 1148 阅读 · 0 评论 -
Revit 在创建计算公式时,提示“不一致单位”
原因:单位不一致。当单位变得不平衡时会发生这种情况,例如:10 mm * 10 mm =100mm²解决方案:在等式中平衡单位。要正确获得100毫米,方程式必须如下:10毫米*(10毫米/ 1毫米)= 100毫米中和公式中至少一个参数的单位。中和单位的最简单方法是除以1(一):<100 mm *(100 mm / 1 mm)= 10,000 mm...转载 2019-02-19 15:22:19 · 4954 阅读 · 3 评论 -
Revit 二次开发—通过视图名激活对应视图
切记不要在事务中设置视图public static void ActiveViewByName(UIApplication app, string viewname) { Document doc = app.ActiveUIDocument.Document; UIDocument uidoc = app.ActiveUID...原创 2019-01-27 13:15:31 · 1317 阅读 · 0 评论 -
Revit 二次开发—隐藏组
public static bool HideGroupById(Document doc, int groupidnum, bool n) { ElementId groupid = new ElementId(groupidnum); try { Element elem ...原创 2019-01-27 11:10:44 · 655 阅读 · 0 评论 -
Revit 二次开发—获取特定类别的元素
public static List<Element> GetAllBlocks(Document doc) { try { FilteredElementCollector collector = new FilteredElementCollector(doc); ...原创 2019-01-27 11:09:21 · 1303 阅读 · 0 评论 -
Revit 二次开发——设置内置类别在激活视图下的可见性
public static void SetCategoryHidden(Document doc, BuiltInCategory builtInCategory, bool n) { try { Categories cates = doc.Settings.Categories; ...原创 2019-01-27 11:07:27 · 927 阅读 · 0 评论 -
Revit二次开发—自定义光标提示Tooltip
参考文章:https://thebuildingcoder.typepad.com/blog/2017/01/uiview-windows-coordinate-referenceintersector-tooltip.htmlhttps://thebuildingcoder.typepad.com/blog/2012/06/uiview-and-windows-device-coordi...原创 2019-01-03 10:46:38 · 956 阅读 · 0 评论 -
Revit 二次开发—元素处于选中状态(待完善)
uidoc.Selection.SetElementIds(ids);原创 2019-01-01 14:10:23 · 1326 阅读 · 0 评论 -
Revit二次开发—ISelectionFilter接口过滤用户选择
过滤元素选择public static IList<Element> GetManyRefByRectangle(UIDocument doc){ ReferenceArray ra = new ReferenceArray(); ISelectionFilter selFilter = new MassSelectionFilter(); ...原创 2018-12-31 10:44:38 · 1624 阅读 · 1 评论 -
解决Revit开发程序运行时,按ESC退出报错问题
对特定的异常进行捕获和报错try{ var reference = uidoc.Selection.PickObject(ObjectType.Element, "请选择您要查看的元素");}catch (Autodesk.Revit.Exceptions.OperationCanceledException ex){ TaskDialog.Show("ERROR"...原创 2018-12-19 21:11:00 · 1844 阅读 · 0 评论 -
Revit二次开发DockableDialog (可停靠窗体)
三个步骤1、首先可停靠窗体为 Page 窗体,即WPF控件需继承自Page。此外还需继承IDockablePaneProvider接口,然后在WPF控件后台代码汇总实现函数SetupDockablePane。2、在IExternalApplication的OnStartup函数中完成注册(RegisterDockablePane)可停靠窗口,同时添加一个Revit命令按钮。3、在I...原创 2018-12-19 20:32:19 · 2348 阅读 · 0 评论 -
Revit导出到 ODBC(开发数据库连接)数据库文件
可以将模型构件数据导出到 ODBC(开发数据库连接)数据库中。导出的数据可以包含已指定给项目中一个或多个图元类别的项目参数。对于每个图元类别,Revit 都会导出一个模型类型数据库表格和一个模型实例数据库表格。ODBC 导出仅使用公制单位。步骤:1. 在 Revit 中,打开要导出的项目。2. 单击“文件”选项卡导出(ODBC 数据库)。3. 在“选择数据源”对话框中,单击“...转载 2018-12-07 17:30:58 · 3920 阅读 · 1 评论 -
RVT开发QA: 使用RevitAPI创建非模态警告弹出框
https://forums.autodesk.com/t5/revit-naviworks-plant-jian-zhu-shi-gongbim-tao-lun-qu/rvt-kai-faqa-shi-yongrevitapi-chuang-jian-fei-mo-tai-jing-gao-dan-chu-kuang/m-p/8254270原创 2018-11-19 11:55:21 · 587 阅读 · 0 评论 -
Revit二次开发—撤销已提交的事务
需求:当插件窗口关闭时,事务回滚,撤销所有对模型的更改解决方案:由魏无忌提供,其博客:https://blog.csdn.net/The_Eyes TransactionGroup:当transactiongroup撤销时,所有在这个组里的事务,哪怕是已经提交了的,都会被撤销。 QuickAccessToolBarService 监听文档改变ControlledA...原创 2018-11-16 18:29:52 · 2032 阅读 · 1 评论 -
Revit二次开发—创建文字注释(TextNote)
Revit API 在2016版本及以后对创建文字注释做了改动新版本创建方法:using (Transaction tran = new Transaction(RevitDoc, "Creating a Text note")){ XYZ origin = new XYZ(10, 10, 0); ElementId defaultTypeId = RevitDoc.Get...原创 2018-11-15 17:51:34 · 4911 阅读 · 1 评论 -
Revit二次开发—获取几何数据
http://blog.sina.com.cn/s/blog_ecd3067b0102uy4e.htmlhttps://blog.csdn.net/bbkxw001/article/details/78804511https://blog.csdn.net/niuge8905/article/details/54882681待更新原创 2018-11-15 16:02:27 · 4118 阅读 · 0 评论 -
Revit二次开发—参数的读取与写入
注:本文转自公众号:BIMCoder梁老师一、前言在Revit二次开发中,参数是非常重要的组成部分,那么我们该如何从构件获取参数并修改该参数。二、方法首先得到一个Element后,有如下几个获取参数的方法:1. e.Parameters2. e.GetParameters(string name)3. e.get_Parameter(BuiltInPa...转载 2018-11-14 23:50:39 · 7363 阅读 · 0 评论 -
Revit二次开发—更改激活视图(activeview)失败原因
错误提示:Cannot change the active view of a modifiable document (with a transaction curently open)原因在于:视图不能在事务进行时更改,因为事务的运行牵扯到视图,视图正在被利用,所以应该在事务提交之后再更改激活视图!public static void ActiveViewByName(UIA...原创 2018-11-14 21:55:11 · 2506 阅读 · 0 评论 -
Revit二次开发—内建类别BuiltInCategory枚举(中英文对照)
目录1、模型类别2、注释类别1、模型类别HVAC 区 : OST_HVAC_Zones专用设备 : OST_SpecialityEquipment体量 : OST_Mass停车场 : OST_Parking光栅图像 : OST_RasterImages卫浴装置 : OST_PlumbingFixtures喷头 : OST_Sprinklers地形 : OST_...原创 2018-11-14 15:05:50 · 6067 阅读 · 2 评论 -
Revit二次开发—获取并修改指定标高
FilteredElementCollector collector = new FilteredElementCollector(doc);List<Element> elems = collector.OfCategory(BuiltInCategory.OST_Levels).WhereElementIsNotElementType(). ...原创 2018-11-14 09:15:40 · 4971 阅读 · 0 评论 -
Revit二次开发—赋值问题(单位转化)
通过二次开发设置参数值,存在单位转化问题原因:Revit内部基本单位是英尺(foot),如果要获取或设置构件参数数值需要进行单位转换1英尺 = 304.7999995367 mm = 304.8 mm可以使用RevitAPI内置的转换函数进行目标单位的转换使用UnitUtils函数的public static double Convert(double v...原创 2018-11-14 08:52:21 · 2612 阅读 · 2 评论 -
LiveCharts删除图表系列(series)
关注公众号及时获取文章更新问题:上图,当我想移除2个系列的值时,采用RemoveAt定位每个值的索引进行删除,结果报错:索引超出了范围原因:因为RemoveAt是移除单个值,所以当我们移除第一个值之后,下一个值又变成了[0]解决方法如下...原创 2018-11-11 08:53:44 · 1905 阅读 · 0 评论 -
Revit API 移动元素
1、Using LocationElementId ElementId = new ElementId(470604);Element Element = doc.GetElement(ElementId);LocationPoint location = Element.Location as LocationPoint;XYZ newlocation = new XYZ(loca...原创 2018-11-09 13:46:43 · 951 阅读 · 0 评论 -
Revit API 不能直接隐藏(Hide)Group?另有它法!
参考文献:http://adndevblog.typepad.com/aec/2014/01/hide-revit-group-via-api.htmlpublic void hidegroup(){Document doc = this.ActiveUIDocument.Document;Selection sel = this.ActiveUIDocument....原创 2018-11-08 23:59:56 · 647 阅读 · 0 评论 -
Revit 二次开发使用SectionBox裁剪视图
元素本身的BoundingBoxXYZ是变动的?程序目的:实现元素BoundingBoxXYZ的x,y值与sectionbox的x,y值相同,从而裁剪出该元素fig1是未更改sectionbox之前时,元素的BoundingBoxXYZ;fig2是运行一次更改之后,sectionbox的值;fig3是又运行一次后,sectionbox的值;fig4是第二次运行后,元素的Bou...原创 2018-11-05 00:43:46 · 2783 阅读 · 0 评论 -
Revit API切换激活的视图(Activate a 3D View)
本文转自https://thebuildingcoder.typepad.com/blog/2011/09/activate-a-3d-view.htmlHere is a simple question on making use of the ActiveView setter, which is new in Revit 2012:Question:I heard that Rev...转载 2018-11-04 18:17:17 · 2429 阅读 · 0 评论