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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 7845|回復: 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);2 K' e  J) t. u. M* L
  2. int  EQ_is_ge (double s, double t);4 r# h% P6 U5 c2 F8 \
  3. int  EQ_is_gt (double s, double t);3 _; o4 C: \- t, B- p
  4. int  EQ_is_le (double s, double t);
    * ?/ ~: L& |/ g5 U) X8 `
  5. int  EQ_is_lt (double s, double t);
    6 Y& z9 O, |  i  {) u! j2 @- A% S: d
  6. int  EQ_is_zero (double s);/ O0 R) \6 u, S* w3 M  J$ ^
  7. //=============================================================
    3 j/ {& N! ~. O- t3 N- y! d: g' G
  8. double ARCTAN1 (double y, double x );1 X( U. r( E7 T" j0 U
  9. //#=============================================================
    ! L6 W: }9 n2 W: e! D) G
  10. double ARCTAN2 (double y, double x );
    3 Q  H. i9 a4 H  `5 M# P  [
  11. //#=============================================================3 m+ M; j7 Z  R% L& k7 k  P4 _
  12. double CheckConst ( double angle, double constvar  );7 D) \6 `' G6 N1 x" y5 `
  13. //#=============================================================8 q; y3 ^3 O( i! R7 k! K& p9 v# v
  14. double Check360 ( double angle );: M8 e. i/ |1 E1 e' q4 |
  15. //#=============================================================0 l( R) _7 ^  ^6 Y1 n# }
  16. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit );
    $ k4 A2 f3 ?; x
  17. //#=============================================================
復制代碼

