zdqwy19 发表于 2020-7-7 10:55:44

反应器不起作用

文字中有段代码,查看时都正确,却不能显示?


(defun show-l (notifier-object reactor-object parameter-list / p str el)
(setq p (nth 1 (reverse(vl-remove-if-not '(lambda(x)(= 10 (car x))) (entget(vlax-vla-object->ename notifier-object))))))
(setq str (strcat "X=" (rtos (cadr p) 2 3) "\\PY=" (rtos (caddr p) 2 3)))
(setq el (entget (handent (car (vlr-data reactor-object)))))(princ el)
(setq el (subst (vl-list* 304 str) (assoc 304 el) el))
(entmod el);更新文本图元表
(princ el)
(princ)
)
(defun c:rct-line(/ el rlt vrl v_l1)
(setq el(car(entsel "\n111")))
(setq rlt(list(vlax-ename->vla-object el)));将图元名转换为VLA对象
;创建对象反应器,回调事件是图元被修改,回调函数是show-l
(setq v_l1(list(cdr (assoc 5 (entget el)))))
(setq vrl(vlr-pers(vlr-object-reactor rlt v_l1 '((:vlr-modified . show-l)))))
(princ)
)
在程序中插入(princ el)

命令: RCT-LINE
111
命令:
命令:
命令:
** 拉伸 **
指定拉伸点或 [基点(B)/复制(C)/放弃(U)/退出(X)]((-1 . <图元名: aeac170>) (0 . MULTILEADER) (330 . <图元名: aead700>) (5 . 8F) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbMLeader) (270 . 2) (300 . CONTEXT_DATA{) (40 . 1.0) (10 322.898 200.773 0.0) (41 . 0.18) (140 . 0.18) (145 . 0.09) (174 . 1) (175 . 6) (176 . 0) (177 . 0) (290 . 1) (304 . 123 345\P234 567) (11 0.0 0.0 1.0) (340 . <图元名: aead550>) (12 322.988 200.863 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 321.658 199.532 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . LEADER{) (290 . 1) (291 . 1) (10 322.538 200.773 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 0.36) (304 . LEADER_LINE{) (10 321.516 198.569 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <图元名: 0>) (171 . -2) (40 . 0.0) (341 . <图元名: 0>) (93 . 0) (305 . }) (271 . 0) (303 . }) (272 . 9) (273 . 9) (301 . }) (340 . <图元名: aead670>) (90 . 279552) (170 . 1) (91 . -1056964608) (341 . <图元名: aead5b0>) (171 . -2) (290 . 1) (291 . 1) (41 . 0.36) (342 . <图元名: aeac140>) (42 . 0.18) (172 . 2) (343 . <图元名: aead550>) (173 . 1) (95 . 6) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1))((-1 . <图元名: aeac170>) (0 . MULTILEADER) (330 . <图元名: aead700>) (5 . 8F) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbMLeader) (270 . 2) (300 . CONTEXT_DATA{) (40 . 1.0) (10 322.898 200.773 0.0) (41 . 0.18) (140 . 0.18) (145 . 0.09) (174 . 1) (175 . 6) (176 . 0) (177 . 0) (290 . 1) (304 . X=321.516\PY=198.569) (11 0.0 0.0 1.0) (340 . <图元名: aead550>) (12 322.988 200.863 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 321.658 199.532 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . LEADER{) (290 . 1) (291 . 1) (10 322.538 200.773 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 0.36) (304 . LEADER_LINE{) (10 321.516 198.569 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <图元名: 0>) (171 . -2) (40 . 0.0) (341 . <图元名: 0>) (93 . 0) (305 . }) (271 . 0) (303 . }) (272 . 9) (273 . 9) (301 . }) (340 . <图元名: aead670>) (90 . 279552) (170 . 1) (91 . -1056964608) (341 . <图元名: aead5b0>) (171 . -2) (290 . 1) (291 . 1) (41 . 0.36) (342 . <图元名: aeac140>) (42 . 0.18) (172 . 2) (343 . <图元名: aead550>) (173 . 1) (95 . 6) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1))((-1 . <图元名: aeac170>) (0 . MULTILEADER) (330 . <图元名: aead700>) (5 . 8F) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbMLeader) (270 . 2) (300 . CONTEXT_DATA{) (40 . 1.0) (10 322.898 200.773 0.0) (41 . 0.18) (140 . 0.18) (145 . 0.09) (174 . 1) (175 . 6) (176 . 0) (177 . 0) (290 . 1) (304 . 123 345\P234 567) (11 0.0 0.0 1.0) (340 . <图元名: aead550>) (12 322.988 200.863 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 321.658 199.532 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . LEADER{) (290 . 1) (291 . 1) (10 322.538 200.773 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 0.36) (304 . LEADER_LINE{) (10 321.516 198.569 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <图元名: 0>) (171 . -2) (40 . 0.0) (341 . <图元名: 0>) (93 . 0) (305 . }) (271 . 0) (303 . }) (272 . 9) (273 . 9) (301 . }) (340 . <图元名: aead670>) (90 . 279552) (170 . 1) (91 . -1056964608) (341 . <图元名: aead5b0>) (171 . -2) (290 . 1) (291 . 1) (41 . 0.36) (342 . <图元名: aeac140>) (42 . 0.18) (172 . 2) (343 . <图元名:
aead550>) (173 . 1) (95 . 6) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1))((-1 . <图元名: aeac170>) (0 . MULTILEADER) (330 . <图元名: aead700>) (5 . 8F) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbMLeader) (270 . 2) (300 . CONTEXT_DATA{) (40 . 1.0) (10 322.898 200.773 0.0) (41 . 0.18) (140 . 0.18) (145 . 0.09) (174 . 1) (175 . 6) (176 . 0) (177 . 0) (290 . 1) (304 . X=321.516\PY=198.569) (11 0.0 0.0 1.0) (340 . <图元名: aead550>) (12 322.988 200.863 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 321.658 199.532 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . LEADER{) (290 . 1) (291 . 1) (10 322.538 200.773 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 0.36) (304 . LEADER_LINE{) (10 321.516 198.569 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <图元名: 0>) (171 . -2) (40 . 0.0) (341 . <图元名: 0>) (93 . 0) (305 . }) (271 . 0) (303 . }) (272 . 9) (273 . 9) (301 . }) (340 . <图元名: aead670>) (90 . 279552) (170 . 1) (91 . -1056964608) (341 . <图元名: aead5b0>) (171 . -2) (290 . 1) (291 . 1) (41 . 0.36) (342 . <图元名: aeac140>) (42 . 0.18) (172 . 2) (343 . <图元名: aead550>) (173 . 1) (95 . 6) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1))((-1 . <图元名: aeac170>) (0 . MULTILEADER) (330 . <图元名: aead700>) (5 . 8F) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbMLeader) (270 . 2) (300 . CONTEXT_DATA{) (40 . 1.0) (10 322.898 200.773 0.0) (41 . 0.18) (140 . 0.18) (145 . 0.09) (174 . 1) (175 . 6) (176 . 0) (177 . 0) (290 . 1) (304 . 123 345\P234 567) (11 0.0 0.0 1.0) (340 . <图元名: aead550>) (12 322.988 200.863 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 321.658 199.532 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . LEADER{) (290 . 1) (291 . 1) (10 322.538 200.773 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 0.36) (304 . LEADER_LINE{) (10 321.516 198.569 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <图元名: 0>) (171 . -2) (40 . 0.0) (341 . <图元名: 0>) (93 . 0) (305 . }) (271 . 0) (303 . }) (272 . 9) (273 . 9) (301 . }) (340 . <图元名: aead670>) (90 . 279552) (170 . 1) (91 . -1056964608) (341 . <图元名: aead5b0>) (171 . -2) (290 . 1) (291 . 1) (41 . 0.36) (342 . <图元名: aeac140>) (42 . 0.18) (172 . 2) (343 . <图元名: aead550>) (173 . 1) (95 . 6) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1))((-1 . <图元名: aeac170>) (0 . MULTILEADER) (330 . <图元名: aead700>) (5 . 8F) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbMLeader) (270 . 2) (300 . CONTEXT_DATA{) (40 . 1.0) (10 322.898 200.773 0.0) (41 . 0.18) (140 . 0.18) (145 . 0.09) (174 . 1) (175 . 6) (176 . 0) (177 . 0) (290 . 1) (304 . X=321.516\PY=198.569) (11 0.0 0.0 1.0) (340 . <图元名: aead550>) (12 322.988 200.863 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 321.658 199.532 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . LEADER{) (290 . 1) (291 . 1) (10 322.538 200.773 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 0.36) (304 . LEADER_LINE{) (10 321.516 198.569 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <图元名: 0>) (171 . -2) (40 . 0.0) (341 . <图元名: 0>) (93 . 0) (305 . }) (271 . 0) (303 . }) (272 . 9) (273 . 9)
(301 . }) (340 . <图元名: aead670>) (90 . 279552) (170 . 1) (91 . -1056964608) (341 . <图元名: aead5b0>) (171 . -2) (290 . 1) (291 . 1) (41 . 0.36) (342 . <图元名: aeac140>) (42 . 0.18) (172 . 2) (343 . <图元名: aead550>) (173 . 1) (95 . 6) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1))



jun353835273 发表于 2020-7-8 14:07:55

本帖最后由 jun353835273 于 2020-7-8 14:17 编辑

你这个反应器,是移动自身触发的条件。没有做过这种,感觉实现不了,vl-catch-all-apply错误处理判断都是通不过,返回值为#<%catch-all-apply-error%>

你可以自己画多段线这样实现,按你现在这种方法应该是没有问题的

satan421 发表于 2020-7-8 14:08:47

打印出来的图元资料都是(princ el)得到的,而(entmod el)返回的是nil,即不能修改图元。
使用vla-put-textstring试了下,提示"对象正在通知",猜测callback函数执行期间不能改变图元资料。
如果还是想用反应器的话,可以考虑用PL线和text/mtext。
页: [1]
查看完整版本: 反应器不起作用