您的位置:网站首页 > 机械制图 > 机械技巧

AutoCAD环境下旋转类拉延件毛坯尺寸的自动计算

时间:2011-04-19 22:26:07 来源:未知

一、引言

  在进行旋转类拉延件拉延工艺设计时,以最后一次拉深成形的制件为基础计算出毛坯尺寸(直径)是必不可少的工作。手工计算时,由于旋转类拉延件形状变化大,故常涉及到大量的公式和表格,计算过程较为繁琐、枯燥。
  AutoCAD是国内目前较普遍使用的计算机绘图软件,待加工的拉延件的零件图常常已经在AutoCAD环境下绘出。根据AutoCAD下的零件图,通过开发软件自动分析计算出毛坯尺寸,是一项较有意义的工作。
  AutoCAD软件包从AutoCAD R11.0开始,增加了ADS功能,可通过C语言按ADS指定的形式来调用AutoCAD的所有命令,并可进行实体(即点、直线、圆弧等)几何信息的读取,从而大大加强了利用AutoCAD进行二次开发的功能。
  为此,笔者利用AutoCAD的ADS功能,开发了一个对于AutoCAD环境下任意绘出的旋转类拉延件能自动计算毛坯尺寸的程序。该软件采用AutoCAD R12.0 for DOS下的ADS开发,利用ADS函数库编制的C程序通过High C 1.7编译,在AutoCAD Command状态下运行,可迅速准确地计算毛坯尺寸。

二、软件设计

1.软件设计思想
  根据久里金法则,任意由直线和圆弧为母线形成的旋转拉延件的毛料直径D可由下式决定:

式中 Li——旋转拉延件中性层各线段(直线和圆弧)长度
   Xi——旋转拉延件中性层各线段(直线和圆弧)重心到旋转轴的距离
   num——旋转拉延件中性层线段数
  图1示出了某旋转拉延件的线段长度及其重心的标注,中性层共有由8段线段组成,其中直线4段(L1,L3,L6,L8),圆弧4段(L2,L4,L5,L7)。

图1 一个旋转拉延件

  现在需解决的问题是需要获取中性层各线段的几何参数,如直线的起始、终止点坐标,圆弧的圆心、半径、起始角、终止角。获取中性层各线段的几何参数后,根据有关公式即可求得各线段(包括直线、圆弧)的长度及重心位置,从而可由以上公式求得毛料直径。
  然而,中性层是假想的,由AutoCAD命令任意绘出工件图的中性层往往也并未画出,故需要首先读取工件图中内外两侧各直线和圆弧的几何数据,然后即可间接地求得中性层各线段的几何参数。
  故本程序设计与实现上分为4个大的步骤:
  (1)分别读取工件图内、外侧各线段的几何数据;
  (2)利用内外侧各线段几何数据求中性层各线段几何数据;
  (3)求中性层各线段的长度及重心位置;
  (4)利用公式(1)求得毛料直径。
  在第1、2、3步中采用了表1所示结构用于存贮内外侧及中性层各线段几何数据。

表1 实体信息的存贮方式

PR[i][0]PR[i][1]PR[i][2]PR[i][3]PR[i][4]PR[i][5]直线(1)起点X1起点Y1终点X2终点Y20





圆弧(2)圆心X圆心Y起角ANG1终角ANG2半径R
∶#p#分页标题#e#





圆(3)圆心X圆心Y00半径R






2.软件结构

图2 旋转拉延件毛坯尺寸计算软件流程图

  根据以上设计思想,本软件结构流程图如图2所示。其中,表PR_SS[N] [5]、PR_L[num] [5]、PR_W [num] [5]、PR_M [num] [5]的结构形式与表1相同。

三、制件图内外侧各线段实体信息读取的算法

  如上所述,AutoCAD环境下的制件图内外侧线段实体信息的拾取(即图2的前4个部分)是实现本程序的关键。现设定用于表达旋转拉延件内外结构的所有线段均绘于“0”层(这也符合一般AutoCAD绘图习惯),而尺寸标注、剖面线等则置于另外的层,则内外层线段几何信息读取算法如下:
  Stepl【交互拾取表示厚度的左实体】
  交互选择表示厚度的中心线左侧实体S0(如图1所注)
  Step2【获取实体S0的两个端点】
  读取实体S0的两端点坐标,存入数组PRSO[2][2]中
  Step3【拾取0层上的所有实体】
  建立0层上的所有实体的集合SS{S0,S1,…,Si,…}
  Step4【获取实体集SS的实体数量】
  从实体集合SS中获取实体数量N
  Step5【获取实体集SS中一个实体的信息】
  从SS中选择一个实体SSi,读取它的几何信息
  Step6【实体信息存放】
  将实体SSi几何信息放入如表1形式的数组PRSS[N][5]中
  Step7【判断】N=N-1 如N>0,进入Step5,否则进入Step8
  Step8【内外侧线段实体信息选择】
  根据数组PRS0[2][2]和PRSS[N][5],分别建立存贮制件外侧线段几何参数的数组PRW[num][5]及内侧线段几何参数的数组PRL[num][5]
其中,Step1主要由调用adsssget(  )函数完成
   Step2主要由调用adsentget(  )函数完成
   Step3主要由调用adsssget(  )函数完成
   Step4主要由调用adssslength(  )函数完成
   Step5主要由调用adsentget(  )函数完成
  Step1中ADS函数adsssget(  )的调用格式为:
  adsname S0;  /* 实体名变量 */
  adsssget(NULL,NULL,NULL,NULL,S0); /* 交互选择获取实体 */
  Step3中该函数的调用格式为:
  adsname SS; /* 实体集名变量 */
  Char sbuf[6];/*层名变量  */
  struct resbuf eb; /* 结构缓冲器变量 */
  strcpy(sbuf,“0”); /* 层名变量赋值 */
  eb.resval.rstring=sbuf; /* 结构缓冲器字符串赋值 */
  adsssget(“X”,NULL,NULL,&eb,SS); /* 获取“0”层实体集*/
  在Step2、Step5中调用adsentget(  )函数的实质是产生一个结构缓冲器链表,该链表的结构示意图如图3所示。

图3 结构缓冲器链表示意图

  从结构缓冲器链表中可获取当前实体集中每个实体的类型(如点、直线、圆弧等相应的DXF代码)和几何参数(即直线的起始、终止点坐标,圆弧的圆心、半径、起始角、终止角),由于程序段稍长,此处从略。#p#分页标题#e#
  Step8主要根据S0的两个端点坐标(存于数组PRS0[2][2])和零件图内外侧所有的实体的几何信息(存于数组PRSS[N][5])按首尾相连原则分别确定内侧和外侧线段及其几何参数,并分别存入相应数组PRL[num][5]和PRW[num][5]中。

四、结束语

  作者根据以上程序设计思想和有关算法,设计完成了旋转拉延件毛坯尺寸的自动计算软件。在AutoCAD COMMAND状态下通过“XLOAD”命令加载本程序后,绘制(或调入)一个旋转拉延件零件图,运行本程序,即可在屏幕上显示打印出毛坯尺寸。
  该程序已对多个由AutoCAD绘制的任意复杂程度的旋转拉延件计算出毛坯尺寸。运行表明:程序正确、可靠,能满足迅速、自动计算毛坯直径的要求。本程序既可单独运行,也可作为后续的拉延模CAD系统的一个子系统运行。