基于SolidWorks的液压缸参数化设计

更新时间:2024-05-10 06:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科毕业论文

液压支架液压缸参数化设计(1)

THE PARAMETERIZED DESIGN OF HYDRAULIC SUPPORT

HYDRAULIC CYLINDER(1)

学院(部):机械工程学院 专业班级: 机设06-5班 学生姓名: 董 雪 松 指导教师: 梁超 讲师

2010年6月1日

安徽理工大学毕业论文

液压支架液压缸的参数化设计(1)

摘要

在制图软件中,参数化设计方法的研究已成为研究和开发的热点,参数化建模,参数化分析,逐渐成为一种趋势。而基于VBA的SolidWorks二次开发应用更为普遍,简单的开发环境让很多用户实现繁琐、机械的日常生活自动化,提高用户办公效率。本文在参阅了国内外大量对参数化设计的文献基础之上,以液压缸的参数化设计为例,进一步探讨了参数化的发展和过程。并根据参数化过程中出现的API函数进行阐述,让设计人员从繁琐的绘图工作中解脱出来,集中精力选择和优化设计参数,提高产品质量,缩短产品设计周期。

关键词:VBA,SolidWorks,参数化,液压缸

I

安徽理工大学毕业设计

THE PARAMETERIZED DESIGN OF HYDRAULIC SUPPORT

HYDRAULIC CYLINDER(1)

ABSTRACT

In drawing software, the method of parametric design research has become the focus of research and development, parameterized modeling, parametric analysis, and gradually become a trend. And the secondary development based on VBA SolidWorks application, simple development environment for many users realize trival, machinery, improve the daily life of office automation of users. Based on a large number of domestic parametric design based on the literature, hydraulic cylinder of parametric design, for example, further discusses the development and the process parameters. And according to the parametric process, API design personnel from drawing work freed, concentrate on selection and optimal design parameters, improve product quality, shorten the product design cycle.

KEYWORDS:VBA,SolidWorks,parametric,Hydraulic cylinder

II

安徽理工大学毕业论文

目录

摘要 ...................................................................... I ABSTRACT ................................................................. II 绪论 ...................................................................... 1 1液压缸设计 .............................................................. 4

1.1基于VBA的SolidWorks 的二次开发概述 ............................... 4

1.1.1宏的应用 ..................................................... 5 1.2液压缸的一般设计 ................................................... 5

1.2.1液压缸结构分析和优化的发展状况 ............................... 6 1.2.2设计的一般原则 ............................................... 7 1.2.3设计的一般步骤 ............................................... 7 1.2.4液压缸的设计理论体系结构 ..................................... 8 1.3.1液压缸的参数化设计原理 ....................................... 9

2液压缸的结构 ........................................................... 11

2.1缸体组件 .......................................................... 12

2.1.1缸体与缸盖的连接形式 ........................................ 12 2.1.2缸筒、端盖和导向套的基本要求 ................................ 12 2.2密封装置 .......................................................... 12 2.3液压缸缓冲装置 .................................................... 12 2.4排气装置 .......................................................... 13 2.5建立液压缸的三维模型 .............................................. 13 3参数化设计 ............................................................. 14

3.1活柱的参数化设计 .................................................. 14 3.2二级缸的参数化设计 ................................................ 19 3.3一级缸的参数化设计 ................................................ 22 3.4端盖和管道的参数化设计 ............................................ 27 结论 ..................................................................... 29 参考文献 ................................................................. 30 附录A(一级缸的参数化代码) ............................................. 31 附录B(二级缸的参数化代码) ............................................... 36 附录C(活柱的参数化代码) ............................................... 40 附录D(端盖的参数化代码) ............................................... 44 致辞 ..................................................................... 47

i

安徽理工大学毕业论文

绪论

参数化设计(Parametrization design)也叫尺寸驱动(Dimension driven)是二维绘图非常有用的技术,只要对全约束的图形施加尺寸,图形根据尺寸自动发生相似性变化。设计人员可以利用参数驱动的二维图形构造三维实体模型。利用参数化技术的CAD设计系统,可使设计人员在产品设计时,从大量繁琐的绘图工作中解脱出来,集中精力选择和优化设计参数,提高产品质量,缩短产品的设计周期。运用SolidWorks中VBA的二次开发应用,应VB语言编写程序,通过SolidWorks运行实现液压缸模型,这样可以通过改变液压缸中参数的系列尺寸,即快速而准确的得到所需的液压缸。本次设计,拟利用solidworks中的参数化建模技术。通过参数驱动机制,可以对图形的集合数据在图形拓扑关系不变的情况下进行参数化修改。由于参数驱动是基于对图形数据的操作,因此绘图的过程是建立一个参数模型的过程。绘图系统将图形映射到图形数据库中,建立图形实体的数据结构,参数驱动时改变数据结构中的具体参数,就可以生成所需要的图形。

目前,参数化设计已成为CAD中最热门的应用技术之一,能否实现参数化设计也成为评价CAD系统优劣的重要技术指标,这是因为它更符合和贴近现代CAD中概念设计以及并行设计思想,工程设计人员设计开始阶段可快速草拟产品的零件图,通过对产品形状及大小的约束最后精确成图。同一系列产品的第二次设计可直接通过修改第一次设计来实现,设计参数不但可以驱动设计结果.而且影响产品的整个开发周期,设计参数可来自于其他系统。参数化设训是变量化设计的前提,借助变量化设计思想可实现动态设计、机构设计的运动仿真模拟等。除此之外,参数化设计还能够使设计人员在设计的同时实现参数化建库,极大地方便后续设计工作。因此,参数化设计以及建库工具的研究对进一步提高设计和绘图效率以及柔性化设计具有十分重要的意义。国内外对参数化设计做了大量的研究,目前参数化技术大致可分为如下三种方法:(1)基于几何约束的数学方法;(2)基于几何原理的人工智能方法;(3)基于特征模型的造型方法。其中数学方法又分为初等方法(Primary Approach)和代数方法(Algebraic Approach)。初等方法利用预先设定的算法,求解一些特定的几何约束。这种方法简单、易于实现,但仅适用于只有水平和垂直方向约束的场合;代数法则将几何约束转换成代数方程,形成一个非线性方程组。该方程组求解较困难,因此实际应用受到限制;人工智能方法是利用专家系统,对图形中的几何关系和约束进行理解,运用几何原理推导出新的约束,这种方法的速度较慢,交互性不好;特征造型方法是三维实体造型技术的发展,目前正在探讨之中。

参数化设计技术以约束造型为核心,以尺寸驱动为特征,允许设计者首先进行草图设计,勾画出设计轮廓,然后输人精确尺寸值来完成最终的设计与无约束

1

安徽理工大学毕业设计

造型系统相比,参数化设计更符合实际工程设计习惯,因为在实际设计的初期阶段,设计人员关心的往往是零部件的大致形状和性能,对精确的尺寸并不十分关心,特别是在系列化设计中,参数化造型技术的优点就更加突出。

设计过程可视为约束满足的过程,设计活动本质上是通过提取产品有效的约束来建立其约束模MY并进行约束求解。设计活动中的约束主要来自功能、结构和制造二个方面。功能约束是对产品所能完成的功能的描述;结构约束是对产品结构强度、刚度等的表示;制造约束是对制造资源环境和加工方法的表达。在产品设计过程中将这些约束综合成设计目标,并将它们映射成为特定的几何/拓扑结构,从而转化为几何约束。所谓几何约束就是要求几何元素之间必须满足某种特定的关系。将几何约束作为构成几何/拓扑结构的几何基准要素和表面轮廓要素,可以导出各种形状结构的位置和形状参数,从而形成参数化的产品几何模具产 品的几何约束主要包含拓扑约束和尺寸约束两方面。拓扑约束是对产品结构的定性描述,它表示几何元素之间的固定联系,如对称、平行、垂直、相切等,这些关系拟抽象为点、边、面间等九类有向关系每一类关系有相应的谓词,包括“相同”、“平行”、“垂直”、“相交”、“偏移,’等。尺寸约束则为特征勺L何元素间相对位置的定量表示,如各种距离、两线夹角、圆的半径等。尺寸约束是参数化驱动的对象,其不仅可以变动,而且需要标注和显示。尺寸约束可表征为一组基本参数且具有与产品结构层次相对应的层次性。产品特征模型中高层约束是形状特征之间的形位关系;几何元素之间的约束,则是低层约束的封装;高层约束需通过低层约束来实现。参数 驱 动 中约束方程的求解或尺寸链的推导是难点、如何保证在各种情况下都得到稳定的解,尚未得到完全的解决。

