欢迎来到我的博客
Civil 3D开发与应用,欢迎加入QQ群:484124761
AutoCAD开发,欢迎加入QQ群:193522571

parcel segments from Autodesk.Civil.DatabaseServices.Parcel

au论坛中看到的帖子

留存备用!

        /// <summary>
        /// Method to get the 2D Polyline represented by the Parcel
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public static Polyline BaseCurve2d(this Parcel parcel)
        {
            //This will fail to be set if there are any 3d segments
            Polyline poly = parcel.BaseCurve as Polyline;            
            if (poly != null)
                return poly;

            //3d segments found, loop through and create 2d vertices for new polyline
            poly = new Polyline();
            object comparcel = parcel.AcadObject;
            object[]args = new object[1];
            args[0] = 0;
            object loop = (object)comparcel.GetType().InvokeMember("ParcelLoops", System.Reflection.BindingFlags.GetProperty, null, comparcel, args);
            
            int count = (int)loop.GetType().InvokeMember("Count", System.Reflection.BindingFlags.GetProperty, null, loop, null);
            for (int i = 0; i < count; i++)
            {
                args[0] = i;
                object segelement = (object)loop.GetType().InvokeMember("Item", System.Reflection.BindingFlags.GetProperty, null, loop, args);
                double x = (double)segelement.GetType().InvokeMember("StartX", System.Reflection.BindingFlags.GetProperty, null, segelement, null);
                double y = (double)segelement.GetType().InvokeMember("StartY", System.Reflection.BindingFlags.GetProperty, null, segelement, null);
                double bulge = 0;
                try
                {
                    bulge = (double)segelement.GetType().InvokeMember("Bulge", System.Reflection.BindingFlags.GetProperty, null, segelement, null);
                }
                catch { }
                poly.AddVertexAt(i, new Point2d(x, y), bulge, 0, 0);
            }
            poly.Closed = true;
            return poly;
        }

 

posted @ 2022-11-01 17:58  david96007  阅读(89)  评论(0)    收藏  举报