明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3117|回复: 10

[求助]请高手指点一下反应器的毛病在哪里?

[复制链接]
发表于 2004-3-23 20:54:00 | 显示全部楼层 |阅读模式
;我是反应器的初学者,请问我编的这段反应器的错误在哪里 ; 运行出现的错误是 -- 错误: *error* 函数中出错invalid AutoCAD command: nil
(defun MakeReactor (ent)
(setq Rct1 (vlr-object-reactor (list (vlax-ename->vla-object ent))
"Rct" '((:vlr-modified . fun))))
) (defun c:main()
(vl-load-com)
(setq obt (entsel "\n选择物体"))
(setq ent (car obt))
(MakeReactor ent)
) ;回调函数
(defun fun()
(princ "\n 反应器定义成功!")
)
发表于 2004-3-23 21:26:00 | 显示全部楼层
仔细看看回调函数的定义,对象反应器的回调函数是有三个参数的。。。
 楼主| 发表于 2004-3-24 08:02:00 | 显示全部楼层
这样就好了: (defun fun(a b c)
(princ "\n 反应器定义成功!")
) 另外还有个问题: 书上说,不可以用command ,getent, entmod 函数, 而你编的利用反应器计算两个数相乘的程序的回调函数(ass命令启动的那个程序) 里为什么可以用 entget 和 entmod 呢?
发表于 2004-3-24 08:05:00 | 显示全部楼层
(defun fun (notifier-object reactor-object parameter-list)
(princ "\n 反應器定義成功!")
)
 楼主| 发表于 2004-3-24 08:17:00 | 显示全部楼层
三楼的写法也是可以的,我测试过
发表于 2004-3-24 19:53:00 | 显示全部楼层
回调函数限制的是交互式操作,如entsel、getpoint等(没有getent这个函数),并没有限制entmod,而我程序中对象的获得是通过回调函数的参数及扩展数据获得的,并没有交互式操作
 楼主| 发表于 2004-3-24 20:50:00 | 显示全部楼层
Visual LISP中文版开发人员手册.zip (VlispDev.pdf) 第217页 的“说明”见图 “说明”中说不能用 entmod 函数 ,而在你的程序的回调函数里却使用了,你的回调函数是这样的: (defun Cal (notifier-object reactor-object parameter-list / handles i ent txt Datas Result ents)
(setq Datas nil)
(setq handles (GetEx notifier-object "ForCal_meflying"))
(setq i 1)
(repeat (1- (length handles))
(setq ent (handent (nth i handles)))
(setq txt (GetTxt ent))
(setq Datas (append Datas (list (atof txt))))
(setq i (1+ i))
)
(setq ent (handent (car handles)))
(setq Result (apply '* Datas))
(setq ents (entget ent))
(setq ents (subst (cons 1 (rtos Result)) (assoc 1 ents) ents))
(entmod ents )
(princ)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-3-24 21:59:00 | 显示全部楼层
你按他的说明,到216页,查看反应器使用规则,却没有这样一说。。。


而且这种限制只是说可能会导致应用程序出现不可预料的结果,并不是一定出错。


我这样使用不知是否存在隐患。。。我也糊涂了,帮助文件中也是一样,前面有说,可具体的使用规则却没有限制。
 楼主| 发表于 2004-3-24 22:18:00 | 显示全部楼层
按照你的页面定位, 你到205页就有了
发表于 2004-3-24 22:28:00 | 显示全部楼层
我知道有,我是提示你去看一下。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 23:42 , Processed in 0.202414 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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