找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 264|回复: 0

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

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

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

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

×
1 引言
; Q4 J" D% s0 k& J$ ~  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
1 X8 a" ^, h+ B2 系统的框架结构和功能5 J3 x) B/ H$ G: K
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:5 ^. _& ?. }7 Q3 V3 l
20083811346.gif 3 ~* ^6 J7 _9 p4 Q
图1 系统总体框架结构* y+ d" H  R* |; |( ^+ `
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
0 [* s2 G3 B* E2 _8 O  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
/ m2 _2 B/ u3 P# u) h# C" R  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
: t1 J- e5 D/ V, B) k, C  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;8 q# U& @& x9 X$ l5 v
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
% F) G/ v! b3 V7 y, `6 u3 软件设计过程1 l- ?, Z) r1 x- `  @  h7 X
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。9 D& ^) e2 ^! O7 Z( j) C) K
  (1)实体数据类型变量定义2 V" U3 Z, P: b9 E0 A# @' l
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
2 }, ]! ?; n! S2 I- Q* {1 a4 gType ENTITIES-TYPE9 @9 p' K! m- S: a- K- r1 A+ m
′实体形式数据类型名:' n# l4 ~# j6 ?2 j( z
  ENTITIES-TYPE;
) M7 T' E2 z' P$ [8 o0 S  STYLE As String& b' X  C9 h9 F7 T  Y
′实体类型变量(其值为LINE,ARC,CIRCLE);
/ o6 V& ^: n) W5 s  S0 Y2 {  X1 As String3 ?3 u) {& B% H
′实体的起点坐标分量x;
% X$ v& h$ k+ ?9 r% K4 y$ I  Y1 As String/ L. s- _& t: W5 ?9 G
′实体的起点坐标分量y;9 q' S# F. L. T; L+ X: I
  X2 As String: e4 {8 L' e, n: P0 r/ C" @
′实体的终点坐标分量x;! ]9 T0 ~5 A7 v
  Y2 As String, n  L9 s$ R7 {+ w% C, [- Y% n
′实体的终点坐标分量y;4 n/ c, e% l) v) Q' n0 A! n
  X3 As String# K; O* l6 ~# H1 K
′实体(圆弧或圆)的圆心坐标分量x;* B2 U5 H8 B( r0 y8 ]1 m; M% X# b
  Y3 As String/ [& H) v: T( t) Q/ ]" @
′实体(圆弧或圆)的圆心坐标分量y;- T9 D4 w( y$ G- u( o
  R1 As String8 x& r8 [5 w) X$ `: |+ h, n: k
′实体(圆弧或圆)的半径R;3 ?( z) Y1 ~& \6 W: B2 q/ l) D
  WISE As String8 A* _  Y9 {. b  T; c7 Q9 }! m
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
) a, O  ~0 H2 F# B  ANGLE1 As String
5 v  n  w5 b( t+ q" \$ X. P′实体(圆弧或圆)的起始角;2 }, o: }& Z2 w; V! q$ ]
  ANGLE2 As String
, l% l; ~$ ]- z: I; a: w! J′实体(圆弧或圆)的终止角;8 f8 }5 S; A6 N& B
End Type+ o  U3 `. r1 @- s0 C5 z% B
Global MM(200) As ENTI-5 E9 h3 ]- X' X2 ~! F
TIES-TYPE
- E* R" v1 t- G) @2 T" s, w′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
/ u+ }, ^! [3 R. X6 m6 I+ a′型变量,实体数目最多不能超过200个。2 [7 B' M; U" r9 g3 R0 ~
  (2)DXF文件的读取程序
' E5 U4 |( X3 z! G+ p  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
* j/ C; `- ~5 i9 T" j5 x- ^8 p" u  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。; x- o" i0 N9 E  s  L7 Z! K
Sub DXF-IN 0
  B* Q$ a+ Z: A0 X/ hDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
3 Q+ x/ v/ @# M) q# DOpen FILENAME1 For Input As #1
3 p" h; k0 \, W% O  Do Input #1,B
" n/ l( C8 [$ }" L  Loop Until B=“ENTITIES”4 X. l- J, |8 y% |2 U1 k1 _
  Seek #1,Seek(1)
# j- y) y+ M& l- W: N' t1 @0 H- L  Do While Not EOF(1)
/ t# M0 I/ M* W7 s0 N6 _   Do Input #1,B
* {" k" f; h- p. F* H! @   Loop Until B 〈〉“0”
+ @2 ?& ]- i% C8 r   i=i+1: H3 K9 m$ {2 x$ z0 T
   Select Case B, o7 s: s* C) ?: E) U
      Case “LINE”2 H/ p$ ^$ @- u. H& K* m- W
       INDXF-LINE 14 h( U! @. X: t
       CC.STYLE=“line”& b% `, p! {. x; y. c2 S
       CC.X1=Str$(x1)* E+ [! z% }, H# J0 H8 d( m" X
       CC.Y1=Str$(y1)
4 U$ G& k* A# x       CC.X2=Str$(x2)
* w: L! n  W: _; ]' t% W7 d# q* J       CC.Y2=Str$(y2)4 z' }( L* \7 a7 n+ ^; i
       xx1=x2
( G( G% x4 V* w# d" q     Case“ARC”
  [* j) ?! Y: i       INDXF-ARC 1
* i# c1 m" c( J9 G7 t5 S: ~8 X       CC.STYLE=“ARC”
/ a0 J6 p# l8 \$ l' m       CC.X1=Str$(x1)
* _5 x& k% y% N" n2 |       CC.Y1=Str$(y1)9 U) J) M, s! {8 b8 }! V
       CC.X2=Str$(x2)/ k0 k; S" k0 F+ t; d% {
       CC.Y2=Str$(y2)
/ l' `6 w# \4 T/ G; D. ]       CC.X3=Str$(x3)
' M" Z! o9 ~: {5 G+ Q+ m$ ^       CC.Y3=Str$(y3)
, R- f+ V: }3 i, i# F/ l0 b       CC.R=Str$(R)
/ {4 K: C, F0 d' _       CC.ANGLE1=Str$(ANGLE1)
& f" C0 G0 |$ O* f2 u       CC.ANGLE2=Str$(ANGLE2)
/ s% J2 ~, O; Y, n! p       If Abs(x1-xx1)>.5 Then0 n) C8 }# R$ `0 p9 Q+ [
        CC.WISE=“0”  [- E( F, `! u2 }
        A=CC.X1:CC.X1=CC.X2:CC.X2=A
" E* a) A" h) i6 }7 N* D9 E+ O/ l        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A
7 W! X" X1 ?! }! }  E* d        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
9 h! U) Z# s: W: g! q( Z$ B         Else CC.WISE=“1”
$ l4 L  L: x2 X% R8 X: o; `) D      End If xx1=x2
' H7 i+ w+ H9 u: a    Case“CIRCLE”5 e' P3 N' j7 d3 |
      il=il+1
4 {  W' P$ d5 ~8 D" c4 Q      INDXF-CIRCLE 15 A) ]) Z: @* w2 ]0 w  i
      CC.STYLE=“CIRCLE”
. ?: k9 z9 R4 ?      CC.X1=Str$(x1)$ u6 X; D7 E3 g; b3 r: @* m$ J6 A
      CC.Y1=Str$(y1)
/ I) p9 d( w7 Z1 d# x$ @1 {, {' L      CC.R=Str$(R1)( f* O0 ]- H5 H2 @# R  r# k6 M
      CC.X2=CC.Y1: @; k8 m+ J+ |) b9 F: _! ?8 T
      xx1=x1& l3 p; R4 m0 |3 a* v5 S
    Case“POINT”
; c# s4 A; A9 F- s$ q% S/ A      INDXF-POINT 1# E$ g$ _4 }% B0 i0 @
      CC.YSTYLE=“POINT”
& ]  d* `- s) ~' V& T( ?      CC.ZHX1=Str$(x1)
* M/ P$ s; b- }$ t7 i- X      CC.ZHX2=Str$(x1)4 ^/ s- o$ K, _! `, [7 H
      xx1=x1
* Y$ _, y# _- n    Case Else/ V# R: R: ]$ ^3 Y) x
      CC.STYLE=“NONE”& \/ |1 D6 ~; ]" I2 j4 N
 End Select6 w! q3 O& ]5 m) e1 F: O% W4 ]
 Seek #1,Seek(1)! B2 N: R  w1 j
 j=Str$(i)* P: G, y/ M6 g0 h8 o/ y
