비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 99894
다음
진행 중
Lv.0
등록일: 2013-12-202013-12-20T11:02:42+09:00 2013-12-20T11:02:42+09:00카테고리: AutoCAD & CADian

while문..도와 주세요 ^^

안녕하세요…
리습 초보자 입니다
제가 하고자 하는것은 기준점을 기준으로 얼마만큼의 간격이있는지를 알아내는 리습을 해보고 있습니다
결과물은 제대로 나오는듯 한데 몇가지 문제가 있어 고수님들에게 질문 드립니다
맨처음 기준점 입력받고  그다음 부터는 첫번째 Start좌표,  그리고 첫번째 End좌표 이런식으로
횟수에 관계없이 Start좌표 End좌표를 입력받고 마지막에 엔터를 치면 Close까지 찍고 while문을 빠져 나오게 하고 싶은데 Close가 안찍힙니다 T.T  좌표들은 제가 원하는데로 찍히고요
Command상태까지는 나오는데 강제종료되는 느낌 이라고 해야 되나요??
기준점 StandardX, StandardY는 소스에서는 빠져 있습니다..기준점은 받았다고 가정하고 한번 살표봐 주십시요…
while문을 무한루프 돌리는 방법도 좀 어거지 스럽게 처리가 됬습니다…




(setq cnt 0)
(setq rep 1)
(while (> rep 0)


        (prompt “r”)
        (setq cnt(+ cnt 1))
        (princ cnt);
        (prompt “번째 Start좌표를 입력하세요”)
        (setq ptp (getpoint))
        (setq PointX(car ptp)
          PointY(cadr ptp))
        (setq PointX (- PointX StandardX))
        (setq PointY (- PointY StandardY))
        (if (< PointX 0) (setq PointX (* PointX -1)))
        (if (< PointY 0) (setq PointY (* PointY -1))) 
        (setq PointXY (strcat  (rtos PointX 2 3) “” “,” (rtos PointY 2 3)”,”)) 
        (setq re_text (write-line  PointXY   file_open))

        
        (prompt “r”)
        (princ cnt);
        (prompt “번째 End좌표를 입력하세요”)
        (setq ptp1 (getpoint))
        (setq PointX1(car ptp1)
          PointY1(cadr ptp1))
        (setq PointX1 (- PointX1 StandardX))
        (setq PointY1 (- PointY1 StandardY))
        (if (< PointX1  0) (setq PointX1 (* PointX1 -1)))
        (if (< PointY1  0) (setq PointY1 (* PointY1 -1))) 
       (setq PointXY1 (strcat  (rtos PointX1  2 3) “” “,” (rtos PointY1 2 3)”,”)) 
        (setq re_text (write-line  PointXY1   file_open))
 )
(setq re_text (write-line “Close” file_open))   
(close file_open)

  • 0
  • 3 3 답변
  • 30 조회
공유
  • Facebook

    관련 있는 질문들

    • 동적블록 신축에서 길이를 늘릴때 최종 길이를 입력 또는 늘려야 하는 차이만큼의 길이를 입력
    • 캐드 타일 개수 구하기
    • 캐드 선택할 때 마우스 옆에 박스안 초록동그라미, 파란동그라미 표시 어떻게 없애나요?
    • 캐드 용량이 16.8MB 인데 10MB 이하로 줄이고 싶습니다

    3 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. [Deleted User]
      2013-12-23T13:37:31+09:00답변 등록 답변 등록 일시 2013-12-23 1:37 pm

      아~ 한가지더 올리기 싫어서 감추는 소스가 있는건 아니구요 기준점 좌표 받는것이 하나더 있는데
      다 올리면 소스가 길어져서 고수님들이 보시기 불편할까봐 잘 안되는 부분만 올리다 보니 그렇게 됬습니다…
      답변 주셔서 정말 감사합니다~~~~~~

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. [Deleted User]
      2013-12-23T12:27:26+09:00답변 등록 답변 등록 일시 2013-12-23 12:27 pm

      답글 정말 감사합니다 ^^
      알려 주신데로 해볼깨요…
      사실은 cad쪽 일을 하지 않아 cad도 하나도 모릅니다.. 다만  현재 하는일이 MFC프로그램을 
      하는데 머리에서는 이렇게 하면 되겠다는 이해는 되는데 인터넷만을 찾으며 lisp을 하는것이 쉽지가 않아요…  회사에서는 가끔 이런 lisp을 저에게 이야기 하는데 전 참 난감하지만 안할수는 없고…
      그러다 보니 lisp 실력이 전혀 늘지를 않네요…

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. xcsh Lv.0
      2013-12-20T15:38:40+09:00답변 등록 답변 등록 일시 2013-12-20 3:38 pm

      직접코딩을 하신거면 능력은 충분하신데 너무오래 초보라고 하시네요…
      코드를 일부만 올리시는걸 보니 보여주기 싫은 부분도 있는것 같고…
      설명한 내용으로는 의도를 전부 파악하지는 못하겟네요.

      다만 요점이 while문의 처리부분이니 그 부분만 말씀드리죠.
      (setq rep 1)   (while (> rep 0) 로 무한반복을 거셧는데
      무한반복은  (while T 만 사용하면 됩니다.

      지금은 입력확인에 의한 조건반복을 하셔야 합니다.
      횟수를 카운트하면서 Start좌표와 End좌표를 얻는 것이므로
      Start좌표와 End좌표를 조건식에 넣어서 하나라도 입력이 되지 않으면
      빠져나오는 것으로 이해하겠습니다.

      즉            1.    while (and Start좌표 End좌표) 형식이 되어야 합니다.
      그리고    2.   좌표는 연산할때 mapcar를 사용하면 편리하고
                      3.   -를 +로 바꾸는 것은 abs함수입니다.

      코딩으로 바꾸면

        (setq p_base (getpoint “n기준점 좌표:”))  ; 기준점입력

        (setq cnt 1)     ; 초기 카운트 1
        (while (and
        (setq p_start (getpoint (strcat “n” (itoa cnt) “번째 Start좌표:”)))
        (setq p_end   (getpoint (strcat  (itoa cnt) “번째 end좌표:”)))
       );and

       (setq d_start (mapcar ‘abs (mapcar ‘- p_base p_start)))     ; 기준점과 Start의 차이를 -이면 +로
       (setq text (strcat  (rtos (car d_start)  2 3) “” “,” (rtos (cadr d_start)  2 3) “,”))  ; Start  xy거리 글씨로

       (setq d_end (mapcar ‘abs (mapcar ‘- p_base p_start)))     ; 기준점과 end의 차이를 -이면 +로
       (setq text (strcat  (rtos (car d_end)  2 3) “” “,” (rtos (cadr d_end)  2 3) “,”))   ; end xy거리 글씨로

       (setq cnt (1+ cnt))   ; 카운트 증가
        );while

      도움이 되기를 바랍니다.

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

    Sidebar

    질문하기
    공지사항

    • 국산 CAD ‘캐디안 2025’ 출시 사전 예약 진행 2024-09-27

    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