当前位置:首页 >> 交通运输 >>

典型平面连杆机构的运动分析及程序设计


洛阳理工学院毕业设计(论文)

典型平面连杆机构的运动分析及程序设计 摘要
Visual LISP 语言是一种内嵌在 AUTO CAD 系统的智能编程语言,它可以直接 调用几乎全部的 AUTO CAD 命令,不仅具有一般高级语言的基本结构和功能,而且 具有强大的图形处理功能,是对系统进行二次开发和实现参数化绘图程序设计的重 要工具。 本文主要介绍在 AutoCAD 环境下 ,用 Autolisp 语言和对话框控制语言 (DCL) 进行机构运动分析及仿真,它具有操作方便、计算和绘图速度快等特点 ,可以大大 提高设计效率。 采用 AutoCAD 本身具有的二次开发功能, 利用其内嵌的 Auto LISP 语言编制绘图程序,只需通过 DCL 对话框进行简单的参数设定,系统就能自动完 成图形的绘制过程,实现图形参数化及智能化,使设计者从繁琐重复的绘图劳动 中解放出来,提高绘图的效率。程序采用模块化设计, 用 Autolisp 语言编制而成, 在 AutoCAD 环境下运行。 每种类型机构的运动分析由一个独立的函数完成, 各函 数由主程序控制。通过调用绘图程序绘制出位移、 速度、 加速度曲线,然后根 据这些曲线判断机构的运动性质。

关键字:AutoCAD,机构运动分析,DCL 对话框,Autolisp,运动仿真

I

洛阳理工学院毕业设计(论文)

TYPICAL ANALYZING THE MOVEMENT OF PLANAR LINKAGE MECHANISM AND PROGRAM DESIGN ABSTRACT
Visual LISP language is a kind of embedded in the intelligent AUTO CAD system programming languages. It can directly call almost all of the AUTO CAD command, not only has generally high level language basic structure and function, but also has powerful graphics processing functions of the system, is the second development and implementation of parameterized drawing program design the important tool. Using AutoCAD itself has the second development function, use the Auto embedded inside LISP language program, simply by compiling drawing simple dialog DCL parameter setting, system can automatically accomplish graphic rendering process to realize a graphics parametric and intelligent, enables designers from repeatedly repetitive drawing labor liberate, improve the efficiency of the drawing. Program using modular design, use Autolisp language and become, in AutoCAD compiled under the environment of operation. Each type institutions by an independent movement analysis function of each function complete, by main program control. By calling the drawing program mapped displacement, velocity and acceleration curves, and then according to these curves as kinematic properties of judgment.

KEY WORDS: mechanism motion analysis, AutoCAD, Autolisp, dialog, DCL motion simulation

II

洛阳理工学院毕业设计(论文)






言 ................................................................................................ 1 1.1 平面连杆机构运动分析及仿真的现状 ................................ 3 1.2 课题的主要内容与意义 ....................................................... 4 1.3 连杆机构的历史回顾和发展趋势 ........................................ 5

第 1 章 连杆机构与仿真 ................................................................... 3

第二章 Visual Lisp 语言基础 ............................................................. 6 2.1 Visual Lisp 发展历史 ............................................................ 6 2.2 Visual Lisp 介绍—解释性语言 ............................................. 6 2.3 Visual Lisp 的特点 ................................................................ 7 2.4 Visual Lisp 的功能 ................................................................ 7 2.4.1 Visual Lisp 程序格式和结构特点 ................................ 8 2.5 Visual Lisp 数据类型 ............................................................. 8 2.6 Visual Lisp 常用函数 ............................................................. 9 第 3 章 绘图程序软件 AutoCAD .................................................... 10 3.1 AutoCAD ............................................................................. 10 3.2 AUTOCAD 发展现状 ......................................................... 10 3.3 意义 ..................................................................................... 11 第 4 章 连杆机构及其运动分析 ..................................................... 13 4.1 机构的简介 ......................................................................... 13 4.2 平面机构具有确定运动的基本条件 .................................. 14 4.3 运动分析的目的 ................................................................. 14 4.4 运动分析的基本方法 ......................................................... 15 4.5 典型的机构运动仿真示例 ................................................. 15 4.5.1 曲柄摇杆机构处于不同位置的分析 ......................... 16 4.5.2 拉包机机构的运动特点分析 ..................................... 18 5.5.3 铰链-滑块机构运动分析 ......................................... 21 4.5.4 牛头刨床机构的运动分析 ......................................... 22 第 5 章 加工仿真 ............................................................................. 24
III

洛阳理工学院毕业设计(论文)

5.1 基本原理 .............................................................................. 24 5.2 加工仿真程序设计结构 ...................................................... 24 5.3 典型的简单零件的加工模拟 ............................................... 26 5.3.1 简单圆类零件的加工 ................................................ 26 5.3.2 星类零件的加工 ........................................................ 27 5.4 典型的复杂零件的加工模拟 ............................................... 28 5.4.1 轴承座的加工 ........................................................... 29 5.4.2 工形零件的加工 ....................................................... 30 5.4.3 弧形零件的加工 ....................................................... 31 5.4.4 吊钩的加工 .................................. 错误 !未定义书签。 结 论 ................................................................................................ 32 谢 辞 ................................................................................................ 33 参考文献 .......................................................................................... 34 附 录 ................................................................................................ 36

IV

洛阳理工学院毕业设计(论文)





计算机辅助设计指利用计算机及其图形设备帮助设计人员进行设计工 作,简称 CAD 。 在工程和产品设计中,计算机可以帮助设计人员担负计 算、信息存储和制图等项工作。在设计中通常要用计算机对不同方案进行 大量的计算、分析和比较,以决定最优方案;各种设计信息,不论是数字 的、文字的或图形的,都能存放在计算机的内存或外存里,并能快速地检 索;设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交 给计算机完成;由计算机自动产生的设计结果,可以快速做出图形显示出 来,使设计人员及时对设计做出判断和修改;利用计算机可以进行与图形 的编辑、放大、缩小、平移和旋转等有关 的图形数据加工工作 。 CAD 能 够减轻设计人员的劳动,缩短设计周期和提高设计质量。AutoCAD 允许用 户定制菜单和工具栏,并能利用内嵌语言 Visual Lisp 、 VBA 、 ADS 、 ARX 等进行二次开发还可以加载运行脚本,实现系统本身所没有的功能,比如 三维自动旋转。 AutoLISP 是由 Autodesk 公司开发的一种 LISP 程序语言, LISP 是 List Processor 的缩写。 通过 autolisp 编程, 可以节省工程师很多时间。 AutoLISP 语言作为嵌入在 AutoCAD 内部的具有智能特点的编程语言,是开发应用 AutoCAD 不可缺少的工具 AutoCAD 软件包中包含大多数用于产生图形的 命令,但仍有某些命令末被提供。例如,AutoCAD 中没有在图形文本对象 内绘制矩形及作全局改变的命令。通过 AutoLISP ,你可以使用 AutoLISP 程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程 序。事实上,可以用 AutoLISP 编制任何程序,或把它嵌入到菜单中,这 样定制你的系统会取得更高的效率。 机构的运动运动分析,机构是由两个或两个以上构件通过活动联接形 成的构件系统按组成的各构件间相对运动的不同, 机构可分为平面机构 (如 平面连杆机构、圆柱齿轮机构等)和空间机构(如空间连杆机构、蜗轮蜗 杆机构等) ; 按运动副类别可分为低副机构 (如连杆机构等) 和高副机构 (如 凸轮机构等) ; 本文主要介绍平面连杆机构,平面连杆机构中最常用的是四
1

洛阳理工学院毕业设计(论文)

杆机构,它的构件数目最少,且能转换运动。多于四杆的平面连杆机构称 多杆机构,它能实现一些复杂的运动,但杆多且稳定性差。面连杆机构运 动设计的方法主要是几何法和解析法,此外还有图谱法和模型实验法。几 何法是利用机构运动过程中各运动副位置之间的几何关系,通过作图获得 有关运动尺寸,所以几何法直观形象,几何关系清晰,对于一些简单设计 问题的处理是有效而快捷的,但由于作图误差的存在,所以设计精度较低。 解析法是将运动设计问题用数学方程加以描述,通过方程的求解获得有关 运动尺寸,故其直观性差,但设计精度高。随着数值计算方法的发展和计 算机的普及应用,解析法已成为各类平面连杆机构运动设计的一种有效方 法 [10] 。 仿真,当所研究的系统造价昂贵、实验的危险性大或需要很长的时间 才能了解系统参数变化所引起的后果时, 仿真是一种特别有效的研究手段。 仿真的重要工具是计算机。仿真与数值计算、求解方法的区别在于它首先 是一种实验技术。仿真的过程包括建立仿真模型和进行仿真实验两个主要 步骤。利用计算机实现对于系统的仿真研究不仅方便、灵活,而且也是经 济的。因此计算机仿真在仿真技术中占有重要地位,在本次设计中用计算 机仿真主要是对刀具轨迹的仿真,能够在产品未生产之前进行模拟加工, 减少产品的报废率,因而具有很高的使用价值。

2

洛阳理工学院毕业设计(论文)

第 1 章 连杆机构与仿真

