对象数据访问
叶雄进-橄榄山
中国Revit二次开发技术推动者和l领军者
展开
-
共享参数GUID
当我们定义完成一个共享参数后,可以把这个共享参数应用到多个对象上。用API或界面命令都是可以实现的。SDK中的CreateShared例子就是添加共享参数的。这个文章主要让大家了解共享参数的GUID的值的一些知识。创建完一个共享参数后,这个共享参数有一个GUID,可以通过定义文件找到这个GUID。下面是一个共享参数定义文件的内容原创 2011-04-14 14:33:00 · 3325 阅读 · 3 评论 -
如何用Revit API 在Revit的模型中获取轮廓族的截面信息
Revit提供了轮廓族,它相当于定义了一个界面,有多边形构成,也可以由弧形等组成的一个封闭的曲线。 在制作族的时候,可以对指定的轮廓族类型进行拉升或放样。也可以在做强饰条时候用到,还可以用户绘制板边。轮廓族提供了很便利的功能。在Revit项目中,如何读取这些轮廓族所定义的界面信息呢? 如果获得这些族的截面几何数据呢?一个方式是直接从这些用轮廓族构造成来的对象的几何信息中获得。比如一个墙饰条,直接用原创 2013-08-16 16:38:40 · 8300 阅读 · 1 评论 -
想获取项目浏览器中出现的所有标准族该用什么条件?
你直接用Family这个类名来获取就可以了。请看下面代码: public void GetAllFamilies() { Application app = this.Application; Document doc = this.ActiveUIDocument.Document; FilteredEleme原创 2013-07-26 14:09:00 · 3150 阅读 · 4 评论 -
如何用Revit API从无到有创建构建的类型对象?
绘制管道之前,必须有“管道类型”。默认模版是没有这一项的,点击REVIT命令,绘制管道, 软件会自动生成 族-管道-管道类型。 请问,不点命令,如何用程序自动生成管道类型? 答:我们可以用ElementType.Duplicagte 来创建一个已有类型的拷贝。当然这个方法对于你来讲是没有帮助的。所以在Revit2012 以及之前的版本,你所需要的无法实现。在Revit 2014里面提供了跨文件的复原创 2013-10-09 15:57:11 · 3768 阅读 · 0 评论 -
详谈用API读取Revit对象的参数值
问题:要取某个FamilySymbol的所有属性的值,现在已经把属性对象取到了(parameter类的一个实例),发现其中有AsDouble(),AsString(),AsInteger()等方法,通过什么方法能知道我应该调用哪一个函数呢答:Revit的读取参数值的方法都是Parameter类下面的函数中,包括如下这些: AsDouble () AsElementId() AsInteger()原创 2013-12-09 11:40:15 · 7655 阅读 · 4 评论 -
如何取得镜像图元的ElementID
问题:用函数ElementTransformUtils.MirrorElement(doc, wall.Id, plane)创建一个墙的镜像,我想对镜像出来的墙做一些处理,可惜这个函数没有返回值,得不到镜像墙的句柄。我现在的做法是做镜像之前取一遍墙的List,镜像之后在取一遍,看多出哪个,有没有更有效率的办法?答:不知道你是否想在同一个命令中来获知镜像后新生成的墙?如果想在同一个Revit二次开发原创 2013-12-16 11:25:48 · 4532 阅读 · 0 评论 -
编程读取Revit中材料的渲染属性
在Revit的材料属性里,有一个是渲染属性。读取软然属性看起来不是那么直接。下面的代码演示如何获取渲染属性中的具体属性。但是Revit还是尚未完全开放出所有属性可供访问,不如获取组织的表现文件名称。基本的思路是从Material.RenderAppearance, 返回Asset对象。然后从Asset的item属性获取其中的属性。请看下面详细VSTA代码演示: public void Mater原创 2013-03-14 17:24:59 · 5157 阅读 · 1 评论 -
如何用Revit API获取Conduit、FlexPipe的类型
问题:已经获得Conduit对象和FlexPipe对象,我该如何获取它的类型。我现在获得到了实例,实例中得不到类型参数,那么我现在想通过这个实例获得它对应的ConduitType、FlexPipeType,我该如何做?如果是FamilySymbol的话,里面有一个变量Symbol可以直接获得,但是这个想了好久没有办法做到。答:几乎所有实例对象都提供GetTypeId() 方法,这个方法会返回实例对原创 2014-03-26 13:02:40 · 3242 阅读 · 0 评论 -
捕获参数修改事件从而修改Revit其它模型
我们收到中南市政院(Central & Southern China Municipal)的张辛平的原创 2014-04-25 15:19:23 · 3250 阅读 · 0 评论 -
不打开文件,读取Rvt文件中的信息
叶老师,我想问一下能否基于revit API 2014,直接在开发时传递给程序要处理的文件名和路径,而不用再在revit软件中打开为当前活动视图,就直接获得文件中信息。这样可行不?原创 2014-06-16 21:00:01 · 14788 阅读 · 3 评论 -
如何编程访问和修改Revit项目的单位信息
接到如题,我想修改项目的单位信息,可是没找到对应的API。ProjectInfo里没有项目单位信息的参数原创 2014-09-22 13:50:03 · 4900 阅读 · 0 评论 -
编程如何读取Revit墙高
Revit中如果一面墙的顶部是附着一块楼板,这时候如何获取到墙的实际高度?原创 2014-11-10 12:10:20 · 4900 阅读 · 0 评论 -
编程如何获得通过草图创建的Revit构件关联的原始草图对象
问题:原创 2014-10-27 21:43:36 · 3597 阅读 · 1 评论 -
读取Revit构件的材质
最近在公司正在做一个关于Revit模型展示的工具,需要获取Revit模型信息,然后在自己的3d控件中显示。通过学习,已经可以获取模型的Face,得到Mesh,进而得到三角网格和顶点数组等信息了,所以模型的样子已经可以在自制的控件中显示了,但是现在一直卡在怎么获取模型的颜色或材质上。 之前用的是得到FamilyInstance的MaterialID,但得到的是个ID列表,里面是这个原创 2014-10-16 21:03:38 · 9448 阅读 · 2 评论 -
Revit编程如何获取内置参数对应的中文字符串?
Revit中参数都有一个组,我们通过Definition.ParameterGroup 将会返回一个BuiltInParameterGroup类型的枚举对象。如何获得这个对应的中文组的名字?答:通过LabelUtils.GetLabelFor(BuiltInParameterGroup) 既可以返回你要的结果。LabelUtils还可以返回内置参数的对应字符串,显示单位,参数类型等等内置类型的对应原创 2013-08-21 15:37:46 · 6132 阅读 · 1 评论 -
编程如何修改Revit族类型名称
Revit族类型名称的修改 直接通过FamilySymbol.Name 属性值请看下面的代码: Selection sel = this.ActiveUIDocument.Selection; Reference ref1 = sel.PickObject(ObjectType.Element,"please pick a family instance");原创 2013-06-03 10:56:50 · 12727 阅读 · 7 评论 -
Revit编程如何提取轴线信息
问题描述:在Revit里面如何提取当前视图中轴网的信息,例如名称,标高,坐标等等?Solution:这个问题在Revit编程时是非常典型的应用情况。找到目标对象,然后获取目标对象上的信息。找到目标对象需要使用Revit的过滤机制,最核心的也是比用的类就是FilteredElementCollector类,他提供了添加过滤条件的方法,并且提供方法来获取满足条件的对象集合。获取对象信息需要用Revit原创 2013-04-16 10:47:40 · 7875 阅读 · 5 评论 -
Revit外运行的读取BIM数据的解决方案? Not Yet
<br /> <br />问:<br />目前,我看到的revit api开发基本都是用于对revit 软件本身的完善与开发。我想问的是,可否用revit的api,通过C#等建立一个独立的项目,读取BIM的属性信息。而不是必须依赖于revit软件本身。<br />现在有没有这样的解决方案啊。希望老师指点。<br /> <br />答:<br />你的理解是正确的。现在尚没有提供这个库来读取BIM信息。在AutoCAD有Realdwg, Inventor有Carpenter读取模型。Revit尚没有这样的库。原创 2011-05-06 10:13:00 · 2999 阅读 · 2 评论 -
工作集的问题
问题:关于之前提到 REVIT 2012 版本可以针对工作集找出相关资料但我试过使用 "RevitLookup" 并未发现相关的资料不知道这版本是否仍未对此部份加入引用呢?另外HELP中,虽然可以查到 "Workset Class" 类别资料但是否有案例可以参考呢?答:2012原创 2011-07-14 11:03:25 · 3503 阅读 · 0 评论 -
Revit如何扩展存储客户自己的数据
在2012之前的版本,二次开发者可以通过Shared Parameter来存储自己的数据。但是有许多不便之处。比如你只希望对某几个对象添加扩展数据,但是shared parameter 确向同一个类别的对象都添加了新的参数。在2012的api中开放了扩展存储的API,大家可以只对原创 2011-07-14 11:09:52 · 4236 阅读 · 0 评论 -
创建新的管道类型,并且修改管道的弯头类型和T形连接弯头类型
这是一个典型的增加新类型(Duplicate()来实现),并且修改类型的参数值。这里一个特殊的情况是这里的两个参数值都是Revit的接头类型对象。实际上保存在这两个参数中的是ElementId类型的值,指向实际的两种接头类型。在参数中如何修改参数存储类型是对象Id的值呢? 请原创 2011-08-11 12:46:42 · 4290 阅读 · 3 评论 -
如何编程读取和修改墙上的各分层信息
转载请复制以下信息:原文链接: http://blog.csdn.net/joexiongjin/article/details/7775576作者: 叶雄进 , Autodesk ADN墙的分层信息存储在墙类型里面。在墙类型面板中,点击“结构”参数后面的按钮可以进入到分层编辑界面。很多时候需要读取Revit墙的分层信息,或者修改墙的分层的厚度,材料等。可以通过编原创 2012-07-23 18:23:50 · 3682 阅读 · 0 评论 -
了解Revit扩展存储数据(Extensible Storage)
转载请复制以下信息:原文链接: http://blog.csdn.net/joexiongjin/article/details/7776552作者: 叶雄进 , Autodesk ADN从Revit2012开始引入了扩展存储这个新技术,就是可以把一些数据存储到Revit中的某一个对象上。扩展数据只能通过编程的方式添加到对象上,通过Revit软件的界面无法添加。这是编程的原创 2012-07-23 18:45:42 · 7645 阅读 · 0 评论 -
编程创建自定义线样式
转载请复制以下信息: 原文链接: http://blog.csdn.net/joexiongjin/article/details/7846738作者: 叶雄进 , Autodesk ADN2012新增了样式创建功能,包括创建线型样式以及填充样式。这里重点说说线型样式的创建。线型在Revit里有LinePatternElement类来表示。原创 2012-08-09 11:55:18 · 4452 阅读 · 1 评论 -
如何编程访问(读,写)Revit项目信息
转载请复制以下信息:原文链接:http://blog.csdn.net/joexiongjin/article/details/8000994作者: 叶雄进 , Autodesk ADN我们经常需要访问Revit的模型信息,本文介绍些如何获取项目信息以及读写项目名称或项目编号等信息。Revit的项目由ProjectInfo这个类来表示,在一个文件中,只有一个这个类原创 2012-09-20 17:12:29 · 6343 阅读 · 2 评论 -
编程设置房间以及墙的上部楼层
转载请复制以下信息:原文链接: http://blog.csdn.net/joexiongjin/article/details/8000754作者: 叶雄进 , Autodesk ADN文章背景:在创建墙的时候,可能用户没有设置墙的上部楼层。是否可以通过编程的方式一次性的全部设置墙的上部楼层?同样的是否可以编程设置房间的上部楼层?这是可以通过编程实现原创 2012-09-20 16:54:13 · 22687 阅读 · 0 评论 -
如何读写共享参数的值?
前面发了一篇博客谈到如何创建自己的共享参数(扩展参数可能更容易理解下)。编程创建共享参数(完整代码演示)一个朋友追问如何修改扩展参数的值?这里统一说下Revit里面的参数值的访问。无论参数是共享参数还是Revit出厂自带参数的读取和修改都是相同的,使用Parameter类下面的函数。读取参数信息用下面这几个函数,根据函数名称一目了然的知道每一个函数的功用。P原创 2012-10-29 14:01:11 · 7082 阅读 · 6 评论 -
编程创建共享参数(完整代码演示)
转载请复制以下信息:原文链接: http://blog.csdn.net/joexiongjin/article/details/8098942作者: 叶雄进 , Autodesk ADNRevit提供了命令用户可以用来为对象添加共享参数,共享参数这个直译名字比较不容易理解。我觉得翻译成扩展参数比较好懂。就是你可以为某一类或几类对象创建更多的参数。这个参数可以显示原创 2012-10-22 15:30:06 · 7379 阅读 · 3 评论 -
如何获取墙,圆形 管道或圆心风管的中心线的引用Reference
先说说引用Reference的一点常识和作用:Revit大量使用引用(Reference)指向一个对象,来指向对象之间的关系,这是Revit能智能更新模型的关键技术。比如对于一个尺寸标注对象Dimension,它保留了对所指向的那些面或对象的引用Reference,当这些Reference指向的对象发生修改时,尺寸标注随着更新。 Revit里面的Element,Face,Edge,端点具有原创 2012-10-31 17:33:14 · 6130 阅读 · 1 评论 -
如何编程创建Revit里面的视图过滤器对象
通过Revit界面“视图或View”命令选项卡下的“过滤器或Filters”, 用户可以创建自己的过滤器对象。这样你可以为你的过滤器结果设置不同的显示样式和特征。通过Revit 的API同样可以实现编程创建视图过滤器。下面这些代码演示了如何创建一个柱子类型的视图过滤器(给定柱子的名称)。从这里可以了解创建的过程和需要调用的函数。注意: 这里给类型名称的内置参数是:ALL_MODEL_TYPE_NA原创 2013-01-04 12:35:51 · 8656 阅读 · 1 评论 -
在revit中有类似autocad的 xdata 空间可以增加额外资料的地方吗?
在Revit2011和之前的版本中,可以通过Shared Parameter来保存客户额外的数据。请看Revit的帮助。SDK中的CreateShared例子演示了其用法。但是他有一个限制,就是只能想一个类别的对象添加数据,比如像墙添加一个共享参数,那么所有的墙都会有你添加的共享参数。不管你是否需要。到了REvit2012, 有一个非常强劲的功能就是Extensible Storage功能。使用这个API可以只对你需要的对象添加数据。比如只对模型中的几个墙添加数据。具体请参考Revit帮助文档。 SDK中E原创 2011-05-03 13:44:00 · 2227 阅读 · 0 评论