안녕하세요 질문 드립니다.
pdf 만들어주는 리습인데요..
ADPDF명령어로 2번(A3)선택후 -> 도면 쉬트 선택 -> 엔터 치면 해당폴더에
도면번호와 도면명을 인식해서 PDF파일로 만들어주는 리습입니다.
제가 하고싶은것은 도면명으로만 내보내게 하고싶습니다.
밑에있는 리습은 두가지를 인식해서 파일로 내보내는데
구지 파일명까지는 필요없어서요..
부탁드립니다.
간단히 말하면 ADPDF -> 2 -> 쉬트선택(다중) -> 도면번호로 PDF 저장
요래만 되면 정말 좋겠습니다.
;SELECT PDF만들기 A3용지
(defun c:ADPDF (/ )
(setq plotn “DWG To PDF.pc3”)
(setq plots “A3(PDF)_”)
(command “zoom” “e”)
(setvar “CMDECHO” 0)
(SETQ PDN (Getvar “DWGPREFIX”))
(setq stt “2”)
(setq stt (strcase (getstring “n>>> 도면폼 style (a1 도면 = 1)/(a3 도면 = 2)” )))
(cond
((or (= stt “1”) (= stt “”))
(progn
(setq sht_1 (cons 2 “A1”))
(setq di_x 840.0) ;전체박스
(setq di_y 594.0) ;전체박스
(setq dp_x 100.0) ;번호
(setq dp_y 44.29) ;번호
(setq dk_x 100.0) ;제목
(setq dk_y 52.0) ;제목
(setq ang_1 0.615504) ;전체박스
(setq ang_2 2.72463) ;도면번호
(setq ang_3 2.66207) ;제목
(setq sc_1 2)
)
)
((= stt “2”)
(progn
(setq sht_1 (cons 2 “A3S”))
(setq di_x 420.0)
(setq di_y 297.0)
(setq dp_x 54.96)
(setq dp_y 26.06)
(setq dk_x 54.96)
(setq dk_y 35.19)
(setq ang_1 0.615504)
(setq ang_2 2.72463)
(setq ang_3 2.66207)
(setq sc_1 1)
)
)
)
;;cond
(setq bl1 (ssget (list (cons 0 “INSERT”) sht_1))) ;선택적으로 내보내기
;(setq bl1 (ssget “x” (list (cons 0 “INSERT”) sht_1))) ;전체 내보내기
(setq nb (sslength bl1))
(prompt “n==>출력물은 총 “)
(prin1 nb)
(prompt ” 장 입니다”)
(setq an (getint “n==>출력을 실행하시겠습니까?<enter>”))
(setq num 0)
(repeat nb
(setq ob1 (ssname bl1 num))
(setq obj (entget ob1))
(setq p1 (cdr (assoc 10 obj))) ;박스 좌측하단 좌표값
(setq scbox (cdr (assoc 41 obj)));도면블럭이름
(setq di_l (sqrt (+ (expt (* di_x scbox) 2) (expt (* di_y scbox) 2)))) ;박스
(setq p2 (polar p1 ang_1 di_l))
(command “zoom” “w” p1 p2 )
(command “zoom” “s” “0.8xp” )
(setq di_la (sqrt (+ (expt (* dp_x scbox) 2) (expt (* dp_y scbox) 2)))) ;도면번호
(setq p3 (polar p1 0 (* di_x scbox)))
(setq p4 (polar p3 ang_2 di_la))
(setq di_lb (sqrt (+ (expt (* dk_x scbox) 2) (expt (* dk_y scbox) 2)))) ;제목
(setq p5 (polar p1 0 (* di_x scbox)))
(setq p6 (polar p5 1.5708 (* 80.29 scbox)))
(setq p7 (polar p6 ang_3 di_lb))
(setq bl2 (ssget “w” p4 p3)) ;도면번호
(setq bl3 (ssget “w” p6 p7)) ;제목
(if (null bl3)
(progn
(ALERT “선택할것이 없슴”)
)
(progn
(setq ob2 (ssname bl2 0))
(setq ob3 (ssname bl3 0))
(setq obj1 (entget ob2))
(setq obj2 (entget ob3))
(setq Pva1 (cdr (assoc 1 obj1)))
(setq Pva2 (cdr (assoc 1 obj2)))
(setq plt_f_na1 (strcat pva1 “-” pva2))
(setq plt_f_na2 (strcat pdn plt_f_na1))
(setq scbox (cdr (assoc 41 obj)));도면블럭이름
(setq scbox_a3 (* scbox sc_1))
(setq sc1 (strcat “1=” (rtos scbox_a3)))
(command “plot” “y” “” plotn plots “m” “l” “n” “W” P1 P2 sc1 “c” “y” “CNA-A3.ctb” “y” “w” plt_f_na2 “n” “y”)
)
)
(setq num (1+ num))
);repeat
(princ num)
);defun SELECT PDF만들기 A3용지
“문제는 도면명이 저정도위치에 잡혀있는게 문제입니다…”
관심가져 주셔서 너무 감사해요.. 주말잘보내세요~~
리습자체는 되기는 합니다.
문제는 도면명 위치가 제 도면 쉬트랑 맞지 않아서…(제 쉬트를 수정해서 맞추면되긴하겠지만)
혹시나 심심하실때 한번 증상한번 봐주세요..
정말 다시한번더 감사합니다.
https://blog.naver.com/mikilove79/222627895838
정말정말 감사합니다.
일단 수정하신 리습파일로 로드해봤는데..
선택할것이 없슴 이라고 뜹니다..
문제는 잘은 모르지만 제생각에는 도면번호만 선택해서 파일을 만드는게 아니고
도면번호+도면명 을 인식해서 파일로 내보내려고하는데 도면명이라는 텍스트선택 구간에 텍스트가 없어서
선택할것이 없음이라고뜨는거 같아요…
능력자…