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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 512|回復: 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);7 ?$ E( ?: ]8 ]3 z) u0 p
  2. int  EQ_is_ge (double s, double t);
    , n7 m5 w6 I2 @' r+ @; B' a
  3. int  EQ_is_gt (double s, double t);
    1 j3 }  g' v3 p; \
  4. int  EQ_is_le (double s, double t);
    3 p' h7 N; ?' Y
  5. int  EQ_is_lt (double s, double t);
    . B0 v7 ]4 p! ?6 }1 S
  6. int  EQ_is_zero (double s);
    5 m* G0 Y% i/ W8 U- \* ]
  7. //=============================================================' ]8 K4 y/ ^+ y* D1 R6 y4 H0 Y
  8. double ARCTAN1 (double y, double x );( X: g0 F9 Q! A, ^1 q4 Q3 Y, x" J, h
  9. //#=============================================================  k4 d$ K. |5 I, e! a
  10. double ARCTAN2 (double y, double x );
    * [" x; G0 u! ~; ?$ M) V& m
  11. //#=============================================================
    6 M& f- r! ?) u" C  h: J. C* [2 I
  12. double CheckConst ( double angle, double constvar  );  F8 T! g# O4 O# R
  13. //#=============================================================
    4 {) J# ^0 J1 b6 }8 T
  14. double Check360 ( double angle );: `8 K! D0 Z4 E3 X* K
  15. //#=============================================================& r+ N5 v" S: U7 H0 e8 f! W
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );
    9 M6 Q; j* l+ e! [
  17. //#=============================================================
復制代碼

# P; f5 ^  Q/ F9 b) F+ b( L8 D以下為部分源代碼,用于判斷,計算角度等
* X9 ?* k( g3 g8 P0 l2 t
  1. int  EQ_is_equal (double s, double t)
    # O5 L$ P  ^! e% S5 j0 u! Z
  2. 4 ]4 R1 i) r, z$ e2 K: B
  3. {
    / i$ y$ i5 j" d; A. l* W

  4. . ?% Y' B) w8 G3 F. w+ D8 d
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }
    ) G+ e6 ^( U) o4 K% s+ {

  6. ; `; Y+ q5 n0 S, h5 M/ q
  7. }( }1 T* |3 ~0 n. F, e( T
  8. * B- ~% w# P. d* n5 m& u+ d- ^6 Z
  9. /***********************************************************************/
    - d/ C& k. d! a6 Z! ^9 N

  10. # n$ t; ?% i! T
  11. int  EQ_is_ge (double s, double t)
    + k$ g6 N, p6 N6 h
  12. 0 I0 ?# p+ m$ p# {8 d
  13. {1 Q& z7 x! R( ^( r2 K" g

  14. + ]2 v% R$ n8 e" c5 p" x/ d- ~
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }% U0 ]# ^, A9 C2 c  ^2 o% M7 ]
  16.   a8 A. r  g+ j; j" p% _% i
  17. }
    ; x4 k6 M* u2 _' P: ~+ u- ?
  18. # {* S* g; a. s, f
  19. /***********************************************************************/1 [1 H1 ^! k2 L5 r
  20. 3 V" @6 ^- @4 P
  21. int  EQ_is_gt (double s, double t)
    1 y( T# d- w3 r6 D7 h' [8 i4 h

  22. . P. |; k8 l, t
  23. {
    $ Q' D5 n9 G2 q. q2 i. Z9 n, k4 ]
  24. 2 M' M& R- x* Z! j0 J
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }3 }! J1 {% @. T

  26. # O6 T7 `1 T0 \
  27. }
    % A) t0 F! Z- f
  28. # \8 Y5 k6 F, O& O% E* J
  29. /***********************************************************************/6 i$ v7 {% P' u2 b1 {9 u/ F9 t# }' v4 ]

  30. 2 ~4 j( F; y) u) K! K$ x
  31. int  EQ_is_le (double s, double t)
    * f0 D- h$ A- L" f

  32. " R5 |! B% K" a3 t$ P' B2 @
  33. {7 Q  {$ ?  ?) E- l4 s
  34. ' l  {" Y/ e; {5 N+ j; j
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }' i$ h! o' s! t. ^. d; v

  36. ' m2 ^! q: [0 a  x7 {, }
  37. }
    / @! i! p' v; y) @6 j

  38. ) g: M! A7 S- X+ R% b
  39. /***********************************************************************/* V0 g! t; w5 ]7 H  S7 _, l
  40. . y* b4 U3 A; b% I; c  V- l
  41. int  EQ_is_lt (double s, double t)3 ?  z- E' g0 ]0 v: O

  42.   L8 A. Y! P" T! P0 y8 B) E' I; Z
  43. {$ s$ X0 u0 |! L. u! U

  44. 0 D, C( C/ d" ^9 O
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }$ u- G: s9 o3 x' Y' H; `

  46. 3 E: N0 O( w0 a4 }! M4 b; z
  47. }
    ; l6 K( Q, u+ A4 e1 z

  48. % j# |$ [- l" R  h
  49. /***********************************************************************/! G5 U0 t4 a: v- b
  50. # M$ b9 d' v& r1 q
  51. int  EQ_is_zero (double s)# z2 Z+ C7 ?5 {& W& I4 Q" d3 v
  52. ; y9 H) o% d. f. y
  53. {
    & c- |$ l3 W$ p8 F
  54. 9 a# K' x& s  x* N0 \
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }
    ) ^/ K, @5 y# l0 n0 J+ T

  56. 3 ]# L9 D, Q8 n% ?: F$ @( n/ }
  57. }
    % s# ]- G5 m$ q6 l, x% c
  58. ' t7 Z- W9 a9 o5 b3 I. T
  59. //=============================================================
    * W+ ]$ I2 ]5 l0 c& T$ T2 e

  60.   P* s6 P9 j% O5 H; }0 D1 u& k
  61. double ARCTAN1 (double y, double x )
    ) u2 c( A+ c. {0 L2 w9 m; M
  62. 8 m7 N. ~% n& E8 }  J# k! [
  63. //#=============================================================
    7 H, @$ b' |/ w  J$ c

  64. ! o. z) o; [$ Z/ @. Z+ V
  65. {
    ; \! i6 ^- l  I/ o& [+ z- h

  66. ! g' {# i4 d2 Q8 K6 m
  67.    double ang;
    : f1 t# Z6 d8 R$ A6 t, ]& f

  68. $ y7 J- O5 X% l3 c) u
  69.    if (EQ_is_zero(y)) { y=0; }
    1 n0 I1 Z. `) t! A& k8 J7 K
  70. 8 C# [% f: ?, A; H- A5 r
  71.    if (EQ_is_zero(x)) { x=0; }
    5 W0 {' G* E, D. ]
  72. ' [. v! K* K) c1 N; q& Q& r
  73.    if (y == 0 && x == 0) { return(0); }+ J% i0 E8 R$ L

  74. ; }3 d: T/ E  z
  75.    ang=atan2(y,x);
    5 J  ~1 {8 f. f

  76. & ]. h. I1 E2 v# j- c3 i
  77.    if (ang < 0 ) {
      z, Z" F7 f, }) X5 C6 x
  78. ; T. \: {& K# i3 A
  79.       return(ang + PI*2);
    ( K  H$ i$ B; W: j9 ~; ~
  80. & _6 a6 m* N. Q
  81.    }3 G8 f+ L% s/ ?6 C
  82. % g- o# A) U3 G) W+ }% i" ?
  83.    return(ang);9 Q8 f/ s& O4 _0 p6 v3 w7 P' y

  84. % l5 f8 H0 i# A9 z2 g
  85. }
    4 \+ M$ f2 M2 y$ L# m5 I
  86. 1 q* F2 W& i  e! ]; |. L2 w
  87. //#=============================================================* y3 {. o+ U  b+ f) m- m
  88. 5 X7 ]4 m" I+ B  G7 ~7 G) n
  89. double ARCTAN2 (double y, double x )
    " _0 B6 ?- G8 w) }* ^

  90. % s# X  K, k8 u" l6 {: T
  91. //#=============================================================6 n, f* @/ ^; w! g( s

  92. / N5 u" y/ W4 M% W# i6 J; Z$ u6 U& ]
  93. {2 k# n+ Y( G  \4 n% m. B* C
  94. * S. N( R, ~. S9 B% \) o3 d) M
  95.    double ang;9 r6 q+ Z9 j! ^; C, p  P; E( T' y
  96. & b7 G- ~: q- r7 X- w
  97.    if (EQ_is_zero(y)) {* r. J: u( u- _# H* ]! Z) V. f

  98. ; S' P3 G' `" m- N
  99.       if (x < 0.0) { return (PI); }6 Q3 o0 o, A  Q9 r' m2 r

  100. + E  `0 A. O5 O  m/ `
  101.       return (0.0);
    , F! X. I9 m$ j& e- u0 |
  102. : _$ m. P' \8 u, u
  103.    }/ }! f0 s4 P$ e, @0 k, h$ z8 [
  104. ( \; s- n+ W& g& u" z3 j
  105.    if (EQ_is_zero(x)) {
    $ N5 K' w' y5 d  M+ X2 p
  106.   k9 o# M6 ~* T( S
  107.       if (y < 0.0) { return(PI*1.5); }
    % @0 T' c5 Y7 I2 F: [7 r" f; d
  108. 0 N4 x: d( E& h7 |3 W; \# C
  109.       return(PI*.5);
    ' c/ h1 E% ^5 w+ o  G) ?
  110. 8 c6 K0 ^( [" @' ?- r; z0 h
  111.    }  \# ~( Z0 a5 w% f: e$ @/ g$ m

  112. 9 o( i4 k, C2 C& d
  113.    ang=atan(y/x);
    ! q# s* T3 i  ]; k: b& X* E

  114. ! ]1 s& _# i) a2 k% q4 _9 d( g; Q2 m
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }$ q6 j" h, v( s% r

  116. 1 p# H* ^$ i6 k( ?9 I6 K, H/ t
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }
    9 g: t$ k- ]" j7 y/ m# c
  118. " z- L! m* e$ \6 `+ [: w
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }9 a  V+ l% l) G, K& i) J
  120. $ u8 G  ~2 ~# c
  121.    return(ang);
    - o. q5 Y% \; Q2 m: X5 Q$ U/ ]

  122. 1 K9 ~) U$ @9 U
  123. }& K% h, A5 u/ ~5 C- a# m

  124. 8 w5 q5 p! [' ^7 ~. \6 {( S* U' g; G, ^
  125. //#=============================================================- x/ W- I% @$ x$ [
  126. ! [+ v% r1 @; Y+ w2 ^
  127. double CheckConst ( double angle, double constvar  )$ @6 f8 `6 [, T5 y5 W

  128. & l4 U" o) g  G
  129. //#=============================================================9 A: \7 D  H% g+ C$ y, T; v

  130. 8 j( _/ M, d7 y, U% X7 L7 T
  131. {# ?5 S' B* l1 Q4 e

  132. # D, o  A. b1 w
  133.    while (angle < -constvar) { angle+=constvar ; }
    ) ]! l" P' K; a

  134. $ s$ h, `* [9 i, s
  135.    while (angle >= constvar) { angle-=constvar ; }
    - [7 O7 y/ v6 v5 K. P# D. s
  136. : s+ e7 O  o( m$ _
  137.    return (angle) ;
    - O/ Q0 s1 G( C, L8 f- a' C( F

  138. 5 `4 E, z4 D9 `, z
  139. }: E; d% V$ j; E$ ^

  140. . b( X" M' g2 C$ i
  141. //#=============================================================
    & I* T6 p: E; b0 Y5 S* ^
  142. ; \) ]+ @$ J. G8 [* G
  143. double Check360 ( double angle )# l6 f" F" ?7 u1 {* d

  144. ) E' D! G9 f+ i* f. ]8 |$ p
  145. //#=============================================================
    ) o' L! a' y$ ^

  146. 4 W) w: r1 W; W
  147. {
    . N2 Q$ l0 D2 n- U9 S

  148. " z- r2 g7 i. ~0 A! t6 @- k8 @, ~
  149.    while (angle < -360.) { angle+=360. ; }/ B0 @! g$ K9 O7 [: u6 U
  150. 1 n. _  }+ t) ?$ T( j
  151.    while (angle >= 360.) { angle-=360. ; }
    0 f4 u% G0 b( R8 D5 A# q8 j" _

  152. 4 ]" Z3 |$ h/ i5 h4 T9 b6 l
  153.    return (angle) ;$ ?4 A, p; G9 Z
  154. : O1 v- X' g  e) ^3 E
  155. }
    " ]1 _" X! @' C8 w6 m/ O

  156. 6 F, J4 Y. E4 l. B, R
  157. //#=============================================================& }8 Z, W6 h: f9 ~/ p
  158. ' }9 J: R2 ~* A% w5 [
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )" F& ~3 @2 Z$ S" H6 ]9 [- S

  160. , x% n! a: J- }$ Q' s
  161. //#=============================================================
    # ?; G4 s* f9 P! t
  162. + C3 Q9 w2 b+ k6 b* k5 _
  163. {/ k. O' G* y3 V0 ?# |% M! z
  164. 7 {; h, l3 Q8 W, n% }9 N
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }2 D, \' H" o! V8 `
  166. 7 ?: q2 R' `2 i9 Y; E  |# \, ^
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }
    ! o5 q* X% q, c+ U" T# M( m
  168. $ B+ r: m. \5 G* p6 z3 t6 w$ z
  169.    return (angle) ;
    4 W% o; l( q( y' D

  170. ; y8 ~3 c; Q& j- z) m
  171. }
