亚洲二区精品_国产精品com_日本高清精品_国产高清一级毛片在线不卡

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 515|回復: 1

[原創] APT刀軌數據生成NC程序C++源代碼

[復制鏈接]

431

主題

5752

回帖

901萬

積分

管理員

積分
9013905
樓主
發表于 2025-5-21 20:59:21 | 只看該作者 |倒序瀏覽 |閱讀模式

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區

您需要 登錄 才可以下載或查看,沒有賬號?立即注冊

×
APT刀軌數據生成NC程序C++源代碼,本功能僅作為技術交流研究之用,代碼,功能可能存在缺失。需自行編寫刀軌數據的讀取與處理。以下僅為部分代碼以下為頭文件部分源代碼
  1. int  EQ_is_equal (double s, double t);
    ) P) @  d3 _, O
  2. int  EQ_is_ge (double s, double t);) [$ i. m9 e: j0 S( |' A
  3. int  EQ_is_gt (double s, double t);
    8 o: ~: I) i3 M8 G/ j
  4. int  EQ_is_le (double s, double t);% d$ C* F7 d. \# u
  5. int  EQ_is_lt (double s, double t);. q. n# }& b. b
  6. int  EQ_is_zero (double s);, K+ W, E  N, {. V4 I/ p7 V
  7. //=============================================================$ T( ~% Q  I& }" i3 Z
  8. double ARCTAN1 (double y, double x );
    . }. }( ]8 ]3 y. F8 V1 S: G4 Z
  9. //#=============================================================
    - S9 F1 h$ q2 x( H6 ^& \0 C
  10. double ARCTAN2 (double y, double x );
    : K$ m. X# N/ X
  11. //#=============================================================7 U8 c0 d2 S3 s# j1 d, E
  12. double CheckConst ( double angle, double constvar  );4 j- V& |+ g/ G, L; ]. E. y1 j/ W
  13. //#=============================================================# L4 y/ T" z7 U8 a2 P) i9 X
  14. double Check360 ( double angle );
    3 c$ [6 l8 N4 [3 C
  15. //#=============================================================
    6 @* ]1 `* _$ g
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );
    7 g0 h% h! Y1 b: }7 U
  17. //#=============================================================
復制代碼
6 _' N& E) P9 f0 ?" z; p( [) U% [3 x
以下為部分源代碼,用于判斷,計算角度等
0 L' x7 X) c) j( H8 i, X1 G4 C
  1. int  EQ_is_equal (double s, double t)$ Y9 [3 Q  g" I
  2. 2 V' X. k( n8 ^. U. Z6 D
  3. {! S+ T. k! Y2 }' ?# k% @- S6 B

  4. 5 p* u6 H+ [( j; A: t$ p
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }
    / C1 K6 ^7 m& _
  6. / ^3 g( r: `: R
  7. }
    + X+ x( u" X0 D. b* ?3 m
  8. ! h7 q; ?+ b. U: _/ Y- w. w
  9. /***********************************************************************/9 U6 E  k) V( s  ]; I

  10. ' F! a( H3 N$ N$ r+ |; ~- @: ~
  11. int  EQ_is_ge (double s, double t)
    2 f6 x' G6 R" [! {

  12.   M' w. Y, D4 q$ U0 w, t
  13. {
    / y6 X* I+ y6 Y" X5 f9 e, k

  14. " u( b% w9 K- Q: s1 p) K1 }
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }
    7 h! ^* a, y, m
  16. ' M. ?& N1 B0 {( n  L
  17. }8 F) R5 u1 w$ U7 I: _9 I
  18. / ?: M( `, R; z) O1 D/ G/ V
  19. /***********************************************************************/
    1 c) f! P% E2 \0 Q

  20. : U  k: {  T2 G4 Y) }1 O
  21. int  EQ_is_gt (double s, double t)
    6 u( [/ O! f( ?+ j9 _; z

  22. : ?4 ~- [  _/ R+ m4 m  [
  23. {
    5 S% Z& m2 m2 K
  24. " E( G  j! d* U! D! k
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }. K+ f. `8 q# A% f7 S  g( {, ]. Y
  26. " g0 \& u, G1 m
  27. }
    ' B0 U1 l. D) U* F# v3 |
  28. 0 q0 c  X5 [# C6 U; [- x
  29. /***********************************************************************/% M) b( Q  E% C. N. Z- Y3 j
  30. 5 Y7 w  K0 j: h: O. m
  31. int  EQ_is_le (double s, double t)
    , U" _; i. `' C' R  c; A

  32. " i  O5 u/ z4 H8 S- [
  33. {, u& a! |' @3 }. e( C. t. i& H
  34. % m+ _3 l; L4 N' o% ~0 I
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }, T4 J, z/ y+ x: ]# K! g4 w

  36. ( f2 [. y0 L& H2 i
  37. }, L) i; W/ ^0 S0 }4 o7 A' }' _

  38. 9 c; A/ l9 \1 }, Q! K5 U/ H! A
  39. /***********************************************************************/
    ) a1 W! u! Q4 |
  40. ( g: g: L, `$ x9 r% Z
  41. int  EQ_is_lt (double s, double t); ~# R  i* ~' P; u& m

  42. % b* [6 T  s% X' t0 q
  43. {
    8 l; f  [. F, q( r
  44. ) d& ~. a% F8 x- n
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }0 X" K6 b) o9 X' ~$ m
  46. ' D$ o2 e, }: V$ Y' D# U! s4 R
  47. }; n+ l. M8 a7 G* M9 U: h. j

  48. $ }; C" |1 E7 i; Q* l
  49. /***********************************************************************/
    - h* n  @. P5 ?# w* j

  50. ( I! V+ H7 U7 i& W; Z: A
  51. int  EQ_is_zero (double s)( {! r0 J2 m- s: O8 Q$ m! X# F

  52. 8 m+ O; g& C" {" M% \) ]9 C
  53. {& ]0 ~" x" Z) u  ]( s2 _7 D
  54. 5 w& c0 N' f+ o* c5 K% K/ O+ P7 }
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }2 G5 C8 y4 N  y# K- v+ |

  56. ! `$ _8 s# e0 L
  57. }$ j' P  x0 E+ C

  58. 4 D0 O) N" f7 b5 \
  59. //=============================================================
    7 p5 O# G, h& H% M

  60. 5 R  k9 y$ C. k* F- c# p; ]
  61. double ARCTAN1 (double y, double x ): i# }; Q1 b1 q! r  A. E) w

  62. ! v" W4 q1 I! w4 D/ X' }0 u0 I
  63. //#=============================================================8 |$ v9 I- S8 B4 H) l' T

  64. 8 ]) H0 W1 z  ]3 B% \
  65. {
      |/ q/ }: O. w( D! ?$ }

  66. ) @2 W3 ]  N( s) z5 L
  67.    double ang;
    . M7 ]% F* C2 h, Y2 p; C. N
  68. + h0 r$ _6 U1 {8 ^8 X
  69.    if (EQ_is_zero(y)) { y=0; }2 ?- x6 X3 L  w4 G

  70. # g9 G: P3 X5 m/ W
  71.    if (EQ_is_zero(x)) { x=0; }
    2 n% |/ @/ H/ X* H

  72. / J6 f! B& l" I! h1 t$ x# O
  73.    if (y == 0 && x == 0) { return(0); }
    3 F% U8 L3 ?# H
  74. 4 C1 D' E  S! L6 l3 z
  75.    ang=atan2(y,x);- ~$ T  e6 f+ o( K0 C) r

  76. 3 e5 L5 B$ r: C( E
  77.    if (ang < 0 ) {
    , L9 i% Q" ]0 z2 T3 E

  78. 7 R5 e8 k; }3 W0 N- H7 Z
  79.       return(ang + PI*2);2 I4 Z7 ^' K1 o
  80. . ]" }* _, e" n- t, V
  81.    }
    7 G& U9 I! W! T

  82. # z  }$ y( q. H7 B; z  ]5 G4 s
  83.    return(ang);3 ]7 @9 y  J+ y9 F: \# r, _# b; Z

  84. 3 g) Q8 K" u& e5 x" I' q
  85. }1 Z. }9 @3 f- r+ g- H' E. N' n
  86. * ]+ @: S: N( c6 O
  87. //#=============================================================0 C7 d6 m; I3 l0 P( E& j

  88. 6 l( Y2 `' R/ v7 ~) T2 `% }+ Z. I
  89. double ARCTAN2 (double y, double x )
    7 ?: @% ?$ G5 h9 T$ [. f# m% [
  90. 8 g) D1 {4 X5 E/ ?+ t# @
  91. //#=============================================================
    9 X) r9 Q$ z# l/ m  g: U( S$ o! @

  92. # v. z8 z1 e4 J3 b: ?1 f: R
  93. {
    , B2 b+ a: \# r& G
  94. & K5 R' V; {$ e) z
  95.    double ang;
    + s# f+ v; r8 Y
  96. 7 v& B3 c1 G+ f9 w# W$ [! Q8 n! Z* P' g# n
  97.    if (EQ_is_zero(y)) {1 b2 [2 T2 h3 B' B2 f8 y9 R
  98. / b% b4 v0 s( Y% [
  99.       if (x < 0.0) { return (PI); }3 x$ N! B/ D- W

  100. 5 ]7 Y7 g+ N$ X$ [
  101.       return (0.0);
    - o. g7 \- [% c3 Q# g

  102. ! @9 _) O5 y' k" n) Z2 v' R
  103.    }
    # Q( P9 c& Q& \6 w
  104. " K* R, l! Z( \$ z
  105.    if (EQ_is_zero(x)) {" a2 z' w7 ~* Z9 \  P1 i6 _5 J

  106. % X. s: [3 ^/ q
  107.       if (y < 0.0) { return(PI*1.5); }
    8 c4 _- d$ m9 h6 j

  108. : b, P& x: H" [7 Z' d/ b# c
  109.       return(PI*.5);% E9 P8 e* t7 F& S- y* }
  110. 6 h8 G/ T/ s/ V* P7 G! L3 L
  111.    }
    8 d) {6 w, {  w, b0 p; }
  112. # ?. m: H0 R: v. ~7 y( d! N
  113.    ang=atan(y/x);$ k6 a7 j( w' e  w: N
  114. 8 N9 \3 \, q# f2 T# |
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }
    , B4 G4 x/ K) R4 h4 Z* D- e5 g
  116. 3 @4 c: s# h6 a2 f
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }
    : p# k% _+ r# I
  118. : i  S8 O% E$ h) m1 e; I2 x
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }
    5 ^$ q. e* @, r
  120. : M' Z0 E! T: d1 t0 p7 ^
  121.    return(ang);2 b! r5 @3 T& a3 s, R1 i

  122. ' {# A2 s- M, r6 }7 l! T) I
  123. }+ `& H4 c3 N, k$ P% a
  124. : ?6 Y5 r7 ~7 ?( G! p  x
  125. //#=============================================================
    . B  {/ u5 I  g8 x( q  A
  126. 4 N6 o9 O$ S& K% {
  127. double CheckConst ( double angle, double constvar  )4 H3 C0 N, s/ T5 D! r$ I& T! W' U* H

  128. ! x0 l) ]7 \2 G6 i  N7 e
  129. //#=============================================================
    8 R6 {9 b7 ?  a+ q2 e3 L2 V

  130. 6 P* N( L8 V7 a1 K
  131. {
    : j$ M5 P7 B# d# a
  132. 6 u  i" B& Q) J1 [
  133.    while (angle < -constvar) { angle+=constvar ; }
    ( c7 |& t. K6 x0 G3 ?# \1 p
  134. 2 Q* w9 e" l+ G" r
  135.    while (angle >= constvar) { angle-=constvar ; }
    8 E5 v' O2 i: Z% _4 w, A
  136. % b' V" L3 r2 [5 a, q; `4 H
  137.    return (angle) ;9 i- T$ n/ Z  `5 A
  138. 9 E* m: Z' S, W7 Q1 ~4 n( t
  139. }
    - \$ L8 R/ k; T- h

  140. 4 ^/ Z/ W) Y# i4 t
  141. //#=============================================================1 _2 n" Q( J; I( [8 G* H$ r; T5 s
  142. 8 Z0 t4 N# b7 ]7 |- j! D0 {7 N
  143. double Check360 ( double angle )
    2 ~$ R- F$ P. b8 S- i+ ^! L
  144. ) B# D3 J8 C; U
  145. //#=============================================================7 m, z4 e3 e0 O

  146. 5 n8 e+ w4 k1 @: P$ {! _' f7 k
  147. {2 y1 L" D/ d5 @

  148. ' l$ X& p% O4 Y8 G; s. K8 J
  149.    while (angle < -360.) { angle+=360. ; }
    - s4 z2 Z" T4 r+ i2 @

  150. 8 \; z' l+ [7 \  z
  151.    while (angle >= 360.) { angle-=360. ; }8 @. o, c5 H8 k: u7 Q

  152. , ~( r+ o. \  _; ^# E
  153.    return (angle) ;1 l/ {, m) q; r. a: B. j$ \7 ]
  154. 2 w' t: V8 u7 v- m  p% d- \2 h
  155. }- ~; j% {2 S- n9 X

  156. & T$ W5 U' N  Z+ N* [: _
  157. //#=============================================================
    ' ^! O& u- ^" L9 S
  158. ( b/ j9 b; w# m% j+ I5 z; X: s
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )
    ; i5 V% u; ~& \; C1 n0 C
  160. " q# b. V: i9 E0 Q9 W4 C
  161. //#=============================================================' Y" ^7 T% }% V1 V' e

  162. : @  u0 i- }# H& B. J
  163. {
    ' `  w% A8 d$ a7 P: R) T
  164. / m3 K/ ^! C7 s3 @9 I. w  H
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }
    5 C4 e+ R/ d+ D# P3 f( f3 t3 U: @

  166. : K! ]% d# q, e4 ^# S8 V2 a
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }. `3 ]- X" S5 X; H2 ]: O0 O
  168. / ]$ u  K2 d! h  @) R& J
  169.    return (angle) ;
    5 T8 X: S- N' n) ?
  170. 4 Y9 h: p( ~/ N4 B# x( O
  171. }
復制代碼
! \. v; \+ z$ B! z- ]
以下為搖籃5軸計算過程代碼
8 x; ^! {; _! A0 v
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);
    ) t5 ]+ F: Z5 e4 o0 f
  2. 8 d  x$ m- `9 r4 N; S; e
  3.          j=0.; B1=0.; B0=0.;
    8 ]+ l7 d, X% R% J6 ?
  4. ( F5 V- z+ _6 }1 c5 D  Y$ |5 O
  5.           if (EQ_is_ge(i,0.)) {3 I  ~; v% E0 J$ k4 h: `6 L

  6. , f7 b+ t8 {' k+ D+ S9 M" x
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }
    0 Z* Q) m; j" m: _' x0 V4 s" Q

  8. ! e* p. _+ z, B" f3 d
  9.           }
    . M; V2 H8 p" s- R
  10. - L  p3 s! k. e4 v
  11.           if (EQ_is_lt(i,0.)) {
    $ J$ L3 {7 n$ M
  12. ( D- n% v+ G6 ~
  13.              if (EQ_is_lt(k,0.)) {
    0 v+ X5 u4 F4 E( y9 {' u8 m
  14. $ _  k# s* h) O
  15.                 B0=atan(i/k); B1=B0+PI ;/ R0 D5 f. ^2 {; v6 p% D( |

  16. * _' w, H4 p1 C! P& O
  17.              } else {
    4 }" ^8 h8 n2 m( |  K, |) S# A1 v0 L
  18.   D% r) _0 e$ Z" }
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }
    ' y  q8 l' [3 ^7 i% a( r
  20. ! ^# \, O& C/ S) u1 n
  21.               B1=2.*PI+B0 ;9 h9 |4 S! D# w1 t% C- a" n

  22. % Z  M  E9 n3 m5 t
  23.              }- M; E+ G1 |$ h3 d, B% a! q' N; L

  24. 7 o6 L+ \$ h& d( U4 n! ~9 [  z9 n
  25.           }% |4 a) ]" {8 F' t0 X
  26.   h$ B" _% n+ t- z+ R" u) [
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;9 W9 f# P& _) C  S
  28. 1 ~+ G. G. I/ H/ b
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));
    ; S* Y7 e( z0 g7 T

  30. 4 v( q: m2 Z2 ~; a- ?0 W
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;* {+ s) q9 U* q1 C

  32. 2 K) r( ^# f' `
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復制代碼

# E6 n' n9 c; y- I0 Y7 @0 |通過輸出的NC程序,反向輸出的刀軌數據與原始刀軌文件對比,其數據結果一致。
3 h' ^, Z* T; G. V9 v+ X1 e, |' N5 f  B4 P- |

4 _% X+ E2 j5 G* j( e測試結果:* X/ f4 l( Z) O2 W, e3 D

- Z  z/ O: N1 }, L  ^
" w7 x! h( z5 [  I) u+ G, l反向測試結果 & m+ Z2 t; h9 `. V( _

0

主題

25

回帖

17

積分

新手上路

積分
17
沙發
發表于 2025-6-3 18:53:03 | 只看該作者
謝謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關閉

站長推薦上一條 /2 下一條

QQ|Archiver|手機版|小黑屋|若楓后處理論壇 ( 蘇ICP備11015087號-1|蘇公網安備32059002001368號 )

GMT+8, 2025-6-28 16:07 , Processed in 0.169011 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表