图形数据编辑函数课件.ppt

上传人(卖家):晟晟文业 文档编号:5115653 上传时间:2023-02-12 格式:PPT 页数:46 大小:143.50KB
下载 相关 举报
图形数据编辑函数课件.ppt_第1页
第1页 / 共46页
图形数据编辑函数课件.ppt_第2页
第2页 / 共46页
图形数据编辑函数课件.ppt_第3页
第3页 / 共46页
图形数据编辑函数课件.ppt_第4页
第4页 / 共46页
图形数据编辑函数课件.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、第八章图形数据编辑函数8.1基本概念8.1.1实体实体是AutoCAD预定义的图形元素,也成图形。实体类型名有POINT、LINE 、CIRCLE、ARC、TEXT等。在AutoCAD中有一些实体为复杂实体,例如带属性的插入块和多义线。每个复杂实体在图形中都有一个主实体和若干个子实体。主实体和子实体都有实体类型名。8.1.2实体名实体名实际上是一个指向AutoCAD图形编辑程序维护的文件指针,通过该指针,AutoCAD能够找到该实体在当前图形数据库中的记录和向量(例如在屏幕显示)实体名在不同的图形编辑期间是变化的。(type 实体名)返回 ENAME8.1.3实体标号实体标号是唯一的、固定不变

2、的标识符,在不同的图形编辑期间不变,与实体一起存入图形文件。8.1.4选择集是实体的有序集合。(type 选择集)返回 PICKSET注意:实体名和选择集只能从图形编辑期间从AutoCAD获得,并且在图形编辑期间才有效,当退出AutoCAD的图形编辑状态,他们被自动删除。只有实体标号和实体一起存入图形文件。在AutoCAD2000中,一个AutoLISP应用程序最多有128个选择集,不同版本个数不同。8.2选择集操作函数(ssget sel-method pt1 pt2 pt-list filter-list)选择集中可以包含图纸空间和模型空间两个空间中的对象,但该选择集用于其操作时,那些在当

