明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2679|回复: 11

请教一下,ads_defun用来作什么!?(迫切了解)

  [复制链接]
发表于 2004-3-10 13:51:00 | 显示全部楼层 |阅读模式
在objectARX defuned command (向导工具条cmd)


提供了两种注册命令方式


一个是addcommand 一个是ads_defun,那么


ads_defun用来作什么,如果使ads_defun创建的命令,如何使用命令


(我试过addcommand可以直接以命令形式使用,而ads_defun不执行)
发表于 2004-3-10 16:25:00 | 显示全部楼层
在Lisp中使用
 楼主| 发表于 2004-3-10 19:03:00 | 显示全部楼层
根据你所说的,我建一个命令adscmd 并返回给lisp一个值 int adscmd()
{
// TODO: Implement the command
resbuf* pArg = acedGetArgs(); int z=6; acedRetInt(Z); return RTNORM;
} 这种编译无误,但在lisp却接收不到这个值Z (setq zz (adscmd z))(当然在用时加载arx程序) 是不是别的问题,还是我编程有误,望尽详言
发表于 2004-3-11 09:48:00 | 显示全部楼层
你用(setq zz         (adscmd))后


zz应当等于6
 楼主| 发表于 2004-3-11 12:47:00 | 显示全部楼层
; 错误: no function definition: adscmd


实在想不通,定义的是函数,且是命令


而在lisp却执行的不是命令!?
发表于 2004-3-11 13:13:00 | 显示全部楼层
上面的例子肯定可以通过,


再试试吧.
 楼主| 发表于 2004-3-11 14:10:00 | 显示全部楼层
谢谢版主指导,我重试了一下,没有问题, 由于我设定的Z值 是从另外一个类中引入的数据(class CGearDialog : public CDialog) int cmdz()// This is command 'CMDZ'
{CGearDialog Dlg;
// TODO: Implement the command
resbuf* pArg = acedGetArgs();
int Z;
Z=Dlg.m_nZ;//m_nZ整型数据
acedRetInt(Z);
return RTNORM;
} 这个从CGearDialog引入的数并没有传递过去, 同样,如果我将一个数从lisp里返回到ARX 建立ads_defun的数据又作何处理!?(再次谢过)
发表于 2004-3-11 16:26:00 | 显示全部楼层
看到resbuf* pArg = acedGetArgs();


你要做的只是从pArg中提数据,


你从Lisp传过来的所有数据(不管是List还是单个的数),都在pArg里了.


       


欢迎常来
 楼主| 发表于 2004-3-11 17:53:00 | 显示全部楼层
resbuf* pArg = acedGetArgs();这些代码是自动生成的


在创建的命令里,想从别的类中引入值,结果并没有引入值


正如上面的代码的所述,


还请版主再次指点一二
发表于 2004-3-12 08:49:00 | 显示全部楼层
那是你的类CGearDialog有问题.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 00:46 , Processed in 0.192372 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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