또한번의 문의 드립니다. 보유하고 있는 육각 볼트 단면 그리는 리습입니다.
하기는 명령어 실행 과정을 올린 것이고 적색부분에서 이상하게 에러가 발생합니다.
이전에는 사용하던 리습인데 뭔가 환경이 바뀐건지 통 모르겠습니다.
레이어는 0~9번 숫자레이어 존재하고 있습니다.
고수님들의 조언 부탁드립니다.
Command: SB
Layer “0” already exists.
Layer “1” already exists.
Layer “2” already exists.
▶ Bolt 규격은? M3/M4/M5/M6/M8/M10/M12/M14/M16/M20/M24 :[M8]
▶ 볼트가 작도될 시작점을 지정하시오 :
▶ 볼트가 체결될 끝점or길이(L)값을 입력하시오 :
▶ 전체작도는 [Enter] 반단면은 작도방향 위치를 지정 하시오 :
▶ 볼트 머리 삽입은 [I] 돌출은 [O]를 입력하시오 : error: no function
definition: RTD
Specify rotation angle of text <0d0’0″>:
Enter text:
Command: *Cancel*
적색부분에서 에러 발생 볼트생성이 안되는 상황입니다.
혹시나 64bits에서 문제일까요? 32bits에서 사용했던 기억이~~~~~
하기는 리습 첨부입니다.
;;;————-BOLT SET DRAWING PROGRAM————————————
(defun c:SB (/ bt a p0 p1 ang1 ang2 ang2_2 ang3 ang4 e cen en enn t2 ea dp tem)
(command “undo” “g”)
(setvar “cmdecho” 0)
;;;->*error* start
(defun *error* (msg)
(princ “error: “)
(princ msg)
(setvar “osmode” os)
(setvar “highlight” highlt)
(setvar “orthomode” orth)
(princ)
)
;;;-<*error* end
(setq os (getvar “osmode”))
(setq highlt (getvar “highlight”))
(setq orth (getvar “orthomode”))
(setvar “highlight” 0)
(setvar “orthomode” 1)
(if (tblsearch “layer” “0”)
(command “layer” “n” “0” “”)
)
(if (tblsearch “layer” “1”)
(command “layer” “n” “1” “c” “red” “1” “lt” “center” “1” “”) )
(if (tblsearch “layer” “2”)
(command “layer” “n” “2” “c” “yellow” “2” “lt” “hidden” “2” “”) )
;;;——————————————————————
(if (= ai_size nil)
(setq ai_size 8)
)
(prompt
“n▶ Bolt 규격은? M3/M4/M5/M6/M8/M10/M12/M14/M16/M20/M24 :[M”
)
(prin1 ai_size)
(setq t2 (getint
“] “
)
)
(if (= t2 nil)
(setq bt ai_size)
(setq bt t2
ai_size t2
)
)
(setvar “osmode” 16383)
(setq p0 (getpoint “n▶ 볼트가 작도될 시작점을 지정하시오 :”))
(setq p1 (getpoint p0 “n▶ 볼트가 체결될 끝점or길이(L)값을 입력하시오 :”))
(setq ang1 (angle p0 p1))
(setvar “orthomode” 1)
(setq sec_set “off”)
(setvar “osmode” 0)
(setq
dp (getpoint “n▶ 전체작도는 [Enter] 반단면은 작도방향 위치를 지정 하시오 :”
)
)
(if (/= en nil)
(entdel en)
)
(if dp
(progn
(setq ang2_2 (angle p0 dp)
sec_set “on”
)
(if (> ang2_2 ang1)
(setq ang2 (+ ang1 (dtr 90)))
(setq ang2 (- ang1 (dtr 90)))
)
)
(setq ang2 (- ang1 (dtr 90)))
)
(if (and (= ang1 0.0) (> ang2_2 pi))
(setq ang2 (- ang1 (dtr 90)))
)
(setq ang3 (+ ang2 pi))
(setq enn (ssget (polar p0 ang1 (/ (distance p0 p1) 2))))
(if (/= enn nil)
(command “erase” enn “”)
)
(initget “In Out”)
(setq ps (getkword
“n▶ 볼트 머리 삽입은 [I] 돌출은 [O]를 입력하시오 : “
)
)
; (setq a (getint “n▶ 실선 작도는 [1] / 은선 작도는 [Enter] :”))
;(if (= a nil)(setq a 1))
;(cond ((= a 1)
(bolt bt p0 p1 sec_set ang2 ps)
(setvar “osmode” os)
(setvar “highlight” highlt)
(setvar “orthomode” orth)
(command “undo” “e”)
(princ)
)
;;;—-Selecting of angle value———————-
(defun bolt (bt p0 p1 sec_set ang2 ps / p3
p4 p5 p6 p7 p8 p9 p10 p11 p12
p13 p14 p15 p16 p17 p18 p19 p20 en1
en2 en3 en4 en5 en6 en7 en8 en9 en10
en11 en12 en14 en15 ena enb1 enb2 enb3 len1
len2 len3 btsz txtp t2 dr p2 d d1
d2 h1 dis1 dis2 dis3 ss
)
;;;—-size choice———————-
(defun choice (/)
(cond
((= bt 3)
(setq d 2.75
d1 3.0
h1 3.3
d2 1.7
l 20.0
)
)
((= bt 4)
(setq d 3.5
d1 4.0
h1 4.5
d2 2.25
l 25.0
)
)
((= bt 5)
(setq d 4.25
d1 4.8
h1 5.5
d2 2.75
l 25.0
)
)
((= bt 6)
(setq d 5.0
d1 5.5
h1 7.0
d2 3.3
l 50.0
)
)
((= bt 8)
(setq d 6.5
d1 7.0
h1 9.0
d2 4.5
l 100.0
)
)
((= bt 10)
(setq d 8.0
d1 9.0
h1 11.0
d2 5.5
l 125.0
)
)
((= bt 12)
(setq d 9.0
d1 10.0
h1 13.0
d2 6.5
l 125.0
)
)
((= bt 14)
(setq d 10.5
d1 11.5
h1 15.2
d2 8.0
l 160.0
)
)
((= bt 16)
(setq d 12.0
d1 13.0
h1 18.0
d2 9.0
l 160.0
)
)
((= bt 20)
(setq d 15.0
d1 16.0
h1 22.0
d2 11.0
l 180.0
)
)
((= bt 24)
(setq d 18.0
d1 19.5
h1 26.0
d2 13.0
l 200.0
)
)
((> bt 24)
(setq d (* bt 0.75)
d1 (+ d 1.5)
h1 (+ bt 2.0)
d2 (+ (/ bt 2.0) 1)
he (* bt 0.72)
)
)
(t (alert! “n▶ 잘못된 볼트 규격입니다. 다시 입력하시오 : “))
)
)
(defun blt_angselec ()
(cond
((and (>= ang1 (dtr 45)) (< ang1 (dtr 135)))
;and
(setq txtfit “ml”)
)
((and (>= ang1 (dtr 135)) (< ang1 (dtr 225)))
(setq txtfit “mr”)
)
((and (>= ang1 (dtr 225)) (< ang1 (dtr 315)))
(setq txtfit “mr”)
)
((or (and (>= ang1 0) (< ang1 (dtr 45)))
(and (> ang1 (dtr 315)) (< ang1 (dtr 360)))
)
(setq txtfit “ml”)
)
)
)
(choice)
(setq ang1 (angle p0 p1))
(setq ang4 (angle p1 p0))
(if (= ps “Out”)
(setq p0 (polar p0 ang4 h1))
)
(blt_angselec)
(setvar “osmode” 0)
(setq p2 (polar p0 ang1 h1))
(setq dis1 (distance p2 p1)
dis2 (* bt 0.075)
dis3 (- (/ bt 2.0) dis2)
)
(setq len1 (atof (rtos (/ (+ dis1 (* bt 1.5)) 5.0) 2 0))
len2 (* len1 5.0)
len3 (- len2 dis1)
btsz (strcat “M” (itoa (fix bt)) “x” (itoa (fix len2)))
)
(setq txtp (polar p0 ang1 (+ h1 1.5)))
(setvar “osmode” 0)
(command “layer” “m” “0” “”)
(if (= txtfit “mr”)
(command “text”
“j”
“mr”
txtp
“3.5”
(rtd (+ ang1 pi))
btsz
)
(command “text”
“j”
“ml”
txtp
“3.5”
(rtd ang1)
btsz
)
)
;;;———————————————-
(if (<= dis1 (+ bt (* dis2 2.0)))
(setq p3 (polar p1 ang4 (/ dis1 2.0)))
(setq p3 (polar p1 ang4 bt))
)
(setq p5 (polar p1 ang1 len3)
p4 (polar p5 ang4 dis2)
p6 (polar p1 ang1 (* bt 2.0))
p7 (polar p6 ang1 (* bt 0.3))
p8 (polar p7 ang1 (* dis3 0.577))
p10 (polar p2 ang4 bt)
p9 (polar p10 ang1 dis2)
p11 (polar p2 ang2 (/ bt 2.0))
p12 (polar p2 ang2 d2)
p13 (polar p2 ang2 d)
p14 (polar p0 ang2 d1)
p15 (polar p3 ang2 dis3)
p16 (polar p5 ang2 dis3)
p17 (polar p4 ang2 (/ bt 2.0))
p18 (polar p1 ang2 d2)
p19 (polar p7 ang2 dis3)
p20 (polar p3 ang2 (/ bt 2.0))
p20 (polar p20 ang4 (* dis2 1.732))
)
;;;—————————————————
(command “line” p0 p9 “”)
(setq en1 (entlast))
(command “line” p2 p11 “”)
(setq en2 (entnext en1))
(command “copy” en1 “” p9 p13)
(command “copy” en1 “” “m” p0 p11 p15 p16 p17 “”)
(command “copy” en2 “” “m” p2 p9 p10 p3 p4 p5 “”)
;;;———————————————-
(setq en3 (entnext en2)
en4 (entnext en3)
en5 (entnext en4)
en6 (entnext en5)
en7 (entnext en6)
en8 (entnext en7)
en9 (entnext en8)
en10 (entnext en9)
en11 (entnext en10)
en12 (entnext en11)
)
;;;—————————————————
(setvar “FILLETRAD” 0)
(setvar “CHAMFERA” dis2)
(setvar “CHAMFERB” dis2)
(command “chamfer” en3 en9)
(command “chamfer” en4 en12)
(command “fillet” en3 en8)
(command “fillet” en3 en2)
(command “fillet” en5 en12)
(setq en13 (entnext en12)
en14 (entnext en13)
)
(command “line” p12 p18 “”)
(setq en15 (entlast))
(command “line” p15 p20 “”)
(setq en16 (entlast))
(command “CHANGE” en5 en7 en16 “” “P” “LA” “3” “”)
;;;—————————————————
(setq ss (ssadd))
(setq ss (ssadd en2 ss))
(setq ss (ssadd en3 ss))
(setq ss (ssadd en4 ss))
(setq ss (ssadd en5 ss))
(setq ss (ssadd en6 ss))
(setq ss (ssadd en7 ss))
(setq ss (ssadd en8 ss))
(setq ss (ssadd en9 ss))
(setq ss (ssadd en10 ss))
(setq ss (ssadd en11 ss))
(setq ss (ssadd en12 ss))
(setq ss (ssadd en13 ss))
(setq ss (ssadd en14 ss))
(setq ss (ssadd en15 ss))
(setq ss (ssadd en16 ss))
;;;—————————————————-
(if (/= ps “Out”)
(progn
(command “copy” en1 “” p0 p14)
(setq ena (entlast))
(command “fillet” ena en2)
(setq ss (ssadd ena ss))
)
)
;;;—————————————————–
(command “copy” en11 “” p4 p6)
(setq enb1 (entlast))
(command “fillet” en7 enb1)
(command “line” P7 p19 P8 “”)
(setq enb2 (entnext enb1)
enb3 (entnext enb2)
)
(command “fillet” en6 enb2)
(setq p6 (polar p6 ang2 (/ bt 2.0)))
(command “copy” en16 “” p20 p6)
(setq enb4 (entlast))
(setq ss (ssadd enb1 ss)
ss (ssadd enb2 ss)
ss (ssadd enb3 ss)
ss (ssadd enb4 ss)
)
;;;——————————————————
(if (= sec_set “on”)
()
(command “mirror” ss “” p0 p2 “”)
)
(entdel en1)
(setq p1 (polar p0 ang4 0.0))
(setq p2 (polar p8 ang1 0.0))
(command “line” P1 p2 “”)
(command “CHANGE” (entlast) “” “P” “LA” “1” “”)
)
수야12님
항상 감사드립니다. 잘 해결했습니다.
좋은일만 가득하세요~~~~
다시한번 감사드립니다.
(defun rtd (a)(/ (* a 180.0) pi))
수야 12님 리습 끝에다가 삽입을 했고요
(command “CHANGE” (entlast) “” “P” “LA” “1” “”)
)
(defun dtr(a)(* pi(/ a 180.0)))
그런데 상황은 동일 하네요
▶ 볼트 머리 삽입은 [I] 돌출은 [O]를 입력하시오 : O error: no function
definition: RTD
Specify rotation angle of text <0d0’0″>: 44
Enter text:
위의 단계에서 볼트머리 삽입또는돌출 에러에 로테이트 값이 나옵니다.
거기에서 숫자치면 그각도로 글씨가 써져 버리는데 뭐가 문제일까요??
바쁘실텐테 항상 죄송하고 감사합니다.
리습의 끝이나 앞 또는 밖에도 상관없습니다 그렇다고 막 가운데다만 안넣으시면 됩니다 ㅎㅎ;;
수야 12님 항상 감사드립니다.
그런데 위의 내용을 어느 위치에 추가를 해야하는 거지요??
(defun dtr(a)(* pi(/ a 180.0)))