找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 624|回复: 9

(完成)[编程申请]:括号删除,如(M2]20)变成M2]20

[复制链接]
发表于 2005-9-3 12:50:57 | 显示全部楼层 |阅读模式

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

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

×
对以“(”开头,以“)”结尾的字符串,若括号中的第一个字母为M,则将括号删除,如(M2]20)变成M2]20;(M2]22)变成M2]22;(M2]14)变成M2]14,余类推。
(cad2002 默认全选)谢谢。
*-*c *-*c *-*c *-*c *-*c *-*c *-*c *-*c *-*c *-*c *-*c
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-3 13:28:30 | 显示全部楼层
试试!
太马虎了!又改了一下!


  1. (defun c:tt (/ ss l n ent str s e)
  2.   (PRINC "\n选择需要修改的文本:")
  3.   (setq        ss (ssget '((0 . "TEXT")))
  4.         l  (sslength ss)
  5.         n  0
  6.   )
  7.   (while (< n L)
  8.     (setq ent (entget (ssname ss n))
  9.           str (cdr (assoc 1 ent))
  10.           ll  (strlen str)
  11.           s   (substr str 1 2)
  12.           e   (substr STR ll)
  13.           N   (1+ N)
  14.     )
  15.     (if        (and (= s "(M") (= e ")"))
  16.       (progn (setq str (substr str 2 (- ll 2))
  17.                    ent (subst (cons 1 str) (assoc 1 ent) ent)
  18.              )
  19.              (entmod ent)
  20.       )
  21.       ()
  22.     )
  23.   )
  24.   (princ)
  25. )

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

使用道具 举报

 楼主| 发表于 2005-9-3 13:42:16 | 显示全部楼层
谢谢,可你删多了个字母“M”,只删除括号就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-3 15:33:52 | 显示全部楼层
为了缩小范围,一般这样写

  1. (defun c:tt (/ ss)
  2.   (if (progn (princ "\nSelect Texe ...")
  3.              (setq
  4.                ss (ssget
  5.                     '((0 . "text") (1 . "(M##]##),(M#]#),(M##]#),(M#]##)"))
  6.                   )
  7.              )
  8.       )
  9.     (progn
  10.       .
  11.       .
  12.       .
  13.     )
  14.   )
  15. )

如果处理所有含括号的这样写

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-9-3 17:28:25 | 显示全部楼层
实际使用中又有要求,1、对以“(”开头,以“)”结尾的字符串,若括号中的第一个字母为M,则将括号删除,如(M2]20)变成M2]20;(M2]22)变成M2]22;(M2]14)变成M2]14,余类推(上面程序已达到要求);2、对不以“(”开头但含“(M*]*)”的字符串,则变“(”为“+”,且删其“)”,如XXX(M2]20)变成XXX+M2]20,KKK(M2]22)变成KKK+M2]22,余类推。
(cad2002 默认全选)谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-3 20:00:26 | 显示全部楼层
谢谢斑竹的指点!!!



  1. (defun c:tt (/ ss l n ent str s e pos)
  2.   (PRINC "\n选择需要修改的文本:")
  3.   (setq        ss (ssget '((0 . "TEXT") (1 . "*(M*)")))
  4.         l  (sslength ss)
  5.         n  0
  6.   )
  7.   (while (< n L)
  8.     (setq ent (entget (ssname ss n))
  9.           str (cdr (assoc 1 ent))
  10.           ll  (strlen str)
  11.           s   (substr str 1 2)
  12.           e   (substr STR ll)
  13.           N   (1+ N)
  14.     )
  15.     (if        (and (= s "(M") (= e ")"))
  16.       (progn (setq str (substr str 2 (- ll 2))
  17.                    ent (subst (cons 1 str) (assoc 1 ent) ent)
  18.              )
  19.              (entmod ent)
  20.       )
  21.       (progn (setq pos (vl-string-position (ascii "(") str)
  22.                    str (strcat (substr str 1 pos)
  23.                                "+"
  24.                                (substr str (+ 2 pos) (- ll pos 2))
  25.                        )
  26.                    ent (subst (cons 1 str) (assoc 1 ent) ent)
  27.              )
  28.              (entmod ent)
  29.       )
  30.     )
  31.   )
  32.   (princ)
  33. )

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

使用道具 举报

发表于 2005-9-4 02:00:13 | 显示全部楼层

  1. (defun c:tt( / ss i e ent str a)
  2.   (PRINC "\n选择需要修改的文本:")
  3.   (setq ss (ssget '((0 . "TEXT")(1 . "*(M*)")))
  4.         i -1)
  5.   (while (setq e (ssname ss (setq i(1+ i))))
  6.     (setq ent (entget e)
  7.           str (cdr(assoc 1 ent))
  8.           a   (if (wcmatch str "(M*)") "" "+")
  9.           str (vl-string-subst a "("(vl-string-subst "" ")" str))
  10.     )
  11.     (entmod (subst (cons 1 str)(assoc 1 ent)ent))
  12.   )(princ)
  13. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 14:15 , Processed in 0.430075 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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