目前,解决参数驱动中约束的方法主要有如下几种:(1)基于几何约束的变量几何法;(2 )基于几何推理的人工智能法;(3 )基于构造过程的构造法;(4 )基于辅助线法。上面 介 绍 的几种方法目前应用较为广泛,但儿何推理法采用谓词描述约束,而且采用专家系统进行推理求解,效率低,难以满足交互绘图的要求。构造法通过对造型过程的记录,记下几何元素的生成顺序及其相互间的关系,当用户修改参数时,系统按原来的造型顺序和几何元素之间的关系重新构造设计过程,构造法能够克服前面两种方法的不足,但要求用户严格遵守一定的造型顺序,缺乏灵活性。另外,对隐含约束、过约束、约束不足的处理既是参数化技术的关键问题,又是没有得到很好解决的问题。因此为了解决这些问题,有许多人提出了一些新思想和新技术吴睿等提出了约束分离的参数设计方法,他们把几何图形的结构约束同尺寸约束分离开来,并通过记录用户所生成几何图形的特征点坐标,形成几何图形的结构约束数据,他们认为当用户形成图形时,结构约束已经形成(是隐含的),所以通过特征点的记录可以方便地反映隐含的约束。用户修改几何约束之间结构关系的过程是通过施加结构约束完成的,在修改过程中,系统通过一定的算法改变特征点的坐标,形成新的结构约束。当几何体的结构约束确定之后,再通

2

安徽理工大学毕业设计

过尺寸的变化驱动图形的变化。约束分离的特点是修改结构约束时,不考虑尺寸的影响。而在尺寸过程驱动中保持结构约束不变。

1978年麻省理工学院机械工程系的一篇《CAD零件的特征表示》揭开了特征设计的序幕。自20世纪80年代以来,基于特征设计的方法已被公认为是解决产品开发与过程设计集成问题的有效手段。特征是具有工程含义的几何实体,它表达的产品模型兼含语义和形状两方面的信息,而特征语义包含设计和加工信息,它为设计者提供了符合人们思维的设计环境,设计人员不必关注组成特征的几何细节,而是用熟悉的工程术语阐述设计意图的方式来进行设计。因此基于特征的设计越来越广泛地应用于参数化设计中。基于特征 参数化方法意在将基于特征设计方法与参数化技术有机地结合起来,实现对多种设计方式(白顶向下或自底而上等)和设计形式〔初始设计、相似设计和变异设计等)的支持。

在 SolidWorks 软件开发中,参数化设计方法的研究已成为研究和开发的热点,但目前的所有软件还没有)一分完美地解决现今存在的一些问题。随着各种参数化技术的相互融合,各种新技术的不断发展,相信最终会出现能较完美实现参数化功能的技术。

3

安徽理工大学毕业设计

1 液压缸设计

1.1基于VBA的SolidWorks 的二次开发概述

SolidWorks 是一款非常优秀的三维制图软件,易学易用,目前是市场份额增长最快、技术发展最快、市场前景最好、性能价格比最优的软件。在全球销量已达到30万套,排名处于3D CAD软件销售榜首,遥遥领先与其他同类产品。一套基于Windows 的CAD 桌面集成系统,是由美国SolidWorks 公司在总结和继承了大型机械CAD 软件的基础上,在Windows 环境下实现的第一个机械三维CAD 软件。SolidWorks 的基本特性与以前的桌面CAD 机械设计系统相比较具有以下特性: 1.具有强大的实体建模功能和直观的Windows用户界面; 2.具有独特的特征管理员历史树; 3.双向关联的尺寸驱动机制;

4.支持Internet 技术,实现数据共享;

5.提供了VB、VBA(宏记录)、Visual C++、Delphi等支持OLE(Object Linking and Embedding, 对象链接与嵌入)或COM(ComponentObject Model,组件对象模型)的开发语言接口用于SolidWorks 的二次开发,创建出用户定制的专用SolidWorks 功能模块。

虽然SolidWorks 所提供的功能非常强大,但要使其在我国企业中真正发挥作用,使常用的或重复的任务自动化,提高效率,就必须对其进行本地化、专业化的二次开发工作,而且这在虚拟工程中也是十分必要的。

在Microsoft Office中,所有使用宏的应用程序都共享一种建立在BASIC语言之上的通用宏语言,Microsoft首先在Word For Windows中应用了宏语言。但是,这种依靠应用程序自身的宏语言有很大的局限性,因为某个应用程序的宏语言只能适用于宏自,而对其他应用程序却是无效的,大多数宏语言本身功能不够强大,也不够灵活,要想对应用程序进行操作或调用其中的功能都是非常困难的事情。1993年,Microsoft首先推出一种可以被多种程序共享的、针对程序内部可编程的,通用的可视化程序编程语言。

Visual Basic for Applications(Microsoft Ofiice软件的通用语言,简称VBA)。VBA不能被归类于“程序语言”,它虽然具有十分完整的程序语言基本结构,事实上,它提供的不单单知识程序,而是对Microsoft Office各种软件功能的一种综合控制。因此,相对于Visual Basic For Windows而言,Visual Basic for Applications算是一种面向用户的控制语言。除此之外,VBA还具有应用程序生成器的特征,因为用户只要将想自动化的操作记录成宏,就可以直接产生宏程序代码(言外之意即以后不必在费事编写程序,只需把操作过程记录下来,就会自动生成编码)。VBA是一套完整的应用程序

4

安徽理工大学毕业设计

开发环境,它为用户和开发人员提供了一种应用程序间通用的程序语言,减少了学习时间和费用。而且VBA也为开发人员提供一种开发方法,用于开发集成多个应用程序系统。可以认为VBA是非常流行的程序程序开发语言VB的子集。实际上VBA是“寄生于”VB应用程序的。在Microsoft Ofiice中,所有的应用程序都可以用VBA,不想多花时间学习VB的用户,可以直接拿附加在软件中的VBA来应用,从而实现繁琐、机械的日常生活自动化,提高用户办公效率。

VBA的主要特点来源于两方面:首先是和VB有着几乎相同的开发环境和语法,具有功能强大和易于掌握的特点;再者在于它面向对象的功能,即它的针对性非常强,使其结构简洁,代码运行效率非常高。 1.1.1宏的应用

任何支持OLE和COM的编程语言都可以作为SolidWorks的开发工具。SolidWorks二次开发分两种,一种基于自动化技术的,一种COM。COM技术可以使用最多的SolidWorks API,并可以控制SolidWorks运行的方式。最最简单的开发工具VBA。VBA最常用的方法就是录制宏。几乎每一个可以用键盘和菜单命令完成的动作均能被宏记录下来,然后对不同的数据进行同一批操作。记录宏把需要用户重复化的工作自动化了。 宏是一系列命令的集合,相当于DOS下的批处理。你可以录制使用SolidWorks用户界面的执行操作,然后用SolidWorks宏重新执行这些处理。宏所包含的调用相当于使用用户界面时,对API的调用。通过记录宏和交互式的执行任务,可以在所需的代码上获得命令和语法上的飞跃。在写任何代码之前,记录宏用着工程的基础。当向程序添加功能时,返回到Solidworks,记录添加的宏。然后剪切和粘贴记录的宏到你的应用代码中,这样做即使对最先进的程序也是有益的。

在SolidWorks中调用宏。单击【视图】→【工具栏】→【宏】菜单命令,或使用右键单击SolidWorks工具栏上任何位置,在弹出的菜单中选择【宏】命令,可显示宏工具栏。

1.2液压缸的一般设计

一部现代机器,如果不是以行走为工作目的,它通常由机架、原动机、传动装置和工作机构四个主要部分构成,其中机架为载体,原动机的作用是进行能量形式的转换,为机器提供适当形式的动力,传动装置的作用是进行动力的传递,工作机构即执行机构,其作用是消耗能量而做功。如果原动机将其他形式的能转换成液压能,执行元件消耗液压能而做功,则称为液压机械(或液压机)。液压机械的执行元件即做功元件是液压马达和液压缸。液压马达和液压缸是通用化和标准化程度很高的液压元件,用户或设计者在研制一部新的液压机械时,应尽量选择标准化的液压元件,以避免金钱的浪费和时间、精力的消耗。但由于使用要求的千差万别,液压元件的专用化设计是不可避免的,其中

