VisDak 发表于 2022-7-6 14:36:16

文本对齐方式

您好,大家好,有没有人有一条路线可以将文字/多行文字/属性安排并对齐在我想要在侧面或中间拾取的任何位置(如图所示)
 
通过选择所有文本,我需要将其左对齐、中对齐或右对齐,这样我们就无法通过文本对齐来吸引眼球。请
 
谢谢大家

Lee Mac 发表于 2022-7-6 14:49:22

这应该适用于多行文字和文字:
 

(defun c:talign(/ ss pt tmp elst)
(vl-load-com)
(or tal:def (setq tal:def "Left"))
(if (and (setq ss (ssget '((0 . "*TEXT"))))
          (setq pt (getpoint "\nSelect Alignment Point: ")))
   (progn
   (initget "Left Middle Right")
   (setq tmp (getkword (strcat "\nAlignment? <" tal:def ">: ")))
   (or (not tmp) (setq tal:def tmp))
   (foreach elst(mapcar 'entget
                      (vl-remove-if 'listp
                        (mapcar 'cadr (ssnamex ss))))
       (cond ((eq "TEXT" (cdr (assoc 0 elst)))
            (setq elst (mod 10 (list (car pt)
                                       (caddr (assoc 10 elst))
                                       (cadddr (assoc 10 elst))) elst))
            (mod 72 (cond ((eq tal:def "Left") 0)
                            ((eq tal:def "Middle") 1)
                            ((eq tal:def "Right") 2))
                   (mod 11 (cdr (assoc 10 elst)) elst)))
             ((eq "MTEXT" (cdr (assoc 0 elst)))
            (setq elst (mod 10 (list (car pt)
                                       (caddr (assoc 10 elst))
                                       (cadddr (assoc 10 elst))) elst))
            (mod 71 (cond ((eq tal:def "Left") 1)
                            ((eq tal:def "Middle") 2)
                            ((eq tal:def "Right") 3)) elst)))))
   (princ "\n<!> No Text Selected <!>"))
(princ))

(defun mod (code val elst)
(entmod
   (subst
   (cons code val)
       (assoc code elst) elst)))

VisDak 发表于 2022-7-6 14:56:10

谢谢李,功能很好,只是我不能在UCS旋转平面上使用,它跳出文本,可以修复它,再次感谢

Lee Mac 发表于 2022-7-6 15:05:11

试一试,应该与UCS合作(希望如此!)
 

(defun c:talign(/ ss pt tmp elst)
(vl-load-com)
(or tal:def (setq tal:def "Left"))
(if (and (setq ss (ssget '((0 . "*TEXT"))))
          (setq pt (getpoint "\nSelect Alignment Point: ")))
   (progn
   (setq pt (trans pt 1 0))
   (initget "Left Middle Right")
   (setq tmp (getkword (strcat "\nAlignment? <" tal:def ">: ")))
   (or (not tmp) (setq tal:def tmp))
   (foreach elst(mapcar 'entget
                      (vl-remove-if 'listp
                        (mapcar 'cadr (ssnamex ss))))
       (cond ((eq "TEXT" (cdr (assoc 0 elst)))
            (setq elst (mod 10 (list (car pt)
                                       (caddr (assoc 10 elst))
                                       (cadddr (assoc 10 elst))) elst))
            (mod 72 (cond ((eq tal:def "Left") 0)
                            ((eq tal:def "Middle") 1)
                            ((eq tal:def "Right") 2))
                   (mod 11 (cdr (assoc 10 elst)) elst)))
             ((eq "MTEXT" (cdr (assoc 0 elst)))
            (setq elst (mod 10 (list (car pt)
                                       (caddr (assoc 10 elst))
                                       (cadddr (assoc 10 elst))) elst))
            (mod 71 (cond ((eq tal:def "Left") 1)
                            ((eq tal:def "Middle") 2)
                            ((eq tal:def "Right") 3)) elst)))))
   (princ "\n<!> No Text Selected <!>"))
(princ))

(defun mod (code val elst)
(entmod
   (subst
   (cons code val)
       (assoc code elst) elst)))

VisDak 发表于 2022-7-6 15:18:26

您好,李多一点,文字现在不是到处乱扔:)只是它不会垂直对齐,它只是根据倾斜于UCS的Y轴对齐,请参见图片谢谢您的辛勤工作,李,

Lee Mac 发表于 2022-7-6 15:24:51

你确定要试用新版本吗这对我来说很好
 
尝试关闭并重新打开图形,重新加载例程并再次测试。

VisDak 发表于 2022-7-6 15:31:23

是的,没问题,李,我有一个主意,我将如何在不使用UCS的情况下使用我们,我将设置为在布局选项卡上而不是在模型选项卡上使用文本,我将仅使用模型选项卡进行工作图形(平面图和布局),
 
如果文本在布局选项卡上完成,我将使用“talign.Lsp”对齐文本,然后命令“CHSPACE”并选择所有文本和引线以及presto!!文本被传输到不影响文本对齐的模型。。
 
谢谢李的Lisp程序。。

Lee Mac 发表于 2022-7-6 15:36:50

没问题伙计
页: [1]
查看完整版本: 文本对齐方式