明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1853|回复: 5

CAD Select方法如何设置FilterType, FilterData

[复制链接]
发表于 2014-4-26 10:38:24 | 显示全部楼层 |阅读模式
现在正在学习vba编程,遇到了选择集过滤器的问题,在vba的帮助文件中找不到关于FilterType, FilterData  信息,求大侠们解释下FilterType, FilterData  参数!
发表于 2014-4-27 16:29:00 | 显示全部楼层
给你一个实例,下面是一个单行文字的组码表:
((-1 . <Entity name: 7efc1640>) (0 . "TEXT") (330 . <Entity
name: 7efbfcf8>) (5 . "200") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (100 . "AcDbText") (10 2907.02 911.746 0.0) (40 . 2.5) (1 . "[string]")
(50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0
0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
在这个组码表中随便拿出一个, 例如(0 . "TEXT") ,点对表左边的“0”组码表示类型,右边是具体的类别,“TEXT”即使单行文字;
再比如:
(7 . "Standard")表示该文字文字类型(”7”)为”Standard“
(1 . "[string]") 表示该文字内容(”1”)为"[string]"
(10 2907.02 911.746 0.0)表示文字的插入点(10),这个店的具体坐标就是:2907.02 911.746 0.0
通过上边几个比较可以看出图元类型总是整数,但是图元数据却不然,它可能是整数可能是字符串也有可能是一个插入点


然后再以SelectOnScreen方法为例介绍,我们先看看语法:
object.SelectOnScreen [FilterType][, FilterData]
object ——SelectionSetThe object or objects this method applies to.
FilterType——Integer; input-only; optional A DXF group code specifying the type of filter to use.
FilterData——Variant; input-only; optional The value to filter on.  

object这里指的是一个具体的选择集(SelectionSet),需要你提前在创建(Thisdrawing.selectionsets.add("SelectionSet_name"));
FilterType——这是一个整型变量,比如图元类型0,文字类型7,文字内容1,插入点10,都是整数;
FilterData——这是一个变量(Variant)类型,定义好后可以具体赋值;
FilterType和FilterData的共同点是它们都是数组,且上下标都是一样的,因为他们都是点对,总是成双成对出现。

我再给你一个例子,如果我现在要创建一个只选择单行文字的,且内容为”V1“的选择集,代码如下:

Dim fType(1) As Integer
Dim fData(1) As Variant
fType(0) = 0: fData(0) = "TEXT"
fType(1) = 1: fData(1) = "V1"
SSet.SelectOnScreen  fType,fType

当然选择集还不止这些,比如:与或条件(-4 . and>)之类的。
发表于 2014-4-29 09:14:58 | 显示全部楼层
poople 发表于 2014-4-27 16:29
给你一个实例,下面是一个单行文字的组码表:
((-1 . ) (0 . "TEXT") (330 . ) (5 . "200") (100 . "AcDbE ...

谢谢,注册一个经友不容易啊,除了这个,这两天我在编写一个多段线三维坐标保存到excel文件,但是总是不成功,坐标能提取,就是导入到cells的时候格式总是不对,我想xyz分列安放,能给我一份代码么?小弟谢谢了
发表于 2014-4-29 12:50:53 来自手机 | 显示全部楼层
加州公路 发表于 2014-4-29 09:14
谢谢,注册一个经友不容易啊,除了这个,这两天我在编写一个多段线三维坐标保存到excel文件,但是总是不成 ...

你要学会搜索,这种代码到处都是:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=97621
发表于 2014-4-30 11:33:20 | 显示全部楼层
poople 发表于 2014-4-29 12:50
你要学会搜索,这种代码到处都是:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=97621

编好了,谢谢
发表于 2014-5-29 02:43:56 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-5-29 02:46 编辑
poople 发表于 2014-4-27 16:29
给你一个实例,下面是一个单行文字的组码表:
((-1 . ) (0 . "TEXT") (330 . ) (5 . "200") (100 . "AcDbE ...


讲解得非常详细,由于一直是用lsp的,所以对这个一头雾水,但有的时候必须用select而不能用lsp的ssget
麻烦给个带-4组的示例
比如想选择半径小于10的颜色不等于红色的0图层上的圆和颜色为3、线宽为5和非图层1的多线段
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 04:27 , Processed in 0.208273 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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