找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 773|回复: 7

[求助] [求助]:CAD中如何实现文字的索引功能?

[复制链接]
发表于 2005-11-21 17:02:57 | 显示全部楼层 |阅读模式

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

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

×
说白了就是让一个文字始终同另外一个文字完全一样?因为有的时候这里改了,那里忘了改,总是有错,如果自动保持一致,就不会错了啊,不知道有没有这个功能,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-21 17:49:45 | 显示全部楼层
假如是这种情况,可以用反应器来完成。

晓东工具箱里面的自动编号程序,当你删除一个数字之后,其他的数字会自动前移应该就是这样的技术。

我们都非常喜欢excel可以自动按照前一个格内内容的变化而使得以后所有引用它的格子作自动变化
也希望在acad中,如在一个图纸里面,当大样图引用了平面图中某些部分,在这些平面图中作了修改,希望大样图可以自动变动。
希望绘制的多层平面图,当一根结构柱子移动位置的时候,其他所有层在此位置的柱子都作相应的移动。
不过现在的acad都不能实现我们的想法,它只能用外部引用解决一部分的问题。
之所以acad不能实现excel的这些功能,我想大概是因为acad的图元间的数据结构关系比excel的格子间关系要复杂一些吧。或者是acad的工程师还在探索更好的方案。
期待这一天的到来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-21 18:05:17 | 显示全部楼层
可以用块(block)试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-21 18:37:00 | 显示全部楼层
最初由 snoopychen 发布
[B]假如是这种情况,可以用反应器来完成。

晓东工具箱里面的自动编号程序,当你删除一个数字之后,其他的数字会自动前移应该就是这样的技术。

我们都非常喜欢excel可以自动按照前一个格内内容的变化而使得以后所?.. [/B]


到欧特克网站看看它的adt和revit,号称三维关联修改。不过我看过一次产品推荐演示,当场死机,改的是一栋民房般小别墅的一扇窗。不知道楼大了会怎么个爆法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-22 15:25:31 | 显示全部楼层
用外部引用吧 其他没招的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-22 17:54:32 | 显示全部楼层
最初由 cy956 发布
[B][QUOTE]最初由 snoopychen 发布
[B]假如是这种情况,可以用反应器来完成。

晓东工具箱里面的自动编号程序,当你删除一个数字之后,其他的数字会自动前移应该就是这样的技术。

我们都非常喜欢excel可以... [/B]

