/// 填充边界提取转化方法
        /// </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);
            }
        }


本文转载:CSDN博客