- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
绘制平面任意函数曲线的AutoLISP程序设计
绘制平面任意函数曲线的 AutoLISP 程序设计
徐明毅,王 江,王力维
(武汉大学水资源与水电工程科学国家重点实验室,湖北 武汉 430072)
摘要:利用 AutoCAD 的表达式计算功能,编写出绘制常用的 4 种类型平面函数曲线的 Auto LISP 程序,该程序能够根据外部输入的函
数表达式,绘制出相应曲线,并可控制模拟精度。
关键词:AutoCAD;LISP;函数曲线;表达式
中图分类号:TP 391.7
文献标识码:A
文章编号:1672- 545X(2008)11- 0056- 03
在各个工程设计领域中,经常要绘制一些曲线,特别是平
面曲线,如水工结构的溢流曲线、机械设计的齿轮渐开曲线 等。在 AutoCAD 绘图软件中,可以将曲线上的点先计算好,再 用线、多义线、样条曲线等方法绘制,这种方法需要进行大量 计算,工作量较大,如果用 EXCEL 软件来辅助计算,可以减轻 工作量;另外,可以针对具体的曲线类型,用 AutoCAD 内嵌的 AutoLISP 语言,实现边计算边绘制的功能[1]。用这种方法绘制 虽然快捷,但对于不同的曲线,则需编写不同的 AutoLISP 程 序,检查无误后才能运行,仍显繁琐。能否用统一的程序,来实 现各种平面函数曲线的绘制呢?本文尝试利用 AutoCAD 中强 大的表达式计算功能来实现这一目的。
关键的问题是,如何计算出曲线上点的坐标。由于曲线
函数表达式各种各样,不可能用统一的式子来表示。可以考 从外部输入表达式,然后针对该表达式进行计算,给出相应 果,就能够解决点坐标的计算问题。但这个功能的实现比较 难,幸好 AutoCAD 为我们提供了 CAL 命令,可以对任意的 达式进行计算。该命令由函数库文件 geomcal.arx 提供,支持 学 / 工程计算器上的大多数标准函数,如三角函数、指数、对 等。若表达式中有变量,而该变量在程序中已设定了值,则
该值进行计算。由于该函数不是 LISP 内部函数,为使之可用
需要用 ARXLOAD 命令载入文件 geomcal.arx,或者在命令
先输入 CAL 命令,由系统自动载入,这样,程序中就可以使 该函数了。
总的程序定义为 c:curve(),以便在 AutoCAD 命令行中 通常的命令一样使用。程序的总调用部分为:
平面函数曲线的类型和绘制方法
1
;载入提供表达式计算功能
ARX 文件
;让命令 c:cal 能够使用
(arxload geomcal.arx)
平面函数曲线即是有简单函数表达式的曲线类型,可考
虑经常遇到的 4 类:
(1)直角坐标下形如 y=f(x)的曲线;
(2)直角坐标下的参数方程曲线;
(3)极坐标下形如 r=f(θ)的曲线;
(4)极坐标下的参数方程曲线。
其中,只需增加一个平凡方程 x=x,参数方程(2)就可以包 括相应的直接表达形式(1),同样(4)可以包括(3)。同时,极坐 标形式可以通过:
(vl- arx- import c:cal)
(princ (1)直角坐标下曲线 y=f(x).\n)
(princ (2)直角坐标下参数曲线 x=f(i),y=g(i).\n) (princ (3)极坐标下曲线 r=f(theta).\n)
(princ (4)极坐标下参数曲线 theta=f(i),r=g(i).\n) (setq ichoice (getint 选择绘制曲线类型:)) ;
选择曲线类型
;调用曲线绘制类型 1
;调用曲线绘制类型 2
;调用曲线绘制类型 3
;调用曲线绘制类型 4
(if (= ichoice 1) (curve1))
(if (= ichoice 2) (curve2)) (if (= ichoice 3) (curve3)) (if (= ichoice 4) (curve4))
!x=rcosθ
(1)
y=rsinθ
转换为直角坐标表达。因此从本质上说,4 种类型都可以
互相转换,把它们分类的目的是尽量采用函数的通常表达形 式,以便于使用。
根据用户选择的曲线类型,转到相应的曲线类型绘制
序 curve1,该子程序没有传入传出参数。程序的第一个步骤是
读入有关的参数和控制变量。首先读入 y=f(x)的表达式,然后 输入自变量 x 的变化范围[low,up],接着根据模拟精度,输入曲 线剖分数目 steps,x 的变化步长即为 step=(up- low)/steps,该步 骤相应的 AutoLISP 程序如下:
(setq funy (getstring y=f(x)的表达式:)) (setq low (getreal x 的下限值:))
(setq up (getreal x 的上限值:)) (setq steps (getint 剖分数目:)) (
文档评论(0)