jh3030912 发表于 2023-11-8 18:48:17

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

如题 :查找特定文字 显亮(可能是单行文字,多行文字,和属性块,块内文字),并且 只打开有这些文字的图层(关闭其他图层)

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


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


d1742647821 发表于 2023-11-8 19:25:58

ar r1 = Env.Editor.GetString("\n选择要查找的文字");
      if (r1.Status != PromptStatus.OK)
            return;
      var str = r1.StringResult;
      using var tr = new DBTrans();
      HashSet<ObjectId> layerIdSet = new();
      foreach (var btr in tr.BlockTable.GetRecords())
      {
            foreach (var ent in btr.GetEntities<Entity>())
            {
                if(ent is DBText ||ent is MText)
                {
                  layerIdSet.Add(ent.LayerId);
                }
                else if(ent is BlockReference brf)
                {
                  foreach (var att in brf.GetAttributes())
                  {
                        layerIdSet.Add(att.LayerId);
                  }
                }
            }
      }
      foreach (var ltr in layerIdSet.GetObject<LayerTableRecord>(OpenMode.ForWrite))
      {
            if(!ltr.IsOff)
                ltr.IsOff = true;
      }
因为没说什么语言,所以用了c# powered by ifox


jh3030912 发表于 2023-11-8 19:32:03

d1742647821 发表于 2023-11-8 19:25
因为没说什么语言,所以用了c# powered by ifox

这个怎么使用呢?不太会。。我都是用的lisp

ghgh0130 发表于 2023-11-9 06:10:37

发错地方了。。。;P
页: [1]
查看完整版本: (求助)特定文本查找显亮,并且 只显示有这些文字的图层