비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 105786
다음
진행 중
Lv.0
등록일: 2015-12-312015-12-31T11:53:57+09:00 2015-12-31T11:53:57+09:00카테고리: AutoCAD & CADian

반복적인 비교구문 구성방법문의

(if(and(>= len 30800)(<= len 30900))
(progn
(setq t1 0.0167)) ; 1/60
(progn
 (if(and(>= len 41100)(<= len 41200)))
 (progn
 (setq t1 0.0125)) ; 1/80
  (progn
  (if(and(>= len 51400)(<= len 51500)))
  (progn
  (setq t1 0.0100)) ; 1/100
   (progn
   (if(and(>= len 61700)(<= len 61800)))
   (progn
   (setq t1 0.0083)) ; 1/120
    (progn
    (if(and(>= len 77100)(<= len 77200)))
    (progn
    (setq t1 0.0067)) ; 1/150
     (progn
     (if(and(>= len 102800)(<= len 102900)))
     (progn
     (setq t1 0.0050)) ; 1/200
      (progn
      (if(and(>= len 154300)(<= len 154400)))
      (progn
      (setq t1 0.0033)) ; 1/300
       (progn
       (if(and(>= len 308600)(<= len 308700)))
       (progn
       (setq t1 0.0017)) ; 1/600
       (progn
       (setq t1 1))
)


초보입니다. 위리습과 같이
도각의 대각선길이len 값을 입력받아서 그값을 가지고
스케일 t1 값을 찾는 리습을 구성하고 있습니다.
위와 같이 구성하니깐 에러가 뜨네요


다른 좋은 방법이 있을까요?

len 값을 분석해서 스케일t1을 정할수 있는 리습구성 방법 좀 알려주세요
감사합니다.

  • 0
  • 5 5 답변
  • 18 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드2007에서 다중지시선 메뉴가 없나요?
    • 플로터 출력시 사용자 정의 용지 크기 내보내기 제한
    • 이벤트 공유
    • 산출리습 문자 크기 및 소수저 2자리에서 올림..문의드립니다.

    5 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. [Deleted User]
      2016-01-14T10:02:47+09:00답변 등록 답변 등록 일시 2016-01-14 10:02 am

      친절한 답변 감사합니다.

      초보라서 제가 모르는게 너무 많았는데..
      말씀해주신걸 100%이해는 못하겟지만, 소중한 의견 여러번 정독해서 공부하겟습니다.

      감사합니다.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. xcsh Lv.0
      2016-01-01T21:00:14+09:00답변 등록 답변 등록 일시 2016-01-01 9:00 pm

      님의 의도를 모르는 이상
         코트의 일부만 올리시면 조언의 범위도 좁아집니다.
      질문부분은 지금 처럼 필요부분만 올리는 것이 좋지만
        전체적인 상황인 도면에서 작업방법에 관한 간략한 설명을  하는 것이 좋습니다.

      님의 if문 처리형태를 보아서는 
          t1값은 축소를 위한 값으로 보이고
          A3 용지인 420*297 (대각선 값 514.4016) 배수값에 1%이하의 범위로 보입니다.

      ;———————————————————————————–
      다른 분들이 말 씀하신 대로 if문대신 cond문을 쓰는 것이 바람직해 보입니다.

      1, 님의 문장 줄을 이동하고  제 방식으로 정리한 것과  비교해 보시죠

             (if (and (>= len 30800) (<= len 30900))  (progn (setq t1 0.0167)) ; 1/60
      (progn (if (and (>= len 41100) (<= len 41200))  (progn (setq t1 0.0125)) ; 1/80
      (progn (if (and (>= len 51400) (<= len 51500))  (progn (setq t1 0.0100)) ; 1/100
      (progn (if (and (>= len 61700) (<= len 61800))  (progn (setq t1 0.0083)) ; 1/120
      (progn (if (and (>= len 77100) (<= len 77200))  (progn (setq t1 0.0067)) ; 1/150
      (progn (if (and (>= len 102800)(<= len 102900)) (progn (setq t1 0.0050)) ; 1/200
      (progn (if (and (>= len 154300)(<= len 154400)) (progn (setq t1 0.0033)) ; 1/300
      (progn (if (and (>= len 308600)(<= len 308700)) (progn (setq t1 0.0017)) ; 1/600
                 (progn (setq t1 1))      ; 1/1
      )) )) )) )) )) )) )) )
      님이 사용한 코드는 괄호를 많이 닫아야 합니다.
      ;———————————————————————————–
      2,  님의 if문은 한줄수행이므로 progn이 필요하지 않은 것 같습니다.
      (if (and (>= len 30800) (<= len 30900))  (setq t1 0.0167) ; 1/60
      (if (and (>= len 41100) (<= len 41200))  (setq t1 0.0125) ; 1/80
      (if (and (>= len 51400) (<= len 51500))  (setq t1 0.0100) ; 1/100
      (if (and (>= len 61700) (<= len 61800))  (setq t1 0.0083) ; 1/120
      (if (and (>= len 77100) (<= len 77200))  (setq t1 0.0067) ; 1/150
      (if (and (>= len 102800)(<= len 102900)) (setq t1 0.0050) ; 1/200
      (if (and (>= len 154300)(<= len 154400)) (setq t1 0.0033) ; 1/300
      (if (and (>= len 308600)(<= len 308700)) (setq t1 0.0017) ; 1/600
                (setq t1 1)      ; 1/1
      ))))))))
      그래도 괄호가 많네요.
      ;———————————————————————————–
      3,  님의 if문은 꼭 연결할 필요는 없으므로 먼저 기본값을 넣고
      (setq t1 1)               ; 1/1
      (if (and (>= len 30800) (<= len 30900))  (setq t1 0.0167)) ; 1/60
      (if (and (>= len 41100) (<= len 41200))  (setq t1 0.0125)) ; 1/80
      (if (and (>= len 51400) (<= len 51500))  (setq t1 0.0100)) ; 1/100
      (if (and (>= len 61700) (<= len 61800))  (setq t1 0.0083)) ; 1/120
      (if (and (>= len 77100) (<= len 77200))  (setq t1 0.0067)) ; 1/150
      (if (and (>= len 102800)(<= len 102900)) (setq t1 0.0050)) ; 1/200
      (if (and (>= len 154300)(<= len 154400)) (setq t1 0.0033)) ; 1/300
      (if (and (>= len 308600)(<= len 308700)) (setq t1 0.0017)) ; 1/600
      한줄씩 처리할 경우 기본값이 앞에 들어가게 됩니다.
      ;———————————————————————————–
      4. 다른분들이 권장하는 cond는
      (cond
       ((and (>= len 30800) (<= len 30900))  (setq t1 0.0167)) ; 1/60
       ((and (>= len 41100) (<= len 41200))  (setq t1 0.0125)) ; 1/80
       ((and (>= len 51400) (<= len 51500))  (setq t1 0.0100)) ; 1/100
       ((and (>= len 61700) (<= len 61800))  (setq t1 0.0083)) ; 1/120
       ((and (>= len 77100) (<= len 77200))  (setq t1 0.0067)) ; 1/150
       ((and (>= len 102800)(<= len 102900)) (setq t1 0.0050)) ; 1/200
       ((and (>= len 154300)(<= len 154400)) (setq t1 0.0033)) ; 1/300
       ((and (>= len 308600)(<= len 308700)) (setq t1 0.0017)) ; 1/600
       (t (setq t1 1))
      )
      if문과 별다르지 않지만 간단 합니다. 마지막 줄에 기본값을 넣어주는 것만 알면 됩니다.
      ;———————————————————————————–
      5. 게다가 님의 판별 범위는 너무 좁아서 끊어져 있습니다.
         대각선 길이가 36008(1/70 축척)이라면 지금은 1/1로 됩니다.
         ( 308700보다 큰값도 1/1로 나오게 됩니다.)
         앞에 범위의 마지막 값이 다음범위의 초기값으로 설정해서 빈곳을 없애야 합니다.
         예외 사항에 대한 처리도 넣으면 좋겟죠.

      (cond
       ((and (<      0 len)(<= len  30800)) (setq t1 0.0167)) ; 1/1
       ((and (<  30800 len)(<= len  30900)) (setq t1 0.0167)) ; 1/60
       ((and (<  30900 len)(<= len  41200)) (setq t1 0.0125)) ; 1/80
       ((and (<  41200 len)(<= len  51500)) (setq t1 0.0100)) ; 1/100
       ((and (<  51500 len)(<= len  61800)) (setq t1 0.0083)) ; 1/120
       ((and (<  61800 len)(<= len  77200)) (setq t1 0.0067)) ; 1/150
       ((and (<  77200 len)(<= len 102900)) (setq t1 0.0050)) ; 1/200
       ((and (< 102900 len)(<= len 154400)) (setq t1 0.0033)) ; 1/300
       ((and (< 154400 len)(<= len 308700)) (setq t1 0.0017)) ; 1/600
       (t (PRINT “축척값이 지정된 범위를 넘었습니다.”) (exit)) ; 실행중단
      )
      ;———————————————————————————–

      참고로 저는 모든 축척에 대해 사용하려고
      여러줄의 if문대신 축척비율 리스트 값을 만들고 작은 값을 차례로 제거하는 방법을 사용하고 있습니다.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2015-12-31T16:41:26+09:00답변 등록 답변 등록 일시 2015-12-31 4:41 pm
      progn 와 if 문의 괄호 닫기가 많이 빠져있네요.
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. [Deleted User]
      2015-12-31T12:25:36+09:00답변 등록 답변 등록 일시 2015-12-31 12:25 pm

      if 문을 많이쓸경우 에러 날수 있습니다.
      7번인가.. 로 알고있는데.. ^_^
      뭐하남님 말씀처럼 cond 문 도움말 보시고 해보세요

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    6. [Deleted User]
      2015-12-31T12:19:30+09:00답변 등록 답변 등록 일시 2015-12-31 12:19 pm

      Cond함수 보세요

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter

    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