QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 18795|回复: 75
收起左侧

[原创] Mastercam 2D toolpath 拐角减速及圆弧插补减速后处理

[复制链接]
发表于 2012-10-30 10:49:11 | 显示全部楼层 |阅读模式 来自: 中国江苏常州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
本帖最后由 ta488 于 2012-11-1 09:40 编辑
5 t+ t# a4 e+ i7 `, J5 r; r( {" `* a+ M& _" N( ~
UG 等其它Cam软件 2D刀路都有拐角减速及圆弧插补进给速度改写功能,Mastercam通过编写后处理可以实现,方法下叙。" [' i/ |( X! K) L0 c. s# \2 P# E
$ j( Y1 `" D) Y5 B! c, ]  d

- s( i5 q9 a3 H修改pncoutput       #Movement output  
) Y& a2 d# e: zpncoutput       #Movement output
8 f7 K8 b3 P& o' V; F#..................................................................................................................................................
+ w) D0 ]+ Q* Y( A      if gcode$ = one & mi3$ = 0, plinout
* h; Y0 n* r8 D; E      if gcode$ = one & mi3$ < 0, plinout_force_f
2 i% u5 d. I/ O( x9 C% y1 h      if gcode$ = one & mi3$ >0, plinout_corner_dec9 F- u, d' f- a# p
      if (gcode$ > one & gcode$ < four) & mi3$ = 0, pcirout' K7 a7 k0 g+ U& G% q/ d
      if (gcode$ > one & gcode$ < four) & mi3$, pcirout_corner_dec, O7 @0 J5 g( b' x) C
#.................................................................................................................................................% s3 G. T8 ^/ T0 J+ v$ n

- g# D- C; N+ f' h0 m0 p) S后处理末尾插入以下代码
+ h4 [2 I3 Y5 z& [#----------------------------------------------------------------------------------------------------------------------
8 b' ?- [! b/ d( j3 y& Y#功能说明
  _, F3 r- _( L2 N5 M) ]* B0 t4 G3 n4 [# 2D toolpath corner decelerate  #2D拐角减速及圆弧插补减速后处理
! m+ A  r7 B7 z7 g& h* h% f; t# Only support ABS. NCI point  #仅支持绝对编程方式8 p8 y9 i- T5 i  s
# support G02/G03 feed override, arcoutput$=1 #支持圆弧插补减速. H" i% q9 ~. C0 L$ U8 A
# Nonsupport post 3D NCI, Nonsupport post Ramp #不支持3D刀路,不支持螺旋插补
- s6 O! E0 x. g$ K0 R' u4 T#mi3$                  #mi3 进给改写,编程时在Misc values输入
4 @$ ]0 ?- m! D7 z                           #正值表示直线和圆弧都减速,6 I. _2 d4 o% i' I8 w1 l" @
                           #负值仅圆弧减速,
+ n) z% V, {( C# C                           #0不启用减速后处理。0 W9 g: I6 z/ e9 _+ G& S
#-----------------------------------------------------------------------------------------------------------------------# |0 f2 z7 m  q4 \2 e+ G
#用户参数
: ?  Q+ y, F7 y#min_distance : 5      # setting min_distance to break 直线减速距离,打断长度5  c) V) d% c7 L; F7 t% z3 `
#skip_distance :10     # to skip the line length small than直线长度小于10,直接减速不打断
1 D7 Y; b8 Y. o  q, V! L#small_r       : 2     # <= R2 use ov_f overiide feed  小于等于R2用Mi3参数改写圆弧插补进给
/ n: u* e3 F, K! `8 t#big_r         : 10    # R2<R<=R10 use 80% feed$ override feed 小于等于R10且大于R2圆弧用80%进给改写,大于R10圆弧不改写进给 6 W2 f: n7 D! ?
#-------------------------------------------------------------------------------------------------------------------------1 S* B) d- A( p7 w- I( F$ F% x
#作者信息
2 f1 q( k; U7 w$ E. X* D# Programmer TA   
! a( w( a, Q% u$ [' g# Version v1.0
' s5 k  J) W+ L! [# Date 2012-10
8 Q$ C' k4 e' k# 不明白之处请到博客咨询. Y$ q, P. J# Q& x
#Blog http://attao.blog.163.com
1 A3 ]/ p) c$ ~! f#请保留开发者个人信息,以示对作者尊重
* k1 M& n! O8 U) s#----------------------------------------------------------------------------------------------------------------------! Q5 k) a7 R8 k
fmt   1  x1    # line end point one
  C# B, P! _' X6 N" V' }/ Z% i! sfmt   1  y1     3 d4 C* U8 }. Z, ?- G
fmt   1  z1   
' X: P' a9 u1 g" M- n7 {2 l" yfmt   1  x2    # line end point two 7 i! d* n1 L: b. `( P
fmt   1  y2# w  |2 I# t' |' S' c5 w, g
fmt   1  z2
( Q) i# E/ I, k' ^, d#-------
! w! S2 d2 K8 h& @. B8 k  rfmt   1  xcenter         # arc data * G3 @% H3 Z2 o; b2 B, l) w% C
fmt   1  ycenter" K) E; }0 v0 C6 s" A0 e. y
fmt   1  radius, l8 u- G8 v0 m4 S& z& z) g
fmt   1  start
  l8 G' `, P: L; _7 M) X8 I- Ffmt   1  arcsweep
2 z# H6 V* ~' r1 q+ X# {, ?! k#--------
: m7 O+ e& E" j- X9 X/ Zfmt   "X" 2  int1x       # intersect point one (result point) + W& W" h- ]. c% s4 b3 N
fmt   "Y" 2  int1y
4 ?+ I% D) n3 N2 m. J/ [1 B" rfmt   "Z" 2  int1z8 B# b- r3 O3 u/ h2 P
fmt   "X" 2  int2x       # intersect point one (result point)
8 r! J8 n) c8 B" H. ?% {  [6 yfmt   "Y" 2  int2y
" y% }2 o- c* @; r( u  bfmt   "Z" 2  int2z
# i% u# ?" H- r% {2 n) |* r5 q/ [#-----------8 _8 q5 {7 D" X% W
fmt  "F" 15  ov_f
- R' U& _% X1 k# q4 f1 R8 {& Efmt  "F" 15  ov_f2
6 |) [" B5 z' j$ W#----------+ ~$ _( ^; w! T! j
fmt   1    min_distance' D+ N. N! p/ c& e2 [+ [; b
fmt   1    skip_distance
$ x4 W8 B4 x# D" J$ xfmt   1    skip_dis
; u  ~9 C* ~  d' c- d* ^fmt   1    small_R
' E+ ]' ^" v3 B) f' H$ kfmt   1    big_R$ F2 \' X0 J9 ]2 v# W2 a% [$ R6 Y

) p. ~+ r7 ~/ qxtol$   :  0.00001    # tolerance, default = 0.0001
5 f9 H1 f9 t4 N& [! mskip_dis :0           # Do not modify
+ v* X; Y- W: q6 |: f# o, O% Qmin_distance : 5      # setting min_distance to break
2 c2 g  ^, m, ^! M0 m- Mskip_distance :10     # to skip the line length small than! |9 P4 V( H& h7 y: Q& ?
small_r       : 2     # <= R2 use ov_f overiide feed( ]8 C) S! R! t# L$ H
big_r         : 10    # R2<R<=R10 use 80% feed$ override feed ' b- k7 |' K: S, L
plinout_corner_dec  # postline to set corner decelerate   ) `3 |0 X4 u* u- e
  
/ [9 g" A1 Z7 w! F0 O           ov_f=feed          #init. feed9 U, `; q$ F  ~
           if mi3$,ov_f=abs(mi3$)  # mi3$ override feed
% e5 [/ }6 I7 i3 v6 W: n2 R. V! _. Z  _; ^+ B! L' q! Y( D; t2 y
           ptnearx$  =  xabs  # near point # e/ |3 [; v) X+ ~3 V( N( O0 m; N
           ptneary$  =  yabs- u# @# [1 o: e; B; ]5 }  E
           ptnearz$  =  0$ \6 m, q# j4 a% w8 ~# p( {
           x1  =  prv_xabs   # line start point one
2 k) V! a) k* f7 _2 ?# d+ D           y1  =  prv_yabs
% c. q' B* y2 Q% A5 i           z1  =  zabs: {3 |7 H" j, \
           x2  =  xabs     # line end point two
