求一小程序。
本帖最后由 429014673 于 2013-1-18 09:27 编辑求一小程序。听闻ET工具箱有此功能,但本人想求单一程序,LSP格式。明经币不多,希望高手们出手相助,谢谢。
写了个比较简单的
(defun c:ttomt (/ ss n lst en str h pt st lay)
(setq ss (ssget '((0 . "text"))))
(repeat (setq n (sslength ss))
(setq lst (cons (list (setq en (ssname ss (1- n)))
(cadr (cdr (assoc 10 (entget en))))
)
lst
)
n (1- n)
)
)
(setq
lst (vl-sort lst
(function (lambda (a1 a2) (> (cadr a1) (cadr a2))))
)
)
(setq str
(apply
'strcat
(mapcar
'(lambda (x) (strcat x "\\P"))
(mapcar '(lambda (x) (cdr (assoc 1 (entget (car x))))) lst)
)
)
)
(setq str (substr str 1 (- (strlen str) 2)))
(setq h(cdr (assoc 40 (entget (car (car lst)))))
pt (polar (cdr (assoc 10 (entget (car (car lst))))) (/ pi 2) h)
st (cdr (assoc 7 (entget (car (car lst)))))
lay (cdr (assoc 8 (entget (car (car lst)))))
)
(entmake (list '(0 . "MTEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbMText")
(cons 8 lay)
(cons 40 h)
(cons 7 st)
(cons 1 str)
(cons 10 pt)
)
)
(foreach n lst (entdel (car n)))
(princ)
)
单行文字转多行文字,多行单列的论坛有,多行多列的不行 多行多列,明经lsp群里有个“路人”,见过他有演示此程序,还有e派也有演示 这样的程序还是好啊,,,, 本帖最后由 sunny20102 于 2013-1-17 09:06 编辑
To 夏生生: well done
删除是否用 (command "_.erase" ss "")好些? 省得用foreach
页:
[1]