明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2837|回复: 6

特定图层上特定文本的过滤器设置问题

[复制链接]
发表于 2003-9-14 10:11:00 | 显示全部楼层 |阅读模式
在实体选择中使用过滤机制时,要选的实体是文本Text,且这些Text全在某一特定层上,如Dm层上。其中组码FilterType及组码值FilterData能否组合?怎样组合?
    材料中介绍的组码值FilterData可以使用同配符。
    如:FData(0)=“S*,C*”  语句可以选择以S和C开头的实体类型,即样条曲线(Soline)和(Circle)圆。
 楼主| 发表于 2003-9-14 11:53:00 | 显示全部楼层
我找到了一个解决办法。
发表于 2003-9-14 12:27:00 | 显示全部楼层
既然自己找到了方法,不防写出来大家共享。
另外,以后提问题时请在主题中写清楚提问的主要内容,以方便大家浏览及回答,不要每次提问都写上“这个问题怎样解决”,我记得你已经写了这样的主题有几次了,这样不利于大家的浏览,也不利于自己查看。
 楼主| 发表于 2003-9-14 17:56:00 | 显示全部楼层
首先用令组码FilterType=8,组码值FilterData=“Dm”
      ssetobj.Select acSelectionSetAll, , , filtertype, filterdata
      这时的选择集中均为实体
      定义二个对象变量分别为textobj,entobj
      在选择集中遍历entobj实体,同时用其句柄设置textobj选择集
      这时就可以对textobj选择集进行操作了。

  Dim textobj As AcadText
  filtertype =8
  filterdata =“Dm”
  ssetobj.Select acSelectionSetAll, , , filtertype, filterdata
  Dim enobj As AcadEntity
  For Each enobj In ssetobj
      Set textobj = acadapp.ActiveDocument.HandleToObject(pic.Handle)
      na = textobj.TextString
  Next
 楼主| 发表于 2003-9-14 17:59:00 | 显示全部楼层
(pic.Handle)应为(enobj.Handle)
发表于 2003-9-14 19:25:00 | 显示全部楼层
有点问题:
1、如果enobj是文字对象,那么通过它的句柄再转成对象就多此一举了吧。直接使用Set textobj = enobj就可以了。
2、如果enobj不是文字对象,那么即使通过它的句柄转成对象,所得到的依然不是文字对象,这时不管使用Set textobj = acadapp.ActiveDocument.HandleToObject(pic.Handle),还是Set textobj = enobj都会发生错误,对象的类型不一致。
3、如果仅得到文字对象,那么选择的应该只选择Dm层上的文字。此时构成过滤机制应该为:
filtertype(0) =8
filterdata(0) =“Dm”
filtertype(1)=0
filtertype(1)="Text"
 楼主| 发表于 2003-9-14 22:25:00 | 显示全部楼层
明白了,将下列四句:
    filtertype(0) =8
    filterdata(0) =“Dm”
    filtertype(1)=0
    filtertype(1)="Text"
组合成过滤机制,就是问题之所在!不过我找到的办法确实运行通过了。
    多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 15:40 , Processed in 0.188422 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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