明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2470|回复: 3

如何读取一个图层里面的所有数据?

[复制链接]
发表于 2005-9-7 16:44:00 | 显示全部楼层 |阅读模式

比如我要读出0图层里的所有直线,而其他图层的直线就不要

难道一定要在遍历ModleSpace里面的所有直线对象,然后判断每根直线的Layer属性是否为"0"吗?能不能直接对0层里的所有对象进行循环而不用理其它图层的对象?

发表于 2005-9-9 17:48:00 | 显示全部楼层

试试看:

  [CommandMethod("Test")]public void test2()
  {
   Database db = HostApplicationServices.WorkingDatabase;
   Transaction trans = db.TransactionManager.StartTransaction();
   BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId,OpenMode.ForRead);
   BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite);

   try
   {
    oint3d ptCent = new Point3d(0,0,0);
                Circle cir = new Circle(ptCent,Vector3d.ZAxis,20);
    Ellipse ell = new Ellipse(ptCent,Vector3d.ZAxis,new Vector3d(10,10,0),0.618,0,0);
    Line line = new Line(ptCent,new Point3d(10,10,0));

    btr.AppendEntity (cir);
    btr.AppendEntity(ell);
    btr.AppendEntity(line);
    trans.AddNewlyCreatedDBObject(cir,true);
    trans.AddNewlyCreatedDBObject(ell,true);
    trans.AddNewlyCreatedDBObject(line,true);

    foreach(ObjectId id in btr)
    {
     Entity ent = (Entity)trans.GetObject(id,OpenMode.ForRead);

     if(ent.GetType() == typeof(Line))
     {
      Application.ShowAlertDialog(ent.GetType().ToString());     
     }
     else
     {
      Application.ShowAlertDialog("Something else!");     
     }
    }

    trans.Commit();
   }
   catch(System.Exception ex)
   {
    Application.ShowAlertDialog(ex.Message);
   }
   finally
   {
    trans.Dispose();
   }

  }

发表于 2005-9-12 13:10:00 | 显示全部楼层

2楼的回答不行!你只是把所有的实体都遍历了一遍,根据实体的类型来进行判断,

有没有办法只对直线进行遍历?不用管其他的实体对象,这样效率会提高很多

 

 

发表于 2005-12-28 22:52:00 | 显示全部楼层

前一段看到帮助里边DXF过滤器好像可以提供选择过滤功能,具体就没有细看,

你看下帮助吧

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

本版积分规则

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

GMT+8, 2024-11-25 06:33 , Processed in 0.159472 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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