캐드 분류
pdf 뜨는 리습파일 수정을 어떻게 하는지 모르겠습니다ㅜ
컨텐츠 정보
- 222 조회
- 0 추천
- 0 비추천
- 목록
본문
이거 질문하려고 고캐드 가입했습니다ㅠㅠ
고수님들 도와주십셔(제발)
자동 pdf 뜨는 리습 파일인데 외곽 테두리 선이 생기네요..ㅠ
외곽 테두리 선 없애는 거랑, ISO 전체페이지 297*210 사이즈로 적용하는거 2가지를 변경하고 싶습니다ㅜㅜ
리습 쌉초보라 도움이 필요하니다ㅜㅜ
;;;
;;;
;;; 아키모아.2013.08.24.
;;;
;;;
;;; CTB, PRINTER, PAPER 설정
;;;
;;; 이 부분의 변수 ctb_file, prt_name, paper_size 에 ctb파일이름,프린터설정세이브파일이름,용지설정이름으로
;;; 대체한후 AutoCAD에서 로드하여야 한다.
;;;
;;;
;Plot Device 설정
(setq prt_name "Default Windows System Printer.pc3″) ;; 프린터 이름 설정
(setq ctb_file "acad.ctb") ;; 펜 설정
(setq paper_size "A4″) ;; 용지 설정
;PDF Device 설정: ACAD2012
(setq pdf_prt_name "DWG To PDF.pc3″) ;; 프린터 이름 설정
(setq pdf_ctb_file "acad.ctb") ;; 펜 설정
(setq pdf_paper_size "ISO_expand_A4_(210.00_x_297.00_MM)") ;; 용지 설정
;출력용 Layer명 지정(PLOTBOX)
(setq #PlotClayer "0″) ;;플롯용 박스 기본 레이어 설정 (Default: "0″)
(setq #PlotColor 7) ;;플롯용 박스 색상 설정 (Default: nil)
;;;
;;; PLOT 설정값 확인
;;;
;;; 평소 사용하는 환경으로 PLOT설정을 배치에 적용한 뒤,
;;; PLOTNAME 명령으로 위의 값을 확인할 수 있다.
;;;
(defun c:PLOTNAME ()
(princ "n플로터 이름: ") (prin1 (vla-get-ConfigName LayObj))
(princ "n용지 이름: ") (prin1 (vla-get-CanonicalMediaName LayObj))
(princ "n펜 이름: ") (prin1 (vla-get-StyleSheet LayObj))
(princ "n")(princ)
)
;;;
;;;
;;; 출력 명령어 설정
;;; C:OOO 를 원하는 명령으로 바꾼다.
;;;
;;; -기본 명령어-
;;; PX: 박스로 된 도면외각을 선택하여 출력한다.
;;; PXX: 도면 전체를 출력한다.
;;; RV: 도면 출력과 동일하게 미리보기를 한다.
;;; PI: 블록으로 된 도면외각을 출력한다.
;;; PB: PLOT 전용 사각박스를 생성한다.
;;; PDF: 박스로 된 도면외각을 PDF파일로 출력한다.
;;;
;;;
(defun C:PX () (prompt (strcat "PLOTEXPRESSn출력할 도면 선택…")) (#PLOT_EXPRESS "Plot_Mode"))
(defun C:PXX () (prompt (strcat "PLOTEXPRESSALLnPLOT전용 LAYER 전체 출력…")) (#PLOT_EXPRESS "AP_Mode"))
(defun C:RV () (prompt (strcat "DREVIEWn미리보기 할 도면 선택…")) (#PLOT_EXPRESS "RV_Mode"))
(defun C:PI () (prompt (strcat "PLOTINSERTBLOCKn출력할 블록 선택…")) (#PLOT_EXPRESS "Block_Mode"))
(defun C:PB () (prompt (strcat "PLOTBOXnPLOT전용 BOX 생성…")) (c:PLOTBOX))
(defun C:PDF () (prompt (strcat "PDFOUTnBOX를 PDF로 내보내기…")) (#PLOT_EXPRESS "PDF_Mode"))
(defun C:PDI () (prompt (strcat "PDFBLOCKOUTn블록을 PDF로 내보내기…")) (#PLOT_EXPRESS "PDFi_Mode"))
;;;
;;;
;;; 도면 Open 시 자동으로 플로터 확인
;;;
;;;
(vl-load-com)
(setq LayObj (vla-get-ActiveLayout (vla-get-ActiveDocument (vlax-get-acad-object))))
(and
(or
(and
(member prt_name (vlax-safearray->list (vlax-variant-value (vla-GetPlotDeviceNames LayObj))))
(member ctb_file (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames LayObj))))
;;(member paper_size (vlax-safearray->list (vlax-variant-value (vla-GetCanonicalMediaNames LayObj))))
)
(prompt "nLISP: 플롯 설정값이 올바르지 않음. PLOTNAME 명령으로 현재 설정값을 확인하십시오.")
)
(or
(/= (vla-get-ConfigName LayObj) prt_name)
(/= (vla-get-StyleSheet LayObj) ctb_file)
(/= (vla-get-CanonicalMediaName LayObj) paper_size)
)
(progn
(vla-put-ConfigName LayObj prt_name)
(vla-put-StyleSheet LayObj ctb_file)
(vla-put-CanonicalMediaName LayObj paper_size)
)
)
;;;
;;;
;;; 도면 Open 시 자동으로 UCS 초기화
;;;
;;;
(if (= (getvar "worlducs") 0) (and (setvar "cmdecho" 0) (vl-cmdf "UCS" "") (setvar "cmdecho" 1) (prompt (strcat "n **UCS Initialized** "))))
;;;
;;;
;;; 플롯박스 만들기
;;;
;;; CLA에 해당하는 layer에 4각 폴리곤을 작성한다.
;;; 해당 layer가 없을 경우 자동으로 작성한다.
;;; 4각 폴리곤을 도면폼 외곽에 씌우면 차후에 일괄출력에 활용가능하다.
;;;
;;;
(defun c:PLOTBOX ( / COL CLA pt)
(if (= (getvar "worlducs") 0) (and (setvar "cmdecho" 0) (vl-cmdf "UCS" "") (setvar "cmdecho" 1)))
(setq CLA #PlotClayer)
(setq COL #PlotColor)
(if (= nil (tblsearch "layer" CLA))
(entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord")
(cons 2 CLA) (cons 6 "CONTINUOUS") (cons 62 2) (cons 70 0)
)
)
)
(and (setq pt (getpoint "첫 번째 구석점 지정: "))
(cadr (setq pt (list pt (getcorner pt "다른 구석점 지정: "))))
(setq pt (list (list (caar pt) (caadr pt)) (list (cadar pt) (cadadr pt))))
)
(if (= (length pt) 2)
(entmake
(vl-remove-if 'not
(list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 8 CLA)
(if COL (cons 62 COL)) (cons 100 "AcDbPolyline") (cons 90 4) (cons 70 1)
(cons 10 (list (apply 'min (car pt)) (apply 'min (cadr pt))))
(cons 10 (list (apply 'max (car pt)) (apply 'min (cadr pt))))
(cons 10 (list (apply 'max (car pt)) (apply 'max (cadr pt))))
(cons 10 (list (apply 'min (car pt)) (apply 'max (cadr pt))))
)
)
)
)(princ)
)
;;;
;;;
;;; 박스 정렬
;;;
;;; 박스를 선택한 순서를 기준으로 x축 방향으로 재정렬한다.
;;;
;;;
(defun PTE:highlight (ss x) (mapcar '(lambda (ent)(redraw ent x)) (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
(defun #SS_Sort_Sub (ss / n buffer ss_lst)
(setq n (cadddr (car (ssnamex ss))))
(foreach x (ssnamex ss)
(if (equal n (cadddr x))
(setq buffer (append buffer (list (cadr x))))
(setq ss_lst (append ss_lst (list (list n buffer))) n (cadddr x) buffer (list (cadr x)))
)
)
(setq ss_lst (vl-remove-if '(lambda (x) (listp (car (cadr x)))) (append ss_lst (list (list n buffer)))))
ss_lst
)
(defun #SS_Sort_Main_Mold (ss / SortSS MinPt MaxPt MinPtB MaxPtB)
(setq SortSS (ssadd))
(foreach x (#SS_Sort_Sub ss)
(if (= (length (cadr x)) 1)
(ssadd (car (cadr x)) SortSS)
(mapcar '(lambda (f) (ssadd f SortSS))
(vl-sort (cadr x)
'(lambda (a b)
(if
(equal
(cadr (progn (vla-GetBoundingBox (vlax-ename->vla-object a) 'MinPt 'MaxPt) (vlax-safearray->list MaxPt)))
(cadr (progn (vla-GetBoundingBox (vlax-ename->vla-object b) 'MinPtB 'MaxPtB) (vlax-safearray->list MaxPtB)))
40.0
)
(< (car (vlax-safearray->list MaxPt)) (car (vlax-safearray->list MaxPtB)))
(> (cadr (vlax-safearray->list MaxPt)) (cadr (vlax-safearray->list MaxPtB)))
)
)
)
)
)
)SortSS
)
(defun List->Safearray (lst) (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length lst)))) lst))
(defun #BoxReaction (ss SF_List / en n MinPt MaxPt ns nb)
(repeat (setq n (sslength ss))
(and
(setq en (ssname ss (setq n (1- n))))
(progn
(command "zoom" "object" en "")
(vla-GetBoundingBox (vlax-ename->vla-object en) 'MinPt 'MaxPt)
(setq MinPt (vlax-safearray->list MinPt) MaxPt (vlax-safearray->list MaxPt))
(if (> 70 (distance MinPt MaxPt))
(ssdel en ss)
(if (setq nb 0 ns (ssget "w" MinPt MaxPt SF_List))
(progn (ssdel en ns) (repeat (sslength ns) (ssdel (ssname ns nb) ss) (setq nb (1+ nb))))
)
)
)
)
)ss
)
;;;
;;; PDF 넘버링
;;;
;;; PDF파일의 넘버를 증가하거나 감소한다.
;;;
;;;
(defun $PDF_NUM_ADD ( / n TXT1 TXT2 FN F1 F2)
(setq n 0
TXT1
(vl-list->string
(reverse
(vl-remove-if '(lambda (f) (= 0 (if (= f 92) (setq n nil) n))) (reverse (vl-string->list #PDF_Filename)))
)
)
TXT2 (substr #PDF_Filename (1+ (strlen TXT1)))
FN (substr TXT2 1 (- (setq n (strlen TXT2)) 4))
)
(if (< 4 n)
(progn
(setq n 0
F2 (reverse (vl-remove-if '(lambda (f) (= nil (if (or (< f 48) (> f 57)) (setq n nil) n))) (reverse (vl-string->list FN))))
F1 (substr FN 1 (- (strlen FN) (length F2)))
)
(setq F2 (vl-string->list (itoa (fix (1+ (atoi (vl-list->string F2)))))))
(if (> 3 (length F2)) (while (> 3 (length F2)) (setq F2 (append (list 48) F2))))
(setq F2 (vl-list->string F2) FN (strcat F1 F2))
)
(setq FN (strcat FN "001″))
)(setq #PDF_Filename (strcat TXT1 FN ".pdf"))#PDF_Filename
)
(defun $PDF_NUM_MINUS ( / n TXT1 TXT2 FN F1 F2)
(setq n 0
TXT1
(vl-list->string
(reverse
(vl-remove-if '(lambda (f) (= 0 (if (= f 92) (setq n nil) n))) (reverse (vl-string->list #PDF_Filename)))
)
)
TXT2 (substr #PDF_Filename (1+ (strlen TXT1)))
FN (substr TXT2 1 (- (setq n (strlen TXT2)) 4))
)
(if (< 4 n)
(progn
(setq n 0
F2 (reverse (vl-remove-if '(lambda (f) (= nil (if (or (< f 48) (> f 57)) (setq n nil) n))) (reverse (vl-string->list FN))))
F1 (substr FN 1 (- (strlen FN) (length F2)))
)
(setq F2 (vl-string->list (itoa (fix (1- (atoi (vl-list->string F2)))))))
(if (> 3 (length F2)) (while (> 3 (length F2)) (setq F2 (append (list 48) F2))))
(setq F2 (vl-list->string F2) FN (strcat F1 F2))
)
(setq FN (strcat FN "001″))
)(setq #PDF_Filename (strcat TXT1 FN ".pdf"))#PDF_Filename
)
;;;
;;;
;;; 박스 출력
;;;
;;; 선택한 4각 폴리곤의 도면을 출력한다.
;;; 다중선택도 가능하다.
;;;
;;;
(defun #PLOT_EXPRESS ($Mode / AcDoc AcLay AcPlot sa ss n MinPt MaxPt LP SF_List CLA)
(if (= (getvar "worlducs") 0) (and (setvar "cmdecho" 0) (vl-cmdf "UCS" "") (setvar "cmdecho" 1)))
(setq CLA #PlotClayer);;전체 자동출력 시 Plot전용 Layer 설정값
(if (or (= $Mode "Block_Mode") (= $Mode "PDFi_Mode"))
(setq SF_List (list (cons 0 "INSERT")))
(setq SF_List
(list
(cons -4 "
(cons -4 "")
(cons -4 "")
(cons -4 "OR>")
)
)
)
(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
AcLay (vla-get-activelayout AcDoc)
AcPlot (vla-get-plot AcDoc)
n 0
)
(if (or (= $Mode "PDF_Mode") (= $Mode "PDFi_Mode"))
(and
(if #PDF_Filename ($PDF_NUM_ADD) (setq #PDF_Filename (strcat (getvar "dwgprefix") "A001.pdf")))
(or
(/= (vla-get-ConfigName AcLay) pdf_prt_name)
(/= (vla-get-StyleSheet AcLay) pdf_ctb_file)
(/= (vla-get-CanonicalMediaName AcLay) pdf_paper_size)
)
(progn
(vla-put-ConfigName AcLay pdf_prt_name)
(vla-put-StyleSheet AcLay pdf_ctb_file)
(vla-put-CanonicalMediaName AcLay pdf_paper_size)
)
)
(and
(or
(/= (vla-get-ConfigName AcLay) prt_name)
(/= (vla-get-StyleSheet AcLay) ctb_file)
(/= (vla-get-CanonicalMediaName AcLay) paper_size)
)
(progn
(vla-put-ConfigName AcLay prt_name)
(vla-put-StyleSheet AcLay ctb_file)
(vla-put-CanonicalMediaName AcLay paper_size)
)
)
)
(and
(if (or (= $Mode "PDF_Mode") (= $Mode "PDFi_Mode"))
(and
(if (setq Buffer (getfiled "PDF 파일 작성" #PDF_Filename "pdf" 1))
(and
(setq #PDF_Filename Buffer)
($PDF_NUM_ADD)
($PDF_NUM_MINUS)
)
)
) T
)
(if (= $Mode "AP_Mode")
(progn
(initget "Yes No")
(if (/= (getkword "n전체 도면을 출력하시겠습니까? [예(Y)/아니오(N)] : ") "No") (setq sa (ssget "X" SF_List)))
)
(setq sa (ssget SF_List))
)
(progn (vla-startundomark AcDoc) (setvar "cmdecho" 0) (command "zoom" "object" ss)(graphscr) (setq ss (#SS_Sort_Main_Mold sa)))
(#BoxReaction ss SF_List)
(/= (sslength ss) 0)
(progn
(vla-startundomark acDoc)
(setvar "backgroundplot" 0)
(vla-put-paperunits AcLay acmillimeters)
(vla-put-standardscale AcLay acvpscaletofit)
(vla-put-centerplot AcLay :vlax-true)
(command "zoom" "object" ss "")(graphscr)
(setvar "cmdecho" 1)
(repeat (sslength ss)
(vla-GetBoundingBox (vlax-ename->vla-object (ssname ss n)) 'MinPt 'MaxPt)
(setq MinPt (vlax-safearray->list MinPt)
MaxPt (vlax-safearray->list MaxPt)
n (1+ n)
)
(if (equal (assoc 70 (entget (ssname ss (1- n)))) (cons 70 0)) (setq MinPt (list (car MinPt) (- (cadr MinPt) (* (- (cadr MaxPt) (cadr MinPt)) 0.00230815)))))
(ssget "W" MinPt MaxPt)
;; (if (or (= $Mode "Plot_Mode") (= $Mode "AP_Mode") (= $Mode "Block_Mode")) (and (command "zoom" MinPt MaxPt)(graphscr)));출력시 화면이동 review
(if (< (- (car MinPt) (car MaxPt)) (- (cadr MinPt) (cadr MaxPt))) (setq LP 1) (setq LP 0))
(setq DCSFix (trans '(0 0) 2 0)
MinPt (List->Safearray (list (- (car MinPt) (car DCSFix)) (- (cadr MinPt) (cadr DCSFix))))
MaxPt (List->Safearray (list (- (car MaxPt) (car DCSFix)) (- (cadr MaxPt) (cadr DCSFix))))
)
(vla-put-PlotRotation AcLay LP)
(vla-SetWindowToPlot AcLay MinPt MaxPt)
(vla-put-PlotType AcLay AcWindow)
(if (= $Mode "RV_Mode")
(vla-DisplayPlotPreview AcPlot acPartialPreview)
(if (or (= $Mode "PDF_Mode") (= $Mode "PDFi_Mode"))
(progn (vla-PlotToFile AcPlot #PDF_Filename) ($PDF_NUM_ADD))
(progn (vla-PlotToDevice AcPlot) (PTE:highlight (ssget "P") 2)) ;;출력객체 숨김 옵션
)
)
)
(sssetfirst nil ss) (ssget)
(setvar "cmdecho" 1)
(vla-endundomark acDoc)
(if (/= $Mode "RV_Mode")
(prompt
(strcat "n" (getvar "dwgprefix")(getvar "dwgname")
(if (or (= $Mode "PDF_Mode") (= $Mode "PDFi_Mode")) "n" "nn출력된 객체를 표현하려면 Regen명령으로 재생성…n")
(rtos n 2 0) " 장이 출력되었습니다."
)
)
(prompt (strcat "n" (rtos n 2 0) "장을 미리보기 완료하였습니다."))
)
(if (and (/= $Mode "RV_Mode") (> n 1))
(alert
(strcat "nt" (getvar "dwgname") "nt" (rtos n 2 0) " 장이 출력되었습니다."
(if (or (= $Mode "PDF_Mode") (= $Mode "PDFi_Mode")) "" "nnt출력된 객체를 표현하려면 Regen명령으로 객체 재생성이 필요합니다.")
)
)
)(vlr-beep-reaction) ;;출력완료 신호음
)
)
(if (or (= $Mode "PDF_Mode") (= $Mode "PDFi_Mode")) ($PDF_NUM_MINUS))
(vla-endundomark AcDoc)
(princ)
)
(defun C:PLOTEXPRESS () (prompt (strcat "PLOTEXPRESSn출력할 도면 선택…")) (#PLOT_EXPRESS "Plot_Mode"))
(defun C:PLOTEXPRESSALL () (prompt (strcat "PLOTEXPRESSALLnPLOT전용 LAYER 전체 출력…")) (#PLOT_EXPRESS "AP_Mode"))
(defun C:DREVIEW () (prompt (strcat "DREVIEWn미리보기 할 도면 선택…")) (#PLOT_EXPRESS "RV_Mode"))
(defun C:PLOTBLOCK () (prompt (strcat "PLOTINSERTBLOCKn출력할 블록 선택…")) (#PLOT_EXPRESS "Block_Mode"))
(defun C:PDFOUT () (prompt (strcat "PDFOUTnPDF로 내보내기…")) (#PLOT_EXPRESS "PDF_Mode"))
(defun C:PDFBLOCKOUT () (prompt (strcat "PDFBLOCKOUTnPDF로 내보내기…")) (#PLOT_EXPRESS "PDFi_Mode"))
관련자료
댓글 0
/ 1 페이지
등록된 댓글이 없습니다.