프로그램
캐드 분류

치수입력시 소수점 후행억제가 않됩니다.

컨텐츠 정보

  • 34 조회
  • 7 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

오랜만에 글올립니다.

치수입력시에 그림1과 같이 입력시에 사용하는 리습입니다.

뭐가 문제인지 후행억제가 안되는데 리습의 문제인지 캐드 옵션상의 문제인지 제가 아는 지식으로는 해결하기가 어려워서 고수님들의 도움요청을 부탁드립니다.

정수 각도일때만 후행 억제하고 정수각이 아닐때는 현재로 좋습니다.

간절합니다. 고수님들 부탁드립니다.

 

 

(DEFUN C:AQ (/ ENT PT1 PT2 pt3 pt4 PT5 pt6 AN an1 an2 an3 an4)

(setq *Osmode_Save (getvar “osmode” ))
(setq oldlayer (getvar “clayer”))
(setvar “clayer” “dim”)

(SETQ ent(entget (car (entsel “npick a line : “))))
(setq pt1(cdr (assoc 10 ent)))
(setq pt2(cdr (assoc 11 ent)))
(setvar “osmode” 103)

; (setq pt6(polar pt4 (dtr 330) 8.26 ))
(setq an(angle pt1 pt2))
(if (<= an (/ pi 4)) ;0~45
(setq an1 an)
(if (<= an (/ pi 2)) ;45~90
(setq an1 (- (/ pi 2) an))
(if (<= an (/ (* pi 3) 4)) ;90~135
(setq an1 (- an (/ pi 2)))
(if (<= an pi) ;135~180
(setq an1 (- pi an))
(if (<= an (/ (* 5 pi) 4)) ;180~225
(setq an1 (- an pi))
(if (<= an (/ (* 3 pi) 2)) ;225~270
(setq an1 (- (/ (* 3 pi) 2) an))
(if (<= an (/ (* 7 pi) 4)) ;270~315
(setq an1 (- an (/ (* pi 3) 2)))
(setq an1 (- (* pi 2) an)) ;315~360
)
)
)
)
)
)
);;IF
(setq an2(angtos an1 0 3))

(if (zerop an1)
(setq an3(strcat (angtos an1 0 5)”%%d”))
(setq an3(vl-string-subst “%%d” “d” (angtos an1 1 2)))
);;if

(setq an4(strcat an3 ))
(setvar “osmode” 512)
(command “_leader” PAUSE PAUSE “” an4 “”)

(setvar “osmode” *Osmode_Save)
(setvar “clayer” oldlayer)
(princ)
);===END OF PROGRAM===

 

관련자료

댓글 7 / 1 페이지

수야12님의 댓글

d값 이후가 “0” 이 아닐때는 제 값을 표현 해야 하니

값비교용으로

(setq anv (fix an1)) ;값비교용 변수를 만듭니다

(if (= an1 anv);fix한 값과 앵글값이 같으면 정수각

(setq an3(vl-string-subst “%%d” “d” (angtos (fix an1) 1 0)))

(setq an3(vl-string-subst “%%d” “d” (angtos an1 1 2)))

)

이런식으로

참고사항 각도값은 60분법 기준입니다 호도값이 아니라..

무니미니님의 댓글

수야12님 항상 도움주셔서 감사합니다. 리습에는 무지한 지라 어디부분을 저렇게 고쳐야 하는지 좀더 상세히 설명해주실수는 없을까요? 여기 저기 바꿔가며 테스트 해보는데 잘되질 않네요!!! 감사합니다.

수야12님의 댓글

제가 설계를 잘못했네요 fix값이 제값이 안들어가네요 15.0이면 fix하면 원래는 15가 들어가야 하는데 14가 들어가네요 헐… 다시 한번 생각해봐야 할듯 합니다.

캐드플러스님의 댓글

그럴리가 있겠습니까? 맞게 했습니다. 15.0이 처음부터 15가 아니고 14.XX에서 반올림 해서 15.0이겠죠.

수야12님의 댓글

그런가봐요 눈에 보이는 값은 15.0인데 fix 함수를 적용하면 14로 변해 버리네요 아마 각 변환과정에서 반올림 되서 표현되나봐요 ㅎㅎ;;

수야12님의 댓글

(DEFUN C:AQ (/ ENT PT1 PT2 pt3 pt4 PT5 pt6 AN an1 an2 an3 an4)

(setq *Osmode_Save (getvar “osmode” )) (setq oldlayer (getvar “clayer”)) (setvar “clayer” “dim”)

(SETQ ent(entget (car (entsel “npick a line : “)))) (setq pt1(cdr (assoc 10 ent))) (setq pt2(cdr (assoc 11 ent))) (setvar “osmode” 103)

; (setq pt6(polar pt4 (dtr 330) 8.26 )) (setq an(angle pt1 pt2)) (if (<= an (/ pi 4)) ;0~45 (setq an1 an) (if (<= an (/ pi 2)) ;45~90 (setq an1 (- (/ pi 2) an)) (if (<= an (/ (* pi 3) 4)) ;90~135 (setq an1 (- an (/ pi 2))) (if (<= an pi) ;135~180 (setq an1 (- pi an)) (if (<= an (/ (* 5 pi) 4)) ;180~225 (setq an1 (- an pi)) (if (<= an (/ (* 3 pi) 2)) ;225~270 (setq an1 (- (/ (* 3 pi) 2) an)) (if (<= an (/ (* 7 pi) 4)) ;270~315 (setq an1 (- an (/ (* pi 3) 2))) (setq an1 (- (* pi 2) an)) ;315~360 ) ) ) ) ) ) );;IF

(setq anv(angtos an1 0 2)) (setq pos(vl-string-position (ascii ".")anv)) (if pos(setq n 2)(setq n 0))

(if (zerop an1) (setq an3(strcat (angtos an1 0 5)"%%d")) (setq an3(vl-string-subst "%%d" "d" (angtos an1 1 n))) );;if

(setq an4(strcat an3 )) (setvar "osmode" 512) (command "_leader" PAUSE PAUSE "" an4 "")

(setvar "osmode" *Osmode_Save) (setvar "clayer" oldlayer) (princ) );===END OF PROGRAM===

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

최근글


새댓글


알림 0