找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 971|回复: 0

[转贴]:请将程序改一下适合个人需用的形式~!

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

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

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

×
以下程序是841594原贴,希望改成如下效果:
1,如果遇到D08A这样的组合,使用下面的程序将得到D08A1。
   (我希望得到的是D09A)
2,如果遇到D08这样的组合,使用下面的程序将得到D9。
   (我希望是D09)不应该加1后就将前面的0给吃掉~!

(defun c:tst (/ tobj otxt _pf otn ntn ntxt ls en xs ens)
;;;  (defun $ly_getnpf (str / _pat _str n)
;;;    (setq _pat ""
;;;          _str str
;;;    )
;;;    (repeat (setq n (strlen _str))
;;;      (setq _pat (strcat _pat "#"))
;;;    )
;;;    (while (not (wcmatch _str _pat))
;;;      (setq _str (substr _str 2)
;;;            _pat (substr _pat 2)
;;;      )
;;;    )
;;;    (substr str 1 (- n (strlen _str)))
;;;  )
;;;
  (defun $ly_getnpf (str / _pf _str n)
    (setq n 1)
    (while (not _pf)
      (setq _str (substr str n))
      (cond
        ((equal _str "") (setq _pf str))
        ((wcmatch _str "[`.+]*") (setq n (1+ n)))
        ((member (type (read _str)) '(REAL INT))
         (setq _pf (substr str 1 (1- n)))
        )
        (1 (setq n (1+ n)))
      )                                        ; cond
    )                                        ; while
    (if        _pf
      _pf
      ""
    )
  )
  (defun $ly_cntxs (str / xs)
    (cond
      ((wcmatch (strcase str) "*E*") (setq _xs 0))
      ((wcmatch str "*`.*")
       (setq
         _xs (- (strlen str) (vl-string-position (ascii ".") str) 1)
       )
      )
      (1 (setq _xs 0))
    )                                        ; cond
  )

;;;main
  (setvar "cmdecho" 0)
  (or _numb (setq _numb 1.0))
  (if (setq ls (getreal (strcat "\n增加值<" (rtos _numb 2) ">: ")))
    (setq _numb ls)
  )
  (setq laste (entlast))
  (if (setq en (car (setq ens (entsel))))
    (progn
      (setq tobj (vlax-ename->vla-object en)
            otxt (vla-get-textstring tobj)
            _pf         ($ly_getnpf otxt)
            otn         (substr otxt (1+ (strlen _pf)))
            xs         ($ly_cntxs otn)
            ozin (getvar "dimzin")
            pt0         (getpoint "\n拷贝基点: ") ;定点
            ppan (mapcar '-
                         pt0
;;;                         (setq pt0 (cadr ens))
                         (cdr (assoc 10 (entget en)))
                 )
      )
      (vlax-release-object tobj)
      (princ "\n请拖动文字到新位置: ")
      (command "copy" en "" "m" pt0 pause)
      (while (= 1 (getvar "cmdactive"))
        (command "")
        (if (/= (setq en (entlast)) laste)
          (progn
            (setq tobj (vlax-ename->vla-object en)
                  opt  (mapcar '+ (cdr (assoc 10 (entget en))) ppan)
            )
            (setvar "dimzin" 0)
            (setq otn  (rtos (+ (atof otn) _numb) 2 xs)
                  ntxt (strcat _pf otn)
            )
            (setvar "dimzin" ozin)
            (vla-put-textstring tobj ntxt)
            (vlax-release-object tobj)
            (command "copy" en "" "m" opt pause)
          )
        )
      )
    )
  )                                        ;if
  (gc)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-28 02:33 , Processed in 0.154939 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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