Revit二次开发案例一(第1讲)

这期带来Revit二次开发小案例讲解,帮助提高开发水平。介绍了族实例重要方法,如获取宿主、旋转等。详细讲解族实例创建方法,结合案例,利用公制常规模型创建底座板族,通过二次开发创建族实例并修改参数,还提及步骤和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这期起,将为大家带来二次开发的小案例讲解,通过借助Revit建模与二次开发,帮助大家快速提高开发水平,快快参加吧!!!

族实例是通过族类型创建的,而创建族实例是Revit二次开发尤其重要的,因此小伙伴们要熟练掌握族实例的创建方法。

族实例重要的方法

1 FamilyInstance.Host

此方法获取族实例的宿主;
2 FamilyInstance.rotate()

此方法来旋转族实例;
3 FamilyInstance.FilpFacing()
此方法可以翻转门窗的朝向;

4 FamilyInstance.Hand()
此方法翻转开门方向。

5 FamilyInstance.GetSubComponentIds()
Component.SuperComponent()
分别获取构件的子构件与父构件。

族实例的创建方法

创建族实例的方法名为CreateFamilyInstance,存在于Autodesk.Revit.Creation.Document以及他们的父类中,他们的对象可以从Autodesk.Revit.DB.Document.Create获得。

案例讲解

本文结合之前所学的知识,首先利用公制常规模型做一个名称为底座板的族,并添加实例参数角度(这里需要注意添加实例参数还是类型参数需要视实际情况而定);族模型如下:
底座板族
底座板族
添加的族参数
添加的族参数
然后利用二次开发,创建族实例,并获取族参数,修改其角度参数。(这里需要注意程序运行前需要将底座板族载入到项目)
程序关键代码及注释如下:


UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;

            FilteredElementCollector collector = new FilteredElementCollector(doc);//建立过滤器
            collector.OfClass(typeof(FamilySymbol));//过滤族类型
            FamilySymbol familySymbol = null;

      

            foreach (var ele in collector)
            {

                if (ele.Name == "底座板")//得到名称为底座板的族类型
                {
                    familySymbol = ele as FamilySymbol;
                    break;
                }
            }
  
            FamilySymbol fs1 = familySymbol;
            XYZ xYZ1 = new XYZ(0, 0, 0);//设置创建的族的位置
            FamilyInstance familyInstance = null;
            using (Transaction tran1 = new Transaction(doc))//创建事务(创建底座板族)
            {
                tran1.Start("kaishi");
                familyInstance = doc.Create.NewFamilyInstance(xYZ1, fs1, StructuralType.NonStructural);
                tran1.Commit();
            }
            IList<Parameter> list = familyInstance.GetParameters("角度");
            //找到角度参数  使用名称来找到参数,因为revit2016为了避免得到重复的名字,
            //只能用GetParameters得到一个集合,如果你只用唯一的名字,那只用取list[0]就可以了
            Parameter parameter = list[0];
            using (Transaction tran2 = new Transaction(doc))
            {
                tran2.Start("kaishi");
                parameter.Set(20 * Math.PI / 180);//设置参数值为20度(这里需要注意设置的值为弧度,需要换算)
                tran2.Commit();               //1度=Math.PI/180弧度
            }

运行结果如下:
在这里插入图片描述
左为改变参数前的底座板 右为改变参数后的底座板

整个步骤为:

  1. 利用公制常规模型创建名称为底座板的族,并添加主要参数,如角度参数设为40度。
  2. 通过RevitAPI二次开发,找到类型为底座板的族,调用创建族实例的方法,创建族实例。
  3. 获取族实例的角度参数,修改其角度参数。
  4. 运行Revit,首先载入底座板族,运行程序。

注意事项:

  1. 在创建族模型时,添加的角度参数为实例参数,而不是类型参数,这样可以创建族实例后在修改实例的角度参数。如果是类型参数需要先获取类型参数进行修改,再创建族实例。
  2. 在二次开发中,长度单位为英尺,角度用弧度代替,需要进行换算。
  3. 运行程序前,需要先将族模型载入到项目中。

下期更精彩:

下一期将对程序进行升级,利用Revit二次开发自动载入族模型,并激活,还会介绍其他创建族实例的方法。

欢迎关注微信公众号,学到更多BIM知识
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值