% Q9 P9 B: P5 i. D; b" E  Z" G           y2  =  yabs
9 Z/ `+ u3 N+ z           z2  =  zabs% ^* D. r! z4 g8 @5 ]% Z$ u- m
           xcenter   =  prv_xabs    # findinter
4 K* W- L! ]  y2 m+ o: g( @           ycenter   =  prv_yabs
* N& Q5 J3 ^* j0 q& x6 _           radius   =  min_distance/ `9 l7 u+ H+ q% }0 r
           start    =  0
# V7 T6 Y# ~( o, i( m           arcsweep  =  360. q1 X5 c& y  w" Z6 @* m
           int1x  =  xla(x1,xcenter)          ' t6 U$ d% X/ K" ?+ U, b% j# }5 [
           if (t1$<0.998&t1$>0.002),skip_dis=min_distance/t1$
: M  [- E. |8 l) ]* ~  N, ]           if ((t1$<0.998&t1$>0.002)&skip_dis>skip_distance),pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc, pccdia, *int1x, *int1y, *ov_f, e$; ?* p8 u- `; U4 R3 X# a6 s
           # "(","intersect P1 ",*int1x," ",*int1y, " ",*int1z," ", " ", "startpiont ",*x1," ",*y1," ",*z1," ", "endpiont "*x2," ",*y2," ",*z2,*t1$,*t2$,"skip_dis",*skip_dis,"skip_distance",*skip_distance,")",e$ # only For debug
! U! S: H$ Z9 g* [          5 w- _3 S' \2 J: N* m
   
8 o: z' b' N$ j% y9 E# w           ptnearx$  =  prv_xabs  # near point
$ I3 R9 H* _  j, ~$ ?' q           ptneary$  =  prv_yabs. p. j' w9 m% i5 }2 G+ W$ U8 {
           x1  =  prv_xabs   # line start point one
! b$ x8 {1 E" V3 c  V           y1  =  prv_yabs
" J5 P. Q" v% W# O           z1  =  zabs
! @. v0 O" Y# B           x2  =  xabs       # line end point two
! [, I$ u) j9 C% d) H2 F9 d           y2  =  yabs- K$ F3 h; R! y9 ^% h/ H& |& x
           z2  =  zabs
; }+ k( r: B$ G" ^0 Y           xcenter   =  xabs    # findinter
- Y+ k! z8 T0 l, u! n           ycenter   =  yabs
- Z5 R! d1 O' w( b: Q0 Z9 O" H           radius   =  min_distance
: @; I! B" ]$ B           start    =  0
; O, @2 Q7 z/ D9 g: h           arcsweep  =  360
1 `3 x! c& N% ~; {           int1x  =  xla(x1,xcenter)
* e6 `  }8 ]: I8 m           , _2 J7 x: `1 n. Q0 J
           if ((t1$<0.998&t1$>0.002)&skip_dis>skip_distance),pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc,pccdia, *int1x, *int1y, *feed, e$
1 q& L) m- ]3 Z" }: v( X* @' f           # "(","intersect P2 ",*int1x,*int1y,*int1z," ", " ", "startpiont ",*x1," ",*y1," ",*z1," ", "endpiont "*x2," ",*y2," ",*z2,*t1$,*t2$,"skip_dis",*skip_dis, "skip_distance",*skip_distance,")",e$ #only For debug
9 ]+ D0 [: E  Y8 a* Y5 K7 s( x0 d& d$ Z# j9 T
           if (t1$>0.998|t1$<0.002), pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc, pccdia,pxout, pyout, pzout, pcout, *feed, strcantext, e$ # plung linout 7 o+ z8 c! k8 {# f1 m
           else,pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc, pccdia,pxout, pyout, pzout, pcout, *ov_f, strcantext, e$ #linout
& n. t* B* _6 B# J" ?4 j$ C         
' w: {7 k5 p, C+ J; y- X- [6 |+ s- ?9 e0 @& k# x+ M
pcirout_corner_dec # postline to set corner decelerate- L. b1 C$ h+ B8 L8 n; E% I( _
      ov_f=feed          #init. ov_f feed
. T6 r! Z' t1 o. v* z5 j9 V" K9 v      ov_f2=0.8*feed     #init. ov_f2 feed. w4 ]; |6 u  d& `
      if mi3$,ov_f=abs(mi3$)  # mi3$ override feed
6 R( x$ u6 h5 N3 _; D      if compwarn, pcompwarn
# h; Q/ {' s; y6 U' {% W, R+ j" x      if hel_2100 = one, pcirout2
+ W6 q" P0 E. n9 p0 G. X& F& T      else, pcirout1_dec
( T8 C: ]6 p# @/ k2 y' x9 Spcirout1_dec        #Output to NC of circular interpolation  O4 y6 J; o0 U9 q- @9 X4 u/ D
      if arcrad$<=small_r,  
. ?+ ~8 F0 v" w: E- q
      pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,pxout, pyout, pzout, pcout, parc, *ov_f, strcantext, e$  #,"(","r<=2,ovf",")",e$ #only for debug+ {) y& R( ?) I  r6 r# A: D4 K( b
      if arcrad$>big_r,    . ]8 c+ r* K4 @8 c+ w# J& @
      pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,pxout, pyout, pzout, pcout, parc, *feed, strcantext, e$  #,"(","r>10,feed",")",e$ #only for debug+ A" b3 |2 c6 n1 r/ Z& _+ M0 r
      if arcrad$<=big_r&arcrad$>small_r,
$ V* c* R5 q' x/ I) k( }" N
      pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,pxout, pyout, pzout, pcout, parc, *ov_f2, strcantext, e$ #,"(","10<=R & R>2,ov_f2",")",e$ #only for debug; R, r! r( D" ]! e! C, d* B
* C: G& b% k+ b5 b8 d) k6 |
plinout_force_f      #Output to NC of linear movement - feed                        
- }. F* P  c/ ~1 n        pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc, pccdia,4 S1 J, k2 X6 k& I+ S5 Y5 R. }. o7 e
        pxout, pyout, pzout, pcout, *feed, strcantext, e$
