- UID
- 1
- 积分
- 16111
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-3
- 最后登录
- 1970-1-1
|
发表于 2004-4-24 02:06:35
|
显示全部楼层
Re: [ARX函数]:ObjectARX2004的acedDefun
最初由 r33d 发布
[B]参照这个论坛的帖子,2002里面成功的例子及Arx的帮助文件,试验了多种方法,均未能成功的在2004里面定义一个能返回字符串给Lisp的命令。addCommand有一个flag是ARX_CMD_DEFUN,有谁成功用过。
我最终想实现的就是做?.. [/B]
你要想实现ARX定义一个外部函数供LISP调用,那么需要在AcRx::kLoadDwgMsg消息里面,使用ads_defun 定义,结构如下:
[php]
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg) {
case AcRx::kInitAppMsg:
InitModule(_hdllInstance, DLL_PROCESS_ATTACH, NULL);
acrxUnlockApplication(pkt);
#if(ADS>14)
acrxDynamicLinker->registerAppMDIAware(pkt);
#endif
initApp();
break;
case AcRx::kLoadDwgMsg:
OnkLoadDwgMsg();
break;
................................
.........................
[/php]
OnkLoadDwgMsg()函数定义如下:
[php]
static int OnkLoadDwgMsg(void)
{
// TODO: add your message handler code here
// FUNCLOAD -- 定义此应用程序的两个外部函数
int i;
for (i = 0; i < ELEMENTS(func_table); i++) {
if (!ads_defun(func_table.func_name, (short)i))
return RTERROR;
}
return RTNORM;
// end of message handler
}
[/php]
函数表func_table结构如下:
[php]
static struct func_entry func_table[] = {
{"test",yourfunc},
...................
}
[/php]
这样,你就定义一个外部函数名为test的函数让LISP调用了。 |
|