找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 258|回复: 0

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

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

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

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

×
1 引言
- r% b# x9 [' ^8 o+ o  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。" P0 k5 Y9 t! p: k$ j# @# n' F
2 系统的框架结构和功能# ]1 d" ?! U) W* z$ }3 i3 y
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:9 N- @& Z, O( e9 m: \/ |0 y
20083811346.gif + P5 r/ _' G% d
图1 系统总体框架结构
; A; G8 e( y) f( m# K  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
; q9 J/ f1 N" C& [4 L% o  M  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
3 H4 M4 M6 l: t  i  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
# ?# [; ^' e/ N( v# G* w  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
- A% M# z& f9 r  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。3 u7 ~2 Q/ d6 t: g& ]3 r
3 软件设计过程
/ `4 |/ w$ w# ?  Z1 p) A  v* o  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。" s/ G, y% B& a6 }
  (1)实体数据类型变量定义
( J- H% Y7 L' O& A5 c  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
( m+ k& y) e+ |6 A4 N: o, _/ xType ENTITIES-TYPE- N, Z% S* t) N2 f9 \& q9 f
′实体形式数据类型名:* w, k; n% S: s6 s
  ENTITIES-TYPE;* U5 V0 N4 [1 J+ q$ C1 s
  STYLE As String* Y  O9 ?, h$ N2 w8 ^- p5 n
′实体类型变量(其值为LINE,ARC,CIRCLE);, {  f8 |0 I# I( W& Y0 {" x
  X1 As String
. M0 q+ Y; X' s0 P′实体的起点坐标分量x;5 x. K/ H/ x; P& j/ R6 @* a
  Y1 As String+ |# `4 |' |9 N' q2 }4 p
′实体的起点坐标分量y;1 e& f' j5 E% z( }2 A# X7 v+ s
  X2 As String. s4 n7 u' x% ?2 d/ B7 w) n- M
′实体的终点坐标分量x;
  Z* Q( O" y& f' d4 Y  Y2 As String
5 a, z! w' f$ R) z& i′实体的终点坐标分量y;
, Y3 r/ o, c/ u& l1 W& b1 w  X3 As String* X& b2 M/ i+ S! m  [
′实体(圆弧或圆)的圆心坐标分量x;
) p( n6 E, U! P$ Y  Y3 As String0 Z% p7 r" K* H! U; G& {4 n
′实体(圆弧或圆)的圆心坐标分量y;" W) X6 o2 v, V+ I  ]) a
  R1 As String
, E1 Q, i) I" x, x1 [* r: W+ P′实体(圆弧或圆)的半径R;7 d) e1 c5 K) |) Z. ^
  WISE As String0 l3 c' b; W( ]1 N, p- [0 k
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;" y. x) \  O. k* ^
  ANGLE1 As String' S* l5 y: f# d' n  d. X* U+ J2 B
′实体(圆弧或圆)的起始角;4 [- V! R3 z- g6 V
  ANGLE2 As String
& v# @; e4 O$ W′实体(圆弧或圆)的终止角;% R# P8 q; q' W# Q% H3 p
End Type
" N- k4 m: `6 C! u: Z$ }Global MM(200) As ENTI-
* L5 J- q, r" k' K/ c$ jTIES-TYPE% P  W4 f' v# S% e# u) Y
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
9 X  K& V" o$ M& X, }′型变量,实体数目最多不能超过200个。
3 u8 u$ ]4 j- ]1 R- O  (2)DXF文件的读取程序2 G& z7 I; ]0 k  _5 a( G
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。! H4 ?' e" t: B* `$ `
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。! |3 H9 J# f& S6 w
Sub DXF-IN 0
2 d9 Z" Z9 F$ H9 o+ ]* ?Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer9 @  ], b- g6 i: C2 C9 r
Open FILENAME1 For Input As #1
; U# t; F9 y( i! _" i+ \% b  Do Input #1,B
$ e; _# x5 r7 \+ P  Loop Until B=“ENTITIES”
+ y% w/ D, ]1 Z7 }5 n$ g7 I  Seek #1,Seek(1)- a  v  z9 ?* l8 L
  Do While Not EOF(1)4 r. q9 k8 d+ e" g
   Do Input #1,B5 Z2 S. S# l; M9 m) p& S; \5 S# ~
   Loop Until B 〈〉“0”4 a9 S1 v5 L; n1 |5 q; y  J: {
   i=i+1
$ T9 {5 ?$ f0 r3 V$ r   Select Case B  A' N) O0 w, z1 ]1 }2 R4 ]" ^. ?
      Case “LINE”
2 _4 q$ l- p% V6 v) e       INDXF-LINE 1- h3 G8 s6 U0 k) @# S
       CC.STYLE=“line”' k4 x' O9 c' }6 `9 c# U% d
       CC.X1=Str$(x1)
9 t1 |, c, d/ v4 J  Z: |       CC.Y1=Str$(y1)7 p' g2 c# g# R3 F
       CC.X2=Str$(x2)
$ A3 Q) k2 e8 L+ c6 M. [' a       CC.Y2=Str$(y2)
+ T" E2 K9 k: s       xx1=x2% O- e0 X* I- [. l0 w0 _, l
     Case“ARC”0 W: ^- j, }. P3 x: T2 r
       INDXF-ARC 1
. |1 O- V' t) i1 W& R& S- O  w       CC.STYLE=“ARC”
0 f6 d" m3 T1 t9 b' e2 B0 W       CC.X1=Str$(x1)
* }& n4 d. Q3 l1 h  [       CC.Y1=Str$(y1)
3 ]! W/ D. e* B) U; S& n, z       CC.X2=Str$(x2). G% k" t" }2 Y' }# w
       CC.Y2=Str$(y2)
