scf0413 发表于 2011-1-20 13:44:13

c#拾取CAD中单行文字

通过选择集选择文字
1.怎样判断相同文字
2.在命令行中显示不同文字的数量
望高手赐教 谢谢

雪山飞狐_lzh 发表于 2011-1-21 08:49:53

本帖最后由 雪山飞狐_lzh 于 2011-1-21 08:50 编辑

简单的流程就是先建一个string-int的键值对字典
然后遍历,每发现一个新的字串就在字典中加入一项
否则就在字典的原有项上加一
下面是Linq的方法
结果:

      
      public static void Test2()
      {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            var resSel = ed.SelectAll(new ResultList { { 0, "text" } });
            if (resSel.Status != PromptStatus.OK)
                return;

            using (var tr = db.TransactionManager.StartTransaction())
            {
                var q =
                  resSel.Value.GetObjectIds()
                  .Select(id => tr.GetObject(id, OpenMode.ForRead) as DBText)
                  .GroupBy(t => t.TextString)
                  .Select(txts => new { txts.Key, Count = txts.Count() })
                  .OrderBy(t => t.Key);

                foreach (var t in q)
                {
                  ed.WriteMessage("\n内容:{0}数量:{1}", t.Key, t.Count);
                }

            }
      }

scf0413 发表于 2011-1-22 09:32:19

感谢飞狐大哥
页: [1]
查看完整版本: c#拾取CAD中单行文字