找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 224|回复: 0

[资料] 基于AutoCAD的数控图形自动编程系统

[复制链接]
发表于 2011-7-13 23:52:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转磨削论坛

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

×
1 引言
8 z# P# Z( _6 b+ M. U3 b5 T  g( m  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。* P2 R2 y2 ~& x+ Q2 R
2 系统的框架结构和功能
' A- h& d- g' F  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
5 q+ I  d/ b7 {' t' [* R/ \ 20083811346.gif
  l. J9 a. E% a图1 系统总体框架结构3 I: O, i5 ]9 i3 f. V2 n. y6 Q
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
3 M& o4 P1 w" K% u* I0 b  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;& t1 o1 N) ~9 R/ `
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
; r6 X, v1 n" W" a8 L8 C! y& H; f5 W  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
0 y3 m+ n5 }! T) b1 f* d  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
8 f2 x* O( x' {, Z3 软件设计过程' v; ]; l8 a' }* @
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
# {/ f9 P+ a, `" R3 y7 V- O  (1)实体数据类型变量定义5 b3 M, j: _% W5 B9 S$ R. n
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即- ~/ p: @' R/ A- J; z( K3 A
Type ENTITIES-TYPE, R1 |3 E& s. X- G$ M- ]+ S
′实体形式数据类型名:; G, L$ z# U/ g( K7 f% [
  ENTITIES-TYPE;
6 P; ?+ T2 u( M1 x/ H  STYLE As String
/ }/ A3 d/ @& I! Q  _; ?′实体类型变量(其值为LINE,ARC,CIRCLE);* I, |6 V, \$ c" G  H; B( h
  X1 As String% v! Z. A: i) y/ M1 s$ s+ @
′实体的起点坐标分量x;
& d" [. b% K1 B: o$ V/ J. M8 a% }7 G- N" s1 L  Y1 As String" J2 A( D, v+ c" _+ J& I
′实体的起点坐标分量y;! _* v6 |* l% Q- E) M; ]1 L" o
  X2 As String0 H; I, X$ x4 L1 n
′实体的终点坐标分量x;' m) e! {0 e3 a# @: e/ [
  Y2 As String" X9 h) W+ M- |: {( z
′实体的终点坐标分量y;
! R5 u8 |- p7 n) G# ^, |  X3 As String6 V: R. O  F' K" N
′实体(圆弧或圆)的圆心坐标分量x;# D4 a) \5 D7 h; r3 |% y! `
  Y3 As String
# P/ g5 g. }" _/ A7 I′实体(圆弧或圆)的圆心坐标分量y;
$ Q! d4 k8 Q+ m; ?" _. e( G4 q  R1 As String
! M% U/ F! w) ?$ }′实体(圆弧或圆)的半径R;
4 N! L$ c* b  E& c8 W2 w4 B" m# Z  WISE As String
$ Y% X  Z- Z, N! l1 x/ p# {( @% f′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
  O! U* m! @2 K  U: h1 T* j  ANGLE1 As String  @% k4 s8 s0 V* S1 n  C