1.1 平面连杆机构运动分析及仿真的现状
机构运动分析是机构运动学的一个分支,即已知机构主动输入,构件 尺度及构件装配构形,确定从动件的运动规律(包括奇异位形问题及运动 误差问题) ;或已知机构主动输入和构件尺度,确定所有装配构形并从中选 优,然后确定从动件的运动规律。机构的运动分析,就是对机构的位移、 速度和加速度进行分析。有了这些运动参数,才能分析、评价现有机械的 工作性能,同时它也是优化综合新机械的基本依据。通过位移的分析,可 以确定某些构件运动所需的空间或判断它们运动时是否发生相互干涉;还 可以确定从动件的行程;考察构件或构件上某点能否实现预定位置变化的 要求 [12] 。 通过对速度的分析,可以确定机构中从动件的速度变化是否满足工作 要求。同时速度分析也是机构的加速度分析和受力分析的基础。机构的加 速度分析,是计算惯性力不可缺少的前提条件。在高速机械中,要对其动 强度、振动等动力学性能进行计算,这些都与动载荷或惯性力的大小和变 化有关。因此,对于高速机械,加速度分析不能忽略。平面连杆机构运动 分析的方法有很多,主要有图解法、解析法和实验法。当需要简捷直观地 了解机构的某个位置的运动特性时,采用图解法比较直观、方便,但其缺 点是精度不高,而且当对机构一系列位置进行运动分析时,需要反复作图, 工作繁琐。图解法包括速度瞬心法和相对速度图解法。当需要确切地知道 或要了解机构在整个运动循环过程中的运动特性时,采用解析法并借助计 算机,不仅可获得很高的计算精度及一系列位置的分析结果,并能绘出机 构相应的运动曲线图。国外 CAD 领域中关于机构分析和仿真技术的研究 开 展 的 较 早 , 美 国 CADSI 等 专 业 公 司 的 机 构 运 动 学 和 动 力 学 仿 真 软 件 DADS,ADAMS 等 早 已 商 品 化 。 UG,PRO/ENGINEER 等 大 型 的

CAD/CAM/CAE 软件 都有 自 己的 机 构分 析 模块 [13] 。机 构分 析 与 仿真 软 件 在全球的内燃机、飞机、汽车、工程机械、冶金机械、石油钻采机械、纺
3

洛阳理工学院毕业设计(论文)

织机械、轻工机械等行业中得到广泛的应用。国内关于机构运动学分析和 仿真技术的研究也发展的较早,但对相关软件的研究起步却较晚。这类软 件可分为三类:第一类用于教学目的,使用 VB 等软件工具开发一些常见 机构的动画演示;第二类是出于某一工程实际应用需要所编写的运动学分 析软件,这些软件一般能相应解决某一类机构的问题,而通用性受到限制; 第三类是一些高校自主研发的比较通用的运动学分析软件,比如大连理工 大学研发的平面连杆机构分析与仿真专家系统,就能实现平面连杆机构的 运动学分析。在一些机构分析及仿真论文中也有类似研究 [14] 。

1.2 课题的主要内容与意义
连杆机构的最基本形式是平面四杆机构,它是其它连杆机构的基础。 所以,对平面四杆机构进行研究可以概括连杆机构内在的基本原理,从而 用以连杆机构的设计。 机构运动学综合是按照给定的运动特性对机构进行系统的设计的过 程,包括型综合和尺度综合两大主要内容,主要综合方法有解析法、作图 法和实验法。作图法和实验法工作量大,设计精度低,仅适用于对机构精 度要求不高的场合。近几十年来,随着工业技术的高速发展,人们对机构 的复杂程度和精度要求越来越高,作图法和实验法已不能满足要求,而基 于计算机辅助设计( CAD )的解析法得到了广泛的应用。本课题的主要内 容是平面四杆机构的连杆曲线及轨迹综合,其意义在于:深入研究计算机 在设计和仿真连杆机构连杆曲线方面的应用,从而指导实践;总结出四杆 机构轨迹综合的理论基础,从而指导多杆或复杂的低副平面机构的综合。 此课题的主要目标是系统地对平面四杆机构连杆曲线进行研究,从而来获 得连杆机构基本的原理和综合方法,以便在实际中得到应用;主要特色是 在各个设计进度中将会大量应用计算机高级语言编程来辅助设计和仿真平 面四杆机构。

4

洛阳理工学院毕业设计(论文)

1.3 连杆机构的历史回顾和发展趋势
在各种机构型式中,连杆机构的特点表现为具有多种多样的结构和多 种多样的特性。仅就平面连杆机构而言,即使其连杆件数被限制在很少的 情况下,大量的各种可能的结构型式在今天仍难以估计。它们的特性在每 一方面是多种多样的,以致只能将其视为最一般形式的机械系统。 在古代和中世纪许多实际应用方面的发明中就有连杆机构,例如我国 东汉时期张衡发明的地震仪、达?芬奇所描述的椭圆车削装置等, 在这些发 明中,都巧妙地应用了平面连杆机构。在近代,随着工业越来越高度自动 化,在大量的自动化生产线上,许许多多的连杆机构得到了应用。特别是 机器人学成为目前一个前沿学科,连杆机构又有了新的应用,例如日本等 国家开发的类人型机器人等。在仿生学上,连杆机构巧妙地实现了人类关 节的功能,例如国外研制的六杆假肢膝关节机构 [1] 。 当今,工业生产自动化程度越来越高,连杆机构以及它与其它类型的机 构组成的组合机构将得到更加广泛的应用,特别是形状丰富多样的连杆曲 线将应用在更多的场合中。

5

洛阳理工学院毕业设计(论文)

第二章 Visual Lisp 语言基础

2.1 Visual Lisp 发展历史
AutoLISP 语 言作 为 一种 嵌入 在 AutoCAD 内部的 LISP 语 言,它 采 用了与标准 LISP 语言最为相近的语法和约定。作为第一代 AutoCAD 用 户化 CAD 开的标准语言, AutoLISP 的优点是显而易见的: 源于 LISP 的 AutoLISP 语言语法规则简单、灵活且易学; AutoCAD 的二次开发,主要 是根据各专业的具体要求,实现对 AutoCAD 的图形实体和各种参数表的 数据进行存取和编辑,或是对 AutoCAD 进行文件的传输。但是随着计算 机技术的飞速发展,CAD 在工程中的应用层次也在不断提高,集成化、智 能化的 CAD 系统已成为当今 CAD 工程的主流,这样给开发 CAD 系统带 来的是相关设计,计算处理越来越多,程序设计越来越复杂、源代码越来 越庞大,这使得 AutoLISP 的不足变得日益明显。由于 AutoLISP 存在自 身无法解决的问题,为了适应 AutoCAD 环境下的较大型用户化 CAD 应 用系统的开发, Autodesk 公司从 AutoCAD R11 开始,推出采用 C 语言 的开发环境 ADS ( Advance Development System ) ,借助 C/C++ 语言的性 能和资源,完成许多 AutoLISP 语言难以实现的任务。随着 Windows 平 台、面向对象编程技术等先进技术的日益成熟和普及,AutoCAD 也和其他 系统一样迫切需要一种全新的面向对象编程的开发环境。在 AutoCAD R13 之后,又推出了新一代的直接面向对象的二次开发工具 ARX ( AutoCAD Runtime Extension ) 以及更新的 AutoCAD R14 ObjectARX SD 开发工具包。 为开发高自动化程度、高集成化及高性能的用户 CAD 系统提供了一种极 为有效的工具。是 AutoCAD 目前用户化的主流开发工具。

2.2 Visual Lisp 介绍—解释性语言
Visual Lisp 是自带 的 一个集 成的 可视化 autolisp 开发 环境,最 早的 AUTOLISP 程序需要用文本编辑工具如记事本等编辑,然后在 autocad 中
6

洛阳理工学院毕业设计(论文)

加载调试, 很不方便。 从 autocad 2000 开始, 有了集成的开发环境: VISUAL LISP 。 作为开发工具, Visual LISP 提供了一个完整的集成开发环境 ( IDE ) , 包括编译器、调试器和其他工具,可以实时调试 AUTOLISP 命令。定义 AutoCAD 的效率。Visual LISP 具有自己的窗口和菜单,但它并不能独立于 AutoCAD 运行。从 AutoCADR14 开始, VisualLISP 被引入到 AutoCAD 中, 它增强并扩展了 AutoLISP 语言,可以通过 MicrosoftActiveXAutomation 接 口与对象交互,并扩展了 AutoLISP 响应事件的能力。VisualLISP 作为一个 完整的集成开发环境( IDE ) ,具有自己的窗口和菜单,但它并不能独立于 AutoCAD 运行。当用户从 VisualLISPIDE 中运行 AutoLISP 程序时, 经常 需要 与 AutoCAD 图形交换或在命令窗口响应程序提示。

2.3 Visual Lisp 的特点
与 AUTOLISP 完全兼容: VISUAL LISP 采用了向标准 LISP 语言看齐 的标准。面向对象的编程技术:可通过关系型数据库套用;允许使用现成 的 AUTOLISP 套装应用程序来调用或转换一个 ADX 或 ARX 模块。 功能强 大的集成环境, 它采用即载即编译技术来实现与 AUTOLISP 完全兼容的环 境;它采用支持 AUTOLISP 与 DCL 色彩编码以及其他 AUTOLISP 语言的 全屏幕文版编辑器;它支持多种检验器 [9] 。其中,语法检验器可以用来检 验 AUTOLISP 程序结构错误和内部函数中的变量错误。 综合检验器可以对 数据结构中的变量和表达式值的浏览和编辑功能;它可以在一个窗口执行 AUTOLISP 的原始代码,而在 AutoCAD 窗口同时显示该程序所执行的结 果;它可把 AUTOLISP 的原程序编译成二进制文件,并将之包装成一个 ADX 或 ARX 模块;

