- UID
- 172112
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-9-5
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
问题:
我写的程序是这个样子的:
const char * str;
str = "(defun dtr(a) (* a ( / Pi 180.0))) ";
acDocManager->sendStringToExecute(pAcTargetDocument,str,false); //向CAD发送LISP字符串
acDocManager->sendStringToExecute(pAcTargetDocument,"(vl-acad-defun 'dtr) ",false); //函数註册
int stat;
int x = 180;
struct resbuf *result = NULL;
struct resbuf *list;
list = acutBuildList(RTSTR, "dtr", RTSHORT, x, RTNONE);
if (list != NULL)
{ stat = acedInvoke(list, &result);
acutRelRb(list);
}
if (result != NULL)
{ acutPrintf("\nSuccess: dtr of %d is %f\n", x, result->resval.rreal);
acutRelRb(result);
}
else
acutPrintf("Test failed\n");
结果运行的结果是这样的:
第一次是这样的.
Command: ff Test failed
Command: (defun dtr(a) (* a ( / Pi 180.0))) DTR
Command: (vl-acad-defun 'dtr) 2085
以后运行结果是这样的:
Command: ff
Success: dtr of 180 is 3.141593
Command: (defun dtr(a) (* a ( / Pi 180.0))) DTR
Command: (vl-acad-defun 'dtr) 2085
问题:第一次执行失败,以后就对了,是不是LISP函数註册的问题呀?还是命令栈后进先出的问题,
总之第一次运行就不正确,你帮著看下有什么好的解决办法,谢谢! |
|