5

安徽理工大学毕业设计

以液压缸设计居多。这是由于液压缸配置的灵活性、设计、制造比较容易、维护比较方便的特点决定的。因而,相对其他液压元件而言,液压缸的设计是极为常见的,这也是工程技术人员必须具有的一种基本技能。 1.2.1液压缸结构分析和优化的发展状况

液压缸能与各种传动机构相配合,完成复杂的机械运动,所以应用范围很广。其中在工程机械、 矿山机械上的用量最大,其次是金属切削机床、锻压机床、注塑机,在船舶、飞机、农业机械、冶金设备及其他自动化设备和装置中也大量应用。近年来,国内外发表了不少论文,研究了液压缸的稳定性、可靠性、强度和局部应力、液压缸的运动特性、缓冲理论和液压缸的寿命等问题。本文将针对液压机上用的液压缸进行讨论。 液压缸是液压机的主要部件,它的作用在于把液体压力能转换为机械功。高压液体进入缸内后,作用于活塞 ( 柱塞)上,经活动横梁将力传到工件上,使工件产生塑性变形。

液压缸制造工艺复杂,对材料、表面质量、加工精度要求很高,同时价格昂贵,少则几万元,多则几十万、上百万元,因此对液压缸的设计要十分慎重。在生产应用中,液压机的工作缸常由于以下几个设计方面的原因,导致其过早损坏。

( 1 )由于结构尺寸设计不合理,法兰高度太小或法兰外径过大,而使局部应力过高。某台200000锻造液压缸,其法兰高度仅为缸壁厚度的l.1倍,法兰处计算应力超过250MPa ,工作1 -2 年后, 两个缸先后破裂。 更换新缸时,增大了法兰高度,减小了法兰外径,使用多年未坏。

( 2 )从缸壁到法兰的过渡区结构设计不合理,也会引起很大的应力集中。如一台6300kN液压机的工作缸,由于法兰过渡圆弧半径仅为4mm,使用不久就出现裂纹,裂纹扩展后,整圈法兰断裂脱落。为避免此种情况,可以对法兰处的过渡形线进行优化设计,选择能降低应力集中系数的形线。

( 3 ) 从缸底到缸壁的 过渡区产生弯曲 应力并有应力集中, 此处圆弧半径太小是缸底破裂的主要原因之一, 一般不应小于液压缸内直径的1 / 8。有几台液压缸的缸底圆弧半径分别为液压缸内直径的1/12.7 ,1/10 和1/9,结果液压缸均曾在缸底破裂。因此,正确合理地设计液压缸是至关重要的。 在传统设计中,液压缸的分析计算采用材料力学和弹性力学方法,并对受力情况作若干假设,但传统的弹性力学计算方法由于模型简单,所作的假设不能精确地反映实际情况,并且应力计算没考虑局部应力场的影响,所以误差较大。因此, 学者对此作了许多研究和改进, 提出了一些新的弹性力学计算方法,其中,对经常破坏的法兰和缸底过渡区研究最多。

新的液压缸强度分析理论和方法己逐步趋于实际应力应变情况,但它只能对液压缸的某个局部进行分析,工程应用中常常需要知道整个液压缸的应力分布情况,因此,需

6

安徽理工大学毕业设计

要一种新的分析计算方法即有限元法。有限元法是一种迅速而准确地分析结构强度和刚度等问题的数值计算方法,适于各种复杂结构的力学计算。 1.2.2设计的一般原则

液压缸设计时应注意如下问题:

1.保证液压缸的输出力(推力、拉力或转矩)、行程和往返运动速度满足要求。液压缸的额定工作压力(输出力的折算值)以液压泵的额定工作压力的70%为宜。 2.保证液压缸的每个零件有足够的强度、刚度和耐用性(寿命)。

3.在保证上述两个条件的前提下,尽量减小液压缸的外形尺寸和重(质)量。一般说来,在外负载一定的条件下,提高液压缸的额定工作压力可减小液压缸的外形尺寸。 4.在保证液压缸性能的前提下,尽量减少零件数量,简化结构。

5.尽量避免液压缸承受横(侧)向负载和偏心负载,活塞杆工作时最好受拉力,以免产生纵向弯曲而引发稳定问题。

6.液压缸的安装形式、活塞杆头部与外负载的连接形式要合理,尽量减小活塞杆伸出后的有效安装长度,避免产生“憋劲”现象,增加液压缸的稳定性。

7.密封部位的设计和密封件的选用要合理,保证性能可靠、泄漏量少、摩擦力小、寿命长、更换方便。密封部位的设计是保证液压缸性能的重要一环,对所选用的密封件,应使其压缩量和压缩率在合理范围内。

8.根据液压缸的工作条件和具体情况设置适当的排气、缓冲和防尘措施。在工作条件恶劣的情况下应考虑活塞杆的防护措施。

9.各种零件的结构形式和尺寸设计,应尽量采用标准形式和规范系列尺寸,尽量选用标准件。

10.液压缸应做到成本低、制造容易、维修方便。 1.2.3设计的一般步骤

不同类型、用途和结构的液压缸,设计内容是不同的。由于液压缸各参数之间往往具有内在联系,所以液压缸的设计没有硬性规定或统一的格式。一般情况下,应根据已确定的各种工作条件和掌握的设计资料,灵活地选择设计程序和步骤,反复推敲和计算,直到获得满意的设计结果。一般设计工作可参考下列步骤进行:

1.根据设计依据和负载机构的动作要求,初步确定设计方案:缸体结构形式、安装方式、连接方式等。

2.根据液压缸承受的外部载荷作用力如重力、外部机构运动摩擦力、惯性力及工作载荷,确定液压缸在行程各阶段上负载变化规律及必须提供的动力数据,最好作出负载—位移(F?x)图、负载——时间(F?t)图、位移——时间(x?t)和负载——速度(F?u)图,使设计数据一目了然。

7

安徽理工大学毕业设计

3.在以输出力为主的液压缸设计中,根据负载F和选定的额定(工作)压力Pn,确定缸筒内径(即活塞外径)D和活塞杆直径d。比较方便的方法是根据液压计算图表(有关液压缸内容)或液压缸性能参数表,由选定的额定(工作)压力或负载决定D和d。D和

d应符合系列尺寸之规定,两者是液压缸设计的基本参数。

4.根据选择活塞外径D和活塞杆直径d计算无杆腔面积A1和有杆腔面积A2;根据液压缸速度u的要求,确定液压缸所需的流量Q。在以液压缸速度为主的设计中,应首先根据工作速度选择液压缸的流量Q、活塞外径D及活塞杆直径d;再根据负载F确定液压缸的额定(工作)压力。

5.选择缸筒材料,计算缸筒厚度或外径。缸筒外径要符合系列尺寸之规定。缸筒通常选择冷拨或热轧无缝钢管,以节省加工费用,特殊要求时选用锻件或铸件。有焊接要求时,选用焊接性能较好的35号钢或ZG35。无焊接要求时通常可选用45号钢,有特殊要求的,可选择合金钢。

6.选择缸底和缸盖的结构形式,计算缸底厚度、缸筒与缸盖的连接强度;确定具体安装型式及结构尺寸;确定缸筒上油口的位置、尺寸和连接形式。

7.活塞组件设计,包括活塞的宽度B、密封和支承形式,与活塞杆的连接方式,活塞杆与负载的连接形式和尺寸,根据负载F校核活塞杆的强度。根据行程S、活塞宽度B等确定活塞的长度L。对于活塞杆直径d与液压缸行程S之比小于0.1,即S≥10d时,应进行活塞杆纵向弯曲强度校核及液压缸稳定性校核。仅承受拉负载的液压缸可不作上述校核。

8.必要时设计缓冲和排气装置。当液压运动速度较高(u>12m/min)或运动部质量较大时,为防止活塞在行程末端与缸盖或缸底发生机械碰撞而引起冲击或造成液压缸及被驱动件的损坏,必须设计缓冲装置。液压缸速度u<6m/min时不需要设计缓冲装量。 9.审定全部设计资料及其他技术文件,对图纸进行修改和补充。 10.绘制液压缸装配图和零件图,编制技术文件。 1.2.4液压缸的设计理论体系结构

液压缸设计是理论与经验的结合。我们根据液压缸的使用环境,使用要求,设计液压缸。 有的液压缸要求行程,有的要求速度,有的要求负载,有的要求是上述要求的不同组合。但是无论要求什么,都是下面设计体系框图表明的各种制约因素的平衡。