! R+ f; E/ E# Y: S       CC.X3=Str$(x3)
- h7 e( J1 [7 U2 X1 k* t       CC.Y3=Str$(y3)
( e1 ^& d6 c3 ^7 _. x* `% C" ^       CC.R=Str$(R)0 d9 \- P9 F/ M4 Y
       CC.ANGLE1=Str$(ANGLE1)" X' ]( @: q6 |9 C3 Z4 w
       CC.ANGLE2=Str$(ANGLE2)( Z6 ^" y) q% x4 }- ^/ G
       If Abs(x1-xx1)>.5 Then
7 ~$ {+ i+ v  Q" ^% ~6 m1 W! b        CC.WISE=“0”! D- }5 I' d+ Z( I7 D5 H5 n
        A=CC.X1:CC.X1=CC.X2:CC.X2=A; a! f+ X- ^- V. {! R
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A6 U0 d' H2 b' G3 K1 Q7 i( ]4 U
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
" d4 Q7 P7 C+ W' }1 n         Else CC.WISE=“1”
4 _, R( R. v! j1 ~: C) U0 L- T' w      End If xx1=x2. |9 N3 [3 i4 o" S/ k  S) Q; d
    Case“CIRCLE”' n- r; l; Z3 s
      il=il+11 B* w' k0 L" _2 j# x
      INDXF-CIRCLE 10 z, O8 s" Z+ U! H- g) {% U
      CC.STYLE=“CIRCLE”
* K9 `* y4 h: Q) G1 K* l4 G      CC.X1=Str$(x1)
# N: k+ d) N6 \+ t5 S$ ?      CC.Y1=Str$(y1)( l& O& @6 c2 p4 A
      CC.R=Str$(R1)
* f2 f! a2 l) K0 `! g/ T. y# _: n      CC.X2=CC.Y1) _9 y5 C  r& D/ b
      xx1=x1
% e2 g4 ^3 _. q% _4 Z# g& P1 e    Case“POINT”
' V8 C2 s5 B, k: l+ S# ]4 |6 t, e      INDXF-POINT 1% i/ ]4 c2 U& ~
      CC.YSTYLE=“POINT”
  ?: m: S  C1 {% |      CC.ZHX1=Str$(x1)* ]! I0 N8 `8 q$ I
      CC.ZHX2=Str$(x1)3 t2 l8 R$ A7 Z- Z/ A7 W
      xx1=x1
' V. A6 r, ?, g' {9 p. _    Case Else0 }' J: N. ~: X# \/ g# ]
      CC.STYLE=“NONE”
/ ~5 G4 T7 ]: J) S" D$ ]; Q End Select
) p- V, e" J+ ~* m; A) S3 y Seek #1,Seek(1)
& h- ]0 {! D' x0 _6 G4 ?) R( ] j=Str$(i)
" a2 P' j$ z: x+ |7 D9 OLoop9 w: ?1 T5 f% V4 ~: j
Close #17 F, o4 t" M# u' ^$ Z
End Sub# |! y7 V' U( k4 k$ h* _
  其它模块的程序设计不再赘述。; o% Z( E: M# j1 H- \+ t
4 实例
7 Z7 {  R2 ?- R: O+ w1 K9 u  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
% i( ~: b! `: d8 }. _! `$ f N0001
9 ]; t4 p& }# c: ]% ~G90 G92 X0 Y0 S500 M03 LF) p* v& R% b7 ?# \) Y1 L
 N0002
+ o, c& `! o$ vG01 X1 Y1 LF
; L% t. }0 u! H N00031 K0 B8 O# Q) R! l  ^/ N6 K
G01 X1 Y61 LF
* a% g8 h% o8 s N0004) k: J! b7 ?3 {" G! J- q$ P* c
G01 X41 Y61 LF( ~" e6 ]! H; z
 N0005
1 O; X. s% J8 O  dG02 X61 Y81 R20 LF  e: u" R& {5 J% z5 E2 v  g
 N0006
( R! |* q, x1 w+ dG02 X101 Y81 R20 LF& `$ Y7 {3 J( B# g( H
 N0007
: o- r& u* Y6 ~/ Z, }9 HG01 X141 Y81 LF
+ A9 Z6 S; m2 `5 n" o N0008# R5 r; `! d! c+ V
G01 X141 Y1 Lf* g+ u) F' b/ r3 g
 N0009. n6 k( i8 F' |) s3 }- g$ T
G01 X1 Y1 LFM
" {) K  s$ a' }! _* j N0010
. I# v* b: @' z6 M5 N02 EM
- D& b& n& T: E8 i0 I 2008381147.gif 5 H; w3 e' N9 x5 u; Q% \9 J2 I
图2 AutoCAD绘制零件轮廓$ y9 [' T2 x9 J7 e* Y+ c4 H
5 结束语
$ z1 u) O" J: A. N* z  由以上实例可得如下结论:) e0 X0 f5 Y* B( G& C& q$ r- ~0 L# M
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;7 F5 B9 z# u* E. O6 s$ y
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
- h1 ^: `# Z7 k& h& D6 o) E) [  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;+ y) F) Q8 G, k6 m
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;7 T6 m  a; ?6 B# g/ J1 D$ `
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
. s; h& ~2 T1 t- P# H( o4 z2 Z文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-4-4 09:33 , Processed in 0.140865 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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