本帖最后由 qazxswk 于 2025-4-23 18:59 编辑
我来更新一下,借花献佛,在浩辰CAD中,支持修改多行文字与多重引线文字。在AutoCAD里不支持修改多重引线文字。可能原因是,多重引线有两个304组码,AutoCAD读取混乱了。
 - (defun c:11(/ dxf44 dxf45 edata ei ent n rdis si ss s0 str)
- (if (setq ss (ssget '((0 . "MTEXT,MULTILEADER"))))
- (progn
- (if (= nil (setq rdis (getreal "\n输入新行距【0.25~4.00】,默认<0.6>:"))) (setq rdis 0.6))
- (if (< rdis 0.25) (setq rdis 0.25))
- (if (> rdis 4.0) (setq rdis 4.0))
- (setq n -1)
- (while (setq ent (ssname ss (setq n (1+ n))))
- (setq s0 (cdr (assoc 0 (entget ent))))
- (cond
- ((member s0 '("MTEXT"))
- (setq edata (entget ent) str (cdr (assoc 1 edata)))
- (if (wcmatch str "*\\psm#.##;*,*\\psm#.#;*,*\\psm#;*")
- (progn
- (setq si (1+ (vl-string-search "\\psm" str)))
- (setq ei (1+ (vl-string-search ";" str (1+ si))))
- (setq str (vl-string-subst "" (substr str si (- ei si -1)) str))
- (setq edata (subst (cons 1 str) (assoc 1 edata) edata))
- ) )
- (if (setq dxf44 (assoc 44 edata))
- (setq edata (subst (cons 44 rdis) dxf44 edata))
- (setq edata (append edata (list (cons 44 rdis))))
- )
- (entmod edata))
-
- ((member s0 '("MULTILEADER"))
- (setq edata (entget ent) str (cdr (assoc 304 edata)))
- (if (wcmatch str "*\\psm#.##;*,*\\psm#.#;*,*\\psm#;*")
- (progn
- (setq si (1+ (vl-string-search "\\psm" str)))
- (setq ei (1+ (vl-string-search ";" str (1+ si))))
- (setq str (vl-string-subst "" (substr str si (- ei si -1)) str))
- (setq edata (subst (cons 304 str) (assoc 304 edata) edata))
- ) )
- (if (setq dxf45 (assoc 45 edata))
- (setq edata (subst (cons 45 rdis) dxf45 edata))
- (setq edata (append edata (list (cons 45 rdis))))
- )
- (entmod edata))
- );;cond
- )
- )
- )
- (princ (strcat "共修改【" (rtos (sslength ss)) "】个多行文字!"))
- (princ))
|