首页 绘制平面任意函数曲线的AutoLISP程序设计

绘制平面任意函数曲线的AutoLISP程序设计

举报
开通vip

绘制平面任意函数曲线的AutoLISP程序设计绘制平面任意函数曲线的AutoLISP程序设计 绘制平面任意函数曲线的 AutoLISP 程序设计 徐明毅,王 江,王力维 (武汉大学水资源与水电工程科学国家重点实验室,湖北 武 43007汉)2 摘要:利用 AutoCAD 的表达式计算功能,编写出绘制常用的 4 种类型平面函数曲线的 Auto LISP 程序,该程序能够根据外部输入的函 数表达式,绘制出相应曲线,并可控制模拟精度 。 关键词:AutoCAD;LISP;函数曲线;表达式 中图分类号:TP 391.7 文献标识码:A 文章编号:1672- ...

绘制平面任意函数曲线的AutoLISP程序设计
绘制平面任意函数曲线的AutoLISP程序设计 绘制平面任意函数曲线的 AutoLISP 程序设计 徐明毅,王 江,王力维 (武汉大学水资源与水电工程科学国家重点实验室,湖北 武 43007汉)2 摘要:利用 AutoCAD 的 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式计算功能,编写出绘制常用的 4 种类型平面函数曲线的 Auto LISP 程序,该程序能够根据外部输入的函 数表达式,绘制出相应曲线,并可控制模拟精度 。 关键词:AutoCAD;LISP;函数曲线;表达式 中图分类号:TP 391.7 文献标识码:A 文章编号:1672- 545(X2008)11- 00560- 3 在各个工程设计领域中,经常要绘制一些曲线,特别是平关键的问题是,如何计算出曲线上点的坐标。由于曲线面曲线,如水工结构的溢流曲线、机械设计的齿轮渐开曲线 函数表达式各种各样,不可能用统一的式子来表。示可以考 等从外部输入表达式,然后针对该表达式进行计算,给出相应 。在 AutoCAD 绘图软件中,可以将曲线上的点先计算好,再 用线、多义线、样条曲线等方法绘制,这种方法需要进行大量 果,就能够解决点坐标的计算问题。但这个功能的实现比较 计算,工作量较大,如果用 EXCEL 软件来辅助计算,可以减轻 难,幸好 AutoCAD 为我们提供了 CAL 命令,可以对任意的 工作量;另外,可以针对具体的曲线类型,用A utoCAD 内嵌的 达式进行计算。该命令由函数库文件 geomcal.arx 提供,支持 [1]AutoLISP 语言,实现边计算边绘制的功能。用这种方法绘制 学 / 工程计算器上的大多数标准函数,如三角函数、指数、对 虽然快捷,但对于不同的曲线,则需编写不同的 AutoLISP 程 等。若表达式中有变量,而该变量在程序中已设定了值, 则序,检查无误后才能运行,仍显繁琐。能否用统一的程序,来实 现各种平面函数曲线的绘制呢,本文尝试利用 AutoCAD 中强 该值进行计算。由于该函数不是 LISP 内部函数,为使之可用 大的表达式计算功能来实现这一目的。 需要用 ARXLOAD 命令载入文件 geomcal.arx,或者在命令 先输入 CAL 命令,由系统自动载入,这样,程序中就可以使 该函数了。 总的程序定义为c :curve(,)以便在A utoCAD命令行 中 1 平面函数曲线的类型和绘制方法通常的命令一样使用程序的总调用部分为: 。 ;载入提供表达式计算功能 (arxload "geomcal.arx") 平面函数曲线即是有简单函数表达式的曲线类型,可考ARX 文件 虑经常遇到的 4 类: ;让命令 c:cal 能够使用 (1)直角坐标下形如 y=f(x)的曲线; arx-i mport 'c:cal) (vl- (2)直角坐标下的参数方程曲线; (princ "(1)直角坐标下曲线y =f(x).\n") (3)极坐标下形如 r=f()的曲线; θ(princ "(2)直角坐标下参数曲线x =f(i),y=g(i).\n") (4)极坐标下的参数方程曲线。 (princ "(3)极坐标下曲线 r=f(theta).\n") 其中,只需增加一个平凡方程x =x,参数方程(2)就可以包 (princ "(4)极坐标下参数曲线t heta=f(i),r=g(i).\n") 括相应的直接表达形式(1),同样(4)可以包括(3)。同时,极坐 (setqi choice (getint " 选择绘制曲线类型:")) ; 标形式可以通过: 选择曲线类型 choce 1) (curve1)) (if (= ii;调用曲线绘制类型1 x=rcosθ(1) ! ;调用曲线绘制类型2 (if (= ichoice 2) (curve2)) y=rsnθ i;调用曲线绘制类型3 (if (= ichoice 3) (curve3)) 转换为直角坐标表达因此从本质上说,4 种类型都可以 。;调用曲线绘制类型4 互相转换,把它们分类的目的是尽量采用函数的通常表达形 (if (= ichoice 4) (curve4)) 式,以便于使用。 根据用户选择的曲线类型,转到相应的曲线类型绘制 的函数更灵活多样,形式如下:序 curve1,该子程序没有传入传出参数。程序的第一个步骤是 读入有关的参数和控制变量。首先读入 y=f(x)的表达式,然后 f(i) x = !输入自变量 x 的变化范围[low,up],接着根据模拟精度,输入曲 y = g(i) 线剖分数目 steps,x 的变化步长即为 step=(upl-o w)/steps,该步 在曲线绘制时,只需要将变量改为参变量,坐标骤相应的 AutoLISP 程序如下: x、y 坐标都用表达式计算即可,相应的A utoLISP 程序 (setqf uny (getstring "y=f(x)的表达式:")) (setql ow (getreal "x 的下限值:")) (setqi i 0) ;循环变量 ii 设初值 ;参变量 i 设初值 (setqi low) (setqup (getreal "x 的上限值:")) ;循环控制 (while (<= ii steps) (setq (setq steps(g etnt " 剖分数目:")) i;由 x=f(i)计算坐标 x x (c:ca funx)) (setqy l(setq step(/ (- up low) steps)) ;由 y=g(i)计算坐标 y (c:cal funy)) (command 接下来就开始曲线的绘制,首先启动绘制多义线的命令, ;向命令行输入点坐标 (list x1 y1)) (setqi i (+ 接着自变量 x 从下限值开始,由f (x)的表达式计算y 坐标值, ;循环变量 ii 增加 1 1 ii)) ;参变量 i 递增一个步长 将该点的坐标输入到命令行,得到曲线的起点,然后自变量 x (setqi (+ i step)) 递增一个步长,计算下一个坐标点,曲线连接到该点,如此直 ) 到剖分数目结束,就完成了整个曲线的绘制,最后用一个空格 例如绘制圆的渐开线,直角坐标下的参数方程为退出多义线命令。相应的 AutoLISP 程序如下: r(cosφ+ φsinφ) x = ! (command"p line") ;启动多义线命令y = r(sinφ - φcosφ) ;循环变量 ii 设初值 (setqi i 0) 选择曲线类型为 2,圆的半径 r 设定为 10,参数 ;自变量 x 设初值 (setqx low) 替,变化范围从0 到 720,曲线的剖分数目是7 2,即每 ;控制循环数目 (while (<= ii steps) 计算一个控制点,输入过程为:;对表达式进行计算,得到y 选择绘制曲线类型:2 绘制直角坐(setqy (c:cal funy)) 坐标值 标下曲线 x= f(i), Y= g(i) x= f(i)的表;输入计算出的点坐标 达式:10*(cos(i)+i*sin(i)) Y= g(i)的表(command(li st x y)) ;循环变量 ii 增加 1 达式:10*(sin(i)- i*cos(i)) ;自变量 x 递增一个步长 (setqi i (+ 1 ii)) i 的下限值:0 (setqx (+ x step)) i 的上限值:720 剖分数目: 72 绘制出的图形如图 2 所) 示。 (command"" ) ;退出多义线命令 [2]例如绘制溢流坝面的曲线 ,方 程 为 一 段 抛 物 线 y= 2 0.047x,先建立如图 1 所示的坐标系,再启动命令c urve,选择 曲线类型为 1,参数 x 的变化范围从 0 到 16,曲线的剖分数目 Y 是 20,即 x 值每间隔 0.8 计算一个控制点,输入过程如下: 选择绘制曲线类型:1 X 绘制直角坐标下曲线 Y= f(x) ?Y= f(x)的表达式:0.047*X 2 x 的下限值:0 x 的上限值:16 剖分数目:20 图 2 圆的渐开线 绘制出的图形如图 1 所示 。 X 极坐标下函数 r = f(θ)曲线绘制 4 极坐标下函数 r = f(θ)的不同之处在于输入点的 Y 需要用极坐标输入方式,如 20<30,表示极径为 20 30,可以将得到的坐标值转换为字符串,再用角度 ? 连接起来,输入到命令行。也可以用另外一个简便方图 1 溢流曲线 用极坐标和直角坐标之间的转换关系,变换到直角 入到命令行,该方法对应的A utoLSP 程序如下: I 3 直角坐标下参数方程曲线绘制(setqi i 0) (setq elo w) ;设置极角θ 的初始 直角坐标下参数方程与直接函数表达不同的是,引入参 (while (<= ii steps) 变量,坐标 x 和 y 都表达为该参变量的函数,这样,能够表示 (setqr (c:ca funy)) l;计算极径 r 坐标下的 x 值 选择绘制曲线类型:4 ;由极径 r 和极角 θ 转换为直角 绘制极坐标下参数曲线 theta= f(i), r=g(i) (setqy (c:cal "r*sin(e)")) theta= f(i)的表达式:2*i 坐标下的 y 值 ?r = g()的表达式:5 0.2 i*i(command(li st x y)) i 的下限值:0 (setqi i (+ 1 ii)) i 的上限值:180 (setq e(+ e step)) ;对极角递增一个步长剖分数目:180 ) Y 5 极坐标下参数方程曲线绘制 X 极坐标下参数方程曲线的绘制,同直角坐标下的参数方 程曲线绘制是类似的,即增加一个用参变量表达的极角θ 的 计算,相应的 AutoLISP 程序如下: (setqi i 0) 图 3 极坐标参数方程曲线(setqi low) ;设置参变量i 初值为下限值 (while (<= ii steps) 6 结束语 (setq e(c :cal funx)) ;由表达式计算极角θ ;由表达式计算极径r (setqr (c:cal funy)) 利用 AutoCAD的表达式计算功能,编写出绘制 平面函 (setqx (c:cal "r*cos(e)")) 曲线的 AutoLISP 程序,根据外部输入的函数表达式,迅速绘 出函数曲线,且可以灵活控制曲线的模拟精度,避免了以往 (setq y (c:cal "r*sin(e)")) (command(li st x y)) 绘制一种曲线都要重新编写程序的麻烦,使用起来十分方便(setqi i (+ 1 ii)) 可以参照本文的做法,绘制三维空间曲线或其他更复杂的 (setqi (+ i step)) ;参变量递增一个步长线,或将表达式计算功能应用到其他设计环境。中 ) 例如对于极坐标下参数方程: 参考文献:θ,2i [1] 阎聚群.AutoCAD2000 V isual LISP 开发[M]. 武汉:华中理工大学 (4) 0.2 版社,2000. r= 0.5i [2] 陈敏林,余明辉,宋维胜. 水利水电工程 CAD 技术[M]. 武汉:武 输入过程如下所示,控制角度变化 360?,每隔 2?计算 大学出版社,2004. 一个控制点,绘制的曲线如图2 所示。 AutoLISP ProgramI mplement to Draw Any Pane Functon Curve li XU Ming-yi,WANG Jiang,WANG Li-wei (StateK ey Laboratoryo f Water Resources and HydropEowneginr e ering Science, WuhanU niversity,Wuhan 430072, China) Abstract:Usng AutoCAD expresson caculaton abity, the Auto LSP program s mplemented to draw usua our-type planef unctio iililiIiilfcurve. This program can draw the according curve basedon input outer function expressionand control the simulateprecisio n. Key words:AutoCAD;LISP;function curve;expression
本文档为【绘制平面任意函数曲线的AutoLISP程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_180829
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:7
分类:生活休闲
上传时间:2017-09-20
浏览量:75