newbuser 发表于 2015-1-16 09:00:27

求助动态坐标反应器的操作(晓东论坛无人问津)

最近用反应器制作了个动态坐标显示的东西,可惜只能照猫画虎做个连接到点实体的对象反应器来实现,无法做个自身随位置改变而改变的反应器。请相关高手伸出援助之手。下面放上我 的lisp代码和操作效果。奇怪的是如果同时移动点和文字,而文字会在原来的位置和新移动到的位置显示两个实体,用regen刷新后原来位置上的就消失了。
还有个问题,明经论坛最近打开网页需要20-30秒的反应时间,不知是网站被黑了还是我电脑的问题。
还是访问晓东比较流畅 http://bbs.xdcad.net/thread-679140-1-1.html(vl-load-com)
(defun c:bb ()
(setq e-pt (car (entsel "\n 点")))
(setq e-text (car (entsel "\n 文字")))
(setqel-pt(entget e-pt)
str(strcat"X="
      (rtos (cadr (assoc 10 el-pt)) 2 3)
      " Y="
      (rtos (caddr (assoc 10 el-pt)) 2 3)
    )
el-text(entget e-text)
jb(list (cdr (assoc 5 el-text)))
obj-pt(list (vlax-ename->vla-object e-pt))
)
(setq
    vrl(vlr-pers
    (vlr-object-reactor obj-pt jb '((:vlr-modified . c-2l)))
)
)
(princ)
    (setq el-text (subst (cons 1 str) (assoc 1 el-text) el-text))
    (entmod el-text)
    (setq loop T)
(while loop
(setqcode (grread T 8)
mod(car code)
val(cadr code)
)
(cond
    ((= 5 mod)
   (setq el-pt (subst (cons 10 val) (assoc 10 el-pt) el-pt))
   (entmod el-pt)
   (command "regen")
    )
    ((or (= 3 mod) (= 25 mod)) (setq loop nil))
)
)
)

(defun c-2l (notifier-object
       reactor-object
       parameter-list
       /
      )
(setqp (vlax-safearray->list
      (vlax-variant-value
      (vla-get-Coordinates notifier-object)
      )
    )
)
(setq str (strcat "X=" (rtos (car p) 2 3) "Y=" (rtos (cadr p) 2 3)))
(setq e (handent (car (vlr-data reactor-object)))) ;获取文本图元名
(setq el (entget e))
(setq el (subst (vl-list* 1 str) (assoc 1 el) el))
(entmod el)      ;更新文本图元表
)
页: [1]
查看完整版本: 求助动态坐标反应器的操作(晓东论坛无人问津)