明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1715|回复: 9

[基础] 如何叫出副程式0.0

[复制链接]
发表于 2010-9-7 22:08:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-9-8 20:48:29 编辑

在寫lisp的時候,會為了方便維修,就使用副程式。

 

比如說我有一個lisp檔(檔名"vc lisp"),裡面專放副程式

放很多個

 

ex:

(defun area3(a b c )

  (setq s (* (+ a b c) 0.5))

  (sqrt (* s (- s a) (- s b) (- s c)))

)

 

我希望我在編寫一個新的lisp程式的時候檔名"abc",我可以直接叫出"vc lisp"裡頭的副程式出來用

請問我要怎麼設定啊??

 

不知道我這樣敘述,大家能明白我的意思嗎

 

 

发表于 2010-9-7 22:26:00 | 显示全部楼层

你把所谓的那些幅程序全部保存到一个文件,比如  D:\FILE.LSP。现在你在新的LISP中想调用你的自定义程序,只要加载FILE.LSP文件就行,在调用前加入一名 (load "d:/file.lsp")
一般,我们会有很多自定义函数,我们将很保存到一个文件,然后,我们把新文件编译成VLX,将FILE.LSP附加进去,这样,以后只要加载了VLX文件,那些自定义函数就会自动装入内存,你就直接可以用了。

发表于 2010-9-7 22:30:00 | 显示全部楼层

APPLOAD,启动组

 楼主| 发表于 2010-9-8 07:07:00 | 显示全部楼层

嗯嗯,原來只是加上一個指定路徑,就可以使用自定義函數了。

哈哈,謝謝你囉。

 楼主| 发表于 2010-9-8 12:38:00 | 显示全部楼层

我又遇到了一个问题,帮我看一下

下面是我的程式码

当我在cad中载入的完成之后

我输入指令"area3" 却出现了这个讯息

"不明的指令「AREA3」。請按 F1 取得說明。"

我是哪一个地方做错了??

 

(defun C:18()
  (area3) 

(prin1)
)


(defun area3(a b c )
  (setq s (* (+ a b c) 0.5))
  (sqrt (* s (- s a) (- s b) (- s c)))
)

发表于 2010-9-8 15:33:00 | 显示全部楼层

area3你定義的是子程序,調用方法(area3)

此處你應該輪命令18調用子程序area3

 楼主| 发表于 2010-9-8 19:23:00 | 显示全部楼层
所以正確的寫法是什麼???
发表于 2010-9-8 19:51:00 | 显示全部楼层
应该带参数调用吧,如(area3 1 1 1)
发表于 2010-9-8 19:52:00 | 显示全部楼层
否则a b c 都为nil
 楼主| 发表于 2010-9-8 20:48:00 | 显示全部楼层
嗯嗯,謝謝,我懂你的意思了。原來是那幾個變數沒有被定義。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 10:29 , Processed in 0.183119 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表