anjan008 发表于 2022-7-5 20:17:03

alfa numaric t的增值

你好
 
任何机构可以帮助增加价值阿尔法numaric文本的多个文本
 
前任:
1*M16*50
5*M16*65
2*M16*80
3*M16*85
1*M20*55
4*M20*70
2*M20*85
2*M20*90
 
结果应该是
 
1*M16*45
5*M16*60
2*M16*75
3*M16*80
1*M20*50
4*M20*65
2*M20*80
2*M20*85
 
我想在数字文本的右侧或左侧加/减常量值。
 
谢谢

BlackBox 发表于 2022-7-5 20:33:28

假设您的字符串格式一致,这似乎可行:
 

(vl-load-com)

(defun _AddToRightSide (increment yourList / BB:Parser newList)

(defun BB:Parser (char string / i segments segment)
   ;; Example: (BB:Parser "-" "dd-mm-yyyy")
   ;; Returns: ("dd" "mm" "yyyy")
   (while (setq i (vl-string-search char string))
   (setq segments (cons (setq segment (substr string 1 i)) segments))
   (setq string (substr string (+ 2 i)))
   )
   (reverse (cons string segments))
)

(foreach item yourList
   (setq newList
          (cons
            (vl-string-right-trim
            "*"
            (apply
                'strcat
                (mapcar
                  (function (lambda (x) (strcat x "*")))
                  (reverse
                  (cons
                      (itoa
                        (+ (atoi
                           (car
                               (setq segments (reverse (BB:Parser "*" item)))
                           )
                           )
                           increment
                        )
                      )
                      (cdr segments)
                  )
                  )
                )
            )
            )
            newList
          )
   )
)
(reverse newList)
)

 
 
 
... 例子:
 

_$ (_AddToRightSide
      -10
      (list
          "100*M16*50" "1*M16*50" "1*M1600*50" "5*M16*65" "2*M16*80" "3*M16*85" "1*M20*55"
          "4*M20*70" "2*M20*85" "2*M20*90" "2*M20*900" "2*M20*1000"
         )
)
("100*M16*40" "1*M16*40" "1*M1600*40" "5*M16*55" "2*M16*70" "3*M16*75" "1*M20*45" "4*M20*60" "2*M20*75" "2*M20*80" "2*M20*890" "2*M20*990")
_$

 
 
 
干杯

anjan008 发表于 2022-7-5 20:41:32

我不熟悉这种lisp编码。你能帮帮我吗。
 
我的问候

BlackBox 发表于 2022-7-5 20:51:01

 
别担心;我们都从某个地方开始。
 
复制我之前文章中第一个代码块中的代码,将其粘贴到空记事本文件中,并将其保存为。LSP文件扩展名(而不是.TXT)。然后可以手动拖动新创建的。将LSP文件传递到AutoCAD的会话中,通过传递适当的参数进行测试。
 
要在此后可用,您需要加载该文件。
 
也就是说,发布的代码是一个子函数(不是命令),那么您如何获得字母数字字符串列表?这些值是否代表您当前单独选择和修改的文本实体的值?需要更多信息。
 
干杯

anjan008 发表于 2022-7-5 20:59:54

是的,它们只是普通文本,不是多行文字。
 
我有很多这样的例子。我不能在子函数中全部键入。如果我可以输入,我可以替换为批量查找和替换。
 
这就是为什么我需要这种Lisp程序。
用这个lisp如果可以添加拷贝和文字做的话,这个功能是非常有帮助的。
 
我有下面的Lisp程序,但它只能改变开始的数字。但我希望结束数字也可以选择字符串或结束数字+/-值
 
谢谢

anjan008 发表于 2022-7-5 21:01:04

亲爱的Black box,
 
你能帮帮我吗。编辑我以前的lisp后缀编号。
 
我的问候

SLW210 发表于 2022-7-5 21:13:16

请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。

SLW210 发表于 2022-7-5 21:21:04

对于同一个问题,停止挖掘和添加旧的线程。
页: [1]
查看完整版本: alfa numaric t的增值