初次练习玩反应器,很多不懂的,求高手帮忙~~~
目前完成的是,改变文本时,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))
- )
- )
- )
- )
- )
|