revit二次开发
文章平均质量分 76
C#进行revit二次开发
孤影墨客
这个作者很懒,什么都没留下…
展开
-
【Revit二次开发】点与线
在revit二次开发中要经常用到点和线,这里我总结了点和线的获取及常用的方法,包括:点是否在线上,点和线的距离等等。原创 2023-04-04 18:00:00 · 565 阅读 · 0 评论 -
【Revit二次开发】几何
在Revit二次开发中,几何是非常重要的一部分,因为在Revit中,所有的构件都是由几何形状组成的。获取构件的几何信息对象(GeometryObject),可以通过GeometryInstance对象获取。需要注意的是,几何信息中的坐标是以Revit内部的坐标系表示的,需要进行转换才能与其他外部坐标系进行对比。获取构件的几何图形(Solid),可以通过Element对象的GetSolidGeometry方法获取。获取构件的几何信息(Geometry),可以通过Element对象的Geometry属性获取。原创 2023-03-28 11:00:50 · 1189 阅读 · 0 评论 -
【Revit二次开发】添加菜单和按钮
Ribbon菜单的创建以及各种不同的button。原创 2022-11-24 15:23:01 · 1050 阅读 · 0 评论 -
【Revit二次开发】楼板、天花板、屋顶和洞口
楼板、天花板、屋顶和洞口。原创 2022-11-24 15:13:36 · 1348 阅读 · 4 评论 -
【Revit二次开发】应用程序和文档
应用程序和文档(Application and Document)是Revit API的顶层对象。应用程序对象:一个独立的Revit会话,提供访问文件、选项和应用程序范围的其他数据及设置。文档对象是单个revit项目文件。Revit可以有多个打开的项目,对应多个文档对象。应用程序对象是指一-个独立的 Revit会话,提供访问文件、选项和应用程序范围的其他数据及设置。原创 2022-11-24 15:12:29 · 1118 阅读 · 0 评论 -
【Revit二次开发】元素(Element)
区别是,系统族的族实例在Revit中可以找到与之相关的变成类型,例如,使用系统族:基本墙绘制的图元,它的编程类型是Wall。我们先全部当作模型图元,以“排烟“为例,排烟的设备是可以通过购买或者现场焊接制作出来安装在现实世界中的,而”排烟”两个字,我们是无法把这两字和最终的建筑相对应。“模型图元表示存在于建筑项目中的物理项”,通俗的讲,凡是在设计图纸中出现的模型图元,在现实世界中必将会存在与之描述一致的物理实体。而对于二次开发的执行者,能够区分已有模型图元是否为结构图元即可,见图元的属性参数“结构“。原创 2022-11-24 15:11:14 · 1327 阅读 · 0 评论 -
【Revit二次开发】外部事件(ExternalEvent)
外部事件并不是指Csharp中的event关键词修饰的类型,而是一种实现事件机制的接口,它的工作方式与编程中的事件相似:一个插件程序能在某个动作即将发生或发生后得到通知,然后根据这个动作采取行动。原创 2022-11-12 00:34:32 · 1072 阅读 · 0 评论 -
【Revit二次开发】模型中存储数据——参数和外部存储(Parameter, Schema and Entity)
在Revit平台API中,每个图元对象都有参数属性,它是隶属于图元所有属性的集合,在此集合中更改属性值。- 每个图元的参数都有一个与之关联的ElementId类型的ID- 大多数参数是Revit内置的 - 还有一部分是存储在硬盘外部共享参数文件的共享参数Revit API允许创建Schema类数据结构并将它们的实例附着到Revit模型中的任何Element。>Revit API中外部存储相关的类Sechema:数据结构SchemaBuilder:数据架构编辑器Field:字段FieldB原创 2022-11-09 16:30:18 · 1366 阅读 · 0 评论 -
【Revit二次开发】事务和事务处理(Transaction and FailureHandlingOptions)
任何一个对文档修改的操作都需要包含在-一个打开的属于该文档的事务中,否则就会有异常抛出。在任何时候,一个文档当前只能有一个打开的事务,但在一个事务中可以有一个或多个修改模型的操作。TransactionHandleCmd类功能为在同一位置绘制三堵墙,并在事务中使用自定义的故障处理选项,自定义的方式是把SameElementProcessor作为故障预处理器Set到故障处理选项中。事务是将一系列修改Revit模型的操作提交到文档的一种对象。任何一个对文档修改的操作都要包含在一个打开的属于该文档的食物中。原创 2022-11-03 18:00:00 · 969 阅读 · 0 评论 -
Revit报错:Attempting to create an ExternalEvent outside of a standard API execution
Attempting to create an ExternalEvent outside of a standard API execution原创 2022-10-20 14:14:42 · 388 阅读 · 0 评论 -
【Revit二次开发】新建墙类型
取一个墙类型,复制并重命名修改参数。原创 2022-10-17 21:00:00 · 919 阅读 · 0 评论 -
【Revit二次开发】族
族样板可以是基于主体的样板, 也可以是独立的样板。在当前文档中,如果加载了一些构建族,并创建了这些族的族实例,那么,对某个族实例进行EditFamily操作,将会进人到族编辑的文档中,可以对族进行修改。在当前文档中,如果加载了一些构建族,并创建了这些族的族实例,那么,对某个族实例进行EditFamily操作,将会进人到族编辑的文档中,可以对族进行修改。如果用面向对象语言中的概念来讲,族相当于类模板(Class Template),族类型相当于类(Class) ,族实例相当于对象(Object)。原创 2022-10-11 16:57:39 · 2721 阅读 · 2 评论 -
Revit二次开发——视图
它们可以是图形,如平面图;Autodesk. Revit.DB. View类是Revit文件中所有视图类型的基类。Autodesk. Revit.Ul.UIView类表示在Revit用户界面中的窗口视图。Autodesk.Revit.DB.View类是Revit文件中所有视图类型的基类;Autodesk.Revit.UI.UIView类表示在Revit用户界面中的窗口视图。也可以通过删除该视图所依赖的对象来间接删除该视图,例如,删除标高,相应的平面视图也会被删除,或者删除相机,相应的三维视图也会被删除。原创 2022-09-29 09:11:45 · 2402 阅读 · 0 评论 -
【Revit二次开发】单位转换
单位的表示,由DisplayUnitType枚举字段表示,变成了UnitTypeId静态类的只读属性。使用UnitTypeId代替DisplayUnitType。Revit内部基本单位是英尺,我们需要进行单位转换。Revit2021和2020相比。原创 2022-09-28 09:00:24 · 1016 阅读 · 0 评论 -
Revit二次开发——墙
下面分别列出了标高、轴网和模型线API构造方法,从构造方法中我们可以判断你所创建的图元时是否是否基于标高、面或者其他。随着对API中各个图元的构造方法的熟练掌握,创建图元将变得得心应手。另外,也可以实现在revit中绘制要开发的图元,查看图元创建依赖于哪些信息,来指导API构造器的选择。这是因为,在Revit中由一部分图元是基于标高(Level)的,其他的还有基于视图的二维图元(向文字、详图线和填充等等的注释元素),基于面的图元(如基于墙面的灯),基于宿主的图元(如门,窗和洞口等)。原创 2022-09-26 15:03:28 · 915 阅读 · 0 评论 -
【Revit二次开发】模型线
与之前的创建轴网和标高不同,没有特意去设置Revit参数。另外,在创建之前要首先创建一个成为草图平面的图元来承载模型线。因为在revit中普通的模型线图元是基于面的。综合我们已经创建的标高、轴网和模型线,在建立这些模型时,都需要一些几何信息,如点,线,面等。对于几何信息在Revit API中的相关类将会在最后一节中介绍,这些类的操作都支持中学的几何知识,主要涉及到三维正交坐标系,极坐标系,线段、弧的表达,点、线、面关系等等。原创 2022-09-07 13:33:35 · 1269 阅读 · 0 评论 -
Revit二次开发——一个简单的插件
流程:创建windows窗体应用-》配置Revit类库引用-》窗体设计-》代码编写-》编译运行。原创 2022-08-30 11:06:03 · 1314 阅读 · 0 评论 -
Revit二次开发——图元(元素)编辑
例如,如果在坐标点(O,0, 0)新创建了一个柱子,然后移动它到新的坐标点(10, 20, 30),这个柱子将会移动到(10, 20, 0),而不是(10, 20, 30)。移动元素集的方法也会出现这种情况。元素的几个重要的属性包括: Category(类别),Location(位 置),Levelld(标 高),Groupld(组),Id, UniqueId(唯一 Id)等等。API提供了移动元素的方法,可以把-一个或者几个元素从一个地方移动到另一个地方,从精确程度来说,和UI的移动命令是一样的。....原创 2022-08-29 09:57:02 · 1733 阅读 · 0 评论 -
Revit二次开发——轴网
通过Grid.Curve属性能够拿到轴网的曲线,如果Grid.IsCurved返回true,那么Curve将是一个弧形曲线Arc 对象,否则就是Line对象。多个轴网可以使用Document.NewGrids( )方法同时进行创建,该方法采用CurveArray。在Revit平台API中,有两个重载Document方法可用于创建新的轴网。●如果IsCurved属性返回true, 则Curve属性为Arc类对象。数使用代码3-39方法,可以创建曲线或直线轴网。注意:用于创建轴网的弧线或直线必须在水平面内。..原创 2022-08-27 16:58:11 · 976 阅读 · 0 评论 -
Revit二次开发——族的基础
族样板可以是基于主体的样板, 也可以是独立的样板。在当前文档中,如果加载了一些构建族,并创建了这些族的族实例,那么,对某个族实例进行EditFamily操作,将会进人到族编辑的文档中,可以对族进行修改。在当前文档中,如果加载了一些构建族,并创建了这些族的族实例,那么,对某个族实例进行EditFamily操作,将会进人到族编辑的文档中,可以对族进行修改。如果用面向对象语言中的概念来讲,族相当于类模板(Class Template),族类型相当于类(Class) ,族实例相当于对象(Object)。原创 2022-08-23 22:00:00 · 1880 阅读 · 0 评论 -
【Revit二次开发】标高
1)标高的高度( Elevation and ProjectElevation)通过Level. Elevation属性(对应的BuiltInParameter是LEVEL_ ELEV)可以获取标高的高度,它代表的是该标高相对于“基面(Elevation Base)”的高度,基面可以是“项目基点”,也可以是“测量点”,在Revit界面上,用户可以通过标高对应的标高的类型(LevelType)属性来确定基面。继承的Name属性用于检索Revit用户界面中的标高符号旁的用户可见的标高名称。原创 2022-08-23 21:15:00 · 1469 阅读 · 1 评论 -
Revit二次开发——选集
PickObject()、PickObjects( )和PickElementsByRectangle( )都有一一 个以ISelectionFilter作为参数的重载。它有两个可以重载的方法: AllowElement()用 于指定是否允许选择某个图元,AllowReference( )用于指定是否允许选择对某个几何体的参照。可指定的对象类型有图元和图元上的点、边或面。Revit API中定义了单选、多选、框选等方式的用户选集,用户可以十分方便的使用鼠标和键盘完成这三种方式的图元选择。原创 2022-08-19 15:58:56 · 920 阅读 · 0 评论 -
Revit二次开发——参数获取和修改
参数是记录Revit元素模型属性的对象。在Revit软件中,属性界面中的内容就是Revit参数的一种展现形式。参数作为Revit提供的一种编辑图元参数的通用机制,这里介绍这种机制是如何实现的,以及如何访问参数。原创 2022-08-19 11:26:49 · 4377 阅读 · 1 评论 -
revit二次开发——过滤器基础
过滤器Revit API提供一种机制,用于过滤和迭代Revit文件中的图元。这是用于获取一组相关图元的最好方式,如文件中所有的墙或门。过滤器也可以用来寻找出一-组很具体的图元,如某一特定尺寸的所有的梁。(1)新建一个FilteredElementCollector;(3)获取滤过的图元或图元ID (使用几种方法之一)。通过指定过滤器获取图元的基本步骤如下: .(2)对它运用一个或多个过滤器;.....................原创 2022-08-18 16:57:12 · 1639 阅读 · 0 评论 -
Revit二次开发——HelloRevitApp
语言为C#,项目模板应为.Net Framework 类库,框架平台以Revit API 中的说明为准,Revit 2021 的要求选择.Net Framework 4.8。编写addin清单文件保存到C:\ProgramData\Autodesk\Revit\Addins\2021,即可在revit打开插件。新建项目-》添加引用-》添加代码-》构建程序-》创建addin清单文件/或者通过AddinManager插件运行。RevitLookUp 官方的快速浏览Revit内部对象世界的Revit插件;....原创 2022-08-18 13:50:09 · 522 阅读 · 0 评论