프로그램
캐드 분류

두점 사이의 거리를 나타내주는 리습(0.5단위로 끊을 수 있게 수정하고 싶습니다.)

컨텐츠 정보

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

본문

안녕하세요! 리습 초짜입니다!
입력된 두 점사이의 거리를 나타내주는 리습을 만들고 있는데요.
원하는 결과물이 1이상일 경우 0.5단위(1.0 1.5 2.0 2.5 등 ) 로 나타내주고
1미만일 경우
0.1~0.5까지는 0.5 
0.6~1까지는 1 으로 표기하고 싶습니다.

(IF (= (- TOTAL1 0.5)(FIX TOTAL1)) 를 이용해서

0.5단위로 계산하는 예제를 봤는데 잘 이해가 가지않아서 
어느부분을 고쳐야 하는지 조언을 구하고자 합니다.

(defun c:qds(/ os dlf myerror ot pt0 pt1 pt2 pt3 pt4 di dis ang an dii anzz anz dx dy dz)
   ;start — Internal error handler ———-
    (defun myerror(S)
    (if (/= s "Function cancelled")(princ (strcat "nError:" s)))
    (setvar "osmode" os) (setvar "orthomode" ot)
    (setq *error* olderr)(princ) )
    (setq olderr *error* *error* myerror)
   ;end—————————————-
  (setvar "cmdecho" 0)
  (setq d_ts (getvar "textsize") os (getvar "osmode")
         dlf (getvar "dimlfac")  ot (getvar "orthomode"))
  (princ "…DISTANCE PROGRAM…")
   (setq ht d_ts)
   (prompt "n문자크기:<") (prin1 ht) (prompt ">: ")
   (setq ht (getint))
   (if (= ht nil) (setq ht d_ts))
  (setvar "orthomode" 0)
  (setvar "osmode" 512)
  (setq pt1 (getpoint "n Distance first point-> "))
  (setvar "osmode" 128)
  (setq pt2 (getpoint pt1 "n Distance second point-> "))
  (setq di (distance pt1 pt2) 
        ang (angle pt1 pt2) 
        an (angtos ang 0 2)
        pt3 (list (car pt2) (cadr pt2) (caddr pt1))
        dii (distance pt1 pt3)
        pt4 (list dii (caddr pt2))
        pt0 (list 0 0)
        anzz (angle pt0 pt4)
        anz (angtos anzz 0 2)
        dX (- (car pt2) (car pt1))
        dY (- (cadr pt2) (cadr pt1))
        dZ (- (caddr pt2) (caddr pt1))) (terpri)
  (princ (strcat "  * XY-angle : " an " '   "))
  (princ (strcat "* Z-angle : " anz " '")) (terpri)
  (setq ldi (* di dlf))
  (princ (strcat "  * delta-X : " (rtos dX 2 2) " mm   "))
  (princ (strcat "* delta-Y : " (rtos dY 2 2) " mm   "))
  (princ (strcat "* delta-Z : " (rtos dZ 2 2) " mm"))(terpri)
  (princ (strcat "  * distance : " (rtos di 2 2) " mm "))
  (princ (strcat " < " (rtos ldi 2 2) " : dimlfac = " (rtos dlf 2 2) ">   "))
   (setvar "osmode" 0)
   (setq dis (rtos (/ di 1000) 2 1))
;   (command "text" "j" "r" pt1 ht an dis)
   (command "text" "j" "r" pt1 ht "0″ dis)
   (prompt "nEnter text point->")
   (command "move" "l" "" pt1 pause)
  (setvar "osmode" os) (setvar "orthomode" ot)
  (prin1)
)

관련자료

댓글 4 / 1 페이지
전체 6,913 / 9 페이지
번호
제목
이름
알림 0