<리습소스>
;;=============================
; 범위선택 pdf자동출력하기(2016.5 ChoiDongWoo)
; ->DWG To PDF.pc3를 이용하여 축척을 자동계산하여 A3 pdf출력 하기
; ->선택순으로 작업디렉토리에 화일명-1,화일명-2,...으로 자동으로 이름를 부여하여 출력
; ->model & paper space에서 모두작동(2016.7 오류수정)
;;--------------------------------------------
(defun c:qa3p(/ ds ctb prt sheet n k1 k ss wpt pt1 pt2 px1 px2 py1 py2 p1 d1 sc sc1 yn num)
(setvar "cmdecho" 0)
(setq ds 514.420) ; A3대각선길이
(setq ctb "Ga3.CTB")
(setq prt "DWG To PDF.pc3")
(setq sheet "ISO 전체 페이지 A3(297.00 x 420.00 mm)")
(setq pname (getvar "dwgprefix") dname (getvar "dwgname"))
(setq dname (substr dname 1 (- (strlen dname) 4)))
(setq newname (strcat pname dname))
(setq pname (strcat newname "-1"))
(setq n 0 k1 0) (setq ss '())
;->범위선택
(setq pt1 (getpoint "\n첫 번째 구석점->"))
(while pt1
(setq pt2 (getcorner pt1 " 다른 구석점->"))
(while pt2
(setq ss (cons (list pt1 pt2) ss))
(setq pt1 pt2)
(setq k1 (+ k1 1)) (princ k1)
(setq pt2 (getcorner pt1 " 다른 구석점->"))
);->while end
(setq pt1 (getpoint "\n첫 번째 구석점->"))
)
;<-범위선택 종료
(setq n (length ss)) (setq k (- n 1)) (setq num 0)
(repeat n
(setq wpt (nth k ss))
(setq pt1 (car wpt) pt2 (cadr wpt))
(if (< (car pt1) (car pt2))
(setq px1 (car pt1) px2 (car pt2)) (setq px1 (car pt2) px2 (car pt1)) )
(if (< (cadr pt1) (cadr pt2))
(setq py1 (cadr pt1) py2 (cadr pt2)) (setq py1 (cadr pt2) py2 (cadr pt1)) )
(setq p1 (list px1 py1) p2 (list px2 py2))
(if (< (angle p1 p2) (* 0.25 pi)) (setq tem "h") (setq tem "v"))
(setq d1 (distance pt1 pt2))
(setq sc (/ d1 ds) sc1 (strcat "1="(rtos sc 2 0))) (terpri)
;--> tilemode
(if (= (getvar "tilemode") 1)
(if (= tem "v")
(COMMAND "-PLOT" "Y" "" prt sheet "M" "P" "N" "w" P1 P2 sc1 "c" "Y" ctb
"Y" "W" pname "N" "Y") ;세로방향 출력
(COMMAND "-PLOT" "Y" "" prt sheet "M" "L" "N" "w" P1 P2 sc1 "c" "Y" ctb
"Y" "W" pname "N" "Y") ;가로방향 출력
)
(if (= tem "v")
(COMMAND "-PLOT" "Y" "" prt sheet "M" "P" "N" "w" P1 P2 sc1 "c" "Y" ctb
"Y" "n" "n" "n" pname "N" "Y") ;세로방향 출력
(COMMAND "-PLOT" "Y" "" prt sheet "M" "L" "N" "w" P1 P2 sc1 "c" "Y" ctb
"Y" "n" "n" "n" pname "N" "Y") ;가로방향 출력
)
)
;<-- tilemode
(setq k (- k 1))
(setq num (1+ num))
(setq pname (strcat newname "-" (rtos (+ num 1) 2 0)))
);->repeat end
(prompt"프린터로 ")(princ n)(prompt "장 을 출력함{S:")(princ sc1)(prompt "}")
(princ))
'■ 유용한 캐드&리습 > ▫ AutoLISP' 카테고리의 다른 글
리습 - 시트선택 pdf 자동출력하기 (0) | 2024.12.31 |
---|---|
텍스트로 된 X,Y 좌표을 찍어 위치표현하기 (1) | 2024.12.31 |
좌표표기하기 (0) | 2024.12.31 |
속성블럭 되돌리기 (0) | 2024.12.31 |
리습 - 선택한 블럭의 좌표 뽑기-2 (7-0815) (0) | 2024.12.31 |