QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
AutoCAD环境下旋转类拉延件毛坯尺寸的自动计算
" @. l+ s" }: a摘要:讨论了如何利用AutoCAD的ADS功能来开发软件,在AutoCAD环境下实现旋转类拉延件毛坯尺寸的自动计算,文中对软件结构及其主要功能模块的算法进行了较为详尽的描述。 * D/ ~) g# t9 g/ E
关键词:旋转类拉延件;毛坯尺寸;自动计算 / S% d, R' M+ l- J/ f0 W
. K; I* E& Q- C  t, Z* s
一、引言
8 f$ ?* p5 s2 {; w/ w6 g& }8 ]
. h8 j. P  o7 P' l# j( i; M! D" D在进行旋转类拉延件拉延工艺设计时,以最后一次拉深成形的制件为基础计算出毛坯尺寸(直径)是必不可少的工作。手工计算时,由于旋转类拉延件形状变化大,故常涉及到大量的公式和表格,计算过程较为繁琐、枯燥。
: @7 o- }  G( n2 J; S% z* Y* q1 n) w
AutoCAD是国内目前较普遍使用的计算机绘图软件,待加工的拉延件的零件图常常已经在AutoCAD环境下绘出。根据AutoCAD下的零件图,通过开发软件自动分析计算出毛坯尺寸,是一项较有意义的工作。
3 H& F8 n" o& f: R0 G! o9 C$ [) r6 I) f/ X
AutoCAD软件包从AutoCAD R11.0开始,增加了ADS功能,可通过C语言按ADS指定的形式来调用AutoCAD的所有命令,并可进行实体(即点、直线、圆弧等)几何信息的读取,从而大大加强了利用AutoCAD进行二次开发的功能。
! o+ G7 P6 k- v9 S* c+ V
$ j( X$ J% ?1 i) X( e# W- T5 C& ^$ p为此,笔者利用AutoCAD的ADS功能,开发了一个对于AutoCAD环境下任意绘出的旋转类拉延件能自动计算毛坯尺寸的程序。该软件采用AutoCAD R12.0 for DOS下的ADS开发,利用ADS函数库编制的C程序通过High C 1.7编译,在AutoCAD Command状态下运行,可迅速准确地计算毛坯尺寸。
3 M& L8 }3 f2 o& n
/ i  f: Q  r, W7 {' a# f: Y9 _  I' E二、软件设计 ! E, D. `0 j3 c3 y$ F

% ^2 M8 ^% R0 [# Y8 g% U+ M1 Q1.软件设计思想
8 h) p2 i* C6 O6 I( H$ u( L( P$ ?) D  R
根据久里金法则,任意由直线和圆弧为母线形成的旋转拉延件的毛料直径D可由下式决定:
3 g- T: g. m; R! ?4 S$ @+ U
式中Li——旋转拉延件中性层各线段(直线和圆弧)长度 * r2 v$ ?9 r, w2 ^5 F- {
Xi——旋转拉延件中性层各线段(直线和圆弧)重心到旋转轴的距离 3 b9 e  O. k/ ^* B" N2 s  v+ y
num——旋转拉延件中性层线段数 ) I( b- H4 a( C. D+ L2 T
9 O, J  N9 B1 {! g0 S( Z
图1示出了某旋转拉延件的线段长度及其重心的标注,中性层共有由8段线段组成,其中直线4段(L1,L3,L6,L8),圆弧4段(L2,L4,L5,L7)。 ! _) X' _; l/ e/ ]
现在需解决的问题是需要获取中性层各线段的几何参数,如直线的起始、终止点坐标,圆弧的圆心、半径、起始角、终止角。获取中性层各线段的几何参数后,根据有关公式即可求得各线段(包括直线、圆弧)的长度及重心位置,从而可由以上公式求得毛料直径。 * F7 n' O8 z3 ~& S( l; S

4 m  G& l( {/ `4 T/ i% J$ _' h然而,中性层是假想的,由AutoCAD命令任意绘出工件图的中性层往往也并未画出,故需要首先读取工件图中内外两侧各直线和圆弧的几何数据,然后即可间接地求得中性层各线段的几何参数。
5 M! S. x$ x" Z2 C1 z! d
( T: w- p4 J; O. K/ d( w# l故本程序设计与实现上分为4个大的步骤:
# }& b7 Z$ h1 G( Y  L) X
$ S; f9 q, {' j6 [8 O$ y4 h9 q# n! X(1)分别读取工件图内、外侧各线段的几何数据;
* Y1 o: u0 U3 V/ e/ ]5 n5 U' I(2)利用内外侧各线段几何数据求中性层各线段几何数据;
: Y1 j# F% [* d(3)求中性层各线段的长度及重心位置;
/ b' J* O; A! }' U(4)利用公式(1)求得毛料直径。 % N' Z. E; `# n. d* \- A
5 x, ^9 G5 }" P. o: ^/ v
在第1、2、3步中采用了表1所示结构用于存贮内外侧及中性层各线段几何数据。
/ o2 x( E1 N  p9 Z# c* n. r
表1实体信息的存贮方式 8 P: m: y; S! L+ {2 w. |/ }
PR[0]PR[1]PR[2]PR[3]PR[4]PR[5]
直线(1)起点X1起点Y1终点X2终点Y20

3 j9 c4 d8 ^' H6 c

. ?! m& E6 \: h

" o5 @/ I3 ]' f  C4 w6 T
& H; A+ j& v9 U! f! ?# B

3 ~& J) Q5 K' k4 W8 P& t7 {

2 d; x8 }- O$ I3 e+ |
圆弧(2)圆心X圆心Y起角ANG1终角ANG2半径R
+ y% e  q3 D7 Z4 ?
* B% C. H/ b2 e7 v

2 V. K, k5 e! |+ R. P

1 @/ k- ?' r" H# n4 }2 V

- G2 L& y' d, ]8 b' p6 A
  e; m6 S  m9 Z& V5 A& d5 W+ B
圆(3)圆心X圆心Y00半径R

" W. P9 j6 I% U9 V* w" X

; j; H. W5 y# A6 K  g* X, r' s. m

: Q4 {/ B1 S% d4 d  p5 f

% H4 e6 C; K( u9 I  w5 s: z! I- M

6 ~- z, P8 _% |0 Y- K( t$ [6 j3 h  L
( T# \9 o& B9 E8 B4 m. j
2.软件结构
4 w3 z+ D0 Y- l% t8 ~0 n' y$ x0 U  w. Z1 b3 K7 v6 H
根据以上设计思想,本软件结构流程图如图2所示。其中,表PR_SS[N] [5]、PR_L[num] [5]、PR_W [num] [5]、PR_M [num] [5]的结构形式与表1相同。
0 w& N( B& g: o+ A- c
http://mould.newmaker.com/nmsc/u/2007/20076/art_img/20076101110450824.jpg % C. b& W, z: z  j4 h9 h
图2旋转拉延件毛坯尺寸计算软件流程图
三、制件图内外侧各线段实体信息读取的算法
, {' f8 a8 X& K% _0 S, S  S. y$ E: ~2 H* n
如上所述,AutoCAD环境下的制件图内外侧线段实体信息的拾取(即图2的前4个部分)是实现本程序的关键。现设定用于表达旋转拉延件内外结构的所有线段均绘于“0”层(这也符合一般AutoCAD绘图习惯),而尺寸标注、剖面线等则置于另外的层,则内外层线段几何信息读取算法如下:
. A1 R6 \6 ~2 N/ h, j" ?  K' m; U5 n" E) p7 d' p
Stepl【交互拾取表示厚度的左实体】
  M4 O. W5 N# O交互选择表示厚度的中心线左侧实体S0(如图1所注)
9 M  f# L9 e/ OStep2【获取实体S0的两个端点】
1 R& M! u, @4 r8 W! |" \读取实体S0的两端点坐标,存入数组PRSO[2][2]中
) d9 y' Q. n9 T* rStep3【拾取0层上的所有实体】
% F# T" x6 `0 L% Y建立0层上的所有实体的集合SS{S0,S1,…,Si,…}
/ k5 D8 z  g( J8 @7 AStep4【获取实体集SS的实体数量】
6 ?3 N3 v1 T8 Z, d& g从实体集合SS中获取实体数量N
7 J& p6 [0 R7 i1 G7 K7 qStep5【获取实体集SS中一个实体的信息】
$ c" O/ [' ~- j& W  c从SS中选择一个实体SSi,读取它的几何信息
7 M2 @& V$ M1 d- U' N8 V+ k. p; ]Step6【实体信息存放】
- i8 R( N2 `) h0 u/ W将实体SSi几何信息放入如表1形式的数组PRSS[N][5]中
& J8 h. s4 c! ]1 p) XStep7【判断】N=N-1如N>0,进入Step5,否则进入Step8
2 }6 t( P& c1 h) j* K. UStep8【内外侧线段实体信息选择】 3 |+ P; k, d5 @# ^) K8 }; k% b

" g- ^# }8 D1 }% k4 W. C. k  u根据数组PRS0[2][2]和PRSS[N][5],分别建立存贮制件外侧线段几何参数的数组PRW[num][5]及内侧线段几何参数的数组PRL[num][5]
4 p; }. E& m, g( t: y7 U- W! `+ T' \+ x
其中,Step1主要由调用adsssget()函数完成
: z9 ?: s. P: p/ @9 k$ m3 sStep2主要由调用adsentget()函数完成 * P9 O8 R# D" K# e- R
Step3主要由调用adsssget()函数完成 * V* g+ h6 ?1 N% O
Step4主要由调用adssslength()函数完成 0 L* \8 m+ D' n0 Y6 w5 `
Step5主要由调用adsentget()函数完成 & z0 q1 s" U! |$ Z
Step1中ADS函数adsssget()的调用格式为:
  W. w. z2 \7 ]7 }' m3 e4 g; x2 Xadsname S0;/*实体名变量*/ - ]$ V# X# F. r% f$ x/ P$ K6 C/ k
adsssget(NULL,NULL,NULL,NULL,S0);/*交互选择获取实体*/
1 J! s4 s; F9 wStep3中该函数的调用格式为:
! j' s9 {% h. }; ~# R( V) Iadsname SS;/*实体集名变量*/ # m( O8 L* C3 e" I& N( `* _4 R
Char sbuf[6];/*层名变量*/ / D5 t; j5 T, N1 y/ `
struct resbuf eb;/*结构缓冲器变量*/
: W5 J6 j: R& O- M( U% ystrcpy(sbuf,“0”);/*层名变量赋值*/ & @# I! e- M2 x5 _. _; `
eb.resval.rstring=sbuf;/*结构缓冲器字符串赋值*/
3 j- _' N/ e) Kadsssget(“X”,NULL,NULL,&eb,SS);/*获取“0”层实体集*/
3 y  G. o9 E7 a
. j/ D( u+ g2 \. M7 V9 @在Step2、Step5中调用adsentget()函数的实质是产生一个结构缓冲器链表,该链表的结构示意图如图3所示。
$ i/ ?' L: n, \$ \- _/ x+ R
http://mould.newmaker.com/nmsc/u/2007/20076/art_img/200761011105526061.gif
) Z  ?/ j+ H0 N图3结构缓冲器链表示意图
从结构缓冲器链表中可获取当前实体集中每个实体的类型(如点、直线、圆弧等相应的DXF代码)和几何参数(即直线的起始、终止点坐标,圆弧的圆心、半径、起始角、终止角),由于程序段稍长,此处从略。
  _9 m' N# u* D  C. f5 \4 K& I: ^2 p: I0 C. k' {
Step8主要根据S0的两个端点坐标(存于数组PRS0[2][2])和零件图内外侧所有的实体的几何信息(存于数组PRSS[N][5])按首尾相连原则分别确定内侧和外侧线段及其几何参数,并分别存入相应数组PRL[num][5]和PRW[num][5]中。
+ s' t) N% Z0 ]. {
; W3 ~& V/ y4 r3 a3 O' o四、结束语
5 `+ _7 `' o- h
2 S( n4 J7 F! d作者根据以上程序设计思想和有关算法,设计完成了旋转拉延件毛坯尺寸的自动计算软件。在AutoCAD COMMAND状态下通过“XLOAD”命令加载本程序后,绘制(或调入)一个旋转拉延件零件图,运行本程序,即可在屏幕上显示打印出毛坯尺寸。
8 e+ W) ?2 D% t% K0 s+ H  w% W/ I) i8 P: {; B
该程序已对多个由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 )

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