明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1069|回复: 5

[讨论] 请教:一个文字根据另一个文字的后两位自动更换内容

  [复制链接]
发表于 2025-4-28 09:13:08 | 显示全部楼层 |阅读模式



    有上下两行文字,下行文字的后两位是数字,可能是01至15,现在我想实现上面的文字根据下面文字后两位自动更新

比如说:下面文字后两位是 04,时候,上面文字内容为:甲方;
             下面文字后两位是 05,时候,上面文字内容为:乙方;
             下面文字后两位是 05,时候,上面文字内容为:今天上班;
              ........
如何实现这种情况;好像有说可以使用lisp,但是需要每次点击一个更新一次;

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-4-28 10:34:07 | 显示全部楼层
最好的办法是反应器,给你个笨办法,按自己的需求去改吧
  1. (defun c:tt  (/ en en1 ent lst n pt1 pt2 ss ss1)
  2. (setq lst '(("2-D0101-04" . "甲方")
  3.        ("2-D0101-05" . "乙方")
  4.        ("2-D0101-06" . "今天上班"))
  5.        ss  (ssget '((0 . "text") (1 . "*-*-*"))))
  6. (repeat (setq n (sslength ss))
  7.   (setq en (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
  8.   (vla-getboundingbox en 'pt1 'pt2)
  9.   (setq  pt1 (mapcar '+ '(0 600 0) (vlax-safearray->list pt1))
  10.   pt2 (mapcar '+ '(0 600 0) (vlax-safearray->list pt2)))
  11.   (setq ss1 (ssget "c" pt1 pt2 '((0 . "text"))))
  12.   (if ss1
  13.    (progn (setq  en1 (ssname ss1 0)
  14.     ent (entget en1))
  15.     (entmod
  16.      (subst (cons 1 (cdr (assoc (vla-get-textstring en) lst)))
  17.       (assoc 1 ent)
  18.       ent)))
  19.    (progn (vla-move (setq en1 (vla-copy en))
  20.         (vlax-3d-point '(0 0 0))
  21.         (vlax-3d-point '(0 600 0)))
  22.     (vla-put-textstring en1
  23.             (cdr (assoc (vla-get-textstring en) lst)))))
  24.   )
  25. (princ))


本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2025-4-28 11:52:02 | 显示全部楼层
属性块,然后块表?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-28 15:38:32 | 显示全部楼层
夏生生 发表于 2025-4-28 10:34
最好的办法是反应器,给你个笨办法,按自己的需求去改吧

CAD反应器还没用过,是不是2014的都还没有反应器啊;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-28 16:13:29 | 显示全部楼层
这种方法是不是如果我改变了-04为 -05,是不是又要重新运行下;
回复 支持 反对

使用道具 举报

发表于 2025-4-29 11:36:07 | 显示全部楼层
本帖最后由 tryhi 于 2025-4-29 11:48 编辑


  1. (defun c:tt ()
  2.   (Defun Rtest (obj1 obj2 a)
  3.                 (setq en2 (HandEnt (VLR-Data obj2)))
  4.                 (setq new1 (cdr (assoc 1 (entget (vlax-vla-object->ename obj1) ))))
  5.                 (setq new
  6.                         (cond ((wcmatch new1 "*04")"甲方")
  7.                                 ((wcmatch new1 "*05")"乙方")
  8.                                 ((wcmatch new1 "*06")"今天上班")
  9.                                 (t"下班了")
  10.                         )
  11.                 )
  12.                 (setq ent (entget en2))
  13.                 (entmod (subst (cons 1 new) (assoc 1 ent) ent))
  14.   )
  15.   (setq        s1  (car (entsel "\n请选择文本1: "))
  16.                 obj (vlax-ename->vla-object s1)
  17.                 s2  (car (entsel "\n请选择文本2: "))
  18.   )
  19.   (vlr-object-reactor
  20.                 (list obj);触发对象
  21.                 (cdr (assoc 5 (entget s2 )));被修改图元句柄
  22.                 '((:vlr-modified . rtest)));触发函数
  23.   (princ)
  24. )
  25. (princ"\n文字关联反应器")(princ)



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-12-12 07:54 , Processed in 0.144857 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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