markv 发表于 2022-7-6 06:38:15

lispt使用ca添加整数

我在另一个网站上从一个有jmcshane句柄的用户那里找到了这个lisp。谢谢你!它可以很好地将指定的整数添加到具有多个副本的选定数字中。
 
(defun c:copyinc (/ IncVal TextObj NewPos TextVal
NewTextObj)
(vl-load-com)
(setq IncVal (fix (getreal "\nEnter
Incremant Value :")))
(setq    TextObj
    (vlax-ename->vla-object
(car (entsel "\nSelect Mtext Object :")))
)

(while
   (setq NewPos (getpoint "\nSelect new position :
"))
    (setq TextVal (atoi (vla-get-textstring
TextObj)))
    (setq NewTextObj (vla-copy
TextObj))
    (vla-move
NewTextObj
          (vla-get-InsertionPoint
NewTextObj)
          (vlax-3D-Point
NewPos)
    )

(vla-put-textstring NewTextObj (+ IncVal TextVal))

(setq TextObj NewTextObj)
)
(princ)
)
 
我希望它以同样的方式工作,但有选择的数字“10410-13”例如得到复制,并更改为这个例子“10414-17”。任何帮助都将不胜感激。

BlackBox 发表于 2022-7-6 06:47:44

尝试一下:
 

(vl-load-com)

(defun c:CopyInc (/ n ss otext insertionPoint textString pt oNewText i
             newString
            )
(if (and (setq n (getint "\nEnter increment value (integer): "))
          (setq ss (ssget ":S:E:L" '((0 . "MTEXT,TEXT") (1 . "*#-#*"))))
          (setq oText (vlax-ename->vla-object (ssname ss 0)))
   )
   (while (setq pt (getpoint "\nSpecify new insertion point(s): "))
   (vla-move (setq oNewText (vla-copy oText))
               (vla-get-insertionpoint oText)
               (vlax-3d-point pt)
   )
   (vla-put-textstring
       oNewText
       (strcat
         (substr
         (setq newString
                  (itoa
                  (+ n
                     (atoi (strcat
                               (substr
                                 (setq textString (vla-get-textstring oText))
                                 1
                                 (setq i (vl-string-search "-" textString))
                               )
                               (substr textString (+ 2 i))
                           )
                     )
                  )
                  )
         )
         1
         i
         )
         "-"
         (substr newString (1+ i))
       )
   )
   (setq oText oNewText)
   )
   (cond (n (prompt "\n** Nothing selected ** "))
         ((prompt "\n** Must enter an increment value ** "))
   )
)
(princ)
)

markv 发表于 2022-7-6 06:57:22

越来越近了。我需要加上破折号前的第一个数字和破折号后的数字。这样地
10410-13
也复制了
10414-17

BlackBox 发表于 2022-7-6 07:03:37

 
我不知道你得到了什么结果,但一个带有TextString=“10410-13”的文本实体会复制为“10414-17”。。。以下是使用404(1041013和1041417之间的差异)作为增量的屏幕截图:

alanjt 发表于 2022-7-6 07:11:03

似乎对我有帮助。干得好,马特。

BlackBox 发表于 2022-7-6 07:17:09

干杯,艾伦

markv 发表于 2022-7-6 07:30:02

很抱歉我用了“4”这个数字太棒了。我觉得有点不好意思

BlackBox 发表于 2022-7-6 07:37:28

 
别担心;我很乐意帮忙。

pBe 发表于 2022-7-6 07:43:54

为什么不呢?
(vla-put-textstring
oNewText (strcat
   (substr (setq newString
            (itoa(+ n
               (atoi (strcat
                     (itoa (+ (atoi (substr
                                  (setq textString (vla-get-textstring oText))
                                  1
                                  (setq i (vl-string-search "-" textString))
                              )
                              ) n ) )
                     (substr textString (+ 2 i))
                   )))))
   1 i )
   "-"
   (substr newString (1+ i))
)
)
 
和类型4而不是404?还是1比101?
 
还有一个

(defun c:CopyInc2 (/nss otext
               insertionPoint textString
               pt oNewText
                )
(if (and (setq n (getint "\nEnter increment value (integer): "))
          (setq ss (ssget ":S:E:L" '((0 . "MTEXT,TEXT") (1 . "*#-#*"))))
          (setq oText (vlax-ename->vla-object (ssname ss 0)))
   )
   (while (setq pt (getpoint "\nSpecify new insertion point(s): "))
   (vla-move (setq oNewText (vla-copy oText))
               (vla-get-insertionpoint oText)
               (vlax-3d-point pt)
   )
    (setq NewStr (mapcar '+ (read (Strcat"(" (vl-string-subst " " "-" (vla-get-textstring Otext)) ")")) (list n n)))
(vla-put-textstring
                 oNewText
                       (strcat (itoa (Car NewStr)) "-" (itoa (Cadr NewStr))))
                      
   (setq oText oNewText)
   )
   (cond (n (prompt "\n** Nothing selected ** "))
         ((prompt "\n** Must enter an increment value ** "))
   )
)
(princ)
)

 
命令:CopyInc2
 
HTH公司
页: [1]
查看完整版本: lispt使用ca添加整数