本帖最后由 BUBUBA918 于 2013-7-24 20:51 编辑
 - ;此程序为根据图形内图框,自动写图形的目录。
- ;
- (defun c:mul(/ sel m tf th tm selm ss sst ssm k p1 p2)
- ;选择图框
- (setq sel (ssget "x" (list (cons -4 "<or") (cons 2 "图框A0") (cons 2 "图框A1") (cons 2 "图框A2") (cons -4 "or>"))))
-
- (if (= sel nil)
- (progn
- (princ "\n图中无有效图框.")
- (quit)
- ) )
-
- (setq m (sslength sel))
- (setq sst '() k 1)
- (while (>= (setq m (1- m)) 0)
- (progn
- (setq selm (ssname sel m))
- (setq ss (cdr (assoc 2 (entget selm))))
- ;提取图幅信息
- (setq tf (substr ss 5))
- (repeat 2
- (progn
- (setq selm (entnext selm))
- (setq ss (entget selm))
- ;提取图号,图名信息。
- (if (= (cdr (assoc 2 ss)) "图号") (setq th (cdr (assoc 1 ss))))
- (if (= (cdr (assoc 2 ss)) "图名")
- (progn
- (setq tm (cdr (assoc 1 ss)))
- (if (< k (strlen tm)) (setq k (strlen tm)))
- )
- )
- )
- )
- (setq ssm (list th tm tf))
- (setq sst (cons ssm sst))
- )
- )
- ;图名,图号,图幅信息提取完成,存放在串列sst中。下面对串列sst进行排序。
- (vl-load-com)
- (setq sst (vl-sort sst (function (lambda (e1 e2) (< (atoi (car e1)) (atoi (car e2)))))))
- (setq svar (getvar "osmode"))
- (setvar "osmode" 0)
-
- ;写表头
- (setq m (length sst))
- (setq p1 (getpoint "输入目录表格的左上角角点"))
- (setq p2 (polar p1 (* 1.5 pi) (+ 1450 (* m 800))))
- (command "layer" "N" "TAB" "S" "TAB" "")
- (command "_line" p1 (polar p1 0 11800) "")
- (command "_line" p2 p1 "")
- (command "_copy" (ssget "L") "" "m" p1 (polar p1 0 800) (polar p1 0 3500) (polar p1 0 10000) (polar p1 0 11800) "")
-
- (setq p2 (polar p1 (* 1.5 pi) 650))
- (command "_text" "s" "TSSD_Rein" "J" "c" (polar p2 0 400) "500" "0" "序")
- (command "_text" "s" "TSSD_Rein" "J" "c" (polar (polar p2 (* 1.5 pi) 650) 0 400) "500" "0" "号")
- (setq p2 (polar p1 (* 1.5 pi) 975))
- (command "_text" "s" "TSSD_Rein" "J" "c" (polar p2 0 2150) "500" "0" "图 号")
- (command "_text" "s" "TSSD_Rein" "J" "bl" (polar p2 0 3900) "500" "0" "图 纸 内 容")
- (command "_text" "s" "TSSD_Rein" "J" "c" (polar p2 0 10900) "500" "0" "图 幅")
- (setq p2 (polar p1 (* 1.5 pi) 1450))
- (command "_line" p2 (polar p2 0 11800) "")
-
- ;写目录的内容
- (setq k 1)
- (repeat m
- (progn
- (setq p2 (polar p2 (* 1.5 pi) 650))
- (command "_text" "s" "TSSD_Rein" "J" "c" (polar p2 0 400) "500" "0" k)
- (command "_text" "s" "TSSD_Rein" "J" "c" (polar p2 0 2150) "500" "0" (strcat "结施-" (car (car sst)) "/" (itoa m)))
- (command "_text" "s" "TSSD_Rein" "J" "BL" (polar p2 0 3900) "500" "0" (cadr (car sst)))
- (command "_text" "s" "TSSD_Rein" "j" "c" (polar p2 0 10900) "500" "0" (caddr (car sst)))
- (setq p2 (polar p2 (* 1.5 pi) 150))
- (command "_line" p2 (polar p2 0 11800) "")
- (setq k (1+ k))
- (setq sst (cdr sst))
- )
- )
- (setvar "osmode" svar)
- (prin1)
- )
- (prompt "**mul**")
- (prin1)
- ;作者:QQ549476107
- ;欢迎共同讨论学习
|