找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 279|回复: 0

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

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

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

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

×
1 引言
( E; ?: H7 v! R: `/ \0 ?2 {- w  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。1 a- y  F, o; i/ _; ?
2 系统的框架结构和功能
1 h0 S- Q" F+ T' ?  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:8 Q& J7 c' }$ w9 s
20083811346.gif 0 A0 i: U0 y9 w4 G  h# F
图1 系统总体框架结构
' j& U0 O! r0 `  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;, U$ B- Y' T  U( U
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;9 Y  o& C" C3 u2 b
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
5 m1 s; ?2 X0 Z6 t- G  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;% x4 U/ g0 b# |' Z
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。6 _+ u8 G# V; e+ ^, @% E
3 软件设计过程- V8 b$ z8 W# T8 A
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。3 y+ A! s6 t. z7 X- V, e" `9 B2 O
  (1)实体数据类型变量定义: ^* D+ Y  Y. C( P. y. E( e
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即9 O6 u# N' {3 k8 w. [5 |
Type ENTITIES-TYPE
1 n. D9 o) r6 s5 F′实体形式数据类型名:* a- Y  \3 p% t
  ENTITIES-TYPE;
# Y( j$ o& u' `: e8 M, N) k6 F* B# X  STYLE As String/ d! I" Y% `" }" J9 I. D) S7 p. S
′实体类型变量(其值为LINE,ARC,CIRCLE);* c, m1 O8 J  v, n
  X1 As String
7 ]9 Y; d7 L, _5 m$ Z0 Z+ T′实体的起点坐标分量x;3 r: w  D4 p$ q3 i: a  b. U: {2 l
  Y1 As String  H' R; R# u  p, G* R/ k
′实体的起点坐标分量y;8 P& _! o, a8 Q6 S9 U& j/ S
  X2 As String
: f' Z/ X& n2 r5 P3 K′实体的终点坐标分量x;
! Y* `  X  _- I0 K  Y2 As String& z% N8 B, B8 R, l* @7 e2 l
′实体的终点坐标分量y;( }- p- z% ?6 k/ |2 h+ D+ W
  X3 As String
' L' v, u6 D5 `' k) Z9 v′实体(圆弧或圆)的圆心坐标分量x;) b4 i; P+ s& e+ V* ~! O
  Y3 As String/ U% @+ Z4 j2 y% g' ~$ P
′实体(圆弧或圆)的圆心坐标分量y;# F; V# D% K+ I- f
  R1 As String) A+ P' A, a% e, d! A9 {9 o
′实体(圆弧或圆)的半径R;' V. `# ?( d+ o& \
  WISE As String
) w1 D' N: i  }4 J, {9 S! |2 E* ?2 `′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
" H2 p: b: \3 _: s  ANGLE1 As String
7 `. X' ~7 f4 H: [  \' A′实体(圆弧或圆)的起始角;0 g) P5 M$ Z3 h: @: J1 {
  ANGLE2 As String" Y' ?! e% X; d2 u
′实体(圆弧或圆)的终止角;0 {; m% @: _4 o  R9 D, p) y
End Type
; H% \( C( s# H4 u+ SGlobal MM(200) As ENTI-
; \+ o! W8 ?& t9 v4 S3 ~+ V9 ^TIES-TYPE
) D% O4 [) t) m1 K! D′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
' X- |4 T  J. W1 t8 r8 [′型变量,实体数目最多不能超过200个。
' B( @! `. \+ B0 ~  (2)DXF文件的读取程序; u% v' v3 {- O# H# ~7 o6 M
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
' |7 v% {/ \: j4 @' l  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。- c( ?1 |/ ^  z
Sub DXF-IN 0$ `! [2 H% f! N+ ^& ]( T' }
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
, T# t  `& V1 ~, c+ Z3 M! ZOpen FILENAME1 For Input As #1
9 K1 b5 k2 f. F) }3 {4 T/ Z  Do Input #1,B
% t/ D; X2 _  J* g( ]- L  Loop Until B=“ENTITIES”
# D9 b2 Z4 Z- n9 k  Seek #1,Seek(1)
( F7 p/ e! j8 ]3 Y: x2 X  Do While Not EOF(1)
9 Q  t' s0 e' U, S   Do Input #1,B
1 f" A  i0 a5 R7 T+ l8 E6 \   Loop Until B 〈〉“0”2 F# D1 r, g0 Q# _
   i=i+1+ n" u1 F+ W; j2 c+ @- T+ s
   Select Case B  f7 R4 u5 U6 O3 \" u  d
      Case “LINE”3 a$ L( ?2 S. P) H
       INDXF-LINE 1
1 B6 G5 [2 W/ U" h5 O$ V       CC.STYLE=“line”$ q( {8 y/ {" r+ ?  _
       CC.X1=Str$(x1)
4 [+ ]0 k& ~' p& D  ~/ q+ A       CC.Y1=Str$(y1). `7 V; e: I( c* u
       CC.X2=Str$(x2)8 L! J0 |1 b1 i% ~* L/ G  ^/ u
       CC.Y2=Str$(y2)* j1 w' I2 @. s- Q7 d# R
       xx1=x2
4 k2 E2 ], V! x" i9 z  `     Case“ARC”8 D. `9 ?  W* k1 l" O) Z
       INDXF-ARC 1
