wocall 发表于 2004-9-22 10:08:00

請教下高手ARX和LISP程序調用的問題

本帖最后由 作者 于 2004-10-11 8:46:21 编辑

谢谢

lovelin 发表于 2004-9-22 10:21:00

我也遇到这样的问题了,但没有一个高手会,你后面的LISP程序是这样的:


<P class=prompt>Command:<!--emsp-->                        (setq testboole t)


<P class=prompt>T


<P class=prompt>Command:<!--emsp-->                        (setq teststr "HELLO, WORLD")


<P class=prompt>"HELLO, WORLD"


<P class=prompt>Command:<!--emsp-->                        (setq sset1 (ssget))


<P class=prompt_end>&lt;Selection set: 1&gt;


<P class=prompt_end>而且这些东西必须先註册过.否则上面的代码不能用.

spaceh 发表于 2004-10-5 16:31:00

版主都说过了,呵呵,引用一下:


int call_lisp_function(void)<BR>{<BR>                       resbuf *rb_in = acutBuildList(RTSTR,"myfun",RTNONE);<BR>                       resbuf *rb_out = NULL;<BR>                       int rc = acedInvoke(rb_in,&amp;rb_out);<BR>                       acutRelRb(rb_in); acutRelRb(rb_out);<BR>                       acedGetSym("myfunret",&amp;rb_out);<BR>                       return (RSRSLT) ;<BR><FONT color=#660066>}</FONT><BR>

wocall 发表于 2004-10-6 08:22:00

本帖最后由 作者 于 2004-10-11 8:45:49 编辑 <br /><br /> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3>谢谢<FONT face="Times New Roman">!</FONT></FONT>

h2023197 发表于 2004-10-11 11:16:00

上次的问题怎么解决的?


以下是上次的程序:


const char * str;<BR>str = "(defun dtr(a)       (* a ( / Pi 180.0))) ";<BR>acDocManager-&gt;sendStringToExecute(pAcTargetDocument,str,false);                               //向CAD发送LISP字符串<BR>acDocManager-&gt;sendStringToExecute(pAcTargetDocument,"(vl-acad-defun 'dtr) ",false); //函数註册<BR>int stat; <BR>int x = 180; <BR>struct resbuf *result = NULL; <BR>struct resbuf *list; <BR>list = acutBuildList(RTSTR, "dtr", RTSHORT, x, RTNONE);<BR>if (list != NULL) <BR>{ stat = acedInvoke(list, &amp;result); <BR>       acutRelRb(list); <BR>} <BR>        if (result != NULL) <BR>{ acutPrintf("\nSuccess: dtr of %d is %f\n", x, result-&gt;resval.rreal); <BR>       acutRelRb(result); <BR>} <BR>else <BR>acutPrintf("Test failed\n");<BR>结果运行的结果是这样的:<BR>第一次是这样的.<BR>Command: ff Test failed<BR>Command: (defun dtr(a)       (* a ( / Pi 180.0))) DTR<BR>Command: (vl-acad-defun 'dtr) 2085<BR>以后运行结果是这样的:<BR>Command: ff<BR>Success: dtr of 180 is 3.141593<BR>Command: (defun dtr(a)       (* a ( / Pi 180.0))) DTR<BR>Command: (vl-acad-defun 'dtr) 2085<BR>问题:第一次执行失败,以后就对了,是不是LISP函数註册的问题呀?还是命令栈后进先出的问题,<BR>总之第一次运行就不正确,你帮著看下有什么好的解决办法,谢谢!<BR>
页: [1]
查看完整版本: 請教下高手ARX和LISP程序調用的問題