8

安徽理工大学毕业设计

图表:液压缸设计理论体系框图

1.3基于SolidWorks的液压缸参数化设计

利用SolidWorks中VBA的二次开发应用,应VB语言编写程序,通过SolidWorks运行实现液压缸模型,这样可以通过改变液压缸中参数的相关尺寸,即快速而准确的得到所需的液压缸。

1.3.1液压缸的参数化设计原理

将液压缸的组件(如活塞杆、缸体、活塞、端盖)按相似形原理归类建构系列产品的基本参数模型,提出参数模型设计参数作为驱动变量,在图形拓扑关系不变的情况下控制组件的几何尺寸。

设计参数的提取原理是能够反映产品的性能和用户的要求,能够控制组件的基本结构,如活塞设计主参数是活塞的外径、孔径和活塞宽度,缸筒的主参数是缸筒的外径和缸筒的长度。但是组件的设计主参数之间有约束关系,如活塞的外径与缸筒的内径相等,活塞的孔径与活塞杆径有函数关系,缸筒的长度与缸的行程、活塞宽度、缸盖和缸底的长度有关系,而活塞宽度又与密封结构、支撑结构以及与活塞杆的联接方式有函数关系。与主参数对应或函数关系的结构尺寸定为参考变量,结构尺寸不随主参数变化的定为常

9

安徽理工大学毕业设计

量尺寸。

在SolidWorks环境下,构造液压缸的零件的二维草图,对草图的点线添加几何约束和尺寸约束,通过旋转,拉伸等操作形成三维模型,用SolidWorks中的宏录制提取所需的编程代码,通过改变其中的变量,给参数重新赋值,通过函数关系确定,再通过VB中的语句反馈到三维模型,模型的拓扑关系没变,但尺寸变化了。

当液压缸设计完成后,形成液压缸的设计主参数汇总表,可在VB添加一个或者多个窗体,将所需的命令按钮、文本框、标签的设置好所需的参数,通过VB中的函数关系来确立将其需要改变的参数改成变量,然后通过输入自己想要的数值给变量赋值,调试、运行后即可得到新的模型零件。

液压缸参数化程序是运用VB语言程序所写,SolidWorks包含VBA这一二次开发的软件工具。VB与SolidWorks系统紧密集成,运用VB程序也可完成与SolidWorks各种交互动作。

10

安徽理工大学毕业设计

2液压缸的结构

液压缸是液压传动系统中应用最多的执行元件,它将油液的压力能转换为机械能,实现往复直线运动或摆动,输出力和扭矩;其作用方式可分为单作用式和双作用式两种,单作用式液压缸只能实现单向运动,及压力油只是通过液压缸的一腔,而反方向运动必须依靠外力来实现,如复位弹簧力、自重或其他外部作用;双作用式液压缸在两个方向上的运动都由油压力推动来实现,可实现双向运动。 下图为立柱二维零件图:

图1:立柱二维零件图

从二维零件图上可以看出,液压缸为多级缸,前一级缸的活塞赛后一级缸的缸套,活塞的伸出顺序是从大到小,相应的推理也是从大到小,而伸出的速度则是由慢变快。空载缩回的顺序一般是从小活塞到大活塞,收缩后液压缸的总长度较小,占用空间较小,结构紧凑。液压缸由后端盖、一级缸筒、二级缸筒、活柱等主要部分组成;为防止油液向液压缸外泄或由高压腔向低压腔泄漏,在缸筒与端盖、活柱和二级缸,二级缸和一级缸之间均设置有密封装置,在缸头处还设置有防尘装置;为防止活柱快速退回到行程终端时撞击缸盖,液压缸端部还设置缓冲装置;有时还设置排气装置。此二维图为缓冲装置。二维图中包括了活柱、一级缸、二级缸、端盖、导向套、卡环、卡键等及一些密封装置。图中标有加工的一些主要尺寸,从剖面可以看出内部结构,可以初步了解立柱的结构,及各部件的配合关系。以此图作为原始资料通过其尺寸关系获得设计所需的尺寸和几何关系。

11

安徽理工大学毕业设计

2.1缸体组件

一级缸组件与二级缸组件形成的密封容腔承受油压作用,因此一级缸体组件要有足够的强度,较高的表面精度和可靠的密封性。 2.1.1缸体与缸盖的连接形式 常见的缸体连接形式有:

(1) 法兰式连接,结构简单,加工方便,连接可靠,但是要求缸筒端部有足够的壁厚,

用以安装螺栓或旋入螺钉。

(2) 半环式连接,又内外半环式两种形式,半环式连接工艺好,连接可靠,结构紧凑,

但削弱了缸筒强度。

(3) 螺纹连接,也有内外式两种,其特点是体积小,重量轻,结构紧凑,但缸筒端部

结构较复杂。

(4) 拉杆式连接,结构简单,工艺性好,通用性强,但端盖的体积和重量较大。 (5) 焊接式连接,强度高,制造简单但焊接时易引起缸筒变形。 2.1.2缸筒、端盖和导向套的基本要求

缸筒是液压缸的主体,其内孔一般采用镗削、绞孔、滚压等精密加工工艺制造;缸筒压迫承受很大的液压力,因此,应具有足够的强度和刚度。

端盖装置在缸体端部,与缸筒形成密封油腔,同样承受很大的液压力,因此,端盖及其连接件都应该有足够的强度。

导向套对活塞或柱塞起导向和支撑作用,有些液压缸不设导向套,直接用端盖孔导向,这种结构简单,但磨损后必须更换端盖。 2.2密封装置

液压缸的密封装置是液压缸结构中重要环节之一,用于活塞、活塞杆和端盖等处,防止液压缸的内部泄漏。常见的密封结构如下:

(1)间隙式密封。间隙式密封是依靠活塞和缸体之间额相对运动的微小间隙密封的,多用于工作压力较低,缸体直径较小的液压缸中。

(2)活塞环和O形密封圈密封。活塞环优越于间隙密封,但活塞环制作和装配复杂,多用O形密封圈取而代之,构成O形密封。

(3)Y形密封圈密封。Y形密封圈密封性能好,结构简单,安装方便,是使用广泛的密封结构之一。将Y形密封圈放在活塞槽中,使其唇口向外对着压力油,增加了密封可靠性。 2.3液压缸缓冲装置

当液压缸带动质量较大的部件作快速往复运动时,应设置缓冲装置,以防止活塞运

12

安徽理工大学毕业设计

动到末端时与缸盖碰撞,产生噪声和冲击并造成液压缸损坏。液压缸的缓冲装置一般都是利用节流原理来实现。缓冲的原理是当活塞或缸筒接近行程终端时,在排油腔内增大回油阻力,从而降低液压缸的运动速度,避免活塞和缸体相撞。常见的缓冲装置形式有两种:间隙缓冲装置和节流阀缓冲装置。又可细分为:圆柱形环隙式缓冲装置,圆锥形环隙式缓冲装置,可变节流槽式缓冲装置,可调节流孔式缓冲装置。 2.4排气装置

液压传动系统中往往会混入空气,使系统工作不稳定,产生震动、爬行或前冲等现象,严重时会使系统不能正常工作。因此,设计液压缸时,必须考虑空气的排除。对于要求不高的液压缸,往往不设计专门的排气装置,而是将油口布置在缸筒两端的最高处,这样也能使空气随油液排往油箱,再从邮箱溢出;对于速度稳定性要求较高的液压缸和大型液压缸,常在液压缸的最高处专门设计排气装置,如排气塞、排气阀等。 2.5建立液压缸的三维模型

获得液压缸的二维图后,分析了各部件的结构和功能。知道各组件之间的关系和配合。在运用已知的立柱二维零件图,按照上面的尺寸标注和几何关系,分别将活塞杆、缸体、活塞、方向套、保持套等零件运用SolidWorks进行三维建模,最后将各部分零件进行装配,等到液压缸的三维模型。其中密封装置为标准件,可以直接从库中调取,不必要建立模型,只需将主要部件建模即可。从二维零件图可以获得尺寸,其中主尺寸如下:缸体总长L=1968mm,一级缸L1=1588mm,二级缸L2=1608mm,活柱L3=1688mm,一级缸外径D1=299mm,二级缸外径D2=235mm,活柱直径D3=160mm。

图2:三维液压缸实体

13

安徽理工大学毕业设计

3参数化设计

