找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 278|回复: 0

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

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

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

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

×
1 引言! E4 P* J6 z0 ~. k& C  z
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
$ Z( w. T& w. _. A' y+ l2 系统的框架结构和功能
6 r: W# ]$ P) I! ]  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:* C3 d, Z, i4 ~5 h5 z  T. B7 H; y7 Y
20083811346.gif ' P* ^9 S/ Z# u0 E: p4 T) r: t
图1 系统总体框架结构7 r3 C3 }, ^1 G: b$ \3 ?
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;+ n: K& V7 N- n
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
% A( e2 J& y+ U  e7 I  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
7 f4 Q2 W0 b# [# `/ |4 Q. w7 f! ]  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;4 [& I6 z( ^9 I3 G! E2 j
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
# Y! l) g+ M) l: V7 b) @% u3 软件设计过程
( M* E2 d0 }* e1 N6 e; c# |* g  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。  ]7 A. `& T1 V& z3 C$ I% e* ^
  (1)实体数据类型变量定义6 s# N4 C; I' D6 c, [' w5 H
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
: c5 \- k" o% u% Z+ I5 X: OType ENTITIES-TYPE
1 G2 I; q  s  q  P! `9 Z" ~8 e  ^′实体形式数据类型名:, P$ _8 w3 _8 J: m  b: H- w4 u
  ENTITIES-TYPE;
, \- e* x9 j/ q+ A  I  ^  STYLE As String
* A9 V$ g8 P) H( _′实体类型变量(其值为LINE,ARC,CIRCLE);- h. X3 _+ O5 A! b7 \
  X1 As String
, N! S( j* U" Q, w, u% Y: Y′实体的起点坐标分量x;
4 a; L8 g) R& K1 |& B  Y1 As String
4 |. [! T2 {, x( a+ D) b. ^+ @4 Q′实体的起点坐标分量y;* K  v7 ?) W6 U# c3 z6 E" m
  X2 As String
% {4 |3 E* E3 [2 r  l, ^′实体的终点坐标分量x;0 v4 s2 p" j7 r) L
  Y2 As String
8 g4 x+ L0 k* _. z′实体的终点坐标分量y;3 g2 d" i+ l2 H1 ?" ^- I
  X3 As String9 Y# u) d% M5 s" N
′实体(圆弧或圆)的圆心坐标分量x;
, @  [1 X& d% ]8 [. n/ K  Y3 As String/ g! ^4 M* T) ^3 H+ Q
′实体(圆弧或圆)的圆心坐标分量y;
& I4 e! t# P- I, L  @% q! s8 U  R1 As String# k$ e5 n5 D, Q/ ?; F: n
′实体(圆弧或圆)的半径R;7 q2 z" o' h! }* ^6 y# `$ o6 k
  WISE As String
, j) D2 N& |' D5 J. C′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
* |. t& b. p( X# p  ANGLE1 As String
" `: V$ T* e( p2 T′实体(圆弧或圆)的起始角;/ x, h; B6 W* a) F5 k/ V
  ANGLE2 As String
3 e% k- n6 U* G( i8 r7 ~; W, V/ O′实体(圆弧或圆)的终止角;
: `1 Y" U0 p- G& }End Type- ^$ u9 i  K, F/ B- U  b
Global MM(200) As ENTI-
( u* d, c6 D4 K7 m2 wTIES-TYPE1 b. @: A4 |! o( e- B& X
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
; F  W9 i5 T0 \6 J; g, p′型变量,实体数目最多不能超过200个。
' Q" e8 K  F5 c; e" Z% M" F' b5 X  (2)DXF文件的读取程序" W9 Z9 d3 j" ^2 i, |3 P
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。6 D6 w$ ~1 w/ @! F- k
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。8 z* h. W. y! T, ^/ A1 O* |# n
Sub DXF-IN 0
' f, R$ |7 P# J8 ADim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer) p4 U) N$ T( V$ P, j
Open FILENAME1 For Input As #14 r0 C/ x" e' |+ L% O
  Do Input #1,B& ]8 G6 j* `9 S9 N# X4 l/ `
  Loop Until B=“ENTITIES”
% B4 ~. G% q  U* w  Seek #1,Seek(1): p, `( g0 r  V( d: W4 ^
  Do While Not EOF(1)
+ s( X( y' e* O' w$ B5 e   Do Input #1,B
( Q0 H2 a( U' w   Loop Until B 〈〉“0”8 x+ d* i+ E/ T; Z
   i=i+1( s" ^2 T+ h9 u
   Select Case B
6 X4 y7 e, M. n3 `      Case “LINE”1 Y. B& D7 s- l0 F
       INDXF-LINE 1; v+ ^# Q9 k7 f5 p8 i
       CC.STYLE=“line”
" g0 V0 ?4 d" W! {: A9 ~9 I       CC.X1=Str$(x1)
& r8 v9 E# e5 d# L       CC.Y1=Str$(y1)9 D( [% d. g! w" K$ w1 k( {
       CC.X2=Str$(x2)
0 @+ M# I- |( ?9 Z) @       CC.Y2=Str$(y2)
1 V+ L- {4 \: n5 \1 s/ m# F! N+ n       xx1=x2; B0 K' T1 w) o- r2 L, y
     Case“ARC”
" F' ]  M% i! h  w2 O8 T- j       INDXF-ARC 1
$ ?% A# M0 i& ]* q       CC.STYLE=“ARC”. C2 y- ~/ S1 V  G/ p
       CC.X1=Str$(x1)
) C% Z0 p' ]- z: `       CC.Y1=Str$(y1)
+ _7 q3 `) v8 e. A7 p1 ^9 X+ v       CC.X2=Str$(x2)0 S/ I3 P, E% x! ~% c) B
       CC.Y2=Str$(y2)
7 [% E2 i3 E6 w, ^1 ?/ ]  p       CC.X3=Str$(x3)
+ b* u2 M7 `4 o+ G! `2 p2 O       CC.Y3=Str$(y3). O6 _% ~/ o3 m/ J- R; Y, a' Y% B/ i* j
       CC.R=Str$(R), F" u% o# ?( `1 X$ @: q3 G
       CC.ANGLE1=Str$(ANGLE1)4 i7 o5 O5 p+ @" y% H* \- L0 f8 |
       CC.ANGLE2=Str$(ANGLE2)0 q0 Q$ B, t! p$ P, c( O  x7 h
       If Abs(x1-xx1)>.5 Then
# J- ^1 ~6 {9 O        CC.WISE=“0”) @4 S! o+ v0 V
        A=CC.X1:CC.X1=CC.X2:CC.X2=A7 Y9 a& v7 `+ C6 }
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A1 N  c( m! R. L6 c
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
$ e4 |. z3 e. j7 ?4 u6 O         Else CC.WISE=“1”0 ~. M+ F; j4 h7 v1 c
      End If xx1=x2, \  W, u* |! n4 [% w
    Case“CIRCLE”) f+ |& a1 y3 |# [" }! E+ t6 Q
      il=il+17 Y3 _2 v  Z8 M- l& U' s: ]  {% Y1 F
      INDXF-CIRCLE 1
! Q2 P: ]7 F- W' I6 s7 E      CC.STYLE=“CIRCLE”- Q) z/ X: N' t! l3 H* h
      CC.X1=Str$(x1)( w& G* f& y+ V( M& B
      CC.Y1=Str$(y1)5 D, b2 v3 u" Q( n0 v. A1 S
      CC.R=Str$(R1)
% f& }( A4 ?* U' c      CC.X2=CC.Y19 R; i( L! H: P4 V$ z7 ]0 j' p1 n
      xx1=x1
* z$ N# p  p1 J; w4 v- u' @    Case“POINT”
& K6 P, W6 }( `, a      INDXF-POINT 1) f8 I- m" M2 k( e) y6 ?
      CC.YSTYLE=“POINT”
4 V9 {0 b# p+ p4 y% q6 z$ o6 {$ u; E      CC.ZHX1=Str$(x1)
7 c4 _  y/ Z' R, I! I/ v      CC.ZHX2=Str$(x1)
% `& I+ Q8 i$ ?      xx1=x1
! }4 G- E: d3 J( {# G; M9 \    Case Else+ X0 ]& {* d6 v0 C2 N4 u, |5 j
      CC.STYLE=“NONE”
7 k3 x% G6 X" D6 e( C4 u End Select7 T: A5 e# v; P; f* U3 J
 Seek #1,Seek(1)! J+ ~: k$ G* h( ], F6 F% R
 j=Str$(i)5 _) v# F& N. q
Loop' l3 C3 W3 o  ~" h9 S: Z
Close #1- ]! d- X. W$ Y) w6 N  h, T+ D' t
End Sub* b% J$ |! R* `
  其它模块的程序设计不再赘述。% k9 Z+ }* c# V" t
4 实例
" d, w- V3 A* i% j  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
& e5 f% _" d( a+ T7 x  f0 U, g N0001& Z6 H3 h* U3 Z8 h" H
G90 G92 X0 Y0 S500 M03 LF0 u3 c9 o% r7 g1 K5 ^
 N0002/ }& k/ h+ g; U7 Q
G01 X1 Y1 LF( Z7 `, \, C" t/ F! h& H$ `
 N0003
  c/ n3 N& K5 X$ J9 u* v& DG01 X1 Y61 LF9 t7 E" w; B# d) |$ |7 Q5 A
 N0004
" Y- c$ D5 y& {2 o1 b* C1 K4 mG01 X41 Y61 LF* A; A2 U3 b/ w( k& V5 [, U
 N00050 \+ ~+ A$ x# J9 ~9 `$ ]
G02 X61 Y81 R20 LF
3 f* f3 c. d/ G8 ~1 p8 | N0006
( K8 _; t- P! }) i, KG02 X101 Y81 R20 LF6 b2 `0 Z- S( c" ?) o( Y0 b! ^
 N0007
/ \$ w5 ]& Z. |" w. R8 y) DG01 X141 Y81 LF
, _, ~' G8 a, M2 A2 h+ t( J N0008
  d, r& t/ K8 V2 pG01 X141 Y1 Lf
" f: O* y. @3 O& U/ u% Z/ s. U4 b N0009
/ J1 U. u4 R& k& x9 W% BG01 X1 Y1 LFM
( F# p3 T& ^% t* J9 w N00100 f- i7 t. o3 O$ b( M, z
02 EM& k; Z" d% d* `$ E  i7 p
2008381147.gif
+ Z/ `4 c6 n9 a/ d3 r图2 AutoCAD绘制零件轮廓
# D& W6 q; |5 |1 \5 结束语7 Z. m" `9 U5 t' w) E2 [$ z6 q
  由以上实例可得如下结论:' V# e/ L. u4 w
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;$ b3 V2 q( Z! |) {2 M5 S! k
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
; r. q+ Z$ o: z+ `. R6 Z  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
3 X$ c9 @6 J8 m' ]3 Y  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
7 y* W0 l) X6 \/ e4 I  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
9 O, Q5 S3 v' b. t. f文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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