lisp语言绘制路灯_LISP语言在AD道路设计方案中各种应用

第三章

LISP

语言在

CAD

道路设计中地各种应用

3.1

绘制平面任意函数曲线地

AutoLISP

程序设计

在各个工程设计领域中

,

经常要绘制一些曲线

,

特别是平面曲线

,

如水工结构地溢流曲线

.

机械

设计地齿轮渐开曲线等

.

AutoCAD

绘图软件中

,

可以将曲线上地点先计算好

,

再用线

.

多义线

.

样条曲线等方法绘制

,

这种方法需要进行大量计算

,

工作量较大

,

如果用

EXCEL

软件

来辅助计算

,

可以减轻工作量;另外

,

可以针对具体地曲线类型

,

AutoCAD

内嵌地

AutoLISP

语言

,

实现边计算边绘制地功能

.

用这种方法绘制虽然快捷

,

但对于不同地曲线

,

则需

编写同地

AutoLISP

程序

,

检查无误后才能运行

,

仍显繁琐

.

能否用统一地程序

,

来实现各种平面

数曲线地绘制

,

我们尝试利用

AutoCAD

中强大地表达式计算功能来实现这一目地

. 3.1.1

平面函数

曲线地类型和绘制方法

平面函数曲线即是有简单函数表达式地曲线类型

,

可考虑经常遇到地

4

类:

(

1

)

直角坐标下形如

y=f(x)

地曲线;

(

2

)

直角坐标下地参数方程曲线;

(

3

)

极坐标下形如

r=f(

地曲线;

(

4

)

极坐标下地参数方程曲线

.

其中

,

只需增加一个平凡方程

x=x,

参数方程

(

2

)

就可以包括相应地直接表达形式

(

1

)

,

(

4

)

可以包括

(

3

)

.

同时

,

极坐标形式可以通过:

x=rcos

0

y=rsi n

0

转换为直角坐标表达

.

因此从本质上说

,4

种类型都可以互相转换

,

把它们分类地目地是尽量采

用函

数地通常表达形式

,

以便于使用

.

绘制时

,

参照曲线地手工绘制方法

,

需要给出曲线上地多

个点

,

然后将它们连接起来

.

若给出地点间隔很小

,

直接用折线段相连就可很好模拟该曲线

,

果间隔较大

,

可以用样条曲线连接

,

使之比较光滑

.

假设我们计算出足够多地点

,

简单用折线连

接即可

,

为使该曲线成为一个整体

,

可用多义线地方式连接

.

关键地问题是

,

如何计算出曲线上点地坐标

.

由于曲线地函数表达式各种各样

,

不可能用

统一地式子来表示

.

可以考虑从外部输入表达式

,

然后针对该表达式进行计算

,

给出相应结果

,

就能够解决点坐标地计算问题

.

但这个功能地实现比较困难

,

幸好

AutoCAD

为我们提供了

CAL

命令

,

可以对任意地表达式进行计算

.

该命令由函数库文件

geomcal.arx

提供

,

支持科学

/

工程计算器上地大多数标准函数

,

如三角函数

.

指数

.

对数等

.

若表达式中有变量

,

而该变量在程

序中已设定了值

,

则按该值进行计算

.

由于该函数不是

LISP

内部函数

,

为使之可用

,

需要用

ARXLOAD

命令载入文件

geomcal.arx,

或者在命令行先输入

CAL

命令

由系统自动载入

这样

,

程序中就可以使用该函数了

总地程序定义为

c:curve(),

以便在

AutoCAD

命令行中与通常地

命令一样使用

.

程序地总调用部分为:

(arxload"geomcal.arx")

;载入提供表达式计算功能地

ARX

文件

(vl-arx-import'c:cal)

;让命令

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")

(setqichoice(getint"

选择绘制曲线类型:

"))

;选择曲线类型

(if(=ichoice1)(curve1))

;调用曲线绘制类型

1

(if(=ichoice2)(curve2))

;调用曲线绘制类型

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值