找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 577|回复: 0

[LISP程序]:带有特征遗传的结构改字程序

[复制链接]
发表于 2007-2-25 19:28:08 | 显示全部楼层 |阅读模式

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

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

×
;;===================================================================;
;;;将所选择的多个文字改为另外同一个文字                              ;
;;;==================================================================;
(defun c:gz (/ enttt e1 e2 stext strlen1 e2_strlen es str_div e2_str)
  (setvar "cmdecho" 0)
  (setq enttt (car (nentsel "\n选择源文字:")))
  (setq e1 (entget enttt))
  (redraw enttt 3)
  (setq stext (cdr (assoc 1 e1)))
  (if (= (cdr (assoc 0 e1)) "TEXT")
    (progn
      (setq strlen1 (strlen stext))
      (setq str_div
             (cond
               ((wcmatch stext "*[`@-]*###") "*[`@-]*###")
               ((wcmatch stext "*[`@-]*###(#)") "*[`@-]*###(#)")
               ((wcmatch stext "*[GN]*%%13*") "[GN]*%%13")
               ((wcmatch stext "#%%13###*") "#%%13###")
               ((wcmatch stext "##%%13###*") "##%%13###")
               ((wcmatch stext "H=*") "H=")               
               ((wcmatch stext "*L*") "*L")
               ((wcmatch stext "*Z*") "*Z")
               ((wcmatch stext "*[xX`*]*") "*[xX`*]")
               ((szpd stext) "num")
               ((>= strlen1 20) "longstr")
               (nil)
             )
      )
      (if str_div
        (progn
          (prompt "\n选择要替换的目标文字:")
          (setq ss (ssget '((0 . "TEXT"))))
          (setq i -1)
          (while (setq es (ssname ss (setq i (1+ i))))
            (setq e2 (entget es))
            (setq e2_str (cdr (assoc 1 e2)))
            (setq e2_strlen (strlen e2_str))
            (cond ((and        (= (wcmatch e2_str (strcat str_div "*")) T)
                        (< e2_strlen 20)
                   )
                   (progn
                     (setq e2 (subst (cons 1 stext)
                                     (assoc 1 e2)
                                     e2
                              )
                     )
                     (entmod e2)
                   )
                  )
                  ((and (= str_div "num") (= (szpd e2_str) T))
                   (progn
                     (setq e2 (subst (cons 1 stext)
                                     (assoc 1 e2)
                                     e2
                              )
                     )
                     (entmod e2)
                   )
                  )
                  ((and (= str_div "longstr") (>= e2_strlen 20))
                   (progn
                     (setq e2 (subst (cons 1 stext)
                                     (assoc 1 e2)
                                     e2
                              )
                     )
                     (entmod e2)
                   )
                  )
            )                                ;end cond
          )                                ;end while
        )                                ;end progn
        nil
      )                                        ;end if
    )                                        ;end progn
    nil
  )                                        ;end if
  (redraw enttt 4)
  (setvar "cmdecho" 1)
  (princ "\n将所选择的多个文字改为另外同一个文字,命令为GZ")
  (princ)
)
(defun szpd (str /)
  (setq
    str        (vl-string-right-trim
          "."
          (vl-string-left-trim " " (vl-string-right-trim "0" str))
        )
  )
  (if
    (=
      (vl-string-right-trim
        "0"
        (rtos
          (atof str)
          2
          (if (vl-string-search "." str)
            (strlen (substr str (+ (vl-string-search "." str) 2)))
            0
          )

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

本版积分规则

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

GMT+8, 2024-11-17 17:53 , Processed in 0.184042 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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