明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4213|回复: 10

AutoCAD环境下的机构动画演示

  [复制链接]
发表于 2004-6-5 21:01:00 | 显示全部楼层 |阅读模式

AutoCAD是一种非常普及的设计软件,广泛应用于机械、电子、建筑、服装等不同领域,以它强大的实用性、良好的用户界面、优良的价格性能比、简单易学等诸多优点,深受广大工程技术人员的青睐。更为重要的是它具有开放的体系结构,允许用户在几乎所有方面对其扩充和修改,能更大限度的满足用户的特殊要求。AutoCAD的二次开发方法很多,较为常见和传统的是基于AutoLISP语言上的开发。

本文试以机械传动中最常见的四杆机构在AutoCAD环境中的动画演示和运动分析为例,说明在此环境下实现动画的一种方法。其实,任何动画都是多个相近的瞬时静止画面(即帧)的集合连续播放。在AutoCAD中也是这样,只不过我们对机构模型进行更

为精确的定量化,添加了相应的几何约束,如图的曲柄摇杆机构,曲柄受到支点A的约束只能绕A点做旋转运动,由于它的转动,带动连杆和摇杆在不同的约束下做相应的运动,是一对一的对应关系,是符合我们推断出的方程式的运动,这个方程式,就是我们用AutoLISP语言实现动画和运动分析的关键。我们先给出机构的初始位置和一个曲柄旋转的增量,下一个位置就交给计算机计算了。在这里我们可以用多义线画出模型连线,机构的运动,也就成了不时的修改该多义线的顶点(亦即铰链)的位置。

有关四杆机构的运动方程式这里就不再敖述,下面简述此程序命令的使用方法和设计思路:

把后附程序文件拷贝到任何文字处理软件上(如记事本),并以 *.lsp格式存盘(如sg.lsp),该程序文件应放在CAD能搜索的目录下(如..\program files\acad2000\Support),打开AutoCAD,在命令行内输入(load "sg") 即可调入该程序,成功调入时,命令行内出现“《四杆机构运动分析程序》已成功装载,输入sg可运行!”此时,在命令行内输入sg即可运行该程序。也可以在 Tools->Load Application...菜单按钮下,调入程序加载对话框,找到已经存盘的sg.lsp文件,按下Load按钮,也可调入程序文件。后一种方法的优点是可以不受搜索路径的限制。如果不能正确调入程序,请检查sg.lsp是否保存在适当的目录下,文件内容是否完整。

正确调入程序后,应该事先做好该机构的初始状态位置,然后再在命令行内输入sg,运行命令吧!依次捕捉曲柄接地的铰链A,曲柄与连杆的铰链,连杆与摇杆的铰链和摇杆接地的铰链B四个点。输入V可调节旋转速度,输入C可实现自动连续观察,输入L可自动画出运动轨迹,在默认情况下,直接按回车键,可步进观察。在进行连续观察时,只能用取消键[Esc]退出运行。退出时,给出需要的相应数据(根据需要,添加不同的扩充语句)。

我们通过观察和测试后,可能要对机构做适当的调整,为了省去再画初始位置图和再捕捉接点位置的麻烦,我们可以用夹点方式对机构做适当的调整。只有在删除原机构模型后,才能再次重建模型。

用此方法,我们还能够创建其它机构模型,如曲柄滑块机构等,也可以是几种简单机构组成的复合机构模型。本人已成功创建了一个分析GC6150M高速平缝机送布机构的机构模型程序,提高了分析问题和解决问题的速度。当然,我们也可以运用其它绘图软件如Pro-E,SolidWorks等进行机构分析,同样也能达到我们的目的,但它需要我们掌握其运用的能力。


