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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?