更好的方法是找到标题栏插入点,然后相对于0,0移动所有内容。
布局中标题栏的示例。代码中的标题栏位于左下角,作为插入点,并移动到0,0
- ; move title blocks
- ; By Alan H
- (PROMPT ".....now moving dwgs....")
- (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))
- (setq oldsnap (getvar "osmode"))
- (setvar "osmode" 0)
- (setq en (entsel "Pick Title Block:"))
- (setq K 0)
- (repeat len
- (setq name (nth K plottablist))
- (princ name)
- (if (/= name "Model")
- (progn
- (setvar "ctab" name)
- (setq minxy (getvar "extmin"))
- (setq maxxy (getvar "extmax"))
- (setq ed (entget (car en)))
- (setq ss (ssget "_X" (list (cons 0 "INSERT") (cons 410 name) (cons 2 (cdr (assoc 2 ed))) ) ))
- (setq n (sslength ss))
- (setq en (ssname ss 0))
- (setq xy (assoc 10 (entget en)))
- ; insertion pt (setq xy (assoc 10 el))
- (setq xy (list (cadr xy)(caddr xy)))
- (command "move" "w" minxy maxxy "" xy "0,0")
- (command "zoom" "E")
- ) ;end progn
- ) ; end if
- (setq K (+ K 1))
- (princ k)
- (setq ss '()
- xy nil)
- ) ; end repeat
- (setvar "osmode" oldsnap)
- (princ)
|