明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tanle2020

[推荐]修改任何文字(包括属性块、有名无名块)

  [复制链接]
发表于 2009-6-10 14:04 | 显示全部楼层
我試過05版本可以用到 08版本就不行啦!不知道是什麽原因
发表于 2010-7-24 16:01 | 显示全部楼层
学习一下!
发表于 2010-7-25 23:19 | 显示全部楼层

7楼的可否把源码发下,让我等菜鸟看下………………

发表于 2010-7-26 10:36 | 显示全部楼层
本帖最后由 作者 于 2010-7-26 11:38:02 编辑

我发下吧,刚刚改好的。

;;; 自定义UnDo范围
(defun EF:UNDOBegin ()
  (setvar "CMDECHO" 0)
  (command "_.undo" "_group")
  (princ)
)
;;; end defun
(defun EF:UNDOEnd ()
  (setvar "CMDECHO" 0)
  (command "_.undo" "_end")
  (princ)
)
;;; end defun
(defun c:tt (/ dcl_id1 oba ob1 obn obt ptn otxt txt sty styno lay cyn layno
        hig wid ang col cnu etlst style layer
     )
  (graphscr)
  (EF:UNDOBegin)
  (setq olderr *error*)
  (defun *error* (msg)
    (princ "\n*ERROR*...")
    (princ msg)
    (princ)
  )           ; end defun error.
  (defun set_color (conm / costr)
    (defun map_color (ckey mno)
      (start_image ckey)
      (fill_image 0 0 (DimX_tile ckey) (DimY_tile ckey) mno)
      (end_image)
    )           ; end defun
    (cond
      ((= 0 conm)
 (setq costr "Byblock")
      )
      ((= 1 conm)
 (setq costr "Red")
      )
      ((= 2 conm)
 (setq costr "Yellow")
      )
      ((= 3 conm)
 (setq costr "Green")
      )
      ((= 4 conm)
 (setq costr "Cyan")
      )
      ((= 5 conm)
 (setq costr "Bule")
      )
      ((= 6 conm)
 (setq costr "Magenta")
      )
      ((= 7 conm)
 (setq costr "color")
      )
      ((= 256 conm)
 (setq costr "Bylayer")
      )
      (t
 (setq costr "")
      )
    )           ; end cond
    (cond
      ((= 0 col)
 (map_color "col" 7)
      )
      ((= 256 col)
 (map_color "col" (cdr (assoc 62 (tblsearch "layer" lay))))
      )
      (t
 (map_color "col" conm)
      )
    )           ; end cond
    (if (= 256 conm)
      (set_tile "cnu" (strcat "<" (itoa (cdr (assoc 62 (tblsearch "layer"
          lay
             )
          )
     )
      ) ">" costr
        )
      )
      (set_tile "cnu" (strcat "<" (itoa conm) ">" costr))
    )           ; end if


  )           ; end set_color
  (defun map_keylist (key keylst)      ; set popuplist
    (start_list key)
    (mapcar
      'add_list
      keylst
    )
    (end_list)
  )           ; end map
  (defun layer_get_all (/ lay layer layname)
    (setq layer nil         ; All layer
   lay (tblnext "LAYER" T)
    )
    (while (/= lay nil)
      (setq layname (cdr (assoc 2 lay))
     layer (cons layname layer)
      )
      (setq lay (tblnext "LAYER"))
    )
    (setq layer (ACAD_Strlsort layer))
    layer          ; all layer.


  )           ; end defun
  (defun style_get_all (/ sty style sty_list)
    (setq sty_list nil
   sty (tblnext "style" t)
    )
    (setq style (cdr (assoc 2 sty)))
    (while style
      (if (/= "" style)
 (setq sty_list (append
    sty_list
    (list style)
         )
 )
      )
      (setq sty (tblnext "style"))
      (setq style (cdr (assoc 2 sty)))
    )           ; end while]
    (setq sty_list (ACAD_Strlsort sty_list))
    sty_list
  )           ; end defun
  (defun set_error (str)
    (set_tile "error" str)
  )           ; end defun
  (defun sub_mtext (color entlist / ei newlist)
    (setq ei 0
   newlist nil
    )
    (while (< ei (length entlist))
      (setq newlist (cons (nth ei entlist) newlist))
      (if (= 8 (car (nth ei entlist)))
 (setq newlist (cons (cons 62 color) newlist))
      )           ; end if
      (setq ei (1+ ei))
    )           ; end while
    (reverse newlist)
  )           ; end defun
  (setq ob1 (entsel "\n选择要修改的任何文本:"))
  (SETQ obn (car ob1)
 ptn (car (cdr ob1))
  )
  (setq obt (car (nentselp ptn)))
  (setq oba (cdr (assoc 0 (entget obt))))
  (if (or
 (= oba "TEXT")
 (= oba "MTEXT")
 (= oba "ATTRIB")
      )
    (setq otxt (cdr (assoc 1 (entget obt))))
  )           ; end if
  (if (= oba "ATTDEF")
    (setq otxt (cdr (assoc 2 (entget obt))))
  )           ; end if
  (if otxt
    (progn
      (setq sty (cdr (assoc 7 (entget obt)))
     lay (cdr (assoc 8 (entget obn)))
     hig (cdr (assoc 40 (entget obt)))
     wid (cdr (assoc 41 (entget obt)))
     ang (cdr (assoc 50 (entget obt)))
      )           ; end setq
      (if (or
     (= oba "TEXT")
     (= oba "MTEXT")
     (= oba "ATTRIB")
   )
 (setq col (cdr (assoc 62 (entget obt))))
 (setq col (cdr (assoc 62 (entget obn))))
      )           ; end if
      (setq ang (* 180 (/ ang pi)))
      (if (null col)
 (progn
   (setq cyn 0)
   (setq col 256)
 )
 (setq cyn 1)
      )
      (setq style (style_get_all))
      (setq layer (layer_get_all))
      (setq styno (- (length style) (length (member sty style))))
      (setq layno (- (length layer) (length (member lay layer))))
      (setq dcl_id1 (load_dialog "文字修改.DCL"))
      (if (not (new_dialog "文字修改" dcl_id1))
 (exit)
      )
      (set_color col)
      (set_tile "text" otxt)
      (set_tile "hig" (rtos hig 2 2))
      (set_tile "wid" (rtos wid 2 2))
      (set_tile "ang" (rtos ang 2 2))
      (mode_tile "text" 2)
      (map_keylist "sty" style)
      (set_tile "sty" (itoa styno))
      (map_keylist "lay" layer)
      (set_tile "lay" (itoa layno))
      (action_tile "text" "(setq txt $value)")
      (action_tile "sty" "(setq styno (atoi $value))")
      (action_tile "hig" "(setq hig (distof $value))(if (>= 0 hig)(progn (mode_tile \"hig\" 3)(mode_tile \"hig\" 2)(set_error \"Input error ! \"))(set_error \"\"))")
      (action_tile "wid" "(setq wid (distof $value))(if (>= 0 wid)(progn (mode_tile \"wid\" 3)(mode_tile \"wid\" 2)(set_error \"Input error ! \"))(set_error \"\"))")
      (action_tile "lay" "(setq layno (atoi $value))")
      (action_tile "col" "(if (setq cnu (ACAD_ColorDlg col))(progn (setq col cnu)(set_color col)))")
      (action_tile "ang" "(setq ang (distof $value))")
      (action_tile "accept" "(done_dialog 1)")
      (action_tile "cancel" "(done_dialog 0)")

      (if (= 1 (start_dialog))
 (if txt
   (progn
     (setq sty (nth styno style))
     (setq lay (nth layno layer))
     (setq ang (* (/ ang 180) pi))
     (setq etlst (entget obt))
     (if (= oba "ATTDEF")
       (setq etlst (subst
       (cons 2 txt)
       (assoc 2 etlst)
       etlst
     )
       )
       (setq etlst (subst
       (cons 1 txt)
       (assoc 1 etlst)
       etlst
     )
       )
     )          ; end if
     (setq etlst (subst
     (cons 7 sty)
     (assoc 7 etlst)
     etlst
   )
     )
     (setq etlst (subst
     (cons 40 hig)
     (assoc 40 etlst)
     etlst
   )
     )
     (setq etlst (subst
     (cons 41 wid)
     (assoc 41 etlst)
     etlst
   )
     )
     (setq etlst (subst
     (cons 50 ang)
     (assoc 50 etlst)
     etlst
   )
     )
     (if (= 1 cyn)
       (setq etlst (subst
       (cons 62 col)
       (assoc 62 etlst)
       etlst
     )
       )
       (if (= "MTEXT" oba)
  (setq etlst (sub_mtext col etlst))
  (setq etlst (cons (cons 62 col) etlst))
       )          ; end if
     )          ; end if
     (entmod etlst)
     (entupd obt)
     (entupd obn)
   )
 )          ; end if
      )           ; end if
      (if (= 11 (start_dialog))
 (Command "_help")
      )
    )           ; end progn
  )           ; end if
  (setq *error* olderr)
  (EF:UNDOEnd)
  (princ)
)
;;; end defun

发表于 2010-7-26 16:21 | 显示全部楼层

duotu007

你的程序好像无法使用

 

发表于 2010-10-9 15:47 | 显示全部楼层

谢谢楼上兄弟的分享,参考下,非常感激!

发表于 2010-11-13 21:47 | 显示全部楼层
多谢了
发表于 2011-1-19 08:50 | 显示全部楼层
学习一下
发表于 2011-1-19 17:18 | 显示全部楼层
严重鄙视7楼的行为,支持楼主共享
发表于 2012-1-5 17:19 | 显示全部楼层
     楼主的程序用不了,  编译的SD与我的外挂又重名了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 11:42 , Processed in 0.434839 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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