乐筑天下

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

[求助]如何设置块参照的颜色?

[复制链接]

15

主题

23

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-10-20 15:25:00 | 显示全部楼层 |阅读模式
BlockReference 类型的br  用 br.Color = Color.FromColorIndex(ColorMethod.ByBlock, color.ColorIndex);
设置其颜色后br.Color显示正确了 但是没显示应有的颜色  
回复

使用道具 举报

275

主题

808

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1909
发表于 2009-10-20 15:33:00 | 显示全部楼层
不行的 刚试了下
回复

使用道具 举报

15

主题

23

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-10-20 15:42:00 | 显示全部楼层
狐哥,您老在哪儿啊  呼唤。。。。。。。。。。
回复

使用道具 举报

275

主题

808

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1909
发表于 2009-10-20 15:54:00 | 显示全部楼层

ColorMethod.ByAci
回复

使用道具 举报

15

主题

23

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-10-20 16:24:00 | 显示全部楼层
快参照的颜色应该是在快定义中设定的,无法改变,除非你改变块定义的颜色,那么所有该块定义的块参照的颜色也就全部改变了。
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-10-20 19:21:00 | 显示全部楼层
可以在块定义的实体设置Color为ByBlock,这样参照的颜色就可以随块改变
回复

使用道具 举报

16

主题

53

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
117
发表于 2009-10-20 19:48:00 | 显示全部楼层
这有两段代码,仅供参考。
  1. // 修改块参照的颜色——编辑块定义中的对象颜色为随块.
  2. [CommandMethod("test1")]
  3. public void MyTest1()
  4. {
  5.     Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  6.     Database db = HostApplicationServices.WorkingDatabase;
  7.     PromptEntityOptions opt = new PromptEntityOptions("\n请选择块参照");
  8.     opt.SetRejectMessage("您选择的不是块参照,请重新选择!");
  9.     opt.AddAllowedClass(typeof(BlockReference), true);
  10.     PromptEntityResult res = ed.GetEntity(opt);
  11.     if (res.Status != PromptStatus.OK)
  12.     {
  13.         return;
  14.     }
  15.     using (Transaction trans = db.TransactionManager.StartTransaction())
  16.     {
  17.         BlockReference ent = (BlockReference)trans.GetObject(res.ObjectId,
  18.             OpenMode.ForWrite);
  19.         BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId,
  20.             OpenMode.ForRead);
  21.         BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[ent.Name],
  22.             OpenMode.ForWrite);
  23.         BlockTableRecordEnumerator blkRefEnumerator = btr.GetEnumerator();
  24.         while (blkRefEnumerator.MoveNext())
  25.         {
  26.             Entity ee = (Entity)trans.GetObject(blkRefEnumerator.Current,
  27.                 OpenMode.ForWrite);
  28.             if (ee.ColorIndex != 0)
  29.             {
  30.                 ee.ColorIndex = 0;
  31.             }
  32.         }
  33.         ent.ColorIndex = 1;
  34.         trans.Commit();
  35.     }
  36. }
  37. // 修改块参照的颜色——编辑块定义中的对象颜色为新颜色.
  38. [CommandMethod("test2")]
  39. public void MyTest2()
  40. {
  41.     Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  42.     Database db = HostApplicationServices.WorkingDatabase;
  43.     PromptEntityOptions opt = new PromptEntityOptions("\n请选择块参照");
  44.     opt.SetRejectMessage("您选择的不是块参照,请重新选择!");
  45.     opt.AddAllowedClass(typeof(BlockReference), true);
  46.     PromptEntityResult res = ed.GetEntity(opt);
  47.     if (res.Status != PromptStatus.OK)
  48.     {
  49.         return;
  50.     }
  51.     using (Transaction trans = db.TransactionManager.StartTransaction())
  52.     {
  53.         BlockReference ent = (BlockReference)trans.GetObject(res.ObjectId,
  54.             OpenMode.ForRead);
  55.         BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId,
  56.             OpenMode.ForRead);
  57.         BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[ent.Name],
  58.             OpenMode.ForWrite);
  59.         BlockTableRecordEnumerator blkRefEnumerator = btr.GetEnumerator();
  60.         while (blkRefEnumerator.MoveNext())
  61.         {
  62.             Entity ee = (Entity)trans.GetObject(blkRefEnumerator.Current,
  63.                 OpenMode.ForWrite);
  64.             ee.ColorIndex = 1;
  65.         }
  66.         ed.Regen();
  67.         trans.Commit();
  68.     }
  69. }
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-10-20 19:55:00 | 显示全部楼层
从功能上而言
ent.Color = Color.FromColorIndex(ColorMethod.ByAci, 0);
等效于
ent.ColorIndex = 0
即随块
不过老卢的写法要简洁些
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 15:55 , Processed in 2.113425 second(s), 68 queries .

© 2020-2025 乐筑天下

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