找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1441|回复: 21

[编程申请]:(高难度)从含有K1的长字符串中提取其括号及括号内的字符如(2)

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

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

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

×
从含有K1的长字符串中提取其括号及括号内的字符如(2)
作为后缀加到其它对应的短字符串如K1后,使K1变成K1(2)
附件含DWG图,意思表达更明了,请下载附件。谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-14 13:02:07 | 显示全部楼层
这种偶然才会遇到的问题不必要写程序吗?
你用CAD的的替换就完全可以达到你的要求了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-14 18:37:55 | 显示全部楼层
不是的啦,我的每个工程平面图都要如此处理,且每张有许多个特征字符串Ki 都要如此相同处理,可烦了,高手帮帮忙啦。先谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11288个

财富等级: 富甲天下

发表于 2005-3-15 19:53:47 | 显示全部楼层

Re: [编程申请]:(高难度)从含有K1的长字符串中提取其括号及括号内的字符如(2)

最初由 lengliqun 发布
[B]从含有K1的长字符串中提取其括号及括号内的字符如(2)
作为后缀加到其它对应的短字符串如K1后,使K1变成K1(2)
附件含DWG图,意思表达更明了,请下载附件。谢谢。 [/B]

楼主想要的程序(未经调试):

  1. (DEFUN C:ADDPOST ()
  2. (IF (SETQ SN (CAR (ENTSEL "\nPlease Select a Text 请选择文本 :"))) (PROGN
  3.   (SETQ EN (ENTGET SN)
  4.         STR (CDR (ASSOC 1 EN))
  5.         STL (STRLEN STR)
  6.         J 1 JJ -1)
  7.   (WHILE (< J STL)
  8.    (IF (= (SUBSTR STR J 1) "(")
  9.     (SETQ JJ J J STL)
  10.     (SETQ J (1+ J))
  11.    )
  12.   )
  13.   (IF (> JJ 0) (PROGN
  14.    (SETQ STR1 (SUBSTR STR 1 (1- J))
  15.          J JJ J1 JJ)
  16.    (WHILE (< J STL)
  17.     (IF (= (SUBSTR STR J 1) ")")
  18.      (SETQ JJ J J STL)
  19.      (SETQ J (1+ J))
  20.     )
  21.    )
  22.    (SETQ STR2 (SUBSTR STR J1 (- JJ J1)))
  23.    (PRINC "\nSelect Text(s) That You Want to Change 请选择要更改的文本 :")
  24.    (IF (SETQ SS (SSGET '((0 . "TEXT")))) (PROGN
  25.     (SETQ I 0 SL (SSLENGTH SS))
  26.     (REPEAT SL
  27.      (SETQ EN (ENTGET (SSNAME SS I))
  28.            I (1+ I)
  29.            STR (CDR (ASSOC 1 EN)))
  30.      (IF (= STR STR1) (PROGN
  31.       (SETQ STR3 (STRCAT STR STR2)
  32.             EN (SUBST (CONS 1 STR3) (CONS 1 STR) EN))
  33.       (ENTMOD EN)
  34.      ))
  35.     )
  36.    ))
  37.   ))
  38. ))
  39. (PRINC)
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-15 23:46:24 | 显示全部楼层
以上程序只可单选,且运行后毫无动静,zxq0220 老大能否下载一楼附件调试一下?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-16 00:18:47 | 显示全部楼层
[php]
;;;加载通用函数
;;;下载:http://www.xdcad.net/forum/showthread.php?s=&threadid=325268
(load "xyp_lib")

(defun c:test (/ txt ss i tva)
  (cmdla0)
  (command ".undo" "BE")
  (setq        txt1 (ustr 1 "\n输入括号内字符串" txt1 nil)
        txt  (strcat "(" txt1 ")")
  )
  (setq        SS (ssget '((0 . "TEXT")))
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq tva (dxf 1 (entget s1))
          tva (strcat tva txt)
    )
    (sub_upd s1 1 tva)
  )
  (command ".undo" "E")
  (cmdla0)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-3-16 06:51:54 | 显示全部楼层
(ssget (list (cons 1 (strcat "K(" str1 ")")))) 后面选择用过滤可以提高效率。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-16 12:31:38 | 显示全部楼层
xyp1964 的程序可以运行,但得到并非想要结果,请zxyp1964  老大下载一楼附件调试一下?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11288个

财富等级: 富甲天下

发表于 2005-3-16 13:08:54 | 显示全部楼层
调试通过的代码:
[php]
(DEFUN C:ADDPOST ()
(IF (SETQ SN (CAR (ENTSEL "\nPlease Select a Text 请选择带括弧的文本 :"))) (PROGN
  (SETQ EN (ENTGET SN)
        STR (CDR (ASSOC 1 EN))
        STL (STRLEN STR)
        J 1 JJ -1)
  (WHILE (< J STL)
   (IF (= (SUBSTR STR J 1) "(")
    (SETQ JJ J J STL)
    (SETQ J (1+ J))
   )
  )
  (IF (> JJ 0) (PROGN
   (SETQ STR1 (SUBSTR STR 1 (1- JJ))
         J JJ J1 JJ)
   (WHILE (< J STL)
    (IF (= (SUBSTR STR J 1) ")")
     (SETQ JJ J J STL)
     (SETQ J (1+ J))
    )
   )
   (SETQ STR2 (SUBSTR STR J1 (- JJ J1 -1)))
   (PRINC "\nSelect Text(s) That You Want to Change 请选择要更改的文本 :")
   (IF (SETQ SS (SSGET '((0 . "TEXT")))) (PROGN
    (SETQ I 0 SL (SSLENGTH SS))
    (REPEAT SL
     (SETQ EN (ENTGET (SSNAME SS I))
           I (1+ I)
           STR (CDR (ASSOC 1 EN)))
     (IF (= STR STR1) (PROGN
      (SETQ STR3 (STRCAT STR STR2)
            EN (SUBST (CONS 1 STR3) (CONS 1 STR) EN))
      (ENTMOD EN)
     ))
    )
   ))
  ))
))
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-16 13:49:01 | 显示全部楼层
最初由 lengliqun 发布
[B]xyp1964 的程序可以运行,但得到并非想要结果,请zxyp1964  老大下载一楼附件调试一下? [/B]

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

使用道具 举报

 楼主| 发表于 2005-3-16 17:45:21 | 显示全部楼层
9楼zxq0220 程序可用,谢谢。我再加个要求: 增加   默认全选   功能。
Please Select a Text 请选择带括弧的文本<默认全选> :
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-16 18:00:19 | 显示全部楼层
最初由 xyp1964 发布
[B]
没加字长判断,所以不能乱选,否则会出错! [/B]


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

使用道具 举报

已领礼包: 11288个

财富等级: 富甲天下

发表于 2005-3-16 19:18:06 | 显示全部楼层
最初由 lengliqun 发布
[B]9楼zxq0220 程序可用,谢谢。我再加个要求: 增加   默认全选   功能。
Please Select a Text 请选择带括弧的文本<默认全选> : [/B]

楼主的要求真多呀!下面的程序未经调试,请楼主自行调试一下。
[php]
(DEFUN C:ADDPOST ()
(SETQ SN (CAR (ENTSEL "\nPlease Select a Text 请选择带括弧的文本<全选> :")))
(IF (/= SN nil) (PROGN
  (SETQ EN (ENTGET SN)
        STR (CDR (ASSOC 1 EN))
        STL (STRLEN STR)
        J 1 JJ -1)
  (WHILE (< J STL)
   (IF (= (SUBSTR STR J 1) "(")
    (SETQ JJ J J STL)
    (SETQ J (1+ J))
   )
  )
  (IF (> JJ 0) (PROGN
   (SETQ STR1 (SUBSTR STR 1 (1- JJ))
         J JJ J1 JJ)
   (WHILE (< J STL)
    (IF (= (SUBSTR STR J 1) ")")
     (SETQ JJ J J STL)
     (SETQ J (1+ J))
    )
   )
   (SETQ STR2 (SUBSTR STR J1 (- JJ J1 -1)))
   (PRINC "\nSelect Text(s) That You Want to Change 请选择要更改的文本 :")
   (IF (SETQ SS (SSGET '((0 . "TEXT")))) (PROGN
    (SETQ I 0 SL (SSLENGTH SS))
    (REPEAT SL
     (SETQ EN (ENTGET (SSNAME SS I))
           I (1+ I)
           STR (CDR (ASSOC 1 EN)))
     (IF (= STR STR1) (PROGN
      (SETQ STR3 (STRCAT STR STR2)
            EN (SUBST (CONS 1 STR3) (CONS 1 STR) EN))
      (ENTMOD EN)
     ))
    )
   ))
  ))
) (PROGN
(SETQ SS1 (SSGET "X" '((0 . "TEXT") (1 . "*(*)*")))
       I 0 SL (SSLENGTH SS1))
(REPEAT SL
  (SETQ STR (CDR (ASSOC 1 (ENTGET (SSNAME SS I))))
        I (1+ I)
        STL (STRLEN STR) J 1 JJ -1)
  (WHILE (< J STL)
   (IF (= (SUBSTR STR J 1) "(")
    (SETQ JJ J J STL)
    (SETQ J (1+ J))
   )
  )
  (IF (> JJ 0) (PROGN
   (SETQ STR1 (SUBSTR STR 1 (1- JJ))
         J JJ J1 JJ)
   (WHILE (< J STL)
    (IF (= (SUBSTR STR J 1) ")")
     (SETQ JJ J J STL)
     (SETQ J (1+ J))
    )
   )
   (SETQ STR2 (SUBSTR STR J1 (- JJ J1 -1)))
   (IF (SETQ SS2 (SSGET "X" (LIST (CONS 0 "TEXT") (CONS 1 STR1)))) (PROGN
    (SETQ K 0 SSL (SSLENGTH SS2))
    (REPEAT SSL
     (SETQ EN (ENTGET (SSNAME SS K))
           K (1+ K)
           STR (CDR (ASSOC 1 EN)))
     (IF (= STR STR1) (PROGN
      (SETQ STR3 (STRCAT STR STR2)
            EN (SUBST (CONS 1 STR3) (CONS 1 STR) EN))
      (ENTMOD EN)
     ))
    )
   ))
  ))
)
))
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-16 20:01:37 | 显示全部楼层
TO:zxq0220
不好意思,是我弄错了,应是这样的:

Please Select a Text 请选择带括弧的文本:
Select Text(s) That You Want to Change 请选择要更改的文本<全选> :

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

使用道具 举报

已领礼包: 11288个

财富等级: 富甲天下

发表于 2005-3-16 20:15:28 | 显示全部楼层
最初由 lengliqun 发布
[B]TO:zxq0220
不好意思,是我弄错了,应是这样的:

Please Select a Text 请选择带括弧的文本:
Select Text(s) That You Want to Change 请选择要更改的文本<全选> :

这样每次我就不用输入  ALL  了 [/B]

您试过上面的程序吗?
上面的程序如果第一个问题用空回车回答,
则全自动对图样中的文本进行处理。
下面是再次修改的程序:
[php]
(DEFUN C:ADDPOST ()
(SETQ SN (CAR (ENTSEL "\nPlease Select a Text 请选择带括弧的文本 :")))
(IF (/= SN nil) (PROGN
  (SETQ EN (ENTGET SN)
        STR (CDR (ASSOC 1 EN))
        STL (STRLEN STR)
        J 1 JJ -1)
  (WHILE (< J STL)
   (IF (= (SUBSTR STR J 1) "(")
    (SETQ JJ J J STL)
    (SETQ J (1+ J))
   )
  )
  (IF (> JJ 0) (PROGN
   (SETQ STR1 (SUBSTR STR 1 (1- JJ))
         J JJ J1 JJ)
   (WHILE (< J STL)
    (IF (= (SUBSTR STR J 1) ")")
     (SETQ JJ J J STL)
     (SETQ J (1+ J))
    )
   )
   (SETQ STR2 (SUBSTR STR J1 (- JJ J1 -1)))
   (PRINC "\nSelect Text(s) That You Want to Change 请选择要更改的文本<全选> :")
   (SETQ SS (SSGET '((0 . "TEXT"))))
   (IF (= SS nil) (SETQ SS (SSGET "X" '((0 . "TEXT")))))
   (IF (/= SS nil) (PROGN
    (SETQ I 0 SL (SSLENGTH SS))
    (REPEAT SL
     (SETQ EN (ENTGET (SSNAME SS I))
           I (1+ I)
           STR (CDR (ASSOC 1 EN)))
     (IF (= STR STR1) (PROGN
      (SETQ STR3 (STRCAT STR STR2)
            EN (SUBST (CONS 1 STR3) (CONS 1 STR) EN))
      (ENTMOD EN)
     ))
    )
   ))
  ))
))
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 14:52 , Processed in 0.499886 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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