收藏 分享(赏)

AutoLISP入门6 - 图元资料的取得与活用技巧(一).pdf

上传人:精品资料 文档编号:10284530 上传时间:2019-10-28 格式:PDF 页数:6 大小:215.05KB
下载 相关 举报
AutoLISP入门6 - 图元资料的取得与活用技巧(一).pdf_第1页
第1页 / 共6页
AutoLISP入门6 - 图元资料的取得与活用技巧(一).pdf_第2页
第2页 / 共6页
AutoLISP入门6 - 图元资料的取得与活用技巧(一).pdf_第3页
第3页 / 共6页
AutoLISP入门6 - 图元资料的取得与活用技巧(一).pdf_第4页
第4页 / 共6页
AutoLISP入门6 - 图元资料的取得与活用技巧(一).pdf_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、单元六: 图元资料的取得与活用技巧(一)一.图元资料串列的重要性:您可知您所绘制的每一个AutoCAD元体(如LINE 、 CIRCLE 、 ARC 、 TEXT 、 BLOCK 、 POLYLINE 、 DIMENSION.)均有其专属的资料串列!没错以LIST指令即可查询出来,显示于萤幕上但是该如何透过AutoLISP功能去选取、取得、修改、更新资料呢?该如何去有效活用呢?别急就是本单元的学习重点!请注意本章节非常重要,务必要求透彻了解!二、重要图元资料应用相关的功能函数介绍:(entsel 提示)请求选取一个图元,回应包含图元名称及选点座标的串列(car串列)传回:串列中的第一个元素,通

2、常用来求x座标(cadr串列)传回:串列中的第二个元素,通常用来求y座标(caddr串列)传回:串列中的第三个元素,通常用来求z座标(cdr串列)传回:除去第一个元素后的串列(entlast) :取出图形资料中的最后一个图元(entget图元名称应用程式串列) :取得图元名称的资料联合串列(assoc关键元素联合串列) :依关键元素找寻联合串列中关系资料(cons新元素串列)传回:将新元素结合到串列,常用于产生点对串列(subst新项旧项串列)传回:替换新旧串列后的串列(entmod图元串列)依更新的资料串列更新萤幕上元体(list元素元素 )传回:将元素结合成一串列三、图元资料联合串列取得技

3、巧与群码分析:1.基础准备动作: 请开一张新图,并建立二个新层STR、TXT,颜色分别为红色(red)、绿色(green)首先在 STR 层画一条线指令: LINE起点: 15,10下一点: 50,40下一点: ( 按 Enter 结束 )在 STR 层画一个圆指令: CIRCLECIRCLE三点(3P)/二点(2P)/相切,相切,半径(T)/: 60,15直径(D)/: 12.5在 TXT 层写几个字 AutoCAD指令: DTEXT对正(J)/字型(S)/: (选取文字的位置点)高度: 8旋转角度: 0文字: AutoCAD文字: (按Enter结束)图示:2. 在 AutoCAD 的 C

