gogozb 发表于 2023-1-12 15:30:13

用“+”串连字符

(defun c:tt13(/ en ent entbak i jia m n name namebak ss str)
(setq str "")
(setq jia "+")
(setq ss (ssget '((0 . "text"))))
(setq i 0)
(repeat (sslength ss)
    (setq name (ssname ss i))
    (print name)
    (setq str (strcat str (cdr (assoc 1 (setq ent (entget name)))) jia))
    (print i)
    (print str)
    (if (= i (- (sslength ss) 1))
      (setq str (vl-string-trim "+" str))
    )
    (if (null entbak)
      (setq entbak entnamebak name)
      (progn (entmod (subst(cons 1 str)(assoc 1 entbak) entbak ))(entdel name))
    )
    (redraw namebak 3)
    (if namebak (redraw namebak 4) )   
    (setq i (1+ i))
)
(princ)
)

e2002 发表于 2023-1-14 12:21:40

一般的,我们对于这种Strings的各种常用操作,会写成通用的函数。
各种语言的 string类 都提供了很多的这些函数。

就这个String的Join操作,分隔字符串可以是任意的一个 String, 而不限于是 “+”。

(vllib_string_JoinBy sSeparator lsStingList iReturnType)
;; Pars:
;; sSeparator : 分隔字符串
;; lsStringList : 字符串列表, 格式为 '("a" "b" "c" ...)
;; iReturnType : 返回值类型,整数:
;;                     =0 :"a/b/c/d"
;;                     =1 : "/a/b/c/d"
;;                     =2 : "a/b/c/d/"
;;                     =3 :"/a/b/c/d/"
;; 返回值:字符串                  

magicheno 发表于 2023-1-12 19:06:48

感谢大佬分享~

中国梦 发表于 2023-1-12 21:37:27

谢谢楼主分享

cjf160204 发表于 2023-1-13 10:34:43


谢谢楼主分享

hzyhzjjzh 发表于 2023-1-13 13:21:13

{:1_1:}谢谢楼主分享

magicheno 发表于 2023-1-14 16:16:09

e2002 发表于 2023-1-14 12:21
一般的,我们对于这种Strings的各种常用操作,会写成通用的函数。
各种语言的 string类 都提供了很多的这 ...

大佬没看到函数呢

gogozb 发表于 2023-1-14 21:23:41

e2002 发表于 2023-1-14 12:21
一般的,我们对于这种Strings的各种常用操作,会写成通用的函数。
各种语言的 string类 都提供了很多的这 ...

谢谢指教,我熟悉vba,不熟悉autolisp,因工作需要才开始学,知识点很碎片化不系统,用到东西都是网上摘抄修改而成。于菜鸟的我还请指点方向,想系统性的学习autolisp。

戏男 发表于 2023-6-9 19:13:53

真能把所有数字列成+法?
页: [1]
查看完整版本: 用“+”串连字符