在SolidWorks环境下,构造液压缸的零件二维草图,对草图的线、点加以约束,通过旋转、拉伸、切除等操作形成三维模型。参数化建模,就是利用VBA语言来实现建模操作,对主要参数进行参数化,从而实现对参数重新赋值,重新生成另一种尺寸的三维模型,从而实现参数化。参数化设计是通过改动图形的某一部分或某几部分的尺寸,或修改已定义好的零件参数,自动完成对图形中相关部分的改动,从而实现对图形的驱动。参数驱动的方式便于用户修改和设计。 3.1活柱的参数化设计

运用SolidWorks宏编辑,建立活柱的参数化模型。具体建模过程如下: 1)根据液压缸的结构和功能,分析二维图,确定活柱的参数;

需要参数化的参数为:活柱小径d1,活柱大径d2,活柱长度l,活柱杆头圆孔直径d3。将这些参数设置为未知变量,根据用户的要求可自行确定,其他的尺寸可根据以上参数列出方程和代数关系,有些标准件可以不用参数化,这给参数化过程变得简洁了不少。 打开宏新建窗口,点击工具栏的【插入】→【用户窗体】,建立一个窗体,再点击工具箱里的控件,将其添加到窗体中,修改一些控件的属性,建立图3.1的窗体:

图3.1活柱参数化窗体

14

安徽理工大学毕业设计

图中参数为二维图纸上尺寸,设为默认参数,用户可以根据需要进行设定。 2)绘制草图1

草图1为活柱的外形结构:

图3.2活柱草图1

部分程序代码如下:

Dim swApp As Object ‘定义Solidworks对象的变量 Dim part As Object ‘定义ModleDoc对象的变量 Sub main()

Set swApp = Application.SldWorks ‘激活SolidWorks Set part = swApp.NewDocument(\2008\\templates\\零件.prtdot\

Set part = swApp.ActivateDoc2(\零件1\

Set part = swApp.ActiveDoc ‘打开零件文件 boolstatus = part.Extension.SelectByID2(\前视基准面\\0)

part.SketchManager.InsertSketch True ‘选择前视基准面 以上代码在每个零件的编程过程中都会用到,为常用代码。 在此草图中,用的代码主要是直线代码: Dim SkLine As Object

Set SkLine = Part.SketchManager.CreateLine(X1, Y1, Z1, X2, Y2, Z2) (X1, Y1, Z1)为直线起点坐标,(Z1, X2, Y2, Z2)为直线终点坐标。 3)草图1生成三维模型

退出草图工作环境,在特征环境下,选择【特征】→【旋转凸台】,即可生成三维模型。

15

安徽理工大学毕业设计

代码如下:

boolstatus = Part.Extension.SelectByID2(\\0, 0, 0, False, 4,

Nothing, 0) ‘选择旋转中心线 boolstatus = Part.Extension.SelectByID2(\草图1\ ‘选择旋转的草图 Part.InsertRevolvedRefSurface 6.28318530718, False, 3.14159265359, 0

‘选择旋转角度,6.28318530718即为360度 4)绘制草图2

草图2为活柱内部结构:

图3.3活柱草图2

在此草图中用到另一函数画一切线圆弧,代码如下:

SetSkArc=Part.SketchManager.CreateTangentArc(X1, Y1, Z1, X2, Y2, Z2, 1)

(X1, Y1, Z1)为圆弧起点坐标,(X2, Y2, Z2)为圆弧终点坐标。1表示为顺圆弧,-1则表示逆圆弧。 5)草图2生成三维特征

退出草图工作环境,在特征环境下,选择【特征】→【旋转凸台】,即可生成三维模型。代码如下:

boolstatus = part.Extension.SelectByID2(( Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption)

boolstatus = part.Extension.SelectByID2(( Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption) ‘选择旋转中心线

boolstatus = part.Extension.SelectByID2(\草图2\ ‘选择草图2

16

安徽理工大学毕业设计

part.FeatureManager.FeatureRevolveCut 6.28318530718, False, 0, 0, 0, 1, 1 ‘选择旋转切除角度,6.28318530718即为360度 6)绘制草图3,并生成特征 草图3为活柱杆头圆顶。 7)绘制草图4,并生成特征 草图4为活柱杆头圆孔 8)绘制草图5,并生成特征 草图5为进油孔

在此草图需建立一基准面,用到建立基准面的函数,代码如下:

boolstatus = part.Extension.SelectByID2(\右视基准面\0) ‘选择某个基准面 part.CreatePlaneAtOffset3 1.07, False, True

‘相对选择的基准面偏移多少

boolstatus = part.Extension.SelectByID2(\基准面1\ ‘建立的基准面名称,并选择该基准面 9)完成活柱的参数化建模过程 下图为生成的活柱三维模型:

图3.4活柱的三维模型

10)将以上建模过程作为主程序,命名为“draw”;插入一模块,命名为“define”。编辑模块“define”如下:

Sub de()

17

安徽理工大学毕业设计

d1 = UserForm1.TextBox1.Text d2 = UserForm1.TextBox2.Text l = UserForm1.TextBox3.Text d3 = UserForm1.TextBox4.Text End Sub

为了避免函数的重复定义,故在程序中将模块名改为“de”。 11)编辑控件Command

控件Command即为画图命令,在此命令中将调用主程序“draw”和模块“define”,将窗体和程序联系起来。完成参数化过程。代码如下: Set swApp = Application.SldWorks

Setpart=swApp.NewDocument(\Data\\SolidWorks\\SolidWorks 2008\\templates\\零件.prtdot\Set NewPart = swApp.ActivateDoc(\零件\

UserForm1.Hide

De ‘调用函数define Main ‘调用函数main UserForm1.Hide实现了当程序运行时,隐藏窗体的功能。

12)隐藏基准面,保存运行生成的文件,完成参数化过程,代码如下: boolstatus = part.SetUserPreferenceToggle(198, True) '隐藏基准面

part.SaveAs2 \毕业设计\\毕业设计(千万别删)\\模型\\一级缸.SLDPRT\ '保存文件

18

安徽理工大学毕业设计

图3.5活柱建模设计树

从图3.5可以很明确的看出建模的过程。

13)运行和调试。保存代码,命名为“活柱的参数化设计”,格式为.swp。 打开窗体,点击

按钮,再点击

按钮,运行程序。运行过程中出现

问题,需要调试,再接着运行,直至完成整个程序。改变尺寸运行,看是否会出现位置错乱,如果出现位置错乱,检查草图,在错乱的地方,添加捕捉命令:Part.SketchManager.AutoInference = False Part.SketchManager.AutoInference = True

运行结束后,点击【保存】按钮,命名为“活柱参数化设计”,格式为“.swp”。下次可以直接运行该程序。 3.2 二级缸的参数化设计

运用SolidWorks宏编辑,建立活柱的参数化模型。具体建模过程如下: 1)根据液压缸的结构和功能,分析二维图,确定活柱的参数;

需要参数化的参数为:二级缸小外径d1,二级缸大外径d2,二级缸长度l。二级缸的缸壁厚度一定,所以缸的内径无需参数化,即为外径减去缸璧厚度。将这些参数设置为未知变量,根据用户的要求可自行确定,其他的尺寸可根据以上参数列出方程和代数关系,有些标准件可以不用参数化,这给参数化过程变得简洁了不少。

打开宏新建窗口,点击工具栏的【插入】→【用户窗体】,建立一个窗体,再点击工具箱里的控件,将其添加到窗体中,修改控件的属性(lable1的属性改为二级缸的小外径

19

安徽理工大学毕业设计

d1,)建立图3.6的窗体。

图3.6二级缸的参数化窗体

2)绘制草图1

草图1为二级缸的外形结构:

图3.7二级缸草图1

代码和活柱基本一样。根据设定的参数和标准件的尺寸,可以列出其他尺寸。写入代码,从而实现参数化。 3)草图1生成三维模型

退出草图工作环境,在特征环境下,选择【特征】→【旋转凸台】,即可生成三维模型。 4)绘制草图2

草图2为二级缸内部结构

20

安徽理工大学毕业设计

图3.8二级缸草图2

此草图主要是直线代码,前面活柱参数化过程中,运用比较多,可以总结起来,自己编写程序,省去每次录制宏的过程,提高毕业设计效率。草图中包含了小导向套的安装位置,小导向套为标准件,可以直接从数据库中调用,故此段无需参数化,按图纸给定的尺寸编写代码。在以后的设计中,有标准件的位置都可以标准化,无需参数化。 5)草图2生成三维特征

