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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 7842|回復: 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);- [5 H! W1 X- Z& y6 Z
  2. int  EQ_is_ge (double s, double t);* A* F2 s+ A& P% y/ b6 u3 V
  3. int  EQ_is_gt (double s, double t);6 J) B) x& g5 g9 U* a+ f6 A
  4. int  EQ_is_le (double s, double t);
    + {6 E( `% B: j% T& H, l6 e
  5. int  EQ_is_lt (double s, double t);
    & x9 g- P6 f/ U: M
  6. int  EQ_is_zero (double s);! B+ b# E- o4 x2 u
  7. //=============================================================  }( l5 v1 s# ~9 K
  8. double ARCTAN1 (double y, double x );
    0 K* W! H  [5 e* Y* h& o# N4 k
  9. //#=============================================================/ e4 ~* v7 y1 H0 H9 \- }
  10. double ARCTAN2 (double y, double x );; {; C. O. d, @8 {. A  J8 a
  11. //#=============================================================
    * u, D. `& T3 }  Q
  12. double CheckConst ( double angle, double constvar  );+ ?  J2 w# F3 b# i# M
  13. //#=============================================================8 m# e4 {* N) g0 M/ z' c" h  E
  14. double Check360 ( double angle );/ R  H9 N7 m8 ^$ w6 E, t% C' t
  15. //#=============================================================; Q$ ?: ]- Q/ A9 r8 G, A
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );
    % K; Y8 a! y! U' h3 Z+ z5 j; d% j4 A+ v
  17. //#=============================================================
復制代碼

