乐筑天下

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

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

[复制链接]

11

主题

33

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2004-3-23 20:54:00 | 显示全部楼层 |阅读模式
;我是反应器的初学者,请问我编的这段反应器的错误在哪里
; 运行出现的错误是 --        错误: *error*         函数中出错invalid  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 反应器定义成功!")
         )
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-23 21:26:00 | 显示全部楼层
仔细看看回调函数的定义,对象反应器的回调函数是有三个参数的。。。
回复

使用道具 举报

11

主题

33

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2004-3-24 08:02:00 | 显示全部楼层
这样就好了: (defun fun(a b c)
         (princ "\n 反应器定义成功!")
         )         
另外还有个问题:
书上说,不可以用command ,getent, entmod 函数,
而你编的利用反应器计算两个数相乘的程序的回调函数(ass命令启动的那个程序) 里为什么可以用 entget 和 entmod 呢?
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2004-3-24 08:05:00 | 显示全部楼层
(defun fun (notifier-object reactor-object parameter-list)
         (princ "\n 反應器定義成功!")
)
回复

使用道具 举报

11

主题

33

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2004-3-24 08:17:00 | 显示全部楼层
三楼的写法也是可以的,我测试过
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-24 19:53:00 | 显示全部楼层
回调函数限制的是交互式操作,如entsel、getpoint等(没有getent这个函数),并没有限制entmod,而我程序中对象的获得是通过回调函数的参数及扩展数据获得的,并没有交互式操作
回复

使用道具 举报

11

主题

33

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 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)
)

ieq04bkmdnx.JPG

ieq04bkmdnx.JPG

回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-24 21:59:00 | 显示全部楼层
你按他的说明,到216页,查看反应器使用规则,却没有这样一说。。。
而且这种限制只是说可能会导致应用程序出现不可预料的结果,并不是一定出错。
我这样使用不知是否存在隐患。。。我也糊涂了,帮助文件中也是一样,前面有说,可具体的使用规则却没有限制。
回复

使用道具 举报

11

主题

33

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2004-3-24 22:18:00 | 显示全部楼层
按照你的页面定位, 你到205页就有了
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-24 22:28:00 | 显示全部楼层
我知道有,我是提示你去看一下。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-15 15:33 , Processed in 2.627518 second(s), 76 queries .

© 2020-2025 乐筑天下

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