找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 706|回复: 11

[求助] [求助]:请大家帮忙改改这个刷子

[复制链接]
发表于 2005-7-13 21:13:00 | 显示全部楼层 |阅读模式

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

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

×
忘了是哪位大侠做的文本内容刷了,比较好用,只是有2点不太满意:
1.只能点选源文本,希望能框选(如果选择了超过一个文本的话报错并提示重选),因为图放大了以后不太容易点到单线体的文本对象。
2.选择了源文本后源文本应变虚线,否则都不知道是否选中了

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

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

 楼主| 发表于 2005-7-13 21:53:03 | 显示全部楼层
最初由 eachy 发布
[B]这样的刷子还不如直接用特性管理器修改 [/B]


比特性管理器方便多了
不用键盘输入文字
选择了一个源文本可以刷无数文字
斑竹用一下便知

其实好多工具没必要做得很复杂,就好比这个小程序,操作非常简单,不过很实用,是我最常用的外挂了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-13 22:44:36 | 显示全部楼层
单就刷文字而言,我也觉得使用matchprop格式刷命令够方便了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-14 13:52:57 | 显示全部楼层
有人愿意帮忙吗?
毕竟对于熟悉它的朋友来说不算什么难事吧
对此刷子是否好用的看法可能各自不同,我的意见是大家试过以后再说吧,觉得好用就用,不好用便扔
自己看了半天vlisp的教程,还是没有搞定
希望有高人指点一二

    (defun c:mm()
    (setq a (car (entsel "请选择源文本:")))
    (setq a (entget a))
    (setq ttext (cdr (assoc 1 a)))
    (setq i 1)
    (setq ss (SSGET))
    (setq n (sslength ss))
    (setq index 0)
    (repeat n
    (SETQ EN (SSNAME SS index))
    (setq index (+ index 1))
    (SETQ ed (ENTGET EN))
    (SETQ AS (CDR (ASSOC '0 ed)))

    (if (= AS "TEXT")
    (progn
    ;(setq ttext (cdr (assoc 1 ed)))
    (setq ed (subst (cons (car (assoc 1 ed)) ttext) (assoc 1 ed) ed ))
    (entmod ed)
    )
    )

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

使用道具 举报

发表于 2005-7-19 13:06:44 | 显示全部楼层
(defun c:mm (/ a i ss n index en ed)
  (princ "\n请选择源文本(单个):")
  (setq        a (ssget '((0 . "text")))
  )
  (while (> (sslength a) 1)
    (princ "\n请重新选择源文本(单个):")
    (setq a (ssget '((0 . "text")))
    )
  )
  (setq        a     (entget (ssname a 0))
        i     1
        ss    (SSGET '((0 . "text")))
        n     (sslength ss)
        index 0
  )
  (repeat n
    (SETQ EN        (SSNAME SS index)
          index        (+ index 1)
          ed        (ENTGET EN)
          ed        (subst (assoc 1 a) (assoc 1 ed) ed)
    )
    (entmod ed)
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-19 13:48:26 | 显示全部楼层
非常感谢leochen,现在没法试验,待会在公司试试看

----------------------------

试过了,效果非常棒!向leochen致敬

如果要实现选择了单个源文本后无须回车直接选择目标文本、而选择了多个源文本后则直接退出命令,该如何修改呢?
这对我来说真是个好例题阿!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-20 18:41:49 | 显示全部楼层
(defun c:mm (/ a i ss n index en ed p1 p2)
  (princ "\n请选择源文本(单个):")
  (setq        p1 (getpoint)
        p2 (getcorner p1)
        a  (ssget "_W" p1 p2 '((0 . "text")))
  )
  (if (> (sslength a) 1)
    (exit)
  )
  (princ "\n请选择目标文本:")
  (setq        a     (entget (ssname a 0))
        i     1
        ss    (SSGET '((0 . "text")))
        n     (sslength ss)
        index 0
  )
  (repeat n
    (SETQ EN        (SSNAME SS index)
          index        (+ index 1)
          ed        (ENTGET EN)
          ed        (subst (assoc 1 a) (assoc 1 ed) ed)
    )
    (entmod ed)
  )
  (princ)
)


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

使用道具 举报

发表于 2005-7-20 19:03:41 | 显示全部楼层
这个不错:数字格式刷n.LSP(我一直在用,可以框选,框选后变虚线,文本和数字均可)

(defun c:n (/ temp1)
  (command ".REDRAW")
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
;;;设定系统环境以便于运行本程序
  (graphscr)
  (princ "请选择原始数字:")
  (setq se1 (ssget))
  (princ "请选择与之相同的数字:")
  (setq se2 (ssget))
  (setq n1 0
        n2 0
        i 0)
  (setq n1 (sslength se1))
  (setq n2 (sslength se2))
  (if (= n1 1)
    (progn
      (setq e2 (entget (ssname se1 0)))
      (setq e3 (cdr (assoc 0 e2)))
      (if (= e3 "TEXT") (setq temp1 (assoc 1 e2)))
      (repeat n2
        (setq e4 (entget (ssname se2 i)))
        (setq e5 (cdr (assoc 0 e4)))
        (if (= e5 "TEXT")
          (progn
            (setq e4 (subst temp1 (assoc 1 e4) e4))
            (entmod e4)
          )
        )
       (setq i (1+ i))
      )
     )
    (princ "输入有误!!")
    )
  (princ)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-21 14:04:23 | 显示全部楼层
6楼和9楼的用法一样,写得都不错
leochen修改的第二版有点不太直观了,cad默认选择实体的时候光标是方块的,只有选点的时候才是十字,而且不能点选源文本了
谢谢几位热心回复!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-21 21:28:51 | 显示全部楼层
下面这个不仅文本内容改变,而且连格式也变了:

(defun c:ct17(/ text0 mode  x OTEXT mode2)

    (princ "\n文本修改增强:使文本内容相同")
        (command "undo" "be")

        (setq text0 (entget (car (entsel "\n请选择源文本:"))))
        (setq mode (cdr (assoc 0 text0)))
        (SETQ OTEXT (assoc 1 text0))
        (IF (= mode "mtext") (Princ "\n警告:你选择了多行文本,只可以对多行文本处理!"))
        (if        (or (= mode "TEXT")(= mode "MTEXT"))
                (progn
                        (setq text0 (cdr (assoc 1 text0)))
                        (setq x (car (entsel "\n请选择要修改内容的文字:")))
                        (while x
                               
                                (setq x (entget x))
                                (setq mode2 (cdr (assoc 0 x)))
                             (if (or (= mode2 "MTEXT") (equal mode2 mode) )
                                (progn
                                    (setq x (subst OTEXT (assoc 1 x) x))
                                    (entmod x)
                                 )
                               ;;;;else
                                 (if (= mode "MTEXT")
                                    (princ "  选择的实体类型不对:必须是多行文本。")
                                    (princ "  选择的实体类型不对:必须是单行文本和多行文本。")
                                 )
                               )
                          (setq x (car (entsel "\n请选择要修改内容的文本:")))
                        )
                  
                )
          
        )

        (command "undo" "e")
        (princ)

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

使用道具 举报

 楼主| 发表于 2005-7-21 21:51:54 | 显示全部楼层
我倒是觉得文本刷的作用就在于改变内容而不变格式,大多数情况下都是要这么操作的,改变格式可以配合格式刷来作
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 09:42 , Processed in 0.184341 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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