哈,搞笑。当场死机
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-11-22 19:25:22 | 显示全部楼层
请谨慎使用

  1. (vl-load-com)
  2. (defun txt_has_modify (var1 var2 var3 / obj)
  3.   (if (and (not (vlax-erased-p var1))
  4.            (vlax-ldata-list var1)
  5.            (not
  6.              (vlax-erased-p (handent (vlax-ldata-get var1 "Ea_mod")))
  7.            )
  8.            (/=
  9.              (vla-get-textstring
  10.                (setq
  11.                  obj (vla-handletoobject
  12.                        (vla-get-activedocument (vlax-get-acad-object))
  13.                        (vlax-ldata-get var1 "Ea_mod")
  14.                      )
  15.                )
  16.              )
  17.              (vla-get-textstring var1)
  18.            )
  19.       )
  20.     (vla-put-textstring obj (vla-get-textstring var1))
  21.   )
  22.   (princ)
  23. )
  24. (defun c:tt (/ e1 e2 el1 el2 o1 o2 h1 h2)
  25.   (if (and (setq e1 (car (entsel "\nFirst Text: ")))
  26.            (setq el1 (entget e1))
  27.            (= (cdr (assoc 0 el1)) "TEXT")
  28.            (setq e2 (car (entsel "\nSecond Text: ")))
  29.            (setq el2 (entget e2))
  30.            (= (cdr (assoc 0 el2)) "TEXT")
  31.       )
  32.     (progn
  33.       (setq o1 (vlax-ename->vla-object e1)
  34.             o2 (vlax-ename->vla-object e2)
  35.             h1 (cdr (assoc 5 el1))
  36.             h2 (cdr (assoc 5 el2))
  37.       )
  38.       (vlax-ldata-put o1 "Ea_mod" h2)
  39.       (vlax-ldata-put o2 "Ea_mod" h1)
  40.       (vlr-object-reactor
  41.         (list o1 o2)
  42.         "Modify_reactor"
  43.         '((:vlr-modified . txt_has_modify))
  44.       )
  45.     )
  46.   )
  47.   (princ)
  48. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-22 20:05:25 | 显示全部楼层
早上修改了一下陈伯雄老师反应器中的第一个例子,编写下面自己第一个反应器测试程序
各位见笑了
程序建立一批相同的数字,修改第一个可以自动改动后面的
下面是第一个程序,是写文字的
[php]
(Defun C:test ()
      (SetQ pt1 (GetPoint "\n the point"))
      (setq ttext (getstring "\n the text:"))
     (command "text" "j" "bc" pt1 250 0 ttext )
      (SetQ len (EntLast))
      (while (SetQ pt3 (GetPoint "\n the next point"))
      (command "text" "j" "bc" pt3 250 0 ttext)
      (SetQ chl (Cdr (Assoc 5 (EntGet (EntLast)))))
      (SetQ rlt (Cons (VLAX-EName->VLA-Object len) '()))
      (SetQ vrl (VLR-Pers (VLR-Object-Reactor rlt chl '((:vlr-modified . Line-C)))))
      (PrinC "\n已建立的反应器有: ")(PrinC (VLR-Reactors))
      (PrinC))
)
;-------------------------------------------------------------------------------------------

;---------------------------------------------------------------------------------------
(VL-Load-Com)
(Defun Line-C (notifier-object reactor-object parameter-list)
       (SetQ cen (HandEnt (VLR-Data reactor-object)))
       (SetQ len (VLAX-VLA-Object->EName notifier-object)
             lel (EntGet len)
             t-text (Cdr (Assoc 1 lel))
       )
       (SetQ cel (EntGet cen)
             cel (Subst (VL-List* 1 t-text) (Assoc 1 cel) cel)
       )
       (EntMod cel)
)

;-----------------------------------------------------------------------------------------

[/php]

不过到晚上才想明白可以用while来给多个文字同时改变,笨笨的呀

eachy版主的程序得下回去好好学习,好像可以修改任何一个都发生修改,但有时候又不行,不知道是不是我操作有点问题。

过了半个小时,改成下面这个程序
第二个程序,这个应该有所改进,比较接近楼主的意思了。
选择文本进行拷贝,这些拷贝建立的文本将随其上面几级文本内容的变化而变化
似乎有点excel的感觉了
[php]
;;; 拷贝文字,子实体随着母实体的内容改变而改变,多级拷贝的时候可能需要regen
;;; 采用反应器可能有时候有些问题,小心使用。
(Defun C:test ()
  (setq ent1 (entsel "\n the text:"))
  (setq ttext (car ent1))
  (setq tpoint (car (cdr ent1)))
  (while (SetQ pt3 (GetPoint "\n the next point"))
    (command "copy" ttext "" tpoint pt3)
    (SetQ chl (Cdr (Assoc 5 (EntGet (EntLast)))))
    (SetQ rlt (Cons (VLAX-EName->VLA-Object ttext) '()))
    (SetQ vrl (VLR-Pers (VLR-Object-Reactor rlt chl '(
                                             (:vlr-modified . Line-C)
                                            )
                        )
              )
    )
    (PrinC)
  )
)
;;; -------------------------------------------------------------------------
;;; ------------------
;;; -------------------------------------------------------------------------
;;; --------------
(VL-Load-Com)
(Defun Line-C (notifier-object reactor-object parameter-list)
  (SetQ cen (HandEnt (VLR-Data reactor-object)))
  (SetQ len (VLAX-VLA-Object->EName notifier-object)
        lel (EntGet len)
        t-text (Cdr (Assoc 1 lel))
  )
  (SetQ cel (EntGet cen)
        cel (Subst
              (VL-List* 1 t-text)
              (Assoc 1 cel)
              cel
            )
  )
  (EntMod cel)
)
;;; -------------------------------------------------------------------------
;;; ----------------

[/php]

动画演示的是第二个函数的效果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 22:13 , Processed in 0.301025 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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