77077 发表于 2014-10-17 22:50:17

第一次学做反应器,求高手帮忙完善下~~~

初次练习玩反应器,很多不懂的,求高手帮忙~~~
目前完成的是,改变文本时,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]
查看完整版本: 第一次学做反应器,求高手帮忙完善下~~~