Revit二开--管线标注 附源码

Revit二开–管线标注

前几天有朋友问我 如何用程序来实现标注管道长度,他的思路是获取管道的locationcurve 然后获取两个端点的引用然后进行标注,但是管道的locationcurve 没有端点引用,所以用这种方法无法实现管道的长度标注。今天恰好有点时间,就把管道长度标注的方法放出来供大家参考。 代码已经集成到唐僧解瓦项目 代码实现环境Revit2019 vs2017)
唐僧解瓦 项目 github地址:https://github.com/binbinstrong/tangsengjiewa

	
	[Transaction(TransactionMode.Manual)]
    [Journaling(JournalingMode.UsingCommandData)]
    [Regeneration(RegenerationOption.Manual)]
    public class Cmd_DimPipe:IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var uidoc = commandData.Application.ActiveUIDocument;
            var doc = uidoc.Document;
            var sel = uidoc.Selection;
            var acview = uidoc.ActiveView;

            var pipe = sel.PickObject(ObjectType.Element, doc.GetSelectionFilter(m => m is Pipe)).GetElement(doc) as Pipe;

            var geoele = pipe.get_Geometry(new Options()
                {DetailLevel = ViewDetailLevel.Fine, ComputeReferences = true});

            var line = pipe.LocationLine();

            var refs = GetEndPlanRefs(geoele);

            doc.Invoke(m =>
            {
                doc.Create.NewDimension(acview, line, refs);

            },"创建管道长度标注");

            return Result.Succeeded;
        }

        private ReferenceArray  GetEndPlanRefs(GeometryElement geoele)
        {
            var result = new ReferenceArray();

            var geometrys = geoele.Cast<GeometryObject>().ToList();

            foreach (GeometryObject geo in geometrys)
            {
                if (geo is Solid so)
                {
                    var faces = so.Faces;
                    foreach (var face in faces)
                    {
                        if (face is PlanarFace pface)
                        {
                            result.Append(pface.Reference);
                        }
                    }
                }
                else
                    continue;
            }

            return result;
        }
    }
    
更多解密尽在唐僧课堂!

唐僧课堂BIM开发

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值