若枫后处理论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7286|回复: 77

[原创] [原创]Mastercam后处理程序头部加入刀具信息

    [复制链接]
发表于 2011-3-2 11:52:57 | 显示全部楼层 |阅读模式

马上注册,学习更多后处理知识,享用更多功能,让你轻松玩转社区。

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

x
[p]为何要在程序头部加入刀具信息?
3 x7 e* j) p l2 O0 c" Q) l& K程序头部加入刀具方便使用者了解当前程序所使用的刀具信息及刀具使用顺序.同时增加了使用者对程序的了解度和可信度.对

[p]该信息对使用者帮助很大.
& e+ `# ?' z1 M) L; c 同时如有用metacut软件做仿真验证的朋友,该刀具信息还可以生成metacut识别的代码.在metacut里就不用再建立刀具,直接模

[p]拟仿真验证即可.可大大提高效率和省去建刀具的事情.还可以避免错误发生.
1 {8 q& n+ o) l0 }: j; C 至于metacut功能不在本次之列.主要用的人不多,就不讲了.

[p]该加入哪些刀具信息?
( o! L$ e* n& k) E% ~" m我们知道刀具信息有很多,例如:
3 c1 x% U# H: O5 c& R% n, E 1.t号   2.h值   3.d值  4.刃数  5.刃长  6.刀具总长  7.刀把直径  8.刀把长度  9.转速  10.进给  11....等等
$ X9 M0 P* h C: ]6 L 个人经验认为,在该信息中,最主要的几个信息如下:
" \' z% `2 O1 S; O 1.t号   2.h值   3.d值  4.刃数  5.刃长  6.刀具总长   
0 ]( }4 _+ ~/ T" D 其主要理由为当刀具的总长足够的情况下,刀把是不可能于零件或是毛坯发生干涉的,所加入以上几个信息足够用.

[p]亮点.去掉重复的刀具.参数可自己随意组合成适合自己的刀表.

[p]希望大家都能写出好用的适合自己的后处理

[p]下图是本人使用的.先晒晒

[p]

[p]

' ~# Q, h8 T* v- p5 O首先加入刀表参数
o+ S: V/ z* B" E4 S tool_table  : 1
r# x5 l1 K4 E" Y& H- I( }4 t4 ~ stagetool   : 1      
7 A9 _7 u3 L$ D0 t9 u% rtool_info    : 3[p]

[p]