′实体(圆弧或圆)的起始角;
" }0 t9 @% B8 @! z/ ~2 o% k  ANGLE2 As String3 @/ P7 s$ ]0 ~5 p' W2 [7 j
′实体(圆弧或圆)的终止角;
( k; E$ ~! t/ Z3 e* |: j# h+ _End Type  L. X) z( i! A/ x7 Y; R/ m9 T, d- @
Global MM(200) As ENTI-
% R2 U9 h, c4 x5 ]5 G7 [* r- X& x, ZTIES-TYPE
+ x1 U$ S" Q6 }′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
; N; ]" b" `7 e, K# o. a: i′型变量,实体数目最多不能超过200个。: \+ R* T  N7 Z6 |
  (2)DXF文件的读取程序
1 e( U2 N; _" o5 f2 P; T  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。0 n& ^3 d! v0 k
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。3 {& e& }- B1 l6 [* D; H0 X' y
Sub DXF-IN 0; l0 q. E+ B2 u9 G" Z
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
4 r2 c, M* B0 l" o; _8 SOpen FILENAME1 For Input As #1
: ~7 b5 L/ U0 i* H) ]  E9 u- S  Do Input #1,B+ b5 x" L, s+ X+ ^7 B- d/ ~
  Loop Until B=“ENTITIES”! |# S4 g2 p* d6 q3 L. ~
  Seek #1,Seek(1)* Z+ f2 o. }# E8 O
  Do While Not EOF(1)
, W+ X# }  a) |6 Y$ [. H   Do Input #1,B; z7 m9 I2 {( p& C( b
   Loop Until B 〈〉“0”
+ O: R& o4 |  ]0 _, D   i=i+1
  c3 B0 ~; W0 d0 L- O. D/ {   Select Case B
- J0 K  ]( L) ]; {4 I" k7 S; n      Case “LINE”
  q% W; L7 t7 R7 b; B; b       INDXF-LINE 18 U: o4 b- p/ q
       CC.STYLE=“line”* d7 l2 ~% b8 g6 o, ?# {% q( e6 v, O5 M
       CC.X1=Str$(x1)8 t' v& N* y! U2 J
       CC.Y1=Str$(y1)( M+ _8 o) L5 A/ t4 t* ?, [
       CC.X2=Str$(x2)9 b4 ]3 }, k- i/ W
       CC.Y2=Str$(y2)
" S6 Z2 n# j3 X- y& E) a: A0 B       xx1=x2  ^: Z1 N' P1 f/ [" b
     Case“ARC”# w  K' G5 l8 J) k, r
       INDXF-ARC 11 c: x% G& l  a1 {4 R( ^, d" Y
       CC.STYLE=“ARC”
; N: m9 z+ S4 n       CC.X1=Str$(x1)
! h0 ]  h: [. w2 R+ S! R7 m       CC.Y1=Str$(y1)
0 |& B2 V9 h# R8 L) f" K. m       CC.X2=Str$(x2)
# M  A1 u) _7 {& s% x6 h# J       CC.Y2=Str$(y2)/ |% C/ W+ A7 Q9 n' _
       CC.X3=Str$(x3)
$ M8 [1 D" s1 ^- U8 q0 g4 P       CC.Y3=Str$(y3)
' v* U! v, x+ S( W4 h) B$ O       CC.R=Str$(R)
, R1 y0 @" J. w  w" ]) s  H0 G       CC.ANGLE1=Str$(ANGLE1)
, Z. Q: r# n# K  t' }% I       CC.ANGLE2=Str$(ANGLE2)! x3 o2 `6 b8 `  v
       If Abs(x1-xx1)>.5 Then7 O2 s8 A: A  b  o, ^
        CC.WISE=“0”5 {  S; T8 y4 |( f8 Z& N' c
        A=CC.X1:CC.X1=CC.X2:CC.X2=A3 a2 ?' X* C9 f  x9 S
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A
- Z6 G# m6 _- U9 w( Q0 }        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A! d  s# f' k3 }. y' ~/ z
         Else CC.WISE=“1”
! M& ?+ ]. ]! x5 J0 K      End If xx1=x2
# k" Q$ d$ }% g7 R$ Z6 d. z" H& L    Case“CIRCLE”0 l+ `0 [; u  c+ p# c
      il=il+1
% }* ]5 ?% a, M# u! P& ]      INDXF-CIRCLE 1' A9 R" c3 q! y$ |% M1 d; A: n0 d; m
      CC.STYLE=“CIRCLE”- h7 g. r/ v5 K- G
      CC.X1=Str$(x1)
