Revit二开生成板时曲线不是连续时问题解决

  //过滤出所有面积
            FilteredElementCollector areaCollector = new FilteredElementCollector(doc);
            var areaCollectorlist = areaCollector.OfCategory(BuiltInCategory.OST_Areas).ToList();

//收集正确方向的ModelLine
            List<Curve> continuousCurve = new List<Curve>(); 

//迭代每一个面积
            for (int r = 0; r < areaCollectorlist.Count; r++)
            {
                Area area = areaCollectorlist.ElementAt(r) as Area;
                area.GetBoundarySegments(options);
                //迭代当前area的BoundarySegments
                foreach (var segmentList in area.GetBoundarySegments(options))
                {
                    //迭代出ModelLine
                    foreach (var segment in segmentList)
                    {
                        ModelLine modelLine = doc.GetElement(segment.ElementId) as ModelLine;
                        var modellocationcurve = modelLine.Location as LocationCurve;
                        curvelist.Add(modellocationcurve.Curve);
                    }
                    //重新对ModelLine排序,组成闭合的线路
                    //ElementAt(i)表示被比较的对象,ElementAt(a)为比较对象
                    //逻辑是对比较对象的终点GetEndPoint(1)要等于比较对象的起点GetEndPoint(0)
                    continuousCurve.Add(curvelist.First());
                    for (int i = 0; i < curvelist.Count; i++)
                    {
                        for (int a = 0; a < curvelist.Count; a++)
                        {
                            if (curvelist.ElementAt(i).GetEndPoint(1).IsAlmostEqualTo(curvelist.ElementAt(a).GetEndPoint(0)))
                            {
                                continuousCurve.Add(curvelist.ElementAt(a));
                                i = a - 1;
                                break;
                            }
                        }
                        if (continuousCurve.Count == curvelist.Count)
                        {
                            break;
                        }
                    } 

                        for (int i = 0; i < continuousCurve.Count; i++)
                    {
                        profileCurve.Append(continuousCurve.ElementAt(i));
                    }

        }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值