프로그램
캐드 분류

DD1 리습 치수 관련

컨텐츠 정보

  • 353 조회
  • 2 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

안녕하세요

DD1 사용시에 찍는 점 간의 거리가 산출이 안되는데요..

dal 명령어를 사용할 때에는 치수가 제대로 나오는것 같은데

DD1리습으로 사용할때에는 어떤 파일에서는 ‘0’으로 표기되고

어떤 파일은 표기가 안됩니다.. 해결 방법이 있을까요?

관련자료

댓글 2

고장규님의 댓글

죄송합니다 제가 캐드 초보라 질문을 잘못했군요..

일단 도면이 국내 형식이 아닌거 같아서..

리습 명령어를 실행했을때.. 실제는 20M 가 나와야 되는데…

0.05로 표기 되는 것 같습니다. 아래 리습을 수정해서 20m 로 역산 가능하게끔

수정이 가능할까요?

 

; 십진법 형식의 각도를 라디안 형식으로 변화하는 함수 (defun @dtr(&angle) (setq &angle (* pi (/ &angle 180.0))))

; 라디안 형식의 각도를 십진법 형식으로 변화하는 함수 (defun @rtd(&angle) (setq &angle (* 180.0 (/ &angle pi))))

; angle 함수 사용시 각도 변환의 번거로움을 피하기 위해 만든 함수 (defun @angle(&pt1 &pt2) (@rtd (angle &pt1 &pt2)))

; polar 함수 사용시 angle을 degree 각도로 쉽게 입력하기 위해 만든 함수 (defun @polar (&pt &angle &dist) (polar &pt (@dtr &angle) &dist))

;┌───────────────────────────────────────────────────────┐ ;│■ 클릭한 두 점 사이의 거리를 구하고 최종 결과값을 출력하는 프로그램 │ ;│ ▶ 소숫점의 수치가 0.2 이하인 경우 내림으로 하고 0.8 이상인 경우 올림으로 함 │ ;│ 하지만 1보다 작은 0.2 즉, 200mm 이하인 경우 0으로 할수는 없으므로 그대로 0.2로 출력되게 함 │ ;│ ▶ 총거리의 합이 나타날 위치를 클릭하면 구간별 거리값을 나타낸 문자의 1.5배 크기로 출력됨 │ ;└───────────────────────────────────────────────────────┘ (defun C:DD2(/ !layer !addtext !end !pt1 !pt2 !dist !text !sum !TextSize !ssadd) (setq !layer “라인거리산출”) (if (tblsearch “layer” !layer) (setvar “clayer” !layer) (command “layer” “m” !layer “c” 7 !layer “”) ) (command “-style” “거리” “hy울릉도m” 0 1 0 “n” “n”) ; 스타일 작성 (setq !addtext “” !end “N” !sum 0 !TextSize (getvar “userr1”) !ssadd (ssadd)) (if (= !TextSize 0) (setq !TextSize (getreal (strcat “n문자 크기를 입력하세요<” (rtos (getvar “userr1”)) “>: “))) ) (setvar “userr1” !TextSize) (while (= !end “N”) (initget 128) (setq !pt1 (getpoint (strcat “n문자 크기<” (rtos (getvar “userr1”)) “> / 시작점: “))) (if (= ‘STR (type !pt1)) (progn (setq !TextSize (atof !pt1)) (setvar “userr1” !TextSize) (setq !pt1 (getpoint “n시작점: “)) ) ) (setq !pt2 (getpoint !pt1 “n다음점: “)) (while !pt2 (setq !dist (distance !pt1 !pt2)) (setq !text (rtos (/ !dist 1000.0) 2 1)) (if (<= (rem (atof !text) 1) 0.2) ; 소숫점 이하 수치가 0.2보다 작거나 같을 경우 (progn (if (<= (atof !text) 0.2) ; 원래값이 0.2보다 작거나 같은 경우 0으로 하면 안되므로 (setq !text (rtos (atof !text) 2 1)) ; 구해진 값 그대로 출력되게 함 (setq !text (rtos (atof !text) 2 0)) ; 나머지의 경우에는 수치를 잘라 정수로 만듬(내림 효과) ) (setq !addtext (strcat !addtext “+” !text)) ) (if (>= (rem (atof !text) 1) 0.8) ; 소숫점 이하 수치가 0.8보다 크거나 같을 경우 (progn (setq !text (rtos (+ (atoi !text) 1) 2 0)) ; 소숫점 이하 수치를 자르고 1을 더해 정수로 만듬(올림 효과) (setq !addtext (strcat !addtext “+” !text)) ) (setq !addtext (strcat !addtext “+” !text)) ; 위 두 가지 경우에 해당되지 않을 경우 소숫점 이하까지 구함 ) ) (command “text” “m” (@polar !pt1 (@angle !pt1 !pt2) (/ !dist 2)) !TextSize 0 !text) (command “line” !pt1 !pt2 “”) (setq !ssadd (ssadd (entlast) !ssadd)) (setq !sum (+ !sum (atof !text))) (setq !pt1 !pt2) (setq !pt2 (getpoint !pt1 “n다음점: “)) ) (setq !end (strcase (getstring “종료할까요?(Y/N) : “))) (if (= !end “”) (progn (setq !end “N”) (command “pedit” (entlast) “y” “j” !ssadd “” “w” (/ !TextSize 10.0) “x”) ; line을 pline 객체로 바꾸고 두께를 문자 크기의 10분의 1로 변경함 (setq !ssadd (ssadd)) ) ) ) (command “pedit” (entlast) “y” “j” !ssadd “” “w” (/ !TextSize 10.0) “x”) (command “text” (getpoint “n결과값을 출력할 위치를 클릭하세요: “) (* !TextSize 1.5) 0 (strcat (rtos !sum 2 2) ” = ” (substr !addtext 2))) )

