明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2382|回复: 10

实现删除一些线条

[复制链接]
发表于 2010-11-27 14:27:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-11-28 10:14:11 编辑

如何实现删除以下这红色长方形,只保留填充?

 

谢谢狐哥!!在你的帮助下问题终于解决了。。。

发表于 2010-11-27 15:26:00 | 显示全部楼层

先用选择集过滤出红色的长方形

DBObject.Erase Method ()
 楼主| 发表于 2010-11-27 15:37:00 | 显示全部楼层

比喻我是以下方法创建的圆,然后填充圆,最后如何删除那圆,而保留填充

ObjectId Cirent01 = AddCircle(centerPoint, 6);

发表于 2010-11-27 15:44:00 | 显示全部楼层

DBObject ent = tr.GetObject(Cirent01, OpenMode.ForWrite);

ent.Erase();
 楼主| 发表于 2010-11-27 15:54:00 | 显示全部楼层
狐哥,我是按以下方式做的,我需要如何删除
  1. public void CreateHatch1()
  2. {
  3. // 创建填充边界.
  4.         ObjectId loopId2 = ModelSpace.AddCircle(new Point3d(150, 50, 0), 40);
  5. // 定义一个ObjectId集合.
  6.         ObjectIdCollection loops1 = new ObjectIdCollection();
  7.         loops2.Add(loopId2);
  8.         // 定义一个ObjectId集合数组.
  9.         ObjectIdCollection[] loops = new ObjectIdCollection[1];
  10.         loops.SetValue(loops1, 1);
  11.         // 实施填充.
  12.         ObjectId hatchId = ModelSpace.AddHatch(loops, 0, "ANSI31", ModelSpace.Rad2Ang(30), 2);
  13. //程序运行到了这里如何删除[创建填充边界Circle,保留填充线]
  14. }
复制代码
发表于 2010-11-27 16:21:00 | 显示全部楼层

 

using(var tr = .......)

{

foreach(Object id in loops1)

{

DBObject ent = tr.GetObject(Cirent01, OpenMode.ForWrite);

ent.Erase();

}

}

 楼主| 发表于 2010-11-27 16:40:00 | 显示全部楼层
这样是可以删除,但是那填充线也没有了,请问是什么原因?
发表于 2010-11-27 17:02:00 | 显示全部楼层
  1.         public static void AddHatch(Transaction tr, BlockTableRecord btr, IEnumerable<ObjectIdCollection> idCollections, HatchPatternType patternType, string patternName, double patternAngle, double patternScale)
  2.         {
  3.             Hatch hatch =
  4.                 new Hatch
  5.                 {
  6.                     PatternAngle = patternAngle,
  7.                     PatternScale = patternScale,
  8.                 };
  9.             hatch.SetDatabaseDefaults();
  10.             hatch.SetHatchPattern(patternType, patternName);
  11.             btr.AppendEntity(hatch);
  12.             tr.AddNewlyCreatedDBObject(hatch, true);
  13.             hatch.Associative = false;
  14.             foreach (var ids in idCollections)
  15.             {
  16.                 hatch.AppendLoop(HatchLoopTypes.External, ids);
  17.             }
  18.         }
  19.         [CommandMethod("t2")]
  20.         public static void Test2()
  21.         {
  22.             var db = HostApplicationServices.WorkingDatabase;
  23.             var doc = Application.DocumentManager.GetDocument(db);
  24.             var ed = doc.Editor;
  25.             using (Transaction tr = db.TransactionManager.StartTransaction())
  26.             {
  27.                 var btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
  28.                 Circle c = new Circle(Point3d.Origin, Vector3d.ZAxis, 8);
  29.                 btr.AppendEntity(c);
  30.                 tr.AddNewlyCreatedDBObject(c, true);
  31.                 AddHatch(tr, btr, new List<ObjectIdCollection> { new ObjectIdCollection { c.ObjectId } }, HatchPatternType.CustomDefined, "ansi31", 0, 1);
  32.                 c.Erase();
  33.                 tr.Commit();
  34.             }
  35.         }
 楼主| 发表于 2010-11-27 17:21:00 | 显示全部楼层

谢谢狐哥

现在可以了,但是还有一点不明白,在使用c.Erase();时,可以删除那个圆,如果是10个圆这个删除需要如何写啊

发表于 2010-11-27 21:38:00 | 显示全部楼层

如果是集合,那就foreach

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 00:34 , Processed in 0.194873 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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