9 Q- d( O. c$ E+ g) Z' ^0 c1 H& M以下為部分源代碼,用于判斷,計算角度等  y7 c! O8 L5 }  O
  1. int  EQ_is_equal (double s, double t)
      b5 |( k6 j' [" p5 e( X

  2. / E9 E+ L. r, X' f
  3. {1 N) l; {4 A$ \+ b& L  k/ S

  4. ( y8 A( }# V2 Y$ F
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }& b; D8 L) m5 Q8 a9 y
  6. 9 U7 ^0 j4 q3 a# v* o: F
  7. }
    ' J6 I4 |8 g" K% b) X+ Y- w' c

  8. ) M/ h' D2 V3 M. k& b' S( S' d
  9. /***********************************************************************/' Y$ t" A+ s) j) x# o/ K

  10. 9 M3 P9 i& y  k7 |( W
  11. int  EQ_is_ge (double s, double t)
    ; i$ s2 {' v2 N! `& [

  12. 7 J* \* r* T1 X
  13. {
    5 _; m3 G% K# ~, F  N
  14. / t5 M2 j. i- ^6 u& P. L  M
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }
    4 C! ^5 [, F& J! L, c) ]
  16. ; e0 W8 u% ?, @; h
  17. }
    8 q4 y( q1 E4 N. t1 x1 G$ k  S5 L
  18. : K, \8 q) G6 m/ N$ B$ N
  19. /***********************************************************************/
      C9 T' Z& H9 s. h& H
  20. . H9 s9 \' [& A$ E1 a; S
  21. int  EQ_is_gt (double s, double t)
      \9 \( H9 I; E/ c$ g: k

  22. ! D6 ?1 ~' Y4 r
  23. {  [. i3 N/ O, i+ l) ]: C4 Y! S8 w+ ^

  24. : Q! I% z* h$ k  C/ P0 p
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }  x3 b3 Q$ t# F) |7 k0 T. q

  26. ! {' E( B" D/ Q. p3 A, n
  27. }* f: ~1 \" i0 \" h
  28. ( ^3 |& ^2 `. C6 Y( P# }+ s
  29. /***********************************************************************/
    6 A6 a5 i0 \; ~: P5 _: D

  30. 1 q: J2 y8 _% y% c
  31. int  EQ_is_le (double s, double t)
    3 u3 v) c, a" t' I, A4 \5 A1 m

  32. & t; ^: b/ |" c4 {  `
  33. {
    3 Z3 T, t5 U. G8 v. m/ t" c
  34. 3 n5 i% v0 n: O7 x! a6 k9 _6 l# m  z
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }
    " X. Y4 s- i, X; f
  36. $ A: |+ Q7 q8 q0 D: o/ Z9 o7 s
  37. }& Z5 D/ a4 e/ N
  38. 6 c  p* V. \1 x! Y! J3 N
  39. /***********************************************************************/9 v( I$ _% K4 A# ~, }% I

  40. 7 j3 h2 w5 M) V" Z  l" P
  41. int  EQ_is_lt (double s, double t)
    - m- S) c7 O( b  }

  42. " `4 ^8 p4 n7 k( ?
  43. {
    4 t+ ]* M- f- W& W, {" t
  44. . ?. z) P' K7 t/ ~) ~( e
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }& \7 w3 Y8 s  E8 N% y
  46. # i: C6 R% s. V
  47. }( V/ \* j* V' {% Q9 }( N9 z
  48. 2 M0 ~8 @3 v1 f" _$ D$ C" H
  49. /***********************************************************************/
    4 A/ x' C. c3 [  o+ B4 [

  50. $ w' w6 u2 c% F* B' Y
  51. int  EQ_is_zero (double s)
    5 r" }* R3 n) [- y9 m* Z0 j- l

  52. 2 c# d  _  P5 D
  53. {% w: g2 G( m, _
  54. 8 K4 A* J( D, ^
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }
    2 q+ U+ y& [* J4 D! y% W

  56. 4 L! D4 C1 U6 q+ F
  57. }
    7 ]. p. {3 k. ?5 U8 J/ k
  58. - P+ p" c% H' `
  59. //=============================================================3 U2 A* M* F( R

  60. 8 @: q  a" w/ L9 _# E+ u
  61. double ARCTAN1 (double y, double x )
    * G# }7 p% ]. ^; e9 V- S1 m
  62. ) c5 S  X3 J% r& _% f: d! f( _
  63. //#=============================================================# _8 u& v- [/ @

  64. ! m1 ?0 N- n/ u& B" N; y
  65. {
    ; K; d% G: j6 w! ^; e
  66. " ?' A" x/ j% N8 S0 \" i
  67.    double ang;' l1 K' y1 c8 I( v  ^2 H3 `% q

  68. " e# w" M: Q, q
  69.    if (EQ_is_zero(y)) { y=0; }
    * ^7 k% x2 W$ W$ X! Y- z
  70. & k8 S3 V! U* Z% V0 z
  71.    if (EQ_is_zero(x)) { x=0; }
    ' D/ s# [' b& `$ S! F/ x% Q) w( N
  72. ) s+ E% }2 u+ }3 w! l/ N! i
  73.    if (y == 0 && x == 0) { return(0); }1 a; k/ H9 ?0 c( x# X

  74. 9 S" m9 Y' U) J" A& L1 M9 ]
  75.    ang=atan2(y,x);/ o  b& c& z5 G  T
  76. # Q6 E- w1 W: U2 K7 P, o+ Z
  77.    if (ang < 0 ) {9 L# n# i* U! \- H, W. P1 s4 K' l

  78. 3 b* @+ X- j! D* J
  79.       return(ang + PI*2);
    4 N% ?! ~9 `, T- u% \
  80. ( l6 e* _! Z0 E! D/ ]8 _4 l
  81.    }7 S9 c4 _) t8 Z
  82. & o) b4 n* s9 u1 C! ?# L0 A
  83.    return(ang);* I6 F1 V; @4 w
  84. " d0 C2 w  p2 n/ N3 r
  85. }
    1 Y, @6 ?1 g. N  P( \
  86. 1 G- t7 z5 C9 O) j8 w5 }9 j+ |, v$ ?
  87. //#=============================================================# N; s# e5 j* D
  88. 8 e6 z& @" G, J4 a1 Z7 F4 J
  89. double ARCTAN2 (double y, double x )
      Y' j! L  C& F. i6 ]2 \& \. \
  90. 3 \: V+ Z& T$ h2 Q: H
  91. //#=============================================================
    0 A7 @3 G. C* D1 W

  92. 9 N& E, u/ T' N7 z  f+ b6 p* }
  93. {. l9 n3 Y4 A; X! j- h& f0 e
  94. 8 s6 W6 }! W( z) L* A8 @8 x$ J
  95.    double ang;  M. d; \4 b4 r6 J0 \% p

  96. 7 F* @! U1 p( ]8 I9 B
  97.    if (EQ_is_zero(y)) {( z' _& g  M2 e' `' f+ s: s

  98. 2 q  _# u! z  _8 D9 R) g
  99.       if (x < 0.0) { return (PI); }7 J9 A  ?8 C  I  T0 X5 C. S6 d, p

  100. 4 M, x* i7 M0 e* N
  101.       return (0.0);
    ) c9 l" U/ v& g9 k" ^$ [( C) i
  102. ' }4 _; Y- T' s" b) G
  103.    }! R, }9 ]2 F1 C
  104. ! k3 z/ S& Q/ K
  105.    if (EQ_is_zero(x)) {! N5 e3 Q. p1 B1 ?  r4 x% p

  106. . d0 k! n, V* c" m7 p1 q6 t
  107.       if (y < 0.0) { return(PI*1.5); }# ^4 P( ?* C+ n/ u: R  N$ H

  108. 7 g$ h# h( w% i( q" o% J% S
  109.       return(PI*.5);
    $ x8 `, L' g& f# _
  110. : s# E, F+ a) [7 W: O1 \& ]
  111.    }
    3 F, m* c! \1 s' e: M) ?
  112. + h: h, q! o+ n. J( q: s) L
  113.    ang=atan(y/x);
    6 l* E, k/ l7 u3 S

  114. # J( d% A/ p6 G0 v+ X5 m
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }
    * H7 k/ G& I& K  n8 {# {, `) I
  116. 4 {6 ~4 }$ a0 {0 v  b! R
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }
    7 w0 E8 ?4 N5 G0 B$ U
  118. - l. I" _- y3 h% Y3 I
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }
    ; v: f2 O& I$ M/ ?

  120. ' i. r" o. N! ]
  121.    return(ang);: ^3 N2 W5 F, ~1 |) ~8 v
  122. 0 i- N; b9 z) g. U
  123. }
    4 Z) ]. t5 j4 j1 Y/ N/ M
  124. ' ], [" _2 b' T9 n2 P& {9 r. D% D
  125. //#=============================================================* j7 ~0 Z* C+ x# {% y
  126. 2 v+ _. [/ T& V, G
  127. double CheckConst ( double angle, double constvar  )3 d! P1 ?% L+ |/ R
  128. . L: M4 W' c. a
  129. //#=============================================================! ~4 Z% ^: J1 W( ^

  130. ) k! K$ b. ^  M2 ?, m  I/ q7 n
  131. {: w6 x1 J6 E! b
  132. # W& i' F- j+ p2 \+ u- x$ I
  133.    while (angle < -constvar) { angle+=constvar ; }: n9 r% `/ `& W( X7 v  x$ w3 t$ Z
  134. ! R7 x. k! H: ?9 ]6 S7 U; D7 q8 P
  135.    while (angle >= constvar) { angle-=constvar ; }9 y- G8 G$ V1 l+ G' g
  136. ; d! B9 i' a5 G, t# H$ Y1 A
  137.    return (angle) ;
    + ?% v8 v; r" d: T$ U
  138. , e! f+ h% i3 g. g' F: \, _
  139. }, G% t; \- `' ]3 _/ O- D2 a7 A
  140.   i& \0 U3 \( `1 h/ p
  141. //#=============================================================
    + i8 S/ R. O! c$ u' z7 w

  142. / o  }; ~2 H" e' S& `- y
  143. double Check360 ( double angle )
    % e! u" ~7 b" |8 Y3 T, ]% U6 P! u
  144. , \: d5 |8 `4 q2 R/ b; A, b; E
  145. //#=============================================================  Q' }$ J% a$ y
  146. $ l) M5 F0 H$ s. g5 n
  147. {
    9 v4 w7 _* i) O$ ?8 P' h) }

  148. 1 H% H* T1 @+ Z% a% h' ~
  149.    while (angle < -360.) { angle+=360. ; }. K' t# w" x! D: S
  150. # N) j, b1 d4 ~! M$ I7 N" W
  151.    while (angle >= 360.) { angle-=360. ; }( N9 S2 e. O  k9 J+ Q, S

  152. # i; e8 h  M1 R$ f
  153.    return (angle) ;
    , @' b9 I7 `% h- [; c& w7 D' }" j
  154. + R1 R' b$ w& ~- u2 Z3 I
  155. }" g+ m  u, d1 I+ p" `4 o
  156. / e3 m, \- e  k0 }4 ^1 Y8 O
  157. //#=============================================================! O" P6 P1 H$ ?2 V6 C2 a

  158. 9 p# {( u9 Y" {9 I* n4 T
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit ): N0 }# h' t9 Z+ I
  160. / H1 ^, L$ e8 y% ~) j
  161. //#=============================================================1 v5 b, D% J. y( g

  162. % w* I& h6 u+ s- O9 F, G
  163. {
      V" n7 a9 D/ c. S% C

  164. % R" R( P1 [& W' {3 e. F% D# Q
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }, s4 V: k9 C" o
  166.   f+ M) M4 h6 W+ l6 c+ K* }. H
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }8 ~4 X1 H% N5 e- p1 N
  168.   `% x6 W' p$ Z4 K2 I8 O* G# H; W
  169.    return (angle) ;- Y! e5 h/ b  Y0 i9 _( Y

  170. 2 f5 m4 Z; Q3 I( i5 i- E
  171. }
復制代碼
, F+ @5 P; H3 ~, P6 W7 D, r* C
以下為搖籃5軸計算過程代碼
% g7 w& e5 C0 o8 u$ z$ L( Q5 I' w/ s
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);
    8 _; }" X- ~" F, {3 l3 j" s
  2. ! s* [9 _$ n2 G- h0 M# v1 T; k- J8 I. Y
  3.          j=0.; B1=0.; B0=0.;" O: ?+ _8 J9 X4 i' @

  4. ' [# ]1 A! @4 ~. y; Y
  5.           if (EQ_is_ge(i,0.)) {
    ' Y, B4 Z7 i' ^' n; q; c  [
  6. , n+ }1 U  E7 n, M4 i6 Q
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }' d/ I- V; N9 E# y0 `
  8. + `& J$ R. ?9 w: a
  9.           }4 U/ L/ L% a* X8 L

  10. ( E8 S4 c+ ?: F" L# p8 x
  11.           if (EQ_is_lt(i,0.)) {
    ' F" j9 X0 y+ J

  12. ' a% a4 U; w3 A
  13.              if (EQ_is_lt(k,0.)) {7 U' M% d! ?/ j! g! Z3 z, }
  14. 8 c9 a5 G. L0 m2 f( j) G
  15.                 B0=atan(i/k); B1=B0+PI ;
    ) [1 N. J+ |- f. R9 @

  16. . w5 {$ E/ ~" Z1 o' Q8 a6 T
  17.              } else {. v8 ]% J) ~. y+ S* H: o) T, Z
  18. " x/ h  M/ c3 f  r
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }, x/ d8 T+ x+ `. O) T6 n3 A
  20. 9 N, C* r7 ]. q, R# x, K3 y! Y
  21.               B1=2.*PI+B0 ;
    4 v  g! N3 M1 x0 F5 M9 Z: ^8 T

  22. $ ?0 N) y, {/ m
  23.              }
      C3 q# p; R' ]% A( n5 A' w
  24. 7 u9 R1 \! g' \; J
  25.           }
    . c+ f) k' X( e2 @/ ]2 w+ `

  26. # g$ s# P1 o: s" \+ B/ B- D
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;# ?' M# G6 T; n+ `2 T7 R

  28. 9 \! l6 |* ~4 v- \' j- C1 P4 z
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));( c. h. }+ w/ b

  30. % p8 U4 u, h8 q, E
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;# g& i$ s5 \, g8 s
  32. , @( M5 R& j  r( d$ h
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復制代碼
/ r/ I. F. j. E
通過輸出的NC程序,反向輸出的刀軌數據與原始刀軌文件對比,其數據結果一致。
7 ]: D& V) Z! y" b' S6 o3 F' z8 J) c6 U0 G
# d; x6 c" n  Z3 y
測試結果:) r5 @9 w1 f0 i9 d
; H$ w4 ?9 R* s, X3 g

