它适用于AutoCAD 2013。
但是,在AutoCAD 2015中,它将在命令F4后停止。
这是我的剧本:
打开dwg1(加载“F4.lsp”)F4 \u qsave \u close
打开dwg2(加载“F4.lsp”)F4 \u qsave \u close
.
.
.
打开dwg100(加载“F4.lsp”)F4 \u qsave \u close
我更新的lisp:
- (vl-load-com)
- (defun ss-union ( s1 s2 / si )
- (cond
- ( (null s1) s2)
- ( (null s2) s1)
- ( (< (sslength s1) (sslength s2))
- (repeat (setq si (sslength s1))
- (ssadd (ssname s1 (setq si (1- si))) s2)
- )
- s2
- )
- ( t
- (repeat (setq si (sslength s2))
- (ssadd (ssname s2 (setq si (1- si))) s1)
- )
- s1
- )
- )
- )
- (defun C:E1 ( / current_layout doc plotabs plottablist len K ss2 BBP ssg ss ssw1 ssw2)
- ; (setq current_layout (getvar "ctab"))
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (vlax-for lay (vla-get-Layouts doc)
- (setq plotabs (cons (vla-get-name lay) plotabs))
- )
- (setq plottablist (acad_strlsort plotabs))
- (setq len (length plottablist))
- ; (setvar "osmode" 0)
- (setq K 0)
- (repeat len
- (setq name (nth K plottablist))
- (if (/= name "Model")
- (progn
- (setvar "ctab" name)
- (command "zoom" "E")
- (if (setq ssg (ssget "X" (list '(2 . "Drawing Frame") (cons 410 (getvar "ctab")))))
- (progn
- (setq BBP (cdr (assoc 10 (entget (ssname ssg 0)))))
- (setq BBP (list (car BBP) (cadr BBP)))
- (setq wp1 (list (+ (car BBP) 254) (+ (cadr BBP) 65)))
- (setq wp2 (list (+ (car BBP) 420) (+ (cadr BBP) 20)))
- (setq wp3 (list (+ (car BBP) 665) (+ (cadr BBP) 70)))
- (setq wp4 (list (+ (car BBP) 684) (+ (cadr BBP) 62)))
- )
- )
- ; (command "zoom" "E") ;put what you want to here as many lines as you want like (command "erase" "W" 0,0 50,35 "")
- (if (setq ssw1 (ssget "_W" wp1 wp2))
- (setq ss (ss-union ss ssw1))
- )
- (if (setq ssw2 (ssget "_W" wp3 wp4))
- (setq ss (ss-union ss ssw2))
- )
- (if ss
- (progn
- (command "_erase" ss "")
- ; (command "pasteclip" '(0 0 0))
- )
- )
- ) ;end progn
- ) ; end if
- (setq K (+ K 1))
- (setq ss2 '())
- ) ; end repeat
- ; (command "_qsave")
- ; (setvar "ctab" current_layout)
- (princ)
- );defun
|