家在湾里 发表于 2011-6-15 11:31:00

自己写的一个首尾相连线段或多段线并成一条多段线的程序


经测试没有大问题,只是画完多段线后原有线段不能完全删除,希望高手给予修改意见,如有BUG请回复!
public class mycommand
    {
      //本代码由书写,仅供学习用,引用请注明出处.............
      //联系本人请Q:584457142
      //将首尾相连的线段或多段线连成多段线
      public void my()
      {
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            try
            {
                using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
                {
                  BlockTable acBlkTbl;
                  acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
                  BlockTableRecord acBlkTblRec;
                  acBlkTblRec = acTrans.GetObject(acBlkTbl,
                                                    OpenMode.ForWrite) as BlockTableRecord;
                   PromptSelectionOptions pso=new PromptSelectionOptions();
                   PromptSelectionResult psr = ed.GetSelection(pso);
                  Polyline pl = new Polyline();
                  if (psr.Status == PromptStatus.OK)
                  {
                        SelectionSet ss = psr.Value;
                        int n = ss.Count;
                        ObjectIdCollection oc = new ObjectIdCollection() ;
                        for (int i = 0; i-1; i--)
                        {
                            final.Add(pl2.GetPoint3dAt(i));
                        }
                        
                  }
                }
                else if (pl1.StartPoint.Equals(equalpoint))
                {
                  if (pl2.EndPoint.Equals(equalpoint))
                  {
                        for (int i = 0; i = 0; i--)
                        {
                            final.Add(pl2.GetPoint3dAt(i));
                        }
                        for (int i = 1; i = 0; i--)
                        {
                            final.Add(pl1.GetPoint3dAt(i));
                        }
                        if (equalpoint.Equals(l.StartPoint))
                            final.Add(l.EndPoint);
                        else final.Add(l.StartPoint);
                  }
                  for (int i = 0; i = 0; i--)
                        {
                            final.Add(pl1.GetPoint3dAt(i));
                        }
                        if (equalpoint.Equals(l.StartPoint))
                            final.Add(l.EndPoint);
                        else final.Add(l.StartPoint);
                  }
                  for (int i = 0; i < final.Count; i++)
                  {
                        pl.AddVertexAt(i, new Point2d(final.X, final.Y), 0, 0, 0);
                  }
                  return pl;
                }
                #endregion
                else return null;
      }

yxr_MJTD 发表于 2011-6-15 11:33:00

应该有这种方法了吧。

家在湾里 发表于 2011-6-15 12:37:00

回复
别人肯定是写过了,你是API里面有这个方法吗?不妨写出方法名来一看

monkeylzx 发表于 2011-6-29 14:06:00

多谢分享,来看看

革天明 发表于 2012-3-8 09:50:00

谢谢楼主分享,很不错的程度,

shuizhizhiyin 发表于 2014-3-10 15:46:00

多谢楼主,正愁着如何实现呢。。
页: [1]
查看完整版本: 自己写的一个首尾相连线段或多段线并成一条多段线的程序