自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 Revit开发之选项对话框扩展

Revit里有一个选项界面这个选项界面里默认包括了:常规、用户界面、图形、文件位置、等等其实这个界面是可以扩展的直接上代码:        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)       

2016-09-30 13:17:45 2780

原创 Revit开发之可停靠窗口应用

Revit 里提供了一个IDockablePaneProvider接口,通过这个接口,可以做一个和Revit里的属性对话框,相似的界面具体过程是:先创建一个Page,然后实现这个接口,然后创建一个DockablePaneId,再用这个Id 和Page来注册接口,然后在通过Id来调用这个可停靠窗口如果想要实现在Revit里选择一个构件,然后在可停靠窗口里显示一

2016-09-29 13:54:55 3275 3

原创 Revit开发之获取房间边界

获取房间的边界可以用Room里的public IListIListBoundarySegment>> GetBoundarySegments( SpatialElementBoundaryOptions options)这个方法返回了所有Room的边界信息。BoundarySegment 这里面包含了没一个边界的信息,它主要包括: Nam

2016-09-28 15:56:38 5713

原创 Revit开发之设置剖面框

在Revit里有一个剖面框功能这个功能在API里对应了SetSectionBox这个函数这个函数要传一个BoundingBoxXYZ 的参数下面是一个简单的例子,实现用户选择一个构件,然后用这个构建的BoundingBoxXYZ来创建一个剖面框,关键代码如下:            BoundingBoxXYZ box = elem.get_Bounding

2016-09-27 13:10:24 7485

原创 Revit开发之剪切InstanceVoidCutUtils

