Re: [八六] 借我放
(if (null finddat)(load "util.lsp"))
(defun C:bolt3d (/ ip d len dlist pitch)
(graphscr)
(command "osnap" "none")
(command "ucs" "w")
(if (and (setq ip (getpoint "\ninput ip :"))
(setq d (getreal "\ninput diameter of the bolt:"))
(setq len (getdist ip "\ninput the length:"))
(setq dlist (finddat "thread.dat" d))
(setq pitch (cadr dlist))
(setq dlist (finddat "Hexbolt.dat" d))
)
(progn
(bolt3d ip d pitch len dlist)
)
)
(princ)
)
(defun bolt3d (ip d pitch len dlist / ip2)
(command "ucs" "o" ip)
(setq ip2 '(0 0 0))
(bolt3d-head ip2 d pitch len dlist)
(setq e1 (entlast))
(bolt3d-body ip2 d pitch len dlist)
(command "union" (entlast) e1 "")
(command "ucs" "p")
(princ)
)
(defun bolt3d-head (ip2 d pitch len dlist / a30 a60 pi/2 r H B r2 d3 r3 r4 p1
p2 p0 c p4 p3)
(setq a30 (dtr 30)
a60 (dtr 60)
pi/2 (/ pi 2.0)
r(/ d 2.0)
H(nth 1 dlist)
B(nth 2 dlist)
r2(/ B 2.0)
d3(nth 3 dlist)
r3(/ d3 2.0)
r4(/ r2 (cos a30))
p1(polar ip 0.0 r4)
p2(polar ip a60 r4)
)
(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(* (- r4 r3) (tan a30))
p1(polar p0 pi h)
p2(polar p1 pi/2 r3)
p4(polar p1 pi/2 r4)
p3(polar p4 0.0 c)
)
(command "pline" p2 p3 p4 "C")
(command "revolve" (entlast) "" p0 p1 "")
(command "subtract" e1 "" (entlast) "")
(command "ucs" "p")
(princ)
)
(defun rpoint3d(ip dx dy dz / x y z)
(setq x (car ip)
y(cadr ip)
z(caddr ip)
z(if z z 0)
x(+ x dx)
y(+ y dy)
z(+ z dz)
)
(list x y z)
)
(defun bolt3d-body (ip2 d pitch len 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)
a30 (dtr 30)
a60 (dtr 60)
a135(dtr 135)
a120(dtr 120)
pi/2(/ pi 2.0)
k(* pitch (cos a30))
ri(- r k)
ps '(0 0 0)
pe (polar ps 0.0 len)
p0 (polar pe pi/2 ri)
p1a(polar p0 a135 pitch)
p2 (polar p0 pi pitch)
p1b(polar p2 a60 pitch)
p1(inters p0 p1a p2 p1b)
p3(polar p2 a120 pitch)
L(- len (* pitch 1.5))
)
(command "pline" pe p0 p1 p2 p3)
(while (> L pitch)
(setq p2 (polar p2 pi pitch)
p3 (polar p3 pi pitch)
L (- L pitch)
)
(command p2 p3)
)
(command (polar ip pi/2 r) ip "C")
(command "revolve" (entlast) "" ip pe "")
(command "ucs" "p")
)
--
畫3D螺絲
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.46.19
討論串 (同標題文章)
完整討論串 (本文為第 5 之 8 篇):
八六