想问一下,如何lisp与arx进行数据传递,你采用什么方法!?
想问一下,如何lisp与arx进行数据传递(交互),你采用什么方法!?我试图用函数(如acedRetReal等函数)的方法来实现
但始终无法运行
你们有什么好的方法!?
版主,好,你能建议一下吗!? 放上来帮你看看 比如说你在Lisp 中调用
(Setq a (myarx 10))
在Arx中,
1. 定义一个命令myarx
2.在命令myarx中,提取到一个参数10(注意类型RTSHORT)
3.做你的运算,如10*5,返回50
可以用acedRT返回;
最后,Lisp中a就得到50了. 根据你所说的,那参数可要一个一个传递
比喻我要传一个数列,代码如下:
int fzg2() //fzg2为ads_defun定义的命令<BR>{ <BR> resbuf* pArg = acedGetArgs();<BR> CGearDialog Dlg;<BR> short Z;<BR> double c,Ha,M,a,bb,ds;<BR> Z=Dlg.m_nZ;
.......
res_list=acutBuildList(RTSHORT,Z,<BR> RTREAL,c,<BR> RTREAL,Ha,<BR> RTREAL,M,<BR> RTREAL,ds,<BR> RTREAL,bb,0);<BR> if(res_list!=NULL){<BR> acdbFail("创建表失败!\n");<BR> return 0;}<BR> acedRetList(res_list);<BR> acutRelRb(res_list);<BR> // TODO: Implement the command<BR> return RTNORM;<BR>}
在lisp里
(setq mylist (list '0,'0,'0,'0,'0,'0))<BR>(setq aa1 (fzg2 mylist))<BR>setq Z (nth 0 aa1) <BR> c (nth 1 aa1)<BR> Ha(nth 2 aa1)<BR> M (nth 3 aa1)<BR> ds(nth 4 aa1)<BR> bb(nth 5 aa1)
错误是; 错误: 无效的数据类型或数据溢出: 0,(autocad命令行提示)
不解,尽请赐教!<BR> 看不出有多大的错误,思路上是对的.
下面这一句倒是不对
if(res_list!=NULL){<BR> acdbFail("创建表失败!\n");<BR>return 0;
}
改为if(res_list==NULL)
<BR> 根据你所说的,我再次试了几次
还是出现上面的错误提示,数据溢出,或类型错误
是不是在lisp的定义方式有误,还在arz里程序不对!? 思路是对的,你可能要一点点查,可能有点小错误而已.
页:
[1]