明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 745|回复: 3

(求助)特定文本查找显亮,并且 只显示有这些文字的图层

[复制链接]
发表于 2023-11-8 18:48:17 来自手机 | 显示全部楼层 |阅读模式
如题 :查找特定文字 显亮(可能是单行文字,多行文字,和属性块,块内文字),并且 只打开有这些文字的图层(关闭其他图层)

例如  查找整个图纸含有 FM 文本的,并且只打开含有FM文本的图层,关闭其他图层


我常规操作是利用cad自带的 FIND命令查找,然后选择集
最后再用图层工具关闭其他图层


发表于 2023-11-8 19:25:58 | 显示全部楼层
  1. ar r1 = Env.Editor.GetString("\n选择要查找的文字");
  2.         if (r1.Status != PromptStatus.OK)
  3.             return;
  4.         var str = r1.StringResult;
  5.         using var tr = new DBTrans();
  6.         HashSet<ObjectId> layerIdSet = new();
  7.         foreach (var btr in tr.BlockTable.GetRecords())
  8.         {
  9.             foreach (var ent in btr.GetEntities<Entity>())
  10.             {
  11.                 if(ent is DBText ||ent is MText)
  12.                 {
  13.                     layerIdSet.Add(ent.LayerId);
  14.                 }
  15.                 else if(ent is BlockReference brf)
  16.                 {
  17.                     foreach (var att in brf.GetAttributes())
  18.                     {
  19.                         layerIdSet.Add(att.LayerId);
  20.                     }
  21.                 }
  22.             }
  23.         }
  24.         foreach (var ltr in layerIdSet.GetObject<LayerTableRecord>(OpenMode.ForWrite))
  25.         {
  26.             if(!ltr.IsOff)
  27.                 ltr.IsOff = true;
  28.         }

因为没说什么语言,所以用了c# powered by ifox


 楼主| 发表于 2023-11-8 19:32:03 | 显示全部楼层
d1742647821 发表于 2023-11-8 19:25
因为没说什么语言,所以用了c# powered by ifox

这个怎么使用呢?不太会。。我都是用的lisp
发表于 2023-11-9 06:10:37 | 显示全部楼层
发错地方了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:52 , Processed in 0.232243 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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