AutoLISP的绘图功能.ppt

上传人:牧羊曲112 文档编号:6502059 上传时间:2023-11-07 格式:PPT 页数:15 大小:327.97KB
返回 下载 相关 举报
AutoLISP的绘图功能.ppt_第1页
第1页 / 共15页
AutoLISP的绘图功能.ppt_第2页
第2页 / 共15页
AutoLISP的绘图功能.ppt_第3页
第3页 / 共15页
AutoLISP的绘图功能.ppt_第4页
第4页 / 共15页
AutoLISP的绘图功能.ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《AutoLISP的绘图功能.ppt》由会员分享,可在线阅读,更多相关《AutoLISP的绘图功能.ppt(15页珍藏版)》请在三一办公上搜索。

1、第七章AutoLISP的绘图功能,7.1command函数执行一条或多条 AutoCAD 命令,实现AutoLISP的绘图功能,主要接口。(command arguments.)参数arguments AutoCAD 命令、选项或表达式。返回值nil例题:CAD操作方式line指定第一点:1,1指定下一点或 放弃(U):1,5指定下一点或 放弃(U):命令:AutoLISP操作方式(command line(1 1)(1 5),command函数参数书写规定命令名和选项用字符串表示,大小写皆可。数值常数(整数、实数)可以写成数本身,也可写成字符串。点常数可以写成引用表或字符串,例如(2 3)或

2、“2,3”空字符串()表示从键盘键入 ENTER 键,可以终止一个需要不定个数数据的CAD命令,或接受缺省值。例题:(command text m.1,1 3.0 0 AutoCAD)“0.1,1.1,1(0.1 1)正确”0.1 1(.1 1)错误不带参数调用 command 相当于键入 ESC 键,这样可取消大多数 AutoCAD 命令,两个不带参数调用 command,可取消所有 AutoCAD 命令。也可以用符号取消AutoCAD 命令例如:(command text m.1,1 3.0 0 AutoCAD)符号pause暂停AutoCAD命令,等待用户输入,它表示一个反斜杠。若用反斜

3、杠表示,应写成。例如:(command line pause)等待用户输入两点画一条线段若一个期待输入字符串(如TEXT命令)或属性值的命令碰到pause,那么仅当系统变量textval置为非零时才会引起暂停,否则pause符号的值(反斜杠)被视为输入文本,不会引起暂停。,(setvar texteval 1)(command txet r pause 3 0 pause)右对齐 右对齐点 字高 转角 等待输入字符(setvar texteval 0)(command txet r pause 3 0 pause)文本为反斜杠不建议采用暂停的办法等待用户输入,输入错误导致程序出错。等待用户输入

4、的getxxx函数不能用在command函数中,另外在command函数中不能使用sketch(绘草图)、SCRIPT(执行一组命令)命令。如果在函数中使用 SCRIPT 命令,它必须是出现在该 AutoLISP 程序的最后。同样,如果在 acad.lsp 或 MNL 文件中使用 command 函数,则只能在 defun 表达式中调用。应使用 S:STARTUP 函数定义在绘图任务开始时就要执行的那些初始化命令。例题(initget 1)(setq pt(getpoint n输入文本起点:)(command text m pt 3.0 0 AutoCAD),(command text m(p

5、rogn(initget 1)(setq pt(getpoint n输入文本起点:)3.0 0 AutoCAD);错误一个command函数调用可以执行多条CAD命令;多个command函数调用可完成一条CAD命令。例题:(command line(1 1)(1 5)line(2 2)(2 8)(command line)(command(1 1)(command(1 5)系统变量 cmdecho为0,通过command函数执行的cad命令不会在命令行中显示;系统变量 blipmode为0,可以消除命令执行过程中小十字线的显示,如果开发的应用程序运行在外文版的AutoCAD,由command函

6、数发出的命令必须加下划线前缀,这样命令就可以被转换。例如(command _redraw)如果要避免命令被重新定义,可以加圆点前缀。圆点前缀和下划线前缀可以任意组合。例如(command._redraw)或(command _.redraw)command函数调用中的命令和选择项不允许有空格例如(command line 5,6 6,0)错误要注意的是,如果从 Visual LISP 中使用 command 函数,控制并不会转移到 AutoCAD 中。如果命令要求用户输入,则可以在控制台窗口中看到返回结果(nil),但 AutoCAD 将等待输入,必须手动激活 AutoCAD 并响应提示。在这

7、样做以前,任何后续命令都会失败。,;画一个矩形(defun abcd(/p1 p2 p3 p4)(initget 1)(setq p1(getpoint n输入一点:)(initget 1)(setq p3(getpoint p1 n输入对角点:)(setq p2(list(car p3)(cadr p1)(last p1)(setq p4(list(car p1)(cadr p3)(last p1)(command line p1 p2 p3 p4 C),7.2图形处理函数求两点连线的角度angle函数(angle pt1 pt2)求UCS的点pt1到pt2的连线在当前构造平面的投影与UCS

8、的X轴的夹角,逆时针为正,单位为弧度,二三维点皆可。与getangle函数在指定两点时测量角度方式相同样例命令:(angle(1.0 1.0)(1.0 4.0)1.5708命令:(angle(5.0 1.33)(2.4 1.33)3.14159求UCS两点的距离distance(distance pt1 pt2)如果提供的参数中有一个或两个二维点,distance 函数会忽略所提供的任何三维点的 Z 坐标,而返回将这些点投影到当前构造平面上后所得的点之间的二维距离。样例命令:(distance(1.0 2.5 3.0)(7.7 2.5 3.0)6.7命令:(distance(1.0 2.0 0

9、.5)(3.0 4.0 0.5)2.82843,在 UCS 坐标系下,求某点的指定角度和指定距离处的点polar(polar pt ang dist)参数pt 二维或三维点。ang 以弧度为单位的角度值,它是相对于当前构造平面 X 轴按逆时针方向计算的。dist 与指定点 pt 的距离。返回值根据 pt 指定点的类型,返回二维或三维点。如果pt为三维点,返回点的z坐标与pt的z坐标相同。样例为 polar 提供一个三维点:命令:(polar(1 1 3.5)0.785398 1.414214)(2.0 2.0 3.5)为 polar 提供一个二维点:命令:(polar(1 1)0.785398

10、 1.414214)(2.0 2.0),几个函数的比较(getorient pt prompt)方位角,UCS的点(getangle pt prompt)与UCS的x轴逆时针转的夹角,UCS的点(angle pt1 pt2)与UCS的x轴逆时针转的夹角,UCS的点(polar pt ang dist)与UCS的x轴逆时针转的夹角,UCS的点求二线交点函数inters(inters pt1 pt2 pt3 pt4 onseg)所有的点都以当前 UCS 表示,如果提供的四个点都是三维点,inters 函数检查三维交点。只要所提供的点中有一个是二维点,inters 函数就将这两条线投影到当前构造平面

11、上,仅检查二维交点。参数pt1 第一条直线的端点。pt2 第一条直线的另一端点。pt3 第二条直线的端点。pt4 第二条直线的另一端点。,两条线平行或重合返回nil,样例(setq a(1.0 1.0)b(9.0 9.0)(setq c(4.0 1.0)d(4.0 2.0)命令:(inters a b c d)nil 命令:(inters a b c d nil)(4.0 4.0)目标捕捉函数将某种对象捕捉模式作用于指定点而获得一个点,并返回该点(osnap pt mode)参数pt 二维点或三维点。mode 字符串,其中包含了一个或多个有效的对象捕捉模式标志符(如 mid、cen 等),各标

12、志符之间用逗号隔开。返回值三维点。如果在给定的点附近没有捕捉到目标或目标点和捕捉方式不匹配则返回 nil。osnap 函数返回的点取决于当前三维视图和系统变量APERTURE(靶区大小)的设置。,注意:目标捕捉只能辨认屏幕可见的图素,已经关闭的层和虚线的抬笔端无法被捕捉,不改变捕捉方式系统变量osmode的值样例命令:(setq pt1(getpoint)(11.8637 3.28269 0.0)命令:(setq pt2(osnap pt1 _end,_int)(12.1424 3.42181 0.0),捕捉方式0NON(无)1END(端点)2MID(中点)4CEN(圆心)8NOD(节点)16

13、QUA(象限点)32INT(交点)64INS(插入点)128PER(垂足)256TAN(切点)512NEA(最近点),1024QUI(快速)2048APP(外观交点)4096EXT(延伸)8192PAR(平行),将一个点(或位移量)从一个坐标系转换成另一个坐标系(trans pt from to disp)参数pt 三维实数列表,既可以被解释成一个三维点,又可以被解释成一个三维位移(矢量)。from 整数代码、图元名(表示OCS)或三维拉伸矢量(拉伸矢量总是以世界坐标系表示,拉伸矢量(0,0,1)指定了世界坐标系 WCS 自身。),指定 pt 的坐标系。整数代码可以为如下值:0 世界坐标系(W

14、CS)1 用户坐标系(当前 UCS)2 与代码 0 或代码 1 一起使用时,表示当前视口的显示坐标系(DCS)。与代码 3 一起使用时,表示当前模型空间视口的 DCS。3 图纸空间 DCS(仅用于代码 2)to 整数代码、图元名或三维拉伸矢量,指定返回点的坐标系。有效的整数代码取值请参见 from 参数。disp 如果存在且不为 nil,则将 pt 作为三维位移而不是三维点看待。如果 from 或 to 参数是图元名,它必须是由 entnext、entlast、entsel、nentsel 和 ssname 等函数返回的图元名。这样就可以将某个特定对象的对象坐标系(OCS)中的点来回进行转换(

15、对于某些对象,OCS 等价于 WCS,对这些对象,OCS 和 WCS 之间的转换是空操作)。使用三维拉伸矢量(三个实数组成的一个表)是来回转换对象 OCS 的另一种方法。但是,对于 OCS 等价于 WCS 的那些对象,这种转换也不做任何操作。返回值 由参数 to 指定的坐标系表示的一个三维点(或位移)。,样例在下面的样例中,UCS 绕世界坐标系的 Z 轴旋转 90 度:命令:(trans(1.0 2.0 3.0)0 1)(2.0-1.0 3.0)命令:(trans(1.0 2.0 3.0)1 0)(-2.0 1.0 3.0)例如,要在不使用对象捕捉的情况下,从一行文本的插入点画一条直线,需要将

16、文本对象的插入点从文本对象的 OCS 转换到 UCS:(trans text-insert-point text-ename 1)然后就可以将结果传给“起点:”提示。相反地,将点值送到 entmod 函数中去之前,必须将该点(或位移)值转换成用该对象的 OCS 表示。例如,如果要将圆相对 UCS 偏移(1,2,3)(不使用 MOVE 命令),就需要将该偏移量从 UCS 转换成圆的 OCS:(trans(1 2 3)1 circle-ename)然后就可以将结果偏移量加到圆的圆心上去。,trans 函数也可以转换二维点,这需要通过给 Z 坐标赋一个适当的值来实现。所使用的 Z 分量取决于所指定的

17、 from 坐标系,以及该值是作为一个点还是作为一个位移。如果是作为一个位移,那么其 Z 值总是为 0.0;如果是作为一个点,那么其 Z 值由下表确定。转换二维点时的 Z 坐标值From 填入的 Z 坐标值WCS 0.0UCS 当前标高OCS 0.0DCS 投影到当前构造平面(UCS XY 平面+当前标高)PSDCS 投影到当前构造平面(UCS XY 平面+当前标高)7.3屏幕操作函数(graphscr)切换到AutoCAD 图形屏幕,返回值 nil。等价于 GRAPHSCR 命令或按下切换屏幕功能键。(textscr)切换至文本屏幕,返回nil。(redraw ename mode)重画当前

18、视口或当前视口中的一个指定对象如果不带参数调用 redraw 函数,它重画当前视口,但对加亮显示或隐藏的图元无效。如果提供了图元名,它将重画该指定图元。REGEN 命令可强制使图元以正常模式重新显示。,参数ename 要重画图元的名称。mode 整数值,用于控制图元的可见性和亮显。mode 可为下列值之一:1 显示图元2 隐藏图元(使其不可见)3 亮显图元(虚线)4 不亮显图元亮显图元模式(mode=3)必须与不亮显图元模式(mode=4)协调使用。如果 ename 是复杂图元(多段线或带属性的块参照)的头部图元名,那么在 mode 参数为正时,redraw 函数对主图元和它的所有子图元进行处理,而在 mode 参数为负时,它仅处理头部图元。返回值redraw 函数的返回值始终为 nil。例题(command line(1 1)(2 2)(setq en(entlast)(redraw en 3),

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号