附:sg.lsp 文件内容
(defun c:sg(/ os ff1 w1 w2 w tt x y e f g kf tis)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(initget 7 " ")
(if ba (setq jc (entget ba)))
(setq tis nil)
(if (null jc)(setq ba nil))
(if (null ba)(setq ppa (getpoint "\n请连续给出四个铰链点的起始位置\n第一点:")))
(if (null ba)(setq ppb (getpoint ppa "\n第二点:")))
(if (null ba)(setq ppc (getpoint ppb "\n第三点:")))
(if (null ba)(setq ppd (getpoint ppc "\n第四点:")))
(if ba
(progn
(setq tm 1 jc (cdr jc))
(while jc
(if (= '10 (car (car jc)))
(progn (cond ((= tm 1)(setq ppa (cdr (car jc))))
((= tm 2)(setq ppb (cdr (car jc))))
((= tm 3)(setq ppc (cdr (car jc))))
((= tm 4)(setq ppd (cdr (car jc))))
)
(setq tm (1+ tm))
)
)
(setq jc (cdr jc))
)
)
)
(setq ll1 (distance ppa ppb))
(setq ll2 (distance ppb ppc))
(setq ll3 (distance ppd ppc))
(if (null ba) (progn (command "pline" ppa ppb ppc ppd "")
(setq ba (entlast))
)
)
(setq ff1 (angle ppa ppb))
(setq w1 (angle ppc ppb) w2 (angle ppc ppd))
(if (< w1 w2) (setq w 1))
(if (null zzs)(setq zzs 0.1 kai 0))
(princ " \n[Esc]退出\\V速度\\C连续\\L轨迹线\\<步进运行>:")
(setq tt (strcase (getstring)))
(if (= tt "V")(get_v))
(while (or (= tt "L")(= tt "")(= tt "C"))
(setq x (- (car ppd) (car ppa)) y (- (cadr ppd) (cadr ppa)))
(setq e (* 2 ll3 (- x (* ll1 (cos ff1)))))
(setq f (* 2 ll3 (- y (* ll1 (sin ff1)))))
(setq g (- (+ (* x x) (* y y) (* ll1 ll1) (* ll3 ll3)) (* ll2 ll2) (* 2 x ll1 (cos ff1)) (* 2 y ll1 (sin ff1))))
(setq kf (- (+ (* e e) (* f f)) (* g g)))
(if (> 0 kf)(setq zzs (- 0 zzs) kai 1)(setq kai 0))
(if (= kai 0) (if (= w 1)(setq ff3 (* 2 (atan (/ (+ f (sqrt kf)) (- e g))))) (setq ff3 (* 2 (atan (/ (- f (sqrt kf)) (- e g)))))))
(command "pedit" ppa "e" "n" "m" (polar ppa ff1 ll1) "n" "m" (polar ppd ff3 ll3) "x" "")
(if (= tt "L")(command "line" ppc (polar ppd ff3 ll3) "" "line" ppb (polar ppa ff1 ll1) ""))
(setq ppb (polar ppa ff1 ll1) ppc (polar ppd ff3 ll3))
(if (not (or (= tt "L")(= tt "C")))(setq tt (strcase (getstring)) tis 0)(setq tis 1))
(if (= tt "V")(get_v))
(setq ff1 (+ ff1 zzs))
)
)

(defun get_v()
(initget 1 " ")
(setq zzs (getreal "\n 输入速度(0.1~5)<1>:"))
(if (= zzs "") (setq zzs 1))
(setq zzs (* zzs 0.1) kai 0)
(princ " \n[Esc]退出\\V速度\\C连续\\L轨迹线\\<步进运行>:")
(setq tt (strcase (getstring)))
(if (= tt "V")(get_v))
)
(princ "《四杆机构运动分析程序》已成功装载,输入sg可运行!")  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1金钱 +20 贡献 +3 激情 +5 收起 理由
gzy + 20 + 3 + 5 【好评】好文章

查看全部评分

发表于 2004-6-21 08:17:00 | 显示全部楼层
高手,我还没有学那一课。
发表于 2004-11-3 17:53:00 | 显示全部楼层
太高深了!!!
发表于 2004-11-3 18:20:00 | 显示全部楼层
本帖最后由 作者 于 2004-11-15 15:54:59 编辑

呵呵!看看我的这个!





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-11-7 16:03:00 | 显示全部楼层
呵呵


不错


我只会画几个小图


不会做动画


我用inventor做过机器装配动画


呵呵还想学点新的


呵呵
发表于 2004-11-7 20:35:00 | 显示全部楼层
厉害,太厉害了!
发表于 2004-11-9 12:33:00 | 显示全部楼层
能不能再详细介绍命令,因为我笨
发表于 2004-11-15 15:39:00 | 显示全部楼层
好好学习一下AutoLISP语言,相信大家都能够做出来简单的东西
发表于 2004-11-15 21:15:00 | 显示全部楼层
太简单了.不就是几个构件绕着轴转嘛
发表于 2004-11-15 21:56:00 | 显示全部楼层
不错,我想试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 11:28 , Processed in 0.188039 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表