비밀번호를 잊으셨나요?

비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.

계정이 있나요? 로그인

You must login to ask a question.

비밀번호를 잊으셨나요?

아직 계정이 없으신가요? 회원가입 하기

해당 질문을 신고하는 이유를 간단히 입력해주세요.

해당 답변을 신고하는 이유를 간단히 입력해주세요.

해당 유저를 신고하는 이유를 간단히 입력해주세요.

로그인회원가입

고캐드 – 캐드(CAD) 정보의 중심

고캐드 – 캐드(CAD) 정보의 중심 Logo 고캐드 – 캐드(CAD) 정보의 중심 Logo

고캐드 – 캐드(CAD) 정보의 중심 Navigation

  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
검색
질문하기

Mobile menu

닫기
질문하기
  • 홈
  • 카테고리
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 투표
  • 커뮤니티 그룹
  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
홈/ 질문/Q 22806
다음
Lv.0
등록일: 2005-01-202005-01-20T15:45:27+09:00 2005-01-20T15:45:27+09:00카테고리: AutoCAD & CADian

도곽자동 출력 리습을 작성중인데요 한번 봐주세요….

아래2999번에 한번 올려서 도움을 받은건데요..
실은 VBCAD.CO,KR에 황재혁님이 올린 도곽자동출력리습인데요.
다정다감의 이석종님이 VB와 연계해서 돌아가게 작성한걸 아마도 황재혁님이 리습으로만 실행되게 수정하신것 같더라구요…
그런데 플로터나 플롯스타일 용지크기등을 설정하려면 리습을 매번 수정해야 하는 번거로움이 있더라구요…
그래서 생각한게 DCL로 구성요서들을 선택한 다음에 자동플롯되게 하면 되겠다 싶어서 손대게 된거거든요?..
사설이 좀 길었네요… 어쨋건 그래서 DCL과 연동 리습은 작성을 했는데 도곽자동출력리습과는 연동이 되질 않는거 있죠…
제 실력으론 도저히 완성이 되질 않네요…고수님들의 관심 부탁드립니다.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DCL부분입니다.
//ALLPLOT.dcl
allplot : dialog
{ label=”ALLPLOT SETTING”;
:boxed_radio_column
{ label=”◆ 자동도면 출력 프로그램”;
spacer;
:popup_list {
label=”● Printer Setup:”;
key=”plotter”;
value=”0″;
edit_width=35;
}
:popup_list {
label=”● paper size:”;
key=”paper”;
value=”0″;
edit_width=35;
}
:popup_list {
label=”● Plot Style:”;
key=”style”;
value=”0″;
edit_width=35;
}
}
spacer;
ok_cancel;
spacer;
:text {label=”2004.Copylight (c) dhan BY Leehoyoung”;
}
}
;;;;;;;;;;;;;;;;;;;;;;;;;;DCL과 연관되는 리습입니다.
;;;;;allplot.lsp
(defun c:allplot_test ( / plotter_list paper_list plotstyle_list )
(setq dcl_id (load_dialog “allplot_test”))
(new_dialog “allplot” dcl_id)
(setq plotter_list
(list “HP LaserJet 5100.pc3”
“HP LaserJet 5000.pc3”
“HP DesignJet 450C.pc3”
“hp deskjet 5600.pc3”
);list end
);setq end
(setq paper_list (list “A4” “A3” “A2” “A1” “A0”))
(setq plotstyle_list
(list “단건축 레이져.ctb”
“단건축 플로터(흑백).ctb”
“단건축 플로터(칼라).ctb”
“단건축 잉크젯(A4).ctb”
“기계(맥엔드ENG).ctb”
“전기(원ENC).ctb”
“아키데이타.ctb”
)
)
(action_tile “plotter” “(setq plotter $value)”)
(start_list “plotter”)
(mapcar ‘add_list plotter_list)
(end_list)
(if plotter (set_tile “plotter” plotter))

(action_tile “paper” “(setq paper $value)”)
(start_list “paper”)
(mapcar ‘add_list paper_list)
(end_list)
(if paper (set_tile “paper” paper))

(action_tile “style” “(setq style $value)”)
(start_list “style”)
(mapcar ‘add_list plotstyle_list)
(end_list)
(if style (set_tile “style” style))
(start_dialog)
(done_dialog)
(unload_dialog dcl_id)
(princ)
(if plotter
(progn
(if (= “0” plotter)(setq PLOTTER_TYPE “HP LaserJet 5100 Series PCL 6.pc3”))
(if (= “1” plotter)(setq PLOTTER_TYPE “HP LaserJet 5000 Series PCL 6.pc3”))
(if (= “2” plotter)(setq PLOTTER_TYPE “HP DesignJet 450C (D_A1) by HP.pc3”))
(if (= “3” plotter)(setq PLOTTER_TYPE “hp deskjet 5600 series.pc3”))

)
)
(if paper
(progn
(if (= “0” paper)(setq PAPER_SIZE “a4”))
(if (= “1” paper)(setq PAPER_SIZE “a3”))
(if (= “2” paper)(setq PAPER_SIZE “a2”))
(if (= “3” paper)(setq PAPER_SIZE “a1”))
(if (= “4” paper)(setq PAPER_SIZE “a0”))
)
)
(if paper_size
(progn
(if (= paper_size “a4”) (progn (setq X_size 297.0)(setq y_size 210.0)) paper_size)
(if (= paper_size “a3”) (progn (setq X_size 420.0)(setq y_size 297.0)) paper_size)
(if (= paper_size “a2”) (progn (setq X_size 594.0)(setq y_size 420.0)) paper_size)
(if (= paper_size “a1”) (progn (setq X_size 840.0)(setq y_size 594.0)) paper_size)
(if (= paper_size “a0”) (progn (setq X_size 1188.0)(setq y_size 840.0)) paper_size)
)
)

(if style
(progn
(if (= “0” style)(setq PLOT_STYLE “단건축 레이져.ctb”))
(if (= “1” style)(setq PLOT_STYLE “단건축 플로터(흑백).ctb”))
(if (= “2” style)(setq PLOT_STYLE “단건축 플로터(칼라).ctb”))
(if (= “3” style)(setq PLOT_STYLE “단건축 잉크젯(a4).ctb”))
(if (= “4” style)(setq PLOT_STYLE “기계(맥엔드ENG).ctb”))
(if (= “5” style)(setq PLOT_STYLE “전기(원ENC).ctb”))
(if (= “6” style)(setq PLOT_STYLE “아키데이타.ctb”))
)
)
(if (= ALLPLOT_test 1)
(progn
(allplotLEE_TEST)
)
)
(PRINC)
) ;of defun
;;;;;;;;;;;;;;;;;;이부분까지가 제가 작성한 리습이구요…
;;;;;;;;;;;;;;;;;;이부분부터는 황재혁님이 작성한 부분에 제가 변수를 설정한 겁니다.
;; Program : ALLPLOT SSWPLOT By hjh 2004/07/08
(defun ALLPLOTSET()
(list “form*” ;;————– 0 –도곽블럭 이름
95 ;;————– 1 –Y 칫수 그룹 화정도 +-95*SCL 이내일경우 같은행으로 정열함
PLOTTER_type;;——————- 2 –프린터이름 ” ;; “HP DesignJet 450C (D_A1) by HP.pc3”
PAPER_SIZE;;—————- 3 –printer_papersize “A4” “A3” “A2” “A1” “A0”
PLOT_STYLE ;;————— 4 –style_name “단건축플로터.CTB” “단건축레이져.CTB” “단건축잉크젯.CTB” “
4 ;;————— 5 –x gap
6 ;;————— 6 –y gap
“c”;;———————– 7 –가로도면 offset A4 A3 A2 A1 A0
X_SIZE ;;——————– 8 –가로도면 border의 폭bdr_B 297 420 594 840 1188
Y_SIZE ;;——————– 9 –가로도면 border의 높이 bdr_H 210 297 420 594 840
“Landscape”;;————– 10 –가로도면 orient
“n”;;———————- 11 –가로도면 updown
“c”;;———————- 12 –세로도면 offset A4 A3 A2 A1 A0
Y_SIZE ;;——————- 13 –세로도면 border의 폭bdr_B 210 297 420 594 840
X_SIZE;;——————- 14 –세로도면 border의 높이 bdr_H 297 420 594 840 1188
“portrait”;;————— 15 –세로도면 orient
“y”;;———————- 16 –세로도면 updown
)
)

