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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 507|回復(fù): 1

[原創(chuàng)] APT刀軌數(shù)據(jù)生成NC程序C++源代碼

[復(fù)制鏈接]

431

主題

5752

回帖

901萬

積分

管理員

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

馬上注冊,結(jié)交更多好友,享用更多功能,讓你輕松玩轉(zhuǎn)社區(qū)

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

×
APT刀軌數(shù)據(jù)生成NC程序C++源代碼,本功能僅作為技術(shù)交流研究之用,代碼,功能可能存在缺失。需自行編寫刀軌數(shù)據(jù)的讀取與處理。以下僅為部分代碼以下為頭文件部分源代碼
  1. int  EQ_is_equal (double s, double t);
    9 y! U1 C2 Q  F, l6 i3 T9 C
  2. int  EQ_is_ge (double s, double t);  f1 z0 K: P" \; L# k! s; q' _1 `
  3. int  EQ_is_gt (double s, double t);# M& P0 C4 k( ~, I( a# P
  4. int  EQ_is_le (double s, double t);
    ! ~/ q; u$ F( `* {& Q2 |; j# l* |1 |
  5. int  EQ_is_lt (double s, double t);% K9 b! E, _6 s9 \/ X1 ^
  6. int  EQ_is_zero (double s);' f# ?* H% z' x# Z
  7. //=============================================================* C' M/ u' _5 V& i4 X$ m3 y
  8. double ARCTAN1 (double y, double x );
    / J- N% ^( B" l2 C0 H
  9. //#=============================================================7 F( ~% G+ Y, g5 a8 j
  10. double ARCTAN2 (double y, double x );
    , O3 r' V, {5 I; B0 A  J: Q
  11. //#=============================================================
    * R) \5 ^9 ?, c/ h
  12. double CheckConst ( double angle, double constvar  );! i( r2 b- h$ x1 A
  13. //#=============================================================+ Q+ T, m# K2 T7 f: z4 B
  14. double Check360 ( double angle );
    , R' n* o, n  H5 s: S
  15. //#=============================================================9 X$ _- y% b- r* U
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );' _" I8 X" {/ t+ T" x% U  ?
  17. //#=============================================================
復(fù)制代碼

$ Z1 v- ]7 W% \5 N以下為部分源代碼,用于判斷,計算角度等9 O0 `7 }- P+ ?
  1. int  EQ_is_equal (double s, double t)
    " o4 n7 j: d5 d4 k, s" c# n
  2. ' N$ Z& e! n5 W* b5 d
  3. {
    ! L; V5 L/ l' B

  4. ( H$ K6 T7 E- v# }$ q- k
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }
    # W: u- ?8 i% w
  6. ( p0 X( j/ f' |% C+ f
  7. }# a' ], k+ T/ H* F7 T$ }  A
  8. & j4 f5 s: }) \3 |3 u, c& }! ~! v
  9. /***********************************************************************/
    $ |/ G: v' J+ c
  10. 6 C5 H3 R; @6 m9 J
  11. int  EQ_is_ge (double s, double t)
    ! V! p# z8 w% P) B2 J1 l

  12. - x9 P- ^4 P& C, _& a
  13. {9 N3 V) w, d1 ~! C/ ]

  14. ; a1 ^  {" d+ l  f9 K
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }$ T6 ]0 O2 Q& G
  16.   s2 Z7 V- B9 y, @/ s$ J) y, O
  17. }/ Y: e( f! z( S' E6 l) `

  18. ( y: y7 D% ]1 t$ g/ [# G. [& W" o& j
  19. /***********************************************************************/
    : t7 v6 ~" K0 }0 n1 Q% G9 M: a. j+ Q
  20. 3 J5 f  g. G. \2 b6 D$ g
  21. int  EQ_is_gt (double s, double t)8 [7 m; o  F3 H# U2 M% O! M
  22. # `, @5 m. e* L2 M; Y( z
  23. {
    + ]2 y2 a9 W3 E4 [% H/ A8 S+ r1 k
  24. $ r. L# r9 y: b
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }
    & L7 Y; y* c( N; D- z7 t0 u
  26. + F/ G7 d" H3 N  c- k7 v' Y* Z
  27. }! J6 o7 }$ U9 K+ u. U; j( M
  28. ; S% K7 K' A# h- C
  29. /***********************************************************************/# B( x) `/ S% M6 b
  30. 6 _6 A! {' ]9 Z
  31. int  EQ_is_le (double s, double t)' U6 P0 z( O8 l% n0 j

  32. 4 x, I# A7 @/ h- E5 W8 A# k
  33. {
      W; C0 Q/ s3 X) M  i- p
  34. ! h' j/ v: @$ C7 E: k
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }
    / g6 k% a/ U, @  q9 U, e/ [

  36. ' Q6 p) V" l7 r! i; j# t/ M
  37. }
    $ }- X; J% e1 X0 F! g* p

  38. 6 [2 E" j, H8 V) }4 J& m
  39. /***********************************************************************/) l- s. d: U" @2 T6 m% _% h1 P
  40. 9 e/ A, j% t% T7 Z* D
  41. int  EQ_is_lt (double s, double t)
    ; n& ]( I, k5 U- z" E3 Q
  42. * ?' L3 m, s9 H& K1 H
  43. {
    5 M1 O5 A* q3 W& e0 k
  44. 8 q6 `: y1 j+ o
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }0 c( Q* p( E+ A/ j, K5 n0 F
  46. ; H/ Z1 I" E, L
  47. }
    + i- g- C' K8 ?: J) R8 E9 p5 P6 ], j

  48. " w- Z% Q2 q9 K2 J+ z
  49. /***********************************************************************/
    : t. N. t  f) t0 j

  50. # m1 v! X/ l+ b8 j" o* `$ x
  51. int  EQ_is_zero (double s)
    8 ~9 F6 b" W/ S- P+ X& @5 @& R

  52. & ]7 L! E' m0 j# l; a3 I( G# K
  53. {
    + g  x1 N) {5 i- x& ?$ |: r

  54. . y! W- H. }: `9 i; L; ]/ ]
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }/ @- Q/ l0 o; Z/ P" b2 h

  56. * Y+ j* o% W4 U. M$ |, ~
  57. }+ c, \; l4 M  w: Q9 W4 \* f* S" b

  58. 6 h4 N6 ^: `8 O6 ~$ H
  59. //=============================================================4 M# S, G4 A' S; {
  60. 7 W5 s' E2 d2 A" y
  61. double ARCTAN1 (double y, double x )+ W9 h1 y3 O0 F- a* w) h

  62. ; h& B7 V5 h" ^- |
  63. //#=============================================================6 T! O, K+ O* h- H8 ^
  64. 2 T) r) h2 g0 U$ ]  a' j# M& ~
  65. {
    ; Z* B2 L0 I& h0 e& p
  66. 8 Q% t  W8 h6 {7 j" V7 V
  67.    double ang;! X+ ^7 n! ?: d$ a

  68. # W7 a% o5 ?+ a  o1 t# e1 {6 d. n0 r
  69.    if (EQ_is_zero(y)) { y=0; }
    / r2 V% n' B4 y6 [- J" k

  70. ) ~' e" p/ m2 y3 m/ s$ H, P
  71.    if (EQ_is_zero(x)) { x=0; }
    & R' U( m& J2 f9 t  R, P1 T6 h
  72. , n" v; H5 f. H* i* K
  73.    if (y == 0 && x == 0) { return(0); }. j' a, U$ ^5 v$ ]4 k

  74. 5 {0 r5 j6 v  x7 C7 T
  75.    ang=atan2(y,x);& q% r4 k' {1 v3 |

  76.   g! l8 K9 p" z8 W" F( i
  77.    if (ang < 0 ) {" ^& [3 l0 }' H6 Y9 J) ?
  78. $ W, O* _8 r; b( P3 c
  79.       return(ang + PI*2);5 w9 P1 N5 K5 h3 ^" j! F

  80. / j" @& Q1 ~+ p9 \. k3 x
  81.    }
    & v: r3 L% C$ [- e

  82. 9 v% w2 t( B. B
  83.    return(ang);/ ]! A  q/ Y, |. G/ Q# r  ]
  84. 0 ^7 Y5 U. K& A8 B& H0 J! ~
  85. }
    : Q; z8 c* q3 I6 [+ o
  86. ) w! s9 j% {6 r$ w9 B! z
  87. //#=============================================================2 S. U4 Q$ T# Z  i% F  D( P, W* M
  88. ( B% p7 f: u! ?# Q
  89. double ARCTAN2 (double y, double x )4 p6 j- I" A6 s: w+ U

  90. : d; {0 @$ o' z: g$ `' K9 \% l
  91. //#=============================================================
    , U, s8 w8 I/ m; ^& d: }! e

  92. , p9 ~1 Y' t2 J, |1 W/ X
  93. {
    0 Q+ Y- F, m5 u; \) `
  94. 6 C  U" `4 k7 \+ }  v
  95.    double ang;
    5 {5 X) [( h7 g7 |- X
  96. $ t5 s" Z, Q. M+ G
  97.    if (EQ_is_zero(y)) {6 S* J# s( Y5 k6 W! o& e
  98. % v# z8 ~6 E5 q- X: Y
  99.       if (x < 0.0) { return (PI); }
    / ?% [( N' ~- A% b+ R, h# k

  100. ( ?, x& O' b8 w; ]5 ~* Q2 L& c! _
  101.       return (0.0);
    ! c: x, l, n. E) @% H
  102. ' @3 l. N, u& l9 A  C: w" C2 ^
  103.    }  L" R5 q! M# Q( w4 {$ |

  104. ( d+ D* T- L6 c7 k7 a) n6 v
  105.    if (EQ_is_zero(x)) {  _6 W1 n6 p1 G% p* |

  106. , N: ^! K# x0 d+ j
  107.       if (y < 0.0) { return(PI*1.5); }+ Y( z% @% |; T1 A: l, \0 H  ^- L

  108. . c- k1 x8 l! [: B' Y& d" x0 r& }
  109.       return(PI*.5);1 c/ l6 F+ A3 ^
  110. - ^/ y# ?9 B; G9 e. f* @+ i
  111.    }
    + e+ e; g4 n- ?2 P" f* ]: H- _6 [' U: Q
  112. ! n3 I- B8 ^# ^- v7 p
  113.    ang=atan(y/x);
    # G3 f+ |$ D" {! c0 e( l2 i: z2 w
  114.   _, S# K/ F) c5 P9 I$ ]
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }
    * }/ ?, l( D' l3 C/ B  ~# w' j
  116. # \+ K8 u& @4 X( v
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }
    8 J+ K* u- b4 U5 ?! e  g
  118. ) E6 {9 |5 X- D3 y3 h) x" d
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }
    / L6 b6 [( N6 {1 ?; d

  120. 0 P" M' f) M) x- B3 N- Q" l
  121.    return(ang);9 P' z  _4 u' f

  122. ! \5 b, v  s( ^$ H0 T+ x% p
  123. }
      Y% l- e7 J7 \/ M- E7 P  j

  124. / N7 R( S# P6 X: e. W
  125. //#=============================================================
    ' h- L3 A6 V( O* {  @
  126. - _3 h% w+ g* v( L( j; a
  127. double CheckConst ( double angle, double constvar  )
    / S: k9 R( ~$ s
  128. / _6 v* B+ q. G1 P, p$ q) g
  129. //#=============================================================+ L1 z- V, r+ W! F( s

  130. 4 {3 B! W6 ^) p; z6 |  z
  131. {" S) t2 c3 _( b/ Y

  132. 8 ^. P1 K7 o: D6 _. |: @
  133.    while (angle < -constvar) { angle+=constvar ; }0 d0 T. T- G' S7 I. |1 e6 q7 J% @, m" M

  134. ) D5 j4 n% C2 N3 U
  135.    while (angle >= constvar) { angle-=constvar ; }
    , i$ ~2 M+ m& ?- x4 {* P1 ?

  136. + f+ u0 `  |0 `8 I* K
  137.    return (angle) ;
    , O  [9 K' q8 _, Z  @9 ]7 u
  138. : Z/ X5 ?5 W' m) \3 c0 l0 f8 n
  139. }' P; l4 p  f6 u, }6 A

  140.   s$ W( d1 y. I& J1 `: M. g
  141. //#=============================================================! D/ I! }8 U2 B1 \2 a! g! k8 W, k4 R

  142. 7 ^1 n3 N3 [5 A) }. q9 v
  143. double Check360 ( double angle )
    ) g4 x; X( i& o) K
  144. & Q4 e% k8 D1 D' R
  145. //#=============================================================
    ' E* f9 R" K7 Q
  146. / }9 K8 d9 s* f6 A3 p
  147. {6 k1 ?8 \; t! r+ J0 s$ [1 ^

  148. 4 C! R( Q8 ~- {+ a" ~3 K3 e
  149.    while (angle < -360.) { angle+=360. ; }
    % X  s, Y& J+ z8 {
  150. " {3 n; {# n! r1 l
  151.    while (angle >= 360.) { angle-=360. ; }6 Z# @/ y: u& j' |2 w$ i! m
  152. # ~7 H; c2 F. E/ N  \3 _
  153.    return (angle) ;
    ( Z+ _4 i" e, |/ b
  154. 1 a$ ?1 m, `4 k; f3 _. X$ O
  155. }
    ( ^! Q5 L" P5 s, C) K
  156. $ ?. S3 Z  f# T7 M. e4 R
  157. //#=============================================================
    - p$ o! o" G3 |8 O/ g5 a3 T8 r
  158. # X* M& k) Q9 P1 V
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )+ h  e& u& D4 |& C6 A' ^% w' d

  160. & v5 F- T/ T: f, z7 t" H
  161. //#=============================================================
    + N7 S3 g  a4 O1 ]8 d7 R7 X

  162. : n+ x8 T' v. x5 l) e1 J
  163. {
    & z' Q- b/ B1 _

  164. 4 y5 c+ f: V, F8 }2 J; |
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }2 T0 }" N. C5 r* m/ |

  166. # A( ]3 n7 F& f) g2 b% I) O
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }
    1 v8 T* V* g9 U1 {% w" G
  168. : U4 k% Y( H8 r* z
  169.    return (angle) ;- `& I; h- L) F3 l
  170. 7 p7 L( C0 ~7 l. p3 x
  171. }
復(fù)制代碼
% f$ Q/ `- z. Y! ~% |, H' P
以下為搖籃5軸計算過程代碼
6 k! m) m0 |1 x
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);2 a. i( x7 L' u0 d
  2. . f: h) Z8 G! T& g) u* m5 p' q- d
  3.          j=0.; B1=0.; B0=0.;
    8 A' d# U. d: |$ N$ O( b
  4. & N; V2 D% D$ m5 n; n% T
  5.           if (EQ_is_ge(i,0.)) {% c2 V1 Z3 q% u' x) {' V, ^
  6. ; L, c) E% Z! ]: d( K3 N, M0 g6 \
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }
    ( q9 C8 m% n8 n$ X  k$ I. O
  8. , d# N# w: @% ^- @$ k
  9.           }- a9 \2 A  W  L, ~  }/ r
  10. $ x! `1 c' Q+ V; ^8 X0 |1 l9 c
  11.           if (EQ_is_lt(i,0.)) {5 u. ]% a3 U( L/ H

  12. ! `# G3 U- k( i
  13.              if (EQ_is_lt(k,0.)) {4 W9 \- e# y3 i% v
  14. ) N! i" F% D- Q6 U( I8 y8 c
  15.                 B0=atan(i/k); B1=B0+PI ;, ?2 C9 ^( d+ e2 x  \9 V
  16. # M9 p& N$ ~9 Q9 |: V
  17.              } else {) A& Z. _9 R& K5 G
  18. 9 L5 o! P7 W, l, J! D) S
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }6 M, P+ R. G2 \0 w7 X' N+ y6 K  F
  20. + W, t2 T4 O$ h5 W- |0 W
  21.               B1=2.*PI+B0 ;0 ~6 i' t) ~0 M: L- y2 |

  22. ( Q0 _; H8 |. A; Z: c
  23.              }4 {: \8 ]+ w7 w, E$ n! }3 _( c
  24. 7 w% ?% g0 u6 G; x6 h
  25.           }
    5 B- j0 E! w# F6 ^1 R
  26. % |; b8 f/ O0 [2 Q
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;
    1 d+ h- E1 w, s- z
  28. ) G2 F% V+ {4 J3 [
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));
    / M) g# x% O6 W

  30. 9 w& Q( U2 O- k' @) K5 Y
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;$ s7 e' z, y% N9 m; a; n
  32. ) o, i' M! I& c% q! o- X
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復(fù)制代碼
0 s/ H( u% w+ n$ J
通過輸出的NC程序,反向輸出的刀軌數(shù)據(jù)與原始刀軌文件對比,其數(shù)據(jù)結(jié)果一致。
6 T. |4 ^! O1 ?8 R2 Q$ o3 O, }
5 e5 F4 C* y; T" ~6 y
% k2 ^2 t6 G6 H9 B測試結(jié)果:6 t) f0 b5 \9 Q

, e& o" P! B/ L" g4 \9 c
8 z2 l" W# v+ h) \7 S反向測試結(jié)果 & ^' p( i7 r9 a  w6 F' e6 M

0

主題

25

回帖

17

積分

新手上路

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

使用道具 舉報

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

本版積分規(guī)則

關(guān)閉

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

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

GMT+8, 2025-6-28 01:48 , Processed in 0.169513 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復(fù) 返回頂部 返回列表