 - (defun c:tt ()
- (princ "\n请选择范围")
- (if (setq ss (ssget '((0 . "text,insert"))))
- (mapcar '(lambda (x)
- (cond ((= (hlj-dxf 0 x) "TEXT")
- (command "LINE" (hlj-dxf 10 x) '(0 0) "")
- )
- ((= (hlj-dxf 0 x) "INSERT")
- (setq p0 (hlj-dxf 10 x)
- aa (vl-remove-if
- '(lambda (y) (/= (hlj-dxf 0 y) "TEXT"))
- (hlj-blkQ (hlj-dxf 2 x))
- )
- )
- (foreach a aa
- (setq p1 (hlj-dxf 10 a)
- p1 (mapcar '(lambda (x y) (+ y x)) p1 p0)
- )
- (command "LINE" p1 '(0 0) "")
- )
- )
- )
- )
- (ss2list ss)
- )
- )
- (princ)
- )
- ;; 次级函数
- (defun hlj-dxf (n s1) (cdr (assoc n (entget s1))))
- ;; 枚举块中的图元 (hlj-blkQ (hlj-dxf 2 (entget blkname)))
- ;; (setq blkname (car (entsel "\n选择: ")))
- (defun hlj-blkQ (blkname / a lst)
- (setq a (cdr (assoc -2 (tblsearch "BLOCK" blkname)))
- lst (cons a lst)
- )
- (while (setq a (entnext a))
- (setq lst (cons a lst))
- )
- lst
- )
- ;; 下面部分ssget选择集初始化成图元表
- (defun ss2list (ss / sets itemlist i ent ent)
- (setq sets (list)
- n (sslength ss)
- )
- (setq i (- n 1))
- (repeat n
- (setq ent (ssname ss i)
- sets (cons ent sets)
- i (1- i)
- )
- )
- sets
- )
|