找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 233|回复: 0

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

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

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

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

×
1 引言6 z! Q9 N, I2 \# J
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
  f; e, B1 t& ?! D2 系统的框架结构和功能
* R0 J3 T- |1 h. ^* w5 P* w# E  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:9 ], d# `- R/ R0 Z
20083811346.gif , X2 h! W1 n3 y/ N5 D5 m
图1 系统总体框架结构; K4 \. [8 p0 K
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;8 y1 q1 [5 K! J  b1 E2 l
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
" b, z- @. s; n0 N, \% p  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
( m! b$ t: U8 @0 P0 y" H  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
8 Z' X% S' T$ ^' [* P+ Y  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
9 f0 {& Q' s5 b; `( n3 软件设计过程
$ ]/ W3 L3 x8 i- v5 K% I! ?  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。- U! M1 h: I" v' K
  (1)实体数据类型变量定义
( N% {5 E9 R# d+ M3 S  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即/ z& l- ]. k  [; j) N/ [* d; F
Type ENTITIES-TYPE
+ [/ Y5 w7 B9 R0 L2 ?& H  c′实体形式数据类型名:
5 Y# ^( {8 c; {* K; \& v1 b; |! h  ENTITIES-TYPE;' f3 ]" f' w  h; A" i
  STYLE As String
+ ?2 D. j/ X/ P7 V; m; A′实体类型变量(其值为LINE,ARC,CIRCLE);+ l0 v- m% H9 P' S' k* s8 |; w5 D
  X1 As String- m3 O. b. A+ M: L' m
′实体的起点坐标分量x;
0 S0 ?8 W$ A* C8 N( D  Y1 As String6 e" i' h$ Y) K
′实体的起点坐标分量y;
% A' G" I; n3 f3 c) H) U$ K  X2 As String& E. H7 D, n3 m$ Z2 G9 O" i
′实体的终点坐标分量x;
) X8 r/ G: ~" ]' Z9 R# ^, \7 |/ @  p) M  Y2 As String8 \5 i! Z9 `6 |6 @3 q6 ^
′实体的终点坐标分量y;
  W2 q5 U7 }8 X  X3 As String
' J5 f6 s5 n  D7 g+ k′实体(圆弧或圆)的圆心坐标分量x;
  e- @" x7 q7 o! K% @  Y3 As String" a; h, v. s. Y! J# y+ k
′实体(圆弧或圆)的圆心坐标分量y;7 b' o1 ~7 Z. D" `. B6 [
  R1 As String6 `' y$ A7 R0 \! T( s7 {
′实体(圆弧或圆)的半径R;/ y- S, b& K+ I9 L5 w' w& y4 Z
  WISE As String5 ?' a( k( P, L4 {3 J/ W8 W
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
( H% Z. b( |" U  ANGLE1 As String3 w  k+ \9 A) P. ?6 T$ n: q+ ]
′实体(圆弧或圆)的起始角;+ F( Y. H/ r: h" |* H- @4 v+ H
  ANGLE2 As String8 y! B$ V) K8 _/ O' `- b
′实体(圆弧或圆)的终止角;( R0 |& A4 Q* l4 [( M9 `% D
End Type
% L$ |. H2 z! j) pGlobal MM(200) As ENTI-
) l! J% {# V" a6 U4 ~TIES-TYPE
4 i. u& O- _' I) s# H% W′定义一维数组MM全局变量,其元素为ENTITIES-TYPE% e% f9 p+ M) t- W. e
′型变量,实体数目最多不能超过200个。% z; B( v  x4 ?8 j7 N
  (2)DXF文件的读取程序
2 [% q$ Y- Q* a  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。; Y9 k" Z# ~, W8 Q, v
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。
$ r6 L# U3 ^) Y8 C3 hSub DXF-IN 0
; N4 R$ V9 B6 RDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
$ \) m* y1 ?! R' g% b" g& lOpen FILENAME1 For Input As #1
& _6 p: x% b# L2 |! I' \  Do Input #1,B, O9 R9 y) ~& D% y, Y0 ~- `
  Loop Until B=“ENTITIES”6 A; U* V" e, P; Y; ~3 ~* Y
  Seek #1,Seek(1)
! }) i5 o% Y. M* I1 z2 C* ]; k  Do While Not EOF(1)
7 {2 H4 U! U/ g9 k% Q5 ?3 D& U   Do Input #1,B
7 U% _& G% {: P6 g; K0 x$ a   Loop Until B 〈〉“0”
$ \7 ]3 G! y; A' V( m$ l* }   i=i+1! e! {! }# I  U3 a7 s
   Select Case B
* T% O9 L0 C; p      Case “LINE”
/ u7 |- y+ \5 P/ ~5 N       INDXF-LINE 1
' r" U( g7 {$ ^) t7 U5 M       CC.STYLE=“line”$ _& r, V) E( J5 N4 q
       CC.X1=Str$(x1)) I& _0 w: Z$ z- Q4 q4 b% U! V, Q
       CC.Y1=Str$(y1)
7 N) b5 H' K1 ?' a  k4 t1 t: G       CC.X2=Str$(x2). k$ C5 Z3 h; f* N+ y, O
       CC.Y2=Str$(y2); p. K# h; {" N
       xx1=x2
+ w, m- l; `& N  m8 G     Case“ARC”* q# e) {# |  t% w5 K0 |
       INDXF-ARC 1& k# l( l" y: f' Q4 [: Y
       CC.STYLE=“ARC”
% ^* H2 b) ^1 y: q2 |       CC.X1=Str$(x1)3 t9 q8 N+ K) K. I3 r/ S" n
       CC.Y1=Str$(y1)
, g5 v  G3 i! ^; ~, q3 I       CC.X2=Str$(x2)
& d5 o) m  ^4 T! e) Z       CC.Y2=Str$(y2)
  ~" b4 M/ H/ H/ a4 O       CC.X3=Str$(x3)' V4 A# E/ q3 A/ b0 Z6 p8 c
       CC.Y3=Str$(y3)
& }" j& z% @3 I4 U       CC.R=Str$(R)4 C2 [) K* g. p$ o; m+ J
       CC.ANGLE1=Str$(ANGLE1)2 P3 J- U7 n3 ^2 H8 C) V
       CC.ANGLE2=Str$(ANGLE2)
' M! M* G6 D9 V" R9 @, f7 Z3 Y       If Abs(x1-xx1)>.5 Then, ^1 u* r: w1 i6 o
        CC.WISE=“0”
. {% H: {7 m6 A6 g% Y' t, P( Y        A=CC.X1:CC.X1=CC.X2:CC.X2=A. O; G  [/ g+ s* k' W
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A  r9 O* b/ X( H6 \
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A9 t( M) r$ Z& f9 t. K2 }. I! \
         Else CC.WISE=“1”
3 H2 W. L# M' o) j# k      End If xx1=x2
6 R! m+ ^) W" I7 {' S$ e5 J% g! V    Case“CIRCLE”- y0 X% ]: X/ B# i) d9 G$ V" }5 l
      il=il+1
8 L# q9 C- {' }/ @7 B5 H      INDXF-CIRCLE 1* G+ M+ F$ b' I3 U1 D
      CC.STYLE=“CIRCLE”* {3 I- R+ _8 R7 w( s7 H# w. E; {
      CC.X1=Str$(x1)
7 P) H2 s  }% n4 t( y( C& h& a      CC.Y1=Str$(y1)
! S% u- E* J& w; n      CC.R=Str$(R1)! s* T+ Z- i  ], `* F& i$ K" y
      CC.X2=CC.Y10 v7 r6 n! O1 x
      xx1=x1
5 f$ @: x1 S3 J- V4 x5 y    Case“POINT”/ J0 Z2 @4 o0 m, c* ?! b
      INDXF-POINT 1' u9 l8 q& X% M! B9 y  N9 z
      CC.YSTYLE=“POINT”: X2 T: f. I$ }, {1 j# l8 H" x, z
      CC.ZHX1=Str$(x1): _+ G' o) G8 Y2 k( {
      CC.ZHX2=Str$(x1)% `% ?! |2 ?+ c$ K8 d
      xx1=x1
& [, T  j# D; |; r0 y9 J5 w    Case Else* }$ ^) u6 f$ Z* `6 w+ A. H  Y* ~
      CC.STYLE=“NONE”
* F. B9 k0 I6 ^% @; H, p9 A End Select) L! F  X! \% ?; a! G. ]8 K
 Seek #1,Seek(1)
9 n$ ?0 ]$ j. B' n j=Str$(i)9 P; c: A) K+ }. M
Loop
* g! I' X; ]: O( |4 }) P0 YClose #1) c$ H9 b6 M% J; R2 j/ @7 l. e
End Sub: v, ]: Y9 m" A$ Y- \
  其它模块的程序设计不再赘述。
