飞狼设计

 找回密码
 立即注册

QQ登录

飞狼线切割工具箱,飞狼刀模工具箱,业务合作QQ:2761588988,本站统一解压密码“work"
查看: 2305|回复: 1

SSGET 函数的使用

[复制链接]

74

主题

138

帖子

865

积分

高级会员

Rank: 4

积分
865
QQ
发表于 2024-6-13 14:37:06 | 显示全部楼层 |阅读模式
徕芬SE高速吹风机家用吹风筒低噪速干大功率风力负离子护发电吹风

注册即可查看图片

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
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)(仅适用于组值为整型的组)
                                                
     "&="   按位屏蔽相等(仅适用于组值为整型数的组)
                                                
   

回复

使用道具 举报

74

主题

138

帖子

865

积分

高级会员

Rank: 4

积分
865
QQ
 楼主| 发表于 2024-6-13 14:37:31 | 显示全部楼层
徕芬SE高速吹风机家用吹风筒低噪速干大功率风力负离子护发电吹风
关系运算符的使用取决于用户要测试的组的类型:

     . 除去按位运算符("&"和"&=")之外,所有关系运算符对组为整型数和实型数的组都是有效的。

     . 按位运算符"&"和"&=",仅应用于组值为整型数的组才是有效的。如果((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

不设定选取模式及过滤条件,以一般方式选取对象,并将选集储存在变量中

(SETQ GOP (SSGET))

不设定选取模式,但只将选取的文字对象加入选集,并将选集储存在变量中

(SETQ GOP (SSGET '((0 . "TEXT"))))

从上个选集中,选取所有圆对象形成新选集,并将选集储存在变量中

(SETQ GOP (SSGET "P" '((0. "CIRCLE"))))

用窗选模式,选取在指定范围内且图层为"DIM2"的所有对象

(SETQ GOP (SSGET "W" '(0 0) '(1000 1000) '((8 . "DIM2"))))

选取图面内所有在图层"0"的线对象

(SETQ GOP (SSGET "X" '((-4 . "<AND") (0 . "LINE") (8 . "0") (-4 . "AND>"))))

选取图面内所有半径大于0.75的圆对象

(SETQ GOP (SSGET "X" '((0 . "CIRCLE") (-4 . ">") (40 . 0.75))))

选取图面内所有包含有 S 字母的文字对象

(SETQ GOP (SSGET "X" '((0 . "TEXT") (1 . "*S*"))))

以多边形框选模式,并提供点串行参数作为框选时的各选取点;但不提供过滤条件

(SETQ GOP (SSGET "CP" '((0 0) (0 6) (6 6) (6 0))))

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|飞狼设计 ( 湘ICP备18021534号 )

GMT+8, 2025-4-17 16:31 , Processed in 0.108143 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2021 Comsenz Inc.

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