乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 87|回复: 6

使用Linq在块表记录中获取同一类型的实体

[复制链接]

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-1-13 18:50:00 | 显示全部楼层 |阅读模式
下面的例子在当前空间中遍历,并改变直线和圆的颜色,注意Cad版本2009及以上
相关的讨论帖
  1.         [CommandMethod("t8")]
  2.         public static void Test8()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Database db = doc.Database;
  6.             using (Transaction tr = db.TransactionManager.StartTransaction())
  7.             {
  8.                 BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead);
  9.                 var dict =
  10.                     from ObjectId id in btr
  11.                     group id by id.ObjectClass.DxfName;
  12.                 foreach (var ids in dict)
  13.                 {
  14.                     switch (ids.Key)
  15.                     {
  16.                         case "LINE":
  17.                             foreach (var id in ids)
  18.                             {
  19.                                 Entity ent = id.GetObject(OpenMode.ForWrite) as Entity;
  20.                                 ent.ColorIndex = 1;
  21.                             }
  22.                             break;
  23.                         case "CIRCLE":
  24.                             foreach (var id in ids)
  25.                             {
  26.                                 Entity ent = id.GetObject(OpenMode.ForWrite) as Entity;
  27.                                 ent.ColorIndex = 3;
  28.                             }
  29.                             break;
  30.                     }
  31.                 }
  32.                 tr.Commit();
  33.             }
  34.         }

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-1-13 18:54:00 | 显示全部楼层

直接写成函数调用,:)复制代码
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2010-1-13 22:09:00 | 显示全部楼层
收到。顶起来
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2010-1-13 23:18:00 | 显示全部楼层
RXClass.GetClass(typeof(T)).DxfName; 这句对我相当有用。
回复

使用道具 举报

10

主题

31

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
71
发表于 2010-1-17 15:25:00 | 显示全部楼层
提示btr发生错误:
无法为源类型“Autodesk.AutoCAD.DatabaseServices.BlockTableRecord”找到查询模式的实现。找不到“Cast”。是否缺少对“System.Core.dll”的引用或未使用“System.Linq”的指令? G:\Prog\VS2008\C#\AzElectricity\AzElectricity\Form_AutoNumber.cs 37 41 AzElectricity
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-1-17 19:00:00 | 显示全部楼层
using System.Linq;
回复

使用道具 举报

84

主题

543

帖子

12

银币

中流砥柱

Rank: 25

铜币
886
发表于 2012-6-26 21:05:00 | 显示全部楼层
很好的基础贴...
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 19:07 , Processed in 0.675978 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表