- w) i% L$ U9 n# U) G9 T
1.jpg
3.jpg
2.jpg

评分

参与人数 1三维币 +10 收起 理由
路过不买 + 10 好资料,感谢您对论坛的支持!

查看全部评分

发表于 2012-10-30 11:55:39 | 显示全部楼层 来自: 中国广东东莞
本帖最后由 sonkit 于 2012-10-30 16:44 编辑 3 b" I3 w6 ?7 `5 P' U6 i

. w! u, i/ u' Q& j% ZLZ强 ,  不错!  赞一个!!
( c" q4 ?. b+ ^6 g% H建议 LZ 改成杀气一些的名称:
   2D无段变速  ) x; K! P2 l& e9 R- U: p) I
; ]# Q5 N, h' I
! g/ l1 t7 {# |) a
Sonkita.jpg
7 S: T1 ^+ s- f1 p5 `) H( W+ I( h! a  L

4 p8 F1 u8 @6 o' y4 w/ K) \2 j# a) r! d
 楼主| 发表于 2012-10-30 12:03:37 | 显示全部楼层 来自: 中国江苏常州
本帖最后由 ta488 于 2012-10-30 20:30 编辑 2 s) y; I/ f4 a: ~( ^

8 h/ O( h7 d: Q% v1 \: `各路豪杰,请指正!
发表于 2012-10-30 12:04:42 | 显示全部楼层 来自: 中国湖北武汉
先顶一个,再来看细节
发表于 2012-10-30 13:09:50 | 显示全部楼层 来自: 中国台湾
直接複制會有論壇上的代碼......7 Q2 o* c3 b  S2 Z0 D' m  D8 r7 @
, J  P! G4 g( z% I" P% A; A- G) m
方便給個文字檔嗎.....怕複製時出錯8 K  m  L8 d+ F' E( _: J" i
5 ^' i# F$ T  m
謝謝
 楼主| 发表于 2012-10-30 14:11:27 | 显示全部楼层 来自: 中国江苏常州
本帖最后由 ta488 于 2012-10-30 14:16 编辑   }; C) h+ j0 q4 z( D" g7 @
9 L" U$ b- A+ i; S) }# P  @
董事长出来关注了,荣幸啊,附件为代码,还望大家狂顶

修改说明.zip

2.02 KB, 下载次数: 417

发表于 2012-10-30 14:18:20 | 显示全部楼层 来自: 中国上海
难得的资料,没有多少人会知道这些,3q
发表于 2012-10-30 14:29:26 | 显示全部楼层 来自: 中国广东珠海
很好的资料,谢谢楼主拿出来分享!
 楼主| 发表于 2012-10-30 14:45:28 | 显示全部楼层 来自: 中国江苏常州
呵呵,多顶一些总工、董事、坛主、富豪出来热闹一番:D
发表于 2012-10-30 16:49:05 | 显示全部楼层 来自: 中国江苏苏州
very good
 楼主| 发表于 2012-10-30 17:04:41 | 显示全部楼层 来自: 中国江苏常州
本帖最后由 ta488 于 2012-10-30 17:12 编辑 / ~& N2 `/ A$ f$ ?

* M' n. r4 I( H* rlixinqiou 对 您 说 : 我就找不出问题的所在,帮我看下呗。 查收邮件:已经发出。+ q# [" ~5 C4 H0 I! t
二楼朋友,够霸气!
2012-10-30 16-57-32.png
2012-10-30 17-06-53.png
发表于 2012-10-30 17:27:15 | 显示全部楼层 来自: 马来西亚
感谢楼主分享
发表于 2012-10-30 17:44:17 | 显示全部楼层 来自: 马来西亚
楼主能不能发个源文件1 w1 R+ H( E. C9 e
发表于 2012-10-30 18:06:05 | 显示全部楼层 来自: 中国天津
很好的资料,谢谢楼主拿出来分享!
 楼主| 发表于 2012-10-30 18:45:52 | 显示全部楼层 来自: 中国江苏常州
先贴源码顶出高手,后续再贴源文件,不懂得不要急,可以先贴贴“仓井空”之类的
发表于 2012-10-30 22:27:24 | 显示全部楼层 来自: 中国广东珠海
本帖最后由 lixinqiou 于 2012-10-30 22:29 编辑   q- ?; Z. k) J, Q1 L
ta488 发表于 2012-10-30 17:04 http://www.3dportal.cn/discuz/static/image/common/back.gif
1 q" E$ V/ z' e% p5 a6 S7 qlixinqiou 对 您 说 : 我就找不出问题的所在,帮我看下呗。 查收邮件:已经发出。+ p" F0 a0 }8 |4 O' F2 C
二楼朋友,够霸气!:lol ...
: w+ W$ @4 A. w3 ]$ I
$ }+ j' S8 G, @2 z( B- v& w9 V1 ?" H( J
楼主这才是真才实学,佩服之至!路过不买版主以后要多加分哦!
发表于 2012-10-31 00:08:05 | 显示全部楼层 来自: 中国北京
楼主人才。其实只需要修改数控系统里的拐角长度和拐角速率的百分比就可以了,如果怕修改软件出错的话,尤其对于我这种新手来说其实我不敢改软件里的东西,但是数控系统的参数我敢修改
 楼主| 发表于 2012-10-31 06:53:22 | 显示全部楼层 来自: 中国江苏常州
本帖最后由 ta488 于 2012-10-31 09:54 编辑 . Q& N8 P2 p3 p( ?  J+ Z; w
( j# Q, `* h% K8 n& p9 N4 S# B
楼上:是的,楼主所提是指Machine dynamics 、MC High Feed ,MC此功能很少有人知道。还有修改机床数控系统参数也可以实现,且简单,FANUC18i等高级系统都带有这样的功能。软件拐角可弥补机床系统未开通拐角减速,应用时应综合加工质量和效率,考虑是否一定要使用,使用最简单的方法加工出合格的产品便是最好的方法。
发表于 2012-10-31 09:46:16 | 显示全部楼层 来自: 中国广东珠海
楼主后处理程序的时候你的出现这个没,能不能弄掉它?
1.jpg
 楼主| 发表于 2012-10-31 10:26:09 | 显示全部楼层 来自: 中国江苏常州
楼主后处理程序的时候你的出现这个没,能不能弄掉它?
% j! j4 Z% O5 _& \7 D' D致命的是不可以的。一般的如图设置。
2012-10-31 10-22-57.png
发表于 2012-10-31 10:57:04 | 显示全部楼层 来自: 中国广东珠海
ta488 发表于 2012-10-31 10:26 static/image/common/back.gif8 Y+ q" E7 P2 Z8 w
楼主后处理程序的时候你的出现这个没,能不能弄掉它?
( i- [8 p) F; B/ `- c; t4 `- n! l致命的是不可以的。一般的如图设置。
: v) c' L7 G: F$ ]
改过了,估计是后处理文件有设置这个,把这个警告屏蔽掉,后处理本身没问题可以肯定。
2.jpg
发表于 2012-10-31 11:28:12 | 显示全部楼层 来自: 中国上海
先顶再看
6 Y% Q/ @. x8 {. p6 X( K) c
 楼主| 发表于 2012-10-31 13:17:28 | 显示全部楼层 来自: 中国江苏常州
你安装的是不是 X6mu2 ? 是的话升级后处理.
发表于 2012-10-31 16:11:39 | 显示全部楼层 来自: 中国广东珠海
ta488 发表于 2012-10-31 13:17 static/image/common/back.gif
$ A$ L* S7 P4 R" [( [" d你安装的是不是 X6mu2 ? 是的话升级后处理.
, b0 {" w& _/ J1 J
正是X6MU2 64位。刚刚升过级了,问题依旧。照说你用的没问题到我这应该没问题才是,汗!我自己也去研究下,楼主再关注下呗。
3.jpg
 楼主| 发表于 2012-10-31 20:58:53 | 显示全部楼层 来自: 中国江苏常州
警告找到原因是少了,三个逗号,按上图修正。
2012-10-31 20-49-27.png
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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