明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: fangmin723

[源码] MText Line Space 多行文字行间距修改

  [复制链接]
 楼主| 发表于 2025-4-23 15:16:02 | 显示全部楼层
qazxswk 发表于 2025-4-23 11:49
我的想法,想找到控制这个行间距的系统变量,把它设为固定值。

如果有系统变量控制那最好了,不过如果要修改还是需要手动修改
回复 支持 反对

使用道具 举报

发表于 2025-4-23 18:27:40 | 显示全部楼层
本帖最后由 qazxswk 于 2025-4-23 18:59 编辑

我来更新一下,借花献佛,在浩辰CAD中,支持修改多行文字与多重引线文字。在AutoCAD里不支持修改多重引线文字。可能原因是,多重引线有两个304组码,AutoCAD读取混乱了。

  1.   (defun c:11(/ dxf44 dxf45 edata ei ent n rdis si ss s0 str)
  2.     (if (setq ss (ssget '((0 . "MTEXT,MULTILEADER"))))
  3.       (progn
  4.         (if (= nil (setq rdis (getreal "\n输入新行距【0.25~4.00】,默认<0.6>:"))) (setq rdis 0.6))
  5.         (if (< rdis 0.25) (setq rdis 0.25))
  6.         (if (> rdis 4.0) (setq rdis 4.0))
  7.         (setq n -1)
  8.         (while (setq ent (ssname ss (setq n (1+ n))))
  9.       (setq s0 (cdr (assoc 0 (entget ent))))
  10.            (cond
  11.       ((member s0 '("MTEXT"))
  12.       (setq edata (entget ent) str (cdr (assoc 1 edata)))
  13.           (if (wcmatch str "*\\psm#.##;*,*\\psm#.#;*,*\\psm#;*")
  14.             (progn
  15.               (setq si (1+ (vl-string-search "\\psm" str)))
  16.               (setq ei (1+ (vl-string-search ";" str (1+ si))))
  17.               (setq str (vl-string-subst "" (substr str si (- ei si -1)) str))
  18.               (setq edata (subst (cons 1 str) (assoc 1 edata) edata))
  19.             ) )
  20.        (if (setq dxf44 (assoc 44 edata))
  21.             (setq edata (subst (cons 44 rdis) dxf44 edata))
  22.             (setq edata (append edata (list (cons 44 rdis))))
  23.           )
  24.       (entmod edata))
  25.       
  26.       ((member s0 '("MULTILEADER"))
  27.       (setq edata (entget ent) str (cdr (assoc 304 edata)))
  28.            (if (wcmatch str "*\\psm#.##;*,*\\psm#.#;*,*\\psm#;*")
  29.             (progn
  30.               (setq si (1+ (vl-string-search "\\psm" str)))
  31.               (setq ei (1+ (vl-string-search ";" str (1+ si))))
  32.               (setq str (vl-string-subst "" (substr str si (- ei si -1)) str))
  33.               (setq edata (subst (cons 304 str) (assoc 304 edata) edata))
  34.             ) )
  35.       (if (setq dxf45 (assoc 45 edata))
  36.             (setq edata (subst (cons 45 rdis) dxf45 edata))
  37.             (setq edata (append edata (list (cons 45 rdis))))
  38.           )
  39.       (entmod edata))
  40.       );;cond
  41.         )
  42.       )
  43.     )
  44.     (princ (strcat "共修改【" (rtos (sslength ss)) "】个多行文字!"))
  45.     (princ))


回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-1 00:53 , Processed in 0.144219 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表