429014673 发表于 2013-1-16 14:37:45

求一小程序。

本帖最后由 429014673 于 2013-1-18 09:27 编辑



求一小程序。听闻ET工具箱有此功能,但本人想求单一程序,LSP格式。明经币不多,希望高手们出手相助,谢谢。

夏生生 发表于 2013-1-16 14:37:46

写了个比较简单的


(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)
)

lisp爱好者 发表于 2013-1-16 15:15:36

单行文字转多行文字,多行单列的论坛有,多行多列的不行

lisp爱好者 发表于 2013-1-16 15:17:15

多行多列,明经lsp群里有个“路人”,见过他有演示此程序,还有e派也有演示

xiabin68 发表于 2013-1-16 18:24:02

这样的程序还是好啊,,,,

sunny20102 发表于 2013-1-17 09:02:56

本帖最后由 sunny20102 于 2013-1-17 09:06 编辑

To 夏生生: well done
删除是否用 (command "_.erase" ss "")好些? 省得用foreach
页: [1]
查看完整版本: 求一小程序。