NBA的大叔 发表于 2014-4-26 10:38:24

CAD Select方法如何设置FilterType, FilterData

现在正在学习vba编程,遇到了选择集过滤器的问题,在vba的帮助文件中找不到关于FilterType, FilterData信息,求大侠们解释下FilterType, FilterData参数!

poople 发表于 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 . "")
(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 . "") 表示该文字内容(”1”)为""
(10 2907.02 911.746 0.0)表示文字的插入点(10),这个店的具体坐标就是:2907.02 911.746 0.0
通过上边几个比较可以看出图元类型总是整数,但是图元数据却不然,它可能是整数可能是字符串也有可能是一个插入点


然后再以SelectOnScreen方法为例介绍,我们先看看语法:
object.SelectOnScreen [, 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.SelectOnScreenfType,fType

当然选择集还不止这些,比如:与或条件(-4 . and>)之类的。

加州公路 发表于 2014-4-29 09:14:58

poople 发表于 2014-4-27 16:29 static/image/common/back.gif
给你一个实例,下面是一个单行文字的组码表:
((-1 . ) (0 . "TEXT") (330 . ) (5 . "200") (100 . "AcDbE ...

谢谢,注册一个经友不容易啊,除了这个,这两天我在编写一个多段线三维坐标保存到excel文件,但是总是不成功,坐标能提取,就是导入到cells的时候格式总是不对,我想xyz分列安放,能给我一份代码么?小弟谢谢了

poople 发表于 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 static/image/common/back.gif
你要学会搜索,这种代码到处都是:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=97621

编好了,谢谢

llsheng_73 发表于 2014-5-29 02:43:56

本帖最后由 llsheng_73 于 2014-5-29 02:46 编辑

poople 发表于 2014-4-27 16:29 static/image/common/back.gif
给你一个实例,下面是一个单行文字的组码表:
((-1 . ) (0 . "TEXT") (330 . ) (5 . "200") (100 . "AcDbE ...

讲解得非常详细,由于一直是用lsp的,所以对这个一头雾水,但有的时候必须用select而不能用lsp的ssget
麻烦给个带-4组的示例
比如想选择半径小于10的颜色不等于红色的0图层上的圆和颜色为3、线宽为5和非图层1的多线段
页: [1]
查看完整版本: CAD Select方法如何设置FilterType, FilterData