4、ommand: 下练习取得图元资料串列练习函数 entsel 、 car 、 cdr 、 entget指令: (setq en1 (entsel)选取物件: (选取圆)传回一串列: ( (67.604 24.5166 0.0)其中 ) (0 . “CIRCLE“) (5 . “23“)(100 . “AcDbEntity“) (67 . 0) (8 . “STR“) (100 . “AcDbCircle“)(10 60.0 15.0 0.0) (40 . 12.5) (210 0.0 0.0 1.0)其中各子串列的第一个元素均为群码,各代表不同对应资料指令: (setq en2 (entsel

5、)选取物件: (碰选线)传回一串列: ( (30.5626 23.5743 0.0)指令: (setq en2_data (entget (car en2)传回 线的联合资料串列 :(-1 . ) (0 . “LINE“) (5 . “20“)(100 . “AcDbEntity“) (67 . 0) (8 . “STR“) (100 . “AcDbLine“)(10 15.0 10.0 0.0) (11 50.0 40.0 0.0) (210 0.0 0.0 1.0)指令:(setq en3 (entsel)选取物件: (碰选文字)传回一串列: ( (45.7833 50.3614 0.0)

6、指令: (setq en3_data (entget (car en3)传回 文字的联合资料串列 :(-1 . ) (0 . “TEXT“) (5 . “24“)(100 . “AcDbEntity“) (67 .0) (8 . “TXT“) (100 . “AcDbText“)(10 10.0 50.0 0.0) (40 . 8.0) (1 . “AutoCAD“) (50 . 0.0) (41 . 1.0)(51 . 0.0) (7 . “STANDARD“) (71 . 0) (72 . 0) (11 0.0 0.0 0.0)(2100.0 0.0 1.0)(100 . “AcDbTex

7、t“) (73 . 0)3. 联合资料串列中各子串列群码分析说明 :您可以在指令 :下键入!en1_data或!en2_data或!en3_data分别查看圆、线、文字的联合资料串列,您将会发现=不同的元体类别,其联合资料串列也不一样圆的联合资料串列 en1_data(-1 . ) 群码-1对应图元名称(0 . “CIRCLE“) 群码0对应图元类别(5 . “23“) 群码5对应处理码(100 . “AcDbEntity“) 群码100对应子类别(67 . 0) 群码67对应模型空间(8 . “STR“) 群码8对应图层名称(100 . “AcDbCircle“) 群码100对应子类别(10

8、 60.0 15.0 0.0) 群码10对应圆心座标(40 . 12.5) 群码40对应半径值(210 0.0 0.0 1.0) 群码210对应图元挤出方向线的联合资料串列 en2_data(-1 . ) 群码-1对应图元名称(0 . “LINE“) 群码0对应图元类别(5 . “20“) 群码5对应处理码(100 . “AcDbEntity“) 群码100对应子类别(67 . 0) 群码67对应模型空间(8 . “STR“) 群码8对应图层名称(100 . “AcDbLine“) 群码100对应子类别(10 15.0 10.0 0.0) 群码10对应线起始点座标(11 50.0 40.0 0

9、.0) 群码11对应线终止点座标(210 0.0 0.0 1.0) 群码210对应图元挤出方向文字的联合资料串列 en3_data(-1 . ) 群码-1对应图元名称(0 . “TEXT“) 群码0对应图元类别(5 . “24“) 群码5对应处理码(100 . “AcDbEntity“) 群码100对应子类别(67 . 0) 群码67对应模型空间(8 . “TXT“) 群码8对应图层名称(100 . “AcDbText“) 群码100对应子类别(10 10.0 50.0 0.0) 群码10对应插入点(40 . 8) 群码40对应字高(1 . “AutoCAD“) 群码1对应文字内容(50 .

10、0.0) 群码50对应旋转角度(41 . 1.0) 群码41对应宽度比例系数(51 . 0.0) 群码51对应倾斜角(7 . “STANDARD“) 群码7对应字型名称(71 . 0) 群码71对应镜设方向(72 . 0) 群码72对应水平对齐设定(11 0.0 0.0 0.0) 群码11对应对齐点(210 0.0 0.0 1.0) 群码210对应图元挤出方向(100 . “AcDbText“) 群码100对应子类别(73 . 0) 群码73对应水平对齐设定4.由以上可看出,元体资料串列有些群码是共通的 (如-1 、 0 、 8 、 210)有些群码是因元体而异的(如10 、 40 ),有些群

11、码是某些元体特有的(如en3_data资料串列就比en1_data & en2_data资料串列来的多)注意1:往后练习撰写AutoLISP程式中,若对各元体与群码的对应有疑问或不清楚时,请随时查看附录C 有关详细的群码表分析!注意 2: 子串列中间有一点隔开二元素 , 我们称为点对串列 ,点对串列要特别注意的是第二个元素取得,要用cdr函数 ,而非cadr函数!若要产生新的点对串列 ,可用cons函数完成.如:(cons 1 “ ABC ” )回应(1 . “ ABC ” )四、图元资料修改与更新技巧:1. 图元资料串列修改 & 更新四步骤:步骤一:用entget函数取得元体资料串列,如上例

12、中en1_data 、 en2_data 、 en3_data步骤二:用assoc函数依群码值找寻取得欲修改的旧子串列,新的子串列可以用cons函数去产生步骤三:用subst函数将资料串列中的新、旧子串列替换步骤四:用entmod函数更新的资料串列,同时自动更新萤幕上图元2.在AutoCAD的指令: 下做基本图元资料修改&更新练习:请将上例中,圆的半径修改为23.8过程如下:指令:!en1_data传回:(-1 . ) (0 . “CIRCLE“) (5 . “23“)(100 .“AcDbEntity“) (67 . 0) (8 . “STR“) (100 . “ AcDbCircle“) (10 60.015.0 0.0) (40 . 12.5) (210 0.0 0.0 1.0)指令: (setq oldr (assoc 40 en1_data)传回: (40 . 12.5) ) (0 . “CIRCLE“) (5 . “23“)(100 .“AcDbEntity“) (67 . 0) (8 . “STR“)(100 . “AcDbCircle“) (10 60.0 15.0 0.0) (40 . 23.8) (210 0.0 0.01.0)资料串列已被修改成功了,但是画面上图元并未更新?指令: (entmod en1_data) = 大功告成,画面上的圆也更新了!

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报