' m6 A% E* z" P- i2 }      CC.Y1=Str$(y1)
0 y9 n: A7 u, W$ `6 o0 j% w& L; Z5 P8 d      CC.R=Str$(R1), q* R9 v, f9 Z$ r- A2 I
      CC.X2=CC.Y15 P: O" Y) r: E
      xx1=x10 A& u' H# m$ N& ^; n
    Case“POINT”
, Z3 U; E8 S3 w      INDXF-POINT 18 r& p3 ^# e+ B- h" @2 }
      CC.YSTYLE=“POINT”
& J/ x7 I) r" ~& W      CC.ZHX1=Str$(x1)
; s0 M) T& Z1 C: I% c  E) }, r      CC.ZHX2=Str$(x1)
) E2 e8 K7 s6 O3 X0 r+ H      xx1=x15 \; B4 X9 _3 w$ s. l+ h
    Case Else* L0 k$ I( z  y* _8 z
      CC.STYLE=“NONE”
3 I: E$ {0 d2 R: Y4 Q; G9 j4 O$ } End Select6 ?1 U: }4 ~/ s/ b' E: m0 g
 Seek #1,Seek(1)
. [5 z' n% K7 j4 ^ j=Str$(i)- {( b* L. g$ t% A% w5 h* H7 \7 C$ J
Loop- n6 D. V1 m/ p& A% |
Close #1
6 F8 q+ p8 W& D! T* L2 LEnd Sub& a; o+ W* O, U  t/ C$ R. j! P. t
  其它模块的程序设计不再赘述。& D3 m% S; _' k& V  X
4 实例
8 y- c) \# @+ y$ B  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
- ?& j$ O0 s% Y2 x" v N0001" Y5 _* a' R" O
G90 G92 X0 Y0 S500 M03 LF
# z8 a  l+ N5 s5 ^$ S4 Z. R N00023 L7 C- s0 \" w; L
G01 X1 Y1 LF9 Z  k/ n8 C' l7 D+ M0 `% o9 b# ?8 ?
 N0003
. l2 |  p0 d4 r3 BG01 X1 Y61 LF. n& A) n- E! d
 N0004
" G  n( \# g1 \6 dG01 X41 Y61 LF+ ~8 P3 m7 N' c. |, {
 N0005) T) h+ M9 {" M; [. `% _. p
G02 X61 Y81 R20 LF
6 z2 V9 X' ?- K8 B N0006% k  b+ D1 a$ u. r7 L4 F% g! h
G02 X101 Y81 R20 LF  ?3 j; k; j- _( c2 B
 N0007
) \" N, ]$ j* h- x8 ~2 ]' yG01 X141 Y81 LF
4 n1 J9 J8 l$ Y N0008
* [1 }, b) d; g1 ^9 SG01 X141 Y1 Lf
0 X* C* b8 [2 y' [ N0009
* i7 J% C  t+ K. R- O0 v3 NG01 X1 Y1 LFM
* f: l8 d( [! C+ J$ B* C N0010
! P# h; J# K+ x9 j/ m" f+ e% G02 EM
* O2 E4 h1 m+ N0 r( M" t' f+ I8 B 2008381147.gif
5 K7 p) L) Z7 ?/ m$ E9 D图2 AutoCAD绘制零件轮廓
- I! ]7 W! b8 z: l& r" z5 结束语' H& z& k, \7 n7 y$ Y
  由以上实例可得如下结论:% q5 e  U- c7 j# @" R# _- j
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;- _: E  y2 {$ q' L; |& X. l5 q
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;7 I) _# c; Y6 H& ~
  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;$ |5 g$ L# R# T  B& ?
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;7 a5 x9 Q+ _& ]! I9 Q
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。, V+ U' ~4 e" G  B" Y9 g
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

中国磨床技术论坛
论 坛 声 明 郑重声明:本论坛属技术交流,非盈利性论坛。本论坛言论纯属发表者个人意见,与“中国磨削技术论坛”立场无关。 涉及政治言论一律删除,请所有会员注意.论坛资源由会员从网上收集整理所得,版权属于原作者. 论坛所有资源是进行学习和科研测试之用,请在下载后24小时删除, 本站出于学习和科研的目的进行交流和讨论,如有侵犯原作者的版权, 请来信告知,我们将立即做出整改,并给予相应的答复,谢谢合作!

中国磨削网

QQ|Archiver|手机版|小黑屋|磨削技术网 ( 苏ICP备12056899号-1 )

GMT+8, 2024-11-17 16:21 , Processed in 0.181767 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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