找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 254|回复: 0

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

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

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

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

×
1 引言1 L$ e0 y* R7 E$ V& r
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。$ y' _6 ~; {& l2 J
2 系统的框架结构和功能
) e. q! [" x3 J" d- ?  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:. V) Y# I4 D/ r8 D- g
20083811346.gif
3 L! @7 g, i' V1 q* [& D图1 系统总体框架结构
% ?% B4 P! V! ^  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;  ~  O9 n1 k- |9 }- j$ Q+ E
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;' {# l8 f( j6 g) ?
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
$ X8 h# v2 j+ V/ i6 G; N/ n  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
* ]4 x* s, N" Q* B3 G  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。; n+ Q$ G8 F7 b# Y  U  e- N
3 软件设计过程5 x& U2 f' _( _6 s$ J
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
% u8 D; _2 R# i" d: H  (1)实体数据类型变量定义
1 B" @2 q' u9 V& ]. `  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即+ U2 B. }# ]' v- @3 Y
Type ENTITIES-TYPE
8 s+ g9 f6 H8 f( g; Q′实体形式数据类型名:
, |3 Z* e/ ^' p( ]1 ?2 x5 n  ENTITIES-TYPE;
9 e3 m. Y! ^) J. M; i  STYLE As String
3 d- A" ?9 d9 M9 V′实体类型变量(其值为LINE,ARC,CIRCLE);
: s! t3 n0 a9 B/ E" K* X  X1 As String
) x& B% c7 e# g/ X′实体的起点坐标分量x;
& V! f! B1 r: c  ^  Y1 As String# P% B: R- i: N" t! s( a1 |
′实体的起点坐标分量y;
- A) n) d/ A2 z% O9 R$ P  X2 As String# @, Y+ i' T% {
′实体的终点坐标分量x;" q" n4 T; f" I+ a+ Z( E5 z
  Y2 As String2 Z9 a# x0 K, z  B% l7 W
′实体的终点坐标分量y;
! a$ g1 x; k6 d+ k9 b$ Q1 P  X3 As String6 Z% K/ v+ _" }3 h
′实体(圆弧或圆)的圆心坐标分量x;: d- i6 R, f7 C/ G
  Y3 As String: l5 U! C7 f/ h" W, n
