函数ssgeT的使用(可编辑修改word版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SSGET 函数的使用
一. 功能提示用户选择对象(图元),并返回一个选择集。
二. 格式(ssget [mode] [pt1 [pt2]] [pt_list] [filter_list])
(SSGET [选取模式] [选取点] [选取点] [点串行] [过滤条件] )
三. 说明
(一).函数调用中各变元的说明
mode 变元是指定对象(图元)选择方法的一个字符串。
有效的选择方法是:"W"、"WP"、"C"、"CP"、"L"、"P"、"I"以及"F",它们分别对应于Window、WPolygon、Crossing、CPolygon、Last、Previous、Implied、Fence
选择方法。
其它的可选的mode 值是"X",它用于选择整个数据库。
pt1 和pt2 指定与选择有关的点。
调用ssget
时提供了一个点而不提供mode 变元,等价于拾取单个点来做对象选择。
ssget 函数忽略Object Snap(对象捕捉)
的现行设置方式,除非您在调用本函数时专门指定了它。
filter_list 变元是指定对象特征的一个关联表。
与
filter_list 匹配的那些对象被加入到选择集中。
如果调用ssget 函数时,省略所有变元,则ssget 函数给出"Select object"提示,允许用户交互地构造选择集。
选择集中可以包含图纸空间和模型空间两个空间中的对象,但该选择集由某一种操作所使用时,在现行空
间中无效的那些对象会被过滤掉。
由ssget 函数返回的选择集中仅包含主图元(不包含属性和多义线的顶点图元)。
下面给出一些使用实例。
(1)(ssget)
让用户用普通的对象选择方法选择对象,构成选择集。
(2)(ssget "P")
生成一个选择集,该选择集由最近所选择的那些对象所组成。
(3)(ssget "L")
生成一个选择集,该选择集由最后被增加到图形数据库中的那个可见对象组成。
(4)(ssget "I")
生成一个选择集,该选择集由PICKFIRST 生效时所选择的那些对象组成。
(5)(ssget '(2,2))
生成一个选择集,该选择由通过点(2,2)的那些对象组成。
(6)(ssget "w" (0 0) '(5 5))
生成一个选择集,该选择集包含了由(0,0)到(5,5)定义的窗口中的所有对象。
(7)(ssget "c" '(0 0)'(1 1)
生成一个选择集,该选择集中既包含了由(0,0)到(1,1)定义的窗口中的所有对象,也包含了与这个窗口相交
的那些对象。
(8)(ssget "X")
生成一个选择集,该选择集中包含了现行图形数据库中的所有对象。
(9)(ssget "X" filter_list)
扫描图形数据库,将与过滤表filter_list 匹配的那些对象组成一个选择集并返回。
(10)(ssget filter_list)
让用户用一般的对象选择方式选择对象,将用户所选择的所用对象与过滤器表filter_list 进行比较,只有与
过滤器表相匹配的那些对象才放入到选择集中,最后返回所生成的这个选择集。
(11)(ssget "P" filter_list)
生成一个选择集,入选该选择集的条件是,它既是最近所选择的那些对象,且又满足过滤器的要求。
(12)(ssget "WP" pt_list)
生成一个选择集,该选择集中既包含了由点表pt_list 定义的多边形中的所有对象。
(13)(ssget "cp" pt_list)
生成一个选择集,该选择集中既包含了由点表pt_list 定义的多边形中的所有对象,也包含了与该多边形相交的那些对象。
(14)(ssget "F" pt_list)
生成一个选择集,该选择集中包含了与点表pt_list 定义的多边形篱笆相交的全部对象。
(15)(ssget "wp" pt_list filter_list)
生成一个选择集,该选择集中的所有对象既必须处于由点表pt_list 定义的多边形内,也必须满足过滤器表filter_list 中的条件。
只有当一带变元调用ssget 函数时,被选取的对象才会高亮显示。
选择集会消耗AutoCAD 临时文件存储区,AutoLISP 不允许同时打开的选择集多于128 个。
如果选择集的数目达到了这个极限,AutoCAD 会拒绝再生成选择集,再调用更多次ssget 函数也只能是返回nil。
为了关闭不再需要的选择集。
可以将它设置为nil。
对于任何以Last 响应"Select object:"提示有效的地方,都可以向AutoCAD 传递一个选择集变量。
它将选择所传递的选择集中的所有对象。
(二).关于选择集中过滤器的进一步讨论
选择集过滤器表可以由任何方式所使用。
您可以获得一个包含在给定图层上(或一个给定颜色、给定类型的全部对象的选择集。
下面的实例中,返回一个选择集,该选择集中仅包含在PICKFIRST 方式有效时所选择的那些对象中,颜色为兰色的直线段。
(ssget "I" '((0. "LINE")(62.5)))
使用过滤器表,您也能选择属于一个特定申请的包含在扩展数据中的全部对象。
要达到这一目的,需要按如下方式-3 组码:
(ssget "P" '((0."CIRCLE")(-3 ("APPNAME"))))
上述代码选择了申请"APPNAME"中所包含的扩展数据
(1)过滤器表中的关系测试
除非特别指定,否则对过滤器表filter_list 中的每一项都隐含了一个“相等”测试。
对于数值组(整数、实数、点以及矢量),通过包含了一个专用的-4 组来指定一个关系运算符,您可以指定其它的关系。
一个-4 组的值是一个字符串,它用于指出要作用于过滤器表中随后的测试运算符。
(ssget "X" '(((0."CIRCLE")(-4.">=")(40.2.0))))
上述表达式,将选择半径大于或等于2.0 的所有圆来构成一个选择集。
下表中列出了过滤器表中所有可以使用的运算符。
选择集过滤器表中所用的关系运算符
"*" 任何情况(总是为真)
"=" 等于
"!=" 不等于
"/=" 不等于
"<>" 不等于
"<" 小于
"<=" 小于或等于
">" 大于
">=" 大于或等于
"&" 按位于与(AND)(仅适用于组值为整型的组)
"&=" 按位屏蔽相等(仅适用于组值为整型数的组)
关系运算符的使用取决于用户要测试的组的类型:
. 除去按位运算符("&"和"&=")之外,所有关系运算符对组为整型数和实型数的组都是有效的。
. 按位运算符"&"和"&=",仅应用于组值为整型数的组才是有效的。
如果((inter-group & filter)/=0)那么,按位"与"("&")才是真,也就是说,在屏蔽中的任何一引起位设置为1,在整型组值中那些对应位也为1 时,按位"与"("&")的结果才为真。
如果((integer-group & filter)=filter),按位屏蔽相等"&=",才是真,也就是说,在屏蔽中的所有位设置为1,在integer-group 中也设置为1,按位屏蔽相等"&="才是真(在integer-group 中的其它位可能也是置为1,但不对它作检测)。
. 对于表示点坐标的组,X,Y 和Z 测试可以组合成单个字符串,同时每个个运算符用逗号作分隔(例如: ">,>,*")。
如果一个运算符在字符串中被省略(例如:"=,<>"省略了Z 测试),则假定它是"*"运算符。
. 方向矢量(210 组)仅能用"*"、"="和"! ="运算符进行比较("! ="表示不等)。
. 组值为字符串的不能使用关系运算符进行测试,而要使用通配符进行比较。
(2)过滤器测试的逻辑分组
刚刚讨论过的关系运算符是二进制运算符。
通过知生成使用分组运算符嵌套布尔表达式,您也可以对组进行测试。
下表中列出了分组运算符。
分组运算符同-4 组指定,就象关系运算符那样。
分组运算符是成对出现的,在过滤器表中它们必须匹配正确,否则,ssget 函数调用就会失败。
用在选择集过滤器表中的分组运算符
起始运算符包含的内容结束运算符
"<AND" 一个或多个操作数"ADN>"
"<OR" 一个或多个操作数"OR>"
"<XOR" 两个操作数"XOR>"
"<NOT" 一个操作数"NOT>"
由分组运算符所使用的一个操作数是一个或多个图元域。
一个关系运算符后跟一个或多个图元域,或一个由这些运算符所生成的嵌套的表达式。
下面是一个在过滤器表中使用了分组运算符的实例:
(setq "X" '((-4. "<OR.")
(-4. "<AND")
(0."CIRCLE")
(40. 1.0)
(-4."AND>")
(-4."<AND")
(0."LINE")
(8."ABC")
(-4. "AND>")
(-4. "OR>")
)
)
这就选择了所有关径为1.0 的圆,外加在图层"ABC"上的所有直线。
由于分组运算符对小写是不敏感的,所以您可以使用与大写等价的小写形式,即:"<and"、"and>"、
"<or"、"or>"、"<xor"、"xor>"、"<not"以及"not>",...... 。
四. 实例
下面的程序实例用于改变现行图形中所有文本的尽无动于寸。
(defun C:chtext2 (a ts n in。