: X/ X7 }5 G  |反向測試結果
3 b+ L1 X' g; a: c

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 10:48 , Processed in 0.488038 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲精品毛片| 亚洲福利av| 97精品一区二区三区| 欧美日韩精品免费观看视一区二区 | 亚洲国产一区二区在线| 国产精品美女午夜av| 久久男人的天堂| 欧美亚洲另类制服自拍| 亚洲一区二区三区在线免费观看| 久久精品在线视频| 欧美激情亚洲自拍| 免费在线观看一区二区| 美女av一区二区三区| 久久视频在线观看免费| 久99久在线视频| 国产精品尤物福利片在线观看| 亚洲狠狠婷婷综合久久久 | 高清一区二区三区视频| 日韩免费一区二区三区| 奇米四色中文综合久久| 欧美激情久久久久| 黄色片免费在线观看视频| 久久国产精品久久久久久久久久| 久久视频中文字幕| 国产欧美日韩综合精品| 成人中文字幕av| 在线丝袜欧美日韩制服| 日韩中文字幕在线不卡| 欧美 日韩 国产 激情| 国产亚洲欧美一区二区三区| 国产精品九九九| 亚洲自拍av在线| 人妻少妇精品无码专区二区 | 国产精品九九久久久久久久| 国产亚洲精品久久久久久久 | 国产精品高清在线观看| 亚洲综合激情五月| 日本在线播放不卡| 久久精品人人做人人爽| 国产尤物av一区二区三区| 国产日韩欧美在线观看|