久久久久天天天天_久久免费视频在线_久久国产成人精品国产成人亚洲_日本精品一区二区三区高清 久久

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 7844|回復: 3

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

[復制鏈接]

433

主題

5759

回帖

901萬

積分

管理員

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

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

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

×
APT刀軌數據生成NC程序C++源代碼,本功能僅作為技術交流研究之用,代碼,功能可能存在缺失。需自行編寫刀軌數據的讀取與處理。以下僅為部分代碼以下為頭文件部分源代碼
  1. int  EQ_is_equal (double s, double t);1 f1 a, D3 x# h6 I
  2. int  EQ_is_ge (double s, double t);% p& [+ c+ I8 t% K4 Z
  3. int  EQ_is_gt (double s, double t);
    % D! Y9 o4 C* b" `
  4. int  EQ_is_le (double s, double t);
      ^2 R4 z% ]8 u/ }' P, G# S
  5. int  EQ_is_lt (double s, double t);
    7 V; g5 m& q0 Q, v( t2 a9 Z3 ]" W* i* J
  6. int  EQ_is_zero (double s);
    $ s2 _$ g: R/ k/ c+ [; G
  7. //=============================================================; T* q) F1 Z2 q, t7 c* [1 t) i
  8. double ARCTAN1 (double y, double x );
    , V+ k3 I7 q, B
  9. //#=============================================================( A5 @$ |  K' ^5 f0 l: _* M8 d
  10. double ARCTAN2 (double y, double x );) d8 E% Q$ K7 A2 ?* N1 r; g
  11. //#=============================================================( q5 ?: Y- i1 Y7 _+ u& t
  12. double CheckConst ( double angle, double constvar  );3 X  C- r6 E. I1 P9 f1 R. h; ]2 j% z* g
  13. //#=============================================================
    % V) w  x  U3 F/ |+ x7 H
  14. double Check360 ( double angle );: y5 D& }3 R2 `7 m6 W
  15. //#=============================================================! H$ |, m, J7 d$ r) N5 v; L
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );; I( {' b$ c- X, x7 x
  17. //#=============================================================
復制代碼
" |* F: ^& \! Z
以下為部分源代碼,用于判斷,計算角度等# N. A( G8 h4 }  z8 U/ R( Q  y
  1. int  EQ_is_equal (double s, double t)  P: }6 C0 r) e: o7 A9 k% m& S$ L. S
  2. 8 D  y) T# {. A# y' a! j  G* P
  3. {
    # ]# Z4 O8 X( z

  4. 7 C+ Y/ s. ~% v
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }, K8 |" O- k: |* G6 Q: B3 z

  6. 3 \  g! K9 [$ T0 H/ @4 h5 o$ B
  7. }! s" E* }) M' ?3 g+ U; I  u8 n
  8.   e  H& V# H* A, y9 A) V- [( }
  9. /***********************************************************************/
    , H) Q. h0 n# H: G

  10. 3 b0 D  I9 I- P- e  j4 t+ p
  11. int  EQ_is_ge (double s, double t)5 {/ k! z; g0 f+ U
  12. , @7 y" B3 D6 y* t
  13. {7 Z6 B+ _% K: A& s

  14. $ i' y$ K8 V8 h4 c7 I
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }# H5 l  @: y' r8 B# ~3 r6 `" t
  16. + a" T* p+ ]( T# }( h2 U# V
  17. }5 C( D7 B0 x2 k4 F' O

  18. 6 `: `* C/ G4 N$ s9 x
  19. /***********************************************************************/' f5 E* f4 O& v7 m1 s
  20. ) c; h$ l3 G5 _9 y1 o: n9 @
  21. int  EQ_is_gt (double s, double t)
    % t9 `: }  p( Y+ E

  22. ; g/ V4 [. \4 y
  23. {
    / a! F/ c, t7 k; T, f) B  i
  24. 1 Q6 z$ u* B5 E- ?6 `
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }
    4 U* C, Y8 f7 z8 P/ @
  26. & ?' v+ f/ C6 w
  27. }
    ' a# ^3 n' ?" F/ O! M! E3 ~4 C

  28. : ?0 D+ p6 j, t( b
  29. /***********************************************************************/0 ]6 c. h9 u% S) @8 r' w
  30. 1 ~4 _, ?" b! U% A2 _8 u% `
  31. int  EQ_is_le (double s, double t)
    , c$ w5 r9 G% X' ~6 ?

  32. 9 U# p$ A# c. n( f$ p& M
  33. {
    # E) B; _7 `4 n. T$ V4 N* E& L
  34. ' b  P# e8 C  I& a/ D
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }7 g& y7 N4 p$ t9 t- E, b2 J
  36. 3 I8 f5 O- `" c5 [  h; X# e$ j) L
  37. }
    3 ^# v5 f  H. _7 `5 x

  38. ; G; J3 V, q" O( I
  39. /***********************************************************************/
    & E; p; b) }* e: m4 ?
  40. & ?$ Z, `3 ^2 x( p" j
  41. int  EQ_is_lt (double s, double t)
    ( ?- j; h4 g% G/ {
  42. ; P8 P$ h$ |/ r+ o8 ~- h
  43. {
    2 z$ |/ k) s  u4 S0 p; C! n9 ]
  44.   M9 {( K0 g# z
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }$ G. {: j+ X7 d% [8 O- i
  46. : g0 B8 i. A3 |4 U* f; J
  47. }' K, c8 p$ @; ]! J, Z

  48.   x: L) G& V6 ^0 p, ~
  49. /***********************************************************************/: l6 u, f2 [! L) z( ]

  50. - }  ?" W' F' |' E' ~
  51. int  EQ_is_zero (double s)6 b: q4 ~% i4 D6 P0 L6 ?9 B" }
  52. 2 Q6 `* N9 J" o! M5 N
  53. {2 O  y, k5 p+ c! `' p
  54. 8 j6 |5 \8 V9 d  Z2 l
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }6 `5 _- U& m' y4 P$ q/ b

  56. 1 R$ F/ V3 K2 r- t& m
  57. }- p& S0 ~  ?+ k6 E5 ]$ [  n

  58. . b" X5 Q" [, l8 A- |2 E3 e( K3 \
  59. //=============================================================
    / x( X) K" Z" V" g" _) K

  60. % O. S4 ~) b# e- r7 Y. Q) \* p
  61. double ARCTAN1 (double y, double x )
    5 f2 S5 \4 ]+ _! x( v: Z+ [
  62. ( |, t* T: P3 A# i! `; e6 f
  63. //#=============================================================
    ' f$ y2 v7 C6 \
  64. 0 {$ b1 s7 r- P
  65. {
    ' m" Z9 J& P( h8 e) {

  66. $ S4 g1 `: A7 @
  67.    double ang;
    : ?* R' ~% H/ X( z" A: m, k
  68. ' }( z6 O3 n! B) Y5 q/ S* h
  69.    if (EQ_is_zero(y)) { y=0; }
    % |5 q+ S! D- F* ]

  70. * Q8 `$ G( s3 u3 |+ J2 E2 d2 d4 D
  71.    if (EQ_is_zero(x)) { x=0; }4 U( i5 C* C3 |  _* O
  72. $ ?7 U% `/ W# v
  73.    if (y == 0 && x == 0) { return(0); }; J8 q2 T  s- Z: D6 P

  74. 0 i3 N. Q- s( Y# g7 j$ D
  75.    ang=atan2(y,x);( U3 s9 Q3 g5 g( y
  76. 2 m7 ?5 g! Q" E; ]
  77.    if (ang < 0 ) {
    - c& }3 |- J- e9 G6 _) T
  78. 1 ?' x8 [1 I+ [4 u4 U" M, u. H
  79.       return(ang + PI*2);" O$ ~$ k7 G/ H* g' E
  80. ' c6 Q# c' h& t! K- i: d; F4 J6 x
  81.    }- ^( e8 v7 [' `! N$ X) q
  82. 1 ?! m3 C- ~; u( v1 L, o/ B* Y
  83.    return(ang);9 a, D5 f# F* o( q6 e

  84. 8 ?1 b6 p; ~# G. O0 p7 L: e
  85. }4 i; m4 i, o& r$ q/ l+ s2 N4 B

  86. % i  k; }+ n; l; L
  87. //#=============================================================
    ) _& Q5 m: _$ L. M* ?/ L  |

  88. $ }3 R& [2 ~8 H. o
  89. double ARCTAN2 (double y, double x )* C3 k2 L9 F! s( h9 i0 ~6 i9 A9 ?

  90. % r4 P1 t2 @1 S5 s$ ~6 r
  91. //#=============================================================# Y* N* B8 @. h7 R+ x' K
  92. # Y- a' S5 S- T! m* t
  93. {
    / _5 |4 K2 w6 s
  94. 0 G# {+ P1 A# @, e9 x2 U! x' q- E
  95.    double ang;
    3 l. c$ `7 K* }" y8 g$ l

  96. 3 }2 A6 E, e( Y7 f/ Q0 e: g1 O
  97.    if (EQ_is_zero(y)) {% u5 I/ Z* F2 U# W7 H6 D. s
  98. : s1 F5 A9 ^5 w% N; U
  99.       if (x < 0.0) { return (PI); }
    6 s& k5 O7 M' W

  100. : k( [7 y9 \+ Y2 ^9 }
  101.       return (0.0);& L/ j" h8 y3 H) {  [; F" U4 S

  102. 9 V( D9 k2 p8 x9 \+ T! Y  c; L8 D, S6 ?
  103.    }& V' f0 _! g# {. y; ^2 Y
  104. 9 D6 A5 a* U4 l" N
  105.    if (EQ_is_zero(x)) {
    2 V$ V- G; S/ I' |  P; K9 y
  106. - `% x3 ?. Q/ p/ d8 S: Z6 V, a
  107.       if (y < 0.0) { return(PI*1.5); }
    4 a8 Q' i8 V1 Z0 X5 J# Q+ G# A2 D

  108. 0 a! p6 n7 L( @
  109.       return(PI*.5);5 C8 K7 o! L  n) w: g8 j& L

  110. 0 H9 o8 w# ]4 n+ x* P* ~  r
  111.    }
    , S5 p3 a6 M4 _

  112. 9 w2 l3 s& D0 F# o5 |2 `- ~
  113.    ang=atan(y/x);7 z! e% k0 b8 l6 q- G9 J% d' g
  114. ! w) y/ ~: }) z' {- A3 Z
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }
    : \3 O6 f7 w7 B& L2 G% W& [
  116. * c' A3 n# U. l
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }
    7 h" H$ M/ U7 \/ F
  118. - M$ k0 J2 o: E* b/ V
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }* K2 U: ?* `: q) ?! l3 G0 N$ F. y
  120. ( R$ N. K) e! J9 k5 V
  121.    return(ang);7 ^% v- s. o9 {% I2 Y' V
  122. / J$ P& c0 V* _; Q5 `
  123. }
    4 ~1 r6 v/ ~: W( V" @
  124. * f" a9 ?% D* \; n+ \. b5 S! y
  125. //#=============================================================+ ]1 T/ L- Z6 o7 _

  126. 1 J+ n% i4 A. L  L+ s0 ]" k
  127. double CheckConst ( double angle, double constvar  ). I1 }6 Z3 b& t1 {
  128. 1 ]/ g6 [2 G5 ?' L' D* g
  129. //#=============================================================4 A: Z, }8 B0 d) b
  130. 6 p4 t' p, a) `
  131. {
    # q, P8 d0 m% T( ^: X8 ~
  132. 4 I& ?7 W0 d, d$ {+ e* f8 u6 f
  133.    while (angle < -constvar) { angle+=constvar ; }
    1 f% o0 R8 Z- u( w" b# D" _1 W% E
  134. 0 [! n( B% s; w! z
  135.    while (angle >= constvar) { angle-=constvar ; }
    ) t! M8 r! S' a7 A8 \
  136. , r8 t) h" U2 x4 v. R4 }
  137.    return (angle) ;
    ! l7 q0 g8 H1 N0 j, L3 k
  138. : R$ q; F  b( H+ ^# `
  139. }4 i7 y. }; ?3 ~( @: S
  140. % T# T: T$ o) X9 M. e6 j: U+ p5 o5 W
  141. //#=============================================================
    7 {( t8 [( U% U0 Z) X
  142. - W+ \/ y& _; ~4 z. J: j2 N
  143. double Check360 ( double angle )5 z9 }! Y' T  a, G3 B) e
  144. % C: q' e! P0 d2 ], z
  145. //#=============================================================* q) |1 R* h' j7 d& r$ L
  146. . @+ x7 U& h7 F3 a
  147. {4 b- `4 c9 a# n' h" A/ h

  148. 9 y6 d: d! [- U: F
  149.    while (angle < -360.) { angle+=360. ; }; B  n8 C  @% C: x' T, `3 M2 \$ P
  150. . Q" M2 E+ j4 c" f6 I
  151.    while (angle >= 360.) { angle-=360. ; }) H  _; q5 e+ G% G

  152. ; Q% G- _0 [$ O" h: e/ x  V; Q6 E
  153.    return (angle) ;/ y, B0 \* X2 m# ]; ?$ g' M
  154.   w& Z' }; q% P3 ?: A
  155. }+ R+ i9 X  ?. |2 S; @

  156. : w% a# y+ F$ X0 d1 B
  157. //#=============================================================' l4 I) p! m# |: Q. t/ B: l, w
  158. 6 W$ Q( p. s6 e: `; a; T
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )
    3 {5 m  @8 W8 x
  160. ) u# I0 x- X! M2 p6 }: L
  161. //#=============================================================% s. q1 i1 c. V7 ^! w3 \. z

  162. " O: N  f: k! w3 q, k+ ^* m
  163. {
    " m" Z" y4 S* ]' d: p
  164. 2 P" w2 E! v0 O1 C3 v
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }2 @/ S3 A, J: e! G6 G8 _

  166. 9 e1 x8 U6 H3 J- {4 v- e
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }
    , c3 B5 i) C4 g' H9 Z
  168. ' }' p* n/ a# |& G
  169.    return (angle) ;
    * [: j& O: I' M/ p
  170. * l$ {9 r- ?+ z. a9 P1 o! ]
  171. }
復制代碼

5 I1 q7 F# [2 r/ I& k4 D以下為搖籃5軸計算過程代碼7 B; C+ O& g  E3 C# I  m* J
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);' n5 U4 u8 m( a4 C' L

  2. # Z( p1 u# f7 I' V/ ]2 G- p2 _! n
  3.          j=0.; B1=0.; B0=0.;
    # G3 I) Q. J( U  D$ \

  4. 8 k$ k: F2 ~4 N3 ]2 o$ y/ y$ M1 W
  5.           if (EQ_is_ge(i,0.)) {8 @% Q0 E% N! _+ }1 H3 V& `7 `
  6. + {% o( X- i4 Q+ ~( }
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }
    / e3 l& _0 P( V# J2 X
  8. - {) G  W* h2 N" Z1 v/ p
  9.           }  h- o2 D2 a+ A
  10. 8 _2 r0 ]( f: S( b! ^; d7 q
  11.           if (EQ_is_lt(i,0.)) {
    : L8 k1 c  y: G7 r% h2 V
  12. ! k4 D# I4 U  c# n. z
  13.              if (EQ_is_lt(k,0.)) {
      ~- |( e5 |! w1 b8 ~

  14.   n+ ?6 j! o7 O7 u! t0 z1 O
  15.                 B0=atan(i/k); B1=B0+PI ;
    ; p4 b( Q, r0 {$ R8 }- R
  16.   O% f7 \) l  k4 e/ V9 x
  17.              } else {  o' n% D6 e; x* d0 z1 N# _( t
  18. 1 N" S! V  M5 C& u
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }
    . C: Z+ j2 O+ i" D% n( A8 w( C8 I. }
  20. . q% V" V; p/ D& P; {0 W
  21.               B1=2.*PI+B0 ;
    ) ?! q; M" j! m7 F3 l- G
  22. ! D  B4 D+ v$ R0 f2 P( B2 E" v
  23.              }
    ; t2 K! N% {5 c

  24. 9 p( m' Y' p; V
  25.           }
    & |- v6 q& T) F1 _+ X  K7 }6 W" b
  26. / F1 X6 U( {) W" ~4 _1 j; ^  x: N
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;
    $ G2 v5 V8 [* z

  28. . ?1 a# u8 S9 T. O9 E4 i
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));# M8 ]0 R- I5 `) A0 r
  30. 0 T# s% ^$ W  ~8 K
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;+ a& m! F9 a% t- Q; ^' _

  32. + r7 ~, O8 B) x  T
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復制代碼

) J9 x# C: }- L* |5 x- I通過輸出的NC程序,反向輸出的刀軌數據與原始刀軌文件對比,其數據結果一致。- m  D8 O; s( g$ I
& p6 ]4 J9 w# m) t! Y8 {
$ R# _6 D* @0 A! R* ~
測試結果:) o# c7 g% l5 t0 N9 y# |; `
; Y7 g! a$ \" u$ {- w6 p, P( j8 I- L

# }. M2 F" s7 F1 C反向測試結果 / C8 ~2 g9 n1 S- q$ m: o% S8 ^

0

主題

25

回帖

17

積分

新手上路

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

使用道具 舉報

0

主題

294

回帖

332

積分

中級會員

積分
332
板凳
發表于 2025-10-15 08:41:53 | 只看該作者
謝謝分享
回復

使用道具 舉報

1

主題

136

回帖

261

積分

中級會員

積分
261
地板
發表于 2025-10-15 12:52:53 | 只看該作者
感謝樓主的分享
回復

使用道具 舉報

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

本版積分規則

關閉

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

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

GMT+8, 2026-6-9 13:22 , Processed in 0.745219 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线亚洲一区| 国产日韩在线播放| 国产精品亚洲片夜色在线| 欧美激情 国产精品| 懂色av一区二区三区四区五区| 日本中文字幕成人| 性欧美精品一区二区三区在线播放V| 国产精品视频不卡| 精品国产中文字幕| 欧美 日韩 国产精品| 欧洲视频一区二区三区| 色妞一区二区三区| 亚洲a成v人在线观看| 77777亚洲午夜久久多人| 亚洲综合色激情五月| 91免费精品视频| 亚洲一区二区三区在线观看视频| 91久久久久久| 91久久久亚洲精品| zzjj国产精品一区二区| 亚洲免费视频一区| 日韩一区国产在线观看| 日本久久久网站| 欧美激情网友自拍| 久久精品午夜一区二区福利| 久久久精品国产网站| 久久99亚洲精品| 国产精品日韩在线一区| 国产精品久久999| 伊人久久大香线蕉午夜av| 激情婷婷综合网| 91久久国产精品91久久性色| 91精品综合久久| 日韩一区二区三区高清| 欧美精品亚洲| 国产精品视频999| 亚洲高潮无码久久| 久久久久久久久久久久久久久久久久av| 久久本道综合色狠狠五月| 成人国产精品日本在线| 无码人妻精品一区二区蜜桃网站|