第9章AutLISP和Visual LISP.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章AutLISP和Visual LISP

* 第9章 访问和修改图形数据库 9.1 获取图元的名字 AutoCAD的图形是由多个图形对象组成的,最基本的图形对象称作图元。图元之间是以链表的形式存储的。每个图元都有一个用16进制表示的唯一的名字。 entnext函数可以获取图形库第一个图元的名字或指定图元的下一个图元的名字。 entlast函数可以获取图形库最后一个,即最新生成的图元的名字。 通过entnext函数,可以访问到图形库的每一个图元。 假定本作业依次绘制了一条直线、一个圆和一个圆弧。 (setq e1(entnext));返回图形库第一个图元即这条直线的图元名Entity name: 7ef6ce88,并将其赋给了变量e1。 (setq e2(entnext e1));返回图形库e1的下一个图元即这个圆的图元名Entity name: 7ef6ce90,并将其赋给了变量e2。 (setq e3(entnext e2));返回图形库e2的下一个图元即即这个图弧的图元名Entity name: 7ef6ce98,并将其赋给了变量e3。 (setq e4(entlast));返回图形库最后一个图元即这个图弧的图元名Entity name: 7ef6ce98,并将其赋给了变量e1。 因为圆弧既是第3个图元,也是最后一个图元,所以e3和e4记录的是同一图元的名字。 【例9-1】绘制下图所示的4个带有中心线的螺纹孔。要求首先获取中心线的螺纹孔的图元名,然后复制这些指定名字的图元。 以下表达式首先生成了两条中心线和1个螺纹孔。在生成这些图元的同时获取并保存了这些图元的名字为e1、e2、e3和e4。 (command layer m zhongxin l center ) (command line -5,0 5,0 ) (setq e1(entlast)) (command line 0,-5 0,5 ) (setq e2(entlast)) (command layer m cuxian lw 0.3 ) (command circle 0,0 3) (setq e3(entlast)) (command layer m xixian ) (command arc -3.5,0 0,3.5 0,-3.5) (setq e4(entlast)) 以下表达式调用AutoCAD的copy命令,复制3个带有中心线的螺纹孔。 (command copy e1 e2 e3 e4 m 0,0 12,0 24,0 36,0 ) [例9-2] 定义绘制图b所示图形的命令。插入点p0、直径d、宽度b和h作为绘制该图形时交互输入的参数。该例的主要目的是示范如何利用图元名实现AutoCAD的图形编辑和填充剖面线。 a b (defun c:keyway() (setq pc (getpoint 输入定位点: )) (setq d (getdist pc 输入轴的直径:)) (setq b (getdist pc 输入键槽的宽度:)) (setq w (getdist pc 输入键槽的深度:)) (setq r (* 0.5 d)) (command circle pc r) ;绘制圆 (setq e1 (entlast)) ;将entlast返回的该圆的图元名赋给e1 (setq p0(polar pc 0 r)) ;p0是圆上一点,将用于修剪该圆 (setq p1(list (car pc) (+ (cadr pc) (* 0.5 b)))) (setq p2(list (+ (car pc) (* 1.2 r)) (cadr p1))) (command line p1 p2 ) (setq e2 (entlast)) ;将entlast返回的该直线的图元名赋给e2 (setq p3(list (car pc) (- (cadr pc) (* 0.5 b)))) (setq p4(list (car p2) (cadr p3))) (command line p3 p4 ) (setq e3 (entlast)) ;将entlast返回的该直线的图元名赋给e3 (setq p5(list (+ (car pc) (- r w)) (+ (cadr pc) (* 0.5 b)))) (setq p6(list (+ (car pc) (- r w)) (- (cadr pc) (* 0.5 b)))) (command line p5 p6 ) (setq e4 (entlast)) ;将entlast返回的该直线的图元名赋给e4 ;e1、e2等作为剪切边,p0、p1等点确定被

文档评论(0)

jyf123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档