mtreyger 发表于 2022-7-6 10:51:00

需要帮助添加到e


 
刚到论坛的人,对CAD来说都是老朋友,不妨直接问我的问题。
 
我最近发现了这个由ASMI开发的令人惊叹的lisp应用程序(AsmiTools\u Renum.lsp)
 
虽然我觉得这个应用程序非常有用,但我想在lisp中添加另一个小属性。
 
目前,在您给出前缀/后缀/起始数字后,lisp开始从1开始计数,等等。。。
 
问题是,有时我的块需要保留小数位数,以便计数超过100/1000等等。。。
 
应用程序是否可以问你序列号应该有多少个整数位。
 
即。。例如,3个位置,因此它从001开始计数,而不是1。
或者2个位置,从01开始,
或者4个位置,从0001开始。
 
如果有人能提供这样做的代码,或者编辑lisp本身,我们将不胜感激。

SteveK 发表于 2022-7-6 10:57:41


 
快速提问,为什么当程序要求前缀时,您不能只输入0(或多个零)?诚然,当你达到10岁时,你必须重置程序,但这很常见吗?

SteveK 发表于 2022-7-6 11:03:32

无论如何,我有一分钟,像这样的?(突出显示更改)
 
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;RENUM.LSP - This program converts TEXT, MTEXT and ATTRIBUTES in   ;;
;;            numbers with a prefix and a suffix.                     ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;Command(s) to call: RENUM                                           ;;
;;                                                                      ;;
;;Specify a suffix, a prefix and starting number (for erase the old   ;;
;;suffix or prefix you should press Spacebar). Pick to TEXT, MTEXT    ;;
;;ATTRIBUTES or press Esc to quit. The program remembers old          ;;
;;properties and it is possible to confirm it pressing of Spacebar    ;;
;;key.                                                                ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
;;MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR      ;;
;;PARTS OF IT ABSOLUTELY FREE.                                        ;;
;;                                                                      ;;
;;THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
;;DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS      ;;
;;FOR A PARTICULAR USE.                                             ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;V1.0, 16 June, 2005, Riga, Latvia                                 ;;
;;© Aleksandr Smirnov (ASMI)                                          ;;
;;For AutoCAD 2000 - 2008 (isn't tested in a next versions)         ;;
;;                                                                      ;;
;;                           http://www.asmitools.com               ;;
;;                                                                      ;;
;; ==================================================================== ;;



(defun c:renum (/ oldPref oldSuf oldStart curText curStr
       numZeros)
(vl-load-com)

(initget 6)
(setq numZeros (getInt "\nEnter number of 0 prefix's:"))

(defun num2str (num / numStr)
   (setq numStr (itoa num))
   (If (< (strlen numStr) numZeros)
   (repeat (- numZeros (strlen numStr))
   (setq numStr (strcat "0" numStr))
   )
   )
   numStr
   )

(if(not rnm:Pref)(setq rnm:Pref ""))
(if(not rnm:Suf)(setq rnm:Suf ""))
(if(not rnm:Start)(setq rnm:Start 1))
(setq oldPref rnm:Pref
       oldSuf rnm:Suf
       oldStart rnm:Start); end setq
(setq rnm:Pref
   (getstring T
   (strcat "\nPrefix: <"rnm:Pref">: ")))
(if(= "" rnm:Pref)(setq rnm:Pref oldPref))
(if(= " " rnm:Pref)(setq rnm:Pref ""))
(setq rnm:Suf
   (getstring T
   (strcat "\nSuffix: <"rnm:Suf">: ")))
(if(= "" rnm:Suf)(setq rnm:Suf oldSuf))
(if(= " " rnm:Suf)(setq rnm:Suf ""))
(setq rnm:Start
   (getint
   (strcat "\nStarting number <"
      (itoa rnm:Start)">: ")))
(if(null rnm:Start)(setq rnm:Start oldStart))
    (while T
      (setq curStr(strcat rnm:Pref(num2Str rnm:Start)rnm:Suf))
      (setq curText
          (car
            (nentsel "\n<<< Pick TEXT, MTEXT or ATTRIBUTE or press Esc to quit >>> ")))
      (if
      (and
          curText
          (member(cdr(assoc 0(entget curText))) '("TEXT" "MTEXT" "ATTRIB"))
          ); end and
      (progn
      (vla-put-TextString
          (vlax-ename->vla-object curText)curStr)
         (setq rnm:Start(1+ rnm:Start))
      ); end progn
       (princ "\n This is not DText or MText ")
       ); end if
      ); end while
(princ)
); end of c:renum

(princ "\n http:\\\\www.AsmiTools.com ")
(princ "\n Renumber tool. Type RENUM to run. ")

mtreyger 发表于 2022-7-6 11:14:14

这其实很常见,
 
作为一名电信顾问,我必须给办公楼的插座贴上标签,
 
我们说的是每层楼有数百个销售点
 
我将尝试添加代码,看看它是否能很快工作。

mtreyger 发表于 2022-7-6 11:19:45

了不起的工作,史蒂夫,工作很有魅力,谢谢你

SteveK 发表于 2022-7-6 11:26:44

没问题。
不确定你是否会发现它更有用,但你试过李·麦克的数字递增程序吗?

vinod 发表于 2022-7-6 11:29:32

 
 
我得到了我一直在寻找的东西。它在我的笔记本电脑中工作,在安装了相同版本(Acad2009)Autocad的办公系统中没有得到相同的结果。我一直收到类似“无法粘贴文本”的错误消息。请给我一个这方面的解决方案。
 
提前感谢

alanjt 发表于 2022-7-6 11:34:01

对我来说效果很好。不能说我见过“无法通过文本”错误。你是在同一幅画上试的吗?张贴示例图纸。

vinod 发表于 2022-7-6 11:43:26

:oI已在不同机器的同一图纸上试用过。不同之处在于,我的office系统中有34位Autocad,笔记本电脑中有64位。

vinod 发表于 2022-7-6 11:47:24

 
有点疯狂。。今天我发现了与ActiveX相关的错误
知道吗?
页: [1] 2
查看完整版本: 需要帮助添加到e