找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1149|回复: 10

[求助] [求助]:那位高手能不能编个可以替换标注样式和文字样式的Lisp程序

[复制链接]
发表于 2005-12-19 15:09:25 | 显示全部楼层 |阅读模式

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

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

×
比喻说我的图中所有为HZ的文字样式的文字全部替换成TSSD_AXIC这个样式!
标注样式也一样!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-19 16:23:20 | 显示全部楼层
替换文字
[php](defun c:text5 (/ ss1 slth n en ent)
  (princ "\n请选择:")
  (setq        ss1  (ssget '((7 . "HZ")))
        slth (sslength ss1)
        n    0
  )
  (if ss1
    (progn
      (repeat slth
        (setq en  (ssname ss1 n)
              n          (1+ n)
              ent (entget en)
        )
        (entmod (subst '(7 . "TSSD_AXIC") (assoc 7 ent) ent))
      )
    )
    (princ "\n未选中:")
  )
)[/php]
标注文字更改:
[php];;;加载activex支持功能
(vl-load-com)


;;;加载*modelspace*及*paperspace*空间参数
(setq acad-object (vlax-get-acad-object))
(setq active-document (vla-get-activedocument acad-object))
(setq mspace (vla-get-modelspace active-document))
(setq pspace (vla-get-paperspace active-document))
(setq activelayer (vla-get-activelayer active-document))


(defun c:text6 (/ ss1 slth n en ent obj1 txt)
  (princ "\n请选择:")
  (setq        ss1  (ssget '((0 . "DIMENSION")))
        slth (sslength ss1)
        n    0
  )
  (if ss1
    (progn
      (repeat slth
        (setq en   (ssname ss1 n)
              n           (1+ n)
              ent  (entget en)
              obj1 (vlax-ename->vla-object en)
        )
        (if (= (setq txt (vla-get-textstyle obj1)) "HZ")
          (vla-put-textstyle obj1 "TSSD_AXIC")

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

使用道具 举报

 楼主| 发表于 2005-12-20 11:35:21 | 显示全部楼层
谢谢楼上朋友的程序,可是你的程序只能改一个啊!
不能自己输入要改的文字样式和要改为的文字样式!
例如这样:
输入命令   回车
选择文字   
输入要改的文字样式:(以前的文字样式,最好列出你已经有的文字样式,不用去输文字样式的全称,按对应数字键选对应的样式,比喻说 HZ(1),HZTXT(2)……)  回车
输入要改为的文字样式:(替换为新的文字样式 好列出你已经有的文字样式,不用去输文字样式的全称,按对应数字键选对应的样式,比喻说 HZ(1),HZTXT(2)……)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-20 14:15:18 | 显示全部楼层
没有来得及仔细改,试了一下,你看可行?
你可以一步一步运行程序自己改一下么!
  1. (defun c:text5 (/ ss1 slth n en ent tstyle1 tstyle2)
  2.   (setq        tstyle1        (getstring "\n请输入更改前的文字样式:")
  3.         tstyle2        (getstring "\n请输入更改后的文字样式:")
  4.   )
  5.   (princ "\n请选择:")
  6.   (setq        ss1  (ssget)
  7.         slth (sslength ss1)
  8.         n    0
  9.   )
  10.   (repeat slth
  11.     (setq en          (ssname ss1 n)
  12.           n          (1+ n)
  13.           ent          (entget en)
  14.           object1 (vlax-ename->vla-object en)
  15.     )
  16.     (setq tstyle (vla-get-stylename object1))
  17.     (if        (= tstyle tstyle1)
  18.       (progn
  19.         (vla-put-stylename object1 tstyle2)
  20.       )
  21.     )
  22.   )
  23.   (princ)
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-20 14:33:28 | 显示全部楼层
<a target=blank href=http://wpa.qq.com/msgrd?V=1&Uin=123497032&Site=Pet.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:123497032:11 alt="点击这里给我发消息"></a>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-20 14:43:56 | 显示全部楼层
谢谢似水无痕 !
不过好象不能用!我第一次能用,但后面就用不了了!
2002里能用,R14里用不了,而且大小写有区别的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-20 16:00:58 | 显示全部楼层
第一次已经更改过来了,第二次当然没有了!不知道你说的什么意思!(程序运行过程中出现选择界面时,你框选所有图元就可以吧,不知你在楼上说的是不是这个意思)我用过的最低版本是AUTOCAD2000,现在是2005!
还有,你要取得字体样式,可以用(setq tstyle (tblnext "style" nil))试试!具体到程序可以自己编写一下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-20 22:35:13 | 显示全部楼层
朋友们,这样的程序还太简单了,要彻底替换文字样式,还要考虑块中的对象,包括块中块还有标注中的文字。
最好是直接把样式拿来改了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-21 14:29:18 | 显示全部楼层
文字样式替换在探索者中有了!
标注样式我现在是这样改的:(当图纸很大不容易选的情况)
把要替换为的标注样式置为当前
先输入FILTER过滤选择要替换的样式
然后标注更新,选对象的时候按P键(就是过滤选择的对象)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-21 16:16:45 | 显示全部楼层
我有一个功能全的,是以前做的给你
;;====================================================================
;;        CTXT  整批转换TEXT字串参数
;;====================================================================
(defun c:CTXT (/ Len i lm P New mod Os K Ns)
        (prompt "\n ===== 整批转换字串参数(16:25 99-06-17) =====")
        (setq i (getreal "\n修改(0:新字串 1:高度 2:宽高比 3:角度 4:倾角 5:字型 6:比例字高 7:改Z坐标)--->"))
        (if (Or (> i 7) (< i 0) ) (setq i 1))                ; 于上一行最大选择数保持一致
        (setq p (ssget))                                ; 选择注释对象
        (setq K 0)
        (if(= i 0) (setq new(getstring"\n新字串: ")        mod 1 ))
        (if(= i 1) (setq new(getreal"\n高度: "  )        mod 40))
        (if(= i 2) (setq new(getreal"\n宽高比: ")        mod 41))
        (if(= i 3) (setq new(getangle"\n角度: " )        mod 50))
        (if(= i 4) (setq new(getangle"\n字串倾角: ")        mod 51))
        (if(= i 5) (setq new(getstring"\n字型(键入字型名): ") mod 7))
        (if(= i 6) (setq new(getreal"\n字高比例: ")        mod 40  K 99 ))
        (if(= i 7) (setq new(getreal"\n新Z坐标: ")        mod 10  K 88 ))
        (setvar "CMDECHO" 0)                        ; 使执行过程没有回应
        (setq Len (sslength p) i 0  Ns New)
        (repeat Len
                (setq lm (entget (ssname p i)))
                (setq i (+ i 1))
                ;;(setq ename(ssname p I))
                ;;(setq Lm(entget ename))
                ;;(print Lm)
                (if(= "TEXT" (cdr (assoc 0 lm)))                ; 取对象名,判断该对象是否是 TEXT
                   (Progn
                        ;;( setq Os ( assoc mod lm  ))                ; 取原字体高
                        ;;( setq Ns ( cons  mod new ))                ; 作用相同
                        ;;( setq lm ( subst Ns Os lm ))                ; 改新参数
        (If(= K 99) (setq Os (cdr (assoc Mod Lm)) New (* OS Ns)))                ; 取原字体高
        (IF(= K 88) (Progn
                (setq Os (assoc Mod Lm))                ; 取原字串坐标
                ( Setq New (List (cadr Os) (caddr Os) Ns) )        ; 改新坐标
                ;;(Princ New)
                    ) ; Progn
        ) ; End if
                        (setq lm (subst (cons mod new) (assoc mod lm) lm));改新参数

                        (entmod lm)                                ; 更新对象
                   );; <--- End Progn
                );; <-- End if
        );; <--- End Repeat
        (command "Redraw" )
        (setvar "CMDECHO" 1)
)
========================================================
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-22 08:49:34 | 显示全部楼层
谢谢楼上的朋友!
但是你的东西探索者里都有了!而且我们讲的样式!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 23:47 , Processed in 0.499831 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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