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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 7843|回復: 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);6 w! \( L! Z& i! K. w3 F
  2. int  EQ_is_ge (double s, double t);
    . V& A5 L' `' u& Q$ I% V
  3. int  EQ_is_gt (double s, double t);
    7 r: {* X: |; z7 m) o' K/ x
  4. int  EQ_is_le (double s, double t);
    2 R3 f1 L6 h2 C( x* u; ^
  5. int  EQ_is_lt (double s, double t);$ r2 j3 i, j/ H' i
  6. int  EQ_is_zero (double s);
    * ?9 n% k# b7 C3 P
  7. //=============================================================, X6 _5 O9 s. G* j2 C* M
  8. double ARCTAN1 (double y, double x );
    * B: a+ }; f' j* H, {8 `' z" Z9 [+ \
  9. //#=============================================================
    ! _7 t, F9 r8 u. ?7 a% _! P
  10. double ARCTAN2 (double y, double x );0 w/ ~( P. e% R& L" ^; ~( x' J( u
  11. //#=============================================================! J: @# I4 Q/ s' x+ ~
  12. double CheckConst ( double angle, double constvar  );
    1 h/ Y5 F8 e& c1 Q  o( a: V
  13. //#=============================================================  j. j+ o  M9 q7 v
  14. double Check360 ( double angle );
    6 D. q/ Z9 U9 Z  X9 O
  15. //#=============================================================/ j! r# x) g! ~0 e8 \% Q  P
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );+ R; L$ f, ]! w9 j
  17. //#=============================================================
復制代碼

* @7 k7 x' x5 h% ^9 p( w以下為部分源代碼,用于判斷,計算角度等5 p, v( r+ ~3 i+ T0 }
  1. int  EQ_is_equal (double s, double t)( P& k) |7 m: i* o2 _) U/ F
  2.   _+ D9 N9 K8 \! }. V& G
  3. {
    # `; j/ q9 n) v
  4. $ O; z- o+ `1 ?% T0 w' R: ?
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }9 T$ J2 Z3 [. D' Z: T

  6. 7 b: m% X2 ~: J: T& k1 L
  7. }
    ; g* x' z. h2 I5 |! X
  8. : [5 P& _" O0 ^; O: h  U
  9. /***********************************************************************/2 \0 T  \* b5 G, z. r- o( b
  10. 3 n2 V% z$ b; ^, H& u. `! u
  11. int  EQ_is_ge (double s, double t)# V6 v" I- u# @

  12. + Z' c+ r: W7 u7 C' e3 c" C
  13. {
    7 F$ P6 x" Q" J6 v5 B6 c8 M- ]

  14. . H5 ]# j0 }/ b
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }9 v/ m& x3 [7 p3 E

  16. 1 S5 A( o2 \( u. h+ t( r' `# l
  17. }
    " ]+ E' {" B5 |9 T( V2 j7 X: `

  18. $ a8 `, K  _3 A( F6 b, J
  19. /***********************************************************************/% s" h( B) n8 ~# g% O& N( G

  20. 4 X* I8 U8 d/ j6 t# F/ \* [
  21. int  EQ_is_gt (double s, double t)" N; W- p' [3 Q: Q
  22. 9 A1 }: E8 B/ _* x6 y
  23. {
    9 H6 v! X" ?2 M3 d, o) ~9 o3 Q4 X3 p
  24. 9 i9 }  b1 y# \$ \' U  {* j
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }
    4 @) T% Y5 I8 W1 H( @
  26. ' q$ j. W8 z/ T# z7 M  {
  27. }
    * A0 }7 [+ B: ~9 Q8 W

  28. " q& p3 V3 y/ ?+ L9 k) B
  29. /***********************************************************************/4 l" n& O5 ]# q6 V- ~* j# s
  30. ! x7 {2 [& r- K4 N* R5 J
  31. int  EQ_is_le (double s, double t)1 O/ M! m7 @( I/ u" M  r: T

  32. 1 F' s2 |: X' [7 J
  33. {* R+ d! b# m5 z* j& A1 h; T

  34. 8 t% [) h5 q' q# @0 ^
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }2 Q& v7 y' A+ k; @4 _4 G4 \
  36. + i1 l& k. o$ L# a3 c' F: A* O
  37. }
    : m/ L3 w  y# @/ g% \' _) G5 ?
  38.   u% b6 \6 r- ]; ^+ {+ P3 f5 m1 c
  39. /***********************************************************************/
    9 K7 O: z& s& B; J! X3 G

  40. 3 S) z! L0 q6 g) J; p
  41. int  EQ_is_lt (double s, double t)0 ^* r' O, w* B, e8 e' z9 d
  42. + A+ l* M0 A$ M1 b3 |+ z
  43. {) f2 F* b# i* ~

  44. 8 K6 H7 k. q! [4 a) `' ?. v2 z' y
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }
    8 o1 U1 Y9 E; D; \

  46. : c& T# c' ^# g( a
  47. }
    2 C3 |2 n# h# ~( Y. Z* J6 M

  48. 9 I$ p6 u4 {4 M$ ]# F$ u
  49. /***********************************************************************/
    " n* [3 j2 ]0 W/ B
  50. " |5 K4 M$ i% ^" V  V
  51. int  EQ_is_zero (double s)
    4 I6 W" w. n% _7 D4 J
  52. / j+ \+ B% G  N  D1 R' k! K
  53. {
    / A8 I) y# g/ g/ k

  54. - v8 M. l, _3 y* t& ]
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }1 F1 y! M+ t7 u2 `# X5 Q- C# C
  56. 8 G. U1 i! D( G6 x# S  }
  57. }
    + {7 W. _- m# c0 Y& ^; f

  58. 7 X" e6 t4 R( D8 \5 r. q
  59. //=============================================================- w  F) u* V3 X1 L  r" V

  60. # a: V5 Y$ x* C# p
  61. double ARCTAN1 (double y, double x )
    0 S- O9 g/ Q0 l5 l

  62. ! U$ g# q9 c' Y. a/ J) I
  63. //#=============================================================* S. {8 x3 J7 U+ B5 R# X" U

  64. ( P5 d6 ?  [1 x$ O3 f. L
  65. {
    % m0 N  N: S1 `8 X

  66. 9 ?. B. ]/ \2 N$ M8 n! W
  67.    double ang;8 q; ~$ b9 p1 {; y
  68. ) e' H; E& `# q9 o8 Z3 {' q6 N
  69.    if (EQ_is_zero(y)) { y=0; }, A' j: w' N+ M% ^) D+ q

  70. 4 b- s9 a4 i# |% X
  71.    if (EQ_is_zero(x)) { x=0; }
    1 g7 ^/ n7 E0 T7 z$ S) g& {- d
  72. 9 u2 b% |4 r( h3 O* t
  73.    if (y == 0 && x == 0) { return(0); }( M/ s4 _5 Y3 R
  74. ' T, u9 U8 {0 \
  75.    ang=atan2(y,x);1 a4 ^4 j' P6 b6 A1 t; c2 I: g3 k4 L
  76. ( ?' r9 m( ~* f9 i5 @4 w: j* m
  77.    if (ang < 0 ) {
    $ l, k5 ^% `+ X4 [' u) @7 M
  78. & g( b4 C3 g) r3 P1 H0 e
  79.       return(ang + PI*2);
    , k5 e" r5 {" S8 @7 w- _
  80. 0 w, H- ?0 Z/ z* Q; _: n9 A+ {: |  p
  81.    }
    & e& `+ l2 O( B3 j& B

  82. * H4 e+ N6 B9 @: u3 Y! U
  83.    return(ang);
    % H" E6 z# E/ X, ]
  84. # B# v  n; i- w# K6 ^
  85. }; ?, h* Q( r/ J1 m; q5 b
  86. % \4 ^' L* j5 Z# F, k& R
  87. //#=============================================================1 D1 p( t( _5 f1 G: }" Z
  88. 4 w0 z- ]* x0 {" r
  89. double ARCTAN2 (double y, double x ). A; Z8 L3 s- G/ M" f: d! s
  90. 1 k: T" m$ c- Z. a
  91. //#=============================================================
    - g) m$ h" A; L/ ?9 `
  92. 8 p; q& W" P3 `  L5 x: |
  93. {
    3 J# ~( c& Z' X$ A  l* W( ?

  94. ( q- ]4 }& W1 B! f- b; U+ G
  95.    double ang;
    ! Z' F8 b- J2 g9 ~& H
  96. " G) z$ h6 Z& P6 `# U5 i
  97.    if (EQ_is_zero(y)) {. F# Z  X# }2 q7 B

  98. # G" v6 J$ k$ B, |  f
  99.       if (x < 0.0) { return (PI); }$ j1 l- S( C4 _8 w. N) I
  100. $ c  ^! X5 w3 N- D. N
  101.       return (0.0);7 ^: {. `& `( R7 s7 i! f

  102. 6 u1 z$ w; i, W1 y
  103.    }, q; M7 h- [. k, X( R$ H5 s( i) h: i

  104. " W) P% v" P) {/ u# x5 ^
  105.    if (EQ_is_zero(x)) {
    ( N4 l; a6 o  r% l# H
  106. " q" H6 q; t7 Z& O
  107.       if (y < 0.0) { return(PI*1.5); }$ k0 g  }! x  d! t5 f5 B

  108.   S) N9 Z8 M7 p) ~0 _9 [
  109.       return(PI*.5);
    " O. N; X$ @4 r2 M% m1 B( P
  110. 5 z: X  G6 T7 S$ ?$ Y# A
  111.    }
    4 _6 d& T+ N" x( r% z: n

  112. / ]7 F0 R- B8 S$ Y
  113.    ang=atan(y/x);
    - E& s" D/ ~* O* }4 R6 B" o

  114. $ H: O. G3 W/ f) M( F3 t) S3 S- d
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }
    & D6 U4 x3 }( v; }" y1 [! [

  116. " a: ^/ w" r$ y
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }$ R4 o1 d7 ?" P# {, [
  118. + L& f' T6 w7 _: I+ o
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }6 i$ u" g$ H" {! W9 Q
  120. " [6 u- A3 j. y1 e3 ^, ^
  121.    return(ang);
    1 Q: e' J: p/ g' M

  122. $ ]7 W: E7 J/ z, t% C5 n5 B
  123. }7 V/ O3 c. j$ E' B& i6 \9 }+ G. Q

  124. , ?, j( r: P) l9 c
  125. //#=============================================================
    3 }9 ]: D! S; f6 R$ o

  126. , U" g* k% `- T7 R6 D! ], |
  127. double CheckConst ( double angle, double constvar  )* W5 m5 H* z6 f

  128. 3 r3 _. X1 u5 r+ ~8 F* ]# A& y
  129. //#=============================================================" o% @8 \( F& W& Y% I& L- P

  130.   Y5 q. O8 S) S+ V$ I$ ]! L8 R# J
  131. {4 {. Y/ u$ l- R- t
  132. ( w' _2 S+ \: o# u5 l* G0 v/ |
  133.    while (angle < -constvar) { angle+=constvar ; }! g3 z! z/ R# L& w0 {

  134. 7 e) j/ u' q) e) v
  135.    while (angle >= constvar) { angle-=constvar ; }
    - Y+ `( o; z! P7 q- E
  136. / p, r- q" d9 A6 J' \, S
  137.    return (angle) ;
    # ^# U" s( ~3 K. c4 {
  138. 4 r, T0 U/ b; w; T- H+ m
  139. }. [/ ^: ^% l5 x" K& A" k

  140. 1 P+ s3 ]3 K8 x+ D; }
  141. //#=============================================================
      V# u1 x4 M9 Z  y( L/ Q
  142. 6 S; ?( V( y( J. b& a; h+ d; |
  143. double Check360 ( double angle )
    " x/ H' D" r4 t) q
  144. 1 g/ j& V5 T* }9 ?8 ~4 R' @
  145. //#=============================================================3 w) I* D6 d/ \1 C) P) s4 d1 {

  146. . z) u; a2 T4 i6 v4 g1 n
  147. {
    0 z) ?. n2 h5 w2 K( N& c
  148. 8 `7 j: g3 G" M  E' ^4 j
  149.    while (angle < -360.) { angle+=360. ; }
    6 |' v  R( b" ]; P; H) j
  150. 5 [/ x$ Q  G) _& C: g/ Q
  151.    while (angle >= 360.) { angle-=360. ; }
    ; U" }3 Q2 B0 M2 R5 I' W
  152. 4 X7 N: ]% E. m. H8 V& B5 M; n5 Q! D$ z
  153.    return (angle) ;
    " N) V6 i9 Z8 Q/ s
  154. * _  F3 h$ y) i! ?6 v% x/ V
  155. }0 _8 r6 ?; e& M  h" H
  156. " F: |. T* R: n
  157. //#=============================================================9 g( t  t- O9 d9 N' c
  158. 9 j; O) g: ?5 I  ], c
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )6 P8 q) F: t7 {! l9 C7 ~

  160. 1 v" I6 j* d* D- X/ t3 O# t0 Q$ J
  161. //#=============================================================1 J* g, i% w" A( c, m$ I

  162.   L- k; R5 i3 r; C- N
  163. {# v1 G# s" E+ g+ ~/ G% r( ~, V
  164. 6 M$ i4 N# `& f1 ^! }1 {
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }
    3 @2 H! J8 U' N# v
  166. & m2 e! l" J% ?' q* T' ]8 U
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }0 N& _% l. b# _! B* a( g  t
  168. , f8 w8 {( b+ G& r" E' n2 [
  169.    return (angle) ;
    - V5 q' x: m2 l5 u

  170. ' [2 _$ J' L- ^
  171. }
復制代碼
, L: T% _' s% |2 [
以下為搖籃5軸計算過程代碼' d5 I5 ?; ~  w$ B
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);4 o2 N& w# Y0 Q/ f. [

  2. * U% A5 n8 N7 I0 d# \
  3.          j=0.; B1=0.; B0=0.;
    0 `. X3 ?9 a1 z- s; H& @

  4. 0 Z7 |4 n' Q* n# r8 Q1 e
  5.           if (EQ_is_ge(i,0.)) {
    ( o* M7 O& G; f5 @) Y

  6. & F$ q* h. w) y$ h" a2 u9 C% ^7 o
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }
    5 @) a* S7 N/ V# L: M

  8.   _9 T4 `! `6 D4 s( b+ d
  9.           }
    $ d6 e  L! |( f" k$ a% }

  10. " g% f( q0 J1 E4 k6 V) a3 G/ ~8 e
  11.           if (EQ_is_lt(i,0.)) {8 W  y! o  w' D& {
  12. ; ]1 `1 G, }/ _- n  b
  13.              if (EQ_is_lt(k,0.)) {
    0 x8 c6 s  I0 d# [6 S5 h5 ?
  14. ! p9 ?, b3 Y2 a0 H9 [" [8 W
  15.                 B0=atan(i/k); B1=B0+PI ;
    + {* c# f# q0 E6 F

  16. 7 B" R, M( x0 k, ]9 z- h' s3 t
  17.              } else {9 u7 H2 O- K9 N" J( M/ Z0 v, [
  18. " n- r+ l& j" l" L- V- m( P
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }9 V( ]* M6 ~4 k' i

  20. / T3 v" ^7 g# J7 k' i
  21.               B1=2.*PI+B0 ;0 K- J# M" i6 A4 w( P7 [1 E
  22. 7 l# U# `  Z& w; E6 W$ a8 \7 H
  23.              }% O6 _  O; I7 G  a  B( R- S  X  t
  24. 3 `$ @6 n8 u0 u" a) y
  25.           }8 e2 _* ^8 G. @! ?% D

  26. 8 W# m3 ?6 T- w0 c% J* j
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;
    ! a$ r3 @% }& n' C% q: `
  28. # h$ W, u; d6 O! i6 V
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));
    " g7 O2 i7 F% ]) c/ v( W8 w7 f% L. v

  30. % u# `' L8 O2 G  J" K+ q% Z
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;+ N* X5 X* k  f/ p

  32. 7 k# d) W! F5 c) v* C
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復制代碼
7 `% P4 t2 p& @/ j, ], s. D
通過輸出的NC程序,反向輸出的刀軌數據與原始刀軌文件對比,其數據結果一致。! s# m$ e- x7 G' o* b6 i% H4 ~0 {

0 ^- O: Z5 g; R# i) e / p$ C4 [; D0 L5 O" i
測試結果:
% P! D% E' O  Z# k: ]1 A. u
6 d8 L1 c& P0 H8 L* v6 H( ]3 E2 O3 R# e" `7 Q
反向測試結果 * E! e) k$ A* F& p! e9 f