′实体(圆弧或圆)的圆心坐标分量y;1 A7 K, |1 r$ c- B( L' s
  R1 As String* e; z. f# R: r3 a+ Q8 R6 _, |
′实体(圆弧或圆)的半径R;
+ V6 v- [# [' G; w  WISE As String
2 X0 M& O. t/ q6 d4 X- m" T9 l′实体(圆弧或圆)的顺(=0)、逆(=1)方向;- C4 h, d5 F" m
  ANGLE1 As String
: r2 y! W, W# f$ p. I) e; \′实体(圆弧或圆)的起始角;
: q$ c! P3 H. S  ANGLE2 As String
3 l6 D1 Q1 X. O6 c: b′实体(圆弧或圆)的终止角;
4 a# b( B- q8 E$ N+ I6 oEnd Type$ L4 Q* C( J! u0 K4 c  `) U
Global MM(200) As ENTI-
$ V0 g! r; O- b& ETIES-TYPE
! ^; h$ ]) Q+ R9 z/ x7 [0 ~′定义一维数组MM全局变量,其元素为ENTITIES-TYPE/ n. E: n, O; X
′型变量,实体数目最多不能超过200个。
  z5 n+ L0 b4 x1 \  (2)DXF文件的读取程序
8 \2 |3 m) c4 L" H) l, a4 A  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
1 f! d8 S3 I0 c- _2 a- a  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。; x) O. v$ e& \1 W! p- v/ ]
Sub DXF-IN 0( m4 Y$ d; W+ @3 l& \# M6 T
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
* F" Q3 V1 ~) WOpen FILENAME1 For Input As #1
/ r, l% c1 ]3 J" k, y8 e4 a, X  Do Input #1,B& _$ E# }4 k* c4 g
  Loop Until B=“ENTITIES”( v4 ~! ?2 {2 I6 b3 F, L
  Seek #1,Seek(1)
1 a- y' @. x& \' g  Do While Not EOF(1)
4 G+ S8 [$ M# ^9 Q   Do Input #1,B- [' K4 e, |7 s7 U
   Loop Until B 〈〉“0”
! [2 g! L& P& w6 E   i=i+12 `6 e- M5 v, e( X7 o
   Select Case B9 O/ S1 g6 B: s7 q' Y  T
      Case “LINE”$ t( h4 v: c/ [6 @0 N
       INDXF-LINE 1$ E% W/ i9 p5 Q8 S+ z1 x
       CC.STYLE=“line”% H/ z, u7 D: q+ ~4 N
       CC.X1=Str$(x1)
9 C, j+ I9 X! ]       CC.Y1=Str$(y1)% K3 D; {& ]& X( y- C. p
       CC.X2=Str$(x2)' A( k) Q( l: A, X) M# t
       CC.Y2=Str$(y2)& C4 M& D, P) D6 m. e9 a1 _
       xx1=x2
  n1 G6 g) n% ]7 s' A+ o     Case“ARC”
$ C1 @3 k, u# f+ C% X8 v4 O       INDXF-ARC 1& J9 K$ ?, q, F
       CC.STYLE=“ARC”9 P4 i  ~6 k) g# {, b1 |
       CC.X1=Str$(x1)
* ?' Q, y  h' a       CC.Y1=Str$(y1); }" N, G1 O& a
       CC.X2=Str$(x2)
; J7 h* c* m& U0 p* Y; x2 h6 W) W- b       CC.Y2=Str$(y2). C, }) L7 J1 G* Y, K  L
       CC.X3=Str$(x3), G/ O. L3 `( p9 R5 F$ X. W
       CC.Y3=Str$(y3)' s, J3 d* p4 b+ y5 T6 a  o# K
       CC.R=Str$(R)
8 S. p, \4 F. O  @) g       CC.ANGLE1=Str$(ANGLE1)
+ u$ S6 c+ p6 n' J5 \; u& B       CC.ANGLE2=Str$(ANGLE2)
0 v" M! C+ c+ A' U- s2 @  n       If Abs(x1-xx1)>.5 Then
( U  M9 P( X+ q/ |3 `5 b; E' p% @: ^. K        CC.WISE=“0”
' A  ]9 M% F5 K. ~% c        A=CC.X1:CC.X1=CC.X2:CC.X2=A
; b3 O8 z6 @" A$ T8 ^( o8 o        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A6 j6 q0 @! r6 k( A  C
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
2 ]( P# T) @9 J/ @         Else CC.WISE=“1”* a8 _0 A* u2 w, r
      End If xx1=x2
0 b+ k3 }, N8 Y9 M: K# Z    Case“CIRCLE”6 V1 v! ~+ o0 R1 R2 R: j5 z
      il=il+1
6 q* c- {& q% n0 _# y! V, J      INDXF-CIRCLE 1$ H4 ]: d% U  s. `- K7 y
      CC.STYLE=“CIRCLE”
( h" \( P2 G. N. {* C0 \8 Z      CC.X1=Str$(x1)6 z6 D  F7 w3 r: n. y- y0 }
      CC.Y1=Str$(y1)
, n& ^/ J; \4 i8 z& e      CC.R=Str$(R1)
9 b3 m6 ?1 n% r4 V5 S  P      CC.X2=CC.Y1
. \- `* s3 F+ Z2 _      xx1=x1& Z! `* \2 U/ B
    Case“POINT”
3 c- n2 Y% R, p' q. l      INDXF-POINT 1
5 K; G4 z  ^9 T      CC.YSTYLE=“POINT”
5 X3 A( O$ D$ T' ~) ^: t. o      CC.ZHX1=Str$(x1)4 o, y2 r9 G6 k$ n
      CC.ZHX2=Str$(x1)
2 f0 y/ F8 E8 k& @' N7 O. \$ q      xx1=x1
. G3 m3 b' M, g# w. H8 C3 b    Case Else
) D% i7 k$ U8 m5 ^3 s" L      CC.STYLE=“NONE”
3 L& A! ~8 s) ?* Y; R/ w7 P+ D4 ~1 K End Select
" I5 `1 l, v* N6 U7 J3 ]* f Seek #1,Seek(1)
  A: o4 j& G; G, r: R. u3 L8 A j=Str$(i)
( Q" w! I( T+ W5 Z6 jLoop. Q+ O- |! J( |/ Q9 p& ?+ j
Close #1% V0 ~- y+ f5 Z; R
End Sub
0 o+ r0 S' k& a" g! F! i  其它模块的程序设计不再赘述。4 U6 O) c" l. Y
4 实例- ]* C6 V% B2 T9 ?- ~
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。% E9 M: p7 l8 H, t; H
 N0001
$ L. ?: X& V$ B5 v4 mG90 G92 X0 Y0 S500 M03 LF4 _9 A' N: ~% K
 N0002
( \$ {: F, x* O2 @  K: @G01 X1 Y1 LF' ~% h& T4 E9 U; g; m) e
 N0003
& H2 `3 Q/ L- A- R6 YG01 X1 Y61 LF
# x2 m* T% g/ f6 H& d4 i, T: Y N0004
* Z# ~  L* R5 Q7 P+ z/ W$ c2 h* V7 xG01 X41 Y61 LF
7 c# M- g) K3 g& d( Y* F5 V  ^ N0005
5 j) M; N- w7 Q9 w# J0 hG02 X61 Y81 R20 LF
8 S4 B% c( u6 w) v N0006
  z3 l5 f+ B" p+ VG02 X101 Y81 R20 LF, V" w. W# `* O  s
 N0007
) c3 G: P! E6 p9 s8 |0 KG01 X141 Y81 LF
  O% {8 Z7 b( G& k N0008
" y- P1 K4 k. Y, ^G01 X141 Y1 Lf
, i0 ?, w1 l* `9 B N0009* s) V) c- L, d+ n& W7 k
G01 X1 Y1 LFM
0 o) {- s  y, E! O8 i, i, N/ K N0010
' n  k/ T+ |2 h02 EM
  A$ n0 n/ R% k% X 2008381147.gif
8 }# _5 N5 s8 p# a' {7 e6 G图2 AutoCAD绘制零件轮廓
: `* q) C8 r( m% r' x5 r5 结束语: o! H5 b. Y; z; H
  由以上实例可得如下结论:& E: m# w6 B; {- _( C- D! ]7 Q* ]
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
  U, l+ y1 {# k  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
% [6 V" |7 r' A% T0 c  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;+ I( h# B+ M' m0 N, N% n3 m
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;- _3 s' w& }3 V
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。9 N+ Y0 r0 f& O: {7 f; q, f
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-4-2 19:02 , Processed in 0.167190 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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