本帖最后由 ssyfeng 于 2018-11-5 16:28 编辑
试试这个行不行: - (defun c:tt (/ *error* blc-en blc-name blc-name0 cr-pt dis0 dis1 en en-pt lay lay0 lst lst0 pt1 pt2 ss1 ss1-n ss2 ss2-n str txt-file)
- (defun *error* ( msg )
- (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
- (progn (princ (strcat "\n错误:" msg)) (close txt-file))
- )
- (princ)
- )
- (setq pt1 (getpoint "\n选择对象范围:")
- pt2 (getcorner pt1 "\n选择对象范围:")
- ss1 (ssget "_c" pt1 pt2 '((0 . "text") (8 . "编号")))
- ss2 (ssget "_c" pt1 pt2 '((0 . "INSERT")))
- ss1-n (sslength ss1)
- ss2-n (sslength ss2)
- txt-file (open "c:\\str-lay-name.txt" "w")
- )
- (repeat ss1-n
- (setq en (ssname ss1 (setq ss1-n (1- ss1-n)))
- str (cdr (assoc 1 (entget en)))
- en-pt (cdr (assoc 10 (entget en)))
- dis0 99999999
- )
- (repeat ss2-n
- (setq blc-en (ssname ss2 (setq ss2-n (1- ss2-n)))
- cr-pt (cdr (assoc 10 (entget blc-en)))
- blc-name (cdr (assoc 2 (entget blc-en)))
- lay (cdr (assoc 8 (entget blc-en)))
- dis1 (distance en-pt cr-pt)
- )
- (if (< dis1 dis0)
- (progn (setq dis0 dis1
- blc-name0 blc-name
- lay0 lay
- )
- )
- )
- )
- (setq lst0 (append lst0 (list (list str lay0 blc-name0)))
- ss2-n (sslength ss2)
- )
- )
- (setq lst (mapcar '(lambda (x) (strcat (car x) "," (cadr x) "," (caddr x))) lst0))
- (mapcar '(lambda (x) (write-line x txt-file)) lst)
- (close txt-file)
- (princ)
- )
|