作者Egriawei (下课中)
站内Cad_Cae
标题Re: [问题] AutoCad画2D的弹簧?
时间Fri Jul 20 23:34:41 2007
※ 引述《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