Tharwat 发表于 2022-7-6 10:27:02

多行文字长度

你好
 
我想知道为什么这个例程不适用于多个选定的MText!
 
它只能在一个多行文字上实现。
 

(defun c:TESt (/ ss)
(if (setq ss (ssget '((0 . "MTEXT"))))
   ((lambda (i / e ins end ang dis)
   (setq e (entget (ssname ss (setq i (1+ i)))))
                     (setq ins (cdr (assoc 10 e)))
                     (setq end (cdr (assoc 42 e)))
                     (setq ang (cdr (assoc 50 e)))
                     (setq dis (polar ins ang end))
            (entmakex (list (cons 0 "LINE")
              (cons 10 ins)
              (cons 11 dis)
                    )))
                      -1
       )
   (alert "Nothing's Selected")
   )
   (command "_.erase" ss "")
(princ)
)
 
非常感谢。
塔瓦特

alanjt 发表于 2022-7-6 10:49:44

您没有单步执行选择集。
    ((lambda (i / e ins end ang dis)
   (setq e (entget (ssname ss (setq i (1+ i)))))
                     (setq ins (cdr (assoc 10 e)))

 
你需要使用while或repeat。

alanjt 发表于 2022-7-6 11:00:27

既然你基本上已经拥有了它,这里有一点需要仔细考虑。。。
 
(defun c:Test (/ ss)
(if (setq ss (ssget "_:L" '((0 . "MTEXT"))))
   ((lambda (i / e l p)
      (while (setq e (ssname ss (setq i (1+ i))))
      (setq l (entget e))
      (if (entmake (list '(0 . "LINE")
                           (setq p (assoc 10 l))
                           (cons 11 (polar (cdr p) (cdr (assoc 50 l)) (cdr (assoc 42 l))))
                     )
            )
          (entdel e)
      )
      )
    )
   -1
   )
)
(princ)
)
 
要知道,这只适用于左对齐的多行文字。

Tharwat 发表于 2022-7-6 11:14:09

非常感谢Alanjt。
 
这真是太棒了。
 
在得到你的帮助后,这是我的。。。
 

(defun c:TESt (/ ss)
(if (setq ss (ssget '((0 . "MTEXT"))))
   ((lambda (i / ent e ins end ang dis)
   (while (setq ent (ssname ss (setq i (1+ i))))
(setq e (entget ent))
                     (setq ins (cdr (assoc 10 e)))
                     (setq end (cdr (assoc 42 e)))
                     (setq ang (cdr (assoc 50 e)))
                     (setq dis (polar ins ang end))
             (entmakex (list (cons 0 "LINE")
              (cons 10 ins)
              (cons 11 dis)
                    ))
(entdel ent)))
                      -1
             )
      )
(princ)
   )

 
我寻找DXF代码,它可以帮助我获得文本的长度,但没有结果。
 
那么,如何获得多行文字呢?
 
非常感谢
 
塔瓦特

Sweety 发表于 2022-7-6 11:25:20

一条非常相互连接的线。
 
Alanjt和Tharwat的精彩套路。
 
我也想知道如何获得文本的长度,因为在DXf代码中不包括文本的终点?
 
谢谢你。

Lt Dan's l 发表于 2022-7-6 11:38:55

*对于方框*
开发者帮助中的查找文本框
 
*如上所示*
插入点dxf 10
端点dxf 42
角度dxf 50
页: [1]
查看完整版本: 多行文字长度