1

主題

136

回帖

261

積分

中級會員

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

使用道具 舉報

0

主題

294

回帖

332

積分

中級會員

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

使用道具 舉報

0

主題

25

回帖

17

積分

新手上路

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

使用道具 舉報

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

本版積分規則

關閉

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

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

GMT+8, 2026-6-9 12:11 , Processed in 0.463673 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av免费一区| 国产精品第3页| 日韩欧美精品一区二区三区经典 | 免费91麻豆精品国产自产在线观看| 久久精品99| 欧美在线视频a| 亚洲免费在线精品一区| 国产精品 欧美在线| 精品99在线视频| 欧美激情极品视频| 欧美日本在线视频中文字字幕| 日韩中文字幕在线播放| 亚洲精品欧洲精品| 国产va免费精品高清在线 | 久久精品.com| 欧美精品尤物在线| 日韩一区二区三区高清| 亚洲精品日韩av| 日韩中文在线中文网三级| 亚洲人精品午夜射精日韩| 亚洲精品免费在线看| 日韩中文字幕国产| 日本一二三区视频在线| 欧美一级免费在线观看| 欧美日韩精品不卡| 免费在线观看一区二区| 欧美日本在线视频中文字字幕| 蜜臀精品一区二区| 久久国产精品一区二区三区| 久久精品国产欧美激情| 国严精品久久久久久亚洲影视 | 欧美激情一级精品国产| 久久久国产一区二区三区| 久久手机精品视频| 久久99精品视频一区97| 国产日韩av在线播放| 久久精品99久久香蕉国产色戒| 精品亚洲欧美日韩| 国产精品免费福利| 中文字幕日韩一区二区三区不卡| 国产精品91一区|