退出草图工作环境,在特征环境下,选择【特征】→【旋转凸台】,即可生成三维模型。代码如下:

boolstatus = part.Extension.SelectByID2(( Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption)

boolstatus = part.Extension.SelectByID2(( Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption) ‘选择旋转中心线

boolstatus = part.Extension.SelectByID2(\草图2\ ‘选择草图2

part.FeatureManager.FeatureRevolveCut 6.28318530718, False, 0, 0, 0, 1, 1 ‘选择旋转切除角度,6.28318530718即为360度

6)建立基准面1,绘制进油孔1。基准面1是上视基准面向上偏移一定数值,而油孔与缸的内外径、长度均无关,故可以不用参数化,只需确定圆心坐标,圆孔半径确定为图纸上尺寸10mm,圆心坐标和二级缸长度有关,故需要参数化。

7)在二级缸缸底建立基准面2,绘制油孔2。基准面2是右视基准面向左偏移缸体长度l。绘制油孔2同油孔1,只需圆心参数化,半径确定。

在建基准面时,要看好方向,主要根据草图1选择的基准面,比如此处基准面2就是右视基准面偏移-l,而不是正l。

21

安徽理工大学毕业设计

8)选择基准面2,绘制安装螺栓孔。

boolstatus = part.Extension.SelectByID2(\基准面2\0)

在此草图中无需重新新建基准面,可以直接应用上面的基准面2,代码如上。这样简化整个参数化代码。

9)完成活柱的参数化建模过程 下图为生成的二级缸三维模型剖面图:

图3.9二级缸的三维模型剖面图

10) 将以上建模过程作为主程序,命名为“draw”;插入一模块,命名为“define”。 模块define编辑可参考活柱。 11)编辑控件Command。参考活柱。

12)运行和调试。可参考活柱的调试过程。保存代码,命名为“二级缸的参数化设计 3.3一级缸的参数化设计

一级缸比较复杂,上面附件太多,多为焊接件。考虑到附件大多与缸的结构和功能没多大关联,故可以在建模时,一体化。每个附件都需要建立基准面,故此模型中建立的基准面比较多,相对坐标比较复杂,也比较繁琐。

运用SolidWorks宏编辑,建立活柱的参数化模型。具体建模过程如下: 1)根据液压缸的结构和功能,分析二维图,确定一级缸的参数;

一级缸的缸头部分,比缸体外径大,设为一参数,但是长度与整体结构无关,设为定值,为图纸上尺寸195mm,缸体外径与缸的大小有关,设为一参数,缸的厚度一定,为32mm,故缸的内径为外径减去厚度即可。缸体长度与缸的伸缩长度有关,故设为一参数。内部大导向套为标准件,不必参数化,不用设参数,可按图纸尺寸建模。

22

安徽理工大学毕业设计

需要参数化的参数为:缸体外径d1,一级缸长度l,缸头外径d2。将这些参数设置为未知变量,根据用户的要求可自行确定,其他的尺寸可根据以上参数列出方程和代数关系,有些标准件可以不用参数化,这给参数化过程变得简洁了不少。

打开宏新建窗口,点击工具栏的【插入】→【用户窗体】,建立一个窗体,再点击工具箱里的控件,将其添加到窗体中,修改一些控件的属性,建立图3.10的窗体:

图3.10一级缸的参数化窗体

2)绘制草图1,并生成特征。

草图1为一级缸的基本结构,包含了缸的内外径,缸头的大径,以及缸的整个长度。在缸头的内壁,留有安装大导向套的空隙,整个一级缸的结构很明了。此段代码也很容易,直线代码,旋转代码,在设计活柱和二级缸时已经反复用到,可以直接编写,无需录制。下图为一级缸的草图1所生成的特征:

23

安徽理工大学毕业设计

图3.11一级缸的基本结构

3)绘制草图2,并生成特征

草图2为一级缸上的一个方块,为焊接件,作为附件,无需参数化,按图纸上的尺寸绘制草图。绘制草图时,可以画出一半,用镜像命令,绘制出另一半,再将缸体外径圆转化为实体,添加几何关系,使直线的端点和圆弧上的点竖直重合,使用剪切命令,剪去多余的线条,将剩下的线条作为草图2。退出草图2的编辑环境,转到特征环境中,拉伸55mm,就可以生成特征。完成草图2的绘制和生成特征。镜像和剪切代码没接触过,可以用宏录制下来,在SolidWorks的API帮助主题里搜索,了解各参数的含义,再进行修改,加入自己的参数。

以上方法比较繁琐,确定几何关系时参数不好确定,还有代码也比较长,很容易出错,不利于代码的简洁性,后面调试时,也不容易修改。我们可以先计算出草图2的相对坐标,绘制3条直线,省去镜像代码的应用。再绘制一段3点弧,当然弧的半径和缸体半径一样,圆弧起点和终点分别为直线1和直线2的终点。如果在运行时,出现位置错乱,可以添加一几何关系,让直线1的终点和圆弧的起点重合,或者直线2的终点和圆弧的终点重合,即可。

boolstatus = part.Extension.SelectByID2(\True, 0, Nothing, 0)

boolstatus = part.Extension.SelectByID2(\\0, 0, 0, True, 0, Nothing, 0)

part.SketchAddConstraints \part.SketchAddConstraints \\上面的代码为添加几何关系代码。

24

Set SkArc = Part.SketchManager.CreateArc(X1, Y1, Z1,X2, Y2, Z2, X3, Y3,Z3, -1)

安徽理工大学毕业设计

‘绘制三点圆弧

(X1, Y1, Z1)为圆心坐标,(X2, Y2, Z2)为圆弧起点坐标,(X3, Y3, Z3)为圆弧终点坐标。正负1表示圆弧的方向,正1表示顺时针圆弧,负1表示逆时针圆弧。 Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.02(拉伸第一方向), 0#(第二方向), False, False, False, False, 0#, 0#, False, False, False, False, 1, 1, 1, 0, 0, False 上面代码为拉伸代码,生成草图2特征。拉伸有两个方向,可以根据需要选择。

图3.12一级缸草图2特征

4)建立基准面2,绘制方块1上的孔。基准面2是上视基准面向上偏移到方块的顶部。孔的半径按图纸尺寸,但孔的圆心不在方块的正中心,是与缸头端面距离201mm。此处为一沉孔,还需建一基准面3,绘制一圆,拉伸切除,才可以形成。 5)建立基准面4,绘制安装塑料堵的孔。过程同上步。

6)建立基准面5,绘制方块2。方块2同方块1,均为焊接件,也无需参数化,按照二维图纸尺寸绘制。基准面5没有具体尺寸,很难定位,可以参照二维图纸的尺寸,利用比例来定位。基准面5按照比例可近视取为l/2。建立基准面5后,选择该基准面,绘制草图5,代码同第一个方块,即草图2。此草图也需添加几何关系,避免代码运行时出错。

7)选择基准面5,绘制Φ25mm的圆,拉伸切除10mm。新建基准面6,基准面5向右偏移10mm,绘制Φ16mm的圆,拉伸切除35mm;新建基准面7,基准面6向右偏移35mm,绘制Φ25mm的圆,拉伸切除10mm。总共建立三个基准面,绘制出三个同心孔。过程相似,代码简单,也比较有逻辑。到此,方块2及其上的孔,建模完成。此处没有参数化的参数,主要就是基准面的新建和选择。下图为完成方块2后的一级缸的模型:

25

安徽理工大学毕业设计

图3.13一级缸草图3特征

8)绘制防护罩。防护罩主要是用来保护管道,焊接在缸体上的附件。防护罩的草图绘制方法很多。可以先绘制轮廓,拉伸,再等距实体,绘制另一草图,切除。这种方法比较繁琐,连续两次选择基准面,思路比较清晰,很容易实现。本次设计采用绘制一个草图,利用薄壁特征直接生成。具体过程如下:建立基准面8,基准面8也是按照上面基准面5按照比例确定,因为缸的长度变化,它们所在的位置也会随其变化。按照比例可算出基准面8是右视基准面向右偏移l/1720.5。基准面建立完成后,绘制草图。草图包含两段圆弧和两条直线,圆弧采用三点画弧的代码。采用这种方法可能会出现直线位置错乱,可添加捕捉代码,哪条直线有错,就添加捕捉代码到哪段直线。绘制完后,添加几何关系,让其中一条直线的起点和终点分别与两段圆弧的起点或终点重合。草图绘制完成。 part.SketchAddConstraints \part.SketchAddConstraints \

