明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1653|回复: 6

想问一下,如何lisp与arx进行数据传递,你采用什么方法!?

[复制链接]
发表于 2004-3-9 17:33:00 | 显示全部楼层 |阅读模式
想问一下,如何lisp与arx进行数据传递(交互),你采用什么方法!?


我试图用函数(如acedRetReal等函数)的方法来实现


但始终无法运行


你们有什么好的方法!?


版主,好,你能建议一下吗!?
发表于 2004-3-10 16:28:00 | 显示全部楼层
放上来帮你看看
发表于 2004-3-10 16:34:00 | 显示全部楼层
比如说你在Lisp 中调用


(Setq a (myarx 10))


在Arx中,


1. 定义一个命令myarx


2.在命令myarx中,提取到一个参数10(注意类型RTSHORT)


3.做你的运算,如10*5,返回50


可以用acedRT返回;


最后,Lisp中a就得到50了.
 楼主| 发表于 2004-3-10 18:56:00 | 显示全部楼层
根据你所说的,那参数可要一个一个传递 比喻我要传一个数列,代码如下: int fzg2() //fzg2为ads_defun定义的命令
{
resbuf* pArg = acedGetArgs();
CGearDialog Dlg;
short Z;
double c,Ha,M,a,bb,ds;
Z=Dlg.m_nZ; ....... res_list=acutBuildList(RTSHORT,Z,
RTREAL,c,
RTREAL,Ha,
RTREAL,M,
RTREAL,ds,
RTREAL,bb,0);
if(res_list!=NULL){
acdbFail("创建表失败!\n");
return 0;}
acedRetList(res_list);
acutRelRb(res_list);
// TODO: Implement the command
return RTNORM;
} 在lisp里 (setq mylist (list '0,'0,'0,'0,'0,'0))
(setq aa1 (fzg2 mylist))
setq Z (nth 0 aa1)
c (nth 1 aa1)
Ha(nth 2 aa1)
M (nth 3 aa1)
ds(nth 4 aa1)
bb(nth 5 aa1) 错误是; 错误: 无效的数据类型或数据溢出: 0,(autocad命令行提示) 不解,尽请赐教!
发表于 2004-3-11 09:53:00 | 显示全部楼层
看不出有多大的错误,思路上是对的. 下面这一句倒是不对 if(res_list!=NULL){
acdbFail("创建表失败!\n");
return 0; } 改为if(res_list==NULL)
 楼主| 发表于 2004-3-11 12:50:00 | 显示全部楼层
根据你所说的,我再次试了几次


还是出现上面的错误提示,数据溢出,或类型错误


是不是在lisp的定义方式有误,还在arz里程序不对!?
发表于 2004-3-11 16:28:00 | 显示全部楼层
思路是对的,你可能要一点点查,可能有点小错误而已.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 00:44 , Processed in 0.190923 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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