Re: [八六] 借我放
(if (null finddat) (load "util"))
(defun C:nut3d (/ ip d dlist pitch)
(graphscr)
(command "osnap" "none")
(command "ucs" "w")
(if (and (setq ip (getpoint "\nInput ip:"))
(setq d (getreal "\nInput diameter:"))
(setq dlist (finddat "thread.dat" d))
(setq pitch(cadr dlist))
(setq dlist (finddat "Hexnut.dat" d))
)
(progn
(nut3d ip d pitch dlist)
)
)
(princ)
)
(defun nut3d (ip d pitch dlist /)
(command "ucs" "o" ip)
(setq ip2 '(0 0 0))
(nut3d-body ip2 d pitch dlist)
(setq e1 (entlast))
(nut3d-thread ip2 d pitch dlist)
(command "subtract" e1 "" (entlast) "")
(command "ucs" "P")
(command "zoom" "E" "" "0.8x")
(princ)
)
(defun nut3d-body (ip d pitch dlist/)
(setq a30 (dtr 30)
a60 (dtr 60)
pi/2 (/ pi 2.0)
H(nth 1 dlist)
B(nth 3 dlist)
d4(nth 4 dlist)
r(/ d 2.0)
r2(/ B 2.0)
r3(/ r2 (cos a30))
r4(/ d4 2.0)
p1(polar ip 0.0 r3)
p2(polar ip a60 r3)
)
(command "polygon" 6 "E" p1 p2)
(command "extrude" (entlast) "" H "")
(setq e1 (entlast))
(command "ucs" "3p" ip (rpoint3d ip 0 0 -10)(rpoint3d ip 10 0 0))
(setq p0 '(0 0 0)
c (* (- r3 r4) (tan a30))
p1 (polar p0 pi H)
p2 (polar p1 pi/2 r4)
p4 (polar p1 pi/2 r3)
p3 (polar p4 0.0 c)
)
(command "pline" p2 p3 p4 "c")
(command "revolve" (entlast) "" p0 p1 "")
(setq e2 (entlast))
(setq p0 '(0 0 0)
p1(polar p0 pi H)
p2(polar p0 pi/2 r4)
p4(polar p0 pi/2 r3)
p3(polar p4 pi c)
)
(command "pline" p2 p3 p4 "c")
(command "revolve" (entlast) "" p0 p1 "")
(setq e3 (entlast))
(command "subtract" e1 "" e2 e3 "")
(command "ucs" "p")
(princ)
)
(defun nut3d-thread (ip d pitch dlist /)
(setq p1 (rpoint3d ip 0 0 -10)
p2 (rpoint3d ip 10 0 0)
)
(command "ucs" "3p" ip p1 p2)
(setq r (/ d 2.0)
H (nth 1 dlist)
a30 (dtr 30)
k (* pitch (cos a30))
r1 (- r k)
L H
p/2 (/ pitch 2.0)
pe '(0 0 0)
ps (polar pe pi H)
p1 (polar pe pi/2 r)
p2 (rpoint3d pe (- p/2) r1 0)
p3 (polar p1 pi pitch)
L(- L pitch)
)
(command "pline" pe p1 p2 p3)
(while (> L pitch)
(setq p2 (polar p2 pi pitch)
p3 (polar p3 pi pitch)
L(- L pitch)
)
(command p2 p3)
)
(if (> L 0.0)
(progn
(setq p1 p3
p2 (polar p2 pi pitch)
p3 (polar ps pi/2 r)
p4 (rpoint ps p/2 r1)
p5 (inters p1 p2 p3 p4)
)
(command p5 p3)
)
)
(command ps "C")
(command "revolve" (entlast) "" ps pe "")
(command "ucs" "P")
(princ)
)
--
畫3D螺帽
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.46.19
討論串 (同標題文章)
完整討論串 (本文為第 6 之 8 篇):
八六