上面代码为添加几何关系代码,可以用宏录制方法获得。

生成特征,采用薄壁拉伸,薄壁厚度即防护罩的厚度,可以从二维图纸上获得。代码如下:

part.FeatureManager.FeatureExtrusionThin True, False, False, 0, 0, 0.6, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 0.002, 0.01, 0.01, 0, 0, 0, 0.005, 1, 1 代码中0.6即为拉伸长度。

9)隐藏基准面,保存运行生成的文件,完成参数化建模过程,代码参考活柱。 10)将以上建模过程作为主程序,命名为“draw”;插入一模块,命名为“define”。 模块“define”将窗体的文本框和主程序“draw”联系起来。 11)编辑控件Command。参考活柱。

12)运行和调试。可参考活柱的调试过程。保存代码,命名为“一级缸的参数化设计”,格式为.swp。

26

安徽理工大学毕业设计

完成参数化过程,运行结果如下:

图3.14一级缸的三维模型

3.4端盖和管道的参数化设计

端盖是焊接在一级缸的缸尾的部件,故只和一级缸的内外径有关,而一级缸的内径由外径确定,所以端盖只和一级缸的外径有关,故只需设置一个参数,就是一级缸的外径。端盖上有一方块,也是焊接在端盖上的,可以一起建模。具体过程如下: 1)绘制草图1。选择前视基准面,绘制草图,草图中包含3段切线弧和4条直线,代码可参照上面活柱、一级缸、二级缸。 2)生成特征。旋转草图1,代码如下:

boolstatus=part.Extension.SelectByID2(\0.02424876996988, 0.03466312887798, False, 4, Nothing, 0)

boolstatus = part.Extension.SelectByID2(\草图1\part.FeatureManager.FeatureRevolve 6.28318530718, False, 0, 0, 0, 1, 1, 1 3)新建基准面1,绘制方块3。方法如同方块1和方块2。 4)绘制进油孔1和进油孔2。

5)隐藏基准面,保存运行生成的文件,完成参数化建模过程,代码参考活柱。 6)将以上建模过程作为主程序,命名为“draw”;插入一模块,命名为“define”。 模块“define”将窗体的文本框和主程序“draw”联系起来。 7)编辑控件Command。参考活柱。

8)运行和调试。可参考活柱的调试过程。保存代码,命名为“一级缸的参数化设计”,格式为.swp。

完成参数化过程,运行结果如下:

27

安徽理工大学毕业设计

图3.15端盖的三维模型

管道为辅助元件,为标准件。在液压系统中油管和管接头的作用是将液压元件连接起来,以保证工作介质的循环流动并进行能量装换和传递。因此要求油管在油液传输过程中压力损失小、无泄漏、有足够的强度及装配维修方便。在此次设计中管道的内外径不变,长度只于一级缸的长度有关。可以不必参数化,直接应用。

28

安徽理工大学毕业设计

结论

目前,参数化设计已成为最热门的应用技术之一,能否实现参数化设计也成为评价产品优劣的重要技术指标,这是因为它更符合和贴近现代概念设计以及并行设计思想,工程设计人员设计开始阶段可快速草拟产品的零件图,通过对产品形状及大小的约束最后精确成图。同一系列产品的第二次设计可直接通过修改第一次设计来实现,设计参数不但可以驱动设计结果,而且影响产品的整个开发周期,设计参数可来自于其他系统。但国内目前处于研究阶段,本文就液压缸的参数化设计为例,介绍了SolidWorks的二次开发工具和参数化思想。在设计过程中重点了解液压缸的结构,这样才能在参数化建模过程中知道要将那些参数设为变量。本此设计的的重点是基于VBA的SolidWorks的二次开发,VBA语言的应用是整个参数化的主体。在此过程中用的工具就是SolidWorks自带的宏。通过宏的录制、编辑、运行,掌握了API中一些函数的功能。从而实现液压缸的各部件参数化,最终完成装配体。

在SolidWorks软件开发中,参数化设计方法的研究已成为研究和开发的热点,但目前的所有软件还没有一种完美地解决现今存在的一些问题。随着各种参数化技术的相互融合,各种新技术的不断发展,相信最终会出现能较完美实现参数化功能的技术。

29

安徽理工大学毕业设计

参考文献

[1]许贤良,王传礼.液压传动.北京:国防工业出版社,2006.9

[2]江红,郦祥林,李仲兴.SolidWorks2006基础教程.北京:机械工业出版社,2006.1 [3]中国机械工程学会,中国机械设计大典编委会.中国机械设计大典.南昌:江西科学技术出版社,2002.1

[4]纪丰伟,陈恳,张保根.二维参数化技术的发展趋势及现状.机械设计与制造工程.2006.7

[5]王宗彦,吴淑芳,秦慧斌,连清旺,张亚明.SolidWorks机械产品高级开发技术.北京:北京理工大学出版社,2005.10

[6]江红,李仲兴,刑启恩.SolidWork2003二次开发基础和实例教程.北京:电子工业出版社,2003.6

[7] 陈岳坪,陈敏,肖学勤.SolidWorks 的界面设计技术[J].广西工学院学报,2003 [8] Solidworks orporation.olidWorks 2001Plus API 帮助主题[CP/DK].2001 [9] 江洪,魏峥,王涛威.SolidWorks 二次开发实例解析[M].机械工业社,2004 [10]郭连水.基于特征参数设计方法[J].航空学报,1994.10

[11]Light R A,Grossard D C.Modifacation of Geomoteric Models Though Variational

Geomotery.Coputer Aided Design,1982,14(4):209-214

[12]Aldefeld.Variation of Geomotries Based on a Geomoteric Reasoning Method.Coputer

Aided Design ,1988,20(3):117-126

[13] Suzuki H,Hand A ,Kimura F.Geomoteric Constraints and Reasoning for Geomoteric

CAD System.Computer Graphics,1990,14(2):211-224

30

安徽理工大学毕业设计

附录A(一级缸的参数化代码)

Dim swApp As Object Dim part As Object Dim boolstatus As Boolean Dim longstatus As Long Dim feature As Object Sub main()

Set swApp = Application.SldWorks

