hncjddd 发表于 2019-10-25 14:27:00

合并文字码源

(defun c:HBWZ (/ lst)
(setq oldaun (getvar "aunits"))
(setvar "aunits" 3)
(setvar "osmode" 15359)
(setvar "cmdecho" 0)
(command "undo" "be")
(setq ss (ssget '((0 . "MTEXT,TEXT"))))
(setvar "osmode" 0)
(initget "E S A")
(if (not (setq kword
                  (getkword
                  "\n在合并文字之间加:[换行(E)/空格(S)/直接合并(A)]<E>"
                  )
         )
      )
    (setq kword "E")
)
(setvar "osmode" 0)
(setq lst '())
(while (> (sslength ss) 0)
    (setq entnam (ssname ss 0)
          entdat (entget entnam)
    )
    (setq pt(cdr (assoc 10 entdat))      ;读取文字的插入点坐标
          txt (cdr (assoc 1 entdat))      ;读取文字内容
          zg(cdr (assoc 40 entdat))      ;读取文字的字高
          lst (cons (list pt txt zg) lst) ;将点坐标、内容、字高组成表
          ss(ssdel entnam ss)                ;选择集中删除当前的文字对象
    )
    (entdel entnam)                        ;删除文字对象
)
(setq
    lst
   (vl-sort lst
(function
                (lambda      (e1 e2)
                  (if (equal (cadr (car e1)) (cadr (car e2)) 1e-4)
                  (> (car (car e1)) (car (car e2)))
                  (< (cadr (car e1)) (cadr (car e2)))
                  )
                )
            )
   )
)
(setq str "")
(cond      ((= kword "S")
         (foreach e lst
         (setq str (strcat (cadr e) " " str))
         )
      )
      ((= kword "E")
         (foreach e lst
         (setq str (strcat (cadr e) "\n" str))
         )
      )
      ((= kword "A")
         (foreach e lst
         (setq str (strcat (cadr e) str))
         )
      )
)
(command "MTEXT" pt "H" zg "W" 0 str "")
   (princ)
(setvar "aunits" oldaun)
(command "undo" "e")
(setvar "osmode" 15359)
(princ)
)

烟盒迷唇 发表于 2020-7-30 08:56:42

优化一下,合并文字如果是换行用多行文字,其它的用单行文字,同时字体改为原有字体样式,用EntMake组码生成文字。

开心无惧 发表于 2024-8-23 17:17:22

烟盒迷唇 发表于 2020-7-30 08:56
优化一下,合并文字如果是换行用多行文字,其它的用单行文字,同时字体改为原有字体样式,用EntMake组码生 ...

你好 这个很好用 请问可以再优化一下吗
满足
不同文字样式和字高的若干个文字合并时
增加指定标准选项,鼠标点选或者框选某个指定的文字(也是待合并文字)做为合并后的标准样式
标准样式包括字高、宽度因子、文字左对齐或右对齐都保持一样,
默认使用做为标准文字所在的位置做为合并后的文字位置,也可以指定一个新位置;


库里 发表于 2023-7-2 15:04:59

烟盒迷唇 发表于 2020-7-30 08:56
优化一下,合并文字如果是换行用多行文字,其它的用单行文字,同时字体改为原有字体样式,用EntMake组码生 ...

稍微修改了一下
在中望CAD中合并后字体高修改为2.5,
现在合并后文字合并字高保持不变,以最大的字高为准




1028695446 发表于 2019-10-25 17:55:34

建议优化下操作体验,没有选中文字就直接终止程序,不要继续让用户选关键字了{:1_1:}

ketxu 发表于 2019-10-27 12:16:22

Thanks for sharing

mocheng 发表于 2019-10-29 22:04:56

收藏,谢谢楼主分享

烟盒迷唇 发表于 2020-7-30 08:40:26

合并后都成多行文字了

至今没学会 发表于 2020-7-31 14:16:43

这个不错,好用

sunny_8848 发表于 2020-8-1 17:00:11

谢谢楼主分享!!

999999 发表于 2020-8-8 00:51:26

谢谢楼主分享,,已经收藏了,以后看能不能用的着

笑我秦兴 发表于 2020-8-11 15:59:04

烟盒迷唇 发表于 2020-7-30 08:56
优化一下,合并文字如果是换行用多行文字,其它的用单行文字,同时字体改为原有字体样式,用EntMake组码生 ...

您好,优化后的会出现合并文字——换行——字体会放大,并且重复操作所合并的字体会出现在同一位置
页: [1] 2 3
查看完整版本: 合并文字码源