2.4 Visual Lisp 的功能
LISP 语言于 1959 年创立。其主要功能:算术运算、文字处理;调用 AUTOCAD 的系统命令;程序自动绘图;自定义 AUTOCAD 系统命令;读 写 AUTOCAD 系 统 变 量 和 外 部 文 件 ; 它 高 级 语 言 实 现 数 据 共 享 ; 对
7

洛阳理工学院毕业设计(论文)

AUTOCAD 命令进行扩展。如: C 、 VB 、 DELPHI 等在 AUTOCAD 系统上 进行软件开发。 2.4.1 Visual Lisp 程序格式和结构特点 Visual Lisp 语言函数通用规则;Visual Lisp 的函数都要包含到括号中, 括号成对出现。一对括号包围单个函数。Visual Lisp 运算规则为从左至右。 Visual Lisp 括号内的第一个字符串是运算符。 内存变量;Visual Lisp 语言内存变量同其他系统变量一样工作。Visual Lisp 的内存变量使用 SETQ 函数来赋值,它需要两个以上的变量,第一个 是内存变量,第二个是内存变量的值。内存变量名以字母开头,长度任意, 不包括空格和分隔符。嵌套; Visual Lisp 可以嵌套 100 个深度,系统总是 从嵌套最深处开始计算。系统变量; Visual Lisp 系统变量为一些特殊的内 存变量, 与 AUTOCAD 的绘图环境有关。 Visual Lisp 有一百多个系统变量, 详见《 AUTOCAD 使用手册》 。系统变量的值通过 SETVAR 函数来改变。 弧度度量角度时 AUTOLISP 使用弧度 [4] 。

2.5 Visual Lisp 数据类型
符号:又称变元, Visual Lisp 使用符号存放数据。表:用圆括号括起 来的一组数据,如(元素 1 ,元素 2 ,.... ) 。如( 2.5 3.6 4.1 ) 、 ( sin(*0.5pi)). 字符串:可任意长。字符串的最大长度为 100 ;另任何字符都可以用“ |nnn ” 的格式表示,其中反斜杠“ \" 是 ASCII 码的前导标识字符, “ nnn ”是该字 符八进制的 ASCII 码。 例如, 字符串 ABCD 也可表示为 “ \101\102\103\104". 整数: Visual Lisp 内部使用 32 位值,但 Visual Lisp 和 AUTOCAD 之间的 数据传递使用 16 位。实数: -1 和 1 之间的实数必须以 0 开头。文件描述 符:用于描述 Visual Lisp 所需打开的文件,类似于文件指针。实体名:实 体名是一个分配给实体的数字符号,是一个 Visual Lisp 所维护的文件中的 指针;通过该指针 Visual Lisp 能够找到该实体在数据库中的记录和它显示 在屏幕上的矢量。选择集:包含一个或多个实体的组。子程序和外部子程 序:所有 Visual Lisp 的函数都是内部子程序,一个子程序可以用 DEFUN
8

洛阳理工学院毕业设计(论文)

函数重新定义,与之同名的函数将被冲掉,外部子程序是用 ADS 应用程序 定义的子程序。表达式: Visual Lisp 表达式具有如下形式,每一个函数本 身是个单独的表达式,每个表达式都返回一个值,该值可被引用该表达式 的其他外层表达式所使用。

2.6 Visual Lisp 常用函数
Or 函数:格式为 or expr.... 功能主要是求 or 运算,找到任意一排非 nil 表达式,则返回 T, 否则返回 nil 。 And 函数:格式为 and expr.... 功能主要是 找到任意一 nil 表达式,则返回 F, 否则返回 T 。Defun 函数:定义一个有名 函数。主程序中调用格式为: ( Defun c:daocha). 其中 c:daocha 为函数名。 C: 不是指一个磁盘驱动器,而是指一个用于命令行的函数,中间部分为构 成函数的表达式。Polar 函数:求一点的极坐标。函数返回一个点,该点的 相对角度为 angle, 与点 pt 相距 discante.Angle 是从 pt 点到返回点以 X 轴开 始逆时针方向计算。 Getstring 函数:输入字串符。若有且非空,输入串可 以包含空格,以回车结束:否则输入的串可以有空格或回车结束。 |prompt 为提示。 Command 函数:执行 AUTOCAD 命令。为避免重新定义,命令 前加小圆点,最后空串等效于回车键。 (可以不要)Progn 函数:按顺序计 算每个《表达式》 ,返回最后表达式的求值结果,可用 Progn 完成多个表达 式的计算,并把它与 if 函数搭配使用。 Cond 函数:计算每个表项中的第 一项,直到有一项中的返回值不为 nil ,函数返回该表项表达式的值。如果 子 表 中 只 有 一 个 表 达 式(无 结 果 项) ,则 返 回 测 试 表 达 式 的 值。可 以 用 t 作为缺省测试表达式。Repeat 函数:循环结构函数表达式( Repea(数) (表 达式) .... ) (数)表示任意一个正整数,表示循环次数,返回最后(表达 式)的计算结果。

9

洛阳理工学院毕业设计(论文)

第 3 章 绘图程序软件 AutoCAD

3.1 AutoCAD
AutoCAD 是目前微 机上应用 最为 广泛的 通用交互 式计 算机辅 助绘图 设 计 软 件 包 。 AutoCAD 的 通 用 性 为 其 二 次 开 发 提 供 了 必 要 条 件 , 而 AutoCAD 放的体系 结构则使其二 次开发 成为可能。在 很多行 业中都会使 用 AutoCAD 软件,包括机械、土木工程、建筑和电力等等,但是每个行 业都有其自身的特点。AutoCAD 软件主要是由工程设计者和绘图者使用, 如 何 提 高 其 对 AutoCAD 软 件 的 使 用 效 率 ? 如 何 更 短 的 时 间 可 以 完 成 设 计和绘图?这些问题一直困扰着我们,直到推出新一代可视化 LISP 编程 软件— Visual LISP 。本文主要是论述在机械行业中我们可以对 AutoCAD 的二次开发,设计和编制出可以提高设计者或者绘图者工作效率的程序。 主要使用 Visual LISP 对 AutoCAD 二次开发,主要完成了以下功能:丰 富 AutoCAD 的绘图功能; . 在已知斜面上绘图和写文字, 增加初始化设置, 对于单行文字自动加注圆, 自动标注粗糙度, 快速计算封闭曲线的面积; 自 动生成常用的标准零件图;对数据表格的读取处理和运用 [3] 。

3.2 AUTOCAD 发展现状
AutoCAD 是 由 美 国 Autodesk 公 司 于 二 十 世 纪 八 十 年 代 初 为 微 机 上 应用 CAD 技术而开发的绘图程序软件包,经过不断的完美,现已经成为 国际上广为流 行的绘 图工具。 AutoCAD 可以绘制任意 二维和 三维图形, 并且同传统的手工绘图相比,用 AutoCAD 绘图速度更快、精度更高、而 且便于个性,它已经在航空航天、造船、建筑、机械、电子、化工、美工、 轻纺等很多领域得到了广泛应用, 并取得了丰硕的成果和巨大的经济效益。 AutoCAD 具有良好 的用户界面,通过交 互菜单或命令 行方式 便可以进行 各种操作。它的多文档设计环境,让非计算机专业人员也能很快地学会使 用。在不断实践的过程中更好地掌握它的各种应用和开发技巧,从而不断
10

洛阳理工学院毕业设计(论文)

提高工作效率。 AutoCAD 具有广泛的适 应性,它可以 在各种 操作系统支 持的 微 型计 算 机 和工 作站 上 运行, 并 支持 分辨 率 由 320 × 200 到 2048 × 1024 的各种图形显示设备 40 多种,以及数字仪和鼠标器 30 多种,绘图 仪和打印机数十种,这就为 AutoCAD 的普及创造了条件。 AutoCAD 的发展过 程可分为 初级 阶段、发展阶段、高 级发展 阶段、 完善阶段和进一步完善阶段五个阶段。 1). 在初级阶段里 AutoCAD 更新了五个版本: 1982 年 11 月,首次 推出了 AutoCAD 1.0 版本; 1983 年 4 月, 推出了 AutoCAD 1.2 版本; 1983 年 8 月, 推出了 AutoCAD 1.3 版本; 1983 年 10 月, 推出了 AutoCAD 1.4 版本; 1984 年 10 月,推出了 AutoCAD 2.0 版本 [2] 。 2). 在发展阶段里 AutoCAD 更新了以下版本: 1985 年 5 月,推出了 AutoCAD2.17 版本和 2.18 版本; 1986 年 6 月,推出了 AutoCAD 2.5 版 本; 1987 年 9 月后,陆续推出了 AutoCAD 9.0 版本和 9.03 版本。 3). 在高级发展阶段里, AutoCAD 经历了三个版本,使 AutoCAD 的 高级协助设计功能逐步完善。它们是 1988 年 8 月推出的 AutoCAD 10.0 版本、 1990 年推出的 11.0 版本和 1992 年推出的 12.0 版本 [3] 。 4). 在完善阶段中, AutoCAD 经历了三个版本,逐步由 DOS 平台转 向 Windows 平台: 1996 年 6 月, AutoCAD R13 版本问世; 1998 年 1 月, 推出了划时代的 AutoCAD R14 版本; 1999 年 1 月, AutoCAD 公司推出了 AutoCAD2000 版本。 5). 在进一步完善阶段中,AutoCAD 经历了两个版本,功能逐渐加强: 2001 年 9 月 Autodesk 公司向用户发布了 AutoCAD2002 版本; 2003 年 5 月, Autodesk 公司在北京正式宣布推出其 AutoCAD 软件的划时代版本— AutoCAD2004 简体中文版。

