文档详情

CAD二次开发之图形数据库整理ppt.ppt

发布:2017-06-06约字共34页下载文档
文本预览下载声明
* 第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等点确定被
显示全部
相似文档