乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 42|回复: 8

[编程交流] lispt使用ca添加整数

[复制链接]

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 06:38:15 | 显示全部楼层 |阅读模式
我在另一个网站上从一个有jmcshane句柄的用户那里找到了这个lisp。谢谢你!它可以很好地将指定的整数添加到具有多个副本的选定数字中。
 
  1. (defun c:copyinc (/ IncVal TextObj NewPos TextVal
  2. NewTextObj)
  3. (vl-load-com)
  4. (setq IncVal (fix (getreal "\nEnter
  5. Incremant Value :")))
  6. (setq    TextObj
  7.     (vlax-ename->vla-object
  8. (car (entsel "\nSelect Mtext Object :")))
  9. )
  10. (while
  11.    (setq NewPos (getpoint "\nSelect new position :
  12. "))
  13.     (setq TextVal (atoi (vla-get-textstring
  14. TextObj)))
  15.     (setq NewTextObj (vla-copy
  16. TextObj))
  17.     (vla-move
  18. NewTextObj
  19.           (vla-get-InsertionPoint
  20. NewTextObj)
  21.           (vlax-3D-Point
  22. NewPos)
  23.     )
  24. (vla-put-textstring NewTextObj (+ IncVal TextVal))
  25. (setq TextObj NewTextObj)
  26. )
  27. (princ)
  28. )

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

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 06:47:44 | 显示全部楼层
尝试一下:
 
  1. (vl-load-com)
  2. (defun c:CopyInc (/ n ss otext insertionPoint textString pt oNewText i
  3.              newString
  4.             )
  5. (if (and (setq n (getint "\nEnter increment value (integer): "))
  6.           (setq ss (ssget ":S:E:L" '((0 . "MTEXT,TEXT") (1 . "*#-#*"))))
  7.           (setq oText (vlax-ename->vla-object (ssname ss 0)))
  8.      )
  9.    (while (setq pt (getpoint "\nSpecify new insertion point(s): "))
  10.      (vla-move (setq oNewText (vla-copy oText))
  11.                (vla-get-insertionpoint oText)
  12.                (vlax-3d-point pt)
  13.      )
  14.      (vla-put-textstring
  15.        oNewText
  16.        (strcat
  17.          (substr
  18.            (setq newString
  19.                   (itoa
  20.                     (+ n
  21.                        (atoi (strcat
  22.                                (substr
  23.                                  (setq textString (vla-get-textstring oText))
  24.                                  1
  25.                                  (setq i (vl-string-search "-" textString))
  26.                                )
  27.                                (substr textString (+ 2 i))
  28.                              )
  29.                        )
  30.                     )
  31.                   )
  32.            )
  33.            1
  34.            i
  35.          )
  36.          "-"
  37.          (substr newString (1+ i))
  38.        )
  39.      )
  40.      (setq oText oNewText)
  41.    )
  42.    (cond (n (prompt "\n** Nothing selected ** "))
  43.          ((prompt "\n** Must enter an increment value ** "))
  44.    )
  45. )
  46. (princ)
  47. )
回复

使用道具 举报

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 06:57:22 | 显示全部楼层
越来越近了。我需要加上破折号前的第一个数字和破折号后的数字。这样地
10410-13
也复制了
10414-17
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:03:37 | 显示全部楼层
 
我不知道你得到了什么结果,但一个带有TextString=“10410-13”的文本实体会复制为“10414-17”。。。以下是使用404(1041013和1041417之间的差异)作为增量的屏幕截图:
073821yqmqjqljmgum9m5a.png
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 07:11:03 | 显示全部楼层
似乎对我有帮助。干得好,马特。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:17:09 | 显示全部楼层
干杯,艾伦
回复

使用道具 举报

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 07:30:02 | 显示全部楼层
很抱歉我用了“4”这个数字太棒了。我觉得有点不好意思
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:37:28 | 显示全部楼层
 
别担心;我很乐意帮忙。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:43:54 | 显示全部楼层
为什么不呢?
  1. (vla-put-textstring
  2. oNewText (strcat
  3.    (substr (setq newString
  4.             (itoa  (+ n
  5.                  (atoi (strcat
  6.                      [b][color="blue"](itoa (+ (atoi (substr
  7.                                   (setq textString (vla-get-textstring oText))
  8.                                   1
  9.                                   (setq i (vl-string-search "-" textString))
  10.                                 )
  11.                               ) n )[/color][/b] )
  12.                      (substr textString (+ 2 i))
  13.                    )))))
  14.      1 i )
  15.    "-"
  16.    (substr newString (1+ i))
  17. )
  18. )

 
和类型4而不是404?还是1比101?
 
还有一个
  1. (defun c:CopyInc2 (/  n  ss otext
  2.                  insertionPoint textString
  3.                  pt oNewText
  4.                 )
  5. (if (and (setq n (getint "\nEnter increment value (integer): "))
  6.           (setq ss (ssget ":S:E:L" '((0 . "MTEXT,TEXT") (1 . "*#-#*"))))
  7.           (setq oText (vlax-ename->vla-object (ssname ss 0)))
  8.      )
  9.    (while (setq pt (getpoint "\nSpecify new insertion point(s): "))
  10.      (vla-move (setq oNewText (vla-copy oText))
  11.                (vla-get-insertionpoint oText)
  12.                (vlax-3d-point pt)
  13.      )
  14.     [b][color="blue"][color="#8b0000"] (setq NewStr (mapcar '+ (read (Strcat  "(" (vl-string-subst " " "-" (vla-get-textstring Otext)) ")")) (list n n)))
  15. (vla-put-textstring
  16.                  oNewText
  17.                        (strcat (itoa (Car NewStr)) "-" (itoa (Cadr NewStr))))[/color][/color][/b]
  18.                       
  19.      (setq oText oNewText)
  20.    )
  21.    (cond (n (prompt "\n** Nothing selected ** "))
  22.          ((prompt "\n** Must enter an increment value ** "))
  23.    )
  24. )
  25. (princ)
  26. )

 
命令:CopyInc2
 
HTH公司
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 16:08 , Processed in 0.356291 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表