Loop! T" P% l5 U6 `5 |0 V6 ^
Close #1
  C, q7 \( `. B5 n* x; FEnd Sub1 b+ ]3 \  l3 K& G5 D3 \
  其它模块的程序设计不再赘述。
+ f. X' v; s2 R; A4 {! G% M+ X4 实例# @9 d7 k. P1 m$ o- Y$ k' Y' s/ c
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
" E: h2 b, ~7 w: a6 t4 {! @ N0001! y( b% b9 v3 c3 j4 I
G90 G92 X0 Y0 S500 M03 LF
* e/ g( s& {- P& V4 O N0002
  N! `: ]) w& t3 o1 m" ]9 _G01 X1 Y1 LF
# b) J- p. o1 i, w) u) U9 K N0003, ?1 ~, e2 z1 U3 N. _
G01 X1 Y61 LF
5 K4 C6 _. _; p1 p6 }9 ~# a: n3 ^ N0004
4 \2 @2 n5 o( }% J" x0 XG01 X41 Y61 LF5 p  ]  o0 X" F% M
 N0005
9 z- T/ D- X6 Q& w/ |* PG02 X61 Y81 R20 LF! n; a( Y1 q# Q1 o
 N0006
" i- C  e# o* t+ |G02 X101 Y81 R20 LF
9 w& u4 M: C* f9 X# [8 y N00079 N2 X4 y/ W* t6 |' z
G01 X141 Y81 LF
6 V$ {) c) O! _$ Y$ o2 b N00082 h( g% a4 u0 H2 ]- L
G01 X141 Y1 Lf3 g7 l2 z+ p5 w( Y% l4 C; Q9 N
 N0009( O$ Y% H8 f) [. s
G01 X1 Y1 LFM
) D# ?; Q4 B# h# z N0010# s$ \# M( X. n! Z1 o
02 EM
' ~* ^$ F7 {% J* | 2008381147.gif 9 ], b4 A  S. Z3 C
图2 AutoCAD绘制零件轮廓5 ~% D. f+ H& H
5 结束语
7 a2 n" V9 B7 P! m; h" A  由以上实例可得如下结论:" Y3 H0 X  y7 C/ \3 G/ I
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;: y! a$ h2 a, o# f# j6 @. m# @) K, |9 k
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
" Z( ]( Z1 U" k# o$ R  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
& _5 A  i9 I: M& f% ?  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
% [8 n2 G7 ^" k( v) i* R0 ~; T  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
0 |8 J5 `: `- i* e& A- x文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-7-29 10:10 , Processed in 0.204237 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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