找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 277|回复: 0

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

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

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

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

×
1 引言# r- [( P6 I/ z! e3 Y4 a1 w( T
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。+ R* p1 T# @7 E1 E+ _$ R
2 系统的框架结构和功能. o2 q( l0 C, q
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
5 _7 Y9 b. g$ a! Q+ i 20083811346.gif
- ?4 \' N7 `/ F/ s% u' `6 x图1 系统总体框架结构8 j; o% D- g- N3 k% N+ d6 {0 B2 i7 C( x
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
% r9 h8 }- i1 g* T  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;' M7 F/ O: c  `) Y  C
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;; w3 S: B3 {5 `- E8 z+ v
  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;( v3 \" s4 V  f: z
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。: [9 j; B4 N! Q  d
3 软件设计过程6 v6 a7 m" T$ Z+ h5 s
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
" h( X- @' s: T6 S9 h  (1)实体数据类型变量定义
; Z; m! q# P. s6 n, S* F1 v, u  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即8 s3 t0 O4 Z2 f! |" B
Type ENTITIES-TYPE
( t+ ]/ i/ p; C9 Z9 H′实体形式数据类型名:9 w" ~8 D2 x6 z
  ENTITIES-TYPE;1 S( \, G7 ~* Y; |3 m. w) Y
  STYLE As String6 u+ |' H/ i8 W6 N# i5 _0 a3 s
′实体类型变量(其值为LINE,ARC,CIRCLE);3 J6 `* T0 d( Z: S% a) {
  X1 As String
6 A. X& p& `  @. t' W′实体的起点坐标分量x;0 z- c% f% \! J
  Y1 As String1 f7 y, A8 S7 A4 f+ K
′实体的起点坐标分量y;( I7 U) n/ c7 l7 C6 o. ]% L" U
  X2 As String
  l2 [+ C8 }2 S$ Z′实体的终点坐标分量x;
, I- ]# l- F- n) B  Y2 As String; Y. J$ X" J4 |6 d  v$ J  U
′实体的终点坐标分量y;% Y8 u4 i8 @1 q4 c( w4 a
  X3 As String
0 M9 z: j% \: }% ?' r′实体(圆弧或圆)的圆心坐标分量x;1 U' o: }" F+ p& A5 W' H
  Y3 As String
( z9 C* d2 g# Y9 Z2 P′实体(圆弧或圆)的圆心坐标分量y;
7 _6 l  j+ g! ^9 D( d( j  R1 As String
' X) v: L6 m, u1 V' M′实体(圆弧或圆)的半径R;* G1 [1 n% K  N" N6 t8 m* J
  WISE As String
) {2 w; g6 _$ @, G' V0 v; H# [  C′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
- ]$ o6 X0 P+ f# w, {  ANGLE1 As String
$ T* p7 y/ B3 L′实体(圆弧或圆)的起始角;1 E  x# t" [  E4 W
  ANGLE2 As String  ?8 F. D' N/ s6 x% W
′实体(圆弧或圆)的终止角;( z' j! @& a0 ^# M5 H
End Type
1 U4 e/ k, ^& ]' q% N) z  x/ LGlobal MM(200) As ENTI-
; R" B/ S% C- g. c! {' `8 mTIES-TYPE
: Y9 @5 R: r$ z0 p" t; Y′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
( v* g* j) k, c′型变量,实体数目最多不能超过200个。0 Y' V% N& A, s( e$ ^2 `; s
  (2)DXF文件的读取程序: s1 ]+ W+ U3 E4 F
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。5 x' O. C" S. |# |& K) `4 t; ]
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。" ^1 o8 h0 _' N) C- i( R
Sub DXF-IN 0
4 r3 j3 j9 v- {" jDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer( K* ^9 S) D! V4 [0 d
Open FILENAME1 For Input As #1( R5 I$ Q9 e( ~( p% k
  Do Input #1,B1 x5 U. Q: _* y6 `  h# c
  Loop Until B=“ENTITIES”
* `+ u* }$ e: |6 ?5 N: U  Seek #1,Seek(1), A2 X& [8 q* q$ ~( r7 ^. h
  Do While Not EOF(1)
+ ?4 v3 I( Q! S4 I   Do Input #1,B/ P' @# @  @8 {' c2 V4 z8 N
   Loop Until B 〈〉“0”* ?: W$ O! G* a: }$ I
   i=i+1
9 O7 @* z2 j9 ?- r9 h   Select Case B$ }7 {, C0 k" f" ?7 u& x
      Case “LINE”4 F! t3 n! m- z) _9 T
       INDXF-LINE 1
) R$ t, ]% j6 U: c; [       CC.STYLE=“line”
$ Y6 b- {3 O, N2 w  K2 [2 Z+ w; d       CC.X1=Str$(x1)
$ @1 }3 b+ J5 R4 C- A* u       CC.Y1=Str$(y1)2 f4 @7 Q  W$ B6 b* \
       CC.X2=Str$(x2). T% {8 w7 h# L; b/ t+ W5 P
       CC.Y2=Str$(y2)% T9 G/ e$ B  `. c1 ?) \; T
       xx1=x2
& a8 U$ w6 Z' `) p* J' M, ?     Case“ARC”
' d3 o" X0 N  K7 Y) _       INDXF-ARC 1
5 t" T# j1 m! x% K" g8 \       CC.STYLE=“ARC”+ R/ p4 x8 c3 M4 y6 F
       CC.X1=Str$(x1)7 D" x6 d/ k% w. d+ T
       CC.Y1=Str$(y1)! I6 q4 n, X+ {% K
       CC.X2=Str$(x2)& w2 P0 V$ K: |* Q  h# r8 E& G
       CC.Y2=Str$(y2); I) L- `/ V* z. U7 ~
       CC.X3=Str$(x3)
9 g; {# M; \2 j6 ^4 O4 @       CC.Y3=Str$(y3)* ?) b* n) n8 V0 H' z/ p
       CC.R=Str$(R)
- [% R6 F- `. i% i* v' q       CC.ANGLE1=Str$(ANGLE1)' ?+ {# S3 k. @( m8 S
       CC.ANGLE2=Str$(ANGLE2): J2 l$ A1 d/ `
       If Abs(x1-xx1)>.5 Then
$ k: _/ P, ]2 G" K1 x        CC.WISE=“0”
% y& y8 s" ^" o: b$ U! s        A=CC.X1:CC.X1=CC.X2:CC.X2=A5 B' M2 ~3 M4 x5 C9 k5 L
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A
8 L0 F) P; h1 \  p. j& \9 k- p        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
2 v5 `' u5 R( N: {  y. f' s2 f+ M( {         Else CC.WISE=“1”
3 P# v; }- }5 x5 K2 C      End If xx1=x2
0 c4 u+ k. N/ b    Case“CIRCLE”( C& x  l5 Z5 S8 U3 E. j' M
      il=il+18 O* ~; y! b4 c1 P0 q9 J- [
      INDXF-CIRCLE 1
  B  |: @$ U$ R" m& V9 T  _+ R. M      CC.STYLE=“CIRCLE”% `' G  d4 q1 r$ U  |, M. F
      CC.X1=Str$(x1). I2 b" Y# G; A+ a5 d- X2 _/ H
      CC.Y1=Str$(y1)
5 U" l- Z* y  H- d      CC.R=Str$(R1)
# }3 K( V- ~8 E4 u, w      CC.X2=CC.Y18 T2 C; M, d" _# f- ?1 ^
      xx1=x1# u; q& z! t7 |0 j5 T
    Case“POINT”1 U  h- T% ?# a
      INDXF-POINT 1
1 O1 D$ H) b" ?/ R      CC.YSTYLE=“POINT”
) f7 \1 u& g4 j+ g  Q% `      CC.ZHX1=Str$(x1)
1 i( Z4 ]0 a1 r9 @; {( n" M      CC.ZHX2=Str$(x1)
: G& A* [: p8 I' j) Q5 {. m* W0 }  m      xx1=x1* A. C6 z# h) a( l, S
    Case Else
6 i9 |! W# U; L5 _( c* N      CC.STYLE=“NONE”
" {; N& ?  ~3 P* K  @% t End Select
( S6 X5 i- i- I( ~4 u Seek #1,Seek(1)
; |- b# r/ S  l6 g- g& @" N/ Y j=Str$(i)
  P  s$ c  {0 H8 l, oLoop
* ?5 e& M# V+ Q8 l3 `: aClose #1. E9 R" A8 I/ ]$ q
End Sub/ I+ A) q; C( |! F% b: l
  其它模块的程序设计不再赘述。
( \% s9 l* Z9 Z4 实例* r% v3 @' k/ z6 k4 a* e0 P+ E# v; P
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。0 S; S( Q8 K$ J" E4 s
 N0001
5 K9 F7 j# [5 w' [G90 G92 X0 Y0 S500 M03 LF/ W1 C- a" I- s4 S5 i4 \
 N00022 ?' M6 C$ t8 e
G01 X1 Y1 LF6 y- a# j, t1 E0 q
 N0003
" V+ V( V" F: X2 Y5 Y. f) c. EG01 X1 Y61 LF) b# Q  T. B! \. r0 G, O* F
 N00049 w% x- j7 j3 s' ^% c
G01 X41 Y61 LF
' d- X7 J% b' p. ]" y8 s6 }, F6 ~$ D& L N0005
! y1 g1 j1 Q1 w6 i8 B% j4 [G02 X61 Y81 R20 LF
% G" O8 A7 w: ?; q- U N0006' B0 ?3 s' U8 B* Z6 [
G02 X101 Y81 R20 LF4 B  }. A; G: B0 W7 i
 N0007
) G0 ?% l# T. @3 Z5 {G01 X141 Y81 LF3 p8 C: v. |: v/ Y2 O
 N0008/ H0 F4 s% X/ Q" e# M5 [' a
G01 X141 Y1 Lf7 V1 A; [. f% _- o/ U
 N00097 N- s8 B" _( h& m# ^9 o
G01 X1 Y1 LFM
# d, H: N/ ?& T" \* }/ b N0010
/ g5 w' M5 V$ ?02 EM
6 J1 N' t% {+ F8 Q* h: c 2008381147.gif
2 i, Z. T: c% x图2 AutoCAD绘制零件轮廓
$ [7 I  F& ^" i" |5 结束语
5 [$ @4 a0 \+ R4 v* a4 Y1 [  由以上实例可得如下结论:
' c9 M$ W+ B2 A6 y5 T$ Z6 x' c  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;6 s0 d# ~; r3 R
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
" b# j0 I3 Y8 M; Q8 W2 h9 V  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
. a; j% a4 {  z: I- p  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
' \. s3 W, G, ?: g" {  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。, D" v6 x5 ]8 i7 _
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2026-4-5 11:40 , Processed in 0.147361 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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