当前位置:知识库 / MxDraw网页开发 / 详情
在CAD控件网页版中如何得到图上所有标注的标注文本?
在CAD控件网页版中如何得到图上所有标注的标注文本?
MxDraw网页开发|冯美娟|2019-04-19 14:27
回答:

主要用到函数说明:


IMxDrawSelectionSet::Select2


构造选择集。详细说明如下:


参数说明

[in] MCAD_McSelect Mode

构造选择集方式

[in] VARIANT point1

构造择择集时需要使用到的点对象

[in] VARIANT point2

构造择择集时需要使用到的点对象

[in,optional] VARIANT filterType

构造选择集的过滤数据的类型

[in,optional] VARIANT filterData

构造选择集的过滤数据

可以取如下值

mcSelectionSetWindow = 0, mcSelectionSetCrossing = 1, mcSelectionSetFence = 2, mcSelectionSetPrevious = 3, mcSelectionSetLast = 4, mcSelectionSetAll = 5, 选择图面上的所有实体 mcSelectionSetWindowPolygon = 6, mcSelectionSetCrossingPolygon = 7, mcSelectionSetUserSelect = 8 mcSelectionImpliedSelectSelect = 9,_I 返回当前图上已经选择的实体


js中使用如下:


function GetAllComment() {

    var  ss = mxOcx.NewSelectionSet();
   var spFilte = mxOcx.NewResbuf();

   // 把批注对象,当着过滤条件.
   spFilte.AddStringEx("MxComment,MxDrawXCustomEntity", 5020);

   // 得到图上,所有批注对象.
   ss.Select2(5,null,null,null,spFilte);
    
   
   // 遍历每个文字.
   var bFind = false;
   for (var i = 0; i < ss.Count; i++) {
   
      
       var ent = ss.Item(i);
       if (ent == null)
           continue;
       if (ent.ObjectName == "McDbComment") {
           // 得到批注对象。
           mxOcx.Prompt(ent.Text);

         var mtxt = mxOcx.NewEntity("IMxDrawMText");
         
         // 把多行文字,变成单行文字,去掉里面的控制符。
         mtxt.Contents  = ent.Text;
         
         // 打碎对像.
         var ret = mtxt.GetProp("ExplodeEx");

         // 得到打碎后对像里面的文字。
            var s;
            for(var j = 0; j < ret.Count;j++)
            {

                var  obj = ret.AtObject(j);
                if(obj == null)
                    continue;


         if(s == null){

               // s = obj.TextString;
            }

         else{
             var s = '';
                s += obj.TextString;
            }

              
            }
         mxOcx.Prompt(s);
           //
           mxOcx.Prompt(ent.Position.x.toString());
           mxOcx.Prompt(ent.Position.y.toString());

           mxOcx.Prompt(ent.BasePoint.x.toString());
           mxOcx.Prompt(ent.BasePoint.y.toString());
       }
       else if (ent.ObjectName == "MxDrawXCustomEntity") {
           // 得到批注对象。

           var stp = ent.GetPoint("First");

           var ept = ent.GetPoint("BasePoint");



           var txt = ent.GetString("Text");
         
         

           mxOcx.Prompt(txt);

           //
           mxOcx.Prompt(stp.x.toString());
           mxOcx.Prompt(stp.y.toString());

           mxOcx.Prompt(ept.x.toString());
           mxOcx.Prompt(ept.y.toString());
       }
        
   }

}
相关问题
如何得到文字内容?
在网页中如何将文字变成曲线?
在网页中如何加逻辑或作为条件过滤,选择实体
在网页中如何删除全部文字?
如何保存高版本的dwg?
在网页中如何获取块文字信息?
在网页中如何设置图层亮度?
何如将标注放在视区中?
如何删除标注?
如何得到填充名称?
梦想CAD是专业的CAD插件(控件),可轻松在网页、手机及BS/CS程序中浏览编辑DWG文件,不需安装AutoCAD即可运行。经十余年累积已非常稳定可靠,有关键的空间搜索算法,并使用汇编优化,可同时处理50万级实体,有非常高的图形显示和处理效率。
联系我们
技术TEL:400-888-5703
185-8173-1060
客服I QQ: 3570505660
技术I QQ: 827867134
技术II QQ:6884123
VIP服务购买
销售TEL:156-8136-8971
销售QQ:710714273
用户交流
梦想绘图资讯群Ⅰ:73281982
梦想绘图资讯群Ⅱ:112199959
MxCAD软件更新通知群Ⅰ:515771658
技术I:QQ
827867134
客服I:QQ
3570505660
销售QQ
710714273
联系电话400-888-5703