- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 Revit开发之选项对话框扩展
Revit里有一个选项界面这个选项界面里默认包括了:常规、用户界面、图形、文件位置、等等其实这个界面是可以扩展的直接上代码: public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
2016-09-30 13:17:45 2810
原创 Revit开发之可停靠窗口应用
Revit 里提供了一个IDockablePaneProvider接口,通过这个接口,可以做一个和Revit里的属性对话框,相似的界面具体过程是:先创建一个Page,然后实现这个接口,然后创建一个DockablePaneId,再用这个Id 和Page来注册接口,然后在通过Id来调用这个可停靠窗口如果想要实现在Revit里选择一个构件,然后在可停靠窗口里显示一
2016-09-29 13:54:55 3338 3
原创 Revit开发之获取房间边界
获取房间的边界可以用Room里的public IListIListBoundarySegment>> GetBoundarySegments( SpatialElementBoundaryOptions options)这个方法返回了所有Room的边界信息。BoundarySegment 这里面包含了没一个边界的信息,它主要包括: Nam
2016-09-28 15:56:38 5803
原创 Revit开发之设置剖面框
在Revit里有一个剖面框功能这个功能在API里对应了SetSectionBox这个函数这个函数要传一个BoundingBoxXYZ 的参数下面是一个简单的例子,实现用户选择一个构件,然后用这个构建的BoundingBoxXYZ来创建一个剖面框,关键代码如下: BoundingBoxXYZ box = elem.get_Bounding
2016-09-27 13:10:24 7558
原创 Revit开发之剪切InstanceVoidCutUtils
Revit API里有一个剪切的类InstanceVoidCutUtilspublic static void AddInstanceVoidCut( Document document, Element element, Element cuttingInstance上面这个函数就是创建剪切的函数element是被剪切的element,但是不是所有的eleme
2016-09-25 20:49:51 5854 1
原创 Revit开发之内建模型
重Revit2015开始,API里提供了一些内建模型的API,但是功能还比较简单Revit2017里提供了比较强大的一些API有兴趣的可以去研究下,它可以画一些曲面什么的这里介绍下简单版的。内建模型可以指定Category,也可以指定材料也可以将内建模型做成TYpe 然后用Type来创建等等。。下面是一个简单的例子创建了一个属于墙的内建模型
2016-09-22 20:29:07 7959
原创 Revit开发调用UI上的命令
在Revit API中我们可以在IExternalCommand里调用Revit界面上的命令,方法就用:PostCommand在Revit的界面上的每一个功能按钮,都是有一个Id的,其实都是可以用这个方法来调用的。比如墙:建筑 功能的ID为 "ID_OBJECTS_WALL"对应的RevitCommandId 就是RevitCommandId .Lo
2016-09-22 00:30:23 4337
原创 Revit开发之外部事件IExternalEventHandler
这个例子是在一个非模态对话框里,点一下按钮,然后在Revit里新建一面墙。直接上代码! public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { MyWin myWin = new
2016-09-20 16:38:46 7939 2
原创 Revit开发在链接模型中使用ISelectionFilter
在链接模型中使用ISelectionFilter,关键代码: UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; IList refs = uidoc.Selection.PickObj
2016-09-19 17:06:31 1635
原创 Revit开发之框选过滤ISelectionFilter
在Revit中如果我们想选中所有的墙,从Revit现有点功能可能实现比较难。不过在Revit的API中实现起来却很方便,在Selection.PickObjects()这个方法中可以传入一个实现里ISelectionFilter 接口的类来实现这个功能。下面说一下关键代码:创建过滤器,这里是判断构建是否是墙,如果是墙就可以选中 public class
2016-09-18 12:54:39 2925
原创 Revit开发NewFamilyInstance技巧之创建梁
在RevitAPI中调用NewFamilyInstance是一件比较麻烦的事情,这个函数居然有十几种重载,下面我们尝试重这十几种中去找到用来创建梁的那个函数,我们首先可以 获取梁的Family,然后输出Family的FamilyPlacementType发现他是CurveDrivenStructural,根据这个媒介的英语字面意思,我猜测他创建的函数,应该要包括Curv
2016-09-13 21:03:00 5053 1
原创 Revit开发之改变双击事件
在Revit中如果你双击一个建筑柱,那你就会打开这个族文件,进入这个建筑柱的编辑环境,其实这只是Revit的默认设置,这个双击以后的效果是可以设置的,下面是一个双击载入族的实例,并不进入族的编辑环境的例子,就是说,运行下面的代码后,双击无法实现编辑族的效果,关键代码如下: DoubleClickOptions doubleOpt
2016-09-13 15:55:23 1565
原创 Revit 开发之全局参数GlobalParameter
Revit2017中新增了一个全局参数:GlobalParameter这个怎么用呢,下面简单说个例子:比如说,墙有一个 底部偏移 参数,我可以新建一个全局参数,然后将它关联到所得墙的 底部偏移 参数,这样只要我改变这个参数值,所有墙的 底部偏移 都会改变全局参数还可以添加到 标注的标签里,也是可以驱动标注尺寸的下面是关联 墙的底部偏移到 全局参数的
2016-09-12 17:50:49 3177
原创 Revit开发之参数的修改实例
Revit中的参数修改要通过Parameter的Set方法来设置,但是Set()里面传的参数类型是和Parameter的类型有关系的,判断参数类型,可以通过 Parameter.StorageType这里列举了 Parameter值的5中类型,对于IsReadOnly的parameter 是不能修改的对None的Parameter 是不能用Set方法来设值的对Int
2016-09-11 13:56:11 4846
原创 Revit开发之带UI的HelloWord
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;/using Autodesk.Revit.UI;using Autodesk.Revit.DB;using Autodesk.Revit.A
2016-09-11 10:25:15 1671
原创 Revit开发之共享参数
在Revit中有一个共享参数,他可以绑定到某一个Category中。API中创建共享参数的方法在Revit2015以后做了一些调整,本文是Revit2015及以后的方法。创建共享参数,必须要有一个共享参数的txt 文件,这个文件的路径是:string txtFile = app.SharedParametersFilename;这个路径是可以get和set的
2016-09-10 21:08:39 3777
原创 Revit开发之备份文件数量
Revit的文件修改保存以后,会产生很多的备份文件,在Revit另存存的时候,我们是可以设置备份文件的数量的。这个备份文件的数量,在API里也是可以设置的关键类:SaveAsOptions下面是关键代码: private void SaveAsOP() { SaveAsOptions opt = new Sav
2016-09-10 13:45:48 2145
原创 Revit开发之选择链接模型中的构件
Revit中的链接模型在当前项目中是可以用Tab选择其中的构件,并且在属性栏显示信息的,通过API也是可以实现的,下面是关键代码: private void LinkElement() { Reference r = uidoc.Selection.PickObject(ObjectType.LinkedElement)
2016-09-09 21:42:02 5386 1
原创 Revit开发之ElementParameterFilter
我们在Revit中,如果想要通过参数来过滤构件,可以用ElementParameterFilter,但是这个过滤器,是一个慢速过滤,所以最好配合快速过滤器一起用,以提高过滤效率。比如说,我想得到项目中所有标记大于3的窗,下面是关键代码: private void m_ElementParameterFilter() {
2016-09-09 20:54:59 2228
原创 Revit开发之SelectionFilterElement
在Revit中,我们选中了一些构件后,可以设置一个选择集合,这样我们下次再想选中这些构件的时候,就不再需要一一去选了在API里我们也可以实现这个操作,下面是一个简单的例子: private void SetSelectionSet() {//程序运行前,现在Revit中选中一些构件,用来创建选择集
2016-09-09 19:47:15 1580
原创 Revit开发之IUpdater
在Revit API 中提供了一个模型动态更新的接口:IUpdater这个接口能监听Revit中特定的 改变,并立马做出一些反应,比如:Revit中,我想让用户没办法画墙,我就可以通过IUpdater来实现,大致过程为,我会先监听用户是不是画了墙,只要用户画了一个墙,我就执行一段程序来将用户画的墙删除,而用户做其他的操作,并不会触发这段程序下面是一个简单例子:
2016-09-08 13:14:30 2199
原创 Revit开发之参数详解
在Revit里所有的参数值可以分为5中类型:NoneNone represents an invalid storage type. This value should not be used.IntegerThe internal data is stored in the form of a signed 32 bit integer.Dou
2016-09-07 12:33:43 1649
原创 Revit开发之空闲事件
Revit有一个空闲事件,只要你对Revit的操作一结束,它就会触发这个事件在UIApplication里添加,如uiapp.Idling += new System.EventHandler(myfun); 但是请不要在myfun 里弹窗或相似操作,因为弹窗后,你点击确定后,Revit又空闲了,就会再次 触发这个事件,就死循环了。。。下面是一个用空闲事件改编Rev
2016-09-06 13:13:05 3504
原创 Revit开发之Add-in Manager
Revit的Add-in Manager在Revit的安装包里就有,解压安装包后,找到这个路径Utilities\SDK 解压后会有一个Add-In Managerr文件夹如果是 2015及以后的版本,这里面包括了 AddInManager.dllAutodesk.AddInManager.addinAutodesk.AddInManager-Automatic.ad
2016-09-06 11:11:39 3221
原创 Revit开发之管道创建
在Revit中管道创建要使用Pipe.Create()方法,而这个方法有3种重载Create(Document, ElementId, ElementId, Connector, Connector)Create(Document, ElementId, ElementId, Connector, XYZ)Create(Document, ElementId, ElementI
2016-09-04 19:44:48 4384
原创 Revit开发过滤之FamilyInstanceFilter
这个过滤器可以通过类型来过滤构件,比如一个Rvt里可能有很多种窗,我想知道其中为0406 x 0610mm的窗有多少个 private void FilterWindow() { //先找到要过滤窗的类型(FamilySymbol) FilteredElementCollec
2016-09-04 12:03:56 1753
原创 Revit开发之Element操作
Revit中如果想要通过API 对Element进行移动,旋转,复制或者镜像操作可以通过ElementTransformUtils 这个类来实现常用方法如下:1.复制CopyElementCopyElements(Document, ICollection(Of(ElementId>)>>), XYZ)2.镜像MirrorElementMirro
2016-09-04 00:52:22 2706
原创 Revit开发之PreviewControl
PreviewControl 是一个WPF的自定义控件,这个控件可以用来在Revit界面外显示Document的某个视图它的构造函数需要传入 Document,和view 的Idpublic PreviewControl( Document document, ElementId viewId)它是从UserControl继承而来,所有可以当做WpF控件来使用
2016-09-03 13:59:01 3524
原创 Revit开发之AddInCommandBinding
在Revit界面上可点击的命名,这些命令通过API是可以重新绑定命令的,比如界面上的窗命令,点击一下进入创建窗的命令,我们也可以通过API让用户点击这个窗命令的时候,弹出一个对话框,而不是创建窗的命令,这起始就是重新绑定了一个命令到这个窗按钮上,还可以在运行这个窗命令之前运行一段程序。实现这些就要用神奇的AddInCommandBinding 类下面是一个简单的例子注意
2016-09-03 13:23:44 1564
原创 Revit开发之载入族的创建小技巧
在Revit中创建载入族的实例,要用到NewFamilyInstance 这个方法,但是这个 这个方法有很多的重载,有时候很难找到正确的那个重载.如果是我们自己建的族,我们还可以有一些选择方向,如果是别人的族,那就比较麻烦了。起始RevitAPI里虽然没有明确的方法可以让你一下找到正确的重载,但是在Family里提供了参考:Family.FamilyPlacementTyp
2016-09-03 11:00:59 6532 1
原创 Revit开发之读取几何信息
Revit中Element的几何信息可以通过get_Geometry(Options opt) 方法获取这个函数需要一个Options类的参数,这个参数可以同过他的构造函数 new一个,他有以下几个参数可以设置:ComputeReferencesDetermines whether or not references to geometric objects
2016-09-02 17:42:37 5090 1
原创 Revit开发选中元素
在Revit开发过程中,我们有时候要是一些构件高亮,就是处于选中状态,这时候应该怎么办呢?RevitAPI中提供了一个Selection 类,这个类可以用来能实现:1. 选择构件2. 获取当前选中构件3. 设置选中构件如果要让构件选中在2014里可以设置Selection .Elements这里的Elements返回的是一个 SelElementSet :
2016-09-02 09:47:54 3560
原创 Revit开发之元素过滤
Revit 二次开发API中提供了一个FilteredElementCollector 类,通过这个类我们可以方便的获取到我们想要获取的Element。这个类返回的是一个Element的集合,他有3种构造函数1.FilteredElementCollector(Document) 这个是返回传入Document中的所有Element2FilteredElementColle
2016-09-01 09:42:50 2363
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人