3.3 意义
随着设计软件的不断推出,原使用绘图板进行模拟的时代已经过去。 现在使用软件绘图是设计人员必备的技能,但是如何更加快捷高效的完成 设计这就需要使用软件的二次开发,建立相对的数据库。机械设计绘图时
11

洛阳理工学院毕业设计(论文)

最常用的软件是 AUTOCAD 。 AutoCAD 是美国 Autodesk 公司推出的一种 通用的微机辅助绘图和设计软件包。1998 年 3 月底宣布推出新一代可视化 LISP 编程软件— VisualLISP 。 其中 Visual Lisp 编程软件可以帮助设计者解 决上述问题。

12

洛阳理工学院毕业设计(论文)

第 4 章 连杆机构及其运动分析

4.1 机构的简介
连杆机构是由低副将若干构件连接而成的低副机构。它能够实现多种 运动规律和运动轨迹的要求,其传动性能好,能满足不同轨迹的设计要求, 而且运动副结构简单,便于加工制造。因而,它在各种机械和仪器设备中 广泛应用。 近些年来 CAD 软件在机械行业中获得广泛应用,计算机辅助绘图、 各种大型的工程计算软件以及模拟仿真软件的出现, 大大缩短了设计周期, 保证分析结果的正确性,生动形象的模拟运动过程,能够完成复杂机构的 设计与分析。无论是传统设计还是计算机辅助设计都没有明确体现出对平 面四杆机构传动性能的要求 [6] 。 以曲柄摇杆机构的图解法设计为例(图 4-1 ) 。

图 4-1 曲柄摇杆机构的图解法设计

衡量平面四杆机构传动性能的主要参数是传动角γ ,γ 越大,机构 的传动效果越好。 设计中 A 在圆弧 CF2 或 CG1 上任意一点都可以满足已 知的设计要求(行程速比系数 K 、摇杆摆角及摇杆长度) ,但各点的最小 传动角的最大值却不同,即在机构的设计中应尽量取到最小传动角的最大 值,使机构具有最佳的传动性能。图 4-1 曲柄摇杆机构的图解法设计随着
13

洛阳理工学院毕业设计(论文)

现代工业的迅猛发展,如何能将具有最佳传动角的平面四杆机构的设计变 得更简单、直接和高效就显得势在必行 [12] 。

4.2 平面机构具有确定运动的基本条件
为了使机构具有确定的相对运动,必须研究机构的自由度。机构能够 产生独立运动的数目称为机构的自由度。 平面机构具有确定运动的基本条件:机构的原动件个数应等于机构的 自由度数目;若原动件数小于自由度数,机构无确定运动;若原动件数大 于自由度数,机构在薄弱处损坏 . 平面机构的自由度的计算方法:

F ? 3n ? 2PL ? PH
式中

(1)

n ——活动构件数; PL ——机构中的低副数目; PH ——机构中

的高副数目;F ——机构中的自由度数;n=N-1, 其中 N 为机构中的构件数, 包括机架在内。 简单的平面基本杆组是由二个构件和三个低副所组成的,称为Ⅱ级杆 组,它是应用得最广泛的基本杆组。由于平面低副中有回转副 ( 用 R 表示 ) 和移动副 ( 用 P 表示 ) 两种类型,对于由二个构件和三个低副组成的Ⅱ级杆 组,根据 R 副和 P 副的数目和排列顺序的不同,它具有五种型式。除Ⅱ级 组外,还有Ⅲ级、Ⅳ级等高级的基本杆组。

4.3 运动分析的目的
机构运动分析是机构运动学的一个分支,即已知机构主动输入,构件 尺度及构件装配构形,确定从动件的运动规律(包括奇异位形问题及运动 误差问题) ;或已知机构主动输入和构件尺度,确定所有装配构形并从中选 优,然后确定从动件的运动规律。机构的运动分析,就是对机构的位移、 速度和加速度进行分析。有了这些运动参数,才能分析、评价现有机械的 工作性能,同时它也是优化综合新机械的基本依据。通过位移的分析,可 以确定某些构件运动所需的空间或判断它们运动时是否发生相互干涉;还
14

洛阳理工学院毕业设计(论文)

可以确定从动件的行程;考察构件或构件上某点能否实现预定位置变化的 要求。通过对速度的分析,可以确定机构中从动件的速度变化是否满足工 作要求。同时速度分析也是机构的加速度分析和受力分析的基础。机构的 加速度分析,是计算惯性力不可缺少的前提条件。在高速机械中,要对其 动强度、振动等动力学性能进行计算,这些都与动载荷或惯性力的大小和 变化有关。因此,对于高速机械,加速度分析不能忽略 [3] 。

4.4 运动分析的基本方法
平面连杆机构运动分析的方法有很多,主要有图解法、解析法和实验 法。当需要简捷直观地了解机构的某个位置的运动特性时,采用图解法比 较直观、方便,但其缺点是精度不高,而且当对机构一系列位置进行运动 分析时,需要反复作图,工作繁琐。图解法包括速度瞬心法和相对速度图 解法。当需要确切地知道或要了解机构在整个运动循环过程中的运动特性 时,采用解析法并借助计算机,不仅可获得很高的计算精度及一系列位置 的分析结果,并能绘出机构相应的运动曲线图。 对话框的应用有助于操作者与计算机之间彻底实现人机互换,所以是 必不可少的, 我们的对话框是使用 DCL 语句所编写的, 该语言以 ASCII 文 件形式定义对话框 , 对话框中的各种元素又 称为控件 , 控件的尺寸和功能由 控件的属性控制。运用 new_ dialog 函数初始化对话框 ; 运用 start _ dialog 函数将对话框的控制传递给 AutoCAD 以便演示给用户 ; 调用 unload dialog 函数 , 在用户响应后从内存中删除对话框。在其上可以选择所要的机构,其 界面如图 4-2 所示,对话框程序见附录。

4.5 典型的机构运动仿真示例
在 AutoCAD 中通过对一些典型的四杆机构的运动分析可以得到由位 移、速度、加速度组成的曲线,并且对这些曲线进行直观的分析可以得到 平面四杆机构的运动规律。从而根据运动规律来判断机构的合理性。且根 据这些运动规律来设计机构,是机构在实际生活中得到更合理的应用。
15

洛阳理工学院毕业设计(论文)

机构的运动是虽说是通过力的作用来实现的,但是在 AutoCAD 中运 动的分析不需要考虑力的现实作用,只需分析机构运动后由计算机运算得 到的曲线即可,这样就节省更多的时间,提到工作的效率。所以说用计算 机仿真是最省时的 [1] 。 下面就一些典型的具体实例,例如像曲柄摇杆机构、拉包机机构、铰 链-滑块机构、牛头刨床机构等,来说明一下机构的运动仿真。

4.5.1 曲柄摇杆机构处于不同位置的分析 图 4-3 图形为用户在 AutoCAD 环境中通过人机交互输入方式输入的 四杆机构以及根据机构运动特性,并通过计算机内部运行自动生成的摇杆 位移 s ,速度 v 和加速度 a 在转动一个周期 t= 2? 内变化规律的模拟运动曲 线。 机构的运动特性主要反映在摇杆的位移 s ,速度 v 和加速度 a 的变化 上,通过对一些几何参数调整,可获得不同的运动特性。并进行以下分析。

C

s

a

B

A D
o v t

图 4-3 曲柄摇杆机构的运动及产生的模拟曲线

曲柄摇杆机构摇杆为图 4-3 所示位置时,AB 为曲柄、BC 为连杆、CD
16

洛阳理工学院毕业设计(论文)

为摇杆并且处于中间位置, 四杆机构的较平稳, 回程时急回特性不太明显, 速度和加速度的曲线波动较大。

C

s

A B

D
o

a

t

v

图 4-4 曲柄摇杆机构的运动及产生的模拟曲线

曲柄摇杆机构摇杆为图 4-4 所示位置时,由图线可以看到四杆机构的 运动不平稳。这时 AB 为曲柄、 BC 为连杆、 CD 为摇杆,但是图线在回程 时显示出有明显大的急回特性,四杆机构的这种急回作用在各种机器中可 以用来节省空回行程的时间,以节省动力和提高生产率,工作效率较高, 因此在工程中有极广泛的应用

17

洛阳理工学院毕业设计(论文)

s C a B A o v t

D

图 4-5 曲柄摇杆机构的运动及产生的模拟曲线

曲柄摇杆机构摇杆为图 4-5 所示位置时,AB 为曲柄、BC 为连杆、CD 为摇杆,回程时四杆机构的加速度交平稳即回程运动较平稳,急回特性不 明显。

