乐筑天下

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

[编程交流] 使用文本编号进行操作

[复制链接]

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:32:36 | 显示全部楼层 |阅读模式
你好
我想知道是否有一个lisp可以增加选定文本中的数字。
例如:
 
1/1,1/2,1/3...到1/2,1/3,1/4。。。
 
所以,程序应该选择文本,然后递增或递减前缀或sufix。
感谢您的帮助。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:46:37 | 显示全部楼层
只是一个解决方案,将文本读取每个字符,直到找到“/”为止,然后读取其余字符,使用rtos将其还原为数字加1,将其转换为字符串并添加开始字符串。作为lisp“查找字符”的开始搜索,最常见的是CSV。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:52:35 | 显示全部楼层
试试这个程序:文本增量
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:04:02 | 显示全部楼层
感谢您的回复。
@李·麦克
文本增量一次选择一个元素。如果你有从1到100左右的数字,这需要时间。
有没有一种方法可以同时选择所有元素?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:14:36 | 显示全部楼层
 
试试这个快速模式:
  1. ;; Text Increment  -  Lee Mac
  2. ;; Increments numerical data found in a selection of Text or MText
  3. ;; objects by a value specified by the user.
  4. (defun c:txtinc ( / e i l s x )
  5.    (if (null *inc*)
  6.        (setq *inc* 1.0)
  7.    )
  8.    (if (setq i (getreal (strcat "\nSpecify Increment <" (rtos *inc* 2) ">: ")))
  9.        (setq *inc* i)
  10.    )
  11.    (if (equal 0.0 (rem *inc* 1) 1e-8)
  12.        (setq *inc* (fix *inc*))
  13.    )
  14.    (if (setq s (ssget "_:L" '((0 . "TEXT,MTEXT") (1 . "*#*"))))
  15.        (repeat (setq i (sslength s))
  16.            (setq e (entget (ssname s (setq i (1- i))))
  17.                  x (assoc 1 e)
  18.            )
  19.            (entmod
  20.                (subst
  21.                    (cons 1
  22.                        (apply 'strcat
  23.                            (mapcar
  24.                                (function
  25.                                    (lambda ( x )
  26.                                        (if (and (= 'int (type x)) (= 'int (type *inc*)))
  27.                                            (itoa (+ x *inc*))
  28.                                            (if (member (type x) '(int real))
  29.                                                (rtos (+ x *inc*) 2)
  30.                                                x
  31.                                            )
  32.                                        )
  33.                                    )
  34.                                )
  35.                                (LM:splitstring (cdr x))
  36.                            )
  37.                        )
  38.                    )
  39.                    x e
  40.                )
  41.            )
  42.        )
  43.    )
  44.    (princ)
  45. )            
  46. ;; Split String  -  Lee Mac
  47. ;; Splits a string into a list of text and numbers
  48. (defun LM:splitstring ( s )
  49.    (
  50.        (lambda ( l )
  51.            (read
  52.                (strcat "("
  53.                    (vl-list->string
  54.                        (apply 'append
  55.                            (mapcar
  56.                                (function
  57.                                    (lambda ( a b c )
  58.                                        (cond
  59.                                            (   (= 92 b)
  60.                                                (list 32 34 92 b 34 32)
  61.                                            )
  62.                                            (   (or (< 47 b 58)
  63.                                                    (and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
  64.                                                    (and (= 46 b) (< 47 a 58) (< 47 c 58))
  65.                                                )
  66.                                                (list b)
  67.                                            )
  68.                                            (   (list 32 34 b 34 32))
  69.                                        )
  70.                                    )
  71.                                )
  72.                                (cons nil l) l (append (cdr l) (list nil))
  73.                            )
  74.                        )
  75.                    )
  76.                    ")"
  77.                )
  78.            )
  79.        )
  80.        (vl-string->list s)
  81.    )
  82. )
  83. (princ)
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:22:23 | 显示全部楼层
谢谢李。这就是我想要的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:28:58 | 显示全部楼层
不客气!
回复

使用道具 举报

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-6 00:40:09 | 显示全部楼层
不确定这是否有助于解决问题。以下技巧在很大程度上取决于您的案例:
 
我通常会删除所有需要增加数字部分的文本实体。将单个图案复制到适当位置,然后利用AutoNumber(ExpressTools)的“查找和替换”选项。
 
003237w9cqdqldddcz0mpb.jpg
 
在上述场景中,您只需要将“1/x”复制到所有所需的位置。在“查找和替换”中,键入“x”。
 
正如我所说,它可能并不总是对每个人都可行,但我经常使用它。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 04:13 , Processed in 1.543086 second(s), 71 queries .

© 2020-2025 乐筑天下

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