BlackBox 发表于 2022-7-5 23:01:55

 
别担心;是的,entmake和vla AddMText都可以工作。
 
使用列表代替串联字符串(在识别所有必要的子字符串之前)的优点是,您可以轻松计算结果多行文字的填充宽度,而无需随后打断刚刚串联的字符串,或计算每个“\t”子字符串实例的vl位置之间的距离。。。只需使用上述相同的逻辑有条件地构建字符串列表,然后在所述列表上执行vl String Right Trim+Apply+Mapcar序列。柠檬挤压。
 
干杯

BlackBox 发表于 2022-7-5 23:08:07

 
你说得太好了,韩;我不太准确,但还是很感激。
 
干杯

Bill Tillman 发表于 2022-7-5 23:09:42

是的,非常感谢您的投入。我现在工作得很好。t(tab)字符在字符串中很重要。这个可以处理我扔给它的任何东西。我只是输入了我想要的内容,然后对对象进行了快速(entget)以查看文本的格式。如果我像这样构建sting,即使使用计数器和带有非编号行的拆分,它也会在第二部分中获取一个新的编号列表。效果很好,但一旦用户开始询问,我可能会对其进行进一步调整。

(defun doit (str pt width textSize _LayoutTab)

(entmake
   (list
   (cons 0 "MTEXT")
   (cons 100 "AcDbEntity")
   (cons 67 0)
   (cons 410 _LayoutTab)
   (cons 8 "Text2")
   (cons 100 "AcDbMText")
   (cons 10 pt)
   (cons 40 textSize)
   (cons 41 width)
   (cons 46 0.0)
   (cons 71 1)
   (cons 72 5)
   (cons 1 str)
   (cons 7 "DIM")
   (cons 210 '(0.0 0.0 1.0))
   (cons 11 '(1.0 0.0 0.0))
   (cons 42 3.8781)
   (cons 43 0.792381)
   (cons 50 0.0)
   (cons 73 1)
   (cons 44 1.0)
   )
)
(princ)
)

hanhphuc 发表于 2022-7-5 23:17:09

对于这个想法,先生,我也更喜欢列表法
我的尝试有点不同
 
子功能

http://www.cadtutor.net/forum/showthread.php?89739-Format-MTEXT-with-Numbered-List
(defun mtxno (p $ lst / i doc wid num str)
;hanhphuc 2014
(setq        i   0
doc (vlax-get-acad-object)
wd (*(apply '+(mapcar ''((x) (apply x (mapcar 'strlen (cons $ lst)) ) )'(min max))) (getvar "textsize") 0.5)
) ;_ end of setq
(repeat (length lst) (setq num (cons (itoa (setq i (1+ i))) num)))
(vla-AddMText
   (foreach x '(ActiveDocument ActiveLayout Block) (setq doc (vlax-get doc x))) ;_ end of foreach
   (vlax-3d-point p)
   wd
   (foreach x '((mapcar ''((a b) (strcat a ".\t" b "\\P")) (reverse num) lst)
       (cons
          (strcat $ "\\P\\pxi-"
           (rtos wd 2 1) ",l"
           (rtos (/ wd 8.) 2 1) ",t"
           (rtos wd 2 1) ";")
          str
          )
       (vl-string-right-trim "\\P" (apply 'strcat str))
       )
   (setq str (eval x))
   ) ;_ end of foreach
   ) ;_ end of vla-AddMText
) ;_ end of defun

 
比尔的例子
(mtxno'(0.0.0。)                        ;
页: 1 [2]
查看完整版本: 使用带编号的Lis格式化多行文字