subodh_gis 发表于 2022-7-5 22:59:36

将文本字符串拆分为45个字符

我们有一些文本对象,有像500个字符的长文本字符串,所以我需要一个lisp,可以分割成45-45个字符的文本,使他们分开45个字符的对象。原因是我们必须在其他软件中导出文本,并且该软件不支持超过45个字符串。所以现在我们正在手动吐它们。

BIGAL 发表于 2022-7-5 23:03:05

简单使用(substr new_line X Y),其中X是开始,Y是你的情况下的字符数Y=45 X=1 X=46等等,你只需要(重复一次,一行中的字符数除以45,最后一个Y是平衡。我没有文本字符的长度回答有人会帮助,然后代码很简单。

subodh_gis 发表于 2022-7-5 23:09:03

我是lisp新手,请你为我编码。长度可能会有所不同。我们可以通过选择来获得字符串长度。

BIGAL 发表于 2022-7-5 23:10:49

找到它STRLEN字符串如果我能找到一些时间会做得很容易,但需要知道如何处理45个长文本你想把答案导出到一个文本文件,在cad的文本行?您正在选择多个文本吗?

subodh_gis 发表于 2022-7-5 23:15:00

请找到我实际需要的示例附件。
 
谢谢

ymg3 发表于 2022-7-5 23:17:19

这将把它放在一个列表中:
 

(defun c:test ()
(setq str "This is a test of a function to divide a long string in a series of shoter string.The new shorter string must be a maximum of 45 characters.The OP has not specified if the new string must be separated on a logical break like SPACE or punctuation mark.Anyway here goes")

; Here without logical separation;

(setq x 1 len 45 strlst nil strlst2 nil)
(repeat (+ (/ (strlen str) 45) 1)
    (setq strlst (cons (substr str x (- len 1)) strlst)
               x (+ x len -1)
    )
)
(setq strlst (reverse strlst))
(foreach s strlst
    (print s)
)
)

 
在之前删除字符串的任何“\n”可能是一个好主意
到处理。
 
ymg公司

BIGAL 发表于 2022-7-5 23:20:01

ymg3同样的想法,如果在一行上,不同的文本样式和单词使正确分开相当困难,因为文本将重叠或有不同的间距。
 
逐行最简单,在(打印S)添加pick pt、text ht,然后调整XY添加文本。现在轮到你了。

subodh_gis 发表于 2022-7-5 23:24:56

谢谢你们俩。
但代码实际上并不是我所需要的。代码应该首先要求选择文本,然后拆分它。

subodh_gis 发表于 2022-7-5 23:26:15

我没有完全理解你,先生,你到底想说什么。

Tharwat 发表于 2022-7-5 23:28:48

上载带有前后处理的示例图形。
页: [1] 2
查看完整版本: 将文本字符串拆分为45个字符