Revit二次开发——创建场地建筑地坪

本文介绍了如何在Revit中通过BuildingPad.Create方法,利用闭合模型线和特定类型ID创建建筑地坪,以及如何在场地平面上挖洞,通过设置参数实现高度偏移。
摘要由CSDN通过智能技术生成

Revit在进行场地建模时,需要在场地平面上挖洞,则需要再场地平面上创建建筑地坪,根据查询API,得到BuildingPad.Create方法来进行生成。入参为类型ID和轮廓线。

public static BuildingPad Create(
	Document document,
	ElementId buildingPadTypeId,
	ElementId levelId,
	IList<CurveLoop> curveLoops
)

轮廓线我用的是闭合的模型线,直接框选即可,建筑地坪类型ID的用过滤器来过滤。

FilteredElementCollector levels = new FilteredElementCollector(doc);//创建收集器
                ViewPlan viewPlan = levels.OfClass(typeof(ViewPlan)).FirstOrDefault<Element>(m => m.Name == "场地") as ViewPlan;//过滤得到标高1
                if (null == viewPlan)
                {
                    viewPlan = levels.OfClass(typeof(ViewPlan)).FirstOrDefault<Element>(m => m.Name == "标高 1") as ViewPlan;//过滤得到标高1
                }
                Level level = viewPlan.GenLevel;

                Transaction transaction = new Transaction(doc, "1");
                transaction.Start();
                var eles = uidoc.Selection.PickObjects(ObjectType.Element, "请框选构件!");
                List<CurveLoop> curves = new List<CurveLoop>();
                CurveLoop curveLoop = new CurveLoop();
                List<Curve> curs = new List<Curve>();
                foreach (var tab in eles)
                {
                    Element ele = doc.GetElement(tab);
                    if (ele != null && ele is ModelCurve)
                    {
                        ModelCurve modelCurve = ele as ModelCurve;
                        Curve curve = modelCurve.GeometryCurve;
                        curs.Add(curve);
                    }
                }
                curveLoop = CurveLoop.Create(curs);

                curves.Add(curveLoop);
                List<XYZ> newList = new List<XYZ>();
                var famType = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_BuildingPad).OfClass(typeof(BuildingPadType)).FirstOrDefault(x => x.Name == "基坑地面");


                var element = BuildingPad.Create(doc, famType.Id, level.Id, curves);
                var para = element.LookupParameter("自标高的高度偏移");
                if (para != null)
                {
                    para.Set(-5000 / 304.8);
                }
                transaction.Commit();

最后运行代码,即可创建场地建筑地坪,在场地平面上挖坑,下面是效果图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值