C#CAD二次开发图案填充对象边界提取

来源:互联网 发布:淘宝客服售前做什么 编辑:程序博客网 时间:2024/04/30 13:38
        /// 填充边界提取转化方法        /// </summary>        /// <param name="hat">需要转化的Hatch对象</param>        /// <param name="trans">声明的事务对象</param>        /// <param name="btr">数据库中的模型空间</param>        /// <param name="numSample">提取单位曲线中样本点的数目</param>        public static void DrawBorder(Hatch hat, Transaction trans, BlockTableRecord btr, int numSample)        {            //取得边界数            int loopNum = hat.NumberOfLoops;            Point2dCollection col_point2d = new Point2dCollection();            BulgeVertexCollection col_ver = new BulgeVertexCollection();            Curve2dCollection col_cur2d = new Curve2dCollection();            for (int i = 0; i < loopNum; i++)            {                col_point2d.Clear();                HatchLoop hatLoop = null;                try                {                    hatLoop = hat.GetLoopAt(i);                }                catch (System.Exception)                {                    continue;                }                //如果HatchLoop为PolyLine                if (hatLoop.IsPolyline)                {                    col_ver = hatLoop.Polyline;                    foreach (BulgeVertex vertex in col_ver)                    {                        col_point2d.Add(vertex.Vertex);                    }                }                //如果HatchLoop为Curves                else                {                    col_cur2d = hatLoop.Curves;                    foreach (Curve2d item in col_cur2d)                    {                        Point2d[] M_point2d = item.GetSamplePoints(numSample);                        foreach (Point2d point in M_point2d)                        {                            if (!col_point2d.Contains(point))                                col_point2d.Add(point);                        }                    }                }                //根据获得的Point2d点集创建闭合Polyline                Polyline pl = new Polyline();                pl.Closed = true;                pl.Color = hat.Color;                PolylineTools.CreatePolyline(pl, col_point2d);                btr.AppendEntity(pl);                trans.AddNewlyCreatedDBObject(pl, true);            }        }

0 0
原创粉丝点击