明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2113|回复: 14

lisp中怎样调用自己编写的程序

  [复制链接]
发表于 2008-11-26 09:49:00 | 显示全部楼层 |阅读模式

调用cad内部命令是用command

调用自己前面写的程序呢?

应该可以把?

发表于 2008-11-26 10:38:00 | 显示全部楼层
(defun c:tt()
  (princ "hello")
  )
(defun c:tt1()
  (c:tt))
发表于 2008-11-26 10:57:00 | 显示全部楼层
本帖最后由 作者 于 2008-11-26 11:00:32 编辑

如果是没有参数的、有屏幕拾取动作 c: 开头的函数好像不能像command在其他程序中调用
 楼主| 发表于 2008-11-26 11:14:00 | 显示全部楼层
lidejun_55发表于2008-11-26 10:38:00(defun c:tt()  (princ \"hello\")  )(defun c:tt1()  (c:tt))

需要写在同一个文件中吗?

就是说我cad已经加载了tt这个程序了

我的另一个程序tt1要调用tt这个程序

(defun c:tt()
  (princ "hello")
  )

这几行还必须写在后面这个程序里面吗

发表于 2008-11-26 11:31:00 | 显示全部楼层
caoyin发表于2008-11-26 10:57:00如果是没有参数的、有屏幕拾取动作 c: 开头的函数好像不能像command在其他程序中调用

不知道你说的是不是这样的:

(defun c:tt()
  (setq ss (ssget))
  )
(defun c:tt1()
  (c:tt)
  (princ "hello")
  )

发表于 2008-11-26 11:32:00 | 显示全部楼层
jackieshaw发表于2008-11-26 11:14:00需要写在同一个文件中吗?就是说我cad已经加载了tt这个程序了我的另一个程序tt1要调用tt这个程序(defun c:tt()  (princ \"hello\")  )这几行还必须写在后面这个程序里面吗

不需要,你可以自己试验一下,多动手

 楼主| 发表于 2008-11-26 11:32:00 | 显示全部楼层
lidejun_55发表于2008-11-26 10:38:00(defun c:tt()  (princ \"hello\")  )(defun c:tt1()  (c:tt))

我前面那个程序是有参数的,请问怎么写?

我前面调用的程序是xp

敲完xp 之后还要输入"all" 回车 回车 "i" 再回车

请问是这样吗?

(defun c:xpp()
((c:xp) "all" "" "i" ""))

我执行xpp好像还是不对啊

运行的效果还是和xp一样的

麻烦解答一下

发表于 2008-11-26 11:36:00 | 显示全部楼层

c:开头的函数默认为注册成command类型,可以被命令行直接调用

你的c:开头函数如果有参数就不是这样调用的,应该是这样:

(c:xp "all" "" "i" "")

发表于 2008-11-26 11:37:00 | 显示全部楼层

用子函数啊

(defun xp (a b c)

(princ a)

(princ b)

(princ c)

)

(xp "a" "b" "c")

发表于 2008-11-26 13:26:00 | 显示全部楼层

lidejun_55

(defun c:tt (/ a) (setq a(car(entsel)))(entdel a))

我的意思是不能像cad自带命令一样被其他程序引用

注册为命令的lisp程序好像也容易出错

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-30 05:37 , Processed in 0.172612 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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