;;==================================================================
;; 도면 내 여러 블럭 선택하여 A3로 스케일에 맞게 자동 플롯 하기
;; 2015. 고인석
;; 2017. 01. 05. 김현철 A3 스케일에 맞춰 출력하도록 업데이트 http://kimhyunchul.co.kr
;;==================================================================
(setq plotername “Adobe PDF”); DocuCentre-IV C2260 출력할 프린터이름, dwg to pdf는 파일 이름 설정 때문에 잘 안됨
(setq ctbname “BDA.ctb”) ; 출력할 CTB 종류
(setq papername “A3”) ; 용지 크기는 A3 종이 종류 선택, 프린터마다 상태 다르니 확인바람.
;예) ISO 전체페이지 A3(420.00 x 297.00 mm) 등으로 설정됨
(defun c:ppp( / ent pwgs ss1 ppw1 ppw2 vpw1 vpw2 pwwsel pdgscc1 pdgscc pdgscc4 )
(defun *error* (msg)(princ “error: “)(princ msg)
(setvar “osmode” 0)
(princ))
(vl-load-com)
(setq ent nil)
(prompt “n 프린트 할 도면을 선택하세요(블록으로된 도면외곽) !!” )
(setq pwgs (ssget (list (cons 0 “insert”))))
(if pwgs
(progn
(setq ss1 pwgs)
(setq n 0)
(repeat (sslength ss1)
(setq ent (ssname ss1 n))
(vla-GetBoundingBox (vlax-ename->vla-object ent) ‘MinPt ‘MaxPt)
(setq ppw1 (vlax-safearray->list MinPt))
(setq ppw2 (vlax-safearray->list MaxPt))
(setq vpw1 (list (car ppw2) (cadr ppw1)));우하점
(setq vpw2 (list (car ppw1) (cadr ppw2))) ;좌상점
(setq pwwsel (ssget “W” ppw1 ppw2 ));전체도면
(setq pdgscc1 (distance ppw1 ppw2))
(setq pdgscc (/ pdgscc1 514.4016 )) ; 도면척도 대각길이로 나눈값 A3기준(도면 폼 크기 틀릴 경우 여기를 고쳐주면 됨)
; lt스케일 적용하려면 왼쪽 주석 삭제하면 됨. 내가 그리는 도면에서는 필요 없어서 주석 처리함.
; (setq pdgscc4 (* pdgscc 4 )) ;ltscale 스케일의4배
; (setvar “ltscale” pdgscc4) ; 치수스케일 도면축척과 동일
(setvar “osmode” 4335)
; 아래 한줄 추가함. 도면을 스케일 맞춰서 출력하도록 계산하기
(setq PLOTSCALE (STRCAT “1=” (rtos (/ pdgscc1 514.4016) 2 0)))
; (command “zoom” ppw1 ppw2) ; 사용안함 어지러움
(command “-PLOT”
“Y”
“”
plotername ;프린터이름
papername ;용지 크기
“M” ;모형
“L” ;페이지회전 가로방향만 도면만 출력됨 추후 세로방향 되도록 추가 예정
“N”
“W”
ppw2 ppw1
PLOTSCALE
“c”
“Y”
ctbname
“y” ;선가중치플롯
“a” ;음영플롯설정 / 표시되는 대로(A)/와이어프레임(W)/숨김(H)/뷰 스타일(V)/렌더(R)
“n” ;플롯출력을 파일로
“n” ;페이지설정 저장
“y” ;플롯진행
)
(setq n (1+ n))
)
)
)
(prompt “n 출력완료!”)
)
원래 리습은 용지에 맞춤 형식으로 되어있었는데, 플롯 축척을 직접 지정하는 걸로 변경 하셨더라고요.
어느 부분을 고쳐야 다시 용지에 맞춤 으로 되돌릴 수 있을까요?
답변 감사합니다!
이미 내용을 숙지한 상태이고, 그 전에 만들어진 리습을 찾지 못 해서 질문을 해보았습니다!