乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 109|回复: 6

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

[复制链接]

5

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
36
发表于 2004-3-9 17:33:00 | 显示全部楼层 |阅读模式
想问一下,如何lisp与arx进行数据传递(交互),你采用什么方法!?
我试图用函数(如acedRetReal等函数)的方法来实现
但始终无法运行
你们有什么好的方法!?
版主,好,你能建议一下吗!?
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-10 16:28:00 | 显示全部楼层
放上来帮你看看
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 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了.
回复

使用道具 举报

5

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
36
发表于 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命令行提示)
不解,尽请赐教!
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-11 09:53:00 | 显示全部楼层
看不出有多大的错误,思路上是对的.
下面这一句倒是不对         
if(res_list!=NULL){
                                         acdbFail("创建表失败!\n");
return 0;
}
改为if(res_list==NULL)
回复

使用道具 举报

5

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
36
发表于 2004-3-11 12:50:00 | 显示全部楼层
根据你所说的,我再次试了几次
还是出现上面的错误提示,数据溢出,或类型错误
是不是在lisp的定义方式有误,还在arz里程序不对!?
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-11 16:28:00 | 显示全部楼层
思路是对的,你可能要一点点查,可能有点小错误而已.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 17:45 , Processed in 0.167144 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表