3 y% J  j& Q0 b, T4 f4 A$ @4 实例5 l- S6 ]2 O' N
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。" k7 m1 I; G2 I# t9 e# S; |
 N0001
3 `6 ?8 ]4 G( |G90 G92 X0 Y0 S500 M03 LF
3 g3 s: Z4 G$ C# n1 ?3 I2 Z N00027 N; X; Y4 m" F
G01 X1 Y1 LF7 i, F% @1 k& R+ K, Y
 N00036 G; P& v$ X7 |3 S! A5 o4 C* ]
G01 X1 Y61 LF
1 h7 E, k& \6 W9 |5 W+ E N0004* d  R( m' Y' y( m/ j( O$ H! n, }
G01 X41 Y61 LF
7 E! ~5 G/ p% ?8 k N00051 ]7 k) C* \& _; n& O& l1 D
G02 X61 Y81 R20 LF
* c5 k1 K# u, o9 k. z# `3 x9 z; @5 U N0006* T- K8 N- s6 c) X" R
G02 X101 Y81 R20 LF
4 |5 x9 W$ D. c5 R2 ]2 _( a! ?' v N0007" O8 C6 ^. w7 r7 o7 t  J
G01 X141 Y81 LF
- c% o2 u& c. G/ q  F N0008
2 Z( Q% d+ g& U* iG01 X141 Y1 Lf
) E+ }  J( H2 }* J N0009
' m% M& i7 h% s* p1 `G01 X1 Y1 LFM
8 C, ~) X3 D& W/ O4 x, ] N0010
. }8 w) c' Y: D1 f02 EM, W. p7 ?- k# F/ k
2008381147.gif
) q4 {2 R1 V% R0 U! _图2 AutoCAD绘制零件轮廓
* h! `' T, n- x1 E5 结束语
( y+ d1 F9 \* Q- }: i1 m1 Z; S( v  由以上实例可得如下结论:
0 y+ @) p9 k1 n- j$ C  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
: {' Z3 S4 M) m  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
7 T; t0 X: I) c6 v/ B! a/ F7 D& ^% Z  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;! {9 Q' c% O2 k  m
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;& a# s- G# ~- W1 G, x* N$ C
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
. c* |# h: W' v4 k文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-2-19 06:36 , Processed in 0.138610 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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