Revit API里有一个剪切的类InstanceVoidCutUtilspublic static void AddInstanceVoidCut( Document document, Element element, Element cuttingInstance上面这个函数就是创建剪切的函数element是被剪切的element,但是不是所有的eleme

2016-09-25 20:49:51 5791 1

原创 Revit开发之内建模型

重Revit2015开始,API里提供了一些内建模型的API,但是功能还比较简单Revit2017里提供了比较强大的一些API有兴趣的可以去研究下,它可以画一些曲面什么的这里介绍下简单版的。内建模型可以指定Category,也可以指定材料也可以将内建模型做成TYpe 然后用Type来创建等等。。下面是一个简单的例子创建了一个属于墙的内建模型

2016-09-22 20:29:07 7804

原创 Revit开发调用UI上的命令

在Revit API中我们可以在IExternalCommand里调用Revit界面上的命令,方法就用:PostCommand在Revit的界面上的每一个功能按钮,都是有一个Id的,其实都是可以用这个方法来调用的。比如墙:建筑    功能的ID为     "ID_OBJECTS_WALL"对应的RevitCommandId  就是RevitCommandId .Lo

2016-09-22 00:30:23 4278

原创 Revit开发之外部事件IExternalEventHandler

这个例子是在一个非模态对话框里,点一下按钮,然后在Revit里新建一面墙。直接上代码!        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)        {            MyWin myWin = new

2016-09-20 16:38:46 7841 2

原创 Revit开发在链接模型中使用ISelectionFilter

在链接模型中使用ISelectionFilter,关键代码:            UIDocument uidoc = commandData.Application.ActiveUIDocument;            Document doc = uidoc.Document;            IList refs = uidoc.Selection.PickObj

2016-09-19 17:06:31 1609

原创 Revit开发之框选过滤ISelectionFilter

在Revit中如果我们想选中所有的墙,从Revit现有点功能可能实现比较难。不过在Revit的API中实现起来却很方便,在Selection.PickObjects()这个方法中可以传入一个实现里ISelectionFilter 接口的类来实现这个功能。下面说一下关键代码:创建过滤器,这里是判断构建是否是墙,如果是墙就可以选中    public class

2016-09-18 12:54:39 2861

原创 Revit开发NewFamilyInstance技巧之创建梁

在RevitAPI中调用NewFamilyInstance是一件比较麻烦的事情,这个函数居然有十几种重载,下面我们尝试重这十几种中去找到用来创建梁的那个函数,我们首先可以 获取梁的Family,然后输出Family的FamilyPlacementType发现他是CurveDrivenStructural,根据这个媒介的英语字面意思,我猜测他创建的函数,应该要包括Curv

2016-09-13 21:03:00 5003 1

原创 Revit开发之改变双击事件

在Revit中如果你双击一个建筑柱,那你就会打开这个族文件,进入这个建筑柱的编辑环境,其实这只是Revit的默认设置,这个双击以后的效果是可以设置的,下面是一个双击载入族的实例,并不进入族的编辑环境的例子,就是说,运行下面的代码后,双击无法实现编辑族的效果,关键代码如下:            DoubleClickOptions doubleOpt

2016-09-13 15:55:23 1527

原创 Revit 开发之全局参数GlobalParameter

Revit2017中新增了一个全局参数:GlobalParameter这个怎么用呢,下面简单说个例子:比如说,墙有一个  底部偏移  参数,我可以新建一个全局参数,然后将它关联到所得墙的 底部偏移 参数,这样只要我改变这个参数值,所有墙的 底部偏移 都会改变全局参数还可以添加到 标注的标签里,也是可以驱动标注尺寸的下面是关联 墙的底部偏移到 全局参数的

2016-09-12 17:50:49 3050

原创 Revit开发之参数的修改实例

Revit中的参数修改要通过Parameter的Set方法来设置,但是Set()里面传的参数类型是和Parameter的类型有关系的,判断参数类型,可以通过 Parameter.StorageType这里列举了 Parameter值的5中类型,对于IsReadOnly的parameter 是不能修改的对None的Parameter 是不能用Set方法来设值的对Int

2016-09-11 13:56:11 4786

原创 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 1634

原创 Revit开发之共享参数

在Revit中有一个共享参数,他可以绑定到某一个Category中。API中创建共享参数的方法在Revit2015以后做了一些调整,本文是Revit2015及以后的方法。创建共享参数,必须要有一个共享参数的txt 文件,这个文件的路径是:string txtFile = app.SharedParametersFilename;这个路径是可以get和set的

2016-09-10 21:08:39 3707

原创 Revit开发之备份文件数量

Revit的文件修改保存以后,会产生很多的备份文件,在Revit另存存的时候,我们是可以设置备份文件的数量的。这个备份文件的数量,在API里也是可以设置的关键类:SaveAsOptions下面是关键代码:       private void SaveAsOP()        {            SaveAsOptions opt = new Sav

2016-09-10 13:45:48 2108

原创 Revit开发之选择链接模型中的构件

Revit中的链接模型在当前项目中是可以用Tab选择其中的构件,并且在属性栏显示信息的,通过API也是可以实现的,下面是关键代码:        private void LinkElement()        {            Reference r = uidoc.Selection.PickObject(ObjectType.LinkedElement)

2016-09-09 21:42:02 5314 1

原创 Revit开发之ElementParameterFilter

我们在Revit中,如果想要通过参数来过滤构件,可以用ElementParameterFilter,但是这个过滤器,是一个慢速过滤,所以最好配合快速过滤器一起用,以提高过滤效率。比如说,我想得到项目中所有标记大于3的窗,下面是关键代码:        private void m_ElementParameterFilter()        {     

2016-09-09 20:54:59 2174

原创 Revit开发之SelectionFilterElement

在Revit中,我们选中了一些构件后,可以设置一个选择集合,这样我们下次再想选中这些构件的时候,就不再需要一一去选了在API里我们也可以实现这个操作,下面是一个简单的例子:        private void SetSelectionSet()        {//程序运行前,现在Revit中选中一些构件,用来创建选择集

2016-09-09 19:47:15 1548

原创 Revit开发之IUpdater

在Revit API 中提供了一个模型动态更新的接口:IUpdater这个接口能监听Revit中特定的 改变,并立马做出一些反应,比如:Revit中,我想让用户没办法画墙,我就可以通过IUpdater来实现,大致过程为,我会先监听用户是不是画了墙,只要用户画了一个墙,我就执行一段程序来将用户画的墙删除,而用户做其他的操作,并不会触发这段程序下面是一个简单例子:

2016-09-08 13:14:30 2090

原创 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 1611

原创 Revit开发之空闲事件

Revit有一个空闲事件,只要你对Revit的操作一结束,它就会触发这个事件在UIApplication里添加,如uiapp.Idling += new System.EventHandler(myfun); 但是请不要在myfun 里弹窗或相似操作,因为弹窗后,你点击确定后,Revit又空闲了,就会再次 触发这个事件,就死循环了。。。下面是一个用空闲事件改编Rev

2016-09-06 13:13:05 3429

原创 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 3152

原创 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 4313

原创 Revit开发过滤之FamilyInstanceFilter

这个过滤器可以通过类型来过滤构件,比如一个Rvt里可能有很多种窗,我想知道其中为0406 x 0610mm的窗有多少个        private void FilterWindow()        {            //先找到要过滤窗的类型(FamilySymbol)            FilteredElementCollec

2016-09-04 12:03:56 1707

原创 Revit开发之Element操作

Revit中如果想要通过API 对Element进行移动,旋转,复制或者镜像操作可以通过ElementTransformUtils 这个类来实现常用方法如下:1.复制CopyElementCopyElements(Document, ICollection(Of(ElementId>)>>), XYZ)2.镜像MirrorElementMirro

2016-09-04 00:52:22 2649

原创 Revit开发之PreviewControl

PreviewControl 是一个WPF的自定义控件,这个控件可以用来在Revit界面外显示Document的某个视图它的构造函数需要传入 Document,和view 的Idpublic PreviewControl( Document document, ElementId viewId)它是从UserControl继承而来,所有可以当做WpF控件来使用

2016-09-03 13:59:01 3457

原创 Revit开发之AddInCommandBinding

在Revit界面上可点击的命名,这些命令通过API是可以重新绑定命令的,比如界面上的窗命令,点击一下进入创建窗的命令,我们也可以通过API让用户点击这个窗命令的时候,弹出一个对话框,而不是创建窗的命令,这起始就是重新绑定了一个命令到这个窗按钮上,还可以在运行这个窗命令之前运行一段程序。实现这些就要用神奇的AddInCommandBinding 类下面是一个简单的例子注意

2016-09-03 13:23:44 1521

原创 Revit开发之载入族的创建小技巧

在Revit中创建载入族的实例,要用到NewFamilyInstance 这个方法,但是这个 这个方法有很多的重载,有时候很难找到正确的那个重载.如果是我们自己建的族,我们还可以有一些选择方向,如果是别人的族,那就比较麻烦了。起始RevitAPI里虽然没有明确的方法可以让你一下找到正确的重载,但是在Family里提供了参考:Family.FamilyPlacementTyp

2016-09-03 11:00:59 6476 1

原创 Revit开发之读取几何信息

Revit中Element的几何信息可以通过get_Geometry(Options opt) 方法获取这个函数需要一个Options类的参数,这个参数可以同过他的构造函数 new一个,他有以下几个参数可以设置:ComputeReferencesDetermines whether or not references to geometric objects

2016-09-02 17:42:37 4954 1

原创 Revit开发选中元素

在Revit开发过程中,我们有时候要是一些构件高亮,就是处于选中状态,这时候应该怎么办呢?RevitAPI中提供了一个Selection 类,这个类可以用来能实现:1. 选择构件2. 获取当前选中构件3. 设置选中构件如果要让构件选中在2014里可以设置Selection .Elements这里的Elements返回的是一个 SelElementSet :

2016-09-02 09:47:54 3490

原创 Revit开发之元素过滤

Revit 二次开发API中提供了一个FilteredElementCollector 类,通过这个类我们可以方便的获取到我们想要获取的Element。这个类返回的是一个Element的集合,他有3种构造函数1.FilteredElementCollector(Document) 这个是返回传入Document中的所有Element2FilteredElementColle

2016-09-01 09:42:50 2343

AddinManager安装包

AddIn Manager 安装包2015-2017

2016-11-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除