明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2673|回复: 3

请问如何删除一条多段线和块图重合的部分?

[复制链接]
发表于 2011-9-13 17:24:55 | 显示全部楼层 |阅读模式
DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
          Database db = HostApplicationServices.WorkingDatabase;
          Entity acadEntity = null; Entity poleped = null;
          using (Transaction trans = db.TransactionManager.StartTransaction())
          {
              acadEntity = (Entity)trans.GetObject(strandobjectid, OpenMode.ForWrite);
              poleped = (Entity)trans.GetObject(PoleObjId, OpenMode.ForWrite);
              // if (poleped == null)
              //     return;
              BlockReference br = poleped as BlockReference;
              if (acadEntity is Polyline)
              {
                  Polyline strand = acadEntity as Polyline;
                  Point3dCollection m_ints = new Point3dCollection();
                  strand.IntersectWith(br, Intersect.OnBothOperands, new Plane(), m_ints, 0, 0);
                  foreach (Point3d m_pt in m_ints)
                  {
                      //br. strand.StartPoint
                      if (IsStartPoint)
                      {

                          strand.AddVertexAt(0, new Point2d(m_pt.X, m_pt.Y), 0, 0, 0);
                          strand.RemoveVertexAt(1);
                      }
                      else
                      {

                          int count = strand.NumberOfVertices;
                          strand.AddVertexAt(count - 1, new Point2d(m_pt.X, m_pt.Y), 0, 0, 0);
                          strand.RemoveVertexAt(count);
                      }
                      break;
                  }
              }
}
 楼主| 发表于 2011-9-13 17:28:01 | 显示全部楼层
开头重合的可以删除 结尾就不行了
 楼主| 发表于 2011-9-13 18:25:33 | 显示全部楼层
int count = strand.NumberOfVertices;
我只有3个段点怎么count=4啊

Editor ced = aApp.DocumentManager.MdiActiveDocument.Editor;
                Database cdb = aApp.DocumentManager.MdiActiveDocument.Database;
                Autodesk.AutoCAD.DatabaseServices.TransactionManager ctm = aApp.DocumentManager.MdiActiveDocument.Database.TransactionManager;
                Point3dCollection p3ds = new Point3dCollection();
                p3ds.Add(pStart);
                sPolylineJig jig = new sPolylineJig(p3ds);
                int pcount = p3ds.Count;
                ced.Drag(jig);
                while (jig.Status == 1)
                {
                    p3ds = new Point3dCollection();
                    for (int i = 0; i <= pcount; i++)
                    {
                        p3ds.Add(((aPolyline)jig.Entity).GetPoint3dAt(i));
                    }
                    jig = new sPolylineJig(p3ds);
                    pcount += 1;
                    ced.Drag(jig);
                }
                p3ds.Add(pEnd);
                pcount += 1;
                jig = new sPolylineJig(p3ds);
                if (jig.Status == 0)
                    return;

                ObjectId newBtrId = new ObjectId();
                using (Transaction ctrans = ctm.StartTransaction())
                {
                    DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
                    BlockTable cbt = (BlockTable)ctm.GetObject(cdb.BlockTableId, OpenMode.ForRead, false);
                    BlockTableRecord cbtr = (BlockTableRecord)ctm.GetObject(cbt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false);
                    newBtrId=cbtr.AppendEntity(jig.GetEntity());
                    ctm.AddNewlyCreatedDBObject(jig.GetEntity(), true);
                    DBObject obj = ctrans.GetObject(newBtrId, OpenMode.ForWrite);
                    XDataDispose.AddRegAppTableRecord("xlentComms");
                    ResultBuffer rb = new ResultBuffer(
                        new TypedValue(1001, "xlentComms"),
                        new TypedValue(1000, elementid + "," + Asbuild_Keys.strandEnt)
                      );
                    obj.XData = rb;
                    rb.Dispose();
                    ctrans.Commit();
                    cdb.SaveAs(ced.Document.Name, true, DwgVersion.Current, cdb.SecurityParameters);
                    pObjId = newBtrId;

                    docLock.Dispose();
                }
                jig.Entity.Dispose();
                p3ds.Dispose();
 楼主| 发表于 2011-9-14 14:54:34 | 显示全部楼层
没人知道么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-29 11:20 , Processed in 0.166654 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表