若枫后处理论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 100|回复: 2

[原创] Mastercam后处理程序头输出加工时间--纯代码版2

[复制链接]
发表于 2022-11-14 22:22:51 | 显示全部楼层 |阅读模式

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

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

x
Mastercam后处理程序头输出加工时间--纯代码版方法。
此方法由官方提供,其原理利用了mill.set文件及buffer的方式来实现。
实现的原理及过程如下:
首先利用后处理调用mp.dll及mill.set,获取加工时间,并把加工时间保存为doc文件。
其次正常后处理程序,并向后处理中写入一个标志字符串。
最后再后处理运行结束前利用buffer重读nc文件,并搜索标志字符串。
Mastercam后处理基于钻孔开发测头(探针)源代码
找到标志字符串后替换标志字符串,并回写刀程序中,即可完成程序头或任意地方出加工时间。
) g" Y0 c7 n. S8 p/ j/ J4 T
                               
登录/注册后可看大图
( e2 J  N( H. z5 ?7 k/ C1 R

1 j. ]: p& J2 t' r/ r+ |* I
1:定义各项数据
# Define strings used in building up the command line parameters for the DLL call
  1. sspace    : " "     # SPACE character
    8 h9 X# G7 E/ K. o. P
  2. ssq       : "'"     # Single Quote character1 p1 v" f9 w' j6 G
  3. sdq       : '"'     # Double Quote character; L4 x. \! ^; F+ u1 Q4 C
  4. sdoc      : ".doc"  # .doc extension
    5 C" J6 Z% H! y% K4 m8 R$ v
  5. spath_in  : ""      # Will be the "path\name" of the NCI input file
    0 w9 a0 Y# S7 d: }4 ^  @6 F9 f
  6. spath_out : ""      # Will be the "path\name" of the DOC output file
    5 q+ c+ n* c* L  ~- I
  7. sparams   : ""      # Will be the command parameter line passed to the DLL
复制代码

0 d! N: [! p% p/ g% U& w
$ }' M3 H+ R& L! }5 _! M
Mastercam后处理 3+2刀尖跟随计算源代码
2:定义mp.dll文件路径,此路径可用绝对路径,也可用相对路径
  1. sdll      : "D:\Program Files\Mastercam 2022\Mastercam\apps\MP.dll"  # Name of the .DLL to be called - update path as needed
复制代码
& \6 j3 N9 o# \

7 Z, m$ b" f8 G8 h* ^
3:定义mill.set文件路径,此路径可用绝对路径,也可用相对路径
  1. s_setfile : "C:\Users\Public\Documents\Shared Mastercam 2022\mill\Posts\Mill.set"  # Define the path and name of the .set file to be used.
    - I" I  {7 [0 A- q1 a7 H
复制代码

5 \! V2 A7 b- f) U& q0 f
+ n* m5 _) [7 r& q2 P6 o) v8 d: g" A
4:定义保存时间数据的函数
  1. # Define strings used to read cycle time from .set output and write it to .pst output
    ; X( R7 U& }9 Y) o  f/ O& d; g) l
  2. set_time    : ""   #String to hold cycle time read from setup sheet output - entire line from .set output* v  u$ G5 `+ y* N2 I* B
  3. scycle_time : ""   #String to hold cycle time read from setup sheet output - time only, prefix stipped from set_time string
    9 {% v; e2 ?' K5 c5 x
  4. scycle_time_out : "(cycle_time_here)"  #Keyword - This will be output where cycle time output is desired, then replace with the cycle time during ppost$.
    2 d2 W9 |$ V; W% r6 @' \
  5. ! A5 j3 y( F. H3 [6 {+ I3 k/ z
  6. loc_found   : 0    #Flag to indicate that cycle time output location has been found.
复制代码
; `4 z3 {) J1 U
3 G+ H  n: U7 o7 p% D. ]/ U
5:定义buff1数据
  1. # --------------------------------------------------------------------------
    3 l. I3 F; B) x
  2. #Buffer 1, Doc file created by setup sheet
    : _$ w) h$ [5 W5 r- F
  3. wc1           : 1       #Buffer 1 write counter8 O# \% p/ e8 p9 |7 X
  4. rc1           : 1       #Buffer 1 read counter7 W) X: L7 c! T+ n
  5. size1         : 0       #Buffer 1 size
    2 B! @# E2 M1 y9 x9 a7 d
  6. string1 : ""            #Buffer 1
    4 f* }5 h4 }( T  b1 U
  7. fbuf 1 0 256 1 1        #Buffer 1
    3 Z2 Z6 i& ]* Z( H
复制代码

, D+ H& K4 q' w+ S$ T) H8 I% }& J4 Y* A. [
6:定义buff2数据

  1. / a  M5 m% X5 u4 Y
  2. #Buffer 2, NC file after posting
    & I: Q# i5 m& p/ B3 |& W8 X# m
  3. wc2           : 1       #Buffer 2 write counter
    4 i$ D  ?) q4 F% e' g) s/ H
  4. rc2           : 1       #Buffer 2 read counter
    7 ~5 a$ F2 o6 \: ]+ N
  5. size2         : 0       #Buffer 2 size& @( h4 P1 e& P# E4 p
  6. string2 : ""            #Buffer 2
    % l+ l1 n8 d  h7 ]; f
  7. 6 ~) o: f  M6 l4 x7 ?
  8. fbuf 2 1 256 1 1        #Buffer 2; b. o0 T! l) \2 e; k2 L4 M: n: P

  9. 7 O, g, x- b' D6 z3 P9 _
复制代码

$ X! w8 d1 d% y) F  R% U! T
0 e. S' D* l1 R; p( g# \
7:在ppost$下完成整个加工时的获取,输出,回写到程序中
  1. ppost$ # This posblock is call AFTER all the files from the PST run are closed!1 U) a1 M: N9 c  u: w$ u8 A
  2.       spath_in = spathnci$ + snamenci$ + sextnci$$ d7 L; R" G- _5 @# B, W: S0 }
  3.       spath_out = spathnc$ + snamenc$ + sdoc
    + z# w* ]$ y7 Q: j
  4.       sparams = ssq + sdq + spath_in + sdq + sspace + sdq + s_setfile + sdq + sspace + sdq + spath_out + sdq + ssq
    * z. A% |* g1 O3 q
  5.       result = dll(sdll, sparams)( L' T: z1 V) I# ^3 [
  6.      sbufname1$ = spath_out 5 |0 }6 F2 j) F' \; _9 z8 ^
  7.      size1 = rbuf(one, zero) ; {9 k) G# x, ~
  8.      rc1 = size1
    * d% E' t& ?- T+ N+ `3 {( Y+ f
  9.      set_time = rbuf(one, rc1)
    7 s: d8 _' ?+ z9 l
  10.      end_str_ix$ = zero; P  j$ Q9 e% e+ v2 h
  11.      if end_str_ix$ = zero, result = strstr(":", set_time) 0 Q+ ^, _2 ~' L8 Q9 ]1 Y1 |( Q
  12.      if end_str_ix$ = zero, result = strstr("=", set_time)
    0 i7 [8 k( I% P  G# g( v% q
  13.      scycle_time = brksps(end_str_ix$, set_time) - |2 y7 }6 @6 M( Z- H
  14.      sbufname2$ = spathnc$ + snamenc$ + sextnc$ 9 C! p- a! p4 y; Z1 G# y' L
  15.      while loc_found = zero,
    7 c' |5 H: e' Z9 ^) v8 ?1 n
  16.        [" I. P( J- Z9 ^; r  Q0 c" m, i2 Y
  17.        string2 = rbuf(two, rc2): D4 v* i" d7 l6 M' F6 V5 `; F! I
  18.        if string2 = scycle_time_out,
    2 d/ @+ E9 Y4 x
  19.          [! ~' W2 u1 w! V' |8 f7 E3 k
  20.          wc2 = rc2 - one " b$ K' t& _0 N/ K, |7 S9 \
  21.          scycle_time = sopen_prn + "CYCLE TIME =" + scycle_time + sclose_prn1 K) |: t7 z3 I7 d; K- T
  22.          scycle_time = wbuf(two, wc2) * C  _* [. J! W, R5 n
  23.          loc_found = one% L0 X0 c( c: a1 q/ K
  24.          ]3 S/ U$ p; k* p! A% B  R2 ?
  25.        ]
复制代码
8:在psof$或其他任何想要输出加工时间的地方下面增加下面的代码。7 A# y# W" w5 {  c: u  `
  1. psof$
    * p7 j) d' A# O( C% ?" ?
  2.    *scycle_time_out,e$
复制代码

# U6 w& k$ i; v" [3 v' `0 i
3 w' N3 ]" J- g' Z- J2 J4 ^+ T6 r
发表于 2022-11-15 09:02:43 | 显示全部楼层
谢谢大佬的解答 !暂时看不懂 ,慢慢消化吧 我现在 在程序单上解决了这个总时间问题。十分感谢。后处理 多任务 一次执行 后处理 出 NC 和DOC 文件 有办法吗?
发表于 2022-11-16 22:42:00 | 显示全部楼层
很久没见大佬发言了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2022-11-28 22:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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