如题. 我找到了下面的lsp源文件 但是用的时候出现" 错误: no function definition: SETERR" 源代码如下: ;;;------------------------------------------------------------------ ;;; att2txt: 将当前文件中名为"S&A-Tag"的属性块中的属性提取到一个文本 ;;; 文件:ml.tag,以备用. ;;; mll: 将由att2txt生成的ml.tag文件当中的数据读取出来,用以生成图纸 ;;; 目录。 ;;;--att2txt变量表--------------------------------------------------- ;;; ent-s ----- 由S&A-Tag图块组成的选择集 ;;; n --------- 计数器 ;;; fn -------- 指向文件ml.tag的指针 ;;; ent-name -- S&A-Tag图块的主实体名 ;;; ent-date -- S&A-Tag图块的主实体数据表 ;;;--mll变量表------------------------------------------------------- ;;; ent-name -- ml-item图块的主实体名 ;;; ss -------- 选择集,临时变量 ;;; n-list ---- 临时函数,指明ml-item图块子实体的顺序 ;;; n --------- 计数器 ;;; fn -------- 指向文件ml.tag的指针 ;;; sub-name -- ml-item图块子实体名 ;;; fn-item --- 从文件ml.tag中读出的数据 ;;; sub-dat --- ml-item图块子实体数据表 ;;;------------------------------------------------------------------ ;;; 装入文件,在Utility下拉菜单里选“提取标签”,然后按照“图号”的顺 ;;; 序依次选取标签图块;切换到目录文件,再选“生成目录”。 ;;;================================================================== ;;; ;;;------------------------------------------------------------------ (defun c:att2tag (/ ent-s n ent-name ent-date ent-n fn) (SetErr) (alert "请按“图号”的顺序依次点取标签图块!") (setq ent-s (ssadd)) (setq n 1) (while (setq ent-name (car (entsel "\n选择图纸标签<退出>:"))) (setq ent-date (entget ent-name)) (if (and (= (cdr (assoc 0 ent-date)) "INSERT") (= (cdr (assoc 2 ent-date)) "S&A-Tag") ) ;_end and (progn (princ (strcat "找到1个,共" (itoa n) "个!")) (ssadd ent-name ent-s) (setq n (1+ n)) ) ;_end progn (princ "\n不是图纸标签,重选!") ) ;_end if ) ;_end while (if (/= 0 (setq ent-n (sslength ent-s))) (progn (setq n 0) (setq fn (open (strcat (getvar "dwgprefix") "ml.tag") "a")) (repeat ent-n (write-line "****" fn) (setq ent-name (ssname ent-s n)) (repeat 14 (setq ent-date (entget (setq ent-name (entnext ent-name)))) (if (or (= (cdr (assoc 2 ent-date)) "图幅") (= (cdr (assoc 2 ent-date)) "日期") (= (cdr (assoc 2 ent-date)) "比例") (= (cdr (assoc 2 ent-date)) "图号") (= (cdr (assoc 2 ent-date)) "图名") ) ;_end or (write-line (strcat (cdr (assoc 1 ent-date))) fn) ) ;_end if ) ;_end repeat 14 (setq n (1+ n)) ) ;_end repeat (close fn) (princ (strcat "\n图纸标签已经添加到文件 " (getvar "dwgprefix") "ml.tag 当中。" ) ) (princ) ) ;_end progn (princ "\n没有选到图纸标签,退出!") ) ;_end if (ReErr) (princ) ) ;_end defun ;;;------------------------------------------------------------------ (defun c:mll (/ old-cmd ent-name ent-date ss n-list n fn sub-name fn-item sub-date) (SetErr) (store-var) (setq ss (ssadd)) (setq n-list (list 2 4 5 6 7) n 0) (if (setq ent-name (car (entsel "\n请选择一个目录项<退出>:"))) (progn (setq ent-date (entget ent-name)) (if (and (= (cdr (assoc 0 ent-date)) "INSERT") (or (= (cdr (assoc 2 ent-date)) "ml-item1") (= (cdr (assoc 2 ent-date)) "ml-item2") ) ) (progn (if (setq fn (open (strcat (getvar "dwgprefix") "ml.tag") "r")) (progn (while (read-line fn) (ssadd ent-name ss) (repeat (vl-list-length n-list) (setq sub-name ent-name) (setq fn-item (read-line fn)) (repeat (nth n n-list) (setq sub-date (entget (setq sub-name (entnext sub-name))) ) ) ;_end repeat (setq sub-date (subst (cons 1 fn-item) (assoc 1 sub-date) sub-date) ) (entmod sub-date) (setq sub-name ent-name) (setq n (1+ n)) ) ;_end repeat 5 (entupd ent-name) (vl-cmdf "copy" ss "" "0,0" "0,-7") (setq n 0) (setq ent-name (entlast)) (setq ss (ssadd)) ) ;_end while (entdel ent-name) (close fn) (vl-file-delete (strcat (getvar "dwgprefix") "ml.tag")) (reset-var) (alert "目录已经生成,请手动填入序号!") (princ) ) ;_end progn (progn (princ "\n找不到 ml.tag 文件,退出!") (exit) ) ) ;_end if ) ;_end progn (progn (reset-var) (princ "\n不是目录项,重选!") ) ;_end progn ) ;_end if ) ;_end progn (princ "\n没选到目录项,退出!") ) ;_end if (ReErr) (princ) ) ;_end defun *********************************************************************************** 在线等!!!!
|