말머리 필수 (말머리 누락시 통보없이 게시 글이 삭제될 수 있습니다.)
※ 회원정보는 최소한 '운영진 공개'로 지정
※ 캐드나 리습 관련 질문일 경우 반드시 캐드 종류와 버전 명기 (ex> 오토캐드2022 / 윈10 64비트)
<캐드 / 윈도우 종류 및 버전 : CAD : 2020 / WINDOW : 11>
※ 질문은 최대한 성의있고 자세하게 (답변자가 되묻게 질문하지 말아주세요.)
우선 항상 좋은 리습 공유해주시는 회원님들에게 감사 인사 먼저 드립니다.
다른 회원이 올려주신 자동출력 리습 유용하게 사용중입니다!
PDF 자동출력시에 우측하단에 (특정위치) 있는 도면번호를 파일명으로 지정 할 수 있을까요..?
(이전에 행복**루 님께서 만들어주신 PPDF, PPDFS 와 동일한 기능입니다)
행복**루 님께서 만들어주신 리습은 도면 스케일을 별도로 지정해야하기 때문에 현재 사용 환경과 맞지않아
제가 보유한 리습에서 수정을 하고싶습니다.
다시 한번 정리하면 아래의 리습중에 PDF로 변환시 파일명을 사용자가 별도로 지정하고싶습니다..
제가 보유한 리습내용입니다!
(defun findplotarea (blocks / en lst ipt ipt&en data xsort xysort)
(while
(setq en (ssname blocks 0))
(setq lst (entget en))
(setq ipt (cdr (assoc 10 lst)))
(setq ipt&en (cons ipt en))
(setq data (cons ipt&en data))
(ssdel en blocks)
)
(setq xsort (vl-sort data (function (lambda (a b) (< (caar a) (caar b))))))
(setq xysort (vl-sort xsort (function (lambda (a b) (> (cadar a) (cadar b))))))
)
(defun c:a4(/ currentos ss plotlist num vlename min max llp urp width height landscape)
(setvar "cmdecho" 0)
(setq currentos (getvar "osmode"))
(setvar "osmode" 0)
(setq ss (ssget '((0 . "insert"))))
(setq plotlist (findplotarea ss))
;(setq num 0)
(repeat (length plotlist)
(setq vlename (vlax-ename->vla-object (cdar plotlist)))
;(setq vlename (vlax-ename->vla-object (cdr (nth num plotlist))))
(vla-getboundingbox vlename 'min 'max)
(setq llp (vlax-safearray->list min))
(setq urp (vlax-safearray->list max))
(setq width (- (car urp) (car llp)))
(setq height (- (cadr urp) (cadr llp)))
(if
(> width height)
(setq landscape "l")
(setq landscape "p")
)
(command "-plot"
"Y" ;상세 구성
"" ;모형
"HP LaserJet Pro MFP M435 PCL 6" ;플로터 이름
"A4)" ;용지 크기
"m" ;용지 단위 밀리미터
landscape ;가로 세로 판단 landscape, portrait
"N" ;위 아래 반전
"W" ;인쇄 영역 - 윈도우 입력
llp ;왼쪽 아래 점 lowleftpoint
urp ;오른쪽 위 점 uprightpoint
"f" ;축적
"c" ;플롯 간격 띄우기 - 중심(c)
"Y" ;플롯 스타일 사용 여부
"(주)**.ctb" ;플롯 스타일
"y" ;선 가중치 적용 여부
"a" ;음영 설정 - 표시되는 대로(A)/와이어프레임(W)/숨김(H)/뷰 스타일(V)/렌더(R)
"n" ;파일로 저장 여부
"n" ;페이지 설정 저장 여부
"y" ;플롯 진행 여부
)
;(setq num (1+ num))
(setq plotlist (cdr plotlist))
)
(setvar "osmode" currentos)
)
(defun c:da4(/ currentos ss plotlist filename pdfnameprefix pdfpath pdfname vlename min max llp urp width height landscape)
(setvar "cmdecho" 0)
(setq currentos (getvar "osmode"))
(setq ss (ssget '((0 . "insert"))))
(setq plotlist (findplotarea ss))
(setq filename (getvar "dwgname"))
(setq pdfnameprefix (substr filename 1 (- (strlen filename) 4)))
(setq pdfpath (strcat (getvar "dwgprefix") pdfnameprefix))
;(setq pdfpath (acet-ui-pickdir "새 폴더를 만들순 없어요" (getvar "dwgprefix") "pdf를 저장할 폴더를 선택하세요"));expresstools 설치해야 사용가능
(repeat (length plotlist)
(setq pdfname (strcat pdfpath "-" (rtos (getvar "cdate") 2 6) ".pdf"))
(setq vlename (vlax-ename->vla-object (cdar plotlist)))
(vla-getboundingbox vlename 'min 'max)
(setq llp (vlax-safearray->list min))
(setq urp (vlax-safearray->list max))
(setq width (- (car urp) (car llp)))
(setq height (- (cadr urp) (cadr llp)))
(if
(> width height)
(setq landscape "l")
(setq landscape "p")
)
(command "-plot"
"Y" ;상세 구성
"" ;모형
"DWG To PDF.pc3" ;플로터 이름
"ISO 전체 페이지 A4(297.00 x 210.00 mm)" ;용지 크기
"m" ;용지 단위 밀리미터
landscape ;가로 세로 판단 landscape, portrait
"N" ;위 아래 반전
"W" ;인쇄 영역 - 윈도우 입력
llp ;왼쪽 아래 점 lowleftpoint
urp ;오른쪽 위 점 uprightpoint
"f" ;축적
"c" ;플롯 간격 띄우기 - 중심(c)
"Y" ;플롯 스타일 사용 여부
"(주)**.ctb" ;플롯 스타일
"y" ;선 가중치 적용 여부
"a" ;음영 설정 - 표시되는 대로(A)/와이어프레임(W)/숨김(H)/뷰 스타일(V)/렌더(R)
pdfname ;pdf파일 저장
"n" ;페이지 설정 저장 여부
"y" ;플롯 진행 여부
)
(command "delay" 1000)
(setq plotlist (cdr plotlist))
)
(setvar "osmode" currentos)
)
(defun c:a3(/ currentos ss plotlist num vlename min max llp urp width height landscape)
(setvar "cmdecho" 0)
(setq currentos (getvar "osmode"))
(setvar "osmode" 0)
(setq ss (ssget '((0 . "insert"))))
(setq plotlist (findplotarea ss))
;(setq num 0)
(repeat (length plotlist)
(setq vlename (vlax-ename->vla-object (cdar plotlist)))
;(setq vlename (vlax-ename->vla-object (cdr (nth num plotlist))))
(vla-getboundingbox vlename 'min 'max)
(setq llp (vlax-safearray->list min))
(setq urp (vlax-safearray->list max))
(setq width (- (car urp) (car llp)))
(setq height (- (cadr urp) (cadr llp)))
(if
(> width height)
(setq landscape "l")
(setq landscape "p")
)
(command "-plot"
"Y" ;상세 구성
"" ;모형
"HP LaserJet Pro MFP M435 PCL 6" ;플로터 이름
"A3)" ;용지 크기
"m" ;용지 단위 밀리미터
landscape ;가로 세로 판단 landscape, portrait
"N" ;위 아래 반전
"W" ;인쇄 영역 - 윈도우 입력
llp ;왼쪽 아래 점 lowleftpoint
urp ;오른쪽 위 점 uprightpoint
"f" ;축적
"c" ;플롯 간격 띄우기 - 중심(c)
"Y" ;플롯 스타일 사용 여부
"(주)**.ctb" ;플롯 스타일
"y" ;선 가중치 적용 여부
"a" ;음영 설정 - 표시되는 대로(A)/와이어프레임(W)/숨김(H)/뷰 스타일(V)/렌더(R)
"n" ;파일로 저장 여부
"n" ;페이지 설정 저장 여부
"y" ;플롯 진행 여부
)
;(setq num (1+ num))
(setq plotlist (cdr plotlist))
)
(setvar "osmode" currentos)
)
(defun c:da3(/ currentos ss plotlist filename pdfnameprefix pdfpath pdfname vlename min max llp urp width height landscape)
(setvar "cmdecho" 0)
(setq currentos (getvar "osmode"))
(setq ss (ssget '((0 . "insert"))))
(setq plotlist (findplotarea ss))
(setq filename (getvar "dwgname"))
(setq pdfnameprefix (substr filename 1 (- (strlen filename) 4)))
(setq pdfpath (strcat (getvar "dwgprefix") pdfnameprefix))
;(setq pdfpath (acet-ui-pickdir "새 폴더를 만들순 없어요" (getvar "dwgprefix") "pdf를 저장할 폴더를 선택하세요"));expresstools 설치해야 사용가능
(repeat (length plotlist)
(setq pdfname (strcat pdfpath "-" (rtos (getvar "cdate") 2 6) ".pdf"))
(setq vlename (vlax-ename->vla-object (cdar plotlist)))
(vla-getboundingbox vlename 'min 'max)
(setq llp (vlax-safearray->list min))
(setq urp (vlax-safearray->list max))
(setq width (- (car urp) (car llp)))
(setq height (- (cadr urp) (cadr llp)))
(if
(> width height)
(setq landscape "l")
(setq landscape "p")
)
(command "-plot"
"Y" ;상세 구성
"" ;모형
"DWG To PDF.pc3" ;플로터 이름
"ISO 전체 페이지 A3(420.00 x 297.00 mm)" ;용지 크기
"m" ;용지 단위 밀리미터
landscape ;가로 세로 판단 landscape, portrait
"N" ;위 아래 반전
"W" ;인쇄 영역 - 윈도우 입력
llp ;왼쪽 아래 점 lowleftpoint
urp ;오른쪽 위 점 uprightpoint
"f" ;축적
"c" ;플롯 간격 띄우기 - 중심(c)
"Y" ;플롯 스타일 사용 여부
"(주)**.ctb" ;플롯 스타일
"y" ;선 가중치 적용 여부
"a" ;음영 설정 - 표시되는 대로(A)/와이어프레임(W)/숨김(H)/뷰 스타일(V)/렌더(R)
pdfname ;pdf파일 저장
"n" ;페이지 설정 저장 여부
"y" ;플롯 진행 여부
)
(command "delay" 1000)
(setq plotlist (cdr plotlist))
)
(setvar "osmode" currentos)
)
------------------------------------------------------------------------------------
감사합니다!
파일 첨부가 안되어 캡쳐 화면 캡처합니다!ㅠㅠ
※ 이외는 자유롭게 글 남겨 주시면 됩니다.