jackieshaw 发表于 2008-11-26 09:49:00

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

<p>调用cad内部命令是用command</p><p>调用自己前面写的程序呢?</p><p>应该可以把?</p>

cnks 发表于 2008-11-26 10:38:00

(defun c:tt()<br/>&nbsp; (princ "hello")<br/>&nbsp; )<br/>(defun c:tt1()<br/>&nbsp; (c:tt))

caoyin 发表于 2008-11-26 10:57:00

本帖最后由 作者 于 2008-11-26 11:00:32 编辑

如果是没有参数的、有屏幕拾取动作 c: 开头的函数好像不能像command在其他程序中调用

jackieshaw 发表于 2008-11-26 11:14:00

lidejun_55发表于2008-11-26 10:38:00static/image/common/back.gif(defun c:tt()&nbsp; (princ \"hello\")&nbsp; )(defun c:tt1()&nbsp; (c:tt))

<p>需要写在同一个文件中吗?</p><p>就是说我cad已经加载了tt这个程序了</p><p></p><p>我的另一个程序tt1要调用tt这个程序</p><p>(defun c:tt()<br/>&nbsp; (princ "hello")<br/>&nbsp; )</p><p>这几行还必须写在后面这个程序里面吗</p>

cnks 发表于 2008-11-26 11:31:00

caoyin发表于2008-11-26 10:57:00static/image/common/back.gif如果是没有参数的、有屏幕拾取动作 c: 开头的函数好像不能像command在其他程序中调用

<p>不知道你说的是不是这样的:</p><p>(defun c:tt()<br/>&nbsp; (setq ss (ssget))<br/>&nbsp; )<br/>(defun c:tt1()<br/>&nbsp; (c:tt)<br/>&nbsp; (princ "hello")<br/>&nbsp; )</p>

cnks 发表于 2008-11-26 11:32:00

jackieshaw发表于2008-11-26 11:14:00static/image/common/back.gif需要写在同一个文件中吗?就是说我cad已经加载了tt这个程序了我的另一个程序tt1要调用tt这个程序(defun c:tt()&nbsp; (princ \"hello\")&nbsp; )这几行还必须写在后面这个程序里面吗

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

jackieshaw 发表于 2008-11-26 11:32:00

lidejun_55发表于2008-11-26 10:38:00static/image/common/back.gif(defun c:tt()&nbsp; (princ \"hello\")&nbsp; )(defun c:tt1()&nbsp; (c:tt))

<p>我前面那个程序是有参数的,请问怎么写?</p><p></p><p>我前面调用的程序是xp</p><p>敲完xp 之后还要输入"all" 回车 回车 "i" 再回车</p><p></p><p>请问是这样吗?</p><p>(defun c:xpp()<br/>((c:xp) "all" "" "i" ""))</p><p>我执行xpp好像还是不对啊</p><p>运行的效果还是和xp一样的</p><p></p><p>麻烦解答一下</p><p></p>

cnks 发表于 2008-11-26 11:36:00

<p>c:开头的函数默认为注册成command类型,可以被命令行直接调用</p><p>你的c:开头函数如果有参数就不是这样调用的,应该是这样:</p><p>(c:xp "all" "" "i" "")</p>

carrot1983 发表于 2008-11-26 11:37:00

<p>用子函数啊</p><p>(defun xp (a b c)</p><p>(princ a)</p><p>(princ b)</p><p>(princ c)</p><p>)</p><p>(xp "a" "b" "c")</p>

caoyin 发表于 2008-11-26 13:26:00

<p><font face="Verdana" color="#61b713"><font color="#000000">回</font><strong>lidejun_55</strong></font>:</p><p>(defun c:tt (/ a) (setq a(car(entsel)))(entdel a))</p><p>我的意思是不能像cad自带命令一样被其他程序引用</p><p>注册为命令的lisp程序好像也容易出错</p>
页: [1] 2
查看完整版本: lisp中怎样调用自己编写的程序