autolisp的绘图功能

上传人:shaoy****1971 文档编号:115434607 上传时间:2019-11-13 格式:PPT 页数:15 大小:253.81KB
返回 下载 相关 举报
autolisp的绘图功能_第1页
第1页 / 共15页
autolisp的绘图功能_第2页
第2页 / 共15页
autolisp的绘图功能_第3页
第3页 / 共15页
autolisp的绘图功能_第4页
第4页 / 共15页
autolisp的绘图功能_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《autolisp的绘图功能》由会员分享,可在线阅读,更多相关《autolisp的绘图功能(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、字符串。 点常数可以写成引用表或字符串,例如(2 3)或“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“

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

4、tvar “texteval“ 0) (command “txet“ “r“ pause 3 0 pause) 文本为反斜杠 不建议采用暂停的办法等待用户输入,输入错误导致程序出错。 等待用户输入的getxxx函数不能用在command函数中,另外在command函数中不能使用sketch (绘草图)、SCRIPT(执行一组命令)命令。如果在函数中使用 SCRIPT 命令,它必须是出现在该 AutoLISP 程序的最后。同样,如果在 acad.lsp 或 MNL 文件中使用 command 函数,则只能在 defun 表达式中调用。应使用 S:STARTUP 函数定义在绘图任务开始时就要执行的

5、那些初始化命令。 例题 (initget 1) (setq pt (getpoint “n输入文本起点:“) (command “text“ “m“ pt 3.0 0 “AutoCAD“),(command “text“ “m“ (progn (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) “) (comm

6、and “line“) (command (1 1) (command (1 5) “) 系统变量 “cmdecho“为0,通过command函数执行的cad命令不会在命令行中显示;系统变量 “blipmode“为0,可以消除命令执行过程中小十字线的显示,如果开发的应用程序运行在外文版的AutoCAD,由command函数发出的命令必须加下划线前缀,这样命令就可以被转换。 例如 (command “_redraw“) 如果要避免命令被重新定义,可以加圆点前缀。圆点前缀和下划线前缀可以任意组合。 例如 (command “._redraw“)或(command “_.redraw“) comma

7、nd函数调用中的命令和选择项不允许有空格 例如(command “line “ “5,6“ “6 ,0“ “) 错误 要注意的是,如果从 Visual LISP 中使用 command 函数,控制并不会转移到 AutoCAD 中。如果命令要求用户输入,则可以在控制台窗口中看到返回结果 (nil),但 AutoCAD 将等待输入,必须手动激活 AutoCAD 并响应提示。在这样做以前,任何后续命令都会失败。,;画一个矩形 (defun abcd (/ p1 p2 p3 p4) (initget 1) (setq p1 (getpoint “n输入一点:“) (initget 1) (setq p

8、3 (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图形处理函数 7.2.1求两点连线的角度angle函数 (angle pt1 pt2) 求UCS的点pt1到pt2的连线在当前构造平面的投影与UCS的X轴的夹角,逆时针为正,单位为弧度,二三维点皆可。与getangle函数在指定两点时测量角度方式相同 样例 命令:(angle (1.0 1.

9、0) (1.0 4.0) 1.5708 命令:(angle (5.0 1.33) (2.4 1.33) 3.14159 7.2.2求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.5) (3.0 4.0 0.5) 2.82843,7.2.3在 UCS 坐标系下,求某点的指定

10、角度和指定距离处的点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 1.414214) (2.0 2.0),7.2

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

12、面上,仅检查二维交点。 参数 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) 7.2.6目标捕捉函数 将某种对象捕捉模式作用于指定点而获得一个点,并返回该点 (osnap pt mode) 参数 pt 二维点或三维点。 mode 字符串,其中包含了一个或多个有效的

13、对象捕捉模式标志符(如 mid、cen 等),各标志符之间用逗号隔开。 返回值 三维点。如果在给定的点附近没有捕捉到目标或目标点和捕捉方式不匹配则返回 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),捕捉方式 0

14、 NON(无) 1 END(端点) 2 MID(中点) 4 CEN(圆心) 8 NOD(节点) 16 QUA(象限点) 32 INT(交点) 64 INS(插入点) 128 PER(垂足) 256 TAN(切点) 512 NEA(最近点),1024 QUI(快速) 2048 APP(外观交点) 4096 EXT(延伸) 8192 PAR(平行),7.2.7将一个点(或位移量)从一个坐标系转换成另一个坐标系 (trans pt from to disp) 参数 pt 三维实数列表,既可以被解释成一个三维点,又可以被解释成一个三维位移(矢量)。 from 整数代码、图元名(表示OCS)或三维拉伸矢

15、量(拉伸矢量总是以世界坐标系表示,拉伸矢量 (0,0,1) 指定了世界坐标系 WCS 自身。 ),指定 pt 的坐标系。整数代码可以为如下值: 0 世界坐标系(WCS) 1 用户坐标系(当前 UCS) 2 与代码 0 或代码 1 一起使用时,表示当前视口的显示坐标系 (DCS)。与代码 3 一起使用时,表示当前模型空间视口的 DCS。 3 图纸空间 DCS(仅用于代码 2) to 整数代码、图元名或三维拉伸矢量,指定返回点的坐标系。有效的整数代码取值请参见 from 参数。 disp 如果存在且不为 nil,则将 pt 作为三维位移而不是三维点看待。 如果 from 或 to 参数是图元名,它

16、必须是由 entnext、entlast、entsel、nentsel 和 ssname 等函数返回的图元名。这样就可以将某个特定对象的对象坐标系 (OCS) 中的点来回进行转换(对于某些对象,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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号