Set part = swApp.NewDocument(\2008\\templates\\零件.prtdot\

Set part = swApp.ActivateDoc2(\零件1\Set part = swApp.ActiveDoc

boolstatus = part.Extension.SelectByID2(\前视基准面\0)

part.SketchManager.InsertSketch True Dim SkLine As Object

Set SkLine = part.SketchManager.CreateCenterLine(0, 0, 0, l / 1000, 0, 0) Set SkLine = part.SketchManager.CreateLine(0, (d1 - 44) / 2000, 0, 0, d2 / 2000, 0) Set SkLine = part.SketchManager.CreateLine(0, d2 / 2000, 0, 0.195, d2 / 2000, 0) Set SkLine = part.SketchManager.CreateLine(0.195, d2 / 2000, 0, 0.195, d1 / 2000, 0) Set SkLine = part.SketchManager.CreateLine(0.195, d1 / 2000, 0, l / 1000, d1 / 2000, 0) Set SkLine = part.SketchManager.CreateLine(l / 1000, d1 / 2000, 0, l / 1000, (d1 - 49) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(l / 1000, (d1 - 49) / 2000, 0, 0.195, (d1 - 49) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.195, (d1 - 49) / 2000, 0, 0.195, (d1 - 45) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.195, (d1 - 45) / 2000, 0, 0.08, (d1 - 45) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.08, (d1 - 45) / 2000, 0, 0.08, (d1 - 44) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.08, (d1 - 44) / 2000, 0, 0.05, (d1 - 44) / 2000, 0)

31

安徽理工大学毕业设计

Set SkLine = part.SketchManager.CreateLine(0.05, (d1 - 44) / 2000, 0, 0.05, (d1 - 42) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.05, (d1 - 42) / 2000, 0, 0.038, (d1 - 42) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.038, (d1 - 42) / 2000, 0, 0.038, (d1 - 44) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.038, (d1 - 44) / 2000, 0, 0, (d1 - 44) / 2000, 0) '画草图1

boolstatus = part.Extension.SelectByID2(\\0, 0, 0, False, 4, Nothing, 0)

boolstatus = part.Extension.SelectByID2(\草图1\part.InsertRevolvedRefSurface 6.28318530718, False, 3.14159265359, 0 '旋转

boolstatus = part.Extension.SelectByID2(\右视基准面\0)

part.CreatePlaneAtOffset3 0.195, False, True

boolstatus = part.Extension.SelectByID2(\基准面1\boolstatus = part.Extension.SelectByID2(\基准面1\'插入基准面 part.InsertSketch

Set SkLine = part.SketchManager.CreateLine(-0.03, (d1 + 104) / 2000, 0, 0.03, (d1 + 104) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.03, (d1 + 104) / 2000, 0, 0.03, (d1 - 6) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-0.03, (d1 + 104) / 2000, 0, -0.03, (d1 - 6) / 2000, 0)

Set SkArc = part.SketchManager.CreateArc(0, 0, 0, -0.03, (d1 - 6) / 2000, 0, 0.03, (d1 - 6) / 2000, 0, -1)

boolstatus = part.Extension.SelectByID2(\True, 0, Nothing, 0)

boolstatus = part.Extension.SelectByID2(\\0, 0, 0, True, 0, Nothing, 0)

part.SketchAddConstraints \part.SketchAddConstraints \

32

安徽理工大学毕业设计

part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.042, 0.01, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False

boolstatus = part.Extension.SelectByID2(\上视基准面\0)

part.CreatePlaneAtOffset3 (d1 + 104) / 2000, False, True

boolstatus = part.Extension.SelectByID2(\基准面2\boolstatus = part.Extension.SelectByID2(\基准面2\'插入基准面 part.InsertSketch

part.SketchManager.AutoInference = False

Set SkCircle = part.SketchManager.CreateCircle(-0.2075, 0, 0, -0.215, 0, 0) part.SketchManager.AutoInference = True

part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.055, 0#, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1 '切除

boolstatus = part.Extension.SelectByID2(\右视基准面\0)

part.CreatePlaneAtOffset3 0.237, False, True

boolstatus = part.Extension.SelectByID2(\基准面3\boolstatus = part.Extension.SelectByID2(\基准面3\'插入基准面 part.InsertSketch

Set SkCircle = part.SketchManager.CreateCircle(0, (d1 + 70) / 2000, 0, 0, (d1 + 53) / 2000, 0) part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.023, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1 '切除

boolstatus = part.Extension.SelectByID2(\右视基准面\0)

part.CreatePlaneAtOffset3 l / 2000, False, True

boolstatus = part.Extension.SelectByID2(\基准面4\boolstatus = part.Extension.SelectByID2(\基准面4\'插入基准面 part.InsertSketch

Set SkLine = part.SketchManager.CreateLine(-0.03, (d1 + 75) / 2000, 0, 0.03, (d1 + 75) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0.03, (d1 + 75) / 2000, 0, 0.03, (d1 - 15) / 2000, 0)

33

安徽理工大学毕业设计

Set SkLine = part.SketchManager.CreateLine(-0.03, (d1 + 75) / 2000, 0, -0.03, (d1 - 15) / 2000, 0)

Set SkArc = part.SketchManager.CreateArc(0, 0, 0, -0.03, (d1 - 15) / 2000, 0, 0.03, (d1 - 15) / 2000, 0, -1)

boolstatus = part.Extension.SelectByID2(\0, True, 0, Nothing, 0)

boolstatus = part.Extension.SelectByID2(\0.1494799816871, 0, True, 0, Nothing, 0) part.SketchAddConstraints \part.SketchAddConstraints \

part.FeatureManager.FeatureExtrusion True, False, False, 0, 0, 0.055, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1

boolstatus = part.Extension.SelectByID2(\基准面4\Set SkCircle = part.SketchManager.CreateCircle(0, (d1 + 37.5) / 2000, 0, 0, (d1 + 12.5) / 2000, 0)

part.FeatureManager.FeatureCut True, False, True, 0, 0, 0.015, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1 '切除

boolstatus = part.Extension.SelectByID2(\右视基准面\0)

part.CreatePlaneAtOffset3 (l + 30) / 2000, False, True

boolstatus = part.Extension.SelectByID2(\基准面5\boolstatus = part.Extension.SelectByID2(\基准面5\'插入基准面 part.InsertSketch

Set SkCircle = part.SketchManager.CreateCircle(0, (d1 + 37.5) / 2000, 0, 0, (d1 + 17.5) / 2000, 0)

part.FeatureManager.FeatureCut True, False, True, 0, 0, 0.024, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1 '切除

boolstatus = part.Extension.SelectByID2(\右视基准面\0)

part.CreatePlaneAtOffset3 (l + 78) / 2000, False, True

boolstatus = part.Extension.SelectByID2(\基准面6\boolstatus = part.Extension.SelectByID2(\基准面6\'插入基准面

34

安徽理工大学毕业设计

part.InsertSketch

Set SkCircle = part.SketchManager.CreateCircle(0, (d1 + 37.5) / 2000, 0, 0, (d1 + 21.5) / 2000, 0)

part.FeatureManager.FeatureCut True, False, True, 0, 0, 0.1, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1 '切除

boolstatus = part.Extension.SelectByID2(\右视基准面\0)

part.CreatePlaneAtOffset3 l / 1720.5, False, True

boolstatus = part.Extension.SelectByID2(\基准面7\boolstatus = part.Extension.SelectByID2(\基准面7\'插入基准面 part.InsertSketch

Set SkArc = part.SketchManager.CreateArc(0, (d1 + 40) / 2000, 0, -0.0175, (d1 + 40) / 2000, 0, 0.0175, (d1 + 40) / 2000, 0, -1)

Set SkArc = part.SketchManager.CreateArc(0, 0, 0, -0.0175, (d1 - 1.6) / 2000, 0, 0.0175, (d1 - 1.6) / 2000, 0, -1)

Set SkLine = part.SketchManager.CreateLine(-0.0175, (d1 + 40) / 2000, 0, -0.0175, (d1 - 1.6) / 2000, 0)

part.SketchManager.AutoInference = False

Set SkLine = part.SketchManager.CreateLine(0.0175, (d1 + 40) / 2000, 0, 0.0175, (d1 - 1.6) / 2000, 0)

part.SketchManager.AutoInference = True

boolstatus = part.Extension.SelectByID2(\0.1492015125234, 0, True, 0, Nothing, 0) part.SketchAddConstraints \part.SketchAddConstraints \

part.FeatureManager.FeatureExtrusionThin True, False, False, 0, 0, 0.6, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 0.002, 0.01, 0.01, 0, 0, 0, 0.005, 1, 1 boolstatus = part.SetUserPreferenceToggle(198, True) '隐藏基准面

part.SaveAs2 \毕业设计\\毕业设计(千万别删)\\模型\\一级缸.SLDPRT\End Sub

35

安徽理工大学毕业设计

附录B(二级缸的参数化代码)

Dim swApp As Object Dim part As Object Dim boolstatus As Boolean Dim longstatus As Long Dim feature As Object Sub main()

Set swApp = Application.SldWorks

Set part = swApp.NewDocument(\2008\\templates\\零件.prtdot\

Set part = swApp.ActivateDoc2(\零件1\Set part = swApp.ActiveDoc

boolstatus = part.Extension.SelectByID2(\前视基准面\0)

part.SketchManager.InsertSketch True Dim SkLine As Object

Set SkLine = part.SketchManager.CreateLine(0, 0, 0, 0, d1 / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(0, d1 / 2000, 0, -(l - 224) / 1000, d1 / 2000, 0) Set SkLine = part.SketchManager.CreateLine(-(l - 224) / 1000, d1 / 2000, 0, -(l - 224) / 1000, d2 / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 224) / 1000, d2 / 2000, 0, -(l - 187) / 1000, d2 / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 187) / 1000, d2 / 2000, 0, -(l - 187) / 1000, (d2 - 1.6) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 187) / 1000, (d2 - 1.6) / 2000, 0, -(l - 147) / 1000, (d2 - 1.6) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 147) / 1000, (d2 - 1.6) / 2000, 0, -(l - 147) / 1000, d2 / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 147) / 1000, d2 / 2000, 0, -(l - 119) / 1000, d2 / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 119) / 1000, d2 / 2000, 0, -(l - 119) / 1000, (d2 - 1.5) / 2000, 0)

Set SkLine = part.SketchManager.CreateLine(-(l - 119) / 1000, (d2 - 1.5) / 2000, 0, -(l - 110) /

36

本文来源:https://www.bwwdw.com/article/qhrg.html

Top