* t. B" H4 J; e/ G2 c* x以下為部分源代碼,用于判斷,計算角度等2 W8 Q+ R% y) N$ n1 u1 [, v7 n* Z
  1. int  EQ_is_equal (double s, double t)
    & `+ {7 w& P( e+ d; E3 _

  2. ( j% i* X9 U6 L
  3. {$ i- y$ `5 p4 d2 d

  4. 4 T3 z. ?# N3 W1 |% H: H2 P, F
  5.   if (fabs(s-t)<= system_tolerance)  { return(1); } else { return(0) ; }
    5 {* q* i  s1 d0 t

  6. 4 c( O. @* w# o# V8 n% x0 K
  7. }) j' a6 k! T5 l6 s* x
  8. 9 O) G. [+ {% q
  9. /***********************************************************************/2 {3 Z' t5 d( `

  10. # e" b" ~6 X1 ]( f
  11. int  EQ_is_ge (double s, double t)% A+ `  d: k; D) \& i% z

  12. & }1 Z" V6 d6 @0 k
  13. {
    / Z1 x, @! t3 l) O. l
  14. * s4 \: N) r/ Y: W4 t
  15.   if (s > (t - system_tolerance)) { return(1); } else { return(0) ; }" ?0 n( S3 ~# k

  16. 8 e& Z. s: a, k- C) w
  17. }
    2 y2 j( P; c8 p: s1 G% U) v

  18. ) R. @* H: g% f
  19. /***********************************************************************/
    3 e# r9 F+ P! P) i
  20. & b% e0 N- O' N7 K- w' I
  21. int  EQ_is_gt (double s, double t)
    1 C1 X7 Q1 u, e7 ]2 V, @
  22. * J" W2 J6 M% v6 H9 M+ A+ `
  23. {
    ' n6 a! C5 O, l9 k$ r1 n
  24. / M" F( k7 M% Y6 Q/ I% K
  25.   if (s > (t + system_tolerance)) { return(1); } else { return(0) ; }( N9 w/ h0 H) d. o0 s% O
  26. - b; o. a- q" Q/ G: ?& R, u, p
  27. }
    9 f! C. c. l7 l* q* ?- X, }  z3 i
  28. 5 `3 _$ L5 t( B6 R
  29. /***********************************************************************/
    + o: o" l0 `7 t/ g  X

  30. # c+ h% h0 G! N
  31. int  EQ_is_le (double s, double t)* h% D" X! t# b6 G
  32. 7 D) c' M& C5 U7 r( G2 `- T5 n/ I
  33. {
    / c! }6 v# {9 T+ o3 @

  34. % l8 O* v; ?7 H
  35.   if (s < (t + system_tolerance)) { return(1); } else { return(0) ; }
    8 m2 `2 G2 G, j+ ?
  36. - B& [' A3 N. K% o
  37. }$ \  F  z( ~8 h

  38. + B( i1 [# x4 z, f& O: e( H
  39. /***********************************************************************/
    6 W* C6 I6 Y* Z3 X
  40. # ?  \' j, F. {# W# b
  41. int  EQ_is_lt (double s, double t)
    ) R% f9 B: O! n

  42. , F% c3 Q- S# E& ^: ]" W/ W, N
  43. {
    5 T3 o3 b# U( a) R; |

  44. , E5 ~/ e- ^1 W
  45.   if (s < (t - system_tolerance)) { return(1); } else { return(0) ; }
    % z$ r0 B+ m  P" d* Z; R
  46. , O8 w; i' M5 M2 N8 U8 n& \  _
  47. }& H2 {9 U* A& v' }/ F
  48. % E. x8 O% h. K9 R3 M6 c0 Q
  49. /***********************************************************************/
    6 t7 A9 D7 m5 q
  50. ! Z- S+ g. c4 y4 J8 r
  51. int  EQ_is_zero (double s)
    ' Z" z/ [& N! Y

  52. - z' ^) @" H7 R0 J9 N, u' H3 J9 j
  53. {
      n% M/ ^9 d8 s% v2 \( h
  54. / q. s8 ~/ }* R  O# E2 P
  55.   if (fabs(s)<= system_tolerance)  { return(1); } else { return(0) ; }
    : Q0 g* ?4 t- P+ W

  56. + z; W" n2 d( a: }0 k1 Z/ Y, F: J
  57. }
      c- N; n3 K, g7 a

  58. " L! C1 V" N3 F: X6 K/ I
  59. //=============================================================
    3 O3 q% K! |0 m1 ?# ?
  60. $ P( Y1 }- c- X3 ]( R
  61. double ARCTAN1 (double y, double x )$ j1 P9 X# Q3 U$ b! G
  62. ( o4 ^6 W, Q4 }" O0 f1 F$ F
  63. //#=============================================================- P) ?* A8 P/ P0 q# e0 C

  64. ) Q1 u. j2 L; c' U
  65. {  S+ S4 l- |' X- g* A- S8 b
  66. * K  x8 m0 r- J5 H( E% K. y
  67.    double ang;
    4 E' y# `3 {% ?6 x" U: x$ T

  68. 4 p$ [/ @% y! z4 y1 d
  69.    if (EQ_is_zero(y)) { y=0; }
    - l0 N1 @/ Q1 C" F0 q' Z8 X
  70. + Z4 [* L2 c* O. E
  71.    if (EQ_is_zero(x)) { x=0; }
    : b# Q, R3 T, w7 g" Y
  72. 0 m& d6 @* J6 n3 p9 k, Z8 `: W
  73.    if (y == 0 && x == 0) { return(0); }
    : A' k) Q+ ~  v/ W+ @; x+ ?% i
  74. " N' D1 ~& x! p2 ~' }& [
  75.    ang=atan2(y,x);
    " M" P8 P# M# L3 @2 u9 m" E& ?' l0 n

  76. $ p- Z$ G, J9 q- ^: Z; c" T) Y
  77.    if (ang < 0 ) {
    3 u7 Y% m% \% x" c  Z6 H

  78. 0 C0 C8 i; s" b: c% V$ w
  79.       return(ang + PI*2);
    ( q: f, h" N2 L) ]! I. Y

  80. * H. Z0 W2 M# K2 V- n- L
  81.    }
    ) P5 `& I4 Y- n8 v/ U* H3 G& A3 h

  82. & x* v$ l8 U  ^4 ]/ B- {+ p! R, K
  83.    return(ang);
    ' _4 p7 t' d* s

  84.   G, ~/ U" m* E+ V
  85. }
    , X) C' N! ^& ]! S* c

  86. - Z3 e; l- O% y( U3 H7 {& k8 \8 U: G
  87. //#=============================================================
    1 _& N+ C0 @5 Z; B. u
  88. 7 Q2 `5 f$ p- u0 O( E
  89. double ARCTAN2 (double y, double x )
    0 g# u! ], B  M
  90. 1 ]$ R7 a4 W. [
  91. //#=============================================================8 o- c7 ^# J* M) b6 r

  92. 3 j  T2 j  s, F0 z
  93. {/ o  k! X+ h  h2 e3 i$ c$ G
  94. % ?3 T5 M3 y! D# a" v
  95.    double ang;
    , L: @$ K! ?: ~6 X7 |

  96. 1 u0 g1 U, x: Y# y2 e9 X: P5 K
  97.    if (EQ_is_zero(y)) {
    * Z9 A& W6 a6 l1 M; i1 v9 K1 K, W2 L% e
  98. 4 b- j  X: v" q: u; N
  99.       if (x < 0.0) { return (PI); }
    * b4 Z# S$ c$ S
  100. 2 W1 _7 g$ o, ?" W) N6 c
  101.       return (0.0);: u0 ?* O7 m. [

  102. 7 Z: o( T  t4 A' {/ K
  103.    }
    1 R6 {, O$ z) _# Y

  104.   X, _1 J! Y# ?
  105.    if (EQ_is_zero(x)) {+ R! x& e# m$ k6 ^3 x1 l. N9 ~

  106. 4 n9 K' @  g3 {' C% x; m
  107.       if (y < 0.0) { return(PI*1.5); }4 f& Y% b% {6 s/ G* [

  108. 6 s0 P0 v" B1 D& @8 d, ?5 e  k
  109.       return(PI*.5);
    ; [( U8 |. y- f' ^1 n& U) f5 G& B; J
  110. ! C& s" e2 z4 i2 H
  111.    }
    7 W! q' Q$ w8 Z
  112. / L+ w3 O3 \4 z% U+ f% g
  113.    ang=atan(y/x);
    1 D4 V7 d0 E- u. d( x0 r3 l
  114. # M  [- p" x; ~4 u/ S6 m/ T1 U
  115.    if (x > 0.0 && y < 0.0) { return(ang+PI*2.0); }: T# Z$ j; v: b- Q4 X
  116. 6 @' T. z. n: ^  B. E
  117.    if (x < 0.0 && y < 0.0) { return(ang+PI); }
    : b$ v3 Y( `$ w+ w: n% Q

  118. / N$ A1 ~" M! S4 p! g) k- U/ I2 r
  119.    if (x < 0.0 && y > 0.0) { return(ang+PI); }
      T# B8 h6 G+ H; V, X/ H9 i
  120. 0 h; N6 w; [+ i# U
  121.    return(ang);
    / p% o& Y0 V; p& C+ _, E4 n- {
  122. # e: U" W* ?/ V3 K% s8 Z
  123. }6 r( E9 A3 H4 ^

  124. 0 P' v( Z  E6 A( E1 L7 @. Q/ @* Q
  125. //#=============================================================
    7 {* Q! l3 k% y/ `8 z

  126. 7 g* T2 I8 G) z- M* ^0 _6 P
  127. double CheckConst ( double angle, double constvar  )
    & c" b1 _4 @( _2 Q

  128. ; \- r; _% E* _$ o* K
  129. //#=============================================================3 p6 w, I: [' D

  130. 5 U2 ~) A  n5 ]1 z
  131. {
    9 A+ p  V: v7 c- e- ~8 }2 p
  132. ) k8 B7 C! n! O- i) r9 R
  133.    while (angle < -constvar) { angle+=constvar ; }% z1 P7 f% d# ^6 }8 S- V0 _) S2 E( u

  134. ) @4 {. s' v: Q* g% l
  135.    while (angle >= constvar) { angle-=constvar ; }
    ' C4 x0 c! u5 ]2 H, k6 E7 w

  136.   h' W9 O1 G* ]: k
  137.    return (angle) ;, E! M, f6 [/ y/ z0 q  A

  138. 6 @* F5 e9 z; q& S( ?: U- ?
  139. }% P% ]2 E3 A, Z
  140. ) p; d$ ?2 \. Z, D2 y( R% T- T
  141. //#=============================================================9 i- |& _4 T% ?) _! j) `

  142. . p5 A, m+ c; b3 \1 D
  143. double Check360 ( double angle )
    9 e6 D+ X1 v& F. L$ D
  144. 6 P9 Q; }9 J' Q+ {' F
  145. //#=============================================================
    2 g$ v- _3 _) `
  146.   L3 A) O1 s/ A7 f2 ^  ]0 u
  147. {
    ' \1 Y" \& p% U

  148. ' z" o" |5 ~5 _$ P
  149.    while (angle < -360.) { angle+=360. ; }& o3 O5 g+ J4 h8 R% b4 e/ `
  150. 8 Y) P# [- k6 g' q9 P3 }: D
  151.    while (angle >= 360.) { angle-=360. ; }7 O& A7 j& j; o9 g6 m& \
  152. 2 ]% S: p6 A" B7 o$ ~
  153.    return (angle) ;- G: m+ Y# A! k/ W# U9 e
  154. 7 L  n- K6 B* Z' l: A; H' L9 A) c
  155. }
    9 H) n4 q& Q$ i- l# p( X$ G

  156. % X3 K. X2 ], e' ~+ u1 ]5 Y6 Z
  157. //#=============================================================
    5 x; t! t' S1 O1 L2 W( |9 w
  158. " q# X4 H* l2 |& J5 F
  159. double CheckLimit ( double angle, double kin_axis_min_limit, double kin_axis_max_limit )
    ) D) ^2 C5 i6 e+ c( K& }0 x4 h/ C
  160. 1 J# ?2 c& i. U7 E6 ~; G
  161. //#=============================================================( P4 c$ ]1 {, S& u+ D; s

  162. ( k% A+ v. `" v4 U/ w6 \( s
  163. {
    / k% [7 C; x& `7 a, X4 w7 \. W

  164. 1 _# c- D/ Y2 V  N+ l9 @
  165.    while ((angle-kin_axis_min_limit) > 360.) { angle-=360. ; }
    $ j8 P$ y# g4 R/ N
  166. $ T3 Y8 V0 ~9 ?0 D* ]
  167.    while ((kin_axis_max_limit-angle) <= -360.) { angle+=360. ; }
    + E5 g8 `3 x. b. Z; o' ?( X

  168. / O& A" Z, t6 K
  169.    return (angle) ;/ O: }# \" _% V/ \6 Q

  170. 6 \8 E, D5 ]; ^$ C$ n7 N
  171. }
復制代碼

/ z& ]3 j/ q* y以下為搖籃5軸計算過程代碼
' r1 I, U% F% K
  1. i=sin(ang_rad[1]);  j=0.0;  k=cos(ang_rad[1]);
    9 f% u, N4 f# F% v. Y6 w5 p6 k' Y
  2. ! ~( d( P4 C7 Z2 X
  3.          j=0.; B1=0.; B0=0.;
    ! v, Y0 r" z$ w* R0 s  r  o

  4. , O& P8 c. ^+ W0 p
  5.           if (EQ_is_ge(i,0.)) {
    - o$ M5 a; M; u5 e1 b  \2 }

  6.   V4 D6 Z! t: M% u/ n
  7.              if (EQ_is_gt(k,0.)) { B0=acos(k); B1=B0; } else { B0=acos(k); B1=B0; }8 h* S% S/ e  Z0 o+ d/ o; E
  8. + k5 T7 M9 |* S3 F- \7 ~
  9.           }
    6 b( N! {: `9 @. w9 H+ p
  10. : U7 Y/ \$ ]$ G% V
  11.           if (EQ_is_lt(i,0.)) {6 `7 _/ z' j7 A3 @+ C

  12. ; o5 [, e0 Q# d
  13.              if (EQ_is_lt(k,0.)) {
    ' W3 p: s0 z* U' O# S2 H6 X

  14. ' F9 a' J; L5 n1 P" Q
  15.                 B0=atan(i/k); B1=B0+PI ;) M$ O+ H* q& l' m! m9 F8 b4 @  n

  16. 5 U5 L0 D8 {# V* {
  17.              } else {; L7 z2 v( i0 y) x/ U$ t

  18. 1 ?% k( J, f! k0 a
  19.               if (EQ_is_zero(k)) { B0=-PI/2. ; } else { B0=atan(i/k); }; g% {1 O% @+ b2 f0 l2 Y
  20. / g; B5 Q6 L$ @: j! P' r( ]3 L; `
  21.               B1=2.*PI+B0 ;
    : C$ {- A2 r2 F- A  o; ^* q
  22. 7 A. @8 a: X" x  x! u: y' S; J
  23.              }
    + B' q/ [; B* D+ D

  24. ! t( W( w7 i/ _3 s6 q
  25.           }
      ^6 N9 U; Q- I6 {8 l9 n/ \
  26. 5 A  \" X6 h  c, m. |0 l
  27.           if (EQ_is_ge(B1,0.)) B0=1.; else B0=-1. ;# z6 Y7 y' F9 R

  28. 5 s3 \, W; U; ~: w4 P1 ?9 Y/ t
  29.           B2=(-1.)*B0*(2*PI-fabs(B1));
    % B2 Y+ A% ~* Y/ k
  30. # Y' O* u- M7 }- r  R. Z* e1 V
  31.           ang_rad[0]=0.; ang_rad[1]=B1; ang_rad[2]=0.;
    9 T/ ~( l6 H; Q' {7 P: w
  32. 5 M2 M! f0 p7 l# v! [
  33.           ang_rad[3]=0.; ang_rad[4]=B2; ang_rad[5]=0.;
復制代碼
: w4 ~, Q& S8 c; N: |: u
通過輸出的NC程序,反向輸出的刀軌數據與原始刀軌文件對比,其數據結果一致。6 j1 a; h8 X( w( V0 y6 u

7 p& ~- O: _+ A( l* ~/ h& B9 m/ G5 l' C . U% k+ U, B) Y2 \- J( J- F* O
測試結果:/ J; ~  {  b# r8 b

6 _' b2 K# S/ B% @: m$ M& T3 M6 R3 k1 b( b+ w4 N
反向測試結果
; e0 o8 p: v* n9 ?

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线视频观看正片免费网站| 国产成人久久久精品一区| 国产专区在线视频| 91精品国产自产91精品| 国产精品麻豆va在线播放| 国产精品久久九九| 国产精品日韩在线观看| 亚洲一区二区不卡视频| 中文字幕免费在线不卡| 午夜精品一区二区三区在线播放 | 国产精品日韩高清| 成人av中文| 国产日韩精品在线| 国产精品10p综合二区| 日韩欧美视频第二区| 欧美日韩无遮挡| 一区二区视频在线播放| 久久99导航| 婷婷四房综合激情五月| 欧美亚洲国产日本| 日韩一区不卡| 国产又粗又长又爽视频| 欧美在线视频二区| 国产精品国产自产拍高清av水多| 手机看片福利永久国产日韩| 日本成人在线不卡| 国产精品10p综合二区| 久久福利视频网| 天天综合中文字幕| 91麻豆国产精品| 国产精品久久久久不卡| 黄色三级中文字幕| 久久久久久久网站| 日本精品福利视频| www国产亚洲精品久久网站| 久久久国产精品亚洲一区| 欧美一级免费看| 日韩综合视频在线观看| 日韩三级在线播放| 国产精品精品视频| 国产欧美高清在线|