找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2240|回复: 0

求助动态坐标反应器的操作

[复制链接]
发表于 2015-1-15 08:30:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
最近用反应器制作了个动态坐标显示的东西,可惜只能照猫画虎做个连接到点实体的对象反应器来实现,无法做个自身随位置改变而改变的反应器。请相关高手伸出援助之手。下面放上我 的lisp代码和操作效果。奇怪的是如果同时移动点和文字,而文字会在原来的位置和新移动到的位置显示两个实体,用regen刷新后原来位置上的就消失了。
  1. (vl-load-com)
  2. (defun c:bb ()
  3.   (setq e-pt (car (entsel "\n 点")))
  4.   (setq e-text (car (entsel "\n 文字")))
  5.   (setq  el-pt  (entget e-pt)
  6.   str  (strcat  "X="
  7.       (rtos (cadr (assoc 10 el-pt)) 2 3)
  8.       " Y="
  9.       (rtos (caddr (assoc 10 el-pt)) 2 3)
  10.     )
  11.   el-text  (entget e-text)
  12.   jb  (list (cdr (assoc 5 el-text)))
  13.   obj-pt  (list (vlax-ename->vla-object e-pt))
  14.   )
  15.   (setq
  16.     vrl  (vlr-pers
  17.     (vlr-object-reactor obj-pt jb '((:vlr-modified . c-2l)))
  18.   )
  19.   )
  20.   (princ)
  21.     (setq el-text (subst (cons 1 str) (assoc 1 el-text) el-text))
  22.     (entmod el-text)
  23.     (setq loop T)
  24. (while loop
  25.   (setq  code (grread T 8)
  26.   mod  (car code)
  27.   val  (cadr code)
  28.   )
  29.   (cond
  30.     ((= 5 mod)
  31.      (setq el-pt (subst (cons 10 val) (assoc 10 el-pt) el-pt))
  32.      (entmod el-pt)
  33.      (command "regen")
  34.     )
  35.     ((or (= 3 mod) (= 25 mod)) (setq loop nil))
  36.   )
  37. )
  38. )

  39. (defun c-2l (notifier-object
  40.        reactor-object
  41.        parameter-list
  42.        /
  43.       )
  44.   (setq  p (vlax-safearray->list
  45.       (vlax-variant-value
  46.         (vla-get-Coordinates notifier-object)
  47.       )
  48.     )
  49.   )
  50.   (setq str (strcat "X=" (rtos (car p) 2 3) "  Y=" (rtos (cadr p) 2 3)))
  51.   (setq e (handent (car (vlr-data reactor-object)))) ;获取文本图元名
  52.   (setq el (entget e))
  53.   (setq el (subst (vl-list* 1 str) (assoc 1 el) el))
  54.   (entmod el)        ;更新文本图元表
  55. )
1.gif

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 18:58 , Processed in 0.168165 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表