[p]
2 i" _( F$ j6 V. b tcnt         : 0     
$ S+ @& p( F" @6 v) s: F; j* b6 e toolcount  : 1     
; y/ M6 P- }$ ~) f: ktoolcountn : 0     
& u% a. g0 b: K A$ S toolcountp : 0     
( |# u6 l- }/ S$ c* L. Htooltotal  : 0     
+ G' I; g- M( c' m( b8 A, C nexttool   : 0     
( G0 Q8 v4 j$ w6 l0 M1 N; ]) O counter    : 0     
! v$ D7 l9 g% |1 I4 |6 ?7 Plooper    : 0

[p]
# ]% ?2 v& K5 x2 ^# [$ t5 Z toolcountn = toolcount + 1   
+ c6 b" g4 e5 e. U# e/ k! Dtoolcountp = toolcount - 1

[p]

[p]定义数据类型和数据位

[p]
[p]

[p][hidden]

[p]fmt     2 slot                          
, B* B5 h5 L3 i+ B1 A fmt     2 tool_type#刀具类型
+ \( G+ b6 F4 e, d! cfmt     2 matl_type
: W2 a$ l4 A/ g, k: y8 g7 mfmt     2 corner_rad_type#圆弧角类型
" i( ^; U5 I/ [% jfmt     2 diameter#直径
* G9 E' ?& {1 u3 Q fmt     2 corner_rad#圆弧角
) N3 R* U) ~) Yfmt     2 threads#螺距(适用于丝攻)
+ L$ X. w* X* a( Z fmt  a  2 tip_angle#刀尖角度(适用于角度刀,如,倒角刀,斜度刀等..)
' d3 I' W% a" Z fmt     2 dia_off#d值
, d6 q( _7 A2 P% k4 {% T3 A# `8 B9 @fmt     2 len_off#h值
( k( y# G1 H2 | pfmt     2 tool_feed#进给速度
% E; {7 _5 i/ V fmt  f  15 plunge#快数进刀速度
; @; |+ L) b5 Z9 b/ efmt  f  15 retract#返回速度
3 ~' x) c- n2 G; m fmt     2 rpm#线速度
8 L z* F; J1 }# k8 O- ^ fmt     2 coolant1#冷却方式
; R! Z( `6 k- ] B+ O fmt     2 n_flutes$#刃数
, F8 n' w% N6 M1 J" F; q- Dfmt  a  2 tip_angle_ch
" M; c, _" h* n) v+ \# z/ |fmt  a  2 tail_angle

[p][/hidden]

[p]

[p]未完待续.....

 楼主| 发表于 2011-3-2 11:56:17 | 显示全部楼层

re:接上面.. fmt 2 pi...

[p]

[p]接上面..

[p][p]

[p]

[p]

[p]fmt     2 pilot_dia #缩径直径                  
' }0 h( c# T$ K4 z2 I6 z1 M7 Wfmt " 刃长 "    17 flute_len#刃长
8 v. E3 i! q- e" z( ~$ X2 `" [/ zfmt " 总长 "    17 oa_len#总长
- ~9 _& b* Z) {# z, S" `. B fmt     2 shldr_len#缩径长度
9 R6 |/ h# S0 P- _; r3 i: Gfmt     2 arbor_dia#刀具柄直径
* {9 l* d7 j8 T2 x# i2 @fmt     2 hldr_dia#刀把直径
% X9 q9 Z3 D) X' o fmt     2 hldr_len#刀把长度
* f" P0 e, D* R+ O9 x fmt     2 spindle_ccw#旋转方向
4 k/ c' _9 q! v fmt     2 sfm#线速度
4 x, O. s% R. K' Jfmt     2 fpt
6 n3 j# ^: l t8 {7 lfmt     2 metric#公制
- j; y+ |; ?. x4 d3 xfmt     2 imetric
0 k9 B2 d( v; e! g, p+ N1 u+ nfmt     2 tappitch#螺距
! @, C; d0 X2 n2 z& hfmt  f  2 tapfeed#

[p]fmt     2 cut_ability               

[p]fmt     2 step_r_xy
, Q8 o; R# P9 k& ~ fmt     2 step_r_z
& t+ h% R) _, ?0 E( F4 |fmt     2 step_f_xy
/ I+ {( \2 p3 L3 E3 _, Ffmt     2 step_f_z
& N1 C# m% ~7 j8 z fmt  td 2 tip_dia
, `) E5 ~( z! L) Gfmt     2 min_dia
% o" `' g. [3 U' k# lfmt     2 thd_ang

[p]fmt "d"             1   tldia$          # note format
( g A( U# b( U% ^6 G fmt "od"            1   oddia          # note format
- _8 g: `- u2 c: C! | fmt "m"             1   tapdia          # note format
2 \$ N" n P: a' X# i9 d. j- S fmt "inches"      1   itapdia         # note format
& Q) e! x D" }* E! S. _fmt "x"             1   tapthreads    # note format
' Y% I( p( {6 l6 B3 ofmt "r"             1   tcr$         # note format
$ W4 O7 G. X1 s% {fmt "a"             1   tip_angle$   # note format
' X. v: n1 ~9 ufmt "a"             1   tail_angle$   # note format

[p]snull     : ""         # null character string
' {" i5 [* n) p: t! z; q! z s sdot      : "."      # dot string
+ { k" W2 \- |: F, M0 x" j! w$ C stest1    : ""         # test string 1
3 T3 T/ S$ `/ l! j1 Cstilde    : "~"      # tidle string
% v8 p4 A' m% `1 R5 t! d snocomm   : "define tool names"
t1 x, e4 z- c5 ^, |stoper    : ""         # string for tool notes
3 E) L y# F0 B, }4 w2 w# x spostname : ""         # post name
/ R% N! K h1 c* p7 O snullop   : "undefined operation"

[p]miscvalon  : 0
/ Q0 N" }/ K3 ]. D+ V( y5 { pparameter$ # run parameter table
9 m! ^! p: k' Y, p            if prmcode$ = 15145, imetric = rpar(sparameter$, 1) #cutter inchesmetric type - 0=inches, 1=metric
# j( t" A! Z. J; B9 T R2 M            if prmcode$ = 15139, tappitch = rpar(sparameter$, 1) #tappitch
, |, T9 ~* g/ I% X7 n            if opcode$=13 | opcode$=14, result = fprm (opcode$)
* j @: Y1 J* G) o# d' X q" k5 O            if prmcode$ = 10000, stoper = ucase(sparameter$)
7 M2 c% @1 ^6 K$ e% a7 I1 i            if prmcode$ = 10055, spostname = ucase(sparameter$)
G; L1 O$ ]& S# L8 X8 N" }# h            if prmcode$ = 15182, miscvalon = rpar(sparameter$,1)
" H+ z& N& u/ P6 Q$ L           
* o+ c8 V$ M+ o/ m! d& I2 s            if stoper=snull, stoper = snullop

[p]pwrttparam$ #information from parameters
6 Y( O8 L# R2 ~7 ` ?0 B% f            if prmcode$ = 20004, slot = rpar(sparameter$, 16)
* l8 E' X. u z0 f4 f$ }7 @* I' ~            if prmcode$ = 20006, cut_ability = rpar(sparameter$,8)
. n% h5 ]5 z4 L& @$ ~            if prmcode$ = 20007, pilot_dia = rpar(sparameter$, 11)

 楼主| 发表于 2011-3-2 11:57:58 | 显示全部楼层

re:再接上面 找到psof$,在下面加入以下...

[p]再接上面

[p]

[p]找到psof$,在下面加入以下代码.去掉重复代码.

[p]      !gcode$
, E4 }6 b7 H; I. |% m( N S) Q       toolchng = one
1 b/ l- J# u; n0 M& Y" d       if ntools$ = one,
2 K+ S- }; |) S         [
" _0 H4 b& i# |# ?         #skip single tool outputs, stagetool must be on
* b1 {" L+ Q3 z8 `" G1 a         stagetool = m_one
5 r2 E5 B3 j( O; s         !next_tool$
: h. ]1 t( d( O         ]

[p]
$ A) Q4 a6 [2 ^& |% K& Q 以下参数是我自己一直用的.上面都全部用中文解释了一遍.就不再介绍

[p]

[p]rc4 : 1
' {! `- e$ R2 o9 D6 }0 N& O wc4 : 1
+ X, }5 t8 N- |3 ^9 t: D2 ^fbuf 4 0 1 0 0  # buffer 4

[p]pwrtt$      
% ]& Y% G/ E, D2 g/ V& h2 d            t$ = wbuf(4,wc4)          
% n. B% N3 q q( x& p1 P            if tool_table = 1, ptooltable,e$
7 z& e+ c4 y7 m            if t$ >= zero, tcnt = tcnt + one
/ @% j5 V6 e: p3 D" B. i$ F+ [            if use_g10, pwritbuf9

[p]ptooltable
9 y7 `5 R3 e& m0 a( b" V            tnote = t$
; }& K6 u4 L- l            toffnote = tloffno$
; W1 V5 W. `- @0 w6 a5 P" m            tlngnote = tlngno$
! `9 m5 u4 C1 s; t            tapdia = tldia$
0 |. K6 ^, [" H            itapdia = tapdia
- \/ o* U6 X$ z2 x( d1 r4 \& [            oddia = tip_dia
$ z" W0 e$ M% t2 U            tapthreads = threads
5 ^0 {5 @# X+ O2 R4 v" v            tip_angle_ch = tip_angle*2
0 N! v3 H& ~. P            tail_angle = 90-tip_angle

 楼主| 发表于 2011-3-2 11:58:28 | 显示全部楼层

re:再接上面 if t$ >=...

[p]再接上面

[p]

[p]             if t$ >= zero,
8 l0 ?) Q' B% {. `% d# v                  [
% F2 {9 f6 ]6 K6 R* ^: I                  # unspecified
% P" V+ Y- a" Z. k+ y$ N                  if tool_typ$ =  0, "(", *t$,  "-", *tldia$, "-", "unspecified", "-", *oa_len, ,*flute_len,  ")"   

[p]
& _7 U0 g7 L1 r4 t. }4 H) O6 ^                 # center drill
6 T2 c7 y7 L* F: h                 if tool_typ$ = 1, "(", *t$,  "-", *tldia$, "-", "center drill", "-", *oa_len, ,*flute_len,  ")"
1 q& l& X7 ?1 {' o+ t7 m" L                 # spot drill
5 I2 {0 ^8 ?' L5 p1 p: h                 if tool_typ$ = 2, "(", *t$,  "-", *tldia$,  "-", "spot drill", "-", *oa_len, *flute_len,  ")"
9 v: J# `: b4 o8 j( }7 A                 # drill
# q$ I h# a" [) g4 ~# A                  if tool_typ$ = 3, "(", *t$,  "-", *tldia$,  "-", "drill", "-", *oa_len, *flute_len, ")"
4 q6 q9 t/ m+ J7 E3 B# c! j! }$ x                 # tap-rh
# P4 H" J8 Z# Q8 U                 if tool_typ$ = 4,
8 B0 N0 k. y6 {/ B                    [
) @& I/ u3 {1 f7 t- u# z3 d0 g1 v# N4 q                   if metric = 1, "(", *t$,  "-", *tapdia, *tapthreads,  "-", "tap-rh", "-", *oa_len, *flute_len,

[p]")"
6 a7 j$ f1 l- r                   if metric = 0, "(", *t$,  "-", *itapdia, *tapthreads,  "-", "tap-rh", "-", *oa_len, *flute_len,

[p]")"
8 V, \1 \5 H3 ^, U2 O. k                    ]
5 E1 @6 g0 l; F* v- N4 c( o                  # tap-lh
, C: Z; I+ V" u D8 O( _. S                  if tool_typ$ = 5,
3 r' N* G# ~7 I                    [
: `# s, Y& k0 L2 N3 X* n                    if metric = 1, "(", *t$,  "-", *tapdia, *tapthreads,  "-", "tap-lh", "-", *oa_len, *flute_len,

[p]")"
" `7 @* e% E3 ^! L5 Y                   if metric = 0, "(", *t$,  "-", *itapdia, *tapthreads,  "-", "tap-lh", "-", *oa_len, *flute_len,

[p]")"
5 R$ G7 v6 C& g- f. r                    ]
, y! Y9 x: a7 b' f: L                  # reamer
1 T' }- f: g. T, N, ~                 if tool_typ$ = 6, "(", *t$,  "-", *tldia$, "-", "reamer", "-", *oa_len, *flute_len, ")"
/ ]6 v9 `# T( ]                  # boring bar
( E. M9 N N5 i2 i" C                  if tool_typ$ = 7, "(", *t$,  "-", *tldia$,  "-", "boring bar","-", *oa_len, *flute_len, ")"
/ }, x+ b9 {1 I$ G* M. K! B, Y                  # counter bore
3 r( K! r8 I3 N- \                 if tool_typ$ = 8, "(", *t$,  "-", *tldia$, "-", "counter bore",  "-", *oa_len, *flute_len, ")"
* e- V$ _5 k* N' h# k4 T& J3 K                  # counter sink
7 e, A7 S- ]' k& v) j                 if tool_typ$ = 9, "(", *t$,  "-", *tldia$, [if tip_angle > 0 &tip_angle < 180, *tip_angle], "-",

[p]"counter sink", "-", *oa_len, *flute_len, ")"
8 n5 j1 J; X o- ?. q, G( j4 [' e                 # end mill flat
2 q8 s8 \! c! ?5 I8 E                  if tool_typ$ = 10, "(", *t$,  "-", *tldia$, "-", "end mill flat",  "-", *oa_len, *flute_len, ")"
7 s$ X, h) I" k$ G& \                 # end mill sphere
. G9 b4 M4 X5 \$ F                  if tool_typ$ = 11, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle <

[p]180, *tip_angle], "-", "end mill sphere",  "-", *oa_len, *flute_len, ")"
( d, P4 C8 b" B6 X, K                  # chamfer mill
K# e1 s& I: s6 k% |* r# V9 J                  if tool_typ$ = 12, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle <

[p]180, *tip_angle], "-", "chamfer mill",  "-", *oa_len, *flute_len, ")"
. c# t6 t; a+ ]% w                  # face mill
/ Z( I. I m1 H' z5 n5 X/ r                  if tool_typ$ = 13, "(", *t$,  "-", *oddia, *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0

[p]&tip_angle < 180, *tip_angle], "-", "face mill",  "-", *oa_len, *flute_len, ")"
: U- q# Q! j- R% S) _0 r                  # slot mill
; C8 Z5 _8 K# s; n* c                  if tool_typ$ = 14, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], "-", "slot mill",  "-", *oa_len,

[p]*flute_len, ")"
n4 L; U: V+ W                  # corner rad mill
5 l, K+ i, A. I5 v W% F                  if tool_typ$ = 15, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle <

[p]180, *tip_angle], "-", "corner rad mill",  "-", *oa_len, *flute_len, ")"
7 }- M( t" V) X" `; F- W# ]) ?8 b                  # dovetail mill
" b* q8 `7 K1 v6 e! @" y% m( u6 W                  if tool_typ$ = 16, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle <

[p]180, *tail_angle], arbor_dia, "-", "dovetail mill",  "-", *oa_len, *flute_len, ")"
2 a% ^: E* [5 d2 z+ ^                 # taper mill
, B- A! g1 M: u8 P" h                 if tool_typ$ = 17,"(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle < 180,

[p]*tip_angle], "-", "angle mill",  "-", *oa_len, *flute_len, ")"
7 a6 G0 F- U! o1 D* R0 i                  # lollipop mill
X1 K- Z( R# i4 c; p                 if tool_typ$ = 18, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle <

[p]180, *tip_angle], arbor_dia, "-", "lollipop mill",  "-", *oa_len, *flute_len, ")"
; C) Q J" l2 _$ Z2 T0 L) q4 K                 # end mill bull
( C. m1 s& @9 _" y: f8 D2 w* B                  if tool_typ$ = 19, "(", *t$,  "-", *tldia$, [if tcr$>0, *tcr$], [if tip_angle > 0 &tip_angle <

[p]180, *tip_angle], "-", "end mill bull",  "-", *oa_len, *flute_len, ")"
, T, W% x& S% r, \* @% b6 H% i% }                 # plunge cutter
5 R7 D( m5 [+ r6 t' o. S$ y                 if tool_typ$ = 22, "(", *t$,  "-", *tldia$, [if tip_angle > 0 &tip_angle < 180, *tip_angle], "-",

[p]"plunge cutter",  "-", *oa_len, *flute_len, ")"
" E) f, t1 r$ e2 i                   ]
# g; |# Q9 M: k2 E+ M0 a                  

 楼主| 发表于 2011-3-2 11:59:17 | 显示全部楼层

re:以上为所有代码.如有不明,跟帖说明

以上为所有代码.如有不明,跟帖说明
发表于 2011-3-2 17:27:58 | 显示全部楼层

re:感谢分享,我不懂马啃,纯支持!

感谢分享,我不懂马啃,纯支持!
 楼主| 发表于 2011-3-2 20:33:46 | 显示全部楼层

re:526,527,706等行有非法字符,检...

526,527,706等行有非法字符,检查这几行的代码是否复制时有问题.
发表于 2011-3-3 17:49:57 | 显示全部楼层

re:这个一定学习,高手出品。

这个一定学习,高手出品。
发表于 2011-3-21 20:10:51 | 显示全部楼层

re:一时还消化不了,先收藏了。多谢。

一时还消化不了,先收藏了。多谢。
发表于 2011-4-5 14:20:48 | 显示全部楼层

re:這個真是厲害了點…學習學習…

這個真是厲害了點…寃習寃習…
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /8 下一条

QQ|Archiver|小黑屋|若枫后处理论坛 ( 苏ICP备11015087号-1 )苏公网安备32059002001368号

GMT+8, 2019-8-21 07:41

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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