4.5.2 拉包机机构的运动特点分析 以四杆机构中摇杆所处的不同的位置和拉包机构中所连滑块所运动的 轨迹不同来进行分析。

18

洛阳理工学院毕业设计(论文)

E

F

C

B

A

D

图 4-6 拉包机构的四杆运动及运动所产生的模拟曲线

图 4-6 拉包机构及运动模拟曲线我们可以看出,机构运动较平稳,空 回时急回特性不太明显,工作效率不高,加速度 a 有较大波动。

C B D A

s a t v

图 4-7 拉包机构的四杆运动及运动所产生的模拟曲线
19

洛阳理工学院毕业设计(论文)

图 4-7 拉包机构及运动模拟曲线我们可以看出,机构运动不太平稳, 空回时有明显的急回特性,工作效率高,速度 v 和加速度 a 有较大波动。

C E B A D o

s

a t

v

图 4-8 拉包机构的四杆运动及运动所产生的模拟曲线

图 4-8 所示的拉包机构,采用曲柄摇杆机构作机构的主体,当主动曲 柄 AB 等速回转时,通过连杆和摇杆的动作使从动摇杆 CD 作摆动,从而使 拉包体 E 有较大变化的加速度,利用此加速度产生的惯力使被拉达到理想 的拉包效果。由运动特性曲线可知机构运动较平稳,空回时急回特性不太 明显。

20

洛阳理工学院毕业设计(论文)

5.5.3 铰链-滑块机构运动分析

s D a B C A E o t

v

图 4-9 铰链-滑块机构中四杆运动及运动所产生的模拟曲线

从图 4-9 铰链-滑块机构及运动模拟曲线我们可以看出,运动平稳缓 慢,空回时,急回特性不太明显,工作效率很低,速度 v 和加速度 a 动较 大

D B C A E o a

s

t v

图 4-10 铰链-滑块机构中四杆运动及运动所产生的模拟曲线

从图 4-10 铰链-滑块机构及运动模拟曲线我们可以看出, 运动不平稳
21

洛阳理工学院毕业设计(论文)

有较大的冲击,空回时,急回特性很大,工作效率很高,速度 v 和加速度 a 为无穷大。

D B C A E o

s

图 4-11 铰链-滑块机构中四杆运动及运动所产生的模拟曲线

从图 4-11 铰链-滑块机构及运动模拟曲线我们可以看出, 运动平稳缓 慢,空回时,急回特性不太明显,工作效率很低,速度 v 和加速度 a 波动 较大。

4.5.4 牛头刨床机构的运动分析 图 4-12 为牛头刨床机构,采用曲柄摇杆机构做机构的主体,当主动曲 柄 AB 等速回转时,从动摇杆 CD 作摆动,从而使筛体有较大变化的加速 度,利用此加速度产生的惯力使被筛材料达到理想的筛分效果 牛头刨床的运动分析主要是通过铰链 B 相对于 A 所在位置不同而进行 的分析。
图 4-12 牛头刨床机构中四杆运动及运动所产生的模拟曲线

从图 4-12 牛头刨床机构及运动模拟曲线可看出,铰链 B 处于 A 的正 下方,机构运动平稳,空行程工作时,有急回特性,速度 v 不大且有波动, 加速度 a 有向上的波动,加工效率不高但刨出的东西质量好。

22

洛阳理工学院毕业设计(论文)

s a o v
C

t

D

E

A

B

图 图 4-13 牛头刨床机构中四杆运动及运动所产生的模拟曲线

从图 4-13 牛头刨床机构及运动模拟曲线可看出,铰链 B 处于 A 的右 下方,机构运动不太平稳,空行程工作时,急回特性很大,效率很高,速 度 v 不大且有波动,工作行程适宜较大的场合。

23

洛阳理工学院毕业设计(论文)

第 5 章 加工仿真

5.1 基本原理
一般来说,一个好的程序设计,给人的第一印象往往是操作简单,界 面友好,本程序具备一定的较为友好的人机交互界面,具体的操作流程如 下:AutoCAD 下的机械图纸设计;运行捕获信息的子程序;提示用户选择 加工路线;数据处理;自动模拟仿真加工过程;构件信息文件输出;nc 代 码的输出 [17] 。

5.2 加工仿真程序设计结构
1 . 基本结构 本程序由一个主调程序和六个子程序组成,如图 5-1 所示。各个分程 序结构及其功能介绍: ( 1) 、 nc.lsp 这是本设计程序的主程序,主要的作 用是组织子程序的运行次序和对子程序的调用。 ( 2) 、 nc 代码这个子程序 是写备用文件用的,每次程序运行的时候,都会自动生成一个 tt.txt 文件, 用以对结论的判断和 资料的保存。 ( 3) 、 zdw.lsp 此子程序的 作用是捕获 所绘图形的基本信息,并配合模拟加工。 ( 4) 、 仿真 .lsp 这是对整个加工 路线进行仿真模拟的程序。 ( 5) 、 加工代码 .lsp 这是本程序的关键段,它 根据所绘图形的基本数据,如图 5-1 程序结构图生成线切割源代码,从而 可直接与线切割机床形成对接。 ( 6) 、 线方向计数器 .lsp 这是针对所绘直 线的进行参数确定用的。 ( 7) 、 圆转向及起点象限计数器 .lsp 这是对所绘 的圆及圆弧进行参数确定用的,此关系如下图( 5-1 )所示。

24

洛阳理工学院毕业设计(论文)

加工代码

NC代 码

NC

仿真

ZDW

线方向计数器

圆转向及起点象限计数器

图 5-1 程序结构设计基本结构图

2 . 程序的基本操作及运行流程 本程序充分利用了 AutoCAD 软件对所绘图形的资源库及表较好的组 建及管理功能,结合实际应用的需要,对生成的备用文件及 NC 加工代码 的所许数据进行统一的分配及处理,提高了程序的可靠性,也精简了程序 的设计过程 [18] 。 由于设计本程序的初衷是面向对象的,是为解决通过 AutoCAD 软件 进行自动编写线切割代码的,因此在原理上是比较简单的。首先是利用了 AutoCAD 的精确的绘图功能,及对对象的准确地信息捕捉功能,通过列表 将工件的主要参数进行存储,为编写 NC 代码做好数据的搜集工作 [11] 。其 次,在前面的基础上,通过调用子程序,对工件所需的加工步骤进行自动 运算,确定分几个加工工序对工件进行加工,而后让操作者选择工件的加 工路径,当操作者输入完成后,程序自动运行仿真加工程序,让操作者有 更明了的视觉效果,从而更能直观地确认工件的加工工序是否正确 [16] 。进 而生成备用文件及 NC 加工代码。不过,这些过程除了让用户选择加工路 线这一需要人工干预的过程以外,其余均由程序自动完成。当 NC 代码生 成后,就可以直接在线切割机床上使用了。
25

洛阳理工学院毕业设计(论文)

5.3 典型的简单零件的加工模拟
5.3.1 简单圆类零件的加工 六边形属线性零件。 这种工件较易加工。 加工工件外形如图 5-2, 5-3。

图 5-2 简单圆的工件图

图 5-3 简单圆的加工仿真后的图

程序生成的代码如下:

图 5-4 仿真后生成的加工代码

一些圆弧直线相结合的图形如 5-5,5-6 所示

26

洛阳理工学院毕业设计(论文)

5-5 简单圆弧直线结合工件图

5-6 简单圆弧直线结合仿真后

程序生成的代码如下:

图 5-7 仿真后生成的加工代码

5.3.2 星类零件的加工 这类零件的对中精度较高,不易加工。加工工件外形如图 5-8,5-9。

27

洛阳理工学院毕业设计(论文)

图 5-8 加工前的工件图

图 5-9 加工仿真后的图

程序生成的代码如下:

图 5-10 仿真后生成的加工代码

5.4 典型的复杂零件的加工模拟

28

洛阳理工学院毕业设计(论文)

5.4.1 轴承座的加工

图 5-11 轴承座图

图 5-12 轴承座加工仿真后的图

程序生成代码如下:

图 5-13 仿真后生成的加工代码

29

洛阳理工学院毕业设计(论文)

5.4.2 工形零件的加工

图 5-14 工形零件图

图 5-15 工形零件加工仿真后的图

程序生成的代码如下:

图 5-16 仿真后生成的加工代码

30

洛阳理工学院毕业设计(论文)

5.4.3 弧形零件的加工

图 5-17 弧形工件图

5-18 弧形工件加工仿真后的图

程序生成的代码如下:

图 5-19 仿真后生成的加工代码

31

洛阳理工学院毕业设计(论文)

结 论
在三个多月的毕业设计期间,我深刻了解到软件设计在应用方面的用 途很广泛,而且第一次了解到在 AutoCAD 界面上可以进行运动仿真,并且 当把 Visual Lisp 嵌入 AutoCAD 中后, AutoCAD 绘图平台具有更强的专业 性和针对性,功能更加强大。这样就使运动仿真和加工仿真能在 AutoCAD 绘图软件中达到理想的模拟效果。 在这次的毕业设计中所做的运动模拟仿真, 主要利用 Visual Lisp 语言 编程和 DCL 对话框辅助, 实现了机构简图的参数化设计,并且可以使机构运 动曲线自动的生成。本文通过对机构的运行情况加以对生成的模拟曲线图 的分析,以平面曲柄摇杆机构为研究基础,利用摇杆在设计的位置不同而 进行运动分析。 本文所做的加工模拟仿真系统主要是利用 NC 代码, 在 AutoCAD 中把 设计好的图形按照设计的路线进行走刀, 自动生成加工代码并且把加工代码 输入到线切割机床就可以在线切割机床上直接进行切屑加工。