;; 도면내에 있는 모든 도곽블럭중 0도 와 270도 만 출력
(defun ALLPLOTLEE_TEST(/ bn f_list ss_lst AP_SET )
(SETQ AP_SET (ALLPLOTSET))
(setq bn (NTH 0 AP_SET) );*********************************************************************도곽블럭 이름
(setq f_list (list (cons 0 “INSERT”) (cons 2 bn))) ;filter list ((0 . “INSERT”) (2 . BN))
(setq ss_lst (ssget “X” f_list)) ; BN 만 선택
(if (not(null ss_lst))
(ALLPLOT ss_lst bn )
(alert “>>>이도면에는 도곽블럭( FORM* )이 없음 프로그램을종료합니다!<<<")
)
)
;; 도면내에 있는 모든 도곽블럭중 0도 와 270도 만 출력

;; 선택된 모든 도곽도면블럭중 0도 와 270도 만 출력
(defun SSWPLOT(/ bn f_list ss_lst AP_SET )
(SETQ AP_SET (ALLPLOTSET))
(setq bn (NTH 0 AP_SET) );***********************************************************************도곽블럭 이름
(setq f_list (list (cons 0 “INSERT”) (cons 2 bn))) ;; filter list ((0 . “INSERT”) (2 . BN))
(setq ss_lst (ssget f_list)) ;;———————— BN 블럭 만 선택
(if (not(null ss_lst))
(ALLPLOT ss_lst bn )
(alert “>>>도곽블럭( FORM* )이 선택되지 않음 프로그램을종료합니다!<<<")
)
);; 선택된 모든 도곽도면블럭중 0도 와 270도 만 출력

;;****************************************************************************
;; 주함수시작
;;****************************************************************************
(defun ALLPLOT ( ss_lst bn / ds ss_lst ss_num index bdr_ent ipnt i_scale
up_left low_right offset orient updown oldv temp AP_SET )
(SETQ AP_SET (ALLPLOTSET))
;;******************************************************************************************************
;; 내부함수 시작 vl_SORT_XY 황재혁 04/07/08 주어진 entity list를 x,y좌표를 이용하여 sort한다.
;; sort방법은 1. e1 y값 이 e2 y값 보다 scl*95(* (cdr (assoc 41 (entget e1))) 95 )이상 크면 ok(통과)
;; 2. e1 y값 이 e2 y값 보다 scl*95(* (cdr (assoc 41 (entget e1))) 95 )이상 작으면 nil(정열)
;; 3. y값이 비슷할경우 X 값 으로 정열함 .
;; 넘어오는 값 entity list 넘어가는 값 sort된 entity list
(defun vl_SORT_XY (ss_lst / ssn_lst count )
(setq ssn_lst nil)
(setq count 0)
(repeat ss_num (setq ssn_lst (append ssn_lst (list (ssname ss_lst count)))) (setq count (1+ count)))
(vl-sort ssn_lst
(function
(lambda (e1 e2)
(cond
((> (- (nth 2 (assoc 10 (entget e1)))(*(cdr(assoc 41 (entget e1)))(NTH 1 AP_SET) ) )
( nth 2 (assoc 10 (entget e2) ) ) ) t )
((< (+ (nth 2 (assoc 10 (entget e1)))(*(cdr(assoc 41 (entget e1)))(NTH 1 AP_SET) ) )
( nth 2 (assoc 10 (entget e2) ) ) ) nil)
((< (nth 1 (assoc 10 (entget e1))) (nth 1 (assoc 10 (entget e2)))) t )
((> (nth 1 (assoc 10 (entget e1))) (nth 1 (assoc 10 (entget e2)))) nil)
(t t)
);; END cond
);; END lambda
);; END function
);;END vl-sort
);;END DEFUN 내부함수 끝 vl_SORT_XY
(defun rtd (rad /) (/ (* 180.0 rad) pi) ) ;———-내부함수 rad 을 deg 로 변경——
;;***************************************************************************************************

(setq ss_num (sslength ss_lst)) ;선택된 entity갯수
(setq xg (NTH 5 AP_SET)) ;;x gap
(setq yg (NTH 6 AP_SET)) ;;y gap
;(setq fitscl “F”)
(setq ssn_lst (vl_sort_xy ss_lst));;—— 선택된 border를 x,y방향으로 sort
;;——— 첫번째 border부터 출력하기
(setq index 0) ;첫번째 border부터
(setq oldv (list ;;—————–20050707추가함
(getvar “osmode”) ;;20050707추가함
(getvar “snapmode”) ;;20050707추가함
(getvar “CMDDIA”) ;;20050707추가함
(getvar “CMDecho”) ;;20050707추가함
(getvar “ltscale”) ;;20050707추가함
) ;;——————-20050707추가함
) ;;————————–20050707추가함
(setvar “osmode” 0 ) ;;20050707추가함
(setvar “snapmode” 0 ) ;;20050707추가함
(setvar “CMDDIA” 0 ) ;; 대화상자 억제
(setvar “CMDecho” 0 ) ;;command echo OFF
(repeat ss_num ;선택된 border 갯수만큼 반복 repeat
(setq bdr_ent (entget (nth index ssn_lst))) ;;——–border entity정보
(setq ipnt (cdr (assoc 10 bdr_ent))) ;;—————border의 insert point
(setq i_scale (cdr (assoc 41 bdr_ent))) ;;————border의 scale factor
(setq i_scale (* 100 i_scale))
(setq fitscl (strcat “1=” (rtos i_scale) ))
(setq i_angle (fix (rtd (cdr (assoc 50 bdr_ent))))) ;;border의 삽입회전각도 20040524일주가함
(if (= 0 i_angle) ;—————가로도면일경우
(setq offset (NTH 7 AP_SET) ;; “0.0,0.0”
bdr_B (NTH 8 AP_SET) ;;border의 폭 420.0
bdr_H (NTH 9 AP_SET) ;;border의 높이 297.0
orient (NTH 10 AP_SET) ;; “Landscape”
updown (NTH 11 AP_SET) ;; “n”
) ;_ 끝 setq
) ;_ 끝 if
(if (= 270 i_angle) ;세로도면일경우
(setq offset (NTH 12 AP_SET) ;; “0.0,0.0”
bdr_B (NTH 13 AP_SET) ;;border의 폭 297.0
bdr_H (NTH 14 AP_SET) ;;border의 높이 -420.0
orient (NTH 15 AP_SET) ;; “portrait”
updown (NTH 16 AP_SET) ;; “y”
) ;_ 끝 setq
) ;_ 끝 if;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;border의 삽입회전각도 20040524일주가함
(if (or (= 0 i_angle) (= 270 i_angle))
(progn
(if (= 0 i_angle)
(progn ;;가로도면 일 경우
(setq low_left(list(+(car ipnt)(* xg i_scale))(+ (cadr ipnt)(* yg i_scale))));;border의 좌측 아래
(setq up_right(list(+(car low_left)(* bdr_B i_scale))(+ (cadr low_left)(* bdr_H i_scale))));; 우측 위
;(command “plotstamp” “O” “LOC” “BL” “V” “N” (LIST 4.5 4.5) “A” “” )
;; 플롯스탬프 켜기 위치 방향

)
(progn ;;세로도면 일 경우
(setq low_left(list(+(car ipnt)(* yg i_scale))(- (cadr ipnt)(* xg i_scale))));;border의 좌측 위
(setq up_right(list(+(car low_left)(* bdr_B i_scale))(+ (cadr low_left)(* bdr_H i_scale))));; 우측 아래
; (command “plotstamp” “O” “LOC” “TL” “H” “N” (LIST 4.5 4.5) “A” “” )
;; 플롯스탬프 켜기 위치 방향
)
)

(if (/= (/ (getvar “ltscale”) 15) i_scale) ;;추가함 HJH
(setvar “ltscale” (* i_scale 15)) ;;추가함 HJH
) ;;추가함 HJH

(command “PLOT” ;; 2004 2005 용 색상종속 플롯임
“y” ;;PLOT 상세한 플롯 구성? [예(Y)/아니오(N)] <아니오>: y
“” ;;배치 이름 입력 또는 [?] <모형>: “” (현재설정사용)
(NTH 2 AP_SET) ;;출력 장치 이름 입력 또는 [?] 입력: HP LaserJet 4V (KR).pc3
(NTH 3 AP_SET) ;;용지 크기 입력 또는 [?] : A3
“m” ;;용지 단위 입력 [인치(I)/밀리미터(M)] <밀리미터>: m
orient ;;용지 방향 입력 [세로(P)/가로(L)] <가로(L)>: Landscape
updown ;;위 아래를 뒤집어 플롯? [예(Y)/아니오(N)] <아니오>: n
“w” ;;플롯 영역 입력 [화면표시(D)/범위(E)/한계(L)/뷰(V)/윈도우(W)] <윈도우>: w
low_left ;;윈도우 왼쪽 아래 좌표를 입력하십시오 <3.0 3.0> : (0.0 0.0)
up_right ;;윈도우 오른쪽 위 좌표를 입력하십시오 : (420.0 297.0)
fitscl ;;플롯 축척 입력 (출력 밀리미터=도면 단위) or [맞춤(F)] <맞춤>: F
“c” ;;플롯 간격띄우기 입력(x,y) 또는 [중심(C)] <0.00,0.00>: 0.0,0.0
“Y” ;;플롯 스타일로 플롯? [예(Y)/아니오(N)] <예>: Y
(NTH 4 AP_SET) ;;플롯 스타일 테이블 이름 입력 또는 [?] (없으면 . 입력) : hp4va3.ctb
“Y” ;;선가중치로 플롯? [예(Y)/아니오(N)] <예>: Y
“n” ;;은선 플롯 설정 입력 [표시(A)/와이어프레임(W)/숨김(H)/렌더(R)] <숨김>: H
“N” ;;플롯 출력을 파일로 하시겠습니까? [예(Y)/아니오(N)] : N
“N” ;;페이지 설정에 대한 변경 사항 저장 [예(Y)/아니오(N)]? N
“y” ;;플롯을 진행합니까 [예(Y)/아니오(N)] : y
) ;_ 끝 command 유효 플롯 영역: 401.44 폭 x 286.03 높이

) ;_ 끝 progn
) ;_ 끝 if
(setq index (1+ index)) ;다음 border로
) ;of repeat repeat
(setvar “osmode” (nth 0 oldv));;20050707추가함
(setvar “snapmode” (nth 1 oldv));;20050707추가함
(setvar “CMDDIA” (nth 2 oldv));command echo ON
(setvar “CMDecho” (nth 3 oldv));;20050707추가함
(setvar “ltscale” (nth 4 oldv));;20050707추가함
(command “plotstamp” “OFF” “” );; 플롯스탬프 끄기

(princ)
) ;of defun

  • 0
  • 79 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드에서 복사해서 방향 옮길때 다른방향으로 가요.
    • 캐드에서 복사해서 방향 옮길때 다른방향으로 가요.
    • FAQ 51을 참조 하라는데 FAQ가 어디에 있나요??
    • jsk.shx 파일 받을 부탁드립니다 ㅠ

    Sidebar

    질문하기
    공지사항

    • AI CAD의 미래! 캐디안 2025 1+1 프로모션 안내 2025-05-14

    Adv 234x60

    aalan

    Adv 234x60

    aalan

    Adv 120x600

    aalan

    Explore

    • 홈
    • 카테고리
      • AutoCAD & CADian
      • Inventor & Solidworks
      • Revit & ArchiCAD
      • 자유질문
      • 기타
    • 투표
    • 커뮤니티 그룹
    aalan

    Footer

    Support

    • 회사 및 서비스 소개
    • 자주 묻는 질문
    • 문의하기

    Guide

    • 제휴/협업 안내
    • 광고 서비스 안내

    Policy

    • 서비스 이용약관
    • 개인정보 처리방침
    • 광고성 정보 수신 동의

    Contents

    • 고밍스토리
    • 리습 시리즈

    정소프트 | 사업자등록번호 : 677-40-00198 | 대표 : 정은숙 | 이메일 : gocad.manager@gmail.com
    주소 : 서울특별시 강서구 양천로 400-12, 6층 614,615,617호(등촌동, 더리브골드타워)
    Copyright. 2012-2024 GOCAD All rights reserved