;┌───────────────────────────────────────────────────────┐ ;│■ 클릭한 두 점 사이의 거리를 구하고 최종 결과값을 출력하는 프로그램 │ ;│ ▶ DD1과 달리 소숫점 이하까지 모든 수치가 그대로 출력되게 함 │ ;│ ▶ 총거리의 합이 나타날 위치를 클릭하면 구간별 거리값을 나타낸 문자의 1.5배 크기로 출력됨 │ ;└───────────────────────────────────────────────────────┘ (defun C:DD2(/ !addtext !end !pt1 !pt2 !dist !text !sum !TextSize !ssadd) (setq !layer “라인거리산출”) (if (tblsearch “layer” !layer) (setvar “clayer” !layer) (command “layer” “m” !layer “c” 7 !layer “”) ) (command “-style” “거리” “hy울릉도m” 0 1 0 “n” “n”) ; 스타일 작성 (setq !addtext “” !end “N” !sum 0 !TextSize (getvar “userr1”) !ssadd (ssadd)) (if (= !TextSize 0) (setq !TextSize (getreal (strcat “n문자 크기를 입력하세요<” (rtos (getvar “userr1”)) “>: “))) ) (setvar “userr1” !TextSize) (while (= !end “N”) (initget 128) (setq !pt1 (getpoint (strcat “n문자 크기<” (rtos (getvar “userr1”)) “> / 시작점: “))) (if (= ‘STR (type !pt1)) (progn (setq !TextSize (atof !pt1)) (setvar “userr1” !TextSize) (setq !pt1 (getpoint “n시작점: “)) ) ) (setq !pt2 (getpoint !pt1 “n다음점: “)) (while !pt2 (setq !dist (distance !pt1 !pt2)) (setq !text (rtos (/ !dist 1000.0) 2 1)) (setq !addtext (strcat !addtext “+” !text)) (command “text” “m” (@polar !pt1 (@angle !pt1 !pt2) (/ !dist 2)) !TextSize 0 !text) (command “line” !pt1 !pt2 “”) (setq !ssadd (ssadd (entlast) !ssadd)) (setq !sum (+ !sum (atof !text))) (setq !pt1 !pt2) (setq !pt2 (getpoint !pt1 “n다음점: “)) ) (setq !end (strcase (getstring “종료할까요?(Y/N) : “))) (if (= !end “”) (progn (setq !end “N”) (command “pedit” (entlast) “y” “j” !ssadd “” “w” (/ !TextSize 10.0) “x”) ; line을 pline 객체로 바꾸고 두께를 문자 크기의 10분의 1로 변경함 (setq !ssadd (ssadd)) ) ) ) (command “pedit” (entlast) “y” “j” !ssadd “” “w” (/ !TextSize 10.0) “x”) (command “text” (getpoint “n결과값을 출력할 위치를 클릭하세요: “) (* !TextSize 1.5) 0 (strcat (rtos !sum 2 2) ” = ” (substr !addtext 2))) )

잡_기계설계님의 댓글

글세요?

누가 알 수 있을까요?

내 머리속 생각을 알아 맞혀 보라는것과 같은것 아닐까요?

dd1 리습을 보여주고 질문해야 어떤 답변을 받을 수 있지 않을까요?

여분필드1 여분필드2 여분필드3
전체 7,670 / 11 페이지
RSS
번호
제목
이름
알림 0