3、前无效的空间中的对象会被 ssget 过滤掉。由 ssget 函数返回的选择集中仅包含主图元(不包含属性和多段线顶点)。参数sel-method 字符串,指定对象选择方法。ssget的选项sel-method方式选择方法原型none用户选择或单点选择(如果pt1被指定)(ssget)或(ssget pt1)L屏幕上可见的最后生成的实体(ssget L)P前一个选择集(ssget P)I隐含的选择集(PICKFIRST为ON时建立的前一个选择集(ssget I)W窗口选择(内)(ssget W pt1 pt2)C交叉窗口选择(交与内)(ssget C pt1 pt2)F栅栏选择(开口多边形)(交

4、)(ssget F pt-list)CP交叉多边形(交与内)(ssget CP pt-list)WP窗口多边形(内)(ssget WP pt-list)X选择所有实体(ssget X)说明:(ssget pt1)如果几个实体过点pt1,也只选择一个实体。(ssget L)可见最后生成的实体,不一定是最后生成的实体。pt1、pt2和pt-list二维和三维点等效,所谓通过和相交是在构造平面上的投影。例如:(setq p1(0.0,0.0)p2(5.0 5.0)p3(4.0 1.0)(setq ss(ssget F(list p1 p2 p3)当选择集不再使用时,把它设为nil,释放内存。(set

5、q ss nil)8.2.1.1选择集过滤器表filter-list图元过滤器表是一个使用 DXF 组码的关联表,其格式与由 entget 返回的表的格式相同。除了图元名(组码-1)、句柄(组码 5)和扩展数据代码(大于 1000 的组码)以外,函数 ssget 可识别其他所有组码。如果在过滤器表中使用了无效的组码,则 ssget 将其忽略。要想用扩展数据搜索对象,可使用组码-3。可用于所有实体的组码(常用的)组码含义缺省值1实体名(每次打开图形都会改变)不能缺省0实体类型不能缺省8层名不能缺省5句柄(实体标号)不能缺省6线型名(非BYLAYER时出现)BYLAYER62颜色号(非BYLAYE

6、R时出现)BYLAYER常用实体常用组码实体名组码含义LINE10起始点11结束点ARC10圆心40半径50起始角51结束较CIRCLE10圆心40半径TEXT1文本值40高度例题:(setq ss(ssget(0.TEXT)或(setq ss(ssget(list(cons 0 TEXT)(setq layname FLOOR)(setq s(ssget x(list(cons 0 CIRCLE)(cons 8 layname)提示用户选择要加入选择集的对象:(ssget)创建通过点(2,2)的对象的选择集:(ssget(2 2)创建一个选择集,该选择集由最近所选择的对象组成:(ssget

7、_P)创建一个选择集,该选择集由交叉窗选而成,交叉窗口的对角顶点是(0,0)和(1,1):(ssget _C(0 0)(1 1)创建一个选择集,该选择集由从(0,0)到(5,5)的窗口中包含的所有对象组成:(ssget _W(0 0)(5 5)通过指定过滤器,可以获得由指定类型、图层或颜色的所有对象构成的选择集。下例返回的选择集仅包含隐含选择集中的蓝色直线(这些对象是在 PICKFIRST 有效时选取的):(ssget _I(0.LINE)(62.5)下例中需要将点表传递给 ssget 函数。pt_list 变量不能包含定义零长度线段的点。创建点表:(setq pt_list(1 1)(3 1

8、)(5 2)(2 4)创建一个选择集,该选择集由 pt_list 所定义的多边形包含或与之相交的所有图元组成:(ssget _CP pt_list)创建一个选择集,该选择集由 pt_list 所定义的多边形包含的所有蓝色线段组成:(ssget _WP pt_list(0.LINE)(62.5)8.2.1.2过滤表中的通配符与函数wcmatch相同。通配符定义#(磅值符号)匹配任意单个数值字符 (at)匹配任意单个字母字符.(句号)匹配任意单个非字母数值字符*(星号)匹配任意字符序列,包括空字符串,它可以出现在任何位置,包括开头、中间和结尾处?(问号)匹配任意单个字符 (波浪号)如果它是模式字符

9、串的第一个字符,则匹配除此字符串之外的任意字符串.匹配括号中的任意一个字符,如“FLR1-5,8.匹配不在括号中的任意单个字符如A-G,X-Z-(连字符)用在括号里面,用来指明单个字符的取值范围,如1-5,(逗点)分隔两个模式字符串(单引号)特殊转义字符(按字义读取随后的字符)*,*例如(ssget X(6.DASH*)8.2.1.3过滤表的关系运算符如果没有指定关系运算符,对过滤器中的每一项都隐式使用等式测试。对于数字组(整数、实数、点和矢量),通过-4组码指定一种关系。4组码的值是字符串,指定过滤器表中下一组的测试运算符。选择集过滤表的关系运算符运算符说明任何情况总为真=!=、/=、=&按

10、位与(仅限于整数组)(integer_group&filter)/=0)&=按位屏蔽相等(仅限于整数组)(integer_group&filter)=filter)按位运算符“&”和“&=”只对值为整数的组有效。(integer_group&filter)/=0),也就是说 integer_group 屏蔽位中有任一位为 1 时,按位与“&”就为真。只有(integer_group&filter)=filter),也就是说 integer_group 所有屏蔽位全为 1 时,按位屏蔽相等“&=”才为真(在 integer_group 中可能也设置了其他位,但不作检测)。说明1.对于点组,对X、

11、Y、和Z坐标测试可以组合成单个字符串,只需将每个运算符用逗号分开,例如,*2.方向矢量(210组)只能使用“”、“”、“!”运算符。3.不能用关系运算符测试字符串,而应该用通配符测试。例如(ssget X(0.CIRCLE)(-4.=)(40.2.0)8.2.1.4选择集过滤器表的逻辑分组运算符选择集过滤器表的逻辑分组运算符通过逻辑分组运算符,可以创建更复杂的多层嵌套关系测试。选择集过滤器表中的分组运算符选择集过滤器表中的分组运算符起始运算符包含的内容结束运算符分组运算符不分大小写。(ssget X (-4.OR)(-4.)(-4.)(-4.OR)分组运算符不允许在-3 组中。-3 组中指定的

12、多个应用程序名隐式地使用 AND 运算符。如果用其他分组运算符测试扩展数据,指定单独的-3 组并根据需要将其分组。要选择包含“APP1”或“APP2”应用程序之一(非全部)的扩展数据的所有圆,请输入下列内容:(ssget X (0.CIRCLE)(-4.)通过将后续分组运算符设置为符号,可以简化其编码方式。上一个样例可改写为下列代码(注意在下面的样例中必须显式地引用每个表):(setq xor(-4.(-4.XOR)(ssget X (list (0.CIRCLE)8.2.2选择集操作函数1、测试选择集长度函数sselngth(sslength ss)返回选择集含主实体的个数,整型。ss 选择

13、集,不能为nil2、实体名检索函数ssname(ssname ss index)返回选择集ss中第index(从零排,整型)个主实体名,若index为负数或大于选择集ss中最大的实体编号,返回nil。3、向选择集中加入新实体函数ssadd(ssadd ename ss)ename 实体名 ss 选择集1)(ssadd)返回一个空选择集2)(ssadd ename)返回只包含ename的选择集3)(ssadd ename ss)将ename加入到选择集ss中,并排在最后,同时返回加入实体后的选择集,同时ss为引用传递。如果ename已在ss中,ssadd无操作,且不报告任何错误信息。例如:已知选

14、择集ss的长度为3,en实体不在其中。(sslength ss)返回3(ssadd en ss)返回新的ss,没有必要写成(setq ss(ssadd en ss)(sslength ss)反回44、从选择集中移出实体函数ssdel(ssdel ename ss)从选择集ss中移出实体ename,返回修改后的选择集。若实体ename不在ss中,ssdel返回nil。5、测试实体是否是选择集的成员函数ssmemb(ssmemb ename ss)若实体ename是选择集ss的成员,ssmemb返回ename,否则返回nil8.3实体名和选择集和AutoCAD一起使用对于AutoCAD的实体选择提

15、示,输入实体名和选择集(前加感叹号!)都是有效的。例题:命令:(setq ss(ssget x(0.LINE)(8.0)命令:erase选择对象:!ss (前加感叹号!)找到 3 个选择对象:命令:8.4实体名操作函数8.4.1实体名搜索函数entnext(entnext ename)返回图形中的下一个对象(图元)名参数ename 现有图元的名称。返回值如果不带参数调用 entnext 函数,它返回数据库中第一个未被删除的图元名。如果带参数 ename 调用该函数,它返回数据库中 ename 图元后的下一个未被删除的图元名。如果数据库中不存在下一个图元,它返回 nil。entnext 函数既可

16、以返回主图元,又可以返回子图元。样例(setq e1(entnext);设置 e1 为图形中一个图元的名称(setq e2(entnext e1);设置 e2 为 e1 后的图元的名称 注意ssget 函数所形成的选择集中只包含主图元,不包含块属性或多段线顶点。可以通过调用 entnext 函数遍历复杂图元的子图元来访问复杂图元的内部结构。获取子图元名后,可以象处理其他图元一样处理子图元。获取子图元名后,还可以用以下方法找到它的主图元:调用 entnext 函数直至找到 SEQEND 图元,该图元的-2 组中即包含了它的主图元名。8.4.2返回图形中最后那个未删除的主对象(图元)名称(entl

17、ast)entlast 函数经常用于获得刚用 command 函数加入到图形中的新图元的图元名。该函数选择的图元不一定要显示在屏幕上,也不一定要处于解冻状态。返回值对象名称。如果当前图形中没有对象,则返回 nil。样例将变量 e1 设为添加到图形中的最后一个图元的名称:命令:(setq e1(entlast)如果应用程序需要最后那个未删除图元(主图元或子图元),可用以下函数代替 entlast。(defun lastent(/a b)(if(setq a(entlast)获取最后一个主图元 (while(setq b(entnext a)如果随后有子图元,循环 (setq a b)直至最后一个

18、子图元 )a 返回最后一个主图元)或子图元 8.4.3提示用户通过指定一个点来选择单个对象(图元)(entsel msg)参数msg 用于提示用户的字符串。如果省略该参数,则提示信息为“选择对象”。返回值表,其中第一个元素是用户所选对象的图元名,第二个元素是用户选择对象时指定的拾取点的坐标值(用当前 UCS 表示)。entsel 函数返回的拾取点不一定在所选对象上,它返回的是选择对象时十字光标的位置。拾取点和对象之间的关系依赖于拾取框的尺寸和当前缩放比例。样例下面的 AutoCAD 命令说明了 entsel 函数的使用方法及其返回的表:命令:line 起点:1,1 下一点:6,6 下一点:EN

19、TER 命令:(setq e(entsel 请选择一个对象:)请选择一个对象:3,3(3.0 3.0 0.0)有时候在操作一个对象时,不但需要选中一个对象,同时还需要知道指定的点。例如在 AutoCAD 中的 Object Snap 以及 BREAK、TRIM 和 EXTEND 命令中就是这样。entsel 使得 AutoLISP 程序可以实现这种操作。它通过选取点的方式来选取单个对象。entsel 函数支持它前面通过调用 initget 函数设置的关键字(区分关键词和临时捕捉方式,临时捕捉方式优先)。命令:(initget End)nil 命令:(setq en(entsel n选择实体:)

20、选择实体:e End 命令:(initget End)nil 命令:(setq en(entsel n选择实体:)选择实体:end 于(250.165 87.4175 0.0)命令:命令:line 指定第一点:4,4 指定下一点或 放弃(U):6,4 指定下一点或 放弃(U):命令:(setq en(entsel)选择对象:5.5,4(5.5 4.0 0.0)命令:break 选择对象:!en 或(list(entlast)(5.5 4.0 0.0)(5.5 4.0 0.0)指定第二个打断点 或 第一点(F):5.4,4 命令:8.4.4根据对象(图元)的句柄返回它的对象(图元)名(hande

21、nt handle)handent 函数既可以返回图形对象的名称,又可以返回非图形对象的名称。参数handle 表示图元句柄的字符串。返回值如果调用成功,handent 函数返回在当前编辑任务期间与该图元句柄相关联的图元名。如果传给 handent 函数一个没有被当前图形的任何图元使用的句柄,它会返回 nil。handent 函数可以返回在当前编辑任务期间被删除的对象的名称,然后用户可以调用 entdel 函数恢复它。在不同的编辑任务期间同一个图元的对象名可能会不同,但图元的句柄却保持不变。(AutoCAD2000中系统变量handles为只读)样例命令:(handent 5A2)在不同的编辑

22、任务中对同一个图形同样地执行上述代码,可能会返回不同的图元名。一旦获取到图元名,就可以用它调用与图元有关的函数来处理该图元。5.4实体数据函数获得对象(图元)的定义数据(entget ename applist)参数ename 要查询的图元的名称。ename 可以为图形或非图形图元。applist 注册应用名的列表。返回值包含了 ename 对象定义数据的关联表,这同时适用于图形对象和非图形对象。如果指定了可选参数 applist,entget 函数还会返回与这些应用名相关的扩展数据。该关联表中的每一项都被指定了一个 AutoCAD 的 DXF 组码,来描述图元数据的各种性质。请注意 Auto

23、LISP 所用的 DXF 组码与 DXF 文件中的组码稍有不同。关于 AutoLISP 的 DXF 组码的详细信息,请参见 DXF Reference。样例在本例中,当前图形应用下列(缺省)条件:图层为 0 线型为 CONTINUOUS(连续)标高为 0用户用下列命令绘制了一条直线。命令:line 指定第一点:1,2 指定下一点:6,6 指定下一点:ENTER 应用程序调用下列的 AutoLISP 函数可获取并打印该直线的定义数据:(defun C:PRINTDXF()(setq ent(entlast);设置 ent 为最新图元 (setq entl(entget ent);设置 entl

24、为最新图元的数据关联表 (setq ct 0);设置 ct(计数器)为 0 (textpage);切换到文本屏幕 (princ nentget of last entity:)(repeat(length entl);重复次数为表中成员数 (print(nth ct entl);表中每个成员后换行 (setq ct(1+ct);计数器加一 )(princ);静默退出)打印结果如下:entget of last entity:(-1.)图元名(0.LINE)图元类型名(330.)图元名(5.69)句柄(100.AcDbEntity)子类标记(67.0)空间(410.Model)空间(8.0)图层

25、名(100.AcDbLine)图元类型名(10 1.0 2.0 0.0)线段起点(11 6.0 6.0 0.0)线段终点(210 0.0 0.0 1.0)延伸方向;计算地板采暖的管长(defun c:len(/s l i en pt1 pt2)(setq s(ssget(0.LINE)(if s (progn (setq l 0.0 i-1)(while(setq i (1+i)en(ssname s i)(setq pt1(cdr(assoc 10(entget en)(setq pt2(cdr(assoc 11(entget en)(setq pt1(trans pt1 en 1)pt2(

26、trans pt2 en 1);转换为用户坐标 (setq pt1(list(car pt1)(cadr pt1);变二维 (setq l(+l(distance pt1 pt2)(princ n管长:)(princ l)(princ)8.5.2修改对象(图元)的定义数据(entmod elist)entmod 函数更新由 elist 的-1 组中指定的图元名的数据库信息。AutoLISP 更新数据库信息的基本方法是,先用 entget 函数获得图元的定义数据,修改定义图元的表,然后用 entmod 函数来更新数据库中的图元。entmod 函数既可以修改图形对象,又可以修改非图形对象。参数el

27、ist 与 entget 函数返回表相同格式的表对于那些使用浮点值的图元域(如厚度),entmod 函数可以接受整数,并将其转换成浮点数。与此类似,对于使用整数的图元域(如颜色代码),如果提供的是浮点数,entmod 函数会切除其小数部分,将其转换成整数。返回值如果成功,则 entmod 返回 elist。如果 entmod 不能修改指定图元,则函数返回 nil。样例下列命令获取图元的特性,然后修改图元。将变量 en1 的值设置为图形中的一个图元的名称:命令:(setq en1(entnext)将图元 en1 的图元数据保存在变量 ed 中:命令:(setq ed(entget en1)(-1

28、.)(0.CIRCLE)(5.4C)(100.AcDbEntity)(67.0)(8.0)(100.AcDbCircle)(10 3.45373 6.21635 0.0)(40.2.94827)(210 0.0 0.0 1.0)将 ed 中的图层组从图层 0 改为图层 1:命令:(setq ed(subst(cons 8 1)(assoc 8 ed)ed)(-1.)(0.CIRCLE)(5.4C)(100.AcDbEntity)(67.0)(8.1)(100.AcDbCircle)(10 3.45373 6.21635 0.0)(40.2.94827)(210 0.0 0.0 1.0)修改图形

29、中 en1 图元的图层:命令:(entmod ed)(-1.)(0.CIRCLE)(5.4C)(100.AcDbEntity)(67.0)(8.1)(100.AcDbCircle)(10 3.45373 6.21635 0.0)(40.2.94827)(210 0.0 0.0 1.0)entmod 的使用限制关于 entmod 函数所作的修改有一些限制:不能改变一个图元的类型和句柄。如果一定要这样做,只能先调用 entdel 函数删除它,然后调用 command 或 entmake 函数创建新图元。entmod 函数不能修改内部域,如 SEQEND 图元的-2 组中的图元名,如果试图作这样的修

30、改,将会被系统忽略。不能使用 entmod 函数修改视口图元(viewport)。可以将图元的空间可见性改为 0 或 1(视口对象除外)。如果用 entmod 函数修改了块定义中的图元,该修改会影响图形中该块的所有实例。在用 entmod 函数修改顶点图元前,应先读出或写入多段线的头部。如果最近处理的多段线图元不是该顶点所在的多段线,可能会丢失宽度信息(40 和 41 组)。警告!可以用 entmod 函数修改块定义中的图元,但这样做可能会生成引用自身的块,导致 AutoCAD 系统崩溃。用entmod修改主实体时,修改结果会显示在屏幕上显示出来,当修改子实体时,修改结果不会显示在屏幕上,必须

31、调用entupd函数。elist中的文字样式、线性、行和块在当前图形中被定义,但参照的层可以没被定义(entmod可以利用缺省值创建一个新层);改变所选择的文本度(defun c:chgtext(/ss index txh el)(setq ss(ssget(0.TEXT)(setq index 0)(initget(+1 2 4)(setq txh(getdist n输入新的字高:)(if ss (repeat(sslength ss)(setq el (entget(ssname ss index)index(1+index)(setq el(subst(cons 40 txh)(asso

32、c 40 el)el)(entmod el)(princ)8.5.3更新对象(图元)的屏幕显示(entupd ename)参数ename 需要更新的图元的名称。返回值更新的图元(ename)。如果无可更新,则返回 nil。更新多段线和块如果使用 entmod 修改多段线顶点或块属性,则在屏幕上不会更新全部图元。entupd 函数可以在屏幕上更新修改后的多段线或块。以多段线或块的任一部分的图元名为参数,都可以调用该函数。该函数重新生成屏幕上的该图元(包含所有子图元)。注意 如果对嵌套图元(块内的图元)或包含嵌套图元的块使用 entupd 函数,则有些图元可能不能重生成。要确保顺利完成重生成操作,

33、必须调用 REGEN 命令。样例假定图形中的第一个图元是有若干个顶点的三维多段线,那么下面的代码可以修改并重新显示多段线:(setq e1(entnext);将 e1 设为多段线的图元名(setq e2(entnext e1);将 e2 设为第一个顶点(setq ed(entget e2);将 ed 设为顶点数据(setq ed (subst(10 1.0 2.0)(assoc 10 ed);将 ed 中顶点的位置 ed ;修改为(1,2)(entmod ed);移动图形中的顶点(entupd e1);重生成多段线图元 e18.5.4删除对象(图元)或恢复先前删除的对象(entdel enam

34、e)如果由 ename 参数指定的图元当前在图形中,则删除该图元。如果在本次编辑任务中该图元已被删除,entdel 函数将恢复该图元。只有在图形退出图形编辑环境时,被删除的图元才会真正从图形中清除。entdel 函数既可以删除图形对象,又可以删除非图形对象。参数ename 要删除或恢复的图元的名称。返回值图元名。使用说明entdel 函数仅能处理主图元。属性和多边形的顶点不能独立于它们的父图元而被删除。可以通过调用 command 函数执行 ATTEDIT 或 PEDIT 命令来修改子图元。不能删除块定义中的图元。但可以调用 entmake 函数来完全重新定义一个块,以去掉想要删除的图元。样例

35、 获取图形中第一个图元的名称并将其指定给变量 e1:命令:(setq e1(entnext)删除名为 e1 的图元:命令:(entdel e1)恢复名为 e1 的图元:命令:(entdel e1)8.6符号表处理函数blsearchtblnext tsetvargetvar AutoCAD表段(存储符号表)实体数据访问函数)实体段(存储实体数据头段(系统变量)数据库8.6.1在符号表中查找下一项(tblnext table-name rewind)重复使用 tblnext 时,它每次通常会返回指定表中的下一个条目。tblsearch 函数可以设置要检索的下一个条目。如果提供了可选参数 rewi

36、nd 且其值不为 nil,那么函数就会回绕到该符号表的起始位置,从而获得它的第一个条目。参数table-name 字符串,指定符号表。有效的 table-name 值为 LAYER、LTYPE、VIEW(命名的视图表)、STYLE、BLOCK、UCS、APPID(注册的应用表)、DIMSTYLE 和 VPORT(视区表)。该参数不区分大小写。rewind 如果指定该参数且其值不为 nil,则回绕符号表且检索其中的第一个条目。返回值如果找到了一个条目,函数就会以点对表的形式返回该条目的 DXF 类型码和值。如果符号表中没有条目了,函数返回 nil。本函数不会返回已被删除的条目。样例检索符号表中的

37、第一个图层:命令:(tblnext layer T)(0.LAYER)(2.0)(70.0)(62.7)(6.CONTINUOUS)返回值的含义如下:(0.LAYER)符号类型 (2.0)符号名 (70.0)标志(图层的开、关、冻结、解冻)(62.7)颜色代码,如果图层是被关闭的,颜色代码为负值 (6.CONTINUOUS)线型名称 注意上述返回表中没有-1 组。AutoCAD 会记住从每个符号表中最近一次所返回的条目,每次对某符号表调用 tblnext 函数时它会返回该表中的下一个条目。所以,每次开始扫描一个表时,应该确保提供了不为 nil 的第二个参数,这样才能回绕到数据库中该表的开头,从

38、而获得该表中的第一个条目。由块表中检查出的条目中包含了一个-2 组,其组值是该块定义中的第一个图元的图元名(如果有的话)。因此,假定当前图形中有一个名为 BOX 的块,那么:命令:(tblnext block)(0.BLOCK)(2.BOX)(70.0)(10 9.0 2.0 0.0)(-2.)返回值的含义如下:(0.BLOCK)符号类型 (2.BOX)符号名 (70.0)标志 (10 9.0 2.0 0.0)原点坐标 X,Y,Z (-2.)第一个图元 entget 和 entnext 函数可以接受-2 组中的图元名,但其他的图元访问函数不接受该图元名。例如,不能用 ssadd 函数将其加入到

39、一个选择集中。通过以-2 组中的图元名为参数调用 entnext 函数,可以扫描组成块定义的各个图元。在块定义的最后一个图元之后,再调用 entnext 函数将返回 nil。如果一个块定义中不包含图元,那么 tblnext 函数所返回的-2 组的组值是该块的 endblk 图元的图元名。注意 由于 vports 函数可以返回当前 VPORT 表信息,所以使用 vports 函数来检索 VPORT 信息可能比用 tblnext 函数更方便一些。LAYER group codesGroup codeDescription100Subclass marker(AcDbLayerTableRecord

40、)2Layer name70Standard flags(bit-coded values):1=Layer is frozen;otherwise layer is thawed.2=Layer is frozen by default in new viewports.4=Layer is locked.16=If set,table entry is externally dependent on an xref.32=If this bit and bit 16 are both set,the externally dependent xref has been successful

41、ly resolved.64=If set,the table entry was referenced by at least one entity in the drawing the last time the drawing was edited.(This flag is for the benefit of AutoCAD commands.It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files.)62Color numbe

42、r(if negative,layer is off)6Linetype name290Plotting flag.If set to 0,do not plot this layer370Lineweight enum value390Hard pointer ID/handle of PlotStyleName objectBlock group codesGroup code Description0Entity type(BLOCK)5Handle102 Start of application-defined group application_name.For example,AC

43、AD_REACTORS indicates the start of the AutoCAD persistent reactors group.(optional)application-defined codes Codes and values within the 102 groups are application defined(optional)102 End of group,(optional)330 Soft-pointer ID/handle to owner object100 Subclass marker(AcDbEntity)8Layer name100 Subc

44、lass marker(AcDbBlockBegin)2Block name70Block-type flags(bit coded values,may be combined):1=This is an anonymous block generated by hatching,associative dimensioning,other internal operations,or an application.2=This block has non-constant attribute definitions(this bit is not set if the block has

45、any attribute definitions that are constant,or has no attribute definitions at all).4=This block is an external reference(xref).8=This block is an xref overlay.16=This block is externally dependent.32=This is a resolved external reference,or dependent of an external reference(ignored on input).64=Th

46、is definition is a referenced external reference(ignored on input).10Base pointDXF:X value;APP:3D point20,30DXF:Y and Z values of base point3Block name1 Xref path name 4Block description(optional)8.6.2在指定的符号表中搜索符号名(tblsearch table-name symbol setnext)参数table-name 字符串,表示要搜索的符号表。该参数不区分大小写。symbol 字符串,表

47、示要搜索的符号。该参数不区分大小写。setnext 如果指定该参数且其值不为 nil,tblnext 函数的条目计数器就会被调整,这样,随后调用 tblnext 函数时,它就会返回由该 tblsearch 调用所返回的那个条目之后的条目。否则,tblsearch 不影响 tblnext 检索的条目的顺序。返回值如果 tblsearch 函数找到了符号名为指定符号名的一个条目,它就会以与 tblnext 函数相同的格式返回该条目。如果没有找到这样的条目,它返回 nil。样例下面的命令搜索名为“standard”的文字样式:命令:(tblsearch style standard)(0.STYLE

48、)(2.STANDARD)(70.0)(40.0.0)(41.1.0)(50.0.0)(71.0)(42.0.3)(3.txt)(4.);定义一个函数,调用它时,返回一个表,包含指定符号表中的所有符号名(defun tblname(tbl/new tblnames)(setq new(cdr(assoc 2(tblnext tbl t)(while new (setq tblnames(cons new tblnames)new (cdr(assoc 2(tblnext tbl)tblnames)plinetype系统变量 类型:整数型 保存位置:注册表 初始值:2 指定 AutoCAD 是否

49、使用优化的二维多段线。PLINETYPE 控制如何使用 PLINE 命令创建新多段线以及是否转换早期版本图形中的现有多段线。0打开旧图形时不转换其中的多段线;PLINE 创建旧格式的多段线(图元类型为POLYLINE)1打开旧图形时不转换其中的多段线;PLINE 创建优化的多段线(图元类型为LWPOLYLINE)2打开旧图形时转换其中的多段线;PLINE 创建优化的多段线优化 AutoCAD R13 或早期版本创建的二维多段线和关联填充自 R14 版起,AutoCAD 以一种优化格式创建二维多段线和关联填充,这种优化格式可以节省内存和磁盘空间。请使用 CONVERT 命令更新 AutoCAD

50、R13 及其早期版本创建的填充图案或多段线。命令行:convert 输入要转换的对象类型 图案填充(H)/多段线(P)/全部(A):输入 h 转换图案填充、p 转换多段线、a 都转换 图案填充转换图形中的所有图案填充。输入对象选择选项 选择(S)/全部(A):输入 s 选择要转换的特定对象,输入 a 转换图形中的所有对象 多段线转换图形中的所有多段线。输入对象选择选项 选择(S)/全部(A):输入 s 选择要转换的特定对象,输入 a 转换图形中的所有对象 全部转换图形中的所有图案填充以及多段线。输入对象选择选项 选择(S)/全部(A):输入 s 选择要转换的特定对象,输入 a 转换图形中的所有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(图形数据编辑函数课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|