绘制圆顶
我在协调方面也有同样的问题。我的代码有这样的错误:“错误:错误的参数类型:2D/3D点:nil”(defun dtr (a)
(* pi (/ a 180.00))
)
(defun rtd (a)
(/ (* a 180.00) pi)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:Dome ()
(setq osm (getvar "osmode"))
(setq dK (getdist "\nDiameter of dome: "))
(setq hv (getreal "\nHeight of dome: "))
(setq n (getint "\nNumber of grid: "))
(setq p1 (getpoint "\nBase point: "))
(setq goc (/ 360 n))
(setq alpha (dtrgoc ))
;(setq beta(dtr (- 180 goc)) )
(setq beta(dtr(/ (- 180 goc) 2) ))
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setq p2 ( polar p1 (* 0 pi)dK) )
(setq pc (mid p1 p2))
(setq ra(distance p1 pc))
(setq canh (* 2 ra(sin (/ alpha 2) )) )
(setq p3(polar p1 betacanh ))
(setqx1 (car pc)
y1 (cadr pc)
z1 (caddr pc) )
(setqz2(+ z1 hv))
(setq pdc (listx1 y1 z2))
(command"line" p1 p3 "" )
(setq s1 (entlast))
(command"-array" s1"""p" pcn "" "" )
(command "_.ucs" "zaxis"zo pdc)
(setq zo (trans zo 0 1))
(setq phi (/ 180 8 ))
(setq phi (dtrphi ))
(setq canh2 (* 2 ra(sin (/ phi 2) )) )
(setq r2 (/ (+ (* dk dk) (* 4 (* hv hv)) ) (* 8 hv)) ) ; ban kinh cua vom
(setqzo(- z2 r2))
(setq oc (listx1 y1 zo))
(setq deta(dtr(/ (- 180 phi) 2) ))
(setq zeta(angle p1 zo))
(setq zeta1 (abs (- deta zeta)))
(setq zd1 (*r2 (sin zeta1) ))
(setq zeta2 (abs (- zeta1 phi)))
(setq zd2 (+ zd1 (*r2 (sin (rtd zeta2)) )))
(setq zeta3(abs (- zeta1 phi)))
(setq zd3 (+ zd2 (*r2 (sin (rtd zeta3)) )))
(setq xd1 (*r2 (cos (rtd zeta1)) ))
(setq xd2 (*r2 (cos (rtd zeta2)) ))
(setq xd3 (*r2 (cos (rtd zeta3)) ))
(setq pd2 (listxd1 y1 zd1))
(setq pd3 (listxd2 y1 zd2))
(setq pd4 (listxd3 y1 zd3))
(command"line" p1 pd2 "")
(setq s2 (entlast))
(command"line" pd2 pd3 "")
(setq s3 (entlast))
(command"line" pd3 pdc "")
(setq s4 (entlast))
(command"-array"s2s3 s3 """p" pcn "" "" )
(command "_.ucs""p" )
(setvar "osmode" osm)
(princ)
) (defun dtr(a)(*pi(/a180.00))(defun rtd(a)(/(*a180.00)pi))[颜色=洋红色](defun mid(p1 p2)(list(/(+(car p1)(car p2))2)(/(+(cadr p1)(cadr p2))2)(/(+(caddr p1)(caddr p2))2))[/颜色];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun c:dome()(setq osm(getvar“osmode”))(setq dK(getdist”\n dome的参数:)(setq hv(getreal”\n dome的高度:)(setq n(getint”\n网格数:)(setq p1(getpoint“\n基点:)(setq goc(/360 n))(setq alpha(dtr goc));(setq beta(dtr(-180 goc)))(setq beta(dtr(/(-180 goc)2))(setvar“cmdecho”1)(setvar“osmode”0)(setq p2(polar p1(*0 pi)dK))(setq pc(mid p1 p2))(setq ra(distance p1 pc))(setq canh(*2 ra(sin(/alpha 2)))(setq p3(polar p1 beta canh))(setq x1(car pc)y1(cadr pc)z1(caddr pc))(setq zq 2(+z1 hv))(setq pdc(列表x1 y1 z2))(命令行)p1 p3“”)(setq s1(entlast))(命令“-array“s1”“p”pc n“”);----->(setq zo(反式zo 0 1)); 谢谢我有中点函数,但我忘了。谢谢你的帮助。让我测试一下。
......
在我运行它之后。所以它仍然有点误差。只画下面的边界,不画圆顶的曲线
页:
[1]