32

洛阳理工学院毕业设计(论文)

谢 辞
本论文是在导师张旦闻教授的精心指导下完成的。在论文完成之际, 谨向方老师致以深深的谢意。感谢方老师三年来对我的关心和帮助,张老 师严谨的治学作风、敏锐的学术洞察力、认真负责、一丝不苟的工作作风 和宽厚的为人都给我留下了深刻的印象,使我在工作中受益匪在本次毕业 设计中,我得到了张旦闻老师的耐心辅导。张老师自始至终关心督促毕业 设计进程和进度,帮助解决毕业设计中遇到的许多问题。还不断向我们传 授分析问题和解决问题的办法,并指出了正确的努力方向。 经过近连三个月的努力,我顺利的完成了毕业设计。这份毕业设计既 是对过去三年所学知识的总结,也是提高自己学习能力的好机会,同时也 使我的综合素质得到了进一步的提高。在这里我非常感谢张旦闻老师的指 导和帮助,并致以诚挚的谢意!同时,身边的同学给了我许多的帮助。在 此,我向身边关心我的同学致以诚挚的谢意!同时感谢学院对我这三年的 培养。

33

洛阳理工学院毕业设计(论文)

参考文献

[1] 刘会英 . 杨志强 机械原理 [M]. 机械工程出版社 , 2003.02 , 9. [2] 冀 晓 红 . 同 时 按 K 和 最 佳 传 动 性 能 设 计 平 面 曲 柄 摇 杆 机 构 [J]. 机械研究与应用 ,2005,18(2),84~85. [3] 储宁 启 . 曲柄 摇 杆机 构在 给定 速比 系 数时 最小 传动 角的 可 能最 大 值 [J]. 机械设计 ,2004,21(8),52~54. [4] 金映丽 , 王继军 , 顾宏民 . 蜗轮蜗杆传动 CAD 系统的研究与开发 [J]. 沈阳工业大学学报 , 2004, 26(2): 124-126. [5] 机 械 设 计 手 册 编 委 会 [M]. 机 械 设 计 手 册 . 北 京 : 机 械 工 业 出 版 社 , 2004 , 11. [6] 王玉琨 , 任卫红 , 茅艳 , 等 .CAD 二次开发技术及其工程应用 [M]. 北京 : 清华大学出版社 , 2008,7~8. [7] 李学志 . Visual LISP 程序设计 (AutoCAD 2006) [M]. 北京 : 清华大学 出版社 , 2006,26. [8] 曹 帷 庆 , 徐 曾 荫 . 机 构 设 计 [M]. 北 京 : 机 械 工 业 出 版 社 , 1999 (2): 58261 [9] R L. Norton ( 美 ), 著 . 陈立周 , 韩建友 , 李威 , 等译 . 机械设计 - 机器与机 构综合与分析 [M]. 北京 : 机械工业出版社 , 2003(2): 1252127,68. [10] 康 博 创 作 室 . Visual LISP 实 用 教 程 [M]. 北 京 : 人 民 邮 电 出 版 社 , 1999: 1012135,89. [11] 郭朝勇 .AutoCAD2002 定制与开发 . 北京 : 清华大学出版社 ,2002,34. [12] 李涛 . 学用 AutoCAD2000. 北京 : 清华大学出版社 , 2000,78~79. [13] 陈伯雄 , 冯伟 .VisualLISP forAutoCAD2000. 北京 : 机械工业出版社 , 2000,34~35. [14] 王 玉 新 , 姜 彬 , 邰 晓 梅 . 面 向 对 象机 构 运 动 分 析 自 动化 方 法 研 究 [J]. 机械设计 ,2000,(7),19~22. [15] 王 允 地 , 王 良 文 . 平 面 连 杆 机 构 运 动 分 析 方 法 的 新 探 讨 [J]. 陕西科技大学学报 ,2005,23(3),97~101.
34

洛阳理工学院毕业设计(论文)

[16] McCormick B H. DeFanti T A. Brown M D, Visualization in ScientificComputing, Computer Graphics, 1987, 21(6),153. [17] 苏艳萍,王鸿钧 . 基于 Visual Lisp 机械零件图形尺寸参数化标 注设计 [J]. 机械传动, 32(4) : 107~109. [18] 孙江宏,丁立伟,米 洁 . VisualLISP 编程与应用 [M]. 北京:科 学出版社, 1999,7,56~67

35

洛阳理工学院毕业设计(论文)

附 录
源程序代码
① (defun c:bb() (command "osnap" "off") (setq p0 (getpoint " 输 入 刀 具 起 点 ")) (command "osnap" "endp") (setq p1 (getpoint "p1")) (command "color" "red") (command "donut" 0 0.5 p1 "") (setq s_p1 (entlast)) (command "osnap" "off") (command "erase" s_p1"") (load "zdw2.lsp") (nn) (load " 仿 真 .lsp") (mm) (load "nc 代 码 .lsp") (aa) (load " 加 工 代 码 .lsp") (cc) (command "color" "white")) ② (defun aa () (setq jk 0) (setq f (open "c:/nc/tt.txt" "w")) ( setq n (length ainfor)) (while (< jk n) (progn (setq ainfor1 (nth jk ainfor)) (write-line " " f) (princ jk f ) (princ " "f ) (princ ainfor1 f) (setq jk (+ jk 1)))) (setq f (close f))) ③ (defun c:mm() (command "erase""ALL""") (setq PttA (list 0 0) PTtB (list 150 100)) (command "ZOOM" PttA PttB "") ) ④ (defun cirgxy090 (ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (setq cir_strl nil cir_strd nil) (setq ax11 (- ax11 ax00)) (setq ax22 (- ax22 ax00)) (setq ay11 (- ay11 ay00)) (setq ay22 (- ay22 ay00)) (setq x1x2 (* ax11 ax22)) (setq y1y2 (* ay11 ay22)) (setq abs_ax11 (abs ax11)) (setq abs_ay11 (abs ay11)) (setq abs_ax22 (abs ax22)) (setq abs_ay22 (abs ay22)) (setq x21 (- ax22 ax11) y21 (- ay22 ay11)) (setq absx21 (abs x21) absy21 (abs y21)) (setq pi 3.1415926) (setq absalf (abs (- afirst1 alast1))) (setq lgy absy21 lgx absx21) (if (< x1x2 0) (progn (if (> abs_ay11 abs_ay22) (setq lgy (+ absy21 (* 2 (- rr abs_ay11)))) (setq lgy (+ absy21 (* 2 (- rr abs_ay22))))))) (if (< y1y2 0) (progn (if (> abs_ax11 abs_ax22) (setq lgx (+ absx21 (* 2 (- rr abs_ax11)))) (setq lgx (+ absx21 (* 2 (- rr abs_ax22)))))))) alast1 sn1) (cirgxy090 ax11 ay11 ax22 ay22 alast1 sn1) (setq lgx ((setq lgy lgy))) ax00 ay00 rr afirst1 (* rr 4) lgx)) (- (* rr 4) (if (>= opp_ay1 0) (setq cir_strd "n1") (setq cir_strd "n4"))) (progn (if (> opp_ay1 0) (defun cirgxy90180 (ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (cirgxy090 ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (setq lgy absy21 lgx absx21 ) (setq snare (* x1x2 y1y2)) (if (< snare 0) (progn (if (< x1x2 0) (progn (if (> abs_ay11 abs_ay22) (setq lgy (+ absy21 (* 2 (- rr abs_ay11)))) (setq lgy (+ absy21 (* 2 (- rr abs_ay22))))))) (if (< y1y2 0) (progn (if (> abs_ax11 abs_ax22) (setq lgx (+ absx21 (* 2 (- rr abs_ax11)))) (setq lgx (+ absx21 (* 2 (- rr abs_ax22)))))))) (progn (if (> abs_ay11 abs_ay22) (setq lgy (+ absy21 (* 2 (- rr abs_ay11)))) (setq lgy (+ absy21 (* 2 (- rr abs_ay22))))) (if abs_ax22) absx21 (* 2 absx21 (* 2 (setq lgx (+ (- rr abs_ax11)))) (setq lgx (+ (- rr abs_ax22)))))))) (> abs_ax11 (setq cir_strd "n2") (setq cir_strd "n3"))))) (progn (if opp_ax1 0) (progn (if (> opp_ay1 0) (setq cir_strd "s1") (setq cir_strd "s4"))) (progn (if (> opp_ay1 0) (setq cir_strd "s2") (setq cir_strd "s3")))))))

