캐드 분류
두점 사이의 거리를 나타내주는 리습(0.5단위로 끊을 수 있게 수정하고 싶습니다.)
컨텐츠 정보
- 273 조회
- 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