復制代碼

* P) x( i9 n. Z0 X; f, |以下為搖籃5軸計算過程代碼
  d! c3 d1 Z5 [: T
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);5 m7 I  z9 K  b6 ^% @( L8 |
  2. ' C0 e6 P6 x' @, B9 Q4 a% x, U
  3.          j=0.; B1=0.; B0=0.;
    8 N' S3 g, o  c0 S4 t. Q. S, d3 I$ k
  4. * B3 }( J# R) S+ ?% v  ?  S
  5.           if (EQ_is_ge(i,0.)) {$ h$ A  }: |# z; u+ n# V, P9 z  r
  6. % _" T3 d, ^7 i- ?1 R5 R) O( i" |2 X
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }
    / U1 G. N( H2 J& F) D

  8. 7 G! z) G- ]# Z4 f
  9.           }
    . Q  m  f3 ^# N4 w
  10. % H+ M/ ]# F- T5 ^5 ^& P$ @* [
  11.           if (EQ_is_lt(i,0.)) {
    " ^2 t( _4 x1 B" w0 X: k1 @' s3 \8 `: g
  12. 3 }/ {$ I/ e/ @: N# l8 Z
  13.              if (EQ_is_lt(k,0.)) {3 S* J+ Y+ _; T% s

  14. 5 }& y$ _1 d5 g' F  y! d4 V. J( B
  15.                 B0=atan(i/k); B1=B0+PI ;
      P; t3 J, S$ Q, {9 z. f% U; O
  16. ( ^" m# M7 V( a6 V# H' e5 m
  17.              } else {* w/ Q' Y/ r7 I  W: Q6 c' p

  18. ; N& O8 L2 F/ y1 X: Q( \
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }6 Z5 }: R' I5 w' e; L/ D
  20. 6 ^( N; M" \' o8 }0 Y2 k$ o
  21.               B1=2.*PI+B0 ;
    , I; u. i$ M  z; f- K: f: Z. A

  22. % d$ t' B' v# a3 g
  23.              }
    6 u: t% B$ }: R+ e! p: ?7 T

  24. ( B1 _9 o) T1 v4 ^/ G
  25.           }
    " i4 f3 E" @; _. ~6 f+ t, x
  26. ) t! n, X* Z- B+ {$ `  u4 l
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;  V: P2 H7 W9 Y
  28. 2 n& C9 V2 G- q" ?: {
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));+ A( N4 M" a8 i5 B$ o: |

  30. * j7 P# d9 F# {- Z) R' x( i
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;
    0 T9 `: p) \/ F: g- K5 l/ O+ e
  32. ; Y$ w# W* d2 ]& |
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復制代碼

2 {3 u/ Y: \0 V; `4 z/ U! ~通過輸出的NC程序,反向輸出的刀軌數據與原始刀軌文件對比,其數據結果一致。
" S& L; i4 Q' D& S; w5 z- H8 s$ T6 Z6 b0 u+ N
, K6 u/ C1 ^" s# |9 U0 Z
測試結果:
# w0 S0 N$ E& ?4 Y& b0 t) w
  \7 L: C) G+ W& |  f5 x
: r+ {1 A6 N/ p1 ?反向測試結果
2 _# c* i* m" t5 f+ g. p; ?) f

0

主題

25

回帖

17

積分

新手上路

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

使用道具 舉報

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

本版積分規則

關閉

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

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

GMT+8, 2025-6-28 10:49 , Processed in 0.154392 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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