(>

(defun cirgxy (ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (setq test1 (list ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1)) (setq absalf (abs (afirst1 alast1))) (if (> absalf (* pi 1.5)) (cirgxy270360 ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (progn (if (> absalf (* pi 1)) (cirgxy180270 ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (progn (if (> absalf (* pi 0.5)) (cirgxy90180 ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (cirgxy090 ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1)))))) (cirgxysn ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (setq cir_fx (abs opp_ax1)) (setq cir_fy (abs opp_ay1))) ⑤ (defun nn() (setq ainfor nil sum_list nil sum1_list nil nth_list nil afl nil l_list nil ss nil a_first nil arc_list nil sn nil) (print " 输 入 加 工 顺 序 和 路 线 ") (setq ss (ssget "x" '((8 . "0")))) ( setq n (-(sslength ss) 0)) (if (= n 1) (progn (command) (command "off") (setq si (entget(entlast))) (setq s_type (cdr(assoc 0 si))) (setq ax0 (nth 1(assoc 10 si))) (setq ay0 (nth 2(assoc 10 si))) (setq r (cdr(assoc 40 si))) (command "osnap" "qua") (print " 输 入 加 工 顺 序 和 路 线 基 点 ") (setq pxyb (getpoint))

(defun cirgxy180270 (ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (cirgxy90180 ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (setq lgx (- (* rr 4) lgx)) (setq lgy (- (* rr 4) lgy)) )

(defun cirgxysn(ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1 alast1 sn1) (setq cir_strl nil cir_strd nil) (setq ax11 (- ax11 ax00)) (setq ax22 (- ax22 ax00)) (setq ay11 (- ay11 ay00)) (setq ay22 (- ay22 ay00)) (setq x1x2 (* ax11 ax22)) (setq y1y2 (* ay11 ay22)) (setq abs_ax11 (abs ax11)) (setq abs_ay11 (abs ay11)) (setq abs_ax22 (abs ax22)) (setq abs_ay22 (abs ay22)) (setq opp_ax1 ax11) (setq opp_ax2 ax22) (setq opp_ay1 ay11) (setq opp_ay2 ay22) (setq x21 (- ax22 ax11) y21 (- ay22 ay11)) (if (> abs_ay22 abs_ax22) (setq cir_strl "Gx") (setq cir_strl "Gy")) (if (= sn1 "n") (progn (if (> opp_ax1 0) (progn

"osnap"

(defun cirgxy270360 (ax00 ay00 ax11 ay11 ax22 ay22 rr afirst1

36

洛阳理工学院毕业设计(论文)
路 线 方 向 ") "off") (setq pxb (nth 0 pxyb)) (setq pyb (nth 1 pxyb)) (if (= pxb ax0) (progn (setq pxb1 (+(*(sin 0.00001) r)ax0)) (setq pyb1 (+(*(cos 0.00001) r)ay0)) (setq pxyb1 (list pxb1 pyb1)) (command) (command "break" pxyb1 pxyb)) (progn (setq pxb1 (+(*(cos 0.00001) r)ax0)) (setq pyb1 (+(*(sin 0.00001) r)ay0)) (setq pxyb1 (list pxb1 pyb1)) (command) (command "break" pxyb pxyb1))))) (setq i 0 ) (setq p_bas p1) (while (< i n) (progn (command "osnap" "midp") (setq px (getpoint)) (command "osnap" "off") (setq sx (ssget px)) (setq si (entget(ssname sx 0 ))) (setq s_type (cdr(assoc 0 si))) (if (= s_type "LINE") (progn (setq x1 (nth 1(assoc 10 si))) (setq y1 (nth 2(assoc 10 si))) (setq x2 (nth 1(assoc 11 si))) (setq y2 (nth 2(assoc 11 si))) (setq pa (list x1 y1 )) (setq pb (list x2 y2 )) (setq lx (distance p_bas pa)) (command "donut" 0 0.5 pa "") (command "donut" 0 0.5 pb "") (if (< lx 0.01) (progn (setq lst (list pa pb)) (setq p_bas pb)) (progn (setq lst (list pb pa)) (setq p_bas pa))) (setq ptaa (nth 0 lst) ptbb (nth 1 lst)) (load " 线 方 向 计 数 器 .lsp") (drnum ptaa ptbb) (setq allinfori (list "L" abscc absbb lnum strd strl i)) (setq ainfor (append ainfor (list allinfori))) (setq lst2 (list "L" lst)) (setq sum_list (append sum_list lst2)))) (if "ARC") (progn (setq ax0 1(assoc 10 si))) (setq 2(assoc 10 si))) (setq r (cdr(assoc 40 si))) (setq (cdr(assoc 51 si))) (setq (cdr(assoc 50 si))) (setq (cos afirst) r) ax0)) (setq (sin afirst) r) ay0)) (setq (cos alast) r) ax0)) (setq (sin alast) r) ay0)) (setq pa (list ax1 ay1 )) (setq pb (list ax2 ay2 )) (setq lx (distance ay2(+ (* ax2(+ (* ay1(+ (* ax1(+ (* alast afirst ay0 (nth (nth (= s_type (list pa pb)) (setq p_bas pb) (setq "s")) (progn (setq lst (list pb pa)) (setq p_bas pa) (setq "n"))) (setq arc_list (list (list ax0 ay0) r afirst alast sn lst )) (setq sum_list (append sum_list (list "A" arc_list))) (setq pppa (nth 0 lst)) (setq pppb (nth 1 lst)) (setq pppax (nth 0 pppa)) (setq pppay (nth 1 pppa)) (setq pppbx (nth 0 pppb)) (setq pppby (nth 1 pppb)) (command "donut" 0 0.5 pppb "") (setq afirst (nth 3 arc_list)) (setq alast (nth 2 arc_list)) (setq afirstx afirst) (setq aff afirstx ala alast) (if (> afirstx alast) (progn (setq afirstx (afirstx 6.28 )) (setq aff afirstx))) (if (= sn "s") (progn (setq afirstx alast alastx afirst ) (if (< afirstx alastx) (setq afirstx (+ afirstx 6.28))) (setq aff afirstx ala alastx))) (setq afl (list aff ala sn)) (load " 圆 转 向 及 起 点 象 限 计 数 器 .lsp") (cirgxy ax0 ay0 pppax pppay pppbx pppby r aff ala sn) (if (= cir_strl "Gx") (setq lgxy lgx) (setq lgxy lgy)) (setq allinfori (list "A" cir_fx cir_fy opp_ax2 opp_ay2 cir_strl lgxy cir_strd " 构 件 序 号 " i)) (setq ainfor (append ainfor (list allinfori))))) (setq sum1_list (append sum1_list lst)) (setq i (+ i 1)))) (print sum_list)) ⑥ (defun nn() (setq ainfor nil sum_list nil sum1_list nil nth_list nil afl nil l_list nil ss nil a_first nil arc_list nil sn nil) (print " 输 入 加 工 顺 序 和 路 线 ") !(setq ss (ssget "x" '((8 . "0")))) ( setq n (sslength ss)) (setq i 0 ) (setq p_bas p1) (while (< i (- n 0)) (progn (command "osnap" "midp") (setq px (getpoint)) (command "osnap" "off") (setq sx (ssget px)) (setq si (entget(ssname sx 0 ))) (setq s_type (cdr(assoc 0 si))) (if (= s_type "LINE") (progn (setq x1 (nth 1(assoc 10 si))) (setq y1 (nth 2(assoc 10 si))) (setq x2 (nth 1(assoc 11 si))) (setq y2 (nth 2(assoc 11 si))) (setq pa (list x1 y1 )) (setq pb (list x2 y2 )) (setq lx (distance p_bas pa)) (command "donut" 0 0.5 pa "") (command "donut" 0 0.5 pb "") sn ptbb) (setq allinfori (list "L" abscc absbb lnum strd strl i)) (setq ainfor (append ainfor (list allinfori))) (setq lst2 (list "L" lst)) (setq sum_list (append sum_list lst2)))) (if "ARC") (progn (setq ax0 1(assoc 10 si))) (setq 2(assoc 10 si))) (setq r (cdr(assoc 40 si))) (setq (cdr(assoc 51 si))) (setq (cdr(assoc 50 si))) (setq (cos afirst) r) ax0)) (setq (sin afirst) r) ay0)) (setq (cos alast) r) ax0)) (setq (sin alast) r) ay0)) (setq pa (list ax1 ay1 )) (setq pb (list ax2 ay2 )) (setq lx (distance p_bas pa)) (if 0.01) (progn (setq lst (list pa pb)) (setq p_bas pb) (setq "s")) (progn (setq lst (list pb pa)) (setq p_bas pa) (setq "n"))) (setq arc_list (list (list ax0 ay0) r afirst alast sn lst )) (setq sum_list (append sum_list (list "A" arc_list))) (setq pppa (nth 0 lst)) (setq pppb (nth 1 lst)) (setq pppax (nth 0 pppa)) (setq pppay (nth 1 pppa)) (setq pppbx (nth 0 pppb)) (setq pppby (nth 1 pppb)) (command "donut" 0 0.5 pppb "") (setq afirst (nth 3 arc_list)) (setq alast (nth 2 arc_list)) (setq afirstx afirst) (setq aff afirstx ala alast) (if (> afirstx alast) (progn (setq afirstx (afirstx 6.28 )) (setq aff afirstx))) (if (= sn "s") (progn (setq afirstx alast alastx afirst ) (if (< afirstx alastx) (setq afirstx (+ afirstx 6.28))) (setq aff afirstx ala alastx))) (setq afl (list aff ala sn)) (load " 圆 转 向 及 起 点 象 限 计 数 器 .lsp") (cirgxy ax0 ay0 pppax pppay pppbx pppby r aff ala sn) (if (= cir_strl "Gx") (setq lgxy lgx) (setq lgxy lgy)) (setq allinfori (list "A" cir_fx cir_fy opp_ax2 opp_ay2 cir_strl lgxy cir_strd " 构 件 序 号 " i)) (setq ainfor (append ainfor (list allinfori))))) sn sn (< lx ay2(+ (* ax2(+ (* ay1(+ (* ax1(+ (* alast afirst ay0 (nth (nth (= s_type lst) ptbb (nth 1 lst)) 数 器 .lsp") sn pb pa)) (setq p_bas pa))) (setq ptaa (nth 0 (load " 线 方 向 计 (drnum ptaa (print " 输 入 加 工 顺 序 和 (command "osnap" p_bas pa)) (if 0.01) (progn (setq lst pa pb)) (setq p_bas pb)) (progn (setq lst (list (< lx (if (< lx 0.01) (progn (setq lst

(list

37

洛阳理工学院毕业设计(论文)
(setq sum1_list (append sum1_list lst)) (setq i (+ i 1)))) (print sum_list)) ⑦ (defun d45 (datax) (setq fixa (fix datax)) (setq pp (- datax fixa)) (if (>= pp 0.5) (setq fixa (+ fixa 1))) ) (defun cc () (setq i 0) (setq f (open "c:/nc/nctt.txt" "w")) (setq nn (length ainfor)) (write-line (while (< i nn) (progn (setq nn ainfor)) (setq allinfori (nth i ainfor)) (setq allinfori)) (setq abscc (* 1000 (nth 1 allinfori))) (setq absbb (* 1000 (nth 2 allinfori))) (setq lnum (* 1000 (nth 3 allinfori))) (d45 abscc) (setq abscc fixa) (d45 absbb) (setq absbb fixa) (d45 lnum) (setq lnum fixa) (setq allinfori)) (setq allinfori)) (print ccf1) (if (= ccf1 "L") (progn (write-line " " f) (princ " (princ i f ) (princ (princ (princ (princ (princ (princ (princ " "f) (princ strd f ) (princ " "f) (princ strl f ) (write-line " " f))) (if (= ccf1 "A") (progn (setq pppax (* 1000 (nth 1 allinfori))) (setq pppay (* 1000 (nth 2 allinfori))) (setq cir_strl (nth 5 allinfori)) (setq lgxy (* 1000 (nth 6 allinfori))) (setq cir_strd (nth 7 allinfori))] (d45 pppax) (setq pppax fixa) (d45 pppay) (setq pppay fixa) (d45 lgxy) (setq lgxy fixa) (write-line " f) (princ (princ (princ (princ (princ (princ (princ (princ " "f) if) " B" f ) pppax f ) " B" f ) pppay f ) " B" f ) lgxy f) " " B" f ) abscc f ) " B" f ) absbb f) " B" f ) lnum f ) "f) strl (nth 5 strd (nth 4 ccf1 (nth 0 " " f) (length (princ " f) (princ cir_strl f) (princ " " f) (princ cir_strd f ) (write-line " " f))) (setq i (+ i 1)))) (setq f (close f))) ⑧ (defun aa () (setq jk 0) (setq f (open "c:/nc/tt.txt" "w")) ( setq n (length ainfor)) (while (< jk n) (progn (setq ainfor1 (nth jk ainfor)) (write-line " " f) (princ jk f ) (princ " "f ) (princ ainfor1 f) (setq jk (+ jk 1)))) (setq f (close f))) ⑨ (defun mm() ( setq n (length sum_list) ) (setq i 0 kk 100 j 0 xd 0 arc_inf nil xyab nil) (command "color" "blue") (while (<= i n) (progn (setq cf (nth i sum_list)) (if (= cf "L") (progn (setq xyab (nth (+ i 1) sum_list)) (setq xya (nth 0 xyab)) (setq xyb (nth 1 xyab)) (setq x1 (nth 0 xya)) (setq y1 (nth 1 xya)) (setq x2 (nth 0 xyb)) (setq y2 (nth 1 xyb)) (setq j 0) (while (< j kk) (setq xd (+ x1 (*(/ (- x2 x1) kk) j))) (setq yd (+ y1 (*(/ (- y2 y1) kk) j))) (setq pd (list xd yd)) (command "point" pd "") (command "donut" 1 2 pd "") (setq j (+ j 1))))) (if (= cf "A") (progn (setq arc_inf (nth (+ i 1) sum_list)) (setq xy0 (nth 0 arc_inf)) (setq ax0 (nth 0 xy0)) (setq ay0 (nth 1 xy0)) (setq r (nth 1 arc_inf)) (setq afirst (nth 3 arc_inf)) (setq alast (nth 2 arc_inf)) (setq snd (nth 4 arc_inf)) (setq delt 0.01) (setq j 0 afirstx afirst) (if (> afirstx alast) (setq afirstx (afirstx 6.28 ))) (setq aff afirstx ala alast ) (if (= snd "s") (progn (setq afirstx alast alastx afirst ) ala alastx) (while afirstx alastx) (setq xd (+ (* (cos afirstx) r) ax0)) (setq yd (+ (* (sin afirstx) r) ay0)) (setq pd (list xd yd)) (command "donut" 1 2 pd "") (setq afirstx delt ))))) (print "f l sn") (print afirstx) (print alastx) (print snd) (while (<= afirstx alast) (setq xd (+ (* (cos afirstx) r) ax0)) (setq yd (+ (* (sin afirstx) r) ay0)) (setq pd (list xd yd)) (command "donut" 1 2 pd "") (setq afirstx aff ala)) (print ascl) (list lgx lgy) (command)) ⑩ (defun drnum ( lpta lptb ) (print lpta) (print lptb) (setq y1 (nth 1 lpta) x1 (nth 0 lpta)) (setq y2 (nth 1 lptb) x2 (nth 0 lptb)) (setq cc (- x2 x1) ) (setq bb (- y2 y1)) (setq abscc (abs cc) absbb (abs bb)) (setq logab (* cc bb)) (if (> abscc absbb) (progn (setq strd "GX") (setq lnum abscc)) (progn (setq strd "GY") (setq lnum absbb))) (if (> logab 0) (progn (if (> cc 0) (setq strl "L1")) (if (< cc 0) (setq strl "L3")))) (if (< logab 0) (progn (if (> cc 0) (setq strl "L4") (setq "L2")))) (if (= logab 0) (progn (if (= cc 0) (progn (if (> bb 0) (setq strl "L2") (setq strl "L4")))) (if (= bb 0) (progn (if cc 0) (setq strl "L1") (setq strl "L3"))))))) (> strl delt ))))) (setq i (+ i 2)))) (setq ascl (list afirstx(+ afirstx((>= " alastx) (setq afirstx (+ afirstx 6.28 ))) (setq aff afirstx (if (< afirstx

38

洛阳理工学院毕业设计(论文)

39


赞助商链接
相关文章:
平面连杆机构运动分析的子程序
平面连杆机构运动分析的子程序 - SUBROUTINE CRANK(N1,N2,R,TH,W,A,P,VP,AP,NP) IMPLICIT REAL*8(A-H,O-Z) REAL*8 P(NP...
基于MATLAB的平面连杆机构运动分析及动画毕业论文
基于MATLAB的平面连杆机构运动分析及动画毕业论文 - 洛阳理工学院毕业设计(论文) 基于 MATLAB 的平面连杆机构运动分析及动画 摘要 建立了平面机构运动分析的数学模型,...
平面连杆机构运动分析_图文
A3 ? A2 \ A1 第2页 机械原理大作业 机电学院 05011303 班 三、计算程序...典型平面连杆机构的运动... 43页 免费 平面连杆机构运动分析(C... 47页 免费...
基于MATLAB的平面连杆机构运动分析及动画 毕业论文
建立了平面杆机构运动分析的数学模型, 以 MATLAB 程序设计语言为平台, 将参数化设计与交互式相结合,设计了平面杆机构仿真软件,该软件具有方便 用户的良好界面,...
连杆机构运动分析
机电工程学院 设计题目:连杆机构运动分析 级:1408503...编程程序 syms t b=200*cos(10*t+pi/2); c=...典型平面连杆机构的运动... 43页 免费 ANSYS...
基于MATLAB的平面四杆机构运动学分析
图 2 即是简 单平面连杆机构 运动分析系统的 整体的程序设计 流程图,完全是 从用户使用软件 的角度来进行设 计的。具体描述 如下:(1)从打开 系统,用户可以 ...
第三章 平面机构的运动分析
平面连杆机构分析与综合》曹惟庆著,北京:科学出版社 1989 1 第三章§3-1 ...2、目的:判断运动参数是否满足设计要求?为后继设计提供原始参数 3.方法: 图解...
第4章 平面连杆机构的运动分析
第5章 平面机构分析及机... 第6章 凸轮机构及其设计习... 第7章 齿轮机构...第4章 平面连杆机构运动分析 习题 4-1.求出下列机构中所有速度瞬心 (a) (...
平面连杆机构设计方案
平面连杆机构设计方案 - 平面连杆机构设计方案 1 平面连杆机构的运动分析 1.1 机构运动分析的任务、目的和方法 曲柄摇杆机构是平面连杆机构中最基本的由转动副组成...
平面连杆机构的运动分析
平面连杆机构的运动分析 摘要曲柄摇杆机构是平面连杆机构中最基本的由转动副组成的四杆机构,它可以 用来实现转动和摆动之间运动形式的转换或传递动力。 无论是设计新...
更多相关文章: