球面投影
上學期教了Mastercam的刀具路徑投影,
這學期來教點球面投影的原理,
並用AutoLisp來印證…
AutoLisp的作動流程,請參考下列影片
AutoLisp的程式如下, 讀者可以把下列的程式如影片中的操作,複製到記事本存檔,就可以在AutoCAD裡面使用
AutoLisp的程式如下, 讀者可以把下列的程式如影片中的操作,複製到記事本存檔,就可以在AutoCAD裡面使用
(defun c:pp()
(command "osmode" 0)
(command "vpoint" (list 1 1 1))
(setq i1 1 R1 80 x1 R1 y1
0 z1 0 x2 0 y2
0 z2 0
ctaWk 0)
(setq cta (/ 3.1415926 180.0))
(command "color" 252)
(while (< i1 91)
(setq ctaWk (+ ctaWk cta))
(setq x2 (* R1 (cos ctaWk)))
(setq z2 (* R1 (sin ctaWk)))
(command "circle" (list 0 0 z2) x2 "")
(setq i1 (+ i1 1))
(command "zoom" "e")
)
(setq x1 -45 y1 -45 x2 45 y2 -45)
(pj)
(setq
x1 45 y1 -45 x2 45 y2 45)
(pj)
(setq x1 45 y1 45 x2 -45 y2 45)
(pj)
(setq x1 -45 y1 45 x2 -45 y2 -45)
(pj)
(setq x1 -45 y1 -45 x2 45 y2 45)
(pj)
(setq x1 -45 y1 45 x2 45 y2 -45)
(pj)
)
(defun pj()
(setq i1 1 xx1 x1 yy1 y1 zz1
0 xx2
x1 yy2 y1 zz2 0
R1 80)
(setq delx (/ (- x2 x1) 100.0))
(setq dely (/ (- y2 y1) 100.0))
(setq zz1 (sqrt (- (* R1 R1) (* x1 x1) (* y1 y1) )))
(while (< i1 101)
(setq xx2 (+ xx2 delx))
(setq yy2 (+ yy2 dely))
(setq zz2 (sqrt (- (* R1 R1) (* xx2 xx2) (* yy2 yy2) )))
(command "color" "bylayer")
(command "line" (list xx1 yy1 100) (list xx2 yy2 100)
"")
(command "color" "red")
(command "line" (list xx1 yy1 zz1) (list xx2 yy2 zz2)
"")
(command "color" 251)
(command "line" (list xx2 yy2 100) (list xx2 yy2 zz2)
"")
(if (= i1 1)
(command "line" (list
x1 y1 100) (list xx1 yy1 zz1) "")
)
(setq xx1 xx2 yy1 yy2 zz1 zz2)
(setq i1 (+ i1 1))
(command "zoom" "e")
)
)
留言
張貼留言