首页 SSGET 函数的使用

SSGET 函数的使用

举报
开通vip

SSGET 函数的使用SSGET函数的使用第1页共12页一.功能提示用户选择对象(图元),并返回一个选择集。二.格式(ssget[mode][pt1[pt2]][pt_list][filter_list])(SSGET[选取模式][选取点][选取点][点串行][过滤条件])三.说明(一).函数调用中各变元的说明mode变元是指定对象(图元)选择方法的一个字符串。有效的选择方法是:"W"、"WP"、"C"、"CP"、"L"、"P&...

SSGET 函数的使用
SSGET函数的使用第1页共12页一.功能提示用户选择对象(图元),并返回一个选择集。二. 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 (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函数忽略ObjectSnap(对象捕捉)的现行设置方式,除非您在调用本函数时专门指定了它。filter_list变元是指定对象特征的一个关联 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 。与filter_list匹配的那些对象被加入到选择集中。如果调用ssget函数时,省略所有变元,则ssget函数给出"Selectobject"提示,允许用户交互地构造选择集。选择集中可以包含图纸空间和模型空间两个空间中的对象,但该选择集由某一种操作所使用时,在现行空间中无效的那些对象会被过滤掉。由ssget函数返回的选择集中仅包含主图元(不包含属性和多义线的顶点图元)。下面给出一些使用实例。(1)(ssget)让用户用普通的对象选择方法选择对象,构成选择集。(2)(ssget"P")生成一个选择集,该选择集由最近所选择的那些对象所组成。(3)(ssget"L")生成一个选择集,该选择集由最后被增加到图形数据库中的那个可见对象组成。(4)(ssget"I")生成一个选择集,该选择集由PICKFIRST生效时所选择的那些对象组成。(5)(ssget'(2,2))生成一个选择集,该选择由通过点(2,2)的那些对象组成。(6)(ssget"w"(00)'(55))生成一个选择集,该选择集包含了由(0,0)到(5,5)定义的窗口中的所有对象。(7)(ssget"c"'(00)'(11)生成一个选择集,该选择集中既包含了由(0,0)到(1,1)定义的窗口中的所有对象,也包含了与这个窗口相交的那些对象。SSGET函数的使用第2页共12页(8)(ssget"X")生成一个选择集,该选择集中包含了现行图形数据库中的所有对象。(9)(ssget"X"filter_list)扫描图形数据库,将与过滤表filter_list匹配的那些对象组成一个选择集并返回。(10)(ssgetfilter_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_listfilter_list)生成一个选择集,该选择集中的所有对象既必须处于由点表pt_list定义的多边形内,也必须满足过滤器表filter_list中的条件。只有当一带变元调用ssget函数时,被选取的对象才会高亮显示。选择集会消耗AutoCAD临时文件存储区,AutoLISP不允许同时打开的选择集多于128个。如果选择集的数目达到了这个极限,AutoCAD会拒绝再生成选择集,再调用更多次ssget函数也只能是返回nil。为了关闭不再需要的选择集。可以将它设置为nil。对于任何以Last响应"Selectobject:"提示有效的地方,都可以向AutoCAD传递一个选择集变量。它将选择所传递的选择集中的所有对象。(二).关于选择集中过滤器的进一步讨论选择集过滤器表可以由任何方式所使用。您可以获得一个包含在给定图层上(或一个给定颜色、给定类型的全部对象的选择集。下面的实例中,返回一个选择集,该选择集中仅包含在PICKFIRST方式有效时所选择的那些对象中,颜色为兰色的直线段。(ssget"I"'((0."LINE")(62.5)))SSGET函数的使用第3页共12页使用过滤器表,您也能选择属于一个特定申请的包含在扩展数据中的全部对象。要达到这一目的,需要按如下方式-3组码:(ssget"P"'((0."CIRCLE")(-3("APPNAME"))))上述代码选择了申请"APPNAME"中所包含的扩展数据(1)过滤器表中的关系测试除非特别指定,否则对过滤器表filter_list中的每一项都隐含了一个“相等”测试。对于数值组(整数、实数、点以及矢量),通过包含了一个专用的-4组来指定一个关系运算符,您可以指定其它的关系。一个-4组的值是一个字符串,它用于指出要作用于过滤器表中随后的测试运算符。(ssget"X"'(((0."CIRCLE")(-4.">=")(40.2.0))))上述表达式,将选择半径大于或等于2.0的所有圆来构成一个选择集。下表中列出了过滤器表中所有可以使用的运算符。选择集过滤器表中所用的关系运算符____________________________________________"*"任何情况(总是为真)____________________________________________"="等于____________________________________________"!="不等于____________________________________________"/="不等于____________________________________________"<>"不等于____________________________________________"<"小于____________________________________________"<="小于或等于____________________________________________">"大于____________________________________________">="大于或等于____________________________________________SSGET函数的使用第4页共12页"&"按位于与(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>"_____________________________________________________SSGET函数的使用第5页共12页由分组运算符所使用的一个操作数是一个或多个图元域。一个关系运算符后跟一个或多个图元域,或一个由这些运算符所生成的嵌套的表达式。下面是一个在过滤器表中使用了分组运算符的实例:(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>",......。四.实例下面的程序实例用于改变现行图形中所有文本的尽无动于寸。(defunC:chtext2(atsnin不设定选取模式及过滤条件,以一般方式选取对象,并将选集储存在变量中(SETQGOP(SSGET))不设定选取模式,但只将选取的文字对象加入选集,并将选集储存在变量中(SETQGOP(SSGET'((0."TEXT"))))从上个选集中,选取所有圆对象形成新选集,并将选集储存在变量中(SETQGOP(SSGET"P"'((0."CIRCLE"))))用窗选模式,选取在指定范围内且图层为"DIM2"的所有对象(SETQGOP(SSGET"W"'(00)'(10001000)'((8."DIM2"))))选取图面内所有在图层"0"的线对象(SETQGOP(SSGET"X"'((-4."<AND")(0."LINE")(8."0")(-4."AND>"))))选取图面内所有半径大于0.75的圆对象(SETQGOP(SSGET"X"'((0."CIRCLE")(-4.">")(40.0.75))))选取图面内所有包含有S字母的文字对象(SETQGOP(SSGET"X"'((0."TEXT")(1."*S*"))))以多边形框选模式,并提供点串行参数作为框选时的各选取点;但不提供过滤条件(SETQGOP(SSGET"CP"'((00)(06)(66)(60))))SSGET函数的使用第6页共12页具体方法如下:(setqss(ssget":S"'((0."LINE"))));只选取一次直线(省约回车)(setqss(ssget"X"'((0."LINE"))));自动选取直线,包含冻结的直线(setqss(ssget"A"'((0."LINE"))));自动选取直线,不包含冻结的直线(setqss(ssget'((1."*[0-9]*"))));只选取含数字的文本(setqss(ssget'((1."*#*"))));只选取含数字的文本(setqss(ssget'((0."TEXT")(1."~*[~`--9]*"))));只选取数字文本(ssget'((0."TEXT")(-4.")(1."*[0-9]*")(-4."NOT>"));只选择不是数字的文字(ssget'((0."TEXT")(1."~*#*")));只选择不是数字的文字(setqss(ssget'((0."TEXT")(1."#,1#,2#,3#,4#,50"))));选取1—50的数字文本(SETQSS(SSGET'((0."*text")(1."*(*,*)*,*(*,**)**"))));选取含括号的文本(setqss(ssget'((1."*[a-A-z-Z]*"))));只选取字母(setqss(ssget'((0."~insert"))));选取不含块的对象(SETQss(ssget(list'(0."CIRCLE")(cons40RR))));按半径的大小选取圆(setqss(ssget":E:S"'((0."line"))));选取拾取框内的直线,选取不到就结束(setqss(ssget":E"'((0."LINE"))));选取拾取框内的直线,选取不到就不结束,直到按右键(setqss(ssget":N"'((0."LINE"))));只有通过窗口、窗交点拾取(setqss(ssget":D"'((0."LINE"))));会累加选取的直线,同一条直线,选取两次个数就会乘以2,3次则3.....(setqss(ssget":L"'((0."LINE"))));提示有几个在锁定图上,选取没有的锁定的直线(setqss(ssget"P"'((0."LINE"))));上次的选择集(setqss(ssget'((0."line")(8."~0"))));选取0层以外的线(setqss(ssget'((0."line")(8."~*[a-A-z-Z]*"))));选取图层名不含字母以外的线(setqss(ssget'((0."CIRCLE")(-3("APPNAME")))));选取带扩展数据的实体(圆);得到矩形p1p2点框内的文字,包含在框内的被选取相交的不选取,屏幕外的选取不到,WP点集(setqss(ssget"w"pt1pt3'((0."*text"))));得到矩形p1p2点框内的文字,包含在框内的及和框相交的被选取,屏幕外的选取不到,CP点集(setqss(ssget"c"pt1pt3'((0."*text"))));线相交的线删除(屏幕外的选取不到郁闷所以要用zoom"ob")(defunc:XX(/ptptlss)(setqptlnil)(while(setqpt(getpoint))SSGET函数的使用第7页共12页(setqptl(consptptl)))(setqss(ssget"f"ptl'((0."line"))))(KX-ESS));选取图层表("CENTER""DIM""COOL""CORE"-------N个图层)内的线(setqla'("CENTER""DIM""COOL""CORE")ss(ssget(list'(0."LINE")(cons8(apply'strcat(mapcar'(lambda(x)(strcatx","))la))))));选取经过某点的实体(setqpt(getpoint))(setqss(ssget"C"ptpt));选取不含数字的文本(setqss(ssget'((-4.")(0."*TEXT")(-4.")(1."*[0-9]*")(-4."NOT>")(-4."AND>"))));只选取不含字母的文本(setqss(ssget'((-4.")(0."*TEXT")(-4.")(1."*[a-A-z-Z]*")(-4."NOT>")(-4."AND>")SSGET函数的使用第8页共12页)));------------------------------------------------------------------------------------------------------------;"图层1""图层2""图层n中的文本,图层1为层名(SETQSS(ssget"x"(list'(0."TEXT")(cons8"图层[1-n]"))));------------------------------------------------------------------------------------------------------------;选取0层以外的线(setqss(ssget'((-4.")(0."line")(-4.")(8."0")(-4."NOT>")(-4."AND>"))));------------------------------------------------------------------------------------------------------------;按颜色号选取对象(setqcol(KX-Int7"""颜色号"col1))(setqSS(ssget(list'(-4.")SSGET函数的使用第9页共12页(cons62COL)'(-4."OR>"))));-----------------------------------------------------------------------------------------------------------;选取含KX的文本(setqXT(strcat"*""KX""*"));KX为文字内容(ssget(list'(0."text")(cons1XT)));-----------------------------------------------------------------------------------------------------------;判断选取某个区域有没有直线(setqSS(ssget"c"(polar'(00)(*0.25pi)0.5);坐标点(polar'(00)(*1.25pi)0.5);坐标点'((0."LINE"))));-----------------------------------------------------------------------------------------------------------;选取颜色不是随层的圆、直线(setqSS(ssget"X"'((0."CIRCLE,LINE")(-4."/=")(62.256);-462"面不可以加ANDOR)));------------------------------------------------------------------------------------------------------------;选取颜色1和2的对象(OR)的用法SSGET函数的使用第10页共12页(setqss(ssget'((-4.")(62.2)(62.1)(-4."or>"))));--------------------------------------------------------------------------------------------------------------;选取半径大于20小于100的圆(setqss(ssget'((-4.")(0."circle")(-4.">")(40.20);大于20(-4."<")(40.100);小于100(-4."and>"))));--------------------------------------------------------------------------------------------------------------;只选取"文字(包括多行文字)、尺寸、带属性的块(setqss(SSGET'((-4.")(0."*TEXT,DIMENSION")(-4.")(0."INSERT")(66.1)(-4."AND>")(-4."OR>"))))SSGET函数的使用第11页共12页;--------------------------------------------------------------------------------------------------------------;屏幕外的窗口模式选取(setqrec_p1'(00));窗口左下角点(setqrec_p2'(10001000));窗口右上角点(setqfilter_list(list'(0."insert")'(-4.")'(-4.">,>,*")(cons10rec_p1)'(-4."<,<,*")(cons10rec_p2)'(-4."and>")))(ssget"x"filter_list);--------------------------------------------------------------------------------------------------------------;--------------------------------------------------------------------------------------------------------------;一次产生n个不同选取集(if(setqss(ssget))(setqss1(ssget"_p"'((0."*TEXT")))));从选择集中分解出文字;空回车得出不同结果的选取集(if(setqss(ssget))(setqss(ssget"_p"flt))(setqss(ssget"_x"flt)));--------------------------------------------------------------------------------------------------------------;;;坐标范围选择,有点类似(ssget"c"p1p2filter),但本函数在屏幕外的也可选择;;;测试(tt(getpoint)(getpoint)'((0."insert")))(defuntt(p1p2filter/minXminYmaxXmaxY)(setqminX(min(carp1)(carp2))minY(min(cadrp1)(cadrp2))maxX(max(carp1)(carp2))maxY(max(cadrp1)(cadrp2))SSGET函数的使用第12页共12页)(iffilter(ssget"x"(append(list'(-4.")'(-4.">=,>=,*")(list10minXminY0)'(-4."<=,<=,*")(list10maxXmaxY0))(appendfilter'((-4."and>")))))(ssget"X"(list'(-4.")'(-4.">=,>=,*")(list10minXminY0)'(-4."<=,<=,*")(list10maxXmaxY0)'(-4."and>")
本文档为【SSGET 函数的使用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥16.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
绘画的问号
暂无简介~
格式:pdf
大小:358KB
软件:PDF阅读器
页数:0
分类:高中语文
上传时间:2020-03-09
浏览量:1