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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

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

[復(fù)制鏈接]

431

主題

5752

回帖

901萬(wàn)

積分

管理員

積分
9013905
樓主
發(fā)表于 2025-5-21 20:59:21 | 只看該作者 |正序?yàn)g覽 |閱讀模式

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

您需要 登錄 才可以下載或查看,沒(méi)有賬號(hào)?立即注冊(cè)

×
APT刀軌數(shù)據(jù)生成NC程序C++源代碼,本功能僅作為技術(shù)交流研究之用,代碼,功能可能存在缺失。需自行編寫(xiě)刀軌數(shù)據(jù)的讀取與處理。以下僅為部分代碼以下為頭文件部分源代碼
  1. int  EQ_is_equal (double s, double t);
    - T0 q" g& ?3 i; u
  2. int  EQ_is_ge (double s, double t);7 f6 t( q$ E& @' U
  3. int  EQ_is_gt (double s, double t);2 u% ^" W+ Q3 {1 H/ u4 |1 u7 t
  4. int  EQ_is_le (double s, double t);* e' d0 H$ Q% H: Q  v  q- v9 R
  5. int  EQ_is_lt (double s, double t);
    $ Z2 q" [1 ]6 x# l3 Y" x  U
  6. int  EQ_is_zero (double s);
    / T& G, v$ C* X2 v' Y; v3 n
  7. //=============================================================* v- y4 e8 M' m8 \  A( W
  8. double ARCTAN1 (double y, double x );: ]2 g8 m: N) {% `  P
  9. //#=============================================================
    1 R1 S8 P' W( R2 k! o; r9 {
  10. double ARCTAN2 (double y, double x );
    1 B9 t5 o4 j/ A4 u2 j7 A  A
  11. //#=============================================================( Y" v# d$ O$ e: }4 p
  12. double CheckConst ( double angle, double constvar  );6 D+ {+ O; p7 L- [0 Q+ M8 ~
  13. //#=============================================================
    " P, Q4 ^1 J, o9 d7 b/ V
  14. double Check360 ( double angle );+ _: J9 y' t1 s/ w) D. Z$ K+ i  q% c( e
  15. //#=============================================================
    7 L" d% T6 c# j2 _0 \& |% r  d, H6 u
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );
    + j5 c9 w) p: O6 }2 t
  17. //#=============================================================
復(fù)制代碼
) v! Y* M0 x" T5 V
以下為部分源代碼,用于判斷,計(jì)算角度等9 q: s) Z- Y0 H' w$ T. h: L0 A
  1. int  EQ_is_equal (double s, double t)
    3 }' s# P) P4 m# i6 E) Z5 S! b( d

  2. $ D7 N0 R6 d5 s7 \8 d4 F2 A: l; c& H
  3. {
    + b/ s: c( ]4 w% ^

  4. 2 z9 E0 I0 M' p% B$ i7 ?1 E
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }, k( e2 Z! C0 M  m

  6. 3 A0 b2 X# F" c/ I' m4 l* e
  7. }) n) }4 ^  ^; V: G; ]

  8. 5 Q2 @6 q. u; a5 |
  9. /***********************************************************************/( Y, U7 _  L7 {& \5 V
  10. ; V/ s2 s; r" d2 y% a* B
  11. int  EQ_is_ge (double s, double t)4 S) Q+ E" K$ Y  w0 N( O4 D

  12. * S7 O8 x9 z  \. _: K
  13. {0 ]( u& {' P! }! q3 H

  14. - X8 K9 Q. z& Q3 e6 W- K" l
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }
    2 m  {$ p! l/ \" w& X* x% y

  16. - k% `; L" T& k8 k0 K
  17. }
    4 a6 L9 S% H' A
  18. / \' {+ H4 [; o" H4 `/ J8 L
  19. /***********************************************************************/
    4 h* a1 k$ [5 n/ ]" V  k+ y

  20. - l. Q( ~: ?. U( m7 J% `
  21. int  EQ_is_gt (double s, double t)
    ' z; F7 B4 n! Z( L6 X- u: B

  22. $ {$ [4 i% H9 L4 n- h9 C9 y
  23. {2 @( E% Q, ?) N# @7 c( b
  24. 3 d* D! n; F0 Z# s
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }* o/ S7 O. C3 i8 x+ ?$ D

  26. + d: h" W- H! R" ]1 U" l
  27. }
    $ u5 J1 f9 j0 u9 t. R/ C# r

  28. 0 E$ a$ I& q* g8 R. m
  29. /***********************************************************************/
    4 o  A  P# m" }, t+ e
  30. ) k5 z4 g9 w& a/ `1 O. l0 w  o8 b. l
  31. int  EQ_is_le (double s, double t)( K4 I& E6 W; n6 r3 I

  32. 4 e; F0 v! l4 R. _. f! W: b
  33. {  F) `/ N' b) v+ l' j

  34. + I% K$ v' V" D  K" K0 Z( i
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }
    " Q; [- C+ f. H% B3 P; ]
  36. ( I- Z. [3 h* \. O, h
  37. }7 Y+ f6 J; Z0 B. ~7 g

  38. & W' v" l, D: @; Y! C9 v7 k
  39. /***********************************************************************/9 j/ z$ J: Y4 Q; V% i
  40. ; i! [2 L2 q) N  g# e4 k9 E
  41. int  EQ_is_lt (double s, double t)( h+ _1 z4 N5 p6 a; `) a5 s9 }. O
  42. 1 o3 F# u8 b& M9 p
  43. {
      X+ \' V4 R9 G2 a0 W

  44. 5 r. [+ ~# N0 r+ i4 k5 q' q
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }- s9 O2 H/ h% }# J; {" j3 r
  46. 8 X2 c3 Q1 @. f: H% M/ B0 K
  47. }
    : q% a  b9 l& p* \
  48. ) c/ [$ w) ?( e3 y$ c; M! C* \( @- @
  49. /***********************************************************************/
    5 A# `* q! E4 a7 N
  50. 0 c( S8 t0 P( ?4 j( K
  51. int  EQ_is_zero (double s)8 y0 [. M0 ?+ X: F
  52.   g) t4 O4 x9 s  s
  53. {
    & R- X$ A# u% X- u% R( U* |

  54. & G" M8 |8 Z/ A
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }1 H5 f! a% p2 W

  56. 5 ~* a$ }8 _: a
  57. }
    : _6 q$ s# l( {
  58. - G1 L$ J" w  \
  59. //=============================================================
    & M$ z. d& }! x9 g* R( e/ X
  60. 4 _7 q: u3 Y" R  z- G
  61. double ARCTAN1 (double y, double x )" X5 \2 w, t* ?: F! w
  62. 5 B) r9 Y  `; k! u
  63. //#=============================================================8 a& K$ m) _; E& H  u

  64. / v, ~7 d' ^  h- p% [: X
  65. {- G) b. ]9 I( N, I3 k6 j! T+ e

  66. ' Y7 l- r8 U0 ?. O2 Q+ S- g
  67.    double ang;% g3 L9 o. w& Q. C
  68. 4 j. `, c& [+ |' H
  69.    if (EQ_is_zero(y)) { y=0; }+ h+ ?6 J" G9 d7 S2 K3 F  @( s9 z
  70. . G% w# j' ^. z' ^+ z
  71.    if (EQ_is_zero(x)) { x=0; }
    ' `" d+ J! W- ?' R3 B  d
  72. 3 c! [5 l5 z: x$ y
  73.    if (y == 0 && x == 0) { return(0); }( ]7 ]( q' w+ ~! @& M

  74. 6 ?" t/ d: |. R2 e
  75.    ang=atan2(y,x);
    8 K, h* O' _& A# f5 l) H1 C

  76. ! G3 _& \4 }0 [# o( J; w. }
  77.    if (ang < 0 ) {; R9 ]' ~* p" I! E  m
  78. / |) d* G) M% h( e! j# Z
  79.       return(ang + PI*2);
    & M8 D  ^8 H- P
  80. $ G) b% Z- Y5 l  {& r9 E
  81.    }+ k! h3 L7 b3 k) K; c# t

  82. 9 J; K$ N) _( C+ f7 y
  83.    return(ang);
    , y. h; j. a6 `8 p7 e! y- V

  84. % z4 }5 J) F8 F
  85. }( P* z. b0 |* p: G3 |) m/ z* R
  86. ( ]7 M  p! e: f* w" Y3 q" d: E
  87. //#=============================================================5 y" w9 f* y$ k5 a, \

  88. 3 B6 W3 b* G( e- S" d" {; P
  89. double ARCTAN2 (double y, double x )
    9 Z8 X8 c" i" |; v

  90.   C+ h: |8 U; ^: i5 r" _
  91. //#=============================================================  p5 X( ]+ S5 [+ V' V
  92. ( `: \2 G7 x6 T/ u7 a
  93. {
    0 }. `  P' g- B8 e' c/ A& `7 P/ x# D
  94. ' X7 A8 x! F2 _1 l8 K3 S' h) Y
  95.    double ang;
    0 |. N  c0 H9 C. n- ]8 G2 r* U+ t& B

  96. , P* h. A0 W& j3 s5 Z, J& K* ]
  97.    if (EQ_is_zero(y)) {
    / Y9 _) q0 N4 ~7 W
  98. * C, i2 P, \+ c& E5 ]
  99.       if (x < 0.0) { return (PI); }0 ^1 T6 D2 R; x" a+ @
  100. + c  c9 u! V! i2 l( x! P0 M) A
  101.       return (0.0);0 e0 J* j' J4 P& S  O, T$ I- X

  102. % I' c1 [/ E6 V: [5 [& D* E! N
  103.    }
    - d2 q) o, Z! w% i0 Z3 ?  H8 x
  104. . Z5 w' z/ G& }7 R+ d+ F
  105.    if (EQ_is_zero(x)) {
    6 T* A) C7 z9 o% i

  106. * A' |7 h7 Y! N4 V% A
  107.       if (y < 0.0) { return(PI*1.5); }9 p; n. a8 o) R+ N
  108. 6 s3 d; X3 M# h( O
  109.       return(PI*.5);
    ( m- _( l) \. n0 }7 o6 `
  110. 8 P+ d) A) D. X( k9 N! P2 L
  111.    }
    : w0 y# n9 b" S7 S- Z' a4 d
  112. 6 _; k; _- N4 \4 s) f- l. _
  113.    ang=atan(y/x);
    2 I' B1 c- e9 k& g

  114. 0 k" O, D' o! J9 {3 e# L5 r
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }
    . E% T2 G: d7 |9 R# S

  116. & j" u' `4 f% i& R! o8 I* R/ T0 Y1 K# b
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }& K6 S* }. M* |6 d# u  Z$ [6 v

  118. ) |, E0 W' S- q5 h" r8 q' v" z2 a1 {
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }
    4 j: g" h3 Y& c4 [' f0 E

  120. 8 F5 X: |* S9 J# ^& F
  121.    return(ang);! V. H& f" [: p, y/ @
  122. 4 @/ g0 x) U- {; E: ]( r
  123. }
    , Y- _, f$ o' }9 o7 n1 ?
  124. ' t% u6 `4 x9 h! _6 k- o
  125. //#=============================================================" K" p1 M( m  X3 @4 c2 e4 h% \

  126. ) Q4 P) Z. s5 q, x6 M% U% H
  127. double CheckConst ( double angle, double constvar  ); l! C1 o4 P7 [) z2 z5 t1 E, Z

  128. $ }% T1 y& [0 F+ N# j  M
  129. //#=============================================================
    5 B5 R6 ]( `: X, Q! B' h4 [, B9 l

  130. 7 U8 ^8 J! Z' s" ^  B. K! \$ Y
  131. {
    8 p' l5 k2 ]5 S* r5 |7 A
  132. 9 v1 P! w" C5 Z$ ?; m
  133.    while (angle < -constvar) { angle+=constvar ; }! E& m7 r- K2 y8 I) \% I' `
  134. * Z! T1 [' H5 i3 k7 p" {- A: c1 U
  135.    while (angle >= constvar) { angle-=constvar ; }! H' q3 G8 X! K$ g7 _2 m
  136. 8 J- z: i9 ~$ g" R
  137.    return (angle) ;7 r  T# b  F+ q& R& g

  138. 4 C' @# o% b0 _3 i- ?
  139. }
    - {$ h( P1 @+ u+ i
  140. * G. c* L% P1 f: h6 c1 f. \
  141. //#=============================================================# T, Q0 u7 L. h
  142. 7 Z4 F3 O. ?% _& c
  143. double Check360 ( double angle )
    : x! ~; ?5 Q% g' n5 y# J7 D" R
  144. 6 U) i* a7 M( S9 B$ X7 @% t+ ?+ {. G+ n
  145. //#=============================================================4 }+ k( k' O2 w/ p0 z5 u5 G
  146. ) n0 \3 |8 e; N1 W7 n& x
  147. {
    5 T$ e5 r$ k% g9 H8 z
  148. " @1 I+ n* K0 A( \
  149.    while (angle < -360.) { angle+=360. ; }
    + b/ S! p3 k" P8 y7 P. g0 c

  150. 3 N8 A8 S3 J& b7 |* d$ J
  151.    while (angle >= 360.) { angle-=360. ; }# i8 Z3 K. F0 w( R5 H0 H
  152. ; ^6 Z  w7 E2 r- y, ?# O' ~7 c! D7 x
  153.    return (angle) ;. m0 q  a/ o, h% r$ c; C

  154. 8 b4 R5 Q; v$ m0 a# v; v2 u
  155. }3 x" |- ~: _& v) G1 X! ?) j% d

  156. 7 H4 B/ u4 N) ]
  157. //#=============================================================) Q4 h3 I( T4 ~/ d, |- n2 M
  158. ) N' L: g) t! v+ U3 \1 \4 T' D
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )6 h; n6 b- T1 W; a4 w4 _* j
  160. 8 S, A$ T' h3 }( t- ]% h4 T8 q
  161. //#=============================================================- x7 C- R) b# S5 K4 k# s2 d

  162. ) v; y: P: G' g3 {* G* t4 R
  163. {
    ; i: s/ `+ n) G" I* F* C
  164. ! ^: W' m# k  O2 Y+ T3 S2 o  l
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }
    4 w% g# E7 t1 s$ `6 Q: A/ t

  166. ' V% _/ P: U* _/ z
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }$ Y) s3 R) \& j* |4 K; ^
  168. ' L. k& M, D9 G5 u
  169.    return (angle) ;
    * W$ v3 _9 z8 q7 d: m

  170. , T+ ^  A. i' q/ C$ _+ h
  171. }
