




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1选择集的处理所谓选择集是指图形中选定的部分图元或所有图元的集合。
AutoLISP提供了选择以下六种有关选择集的处理函数:1)ssget-----创建选择集2)ssadd-----把图元加到选择集中3)ssdel-----从选择集中删除图元4)sslength—测定选择集中的图元数5)ssname----从选择集中获取图元名6)ssmemb----测试图元是否为选择集成员5.1.1创建选择集调用格式1:(ssget[方式][点1][点2])有如下形式:1)(ssget)不带任何参数,请求进行一般图元选择。2)(ssget‘(2035))----选择通过点“20,35”的图元。3)(ssget“L”)----选择最新加入数据库的图元。4)(ssget“P”)----选择前一次已选择过的图元。5)(ssget“W”‘(00)‘(55))----选择窗口内的图元。6)(ssget“C”‘(00)‘(55))----选择窗口涉及的图元。7)(ssget“wp”[点1][点2]…)----多边形窗口方式选择。8)(ssget“cp”[点1][点2]…)----多边形窗叉方式选择。9)(ssget“F”[点1][点2]…)----折线方式选择。10)(ssget“X”)----选择全部图元。调用格式2:(ssget“X”[过滤表])例如:(ssget“x”‘((0.“CIRCLE”)))---选择所有的圆。(ssget“x”‘((8.“3”)))----选择层3上的所有图元。(ssget“x”‘((0.“CIRCLE”)(8.“3”)(62.1)))----选择层3上红颜色的圆。说明:1)用ssget函数只能选择主图元,而不能选择子图元。2)选择集可以保存于AutoLISP变量中。如:(setqs1(ssget“x”‘((0.“LINE”)(8.“3”))))3)选择集中的图元是唯一的。4)当前图形中建立的选择集数量不能多于128个,如果超过这个极限,则ssget函数将返回nil。过滤DXF码组码意义数据类型应用0图元类型字符串(0.“CIRCLE”)2插入块名字符串(2.“BLOCK”)3尺寸图元方式字符串(3.“TOLERANCE”)6线形名字符串(6.“CONTINUOUS”)7字型名字符串(7.“STANDARD”)8层名字符串(8.“BLOCK”)38标高实型(38.5.0)39厚度实型(39.8.0)62颜色号整型(62.1)
构造选择集举例:(setqa1(ssget‘((0.“TEXT”))));选择文本加入选择集(setqa2(ssget‘((0.“LINE”))));选择线图元加入选择集(setqa3(ssget“L”‘((0.“CIRCLE”))));选择最近画的一个圆(setqa4(ssget“P”‘((8.“1”))));选择前一个选择集中1层上的图元(setqa5(ssget“X”‘((62.3))));选择绿色图元加入选择集(setqa6(ssget“X”‘((0.“CIRCLE”)(8.“2”)(62.1))))
;选择2层上红色圆加入选择集(1)通配符模式过滤器序列中指定的符号名称可包含通配符模式,常用的通配符如下:?匹配任何单个字符匹配任何单个字母#匹配任何单个数字.匹配除字母和数字之外的任何单个字符*匹配任何字符串,包括null串[-]匹配连字符范围内的字符,如[1-5]通配符可单独使用,也可组合使用,其中最常用的是“*”和“?”。例如:(setqs(ssget“X”‘((8.“A*”))));表示层名第一个子母为A的所有层均被加入选择集。(2)关系测试=等于!=/=<>不等于<小于>大于<=小于等于>=大于等于*恒为真&位与&=位屏蔽例如:(setqs(ssget“X”‘((0.“CIRCLE”)(-4.”>”)(40.20.0))));所有半径大于20的圆加入选择集。(3)逻辑分组通过应用逻辑分组运算符,可以创建更为复杂的多层嵌套关系测试。逻辑分组运算符如下:<ANDAND>与运算,测试一个或多个DXF组<OROR>或运算,测试一个或多个DXF组<XORXOR>异或运算,测试两个DXF组<NOTNOT>非运算,测试一个DXF组例如:(setqs(ssget“X”‘((-4.“<OR”)(8.“1”)(8.“2”)(-4.“OR>”))))表示创建由1层或2层上的图元组成的选择集。5.1.2操作选择集1)(ssadd[图元名][选择集]);向选择集中加入图元建立空集---(setqs1(ssadd))建立只有一个图元的选择集---
(setqs2(ssadd[图元名]))2)(ssdel[图元名][选择集]);从选择集中删除图元3)(sslength[选择集]);获取选择集中图元个数(说明:使用sslength应保证所构造的选择集不为nil.)4)(ssname[选择集][序号]);获取选择集中图元名5)(ssmemb[图元名][选择集]);测试指定图元是否为选择集中成员。是则返回该图元名,否则返回nil.若要释放选择集s,可执行:(setqsnil)5.1.3选择集操作函数实例例1:选择屏幕上要保留的图形,删除其它为被选种的图形。(defunc:remainder(/s1s2s3nent)(setqs1(ssget)s2(ssget“x”))(if(nots1)(command“erase”s2“”)(progn(setqs3(ssadd)n0)(repeat(sslengths2)(setqent(ssnames2n))(if(not(ssmembents1))(ssaddents3))(setqn(1+n)));repeat(command“erase”s3“”“redraw”));progn);if);end例2:改变现行图形中所有文本的尺寸大小(defunc:chtxt(/atsnindexb1bcdb2)(setqa(ssget“X”‘((0.“TEXT”))))(setqts(getdist“\nEnternewtextsize:”))(setqn(sslengtha))(setqindex0)(repeatn(setqb1(entget(ssnameaindex)))(setqindex(+index1))(setqc(assoc40b1))(setqd(cons(carc)ts)))(setqb2(substdcb1))(entmodb2));repeat);end5.2处理图元对象AutoLISP提供了下列用于图元对象处理的函数:Entlast获取图形数据库中最后一个图元名Entnext获取图形数据库中下一个图元名Entsel选择图元并获取图元名Handent获取带有指定句柄的图元名称Nentsel选择图元并获取子图元名Nentselp获取子图元名Entget获取图元数据表Entmod更新图元数据Entupd更新复杂图元的屏幕显示Entmake创建图元Entdel删除指定图元5.2.1获取图元名称图元名是一个指向AutoCAD图形编辑程序的文件指针,只有通过图元名,才能对图形数据库中图元进行访问、编辑和修改。因此,在对图元进行编辑修改之前,获取图元名是非常重要的。1.按图元顺序获取图元名称(entnext)---获取图形数据库中第一个图元名称(entnext[图元名])---获取该图元之后的图元名(entlast)---获取最后一个图元的名称例如:(setqe1(entnext))返回:<Entityname:[第一个图元名编码]>(setqe2(entnexte1))返回:第二个图元名(setqe(entlast))返回:最后一个图元名2.按图元位置获取图元名称(entsel[提示串])---返回:([图元名][坐标点表])(entsel)---提示串缺省将出现:Selectobjects:例:编程在屏幕上画一条线和一个圆,并过圆心向直线作垂线。(defunc:ents()(command"line"'(1010)'(8080)"")(command"circle""30,100"40)(setqpt1(cadr(entsel"selectaline:")))(setqpt2(cadr(entsel"setlectacircle:")))(setqpt3(osnappt2"cen"))(command"line"pt3(osnappt1"per")""));end程序运行结果:3.图元句柄及其用法由于在每次绘图时图元名都可能变化,这使得在某些场合应用图元名不方便。而图元句柄在图形整个生命周期中都是不变的,因此,如果应用程序在不同时刻必须引用同一图形中的同一对象时,最好使用图元句柄。调用格式:(handent[图元句柄])功能:返回当前编辑期间使用的与图元句柄对应的图元名。例:(handent“5A2”)返回:<Entityname:60004722>4.获取子图元名(nentsel[提示串]);返回复杂图元的子图元名(nentselp[图元上指定点]);同上5.2.2修改图元数据1)获取图元数据表调用格式:(entget[图元名])功能:返回一个该图元名定义的图元的数据表。例如:在屏幕上用“CIRCLE”命令画了一个圆,其中圆心坐标点为“200,200”,半径为50。为了在屏幕上以缩进形式显示该图元数据表的内容,变成如下:(defunc:pe()(setqa(entlast)aa(entgeta)c0)(textscr)(princ"\nDataoflastentity:")(repeat(lengthaa)(terpri)(princ(nthcaa))(setqc(1+c)));repeat(princ));end程序运行后,图元数据表显示如下:Dataoflastentity:(-1.<Entityname:147dd68>)(0.CIRCLE)(330.<Entityname:147dcf8>)(5.2D)(100.AcDbEntity)(67.0)(410.Model)(8.0)(100.AcDbCircle)(10200.0200.00.0)(40.50.0)(2100.00.01.0)2)修改、更新图元数据a)接受修改的图元数据表---entmod调用格式:(entmod[图元数据表])例如:在屏幕上用“LINE”命令画一直线,已知起点坐标为“2,2”,终点坐标为“8,8”。编程修改端点的数据:(setqe(entlast));获取图元名(setqel(entgete));获取该图元的数据表(setqel(subst‘(1120.09.0)(assoc11el)el));修改(entmodel);接受新的数据表说明:entmod不能更改图元的类型和图元句柄;图元数据表中须修改的数据在执行entmod之前必须存在。b)更新复杂图元屏幕图象---entupd调用格式:(entupd[图元名])功能:使修改了图元数据的图形在屏幕上更新显示。主要用于复杂图元的更新,对于简单图元用entmot函数即可更新。注意:在执行entupd函数之前,必须先执行entmod。例如:设图中最后一个图元是一条有若干顶点的多义线,若要修改多义线的第一个顶点,可编程如下:(setqe1(entlast));置e1为多义线的图元名(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- gps考试试题及答案
- 配送员考试试题及答案
- 新疆遴选公务员笔试题及答案
- 对口考试试题及答案
- 临床营养考试试题及答案
- 企业招聘考试试题及答案
- 新华保险考试试题及答案
- 2025建筑项目调解合同
- 2025-2030中国出气筒行业市场发展趋势与前景展望战略研究报告
- 2025甘肃省内铁路系统安检工作人员招聘40人(第二期)笔试参考题库附带答案详解
- 情绪管理技巧在校园生活中的应用
- 公共关系礼仪实务(上海理工大学)超星尔雅学习通考试题库及答案
- 【MOOC】食品化学-西北农林科技大学 中国大学慕课MOOC答案
- 2024年江苏泰州市第五人民医院招考聘用备案制人员165人管理单位遴选500模拟题附带答案详解
- Unit 4 My Favourite Subject .大单元整体说课稿2024-2025学年人教版英语七年级上册
- 二位数乘二位数600道
- 脓毒血症护理课件
- 南航集团招聘笔试题库2024
- 新能源发电技术 课件 第七章-新能源发电的故障穿越技术
- 医学伦理学智慧树知到答案2024年宁波大学
- 质量为纲-华为公司质量理念与实践
评论
0/150
提交评论