. X. i4 t/ @# _- K1 A       CC.STYLE=“ARC”
8 t/ Z( j* G3 l8 I7 Z  e6 |: W       CC.X1=Str$(x1)
0 I8 c, m5 Q% s% O- `( h) m# _  _       CC.Y1=Str$(y1); {2 J% N$ e* ~4 N
       CC.X2=Str$(x2)4 D5 r( Z% T, b& j  G! _) y# N
       CC.Y2=Str$(y2)
5 T  Q: W' J" t5 h       CC.X3=Str$(x3)# R, s& _) o* K8 R$ E! _4 \& X
       CC.Y3=Str$(y3)
% p2 ?% i7 h2 s4 s4 e       CC.R=Str$(R)
) ?3 O0 ^3 e4 k* w0 i       CC.ANGLE1=Str$(ANGLE1)
/ D4 s5 I) x7 V& W) R( `       CC.ANGLE2=Str$(ANGLE2)! a- f( ^- n8 _8 m8 M' m4 h3 D
       If Abs(x1-xx1)>.5 Then1 u9 |; |8 ~4 ~. T
        CC.WISE=“0”
  G* p( M, S  ]3 [1 \$ u0 o        A=CC.X1:CC.X1=CC.X2:CC.X2=A! s3 p" A/ Y2 E' r/ A+ N6 \  b
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A; r% w6 d, g' w) ^$ N. e- l& Z' W
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A6 T4 P: }4 T/ E9 }
         Else CC.WISE=“1”0 Q+ T- h7 F* k: u% @8 H/ n
      End If xx1=x2
% ~+ P# s% d0 s) }4 y    Case“CIRCLE”4 g8 b1 L6 ~* d: _' ?$ i, ]: z
      il=il+1
( g) B) I5 u( s: x% D      INDXF-CIRCLE 1
/ }% C8 ~6 Z/ a      CC.STYLE=“CIRCLE”! }. q" P1 }; M+ I1 X
      CC.X1=Str$(x1)0 I& q* C, s! y0 f# c* z
      CC.Y1=Str$(y1)
  |4 Q/ T# J6 T      CC.R=Str$(R1)2 b2 E3 Z8 ^$ M3 q! G7 t
      CC.X2=CC.Y1% i" a9 g5 e) s5 |! _. U$ g
      xx1=x1" a5 x/ {5 u. E8 P1 q; T, {9 {
    Case“POINT”( l$ s5 l! k  S% M# j6 d  t
      INDXF-POINT 1" @: d) P. B% Q* R; ?' a! \& i
      CC.YSTYLE=“POINT”
2 d9 G  a- d8 y- [" Q/ G      CC.ZHX1=Str$(x1)
) t4 X, v0 K. B( y  J: |  z      CC.ZHX2=Str$(x1)& h: ~2 a, ^6 Y" Q+ x0 X
      xx1=x1
8 |, `. q: m% K    Case Else" x; @2 O7 V9 ?: ~  f6 }
      CC.STYLE=“NONE”9 w2 ~& ^& ]8 g" c4 s( ]( ?
 End Select
' T9 A& J+ v6 j% g: M9 y Seek #1,Seek(1)3 f+ G% F4 S! ?$ E. }
 j=Str$(i)
: r( }; U9 X! n! ^& `: VLoop
1 ~! d/ W! l+ ~) I* L' yClose #1& H/ A2 c" k, i2 D+ F
End Sub
8 h% F, x3 V& j0 ]! T8 y  其它模块的程序设计不再赘述。
1 d; T% P0 \# k+ ^4 实例% |6 y: \: x) B7 B4 ]: `
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
% C& Z( r& X1 N N0001
5 Z  p+ e: X5 ~3 t3 f$ GG90 G92 X0 Y0 S500 M03 LF
/ b: ]7 @2 m3 l( ^3 T7 b7 ] N0002% h% ~4 @/ _. N$ v0 p& }& ~
G01 X1 Y1 LF
. v9 ]+ F3 f  y  Q' X' r' [ N0003% o0 l8 \3 d% e; N2 P7 i2 \
G01 X1 Y61 LF. ?; w( w. @+ |3 Y8 |! D8 W
 N0004* X9 `- b# _+ d6 P2 |: k
G01 X41 Y61 LF
* t3 H/ L0 I! ?# l; z$ | N0005! x" e1 N. g' K1 h; K' i' r
G02 X61 Y81 R20 LF
$ p( V! F9 Y& B4 f; V N0006, c  a  A$ D+ f* K
G02 X101 Y81 R20 LF
& Z2 O# t' a3 v2 E* T% q N0007/ @8 C$ L7 ^6 b5 ~; c
G01 X141 Y81 LF" T: t( R8 F. L2 T
 N0008
8 `( W# _2 g9 C& }% i- ~  `G01 X141 Y1 Lf2 _! |. m: J# v8 Q/ q  P' D6 L2 W$ J# h
 N00090 H0 n3 m! V% @/ n) a
G01 X1 Y1 LFM
6 Q1 {0 d: h6 h. l N0010
- I( U' P+ O$ O02 EM/ J$ Y$ V4 z) u
2008381147.gif
- X! n- J5 {. D5 ^% a% y! D图2 AutoCAD绘制零件轮廓
: r" G7 H4 e1 l8 r/ p  g5 结束语
; S5 l) R# l# _3 V6 ?  由以上实例可得如下结论:
( i5 U1 D3 L  i$ o  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
! Q+ Y+ K. e* b6 p6 R, ~  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
* V5 y4 O* N% Z4 B  U$ G  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
. p% A; w8 ~/ C7 P  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
4 G6 j) q* |" n/ d5 R! K/ y0 g  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。6 b  b" o/ |  M* _& j8 p
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2026-4-5 17:47 , Processed in 0.169646 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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