QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2972|回复: 1
收起左侧

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

[复制链接]
发表于 2007-7-17 09:08:37 | 显示全部楼层 |阅读模式 来自: 中国山东聊城

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
AutoCAD环境下旋转类拉延件毛坯尺寸的自动计算 " N) r* R4 f2 ~; C( R' g
摘要:讨论了如何利用AutoCAD的ADS功能来开发软件,在AutoCAD环境下实现旋转类拉延件毛坯尺寸的自动计算,文中对软件结构及其主要功能模块的算法进行了较为详尽的描述。 9 h2 q+ d% \2 [' P5 r9 X. _5 F, N1 f
关键词:旋转类拉延件;毛坯尺寸;自动计算
+ ^, S% T, s/ t6 i( D  ^6 E9 J. L, v# g- W8 u+ |5 a
一、引言
5 Y, D! P1 B" r2 ~" q1 T6 ]7 y
. h4 M# o& W! R) ]5 |6 C在进行旋转类拉延件拉延工艺设计时,以最后一次拉深成形的制件为基础计算出毛坯尺寸(直径)是必不可少的工作。手工计算时,由于旋转类拉延件形状变化大,故常涉及到大量的公式和表格,计算过程较为繁琐、枯燥。 4 ?5 @3 P' s( E% s+ m' g, r# G
# {' F' z5 h# y0 X
AutoCAD是国内目前较普遍使用的计算机绘图软件,待加工的拉延件的零件图常常已经在AutoCAD环境下绘出。根据AutoCAD下的零件图,通过开发软件自动分析计算出毛坯尺寸,是一项较有意义的工作。 ! F; {) z- }: N2 i
" Q! i+ i* S6 m
AutoCAD软件包从AutoCAD R11.0开始,增加了ADS功能,可通过C语言按ADS指定的形式来调用AutoCAD的所有命令,并可进行实体(即点、直线、圆弧等)几何信息的读取,从而大大加强了利用AutoCAD进行二次开发的功能。
7 L2 C6 {6 B' R, L% t5 B/ J2 C; W
) _" v6 S+ M4 b" t5 y# U4 A为此,笔者利用AutoCAD的ADS功能,开发了一个对于AutoCAD环境下任意绘出的旋转类拉延件能自动计算毛坯尺寸的程序。该软件采用AutoCAD R12.0 for DOS下的ADS开发,利用ADS函数库编制的C程序通过High C 1.7编译,在AutoCAD Command状态下运行,可迅速准确地计算毛坯尺寸。 " t  v, ^) D2 @) o: Y7 |
0 L$ k" n9 C; U/ N' t
二、软件设计 2 P9 N( {% B7 N% P
( |7 b2 V- M+ r7 g- G! F5 M4 b
1.软件设计思想 3 @; t( r- n# T; x1 k) j) f

* [) ?& s% Z+ H) ~- D& U/ [1 B根据久里金法则,任意由直线和圆弧为母线形成的旋转拉延件的毛料直径D可由下式决定:

) X( _" @  v$ u式中Li——旋转拉延件中性层各线段(直线和圆弧)长度
& h) W! r& p9 `0 h1 b# r, qXi——旋转拉延件中性层各线段(直线和圆弧)重心到旋转轴的距离
$ X# [( d! W3 ]$ T( @$ O8 Qnum——旋转拉延件中性层线段数
2 ^9 j3 D8 g" I& r+ p
3 P7 J5 N5 r0 M图1示出了某旋转拉延件的线段长度及其重心的标注,中性层共有由8段线段组成,其中直线4段(L1,L3,L6,L8),圆弧4段(L2,L4,L5,L7)。
) e; R) k7 u+ G0 D现在需解决的问题是需要获取中性层各线段的几何参数,如直线的起始、终止点坐标,圆弧的圆心、半径、起始角、终止角。获取中性层各线段的几何参数后,根据有关公式即可求得各线段(包括直线、圆弧)的长度及重心位置,从而可由以上公式求得毛料直径。
. \' c' [: l* w, X
9 q; @4 l+ D. K/ ~0 s# x然而,中性层是假想的,由AutoCAD命令任意绘出工件图的中性层往往也并未画出,故需要首先读取工件图中内外两侧各直线和圆弧的几何数据,然后即可间接地求得中性层各线段的几何参数。 % ?9 ?8 I! B- g4 ^7 |* F

# _$ W/ u) [1 e$ v# P5 u故本程序设计与实现上分为4个大的步骤:
/ L5 m4 e! j# N! E" K
  g+ Z: U+ S% F* h. ]: k' ^6 v(1)分别读取工件图内、外侧各线段的几何数据;
& x1 `' b! s' ^) l(2)利用内外侧各线段几何数据求中性层各线段几何数据; ( D" @( g' t' t
(3)求中性层各线段的长度及重心位置; 4 u' e; l4 k$ P, C6 K$ ^
(4)利用公式(1)求得毛料直径。
" e" T* r1 j. C' G$ J; _6 {4 f& g5 z% o
在第1、2、3步中采用了表1所示结构用于存贮内外侧及中性层各线段几何数据。 2 m! u( n  t( H7 b
表1实体信息的存贮方式
( M6 J* \" d+ |2 o+ {+ k
PR[0]PR[1]PR[2]PR[3]PR[4]PR[5]
直线(1)起点X1起点Y1终点X2终点Y20
. `  Z9 ~# }. |) J. U& `

7 i: j: `& x. _' t9 V

" o0 m, Z! ]* ^4 H7 B

, z$ K# p3 k1 H6 G. `. K: h! G
7 U9 _) K7 m8 J3 q+ V
2 f, }, G6 e0 o4 ?
圆弧(2)圆心X圆心Y起角ANG1终角ANG2半径R
2 ~/ e1 E: {% x; K( A3 T! ?4 U

0 S- h3 }: G8 q3 y

% W" j. x! T, [) h
# [  s8 r4 T+ g8 p5 b6 I

$ R9 ?& U/ t8 Y( I; W7 {- Q8 b

! v5 b: Y4 K! a. Z
圆(3)圆心X圆心Y00半径R
; _/ W6 y' @" V, Z0 ^6 y

& G0 H8 h6 R7 u
3 |! \. c' L2 |$ \$ H$ b8 X6 v
" Y7 Y! I  l' q8 r0 d4 U: ]3 M8 u8 z

& a! M9 v  S& q; l

1 l/ S0 Y/ P/ d8 k) n
2.软件结构 ) ^$ J7 l, ?, B5 r3 E" L, c
- M, v% \: L6 `5 C0 b% n6 {" V
根据以上设计思想,本软件结构流程图如图2所示。其中,表PR_SS[N] [5]、PR_L[num] [5]、PR_W [num] [5]、PR_M [num] [5]的结构形式与表1相同。 ( d' f- m& |9 U9 P! u( m
http://mould.newmaker.com/nmsc/u/2007/20076/art_img/20076101110450824.jpg
& O5 F* G! d6 \! |2 V. [图2旋转拉延件毛坯尺寸计算软件流程图
三、制件图内外侧各线段实体信息读取的算法 $ Q9 C, K( I; s$ V) D1 L
0 ]/ F! \; Y/ a" S# h2 t
如上所述,AutoCAD环境下的制件图内外侧线段实体信息的拾取(即图2的前4个部分)是实现本程序的关键。现设定用于表达旋转拉延件内外结构的所有线段均绘于“0”层(这也符合一般AutoCAD绘图习惯),而尺寸标注、剖面线等则置于另外的层,则内外层线段几何信息读取算法如下: / z. H5 V2 z" _1 W9 q9 S$ O

/ Q5 }7 o8 B  R# S: G! S0 yStepl【交互拾取表示厚度的左实体】
+ m6 J) X, Y% Y9 U7 a; Z交互选择表示厚度的中心线左侧实体S0(如图1所注) 3 |. L0 K6 b( }7 _
Step2【获取实体S0的两个端点】 4 ~9 {& x7 _. p4 {: T8 J
读取实体S0的两端点坐标,存入数组PRSO[2][2]中 ! W4 v! q3 V" p' W
Step3【拾取0层上的所有实体】
1 T4 f4 h( F7 w7 X( {建立0层上的所有实体的集合SS{S0,S1,…,Si,…}
0 {  q* R  W7 dStep4【获取实体集SS的实体数量】
" n5 l' _% H" v从实体集合SS中获取实体数量N
9 R, ~2 d' s  {2 IStep5【获取实体集SS中一个实体的信息】 & P- `' @8 Z: l7 y  ]
从SS中选择一个实体SSi,读取它的几何信息 + r, }+ o# l& i+ b
Step6【实体信息存放】
1 s# s5 O' r! {' S- L将实体SSi几何信息放入如表1形式的数组PRSS[N][5]中 ; o9 U2 A$ b4 S5 t) P; V: a% q" S
Step7【判断】N=N-1如N>0,进入Step5,否则进入Step8
# b# `) m2 s3 gStep8【内外侧线段实体信息选择】   A( A' Q/ I- j# T2 c. j' H3 _9 [

; A4 \, b/ i2 J根据数组PRS0[2][2]和PRSS[N][5],分别建立存贮制件外侧线段几何参数的数组PRW[num][5]及内侧线段几何参数的数组PRL[num][5]
# D$ O  P4 Q7 D% B8 r; c. p( H% j. q, f. Z% ?
其中,Step1主要由调用adsssget()函数完成
1 I% D; _* j' wStep2主要由调用adsentget()函数完成
* Y9 `7 W9 j* R+ `( \9 }Step3主要由调用adsssget()函数完成
1 \; f/ S' @. y5 @) KStep4主要由调用adssslength()函数完成
; m$ \1 Z# ^5 w: G" ]" `$ y7 LStep5主要由调用adsentget()函数完成
. l' v8 @1 `8 M1 L3 R8 F6 n( S9 jStep1中ADS函数adsssget()的调用格式为:
+ T- y  U* T; |8 ]. i6 ?) W: g  F4 Iadsname S0;/*实体名变量*/ 1 z* D6 j1 G' n$ ]. s7 {
adsssget(NULL,NULL,NULL,NULL,S0);/*交互选择获取实体*/ ( n  s0 q! v6 W, ^; A
Step3中该函数的调用格式为: / h1 ~6 {  g7 M7 E( L
adsname SS;/*实体集名变量*/ ! t' c1 _' S% V: E5 b' o
Char sbuf[6];/*层名变量*/
9 T2 }& Z  C. H1 a( Zstruct resbuf eb;/*结构缓冲器变量*/ + Y3 w- Y) W- u$ K* }/ K
strcpy(sbuf,“0”);/*层名变量赋值*/
% A8 z6 |" w# A  a7 t6 ieb.resval.rstring=sbuf;/*结构缓冲器字符串赋值*/ 6 n' Y' e/ `  J2 P# M% t8 E
adsssget(“X”,NULL,NULL,&eb,SS);/*获取“0”层实体集*/
  ?) x/ Z% F9 u& a8 ?- ^9 `. {" O% z
在Step2、Step5中调用adsentget()函数的实质是产生一个结构缓冲器链表,该链表的结构示意图如图3所示。   X: A4 P4 |- H
http://mould.newmaker.com/nmsc/u/2007/20076/art_img/200761011105526061.gif / I3 I) d8 c. e9 @' R
图3结构缓冲器链表示意图
从结构缓冲器链表中可获取当前实体集中每个实体的类型(如点、直线、圆弧等相应的DXF代码)和几何参数(即直线的起始、终止点坐标,圆弧的圆心、半径、起始角、终止角),由于程序段稍长,此处从略。
8 w; F0 g# ?; ?& {) q# B7 r
; t8 {  ]/ a% j2 B, t2 Z0 O8 ?, RStep8主要根据S0的两个端点坐标(存于数组PRS0[2][2])和零件图内外侧所有的实体的几何信息(存于数组PRSS[N][5])按首尾相连原则分别确定内侧和外侧线段及其几何参数,并分别存入相应数组PRL[num][5]和PRW[num][5]中。
7 f0 j0 Q6 x* w2 m0 I* \$ a" ]
! x& I0 x1 d0 w4 z四、结束语
+ N/ O5 r/ W( V+ B' Z
: S. K" f1 g( @5 I7 r作者根据以上程序设计思想和有关算法,设计完成了旋转拉延件毛坯尺寸的自动计算软件。在AutoCAD COMMAND状态下通过“XLOAD”命令加载本程序后,绘制(或调入)一个旋转拉延件零件图,运行本程序,即可在屏幕上显示打印出毛坯尺寸。
+ h/ ~, H4 J. o8 K4 P& G7 m4 P$ Q$ l) s9 L: H5 T8 _9 }
该程序已对多个由AutoCAD绘制的任意复杂程度的旋转拉延件计算出毛坯尺寸。运行表明:程序正确、可靠,能满足迅速、自动计算毛坯直径的要求。本程序既可单独运行,也可作为后续的拉延模CAD系统的一个子系统运行。
发表于 2013-11-10 08:20:08 | 显示全部楼层 来自: 中国上海
高端。。。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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