
Revit API
文章平均质量分 67
安意诚Matrix
软件工程师出身,专注三维几何造型、三维建筑设计软件、AI技术。
展开
-
对Revit事务机制的一些推测
首先,什么是事务机制。软件事务机制是指一种在软件系统中用于管理一系列操作的方法,这些操作要么全部成功完成,要么全部失败,不会出现部分完成的情况。事务机制确保了数据的一致性和完整性,特别是在并发操作和系统故障的情况下。(Atomicity):事务中的所有操作要么全部完成,要么全部不发生。如果事务中的任何一个操作失败,整个事务都会回滚到开始前的状态。(Consistency):事务必须使数据库从一个一致性状态转移到另一个一致性状态。在事务开始和结束时,数据库的数据完整性约束必须保持不变。原创 2025-02-22 19:59:14 · 804 阅读 · 0 评论 -
Revit API:过滤器的种类 Filters
过滤器可以通过ElementFilters应用于FilteredElementCollector。ElementFilter是一个检查元素是否满足特定条件的类,它有三个派生类,将元素过滤器分为三类:ElementQuickFilter:快速过滤器,仅作用于低内存的ElementRecord,接口有限,用于读取元素属性。被快速过滤器拒绝的元素不会在内存中展开。ElementSlowFilter:慢速过滤器,需要先获取并展开元素。原创 2025-02-21 19:00:00 · 949 阅读 · 0 评论 -
Revit API:对元素过滤的三点思考
提高效率:Revit模型可能包含成千上万的元素,直接对所有元素进行操作会非常耗时。通过过滤,可以只选择需要处理的元素,从而提高代码的执行效率。精准控制:通过过滤,开发者可以精确地选择特定条件地元素,例如按照类型、类别、属性等进行筛选,从而实现更精细的控制。避免错误:在修改或删除元素时,如果不进行过滤,可能会误操作到不应该更改的元素。过滤可以便面这类错误的发生。原创 2025-02-20 22:45:00 · 447 阅读 · 0 评论 -
Revit API:Element 的分类
上述的分类是从Revit的帮助文档里抽取出来的,或者说是从Revit官方的角度来进行的分类。而用户针对自己的使用场景,可能会产生新的分类方式。比如按照楼层来进行分类,把不同的楼层的构件来进行分类;比如根据绿建节能的需要,按照不同的标准对构件进行分类。BIM软件由于其自身的特性,不同的分类方式,导致一个构件在不同的情况下,会和不同的构件分到同一个类别中。Filtering。原创 2024-09-18 20:15:00 · 1075 阅读 · 0 评论 -
Revit API: Pipe & Duct -管道和风管
从设计思路上看,Pipe & Duct -管道和风管本身有对应的构件,但他们的类型分别作为管道系统和机械系统的入口。而结构中的梁系统则不同,是一个单独的可被选中的构件,且有独立的入口按钮。因此,可以认为 Revit 这里针对抽象的系统,有两种不同类型的实现。...原创 2022-08-06 12:30:58 · 1221 阅读 · 0 评论 -
Revit API:明细表 ViewSchedule
明细表官方解释明细表以表格形式显示信息,这些信息是从项目中的图元属性中提取的。明细表可以列出要编制明细表的图元类型的每个实例,或根据明细表的成组标准将多个实例压缩到一行中。可以在设计过程中的任何时候创建明细表。如果对模型的修改会影响明细表,则明细表将自动更新以反映这些修改。可以将明细表添加到图纸中。可以将明细表导出到其他软件程序中,如电子表格程序。明细表更新修改模型时,所有明细表都会自动更新。例如,如果移动一面墙,则房间明细表中的平方英尺也会相应更新。修改模型中建筑构件的属性时,相关明细表会自动更原创 2022-06-20 20:53:59 · 1549 阅读 · 0 评论 -
Revit API:预制零件 Fabrication Part
前言预制零件是 Revit 系统的功能,这个系统指的是水暖电系统。预制零件在 Revit 的软件系统中以 FabricationPart 的形式出现,它的数据源头并不在 Revit 里,而是从 Autodesk 的另外一个产品 Fabrication 中来的。内容Autodesk FabaricationAutodeskFabarication 是欧特克一款面向制造的产品。这款产品和 Revit 做了集成:和 Revit 集成的功能:官方的介绍:https://v.youku.com/原创 2022-05-21 19:30:34 · 865 阅读 · 0 评论 -
Revit API:IRebarUpdateServer 更新自定义造型钢筋的接口
概述从 Revit SDK 介绍:DuplicateGraphics 可知,Revit 提供了很多 BuiltInExternalServices,而 IRebarUpdateServer 是其中一种,用来更新自定义造型钢筋的接口。接口的使用逻辑这个接口可以被重写,目的是更新创建的带约束的自由造型钢筋的几何图形。一旦某根钢筋(rebar)被这个服务创建出来,它就会调用方法GetCustomHandles(RebarHandlesData) 。执行这个方法会定义钢筋(rebar)的句柄 (handle原创 2022-03-06 11:56:13 · 447 阅读 · 0 评论 -
Revit API:Creation Methods 创建各种类型构件的方法
Revit 作为一个以构件 `Element` 为基础的软件,它的大多数构件都是有创建方法的,大致有两种类型,一种是构件对应的 Element 派生中有静态的 `Create` 方法。另外一种是通过 `Autodesk.Revit.Creation.Document` 和 `Autodesk.Revit.Creation.FamilyItemFactory` 这样的 `utility` 类来创建。除此之外,可能还有一些特殊的创建方式,比如楼梯。原创 2021-12-25 10:53:56 · 2666 阅读 · 0 评论 -
Revit API:找到轮廓族的路径
前言以封檐板为例,介绍如何找到某个族中使用的轮廓族。内容如下图所示,这是在屋顶边缘家的封檐板:封檐板的类型中有一个轮廓的属性:如何通过 Revit API 去获取这个轮廓?从封檐板获取类型从类型参数中得到轮廓族如何从轮廓得到里面具体的轮廓内容?从 FamilySymbol 的接口获得 Family用 Document::EditFamily来打开和编辑模型,从而得到一个族的 Document从这个新的 Document 里面拿到具体的图元 Element另一种获取各种类原创 2021-11-19 22:00:00 · 986 阅读 · 0 评论 -
Revit API: HostedSweep
在研究屋顶的时候,发现了封檐带、檐沟和楼板边缘。他们都是继承自 HostedSweep。他们的创建方式:namespace Autodesk.Revit.Creation{ public class Document : ItemFactoryBase { public Fascia NewFascia(FasciaType FasciaType, Reference reference); public Fascia NewFascia(Fascia原创 2021-11-16 22:16:44 · 411 阅读 · 0 评论 -
Revit API: Roof 屋顶
前言在自定义构件中,屋顶的在几何形体上,作为单体几乎是最复杂的,也是最变化多端的。迹线屋顶、拉伸屋顶和面屋顶,统称为屋顶,但他们的造型形式差异很大。另外屋檐的变化也很多,封檐带、檐底板、檐沟,这些都导致了屋顶的变化有很多。内容迹线屋顶按迹线创建屋顶屋顶的截断功能拉伸屋顶面屋顶...原创 2021-11-16 22:15:19 · 1438 阅读 · 1 评论 -
Revit API:Element 继承体系
继 “Revit API 开发周边:得到 Element 的所有子类” 之后,整理了一下所有 Element 的子类,内容源自 Revit SDK 中的 RevitAPI.chm 文档。读懂这张图,基本可以对 Revit 体系有个整体的了解。原创 2021-08-08 11:06:24 · 737 阅读 · 0 评论 -
Revit API:墙的定位线、功能、用途、内嵌墙
墙欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器,原创 2021-02-24 06:32:51 · 1850 阅读 · 0 评论 -
Revit API:Events 事件总览
事件EventsDataBase EventsUI 接口事件例子EventsRevit 中有多重类型的事件,平时使用中难免有疑惑,根据官方网站的介绍做个梳理。官网链接事件,顾名思义就是通过某个特定动作或者API触发的通知。通过订阅事件,当某个动作发生时,一个插件应用可以被通知到。有些事件是在动作发生时产生的,有些是在动作发生前,或者发生或产生的。那些没有发生前或者后的事件,被称作单独事件。Revit 提供了两种层次的事件,应用层面的和文档层面的。同一个应用层面的事件可以从 Application原创 2020-12-06 14:44:52 · 1504 阅读 · 0 评论 -
Revit API: Dimension 尺寸标注
前言本文介绍 Revit API 的尺寸标注。内容在 Revit API 中,尺寸标注相关的有三个类:Dimension、AngularDimension 和 SpotDimension。后两者是 Dimension 的子类。对应到 UI:创建标注Revit 中创建标注的地方并不统一。分别在 Autodesk.Revit.Creation.ItemFactoryBase、 Autodesk.Revit.Creation.FamilyItemFactory 和 Autodesk.Revit.原创 2020-08-27 09:01:13 · 4376 阅读 · 1 评论 -
Revit API: IndependentTag 标记
前言本文介绍 Revit 中标记相关的内容。这里的标记指的是 IndependentTag,它包按类比标记、全部标记、多类别标记、材质标记和空间标记。内容通过 API 可以获得和修改的数据:一个标记的引线,是否能够显示,HasLeader ;一个标记的方向,水平或者垂直,TagOrientation ;引线的类型,附着端点或自由端点,LeaderEndCondition ;是否有弯头,和对弯头位置的控制,HasElbow 和 LeaderElbow;标记的文字,只读,从被标记的构件中获得原创 2020-08-24 20:11:38 · 2465 阅读 · 0 评论 -
Dynamo For Revit & Revit API: 如何将 Dynamo 脚本包装成一个插件
问题一个很有趣的问题,如何将 Dynamo 脚本包装成一个插件,然后直接在界面上点击调用?方案参考:How to execute Dynamo scripts from a button in the Revit ribbon对应的代码:github 开源using Autodesk.Revit.ApplicationServices;using Autodesk.Revit.Attributes;using Autodesk.Revit.DB;using Autodesk.Revit.UI原创 2020-08-14 20:40:24 · 3194 阅读 · 1 评论 -
Revit API: Face Wall 通过选中体量的面创建墙
前言一直以为 Revit 中的墙在 API 中都是 Wall 这个类,后来发现还有另外一种类型, FaceWall。内容FaceWall 和 Wall 在继承体系中是平级的,都是继承自 HostObject。namespace Autodesk.Revit.DB{ public class FaceWall : HostObject { public static FaceWall Create(Document document, ElementId wallTy原创 2020-08-07 18:32:57 · 1059 阅读 · 1 评论 -
Revit API: 单位转换 UnitUtils
前言原创 2020-08-04 21:10:50 · 970 阅读 · 0 评论 -
Revit API: 材质- 参考官方文档(三)
前言自己研究了一圈材质之后,在官方文档里面翻了一下,发现也有一些介绍,整理一下。我研究的参考:Revit API: Material 材质Revit API: 材质- 参考官方文档(一)Revit API: 材质- 参考官方文档(二)内容参考:Material quantitiesPainting the Face of an Element获取材质(体积、面积)如果构件所属的类别,它的属性 Category.HasMaterialQuantities 有效,那么这些 Element原创 2020-07-11 08:36:45 · 1140 阅读 · 2 评论 -
Revit API: 材质- 参考官方文档(二)
前言自己研究了一圈材质之后,在官方文档里面翻了一下,发现也有一些介绍,整理一下。我研究的参考:Revit API: Material 材质Revit API: 材质- 参考官方文档(一)内容材质的创建、查询、复制操作。参考:Material ManagementElement Material查询通过材质名称查询和从构件开始进行查询。通过材质名称查询用过滤器FilteredElementCollector把所有材质typeof(Material)都过滤出来,然后通过名称materi原创 2020-07-11 08:15:41 · 1565 阅读 · 0 评论 -
Revit API: 材质- 参考官方文档(一)
前言自己研究了一圈材质之后,在官方文档里面翻了一下,发现也有一些介绍,整理一下。我研究的参考:Revit API: Material 材质内容下面按照官方的文档做个整理。材质基本信息链接:General Material Information材质的属性:一个材质包含一个或多个和渲染相关的内容,比如外观、结构等。每一个部分都会有一系列的属性来描述,这些属性被称为资源 assets。StructuralAsset 表示该材质和结构相关的属性。ThermalAsset 表示材质和能量分析相关的内容原创 2020-07-10 21:06:30 · 2340 阅读 · 0 评论 -
Revit API: 填充样式 - FillPatternElement、FillPattern、FillGrid
前言本文介绍 Revit API 的填充样式,主要涉及FillPatternElement、FillPattern、FillGrid。内容下面介绍FillPatternElement、FillPattern、FillGrid,以及它们之间的关系。FillPatternElement 对应的是这里的填充样式。从类接口中可以看出,一个 FillPatternElement 实际上就是通过一个 FillPattern 来创建的,它实际上是包了一个 FillPattern。namespace Auto原创 2020-06-20 11:37:11 · 2033 阅读 · 2 评论 -
Revit API: Material 材质
前言本文介绍 Revit 的 Material 材质的外观。内容从界面的管理 Tab 下,选择材质,调整到图形选项卡:材质在 API 中用 Autodesk.Revit.DB.Material 表示,这一页的信息,可以通过下面的代码获得:private void GetMaterialInformation(Material material){ StringBuilder message = new StringBuilder("Material : " + material.Name原创 2020-06-19 16:56:55 · 4149 阅读 · 2 评论 -
Dynamo For Revit & Revit API: View 隔离图元
前言找到所有连接的构件,把它们都隔离出来。View…::…IsolateElementsTemporary Method原创 2020-06-17 19:01:13 · 733 阅读 · 0 评论 -
Revit API: WallJoin 墙连接
前言墙是 Revit 中非常基本的构件,它的连接非常智能。通过 API 如何查询和修改墙连接呢?内容类 WallUtils 可以查询和设置墙是否可以间接:namespace Autodesk.Revit.DB{ public static class WallUtils { public static void AllowWallJoinAtEnd(Wall wall, int end); public static void DisallowWal原创 2020-06-02 21:15:38 · 1283 阅读 · 0 评论 -
Dynamo For Revit & Revit API: Room 房间边界和几何图形
前言本文通过 Dynamo For Revit 和 Revit API 介绍如何获取房间的边界。内容通过 Dynamo 节点,Room.CenterBoundary、Room.CoreBoundary 和 Room.FinishBoundary 可以迅速得到房间的边界。但这三个结果不完全一样。本图对应的是 Revit 官方示例文件中的房间:API 获取边界到底是什么造成了这个差异呢?从 API 梳理一下。Room房间 Room 继承自 SpatialElement, public cl原创 2020-05-30 11:57:34 · 1930 阅读 · 0 评论 -
Revit API:View 视图概述
前言本文介绍 Revit 视图相关的基本接口。内容View 继承结构所有的视图都是继承自 Autodesk.Revit.DB.View,分别对应各种视图类型。View 的实例以官方给的文件为例:楼层平面:ViewPlan三维视图:View3D立面、剖面、详细视图:ViewSection渲染:ImageView图例:View明细表:ViewSchedule图纸:ViewSheet获取 View 的信息视图的基本信息,包括:视图名称,view.Name视图裁剪区域,v原创 2020-05-27 21:52:16 · 2176 阅读 · 0 评论 -
Revit API:GraphicsSettings 图形样式设定
前言本文介绍 Revit 的图形样式的设定。内容Revit 提供了三种替换视图中图形的方式,按图元,按类别和按过滤器。这里有一个隐含的信息,图形样式的设定是和视图关联在一起的,不同的视图可以做不同的设定。OverrideGraphicSettings在 Revit API 中都是通过 OverrideGraphicSettings 来进行设定。以按类别设定为例,大致的对应关系如下图所示:设定相关接口这个是针对单个图形进行的设定,它的接口是 View 相关的:// View::GetEle原创 2020-05-21 20:58:18 · 2162 阅读 · 0 评论 -
Revit API:草图 Sketching 基本知识
前言草图模式,或者说 Sketching 是 Revit 的基本功能。 Revit 里面的很多图元和构件都需要编辑轮廓,那么它们就必须有 Sketch 这个元素。构件的例子:墙、楼板、楼梯、屋顶等。图元的例子:拉伸体、开孔、范围等。草图模式 API按照二维和三维划分,二维有 SketchPlane、Sketch、ModelCurve。三维有GenericForm和Path3D。二维草图...原创 2020-05-08 18:11:04 · 1490 阅读 · 0 评论 -
Revit API:图纸和视口 Sheet & Viewport 视口位置设定
图纸和视口的位置关系如下图所示:如果想要设定视口在图纸的位置:需要知道图纸里面的坐标位置,可以看到图纸本身有一个 ViewSheet.Outline,这个是继承自 View 的;每个图纸都一个图框,这个图框也有坐标位置,可以从它的包围盒知道它的位置,每个构件都可以通过 API 获取 包围盒;同理,每个视口,也会有包围盒视口位置设定已知视口的位置和坐标系,如何重现设定视口的位置:...原创 2020-05-03 18:31:06 · 2884 阅读 · 0 评论 -
Revit API: OpenDocumentFile Ignore Error Warning 打开文档之后忽略错误
前言想要打开 Revit 文件,做一些操作,然后关闭文件,或者批处理一些文件,那么遇到错误对话框怎么办呢?如何把错误对话框通过 API 关闭?需要重写这个接口。revit.Application.Application.FailuresProcessing += Application_FailuresProcessing;内容https://forums.autodesk.com/...原创 2020-04-25 20:58:23 · 1092 阅读 · 0 评论 -
Revit API: 日志文件 journal
前言Journal 是 Revit 一个非常神奇的功能。当你在操作 Revit 的时候,实际上,Revit 会默默地把你的操作变成程序。而这个程序,可以回放。官方对于日志文件的解释关于日志文件日志文件可以捕捉从软件启动到停止这段时间内,软件在 Revit 会话期间所执行的操作。这些文本文件可用来解决该软件的技术问题。每次使用 Revit 时,该软件都会创建一个新日志文件。编号最高的日志...原创 2020-04-23 18:44:43 · 2123 阅读 · 0 评论 -
Revit API: 光线追踪 ReferenceIntersector
前言作为三维软件的使用者,有的时候是很好奇它们是如何做到选中一个物体的。可以想象一下,电脑屏幕是一个二维的,当我们点击鼠标的时候的,它就像是射出一条光线,然后选中的物体就是和这条光线相交的。Revit 提供了一个类 ReferenceIntersector,它的功能和上面的描述非常接近,不过它并不局限于从屏幕出发的一条的光线,可以是任意的位置和方向。ReferenceIntersector...原创 2020-04-19 11:44:47 · 1861 阅读 · 0 评论 -
Revit API: HostObject
前言粗略翻了一下 Revit API HostObject,没想到发现了更多的东西。挺有意思的。内容A base class that provides support for all objects that can host other objects, such as walls roofs, and floors.从字面上看,原本以为 HostObject 会仅仅和建筑相关的这...原创 2020-04-12 11:16:49 · 1108 阅读 · 0 评论 -
Dynamo For Revit:官方如何开发C#节点
前言Revit 2021 发布了10个 Dynamo 新节点,刚好借此机会看一下 Dynamo 是如何开发的。介绍从官网说明,Revit Nodes for Dynamo 2.5,找到提示的 GitHub 入口,最终来到:https://github.com/DynamoDS/DynamoRevit/pull/2454。从这个界面上看到,如果要提交新的 Node,至少需要以下几个部分:...原创 2020-04-12 09:35:46 · 2021 阅读 · 0 评论 -
Revit API: JoinGeometryUtils几何图元的连接
前言JoinGeometryUtils 是 Revit API 中关于几何图元连接的通用接口。接口 JoinGeometryUtilsJoinGeometryUtils :可以判断构件是否在几何上是连接的,AreElementsJoined;得到和当前构件几何连接的其它构件,GetJoinedElements;判断连接的两个构件中,第一个构件是否在几何上切割了第二个构件,IsCut...原创 2020-04-12 08:59:50 · 1729 阅读 · 0 评论 -
Dynamo For Revit 2021 新节点: Element Nodes
前言刚刚发布的 Revit 2021,对于 Dynamo 的支持力度似乎比以前大了一些,增加了一些基础的节点。节点介绍参考:适用于 Dynamo 2.5 的 Revit 节点# Autodesk.Revit.DB.HostObject 相关Element.GetHostedElements# Autodesk.Revit.DB.Element 相关Element.SetPinnedS...原创 2020-04-12 02:01:45 · 1443 阅读 · 1 评论 -
Revit API: 多层楼梯 MultistoryStairs
前言通过选择建筑标高,从楼梯创建多层楼梯。标高高度改变时多层楼梯自动调整。可以在创建楼梯时创建多层楼梯,或稍后从现有楼梯生成多层楼梯。图片来自官方文档:多层楼梯创建多层楼梯需要从现有楼梯中创建出来:// Autodesk.Revit.DB.Architecture.MultistoryStairspublic static MultistoryStairs Create(Stairs...原创 2020-04-06 17:33:14 · 680 阅读 · 0 评论