第一次学做反应器,求高手帮忙完善下~~~
初次练习玩反应器,很多不懂的,求高手帮忙~~~目前完成的是,改变文本时,PL线图层随之改变.
1.求高手帮忙添加一个功能,删除文字时,关联的pl线也一起删除~
2.关闭后重新打开,反应器关联就消失了,求帮忙....(defun makelayer (lname / olayer)
(if (vl-catch-all-error-p
(setq olayer
(vl-catch-all-apply 'vla-add
(list
(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
lname
)
)
)
)
nil
olayer
)
)
;==================================
(vl-load-com)
;反应器回调函数
(defun txt-pl (per rea paramete / str ydlay )
;;获取文字内容
(setq str (vla-get-textstring per)
ydlay (strcat "yd_" (strcase str))
)
;取出边界线对象
(setq e1 (vlax-ename->vla-object
(handent
(car (vlr-data rea))
)
)
)
;;修改边界线图层
(makelayer ydlay)
(vla-put-layer e1 ydlay)
(princ)
)
;程序开始
(defun c:tt( / ent1 obj1 hd ent2 obj2 str ydlay)
(if(and (setq ent1 (car(entsel "\n 请选择地块边界线:"));pl线对象
obj1 (vlax-ename->vla-object ent1)
hd (cdr (assoc 5 (entget ent1)))
)
(setq ent2 (car(entsel "\n 请选择用地代码:"));文字对象
obj2 (vlax-ename->vla-object ent2)
str (vla-get-textstring obj2)
)
)
(progn
(setq ydlay (strcat "YD_" (strcase str)))
(makelayer ydlay)
(vla-put-layer obj1 ydlay)
(vlr-pers-release ;_文字对象反应器
(vlr-object-reactor
(list obj2)
(list hd)
'((:vlr-modified . txt-pl))
)
)
)
)
)
页:
[1]