;; c:kp0 추가함. 도각만 선택해서 캐드파일의 폴더에 캐드파일이름.pdf를 출력
;; A3_PDF 를 A3_PDF_KM으로 변경
;;
;;===== PLOTTING PDF by DWG to PDF.pc3 & PHYSICAL DEVICE & by ATTRIB in TITLEBLOCK =====
;;
;; 페이퍼스페이스와 모델스페이스에서 PLOT 스크립트 다름.
;; TILEMODE 확인으로 스크립트 구분
;; PDF를 작성할 때 실행하기 위한 스크립트. 도면번호를 텍스트로 선택
;; Adobe PDF.pc3 대신 DWG to PDF.pc3 사용 (Adobe PDF는 SCRIPT 실행안됨)
;; 선행작업1: 용지크기 A3_PDF_KM 생성
;; 선행작업2: Adobe PDF A3 "ISO A3 (420.00 x 297.00 mm)"여백으로 조정,
;; 인쇄가능영역 A3 여백값 3.1 3.1 3.2 3.1 인쇄가능영역=413.7x290.8 설정
;; 선행작업3: PDF Options에서 칼라 블랙 변경 안됨, 펜세팅 Gray=ON, Color10~255 선가중치=객체선가중치사용
;; 선행작업4: PDF Options에서 "모든 문자를 형상으로 변환" 선택, DWG to PDF 사용시 폰트 깨지는 문제 해결
;; 선행작업5: PDF Options에서 벡터품질 1200dpi, 레스터 품질: 800dpi 설정
;; DWG to PDF(A3).pc3, KM_GRAY.ctb 저장
;; 도면번호 선택 > 도곽선택 > 같은 폴더에 PLOTtstamp_DwgNo.pdf 생성
;; v1.1 kp 스크립트와 함수를 모듈화
;; v1.2 kp1, kp2 피지컬 프린터에 직접 출력하는 스크립트
;; v2.1 kpp 도곽내 어트리뷰트로 저장된 도면번호 추출 기능 추가, PDF 생성
;; v2.2 kp0 dwg-filwname.pdf로 저장
;;
;; v1.1 ****** CHECKING TILEMODE *******
;; v1.1 ****** DWG to PDF(A3),pc3 ******
;; v1.1 ****** KM_GRAY.ctb ******
;; v1.1 ****** A3_PDF: ISO A3 -> 여백조정 ******
;;
;; v1.2 ****** PLOT to PHYSICAL DEVICE ******
;; v2.1 ****** PLOT to PDF by ATTRIB of drawing name ******
;; v2.2 ****** PLOT to PDF of path_dwgfilename.pdf by only one pick
;;
;; Author: KM Lab, Copyright ⓒ 2022 - kmlab.tistory.com
;; Version 1.0 - 2021-10-27
;; Version 1.1 - 2021-12-15; c:KP set pdfname by dwg-no with pick.
;; Version 1.2 - 2021-12-17; c:KP1; c:KP2
;; Version 2.1 - 2022-06-16; c:KPP
;; Version 2.2 - 2023-06-23; c:KP0. add (KM:KPDF0) set pdfname by dwg file name.
;;
;; 검토사항. 2023-06-23
;; 선언변수 통합 필요. pc3, ctb, paper, dev1, dev2 조정중
;; 도면번호 추출 통합(kp+kpp) 검토중; A1 A4 출력 검토중
;
(defun KM:PLOTNAME (/ dn tstmp path plt pltname ) ; return drawingno PdfName
;;get drwaing no.
(princ "\n***SELECT A DRAWING NO***:...\n")
(while (not (setq dn (ssget ":s" '((0 . "*TEXT"))))))
(setq drawingno (cdr (assoc 1 (entget (ssname dn 0)))))
;
;;Set PDFNAME; TimeStamp can be enabled if you want
;(setq tstmp (rtos (getvar "cdate") 2 6)); TimeStamp YYYYMMDD.hhmmss
(setq path (getvar "dwgprefix"))
;(setq plt (strcat path "PLOT" tstmp " "))
;(setq pltname (strcat plt drawingno ".pdf"))
;(setq PdfName pltname)
(setq PdfName (strcat path drawingno ".pdf"))
);defun km:plotname
;;
;;
(defun KM:PLOTNAME_ATT ( drawingbox / dn tstmp path plt pltname ) ; return drawingno PdfName from ATT VALUE of TITLEBLOCK
;;get drwaing no.
(setq tag "도면번호")
;(princ "\n***SELECT A DRAWING NO***:...\n")
(setq obj (vlax-ename->vla-object (ssname drawingbox 0)))
(setq drawingno (vl-some '(lambda ( att ) (if (= tag (strcase (vla-get-tagstring att))) (vla-get-textstring att))) (vlax-invoke obj 'getattributes)))
;
(setq path (getvar "dwgprefix"))
(setq PdfName (strcat path drawingno ".pdf"))
);defun km:plotname
;;
;;
(defun KM:PLOTAREA ( drawingbox / ratio); return P1 P2 ort p_scale
(vl-load-com)
;;;get plot area
(vla-GetBoundingBox (vlax-ename->vla-object (ssname drawingbox 0)) 'MinPt 'MaxPt)
(setq P1 (vlax-safearray->list MinPt)); Points of Lower Left of Selected Entity
(setq P2 (vlax-safearray->list MaxPt)); Points of Upper Right of Selected Entity
;set Landscape/Potrait. 용지 대각선 각도가 45도 이하면 가로, 45도 넘으면 세로로 설정.
(if (> 0.25 (/ (angle P1 P2) pi)) (setq ort "LANDSCAPE") (setq ort "PORTRAIT"))
;set plot scale. 90 미만 비율은 12.3->12, 45.8->45 조정. 93.85->90, 245.2->240으로 자동조정.
(setq ratio (/ (distance P1 P2) 514.4))
(cond
((<= 1000 ratio) (setq plot_ratio (* 100 (atoi (rtos (/ ratio 100) 2 0)))))
((and (<= 100 ratio) (< ratio 1000)) (setq plot_ratio (* 10 (atoi (rtos (/ ratio 10) 2 0)))))
((> 100 ratio) (setq plot_ratio (atoi (rtos ratio 2 0))))
);cond
;set p_scale "1=plot_ratio"
(setq p_scale (strcat "1=" (itoa plot_ratio)))
(princ)
);defun km:plotarea
;
;
(defun KM:PLOTSETTING ();/ drawingno dn tstmp path plt pltname)
;;plot setting
(setq DetailedPlotConfig "YES")
(setq LayoutName "")
(setq OutputDevice "DWG To PDF(A3).pc3"); Set PDF Options: Convert all text geometry
;(setq PaperSize "ISO A3 (420.00 x 297.00 mm)"); Set A3_PDF margin = 3.1 3.1 3.2 3.1
(setq PaperSize "A3_PDF_KM"); "ISO A3 (420.00 x 297.00 mm)" saveto "A3_PDF"
(setq PaperUnits "MILLIMETERS")
(setq Orientation ort)
(setq UpsideDown "NO")
(setq PlotArea "WINDOW")
(setq PlotScale p_scale)
(setq PlotOffset "CENTER")
(setq PlotStyle "YES")
(setq PlotTable "SAMOO-C.ctb"); Set Gray=ON, Color 10~255 Lines Weights=USE OBJECTS
(setq LineWeights "YES")
;
(setq LineweightScale "NO");paperspace
(setq PaperspaceFirst "NO");paperspace
(setq HidePaperspaceObject "NO");paperspace
;
(setq ShadePlot "A");As displayed ;modelspace
;
(setq ChangePagesetup "NO")
(setq ProceedPlot "YES")
;
(setq ProccedPlotPREVIEW "NO")
(setq PREVIEW "PREVIOUS PLOT")
(princ)
);defun KM:PLOTSETTING
;;
(defun KM:PLOTLOAD ();Plot Loading
;;
(command "._plot"
DetailedPlotConfig
LayoutName
OutputDevice
PaperSize
PaperUnits
Orientation
UpsideDown
PlotArea P1 P2
PlotScale
PlotOffset
PlotStyle
PlotTable
LineWeights
)
)
;;
(defun KM:PLOTPROCEED ();Plot Proceeding
;;
(command
PdfName
ChangePagesetup
ProceedPlot
)
)
;;
(defun KM:PLOTp ();Plot Proceeding on Paperspace
;;
(command
LineweightScale
PaperspaceFirst
HidePaperspaceObject
);command plot
);defun KM:PLOT_paperspace
;;
(defun KM:PLOTm ();Plot Proceeding on Modelspace
;;
(command
ShadePlot
);command plot
);defun KM:PLOT_modelspace
;
(defun KM:INIT ()
(setvar "cmdecho" 0)
(setvar "filedia" 0)
(setvar "cmddia" 0)
(setvar "layereval" 0)
(setvar "layerevalctl" 0)
(princ)
);defun init
;
(defun KM:RESET ()
(setvar "cmdecho" 1)
(setvar "filedia" 1)
(setvar "cmddia" 1)
(setvar "layereval" 1)
(setvar "layerevalctl" 1)
(princ)
); defun reset
;;
;;
;;===================PLOT PDF with dwg-no=======================
;;
(defun KM:KPDF (); KM Plot Script PDF
;;
;;set Init
(KM:INIT)
(KM:PLOTNAME)
(princ "\n\n***SELECT A DRAWING TITLEBLOCK***:...\n")
(while (not (setq drawingbox (ssget ":s" '((0 . "INSERT"))))))
(KM:PLOTAREA drawingbox)
(KM:PLOTSETTING)
;
(if (= 0 (getvar "tilemode")); CHECKING TILEMODE
(progn (KM:PLOTLOAD) (KM:PLOTp) (KM:PLOTPROCEED))
(progn (KM:PLOTLOAD) (KM:PLOTm) (KM:PLOTPROCEED))
);if
;; Reset
(KM:RESET)
;
;;success plot
(prompt "\n...SUCCESS PLOT...\n")
(princ (strcat PdfName " " p_scale))
(princ)
;(command "close")
);defun KP PDF
;;
;;
;;===================PLOT PDF with dwg filename=======================
;;
(defun KM:KPDF0 (); KM Plot Script PDF
;;
;;set Init
(KM:INIT)
;(KM:PLOTNAME)with dwg filename ".dwg" -> ".pdf"
(setq PdfName (vl-string-subst ".pdf" ".dwg" (getvar "dwgname")))
(setq PdfName (strcat (getvar "dwgprefix") PdfName))
(princ "\n\n***SELECT A DRAWING TITLEBLOCK***:...\n")
(while (not (setq drawingbox (ssget ":s" '((0 . "INSERT"))))))
(KM:PLOTAREA drawingbox)
(KM:PLOTSETTING)
;
(if (= 0 (getvar "tilemode")); CHECKING TILEMODE
(progn (KM:PLOTLOAD) (KM:PLOTp) (KM:PLOTPROCEED))
(progn (KM:PLOTLOAD) (KM:PLOTm) (KM:PLOTPROCEED))
);if
;; Reset
(KM:RESET)
;
;;success plot
(prompt "\n...SUCCESS PLOT...\n")
(princ (strcat PdfName " " p_scale))
(princ)
;(command "close")
);defun KP PDF0 printing to path_dwg_filename.pdf
;;
;;
;;
;;===================PLOT PDF from ATTRIBUTE VALUE=======================
;;
(defun KM:KPDFATTRIB (); KM Plot Script PDF
;;
;;set Init
(KM:INIT)
;(KM:PLOTNAME_ATTRIB)
(princ "\n\n***SELECT A DRAWING TITLEBLOCK***:...\n")
(while (not (setq drawingbox (ssget ":s" '((0 . "INSERT"))))))
(KM:PLOTNAME_ATT drawingbox)
(KM:PLOTAREA drawingbox)
(KM:PLOTSETTING)
;
(if (= 0 (getvar "tilemode")); CHECKING TILEMODE
(progn (KM:PLOTLOAD) (KM:PLOTp) (KM:PLOTPROCEED))
(progn (KM:PLOTLOAD) (KM:PLOTm) (KM:PLOTPROCEED))
);if
;; Reset
(KM:RESET)
;
;;success plot
(prompt "\n...SUCCESS PLOT...\n")
(princ (strcat PdfName " " p_scale))
(princ)
;(command "close")
);defun KP PDFB
;;
;;===================PLOT to PHYSICAL DEVICE=======================
;;
(defun KM:KPP (_PPDEVICE); KM Plot Script plots to PHYSICAL DEVICE
;;
;;set Init
(KM:INIT)
(princ "\n\n***SELECT A DRAWING TITLEBLOCKS***:...\n")
(while (not (setq drawingbox (ssget ":s" '((0 . "INSERT"))))))
;;
(KM:PLOTAREA drawingbox)
(KM:PLOTSETTING)
;;
(setq PdfName "NO")
;;(setq PaperSize "A3")
;;
;(cond
; ((= _PPDEVICE 1) (setq OutputDevice "HP LaserJet Pro M706n UPD PCL 611"))
; ((= _PPDEVICE 2) (setq OutputDevice "HP LaserJet Pro M706n UPD PCL 6"))
;)
(cond
((= _PPDEVICE 1) (setq OutputDevice "SAMOO Cloud Print" PaperSize "A3"))
((= _PPDEVICE 2) (setq OutputDevice "SAMOO Cloud Print" PaperSize "A4"))
)
;;
(if (= 0 (getvar "tilemode")); CHECKING TILEMODE
(progn (KM:PLOTLOAD) (KM:PLOTp) (KM:PLOTPROCEED))
(progn (KM:PLOTLOAD) (KM:PLOTm) (KM:PLOTPROCEED))
);if
;; Reset
(KM:RESET)
;
;;success plot
(prompt (strcat "\n...SUCCESS PLOT " OutputDevice "... " p_scale "\n"))
;(princ (strcat PdfName " " p_scale))
(princ)
;(command "close")
);defun KPP plots to PHYSICAL DEVICE
;;
;;
(defun c:KP ()
(KM:KPDF)
)
(defun c:KP0 ()
(KM:KPDF0)
)
(defun c:KP1 ()
(KM:KPP 1)
)
(defun c:KP2 ()
(KM:KPP 2)
)
(defun c:KPP ()
(KM:KPDFATTRIB)
)
'autocad' 카테고리의 다른 글
선택한 시트만 하나의 도면으로 분리하여 저장하기 (0) | 2023.06.29 |
---|---|
KMPLOT.lsp_20230626 (0) | 2023.06.26 |
Update Dimstyle (0) | 2023.06.20 |
Automatic ExportLayout (0) | 2023.05.09 |
Auto Run Script (3) | 2023.05.09 |