Re: [問題] AutoCad畫2D的彈簧?
※ 引述《floot (floot)》之銘言:
: 其實我是幫我朋友問的 他有學過autocad 2和3D
: 但是他有些部分忘了
: 因為現在我們需要用2D畫出彈簧
: 請問如何畫出?
: 我沒有學過 所以也沒有辦法說出什麼專業語句
: 或是知道有什麼簡單的功能就可以解決
: 所以 如果問題太過白目 請各位見諒
: 謝謝各位大大
基本上能給個草圖來看看才知道你要畫到什麼程度
不然2D的彈簧,以線性彈簧來說
說實在不過就是像下面這樣
/\ /\ /\ /\ _
_/ \ / \ / \ / \ /
\/ \/ \/ \/
畫兩條平行線設些等分點
然後用polyline慢慢連就好了
數目多的話可以用矩形陣列複製
或者使用vlisp撰寫程式更方便
不介意的這是我以前學校上課練習的程式
可以畫圈數長度任意的2D彈簧,且與水平夾角可任意
打(load "espring"),enter後打指令es,enter後
照註解點擊兩點輸入彈簧半徑及長度參數即可
如果這樣的結果不合需要
我也不知道你要的2D彈簧是要怎麼樣了
=========================================
;espring.lsp
;2D彈簧
(defun c:es (/ ip p2 len R n th)
;===前置動作===
(setvar "cmdecho" 0) ;指令執行過程不回應
(setq os (getvar "osmode")) ;記錄原物件鎖點值
(setvar "osmode" 0) ;設物件鎖點關閉
(graphscr)
;===參數輸入===
(setq ip (getpoint "\n<ip>") ;彈簧起點
p2 (getpoint ip "\n<p2>") ;彈簧端點
R (getreal "\nR:") ;半徑值
n (getint "\ninput n:") ;彈簧圈數
th (rtd (angle ip p2)) ;取得ip p2之夾角
len (distance ip p2) ;彈簧總長
)
;===呼叫副程式===
(drawes ip len R n th)
(setvar "osmode" os) ;歸還物件鎖點值
)
;=======================================================
(defun drawes (ip len R num th / p0 p1 px pe1 pe2 d d/2)
(setq p0 (polar ip (/ pi 2.0) R)
pe1 (polar ip (- (/ pi 2.0)) R)
d (/ len n)
d/2 (/ d 2.0)
p1 (polar pe1 0.0 d/2)
px (polar ip 0.0 len)
pe2 (polar px (- (/ pi 2.0)) R)
)
(command "arc" "c" ip p0 pe1)
(command "pline" p0)
(repeat num
(command p1)
(setq p0 (polar p0 0.0 d)
p1 (polar p1 0.0 d)
)
(command p0)
)
(command "")
(command "arc" "c" px pe2 p0)
(command "rotate" "all" "" ip th)
)
;====================================
(princ "\n<2D彈簧繪製> c:es\n")
(princ)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.37.123
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):