在网页中查找到CAD控件图纸上的文字。点击此处在线演示

主要用到函数说明:

_DMxDrawX::NewSelectionSet

实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。

_DMxDrawX::NewResbuf

新创建IMxDrawResbuf对象,构造一个过滤链表。

IMxDrawResbuf::AddStringEx

向链表中增加一个string数据,比如:把文字对象,当着过滤条件。

spFilte.AddStringEx("TEXT,MTEXT",5020);

IMxDrawSelectionSet::Select2

根据指定的选择方式在图上构造选择集,详细说明如下:

参数 说明

[in] MCAD_McSelect Mode

构造选择集方式

[in] VARIANT point1

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

[in] VARIANT point2

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

[in,optional] VARIANT filterType

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

[in,optional] VARIANT filterData

构造选择集的过滤数据

实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。将文字对象当作过滤条件,得到文字对象(此处可以是文字或多行文字)。

// 创建选择集对象
ss = mxOcx.NewSelectionSet();
// 创建一个链表对象
var spFilte = mxOcx.NewResbuf();
// 把文字,多行文字当着过滤条件
spFilte.AddStringEx("TEXT,MTEXT",5020);
// 得到图上所有文字,5代码,全图选择
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 == "McDbText") {
// 得到文字内容
var sTxt = ent.TextString; if (sTxt == txt) {
// 把文字放到视区中间.
mxOcx.PutEntityInView(ent.ObjectID, 300); var dLen = mxOcx.ViewLongToDocCoord(80); // 绘制一个标记圆.
mxOcx.DrawVectorCircle(ent.Position.x,
ent.Position.y,
dLen, 65280);
bFind = true;
}
}
else if (ent.ObjectName == "McDbMText") { var param = mxOcx.NewResbuf();
param.AddObjectId(ent.ObjectID);
// 得到多行文字中的文字本内容
var ret = mxOcx.CallEx("Mx_GetMTextContent", param);
if (ret.AtString(0) == "Ok") { if (ret.AtString(1) == txt) {
// 把文字放到视区.
mxOcx.PutEntityInView(ent.ObjectID, 300); var dLen = mxOcx.ViewLongToDocCoord(80); // 绘制一个标记圆.
mxOcx.DrawVectorCircle(ent.Location.x,
ent.Location.y,
dLen, 65280);
bFind = true; break;
}
}
}
ent = null;
} if (!bFind) {
alert("没有找到文字对象");
}
// 在这里必须显示释放控件的COM对象指针.
ss = null;
spFilte = null;
CollectGarbage();
}

最新文章

  1. sublime text 配置 builder [build system]
  2. ASCII、UNICODE、UTF-8等关系
  3. 浅谈JavaScript中的this
  4. javascript的语法结构
  5. passwnger
  6. 黑马程序员——vim编辑器的使用
  7. oc 怎么接收NSSting字符的方法
  8. NOI十连测 第四测 T3
  9. 微信网页签名失败(invalid signature)
  10. charles支持https抓包
  11. 分布式环境中三种Session管理方法的使用场景及优缺点
  12. java中变量关系
  13. python 安装第三方包时 read timed out
  14. 马哥Linux base学习笔记
  15. JdbcTemplate应用学习
  16. 【EasyUI学习-3】Easyui tabs入门实践
  17. 基于受限玻尔兹曼机(RBM)的协同过滤
  18. Flask第六篇——项目配置文件
  19. MvvmLight - ViewModelLocator
  20. JavaScript AMD 与CMD的代码区别

热门文章

  1. IOS-Storyboard控制器切换之TabBar(3)
  2. Python按行输出文件内容具体解释及延伸
  3. Cholesky分解 平方根法
  4. 脱离开发软件启动Tomcat访问项目
  5. Linux/Android——input子系统核心 (三)【转】
  6. 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
  7. bzoj4873
  8. Java Graphics2D类的绘图方法
  9. Git-flow 一个简单高效的Git工作流
  10. openstack dnsmasq调试