프로그램
캐드 분류

리습에서 점프문 같은 명령어가 있나요?

컨텐츠 정보

  • 216 조회
  • 4 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

리습라인이 여러줄 있을때

(cond 같은 조건으로 결과값이 원하지 않을경우
다시 위쪽라인으로 가서 실행하고 싶습니다..
혹시 어셈의 점프문 같은 명령어가 존재할까요??

while 을 사용하면 유사 효과는 볼수 있을거같은데
입력값이 많을경우에는 너무많은 반복문 겹치기가 될거같아서요..


아, 위 방법으로 구현하려는건
입력값이 여러개(약 5~8개)인데 잘못입력한게 있어서
Undo 처럼 되돌아가서 재입력하는 것을 구현하려 합니다.

좋은 방법이나 약간의 힌트라도 주신다면 찾아서 해보겠습니다.



while 을 이용했을경우 예시…
(setq pt1 nil)
(while (= pt1 nil)
  (setq hgO1 (getstring "입력1:"))
  (initget 129)
  (setq pt1 (getpoint "포인트:"))
  (cond
   ((not pt1) nil)
   ((vl-consp pt1))
   ((wcmatch pt1 "u,U") (setq pt1 nil))
  )
)
    
이걸 몇 십번 감싸는건 좀 아닌것 같아서..
이렇게 질문드립니다.

긴글 읽어주셔서 감사합니다.

관련자료

댓글 4 / 1 페이지

수야12님의 댓글

일종의  goto문이라는 얘긴데 autolisp에는 없는 걸로 알고있습니다 

저라면 구문안에서 자신을 다시 호출하겠습니다 (이렇게 까지 해야 할 필요없게 구성하는게 더 좋겠지만 ^^;;)

조용!!님의 댓글

저도 수야님 답변에 1표..

입력밧을 8개 값중 문자, 점, 키, 지역, 등등… 을 입력하다. 잘못입력하면 다시 원상복귀를 원하시는건지? 입력 잘못된 구간만 다시 입력 받기를 원하시는건지…

저라면 (setq 지역변수) (while 빠져나오는변수  (값받는 함수);지역변수를 검수하여.. 갯수에 따라 원하는걸 입력 받기.  (값검사하는 함수) )

이렇게 하면 안될까 싶은데요?

피시님의 댓글

답변 감사합니다.

원상복귀까지는 오히려 명령어를 다시 입력하는것과 같아서 조금이나마 중도 되돌리기가 필요할때가 필요했습니다.

예를들어 20 이란수치를 입력하고 그다음 포인트입력을 요구하는 리습일때 다시생각해보니 20보다 15가 낳다고 판단하여 포인트입력을 뒤로하고 다시 수치입력으로 돌아가는 느낌입니다.(그렇게 입력할게 조금 많을경우..) 그리고 해당 수치도 각각 저장해야하고 포인트도 저장해야하죠..

형상을 실시간으로 그려주면서 눈으로 판단하고 수정 하면서 결과물을 그려내는 리습을 작성중입니다.

GRDRAW 나Grvecs 같은경우는 라인만 그려지고 ARC 나 선과 선사이의 R을 미리그려 보여주기 같은게 힘들더군요(실력미숙..) 그래서 그냥 직접 그리는걸로 만들어보고 있습니다..

피시님의 댓글

수야님 답변 감사합니다

goto 문이라도 있으면 조금 편하게 작성할수 있을텐데.. 아쉽네요.ㅠ 어쩔수 없이 최대한 함수로 조각내서 해당 부분들만 while로 전부 감싸면 될거같긴 합니다만… 전역변수를 많이 써야하는게 흠이네요 ㅠ

전체 7,232 / 1 페이지
번호
제목
이름

최근글


새댓글


알림 0