復(fù)制代碼
3 _& X( k. F; N: P' U# X
以下為搖籃5軸計(jì)算過(guò)程代碼% {8 R; ]) K5 `7 @6 h! _
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);' G, M5 C9 @- X* N: {- w; y& X. ^

  2. 6 O; T& R6 D9 k
  3.          j=0.; B1=0.; B0=0.;6 \" Q, n5 ^6 n1 N* e2 n

  4. 0 Z' O4 V/ E7 K
  5.           if (EQ_is_ge(i,0.)) {
    " J3 S3 {. S- r) g6 P" a) C

  6. ! y3 `- n0 X' ~4 Y. t/ D
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }
    3 Y8 s# p5 Q$ z7 A
  8. 2 b; M' u: F! e* `* w( V/ k
  9.           }( P; p" D% C% Q- j/ J

  10.   `9 h) y6 v' r, C- ~- H0 W
  11.           if (EQ_is_lt(i,0.)) {; u( ]2 q0 k! s3 D
  12. , }% J( R" G, h5 ^, w, }
  13.              if (EQ_is_lt(k,0.)) {8 m( }0 `8 F& u$ j- g7 ?
  14. 2 E( F% c# |4 d8 I: b
  15.                 B0=atan(i/k); B1=B0+PI ;
    / o. S2 y& K2 q! V+ c. R6 X( n

  16. 9 G( J/ X2 R8 J
  17.              } else {
    1 \8 y$ M( I/ L0 F# L" O

  18. + B" L- r4 x" G
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }- G3 w/ ?  @  Q) k8 b1 u" x
  20. 9 @  ^* u' `. b0 K9 n
  21.               B1=2.*PI+B0 ;; L5 H7 i* x1 {0 D

  22. 7 Z; n, S$ h) g! J
  23.              }) [' p' b1 g/ c/ b. O3 Y, i

  24. 5 w$ R' p. m  O- a/ Y$ v
  25.           }
    2 m  m4 V; W9 F& j3 M7 K
  26. & K% s' i4 c& V
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;2 B8 t  U8 A3 Y" A
  28. 4 B$ q9 }% T. ^3 |( e
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));7 U) s! `9 g7 E9 K3 W% z
  30. " b' f, D4 Q8 A' l( l5 F( [4 ^
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;
    2 W( G# v8 g+ v- \

  32. 9 @( o4 T# C9 j6 k; z, ]) J
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復(fù)制代碼
* [9 @( D' C, I9 _5 t, A
通過(guò)輸出的NC程序,反向輸出的刀軌數(shù)據(jù)與原始刀軌文件對(duì)比,其數(shù)據(jù)結(jié)果一致。1 j. V0 f; n/ Z" q' d6 ^6 n& s7 M
2 B5 U0 z# _7 ]. `
# J" ^- F& F  C4 B* G3 w
測(cè)試結(jié)果:% N1 m/ K9 Z' y+ l* i- z$ ~
1 P) W0 Q  N, u2 u! g; C) l8 T7 P; p

9 i( X; `- e7 M, Q8 P% v4 ]反向測(cè)試結(jié)果 ) S( P# d2 h# Y, i: Z5 L; y6 \

0

主題

25

回帖

17

積分

新手上路

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

使用道具 舉報(bào)

本版積分規(guī)則

關(guān)閉

站長(zhǎng)推薦上一條 /2 下一條

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

GMT+8, 2025-6-28 09:17 , Processed in 0.158855 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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