diff --git a/configs/sim/axis/sedm/Etabs/19.ENC b/configs/sim/axis/sedm/Etabs/19.ENC new file mode 100644 index 00000000000..4e18c17eb3f --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/19.ENC @@ -0,0 +1,19 @@ +19.ENC MM CU+ ST= ~020"/s UNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 80 0 0 40 30 440 212 0 2.0 3.0 10 0.508 0.0 0 0 0 +24 56 0 0 40 30 440 212 0 2.0 3.0 10 0.066 45.0 0 0 0 +23 56 0 0 40 30 288 140 0 2.0 3.0 10 0.119 40.0 0 0 0 +22 40 0 0 40 30 288 140 0 2.0 3.0 10 0.157 36.0 0 0 0 +21 40 0 0 40 30 172 100 0 2.0 3.0 10 0.211 32.0 0 0 0 +20 27 0 0 40 30 172 100 0 2.0 3.0 10 0.244 29.0 0 0 0 +19 27 0 0 40 30 100 60 0 2.0 3.0 10 0.284 26.0 0 0 0 +18 19 0 0 40 30 100 60 0 2.0 3.0 10 0.315 23.0 0 0 0 +17 19 0 0 40 30 60 36 0 2.0 3.0 10 0.345 20.0 0 0 0 +16 14 0 0 40 30 60 36 0 2.0 3.0 10 0.366 17.0 0 0 0 +15 14 0 0 40 30 36 24 0 2.0 3.0 10 0.391 14.0 0 0 0 +14 10 0 0 40 30 36 24 0 2.0 3.0 10 0.409 12.0 0 0 0 +13 10 0 0 40 30 20 16 0 2.0 3.0 10 0.429 10.0 0 0 0 +12 7 0 0 40 30 20 16 0 2.0 3.0 10 0.442 8.0 0 0 0 +11 7 0 0 40 30 12 12 0 2.0 3.0 10 0.455 6.0 0 0 0 +10 7 0 0 40 30 8 12 0 2.0 3.0 10 0.465 4.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/20.ENC b/configs/sim/axis/sedm/Etabs/20.ENC new file mode 100644 index 00000000000..a5bad96891d --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/20.ENC @@ -0,0 +1,17 @@ +20.ENC MM CU+ ST- ~0.025"/s UNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 110 0 0 40 30 440 212 0 2.0 3.0 10 0.635 0.0 0 0 0 +24 72 0 0 40 30 440 212 0 2.0 3.0 10 0.137 45.0 0 0 0 +23 72 0 0 40 30 288 140 0 2.0 3.0 10 0.196 40.0 0 0 0 +22 43 0 0 40 30 288 140 0 2.0 3.0 10 0.262 35.0 0 0 0 +21 43 0 0 40 30 172 100 0 2.0 3.0 10 0.32 30.0 0 0 0 +20 26 0 0 40 30 172 100 0 2.0 3.0 10 0.368 25.0 0 0 0 +19 26 0 0 40 30 100 60 0 2.0 3.0 10 0.411 20.0 0 0 0 +18 15 0 0 40 30 100 60 0 2.0 3.0 10 0.452 15.0 0 0 0 +17 15 0 0 40 30 60 36 0 2.0 3.0 10 0.483 12.0 0 0 0 +16 9 0 0 40 30 60 36 0 2.0 3.0 10 0.513 10.0 0 0 0 +15 9 0 0 40 30 36 24 0 2.0 3.0 10 0.538 8.0 0 0 0 +14 7 0 0 40 30 20 16 0 2.0 3.0 10 0.566 6.0 0 0 0 +13 7 0 0 40 30 12 12 0 2.0 3.0 10 0.582 4.0 0 0 0 +12 7 0 0 40 30 8 12 0 2.0 3.0 10 0.592 3.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/21.ENC b/configs/sim/axis/sedm/Etabs/21.ENC new file mode 100644 index 00000000000..2d375305a72 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/21.ENC @@ -0,0 +1,18 @@ +21.ENC MM CU+ ST- ~0.028"/sUNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 140 0 0 40 30 440 212 0 2.0 3.0 10 0.762 0.0 0 0 0 +24 100 0 0 40 30 440 212 0 2.0 3.0 10 0.193 45.0 0 0 0 +23 100 0 0 40 30 288 140 0 2.0 3.0 10 0.257 40.0 0 0 0 +22 55 0 0 40 30 288 140 0 2.0 3.0 10 0.353 35.0 0 0 0 +21 55 0 0 40 30 172 100 0 2.0 3.0 10 0.414 30.0 0 0 0 +20 32 0 0 40 30 172 100 0 2.0 3.0 10 0.467 25.0 0 0 0 +19 32 0 0 40 30 100 60 0 2.0 3.0 10 0.516 20.0 0 0 0 +18 20 0 0 40 30 100 60 0 2.0 3.0 10 0.556 17.0 0 0 0 +17 20 0 0 40 30 60 36 0 2.0 3.0 10 0.589 15.0 0 0 0 +16 11 0 0 40 30 60 36 0 2.0 3.0 10 0.625 12.0 0 0 0 +15 11 0 0 40 30 36 24 0 2.0 3.0 10 0.65 10.0 0 0 0 +14 7 0 0 40 30 36 24 0 2.0 3.0 10 0.673 8.0 0 0 0 +13 7 0 0 40 30 20 12 0 2.0 3.0 10 0.693 6.0 0 0 0 +12 7 0 0 40 30 12 12 0 2.0 3.0 10 0.709 4.0 0 0 0 +11 7 0 0 40 30 8 12 0 2.0 3.0 10 0.719 3.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/22.ENC b/configs/sim/axis/sedm/Etabs/22.ENC new file mode 100644 index 00000000000..d1820846e05 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/22.ENC @@ -0,0 +1,19 @@ +22.ENC MM CU+ ST - ~0.036"/s UNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 170 0 0 40 30 440 212 0 2.0 3.0 10 0.889 0.0 0 0 0 +24 120 0 0 40 30 440 212 0 2.0 3.0 10 0.221 45.0 0 0 0 +23 120 0 0 40 30 288 140 0 2.0 3.0 10 0.292 40.0 0 0 0 +22 84 0 0 40 30 288 140 0 2.0 3.0 10 0.411 35.0 0 0 0 +21 84 0 0 40 30 172 100 0 2.0 3.0 10 0.478 30.0 0 0 0 +20 50 0 0 40 30 172 100 0 2.0 3.0 10 0.549 25.0 0 0 0 +19 50 0 0 40 30 100 60 0 2.0 3.0 10 0.602 20.0 0 0 0 +18 30 0 0 40 30 100 60 0 2.0 3.0 10 0.645 18.0 0 0 0 +17 30 0 0 40 30 60 36 0 2.0 3.0 10 0.683 16.0 0 0 0 +16 18 0 0 40 30 60 36 0 2.0 3.0 10 0.721 14.0 0 0 0 +15 18 0 0 40 30 36 24 0 2.0 3.0 10 0.749 12.0 0 0 0 +14 10 0 0 40 30 36 24 0 2.0 3.0 10 0.782 10.0 0 0 0 +13 10 0 0 40 30 20 16 0 2.0 3.0 10 0.805 8.0 0 0 0 +12 7 0 0 40 30 20 16 0 2.0 3.0 10 0.82 6.0 0 0 0 +11 7 0 0 40 30 12 12 0 2.0 3.0 10 0.836 4.0 0 0 0 +10 7 0 0 40 30 8 12 0 2.0 3.0 10 0.846 3.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/23.ENC b/configs/sim/axis/sedm/Etabs/23.ENC new file mode 100644 index 00000000000..f390b20a085 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/23.ENC @@ -0,0 +1,19 @@ +23.ENC MM CU+ ST- ~0.040"/s UNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 190 0 0 40 30 440 212 0 2.0 3.0 10 1.016 0.0 0 0 0 +24 140 0 0 40 30 440 212 0 2.0 3.0 10 0.274 45.0 0 0 0 +23 140 0 0 40 30 264 128 0 2.0 3.0 10 0.356 40.0 0 0 0 +22 100 0 0 40 30 264 128 0 2.0 3.0 10 0.518 35.0 0 0 0 +21 100 0 0 40 30 156 80 0 2.0 3.0 10 0.584 30.0 0 0 0 +20 64 0 0 40 30 156 80 0 2.0 3.0 10 0.658 25.0 0 0 0 +19 64 0 0 40 30 92 56 0 2.0 3.0 10 0.711 22.0 0 0 0 +18 39 0 0 40 30 92 56 0 2.0 3.0 10 0.762 20.0 0 0 0 +17 39 0 0 40 30 56 36 0 2.0 3.0 10 0.8 18.0 0 0 0 +16 23 0 0 40 30 56 36 0 2.0 3.0 10 0.838 16.0 0 0 0 +15 23 0 0 40 30 32 24 0 2.0 3.0 10 0.871 14.0 0 0 0 +14 14 0 0 40 30 32 24 0 2.0 3.0 10 0.899 12.0 0 0 0 +13 14 0 0 40 30 20 16 0 2.0 3.0 10 0.922 10.0 0 0 0 +12 8 0 0 40 30 16 16 0 2.0 3.0 10 0.95 8.0 0 0 0 +11 7 0 0 40 30 12 12 0 2.0 3.0 10 0.963 6.0 0 0 0 +10 7 0 0 40 30 8 12 0 2.0 3.0 10 0.973 4.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/24.ENC b/configs/sim/axis/sedm/Etabs/24.ENC new file mode 100644 index 00000000000..e8445a6d9bc --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/24.ENC @@ -0,0 +1,17 @@ +24.ENC MM CU+ ST- DISPOWER not for oebiting +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 190 0 0 40 30 440 212 0 2.0 3.0 10 0.0 0.0 0 0 0 +24 180 0 0 40 30 440 212 0 2.0 3.0 10 0.0 45.0 0 0 0 +23 170 0 0 40 30 440 212 0 2.0 3.0 10 0.0 40.0 0 0 0 +22 160 0 0 40 30 440 212 0 2.0 3.0 10 0.0 35.0 0 0 0 +21 150 0 0 40 30 440 212 0 2.0 3.0 10 0.0 30.0 0 0 0 +20 140 0 0 40 30 440 212 0 2.0 3.0 10 0.0 25.0 0 0 0 +19 130 0 0 40 30 440 212 0 2.0 3.0 10 0.0 22.0 0 0 0 +18 120 0 0 40 30 440 212 0 2.0 3.0 10 0.0 20.0 0 0 0 +17 110 0 0 40 30 440 212 0 2.0 3.0 10 0.0 18.0 0 0 0 +16 100 0 0 40 30 440 212 0 2.0 3.0 10 0.0 16.0 0 0 0 +15 75 0 0 40 30 440 212 0 2.0 3.0 10 0.0 14.0 0 0 0 +14 50 0 0 40 30 440 212 0 2.0 3.0 10 0.0 12.0 0 0 0 +13 25 0 0 40 30 440 212 0 2.0 3.0 10 0.0 10.0 0 0 0 +12 12 0 0 40 30 440 212 0 2.0 3.0 10 0.0 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/28.ENC b/configs/sim/axis/sedm/Etabs/28.ENC new file mode 100644 index 00000000000..beb39745b56 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/28.ENC @@ -0,0 +1,6 @@ +28.ENC MM GR + ST - ~0.002"/s UNS may be run neg pol +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 8 0 0 40 30 8 12 0 3.6 1.4 10 0.051 0.0 0 0 0 +24 3 0 0 40 30 4 12 0 3.6 1.4 10 0.02 45.0 0 0 0 +23 1 0 0 40 30 4 12 0 3.6 1.4 10 0.028 40.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/29.ENC b/configs/sim/axis/sedm/Etabs/29.ENC new file mode 100644 index 00000000000..f3f12d520c8 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/29.ENC @@ -0,0 +1,10 @@ +29.ENC MM ~0.003"/s UNS low On with lo D% suggest carbide +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 12 0 0 45 35 8 16 0 3.6 1.4 10 0.076 0.0 0 0 0 +24 9 0 0 45 35 8 16 0 3.6 1.4 10 0.015 45.0 0 0 0 +23 4 0 0 45 35 8 16 0 3.6 2.0 10 0.028 40.0 0 0 0 +22 3 0 0 45 35 8 16 0 3.6 3.0 10 0.033 36.0 0 0 0 +21 2 0 0 45 35 8 16 0 3.6 4.0 10 0.041 32.0 0 0 0 +20 1 0 0 45 35 8 16 0 3.6 5.0 10 0.046 29.0 0 0 0 +19 1 0 0 40 30 4 12 0 3.6 6.0 10 0.053 26.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/30.ENC b/configs/sim/axis/sedm/Etabs/30.ENC new file mode 100644 index 00000000000..a50b341247b --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/30.ENC @@ -0,0 +1,11 @@ +30.ENC MM GR+ ST- ~0.004"/s UNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 16 0 0 55 45 16 12 0 3.6 1.4 10 0.102 0.0 0 0 0 +24 9 0 0 55 45 16 12 0 3.6 1.4 10 0.023 45.0 0 0 0 +23 5 0 0 55 45 16 12 0 3.6 2.0 10 0.038 40.0 0 0 0 +22 4 0 0 50 40 12 12 0 3.6 3.0 10 0.048 36.0 0 0 0 +21 3 0 0 45 35 8 12 0 3.6 4.0 10 0.058 32.0 0 0 0 +20 3 0 0 40 30 4 12 0 3.6 5.0 10 0.069 29.0 0 0 0 +19 2 0 0 40 30 4 12 0 3.6 6.0 10 0.074 26.0 0 0 0 +18 1 0 0 40 30 4 12 0 3.6 6.0 10 0.079 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/31.ENC b/configs/sim/axis/sedm/Etabs/31.ENC new file mode 100644 index 00000000000..b25efc4233f --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/31.ENC @@ -0,0 +1,13 @@ +31.ENC MM ~0.005"/side UNS maybe Carbide loe on loow D% lowIP +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 18 0 0 65 55 24 16 0 3.6 1.4 10 0.127 0.0 0 0 0 +24 11 0 0 50 40 24 12 0 3.6 1.4 10 0.025 45.0 0 0 0 +23 11 0 0 50 40 16 12 0 3.6 2.0 10 0.043 40.0 0 0 0 +22 6 0 0 50 40 16 12 0 3.6 3.0 10 0.058 36.0 0 0 0 +21 6 0 0 45 35 8 12 0 3.6 4.0 10 0.074 32.0 0 0 0 +20 4 0 0 45 35 8 12 0 3.6 5.0 10 0.079 29.0 0 0 0 +19 4 0 0 40 30 4 12 0 3.6 6.0 10 0.089 26.0 0 0 0 +18 3 0 0 40 30 4 12 0 3.6 6.0 10 0.094 23.0 0 0 0 +17 2 0 0 40 30 4 12 0 3.6 6.0 10 0.099 20.0 0 0 0 +16 1 0 0 40 30 4 12 0 3.6 6.0 10 0.104 17.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/32.ENC b/configs/sim/axis/sedm/Etabs/32.ENC new file mode 100644 index 00000000000..e212f4d2007 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/32.ENC @@ -0,0 +1,12 @@ +32.ENC MM ?? GR+ Wo - ?? ~0.006/s UNS maybe Carbide lo IP 76 D% med on tine or eoughuing +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 18 0 0 45 35 64 20 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 16 0 0 50 40 48 24 0 3.6 1.4 10 0.02 45.0 0 0 0 +23 16 0 0 50 40 24 16 0 3.6 2.0 10 0.048 40.0 0 0 0 +22 16 0 0 50 40 12 12 0 3.6 3.0 10 0.069 36.0 0 0 0 +21 8 0 0 45 35 8 12 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 8 0 0 40 30 4 12 0 3.6 5.0 10 0.112 29.0 0 0 0 +19 5 0 0 40 30 4 12 0 3.6 6.0 10 0.117 26.0 0 0 0 +18 3 0 0 40 30 4 12 0 3.6 6.0 10 0.122 23.0 0 0 0 +17 2 0 0 40 30 4 12 0 3.6 6.0 10 0.127 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/33.ENC b/configs/sim/axis/sedm/Etabs/33.ENC new file mode 100644 index 00000000000..715a9101bfa --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/33.ENC @@ -0,0 +1,17 @@ +33.ENC MM~0.008/s UNS +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 32 0 0 40 30 68 24 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 25 0 0 45 35 56 20 0 3.6 1.4 10 0.028 45.0 0 0 0 +23 16 0 0 50 40 56 20 0 3.6 2.0 10 0.053 40.0 0 0 0 +22 15 0 0 50 40 36 16 0 3.6 3.0 10 0.076 36.0 0 0 0 +21 13 0 0 50 40 24 16 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 12 0 0 50 40 16 12 0 3.6 5.0 10 0.114 29.0 0 0 0 +19 7 0 0 50 40 16 12 0 3.6 6.0 10 0.13 26.0 0 0 0 +18 6 0 0 50 40 12 12 0 3.6 6.0 10 0.14 23.0 0 0 0 +17 6 0 0 45 35 8 12 0 3.6 6.0 10 0.15 20.0 0 0 0 +16 3 0 0 45 35 8 12 0 3.6 6.0 10 0.157 17.0 0 0 0 +15 4 0 0 40 30 4 12 0 3.6 6.0 10 0.165 14.0 0 0 0 +14 3 0 0 40 30 4 12 0 3.6 6.0 10 0.17 12.0 0 0 0 +13 2 0 0 40 30 4 12 0 3.6 6.0 10 0.175 10.0 0 0 0 +12 1 0 0 40 30 4 12 0 3.6 6.0 10 0.18 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/34.ENC b/configs/sim/axis/sedm/Etabs/34.ENC new file mode 100644 index 00000000000..5e79fcf4024 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/34.ENC @@ -0,0 +1,14 @@ +34.ENC MM ~0,010"/s UNS GR+SR- +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 45 0 0 35 25 112 36 0 3.6 1.4 10 0.254 0.0 0 0 0 +24 28 0 0 40 30 100 36 0 3.6 1.4 10 0.046 45.0 0 0 0 +23 24 0 0 45 35 48 20 0 3.6 2.0 10 0.099 40.0 0 0 0 +22 20 0 0 45 35 24 12 0 3.6 3.0 10 0.14 36.0 0 0 0 +21 18 0 0 45 35 12 12 0 3.6 4.0 10 0.165 32.0 0 0 0 +20 16 0 0 45 35 8 12 0 3.6 5.0 10 0.18 29.0 0 0 0 +19 9 0 0 45 35 8 12 0 3.6 6.0 10 0.198 26.0 0 0 0 +18 10 0 0 40 30 4 12 0 3.6 6.0 10 0.208 23.0 0 0 0 +17 6 0 0 40 30 4 12 0 3.6 6.0 10 0.216 20.0 0 0 0 +16 4 0 0 40 30 4 12 0 3.6 6.0 10 0.221 17.0 0 0 0 +15 2 0 0 40 30 4 12 0 3.6 6.0 10 0.229 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/35.ENC b/configs/sim/axis/sedm/Etabs/35.ENC new file mode 100644 index 00000000000..7665e013b1c --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/35.ENC @@ -0,0 +1,16 @@ +35.ENC MM ~0.012"/s UNS GR+ ST- +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 63 0 0 32 22 112 32 0 3.6 1.4 10 0.305 0.0 0 0 0 +24 55 0 0 40 30 100 36 0 3.6 1.4 10 0.03 45.0 0 0 0 +23 35 0 0 45 35 100 36 0 3.6 2.0 10 0.069 40.0 0 0 0 +22 35 0 0 45 35 60 28 0 3.6 3.0 10 0.104 36.0 0 0 0 +21 21 0 0 45 35 60 28 0 3.6 4.0 10 0.14 32.0 0 0 0 +20 21 0 0 45 35 36 24 0 3.6 5.0 10 0.168 29.0 0 0 0 +19 12 0 0 45 35 36 24 0 3.6 6.0 10 0.196 26.0 0 0 0 +18 12 0 0 45 35 20 12 0 3.6 6.0 10 0.218 23.0 0 0 0 +17 8 0 0 45 35 20 12 0 3.6 6.0 10 0.231 20.0 0 0 0 +16 7 0 0 45 35 16 12 0 3.6 6.0 10 0.241 17.0 0 0 0 +15 5 0 0 45 35 12 12 0 3.6 6.0 10 0.254 14.0 0 0 0 +14 5 0 0 45 35 8 12 0 3.6 6.0 10 0.262 12.0 0 0 0 +13 5 0 0 40 30 4 12 0 3.6 6.0 10 0.274 10.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/41.ENC b/configs/sim/axis/sedm/Etabs/41.ENC new file mode 100644 index 00000000000..2c69bc4e199 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/41.ENC @@ -0,0 +1,13 @@ +41.ENC MM ~0.005/s UNS GR+ ST- +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 14 0 0 65 55 32 16 0 3.6 1.4 10 0.127 0.0 0 0 0 +24 14 0 0 50 40 20 12 0 3.6 1.4 10 0.023 45.0 0 0 0 +23 8 0 0 50 40 20 12 0 3.6 2.0 10 0.046 40.0 0 0 0 +22 8 0 0 50 40 16 12 0 3.6 3.0 10 0.053 36.0 0 0 0 +21 7 0 0 45 35 12 12 0 3.6 4.0 10 0.063 32.0 0 0 0 +20 7 0 0 45 35 8 12 0 3.6 5.0 10 0.074 29.0 0 0 0 +19 8 0 0 40 30 4 12 0 3.6 6.0 10 0.086 26.0 0 0 0 +18 5 0 0 40 30 4 12 0 3.6 6.0 10 0.091 23.0 0 0 0 +17 3 0 0 40 30 4 12 0 3.6 6.0 10 0.097 20.0 0 0 0 +16 1 0 0 40 30 4 12 0 3.6 6.0 10 0.104 17.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/42.ENC b/configs/sim/axis/sedm/Etabs/42.ENC new file mode 100644 index 00000000000..d2be7914d79 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/42.ENC @@ -0,0 +1,12 @@ +42.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 17 0 0 45 35 64 24 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 12 0 0 50 40 64 24 0 3.6 1.4 10 0.023 45.0 0 0 0 +23 12 0 0 50 40 36 20 0 3.6 2.0 10 0.046 40.0 0 0 0 +22 12 0 0 50 40 20 12 0 3.6 3.0 10 0.066 36.0 0 0 0 +21 8 0 0 45 35 8 12 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 8 0 0 40 30 4 12 0 3.6 5.0 10 0.112 29.0 0 0 0 +19 6 0 0 40 30 4 12 0 3.6 6.0 10 0.114 26.0 0 0 0 +18 4 0 0 40 30 4 12 0 3.6 6.0 10 0.119 20.0 0 0 0 +17 2 0 0 40 30 4 12 0 3.6 6.0 10 0.127 17.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/43.ENC b/configs/sim/axis/sedm/Etabs/43.ENC new file mode 100644 index 00000000000..22f5ebd6185 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/43.ENC @@ -0,0 +1,17 @@ +43.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 24 0 0 40 30 88 32 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 22 0 0 45 35 56 20 0 3.6 1.4 10 0.036 45.0 0 0 0 +23 16 0 0 50 40 56 20 0 3.6 2.0 10 0.053 40.0 0 0 0 +22 15 0 0 50 40 36 16 0 3.6 3.0 10 0.076 36.0 0 0 0 +21 13 0 0 50 40 24 16 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 12 0 0 50 40 16 16 0 3.6 5.0 10 0.114 29.0 0 0 0 +19 7 0 0 50 40 16 16 0 3.6 6.0 10 0.13 26.0 0 0 0 +18 6 0 0 50 40 12 12 0 3.6 6.0 10 0.14 23.0 0 0 0 +17 6 0 0 45 35 8 12 0 3.6 6.0 10 0.15 20.0 0 0 0 +16 3 0 0 45 35 8 12 0 3.6 6.0 10 0.157 17.0 0 0 0 +15 4 0 0 40 30 4 12 0 3.6 6.0 10 0.165 14.0 0 0 0 +14 3 0 0 40 30 4 12 0 3.6 6.0 10 0.17 12.0 0 0 0 +13 2 0 0 40 30 4 12 0 3.6 6.0 10 0.175 10.0 0 0 0 +12 1 0 0 40 30 4 12 0 3.6 6.0 10 0.18 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/44.ENC b/configs/sim/axis/sedm/Etabs/44.ENC new file mode 100644 index 00000000000..bb725b08f8a --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/44.ENC @@ -0,0 +1,14 @@ +44.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 37 0 0 30 20 136 44 0 3.6 1.4 10 0.254 0.0 0 0 0 +24 28 0 0 30 20 100 36 0 3.6 1.4 10 0.046 45.0 0 0 0 +23 24 0 0 30 20 48 20 0 3.6 2.0 10 0.099 40.0 0 0 0 +22 20 0 0 30 20 24 12 0 3.6 3.0 10 0.14 36.0 0 0 0 +21 18 0 0 30 20 12 12 0 3.6 4.0 10 0.165 32.0 0 0 0 +20 16 0 0 30 20 8 12 0 3.6 5.0 10 0.18 29.0 0 0 0 +19 9 0 0 30 20 8 12 0 3.6 6.0 10 0.198 26.0 0 0 0 +18 10 0 0 30 20 4 12 0 3.6 6.0 10 0.208 20.0 0 0 0 +17 6 0 0 30 20 4 12 0 3.6 6.0 10 0.216 17.0 0 0 0 +16 3 0 0 30 20 4 12 0 3.6 6.0 10 0.224 14.0 0 0 0 +15 2 0 0 30 20 4 12 0 3.6 6.0 10 0.229 12.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/45.ENC b/configs/sim/axis/sedm/Etabs/45.ENC new file mode 100644 index 00000000000..77253a5dc4e --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/45.ENC @@ -0,0 +1,16 @@ +45.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 55 0 0 32 22 136 44 0 3.6 1.4 10 0.305 0.0 0 0 0 +24 55 0 0 40 30 100 36 0 3.6 1.4 10 0.03 45.0 0 0 0 +23 35 0 0 45 35 100 36 0 3.6 2.0 10 0.069 40.0 0 0 0 +22 35 0 0 45 35 60 28 0 3.6 3.0 10 0.104 36.0 0 0 0 +21 21 0 0 45 35 60 28 0 3.6 4.0 10 0.14 32.0 0 0 0 +20 21 0 0 45 35 36 24 0 3.6 5.0 10 0.168 29.0 0 0 0 +19 12 0 0 45 35 36 24 0 3.6 6.0 10 0.196 26.0 0 0 0 +18 12 0 0 45 35 20 12 0 3.6 6.0 10 0.218 23.0 0 0 0 +17 8 0 0 45 35 20 12 0 3.6 6.0 10 0.231 20.0 0 0 0 +16 7 0 0 45 35 16 12 0 3.6 6.0 10 0.241 17.0 0 0 0 +15 5 0 0 45 35 12 12 0 3.6 6.0 10 0.254 14.0 0 0 0 +14 5 0 0 45 35 8 12 0 3.6 6.0 10 0.262 12.0 0 0 0 +13 5 0 0 40 30 4 12 0 3.6 6.0 10 0.274 10.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/46.ENC b/configs/sim/axis/sedm/Etabs/46.ENC new file mode 100644 index 00000000000..378aba5a1ec --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/46.ENC @@ -0,0 +1,17 @@ +46.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 89 0 0 32 22 136 44 0 3.6 1.4 10 0.406 0.0 0 0 0 +24 64 0 0 40 30 136 28 0 3.6 1.4 10 0.061 45.0 0 0 0 +23 50 0 0 45 35 136 28 0 3.6 2.0 10 0.097 40.0 0 0 0 +22 40 0 0 45 35 100 28 0 3.6 3.0 10 0.15 36.0 0 0 0 +21 30 0 0 45 35 80 24 0 3.6 4.0 10 0.196 32.0 0 0 0 +20 30 0 0 45 35 48 20 0 3.6 5.0 10 0.231 29.0 0 0 0 +19 24 0 0 45 35 36 16 0 3.6 6.0 10 0.262 23.0 0 0 0 +18 16 0 0 45 35 32 16 0 3.6 6.0 10 0.29 20.0 0 0 0 +17 12 0 0 45 35 20 12 0 3.6 6.0 10 0.32 17.0 0 0 0 +16 8 0 0 45 35 20 12 0 3.6 6.0 10 0.333 14.0 0 0 0 +15 6 0 0 45 35 16 12 0 3.6 6.0 10 0.345 12.0 0 0 0 +14 6 0 0 45 35 12 12 0 3.6 6.0 10 0.353 10.0 0 0 0 +13 6 0 0 45 35 8 12 0 3.6 6.0 10 0.363 8.0 0 0 0 +12 4 0 0 45 35 8 12 0 3.6 6.0 10 0.368 6.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/47.ENC b/configs/sim/axis/sedm/Etabs/47.ENC new file mode 100644 index 00000000000..58ad078cd22 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/47.ENC @@ -0,0 +1,17 @@ +47.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 100 0 0 32 22 136 32 0 3.6 1.4 10 0.457 0.0 0 0 0 +24 89 0 0 40 30 136 48 0 3.6 1.4 10 0.033 45.0 0 0 0 +23 64 0 0 40 30 136 48 0 3.6 2.0 10 0.097 40.0 0 0 0 +22 50 0 0 45 35 136 40 0 3.6 3.0 10 0.16 36.0 0 0 0 +21 40 0 0 45 35 100 36 0 3.6 4.0 10 0.211 32.0 0 0 0 +20 30 0 0 45 35 80 32 0 3.6 5.0 10 0.251 29.0 0 0 0 +19 30 0 0 45 35 44 20 0 3.6 6.0 10 0.29 26.0 0 0 0 +18 24 0 0 45 35 36 16 0 3.6 6.0 10 0.317 23.0 0 0 0 +17 16 0 0 45 35 32 16 0 3.6 6.0 10 0.345 20.0 0 0 0 +16 12 0 0 45 35 20 12 0 3.6 6.0 10 0.373 17.0 0 0 0 +15 8 0 0 45 35 20 12 0 3.6 6.0 10 0.386 14.0 0 0 0 +14 8 0 0 45 35 12 12 0 3.6 6.0 10 0.401 12.0 0 0 0 +13 5 0 0 45 35 12 12 0 3.6 6.0 10 0.409 10.0 0 0 0 +12 4 0 0 45 35 8 8 0 3.6 6.0 10 0.419 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/48.ENC b/configs/sim/axis/sedm/Etabs/48.ENC new file mode 100644 index 00000000000..66383cafca4 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/48.ENC @@ -0,0 +1,15 @@ +48.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 150 0 0 32 22 136 48 0 3.6 1.4 10 0.635 0.0 0 0 0 +24 120 0 0 40 30 136 48 0 3.6 1.4 10 0.132 45.0 0 0 0 +23 79 0 0 40 30 136 48 0 3.6 2.0 10 0.262 40.0 0 0 0 +22 60 0 0 40 30 136 48 0 3.6 3.0 10 0.325 36.0 0 0 0 +21 48 0 0 45 35 100 48 0 3.6 4.0 10 0.378 32.0 0 0 0 +20 35 0 0 45 35 80 24 0 3.6 5.0 10 0.424 29.0 0 0 0 +19 34 0 0 45 35 48 20 0 3.6 6.0 10 0.465 26.0 0 0 0 +18 24 0 0 45 35 36 16 0 3.6 6.0 10 0.503 23.0 0 0 0 +17 16 0 0 45 35 32 20 0 3.6 6.0 10 0.528 20.0 0 0 0 +16 12 0 0 45 35 20 12 0 3.6 6.0 10 0.556 17.0 0 0 0 +15 8 0 0 45 35 20 12 0 3.6 6.0 10 0.569 14.0 0 0 0 +14 6 0 0 45 35 16 16 0 3.6 6.0 10 0.582 12.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/49.ENC b/configs/sim/axis/sedm/Etabs/49.ENC new file mode 100644 index 00000000000..99dfcd01932 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/49.ENC @@ -0,0 +1,14 @@ +49.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 190 0 0 32 22 136 44 0 3.6 1.4 10 0.813 0.0 0 0 0 +24 140 0 0 40 30 136 48 0 3.6 1.4 10 0.239 45.0 0 0 0 +23 79 0 0 40 30 136 48 0 3.6 2.0 10 0.444 40.0 0 0 0 +22 60 0 0 40 30 136 48 0 3.6 3.0 10 0.511 36.0 0 0 0 +21 48 0 0 45 35 100 40 0 3.6 4.0 10 0.561 32.0 0 0 0 +20 35 0 0 45 35 80 32 0 3.6 5.0 10 0.605 29.0 0 0 0 +19 34 0 0 45 35 48 20 0 3.6 6.0 10 0.64 26.0 0 0 0 +18 24 0 0 45 35 36 16 0 3.6 6.0 10 0.678 23.0 0 0 0 +17 16 0 0 45 35 32 16 0 3.6 6.0 10 0.706 20.0 0 0 0 +16 12 0 0 45 35 20 16 0 3.6 6.0 10 0.737 17.0 0 0 0 +15 8 0 0 45 35 20 16 0 3.6 6.0 10 0.749 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/52.ENC b/configs/sim/axis/sedm/Etabs/52.ENC new file mode 100644 index 00000000000..66a46778b9c --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/52.ENC @@ -0,0 +1,12 @@ +52.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 14 0 0 45 35 80 28 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 11 0 0 50 40 64 20 0 3.6 1.4 10 0.025 45.0 0 0 0 +23 11 0 0 50 40 36 20 0 3.6 2.0 10 0.048 40.0 0 0 0 +22 11 0 0 50 40 20 16 0 3.6 3.0 10 0.069 36.0 0 0 0 +21 8 0 0 45 35 8 12 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 8 0 0 40 30 4 12 0 3.6 5.0 10 0.112 29.0 0 0 0 +19 6 0 0 40 30 4 12 0 3.6 6.0 10 0.114 26.0 0 0 0 +18 4 0 0 40 30 4 12 0 3.6 6.0 10 0.119 23.0 0 0 0 +17 2 0 0 40 30 4 12 0 3.6 6.0 10 0.127 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/53.ENC b/configs/sim/axis/sedm/Etabs/53.ENC new file mode 100644 index 00000000000..275576fabc5 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/53.ENC @@ -0,0 +1,17 @@ +53.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 20 0 0 40 30 104 28 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 18 0 0 45 35 72 24 0 3.6 1.4 10 0.036 45.0 0 0 0 +23 16 0 0 50 40 56 20 0 3.6 2.0 10 0.053 40.0 0 0 0 +22 15 0 0 50 40 36 16 0 3.6 3.0 10 0.076 36.0 0 0 0 +21 13 0 0 50 40 24 16 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 12 0 0 50 40 16 16 0 3.6 5.0 10 0.114 29.0 0 0 0 +19 7 0 0 50 40 16 16 0 3.6 6.0 10 0.13 26.0 0 0 0 +18 6 0 0 50 40 12 12 0 3.6 6.0 10 0.14 23.0 0 0 0 +17 6 0 0 50 40 8 12 0 3.6 6.0 10 0.15 20.0 0 0 0 +16 3 0 0 50 40 8 12 0 3.6 6.0 10 0.157 17.0 0 0 0 +15 4 0 0 45 35 4 12 0 3.6 6.0 10 0.165 14.0 0 0 0 +14 3 0 0 45 35 4 12 0 3.6 6.0 10 0.17 12.0 0 0 0 +13 2 0 0 40 30 4 12 0 3.6 6.0 10 0.175 10.0 0 0 0 +12 1 0 0 40 30 4 12 0 3.6 6.0 10 0.18 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/54.ENC b/configs/sim/axis/sedm/Etabs/54.ENC new file mode 100644 index 00000000000..70feeda381a --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/54.ENC @@ -0,0 +1,14 @@ +54.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 28 0 0 35 25 176 44 0 3.6 1.4 10 0.254 0.0 0 0 0 +24 28 0 0 40 30 100 36 0 3.6 1.4 10 0.046 15.0 0 0 0 +23 24 0 0 45 35 48 20 0 3.6 2.0 10 0.099 40.0 0 0 0 +22 20 0 0 45 35 24 12 0 3.6 3.0 10 0.14 36.0 0 0 0 +21 18 0 0 45 35 12 12 0 3.6 4.0 10 0.165 32.0 0 0 0 +20 16 0 0 45 35 8 12 0 3.6 5.0 10 0.18 29.0 0 0 0 +19 9 0 0 45 35 8 12 0 3.6 6.0 10 0.198 26.0 0 0 0 +18 10 0 0 40 30 4 12 0 3.6 6.0 10 0.208 23.0 0 0 0 +17 6 0 0 40 30 4 12 0 3.6 6.0 10 0.216 20.0 0 0 0 +16 4 0 0 40 30 4 12 0 3.6 6.0 10 0.221 17.0 0 0 0 +15 2 0 0 40 30 4 12 0 3.6 6.0 10 0.229 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/55.ENC b/configs/sim/axis/sedm/Etabs/55.ENC new file mode 100644 index 00000000000..7d52ce97320 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/55.ENC @@ -0,0 +1,16 @@ +55.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 43 0 0 32 22 176 48 0 3.6 1.4 10 0.305 0.0 0 0 0 +24 35 0 0 40 30 160 48 0 3.6 1.4 10 0.028 45.0 0 0 0 +23 35 0 0 45 35 100 36 0 3.6 2.0 10 0.069 40.0 0 0 0 +22 35 0 0 45 35 60 28 0 3.6 3.0 10 0.104 36.0 0 0 0 +21 21 0 0 45 35 60 28 0 3.6 4.0 10 0.14 32.0 0 0 0 +20 21 0 0 45 35 36 24 0 3.6 5.0 10 0.168 29.0 0 0 0 +19 12 0 0 45 35 36 24 0 3.6 6.0 10 0.196 26.0 0 0 0 +18 12 0 0 45 35 20 12 0 3.6 6.0 10 0.218 23.0 0 0 0 +17 8 0 0 45 35 20 12 0 3.6 6.0 10 0.231 20.0 0 0 0 +16 7 0 0 45 35 16 12 0 3.6 6.0 10 0.241 17.0 0 0 0 +15 5 0 0 45 35 12 12 0 3.6 6.0 10 0.254 14.0 0 0 0 +14 5 0 0 45 35 8 12 0 3.6 6.0 10 0.262 12.0 0 0 0 +13 5 0 0 45 35 4 12 0 3.6 6.0 10 0.274 10.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/56.ENC b/configs/sim/axis/sedm/Etabs/56.ENC new file mode 100644 index 00000000000..1ee989d7f21 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/56.ENC @@ -0,0 +1,17 @@ +56.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 79 0 0 32 22 176 56 0 3.6 1.4 10 0.406 0.0 0 0 0 +24 64 0 0 40 30 176 56 0 3.6 1.4 10 0.038 45.0 0 0 0 +23 50 0 0 45 35 136 48 0 3.6 2.0 10 0.097 40.0 0 0 0 +22 40 0 0 45 35 100 36 0 3.6 3.0 10 0.15 36.0 0 0 0 +21 30 0 0 45 35 80 32 0 3.6 4.0 10 0.196 32.0 0 0 0 +20 30 0 0 45 35 48 20 0 3.6 5.0 10 0.231 29.0 0 0 0 +19 24 0 0 45 35 36 16 0 3.6 6.0 10 0.262 26.0 0 0 0 +18 16 0 0 45 35 32 16 0 3.6 6.0 10 0.29 23.0 0 0 0 +17 12 0 0 45 35 20 12 0 3.6 6.0 10 0.32 20.0 0 0 0 +16 8 0 0 45 35 20 12 0 3.6 6.0 10 0.333 17.0 0 0 0 +15 6 0 0 45 35 16 12 0 3.6 6.0 10 0.345 14.0 0 0 0 +14 6 0 0 45 35 12 12 0 3.6 6.0 10 0.353 12.0 0 0 0 +13 6 0 0 45 35 8 12 0 3.6 6.0 10 0.363 10.0 0 0 0 +12 4 0 0 45 35 8 12 0 3.6 6.0 10 0.368 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/57.ENC b/configs/sim/axis/sedm/Etabs/57.ENC new file mode 100644 index 00000000000..b7119639d1a --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/57.ENC @@ -0,0 +1,17 @@ +57.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 100 0 0 32 22 176 56 0 3.6 1.4 10 0.457 0.0 0 0 0 +24 89 0 0 40 30 176 56 0 3.6 1.4 10 0.033 45.0 0 0 0 +23 64 0 0 40 30 176 56 0 3.6 2.0 10 0.097 40.0 0 0 0 +22 50 0 0 45 35 136 48 0 3.6 3.0 10 0.16 36.0 0 0 0 +21 40 0 0 45 35 100 36 0 3.6 4.0 10 0.211 32.0 0 0 0 +20 30 0 0 45 35 80 24 0 3.6 5.0 10 0.251 29.0 0 0 0 +19 30 0 0 45 35 44 20 0 3.6 6.0 10 0.29 26.0 0 0 0 +18 24 0 0 45 35 36 16 0 3.6 6.0 10 0.317 23.0 0 0 0 +17 16 0 0 45 35 32 16 0 3.6 6.0 10 0.345 20.0 0 0 0 +16 12 0 0 45 35 20 12 0 3.6 6.0 10 0.373 17.0 0 0 0 +15 8 0 0 45 35 20 12 0 3.6 6.0 10 0.386 14.0 0 0 0 +14 8 0 0 45 35 12 12 0 3.6 6.0 10 0.401 12.0 0 0 0 +13 5 0 0 45 35 12 12 0 3.6 6.0 10 0.409 10.0 0 0 0 +12 4 0 0 45 35 8 16 0 3.6 6.0 10 0.419 8.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/58.ENC b/configs/sim/axis/sedm/Etabs/58.ENC new file mode 100644 index 00000000000..38919c4c4c2 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/58.ENC @@ -0,0 +1,15 @@ +58.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 150 0 0 32 22 176 56 0 3.6 1.4 10 0.635 0.0 0 0 0 +24 120 0 0 40 30 176 60 0 3.6 1.4 10 0.132 45.0 0 0 0 +23 79 0 0 40 30 176 60 0 3.6 2.0 10 0.262 40.0 0 0 0 +22 60 0 0 40 30 136 48 0 3.6 3.0 10 0.325 36.0 0 0 0 +21 48 0 0 45 35 100 48 0 3.6 4.0 10 0.378 32.0 0 0 0 +20 35 0 0 45 35 80 24 0 3.6 5.0 10 0.424 29.0 0 0 0 +19 34 0 0 45 35 48 20 0 3.6 6.0 10 0.465 26.0 0 0 0 +18 24 0 0 45 35 36 16 0 3.6 6.0 10 0.503 23.0 0 0 0 +17 16 0 0 45 35 32 20 0 3.6 6.0 10 0.528 20.0 0 0 0 +16 12 0 0 45 35 20 12 0 3.6 6.0 10 0.556 17.0 0 0 0 +15 8 0 0 45 35 20 12 0 3.6 6.0 10 0.569 14.0 0 0 0 +14 6 0 0 45 35 16 16 0 3.6 6.0 10 0.582 12.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/59.ENC b/configs/sim/axis/sedm/Etabs/59.ENC new file mode 100644 index 00000000000..a74ddfac150 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/59.ENC @@ -0,0 +1,14 @@ +59.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 190 0 0 32 22 224 60 0 3.6 1.4 10 0.813 0.0 0 0 0 +24 140 0 0 40 30 224 60 0 3.6 1.4 10 0.239 45.0 0 0 0 +23 79 0 0 40 30 176 64 0 3.6 2.0 10 0.452 40.0 0 0 0 +22 60 0 0 40 30 136 48 0 3.6 3.0 10 0.513 36.0 0 0 0 +21 48 0 0 45 35 100 40 0 3.6 4.0 10 0.564 32.0 0 0 0 +20 35 0 0 45 35 80 32 0 3.6 5.0 10 0.605 29.0 0 0 0 +19 34 0 0 45 35 48 20 0 3.6 6.0 10 0.64 26.0 0 0 0 +18 24 0 0 45 35 36 16 0 3.6 6.0 10 0.678 23.0 0 0 0 +17 16 0 0 45 35 32 16 0 3.6 6.0 10 0.706 20.0 0 0 0 +16 12 0 0 45 35 20 16 0 3.6 6.0 10 0.737 17.0 0 0 0 +15 8 0 0 45 35 20 16 0 3.6 6.0 10 0.749 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/60.ENC b/configs/sim/axis/sedm/Etabs/60.ENC new file mode 100644 index 00000000000..a9b10b6e92a --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/60.ENC @@ -0,0 +1,8 @@ +60.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 18 1 0 50 40 16 36 0 3.6 1.4 10 0.102 0.0 0 0 0 +24 14 1 0 50 40 16 36 0 3.6 1.4 10 0.03 45.0 0 0 0 +23 12 1 0 50 40 12 28 0 3.6 2.0 10 0.051 40.0 0 0 0 +22 9 1 0 50 40 12 28 0 3.6 3.0 10 0.061 36.0 0 0 0 +21 6 1 0 50 40 12 28 0 3.6 4.0 10 0.069 32.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/61.ENC b/configs/sim/axis/sedm/Etabs/61.ENC new file mode 100644 index 00000000000..45ad81e12e0 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/61.ENC @@ -0,0 +1,9 @@ +61.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 50 1 0 32 22 20 48 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 32 1 0 32 22 20 48 0 3.6 1.4 10 0.025 45.0 0 0 0 +23 32 1 0 32 22 12 28 0 3.6 2.0 10 0.053 40.0 0 0 0 +22 21 1 0 32 22 12 28 0 3.6 3.0 10 0.081 36.0 0 0 0 +21 12 1 0 32 22 12 28 0 3.6 4.0 10 0.097 32.0 0 0 0 +20 7 1 0 32 22 12 28 0 3.6 5.0 10 0.107 29.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/62.ENC b/configs/sim/axis/sedm/Etabs/62.ENC new file mode 100644 index 00000000000..39df33c3242 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/62.ENC @@ -0,0 +1,11 @@ +62.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 65 1 0 32 22 36 64 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 40 1 0 32 22 36 56 0 3.6 1.4 10 0.051 45.0 0 0 0 +23 40 1 0 32 22 24 48 0 3.6 2.0 10 0.074 40.0 0 0 0 +22 23 1 0 32 22 24 48 0 3.6 3.0 10 0.102 36.0 0 0 0 +21 23 1 0 32 22 16 24 0 3.6 4.0 10 0.135 32.0 0 0 0 +20 14 1 0 32 22 16 24 0 3.6 5.0 10 0.147 29.0 0 0 0 +19 14 1 0 32 22 12 20 0 3.6 6.0 10 0.16 26.0 0 0 0 +18 8 1 0 32 22 12 20 0 3.6 6.0 10 0.17 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/63.ENC b/configs/sim/axis/sedm/Etabs/63.ENC new file mode 100644 index 00000000000..a4e3d81f23c --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/63.ENC @@ -0,0 +1,11 @@ +63.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 75 1 0 32 22 36 48 0 3.6 1.4 10 0.305 0.0 0 0 0 +24 45 1 0 32 22 36 36 0 3.6 1.4 10 0.076 45.0 0 0 0 +23 30 1 0 32 22 24 36 0 3.6 2.0 10 0.114 40.0 0 0 0 +22 30 1 0 32 22 16 24 0 3.6 3.0 10 0.178 36.0 0 0 0 +21 18 1 0 32 22 16 24 0 3.6 4.0 10 0.229 32.0 0 0 0 +20 18 1 0 32 22 12 20 0 3.6 5.0 10 0.254 29.0 0 0 0 +19 10 1 0 32 22 12 20 0 3.6 6.0 10 0.264 26.0 0 0 0 +18 6 1 0 32 22 12 20 0 3.6 6.0 10 0.272 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/64.ENC b/configs/sim/axis/sedm/Etabs/64.ENC new file mode 100644 index 00000000000..412ed78c38d --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/64.ENC @@ -0,0 +1,8 @@ +64.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 20 1 0 60 50 20 80 0 3.6 1.4 10 0.102 0.0 0 0 0 +24 20 1 0 60 50 16 64 0 3.6 1.4 10 0.03 45.0 0 0 0 +23 12 1 0 60 50 12 48 0 3.6 2.0 10 0.051 40.0 0 0 0 +22 9 1 0 60 50 12 48 0 3.6 3.0 10 0.061 36.0 0 0 0 +21 6 1 0 60 50 12 48 0 3.6 4.0 10 0.069 32.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/65.ENC b/configs/sim/axis/sedm/Etabs/65.ENC new file mode 100644 index 00000000000..812ffa5fc75 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/65.ENC @@ -0,0 +1,9 @@ +65.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 60 1 0 60 50 20 80 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 36 1 0 60 50 20 80 0 3.6 1.4 10 0.025 45.0 0 0 0 +23 36 1 0 60 50 12 48 0 3.6 2.0 10 0.053 40.0 0 0 0 +22 21 1 0 60 50 12 48 0 3.6 3.0 10 0.081 36.0 0 0 0 +21 12 1 0 60 50 12 48 0 3.6 4.0 10 0.097 32.0 0 0 0 +20 7 1 0 60 50 12 48 0 3.6 5.0 10 0.107 29.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/66.ENC b/configs/sim/axis/sedm/Etabs/66.ENC new file mode 100644 index 00000000000..21d0aa7f26c --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/66.ENC @@ -0,0 +1,11 @@ +66.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 65 1 0 60 50 36 144 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 40 1 0 60 50 36 144 0 3.6 1.4 10 0.051 45.0 0 0 0 +23 40 1 0 60 50 24 96 0 3.6 2.0 10 0.074 40.0 0 0 0 +22 23 1 0 60 50 24 96 0 3.6 3.0 10 0.102 36.0 0 0 0 +21 23 1 0 60 50 16 64 0 3.6 4.0 10 0.135 32.0 0 0 0 +20 14 1 0 60 50 16 64 0 3.6 5.0 10 0.147 29.0 0 0 0 +19 14 1 0 60 50 12 36 0 3.6 6.0 10 0.16 26.0 0 0 0 +18 8 1 0 60 50 12 36 0 3.6 6.0 10 0.17 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/67.ENC b/configs/sim/axis/sedm/Etabs/67.ENC new file mode 100644 index 00000000000..a6b18e63597 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/67.ENC @@ -0,0 +1,11 @@ +67.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 35 0 2 75 65 40 80 0 1.0 2.0 10 0.127 0.0 0 0 0 +24 24 0 2 75 65 40 80 0 1.0 3.0 10 0.025 45.0 0 0 0 +23 24 0 2 75 65 24 48 0 1.0 3.5 10 0.041 40.0 0 0 0 +22 18 0 2 75 65 24 48 0 1.0 3.5 10 0.063 36.0 0 0 0 +21 18 0 2 75 65 20 40 0 1.0 3.5 10 0.076 32.0 0 0 0 +20 12 0 2 75 65 20 40 0 1.0 3.5 10 0.086 29.0 0 0 0 +19 8 0 2 75 65 20 40 0 1.0 3.5 10 0.094 26.0 0 0 0 +18 8 0 2 75 65 16 32 0 1.0 3.5 10 0.102 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/68.ENC b/configs/sim/axis/sedm/Etabs/68.ENC new file mode 100644 index 00000000000..0c342f38d09 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/68.ENC @@ -0,0 +1,12 @@ +68.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 60 0 0 30 20 148 168 0 3.6 3.5 10 0.406 0.0 0 0 0 +24 50 0 0 30 20 80 120 0 3.6 3.5 10 0.147 45.0 0 0 0 +23 35 0 0 30 20 48 72 0 3.6 3.5 10 0.249 40.0 0 0 0 +22 24 0 0 30 20 24 36 0 3.6 3.5 10 0.292 36.0 0 0 0 +21 20 0 0 30 20 12 24 0 3.6 3.5 10 0.323 32.0 0 0 0 +20 16 0 0 30 20 8 16 0 3.6 3.5 10 0.335 29.0 0 0 0 +19 8 0 0 30 20 4 12 0 3.6 3.5 10 0.351 26.0 0 0 0 +18 8 0 0 30 20 4 12 0 3.6 3.5 10 0.373 23.0 0 0 0 +17 6 0 0 30 20 4 12 0 3.6 3.5 10 0.378 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/69.ENC b/configs/sim/axis/sedm/Etabs/69.ENC new file mode 100644 index 00000000000..2a2be3529ec --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/69.ENC @@ -0,0 +1,12 @@ +69.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 24 0 0 25 15 112 140 0 3.6 3.5 10 0.254 0.0 0 0 0 +24 24 0 0 30 20 48 72 0 3.6 3.5 10 0.069 45.0 0 0 0 +23 20 0 0 30 20 24 36 0 3.6 3.5 10 0.109 40.0 0 0 0 +22 16 0 0 30 20 12 24 0 3.6 3.5 10 0.145 36.0 0 0 0 +21 12 0 0 30 20 12 24 0 3.6 3.5 10 0.173 32.0 0 0 0 +20 8 0 0 30 20 8 16 0 3.6 3.5 10 0.193 29.0 0 0 0 +19 4 0 0 30 20 4 12 0 3.6 3.5 10 0.206 26.0 0 0 0 +18 4 0 0 30 20 4 12 0 3.6 3.5 10 0.221 23.0 0 0 0 +17 2 0 0 30 20 4 12 0 3.6 3.5 10 0.224 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/70.ENC b/configs/sim/axis/sedm/Etabs/70.ENC new file mode 100644 index 00000000000..d3f60f22bf0 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/70.ENC @@ -0,0 +1,12 @@ +70.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 16 0 0 25 15 120 140 0 3.6 3.5 10 0.203 0.0 0 0 0 +24 16 0 0 30 20 48 72 0 3.6 3.5 10 0.061 45.0 0 0 0 +23 16 0 0 30 20 24 36 0 3.6 3.5 10 0.097 40.0 0 0 0 +22 16 0 0 30 20 12 24 0 3.6 3.5 10 0.124 36.0 0 0 0 +21 8 0 0 30 20 8 16 0 3.6 3.5 10 0.14 32.0 0 0 0 +20 8 0 0 30 20 4 12 0 3.6 3.5 10 0.152 29.0 0 0 0 +19 6 0 0 30 20 4 12 0 3.6 3.5 10 0.165 26.0 0 0 0 +18 4 0 0 30 20 4 12 0 3.6 3.5 10 0.173 23.0 0 0 0 +17 2 0 0 30 20 4 12 0 3.6 3.5 10 0.178 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/71.ENC b/configs/sim/axis/sedm/Etabs/71.ENC new file mode 100644 index 00000000000..6e44dbf3124 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/71.ENC @@ -0,0 +1,14 @@ +71.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 16 0 0 45 35 60 112 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 12 0 0 45 35 60 112 0 3.6 1.4 10 0.025 45.0 0 0 0 +23 11 0 0 40 30 40 80 0 3.6 1.8 10 0.051 40.0 0 0 0 +22 9 0 0 40 30 36 72 0 3.6 2.0 10 0.076 36.0 0 0 0 +21 9 0 0 40 30 24 48 0 3.6 3.0 10 0.089 32.0 0 0 0 +20 8 0 0 40 30 16 32 0 3.6 4.0 10 0.102 229.0 0 0 0 +19 6 0 0 40 30 12 24 0 3.6 4.0 10 0.127 26.0 0 0 0 +18 5 0 0 40 30 8 16 0 3.6 4.0 10 0.14 23.0 0 0 0 +17 3 0 0 40 30 8 16 0 3.6 4.0 10 0.152 20.0 0 0 0 +16 3 0 0 35 25 4 8 0 3.6 4.0 10 0.165 17.0 0 0 0 +15 1 0 0 35 25 4 8 0 3.6 4.0 10 0.173 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/72.ENC b/configs/sim/axis/sedm/Etabs/72.ENC new file mode 100644 index 00000000000..b36fd65dfe6 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/72.ENC @@ -0,0 +1,4 @@ +72.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 20 1 0 30 20 200 144 0 3.6 6.0 10 0.076 0.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/73.ENC b/configs/sim/axis/sedm/Etabs/73.ENC new file mode 100644 index 00000000000..9913b4d4a34 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/73.ENC @@ -0,0 +1,9 @@ +73.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 55 1 0 35 25 76 100 0 3.6 3.5 10 0.254 0.0 0 0 0 +24 30 1 0 35 25 76 80 0 3.6 3.5 10 0.071 45.0 0 0 0 +23 24 1 0 35 25 60 48 0 3.6 3.5 10 0.119 40.0 0 0 0 +22 20 1 0 35 25 24 24 0 3.6 3.5 10 0.17 36.0 0 0 0 +21 18 1 0 35 25 12 12 0 3.6 3.5 10 0.206 32.0 0 0 0 +20 16 1 0 35 25 8 8 0 3.6 3.5 10 0.229 29.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/74.ENC b/configs/sim/axis/sedm/Etabs/74.ENC new file mode 100644 index 00000000000..abd9b2adf17 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/74.ENC @@ -0,0 +1,11 @@ +74.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 30 0 2 30 20 40 56 0 1.0 3.5 10 0.127 0.0 0 0 0 +24 18 0 2 30 20 16 24 0 1.0 3.5 10 0.013 45.0 0 0 0 +23 12 0 2 30 20 12 20 0 1.0 3.5 10 0.025 40.0 0 0 0 +22 8 0 2 30 20 8 12 0 1.0 3.5 10 0.043 36.0 0 0 0 +21 6 0 2 30 20 8 12 0 1.0 3.5 10 0.061 32.0 0 0 0 +20 3 0 2 30 20 8 12 0 1.0 3.5 10 0.076 29.0 0 0 0 +19 2 0 2 30 20 8 12 0 1.0 3.5 10 0.086 26.0 0 0 0 +18 1 0 2 30 20 4 8 0 1.0 3.5 10 0.094 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/75.ENC b/configs/sim/axis/sedm/Etabs/75.ENC new file mode 100644 index 00000000000..3384b6b2a4b --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/75.ENC @@ -0,0 +1,4 @@ +75.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 50 1 0 30 20 24 96 0 3.6 6.0 10 0.076 0.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/76.ENC b/configs/sim/axis/sedm/Etabs/76.ENC new file mode 100644 index 00000000000..2061d1375f8 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/76.ENC @@ -0,0 +1,14 @@ +76.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 35 0 0 35 25 100 120 0 3.6 3.5 10 0.305 0.0 0 0 0 +24 20 0 0 30 20 100 120 0 3.6 3.5 10 0.038 45.0 0 0 0 +23 15 0 0 30 20 80 100 0 3.6 3.5 10 0.069 40.0 0 0 0 +22 15 0 0 30 20 48 60 0 3.6 3.5 10 0.114 36.0 0 0 0 +21 8 0 0 30 20 48 60 0 3.6 3.5 10 0.173 32.0 0 0 0 +20 8 0 0 30 20 28 40 0 3.6 3.5 10 0.203 29.0 0 0 0 +19 4 0 0 30 20 28 40 0 3.6 3.5 10 0.224 26.0 0 0 0 +18 4 0 0 30 20 16 24 0 3.6 3.5 10 0.241 23.0 0 0 0 +17 2 0 0 30 20 12 16 0 3.6 3.5 10 0.259 20.0 0 0 0 +16 2 0 0 30 20 8 12 0 3.6 3.5 10 0.267 17.0 0 0 0 +15 1 0 0 30 20 4 12 0 3.6 3.5 10 0.274 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/77.ENC b/configs/sim/axis/sedm/Etabs/77.ENC new file mode 100644 index 00000000000..0c810b6a828 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/77.ENC @@ -0,0 +1,9 @@ +77.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 8 0 0 50 40 28 36 0 3.6 3.5 10 0.152 0.0 0 0 0 +24 5 0 0 40 30 28 36 0 3.6 3.5 10 0.02 45.0 0 0 0 +23 3 0 0 40 30 16 28 0 3.6 3.5 10 0.056 40.0 0 0 0 +22 3 0 0 40 30 8 12 0 3.6 3.5 10 0.086 36.0 0 0 0 +21 2 0 0 40 30 4 12 0 3.6 3.5 10 0.109 32.0 0 0 0 +20 1 0 0 40 30 4 12 0 3.6 3.5 10 0.122 29.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/78.ENC b/configs/sim/axis/sedm/Etabs/78.ENC new file mode 100644 index 00000000000..d3b1d00ce29 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/78.ENC @@ -0,0 +1,11 @@ +78.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 6 0 1 60 50 328 16 0 3.6 2.0 10 0.152 0.0 0 0 0 +24 4 0 1 50 40 200 12 0 3.6 2.0 10 0.025 45.0 0 0 0 +23 4 0 1 50 40 128 12 0 3.6 3.0 10 0.058 40.0 0 0 0 +22 2 0 1 50 40 128 12 0 3.6 4.0 10 0.084 36.0 0 0 0 +21 2 0 1 50 40 60 12 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 2 0 1 50 40 36 16 0 3.6 4.0 10 0.112 29.0 0 0 0 +19 1 0 1 50 40 24 16 0 3.6 4.0 10 0.124 26.0 0 0 0 +18 1 0 1 50 40 16 16 0 3.6 4.0 10 0.13 23.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/79.ENC b/configs/sim/axis/sedm/Etabs/79.ENC new file mode 100644 index 00000000000..b99588e3a62 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/79.ENC @@ -0,0 +1,13 @@ +79.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 12 0 1 40 30 396 16 0 3.6 2.0 10 0.203 0.0 0 0 0 +24 8 0 1 40 30 328 16 0 3.6 2.0 10 0.033 45.0 0 0 0 +23 5 0 1 40 30 260 12 0 3.6 3.0 10 0.061 40.0 0 0 0 +22 4 0 1 40 30 200 12 0 3.6 4.0 10 0.084 36.0 0 0 0 +21 3 0 1 40 30 200 12 0 3.6 4.0 10 0.107 32.0 0 0 0 +20 3 0 1 50 40 128 12 0 3.6 4.0 10 0.13 29.0 0 0 0 +19 2 0 1 50 40 104 12 0 3.6 4.0 10 0.15 26.0 0 0 0 +18 1 0 1 50 40 60 12 0 3.6 4.0 10 0.163 23.0 0 0 0 +17 1 0 1 50 40 28 16 0 3.6 4.0 10 0.175 20.0 0 0 0 +16 1 0 1 50 40 16 16 0 3.6 4.0 10 0.18 17.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/80.ENC b/configs/sim/axis/sedm/Etabs/80.ENC new file mode 100644 index 00000000000..33a45a3ae78 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/80.ENC @@ -0,0 +1,14 @@ +80.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 15 0 1 40 30 396 24 0 3.6 2.0 10 0.254 0.0 0 0 0 +24 12 0 1 40 30 396 24 0 3.6 2.0 10 0.043 45.0 0 0 0 +23 10 0 1 40 30 328 16 0 3.6 3.0 10 0.091 40.0 0 0 0 +22 8 0 1 40 30 328 16 0 3.6 4.0 10 0.114 36.0 0 0 0 +21 5 0 1 40 30 260 12 0 3.6 4.0 10 0.137 32.0 0 0 0 +20 4 0 1 40 30 200 12 0 3.6 4.0 10 0.155 29.0 0 0 0 +19 3 0 1 40 30 128 12 0 3.6 4.0 10 0.18 26.0 0 0 0 +18 2 0 1 40 30 104 12 0 3.6 4.0 10 0.196 23.0 0 0 0 +17 1 0 1 50 40 48 12 0 3.6 4.0 10 0.211 20.0 0 0 0 +16 1 0 1 50 40 28 16 0 3.6 4.0 10 0.224 17.0 0 0 0 +15 1 0 1 50 40 16 16 0 3.6 4.0 10 0.231 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/81.ENC b/configs/sim/axis/sedm/Etabs/81.ENC new file mode 100644 index 00000000000..f27404ce396 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/81.ENC @@ -0,0 +1,10 @@ +81.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 15 1 0 80 70 16 48 0 3.6 2.0 10 0.102 0.0 0 0 0 +24 10 1 0 80 70 16 48 0 3.6 2.0 10 0.03 45.0 0 0 0 +23 10 1 0 75 65 12 36 0 3.6 2.0 10 0.048 40.0 0 0 0 +22 5 1 0 75 65 12 36 0 3.6 2.0 10 0.063 36.0 0 0 0 +21 5 1 0 70 60 8 24 0 3.6 2.0 10 0.069 32.0 0 0 0 +20 3 1 0 70 60 8 24 0 3.6 2.0 10 0.079 29.0 0 0 0 +19 3 1 0 70 60 4 12 0 3.6 2.0 10 0.086 26.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/82.ENC b/configs/sim/axis/sedm/Etabs/82.ENC new file mode 100644 index 00000000000..890050a2d84 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/82.ENC @@ -0,0 +1,13 @@ +82.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 14 0 1 90 80 40 112 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 7 0 1 90 80 40 112 0 3.6 1.4 10 0.03 45.0 0 0 0 +23 7 0 1 60 50 20 36 0 3.6 1.8 10 0.051 40.0 0 0 0 +22 4 0 1 60 50 20 36 0 3.6 2.0 10 0.066 36.0 0 0 0 +21 4 0 1 60 50 12 20 0 3.6 3.0 10 0.079 32.0 0 0 0 +20 3 0 1 60 50 12 20 0 3.6 4.0 10 0.089 29.0 0 0 0 +19 3 0 1 60 50 8 12 0 3.6 4.0 10 0.097 26.0 0 0 0 +18 2 0 1 60 50 8 12 0 3.6 4.0 10 0.107 23.0 0 0 0 +17 3 0 1 60 50 4 8 0 3.6 4.0 10 0.117 20.0 0 0 0 +16 2 0 1 60 50 4 8 0 3.6 4.0 10 0.127 17.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/90.ENC b/configs/sim/axis/sedm/Etabs/90.ENC new file mode 100644 index 00000000000..0988317ee00 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/90.ENC @@ -0,0 +1,15 @@ +90.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 21 0 1 90 80 40 112 0 3.6 1.4 10 0.203 0.0 0 0 0 +24 14 0 1 90 80 40 112 0 3.6 1.4 10 0.025 45.0 0 0 0 +23 11 0 1 60 50 24 36 0 3.6 2.0 10 0.061 40.0 0 0 0 +22 7 0 1 60 50 24 36 0 3.6 3.0 10 0.081 36.0 0 0 0 +21 7 0 1 50 40 16 20 0 3.6 4.0 10 0.097 32.0 0 0 0 +20 8 0 1 50 40 8 12 0 3.6 4.0 10 0.117 29.0 0 0 0 +19 5 0 1 50 40 8 12 0 3.6 4.0 10 0.127 26.0 0 0 0 +18 4 0 1 50 40 8 12 0 3.6 4.0 10 0.142 23.0 0 0 0 +17 3 0 1 50 40 8 12 0 3.6 4.0 10 0.152 20.0 0 0 0 +16 4 0 1 50 40 4 8 0 3.6 4.0 10 0.165 17.0 0 0 0 +15 3 0 1 50 40 4 8 0 3.6 4.0 10 0.17 14.0 0 0 0 +14 2 0 1 50 40 4 8 0 3.6 4.0 10 0.178 12.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/91.ENC b/configs/sim/axis/sedm/Etabs/91.ENC new file mode 100644 index 00000000000..bc66d8de410 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/91.ENC @@ -0,0 +1,15 @@ +91.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 28 0 1 70 60 44 112 0 3.6 1.4 10 0.254 0.0 0 0 0 +24 16 0 1 90 80 44 112 0 3.6 1.4 10 0.041 45.0 0 0 0 +23 16 0 1 60 50 28 44 0 3.6 2.0 10 0.076 40.0 0 0 0 +22 10 0 1 60 50 28 44 0 3.6 3.0 10 0.107 36.0 0 0 0 +21 10 0 1 50 40 20 24 0 3.6 4.0 10 0.127 32.0 0 0 0 +20 7 0 1 50 40 20 24 0 3.6 4.0 10 0.145 29.0 0 0 0 +19 6 0 1 45 35 12 12 0 3.6 4.0 10 0.175 26.0 0 0 0 +18 4 0 1 45 35 12 12 0 3.6 4.0 10 0.185 23.0 0 0 0 +17 5 0 1 45 35 8 12 0 3.6 4.0 10 0.196 20.0 0 0 0 +16 2 0 1 40 30 4 8 0 3.6 4.0 10 0.211 17.0 0 0 0 +15 4 0 1 40 30 4 8 0 3.6 4.0 10 0.218 14.0 0 0 0 +14 3 0 1 40 30 4 8 0 3.6 4.0 10 0.226 12.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/92.ENC b/configs/sim/axis/sedm/Etabs/92.ENC new file mode 100644 index 00000000000..92cb33afea9 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/92.ENC @@ -0,0 +1,14 @@ +92.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 55 0 1 90 80 44 112 0 3.6 1.4 10 0.305 0.0 0 0 0 +24 30 0 1 90 80 44 112 0 3.6 1.4 10 0.109 45.0 0 0 0 +23 24 0 1 80 70 48 100 0 3.6 2.0 10 0.142 40.0 0 0 0 +22 20 0 1 80 70 24 36 0 3.6 3.0 10 0.185 36.0 0 0 0 +21 18 0 1 80 70 12 16 0 3.6 4.0 10 0.213 32.0 0 0 0 +20 16 0 1 80 70 8 16 0 3.6 4.0 10 0.231 29.0 0 0 0 +19 12 0 1 80 70 8 16 0 3.6 4.0 10 0.241 26.0 0 0 0 +18 8 0 1 80 70 4 12 0 3.6 4.0 10 0.264 23.0 0 0 0 +17 6 0 1 80 70 4 12 0 3.6 4.0 10 0.267 20.0 0 0 0 +16 2 0 1 80 70 4 12 0 3.6 4.0 10 0.277 17.0 0 0 0 +15 1 0 1 80 70 4 12 0 3.6 4.0 10 0.282 14.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/93.ENC b/configs/sim/axis/sedm/Etabs/93.ENC new file mode 100644 index 00000000000..b9e847b9ec4 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/93.ENC @@ -0,0 +1,12 @@ +93.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 12 0 1 90 80 24 96 0 2.0 1.2 10 0.152 0.0 0 0 0 +24 12 0 1 90 80 16 56 0 2.0 1.4 10 0.03 45.0 0 0 0 +23 10 0 1 90 80 16 56 0 2.0 1.4 10 0.063 40.0 0 0 0 +22 10 0 1 70 60 12 36 0 2.0 1.8 10 0.081 36.0 0 0 0 +21 8 0 1 70 60 8 24 0 2.0 1.8 10 0.099 32.0 0 0 0 +20 8 0 1 70 60 4 16 0 2.0 1.8 10 0.112 29.0 0 0 0 +19 4 0 1 60 50 4 16 0 2.0 1.8 10 0.117 26.0 0 0 0 +18 3 0 1 60 50 4 16 0 2.0 1.8 10 0.122 23.0 0 0 0 +17 2 0 1 60 50 4 16 0 2.0 1.8 10 0.127 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/94.ENC b/configs/sim/axis/sedm/Etabs/94.ENC new file mode 100644 index 00000000000..6cb80507234 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/94.ENC @@ -0,0 +1,10 @@ +94.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 12 0 1 32 22 8 200 0 3.6 1.4 10 0.076 0.0 0 0 0 +24 9 0 1 65 55 8 16 0 3.6 1.4 10 0.015 45.0 0 0 0 +23 4 0 1 65 55 8 16 0 3.6 2.0 10 0.028 30.0 0 0 0 +22 3 0 1 65 55 8 16 0 3.6 3.0 10 0.033 20.0 0 0 0 +21 2 0 1 65 55 8 16 0 3.6 3.0 10 0.041 10.0 0 0 0 +20 1 0 1 65 55 8 16 0 3.6 3.0 10 0.046 5.0 0 0 0 +19 1 0 1 65 55 8 12 0 3.6 3.0 10 0.051 3.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Etabs/99.ENC b/configs/sim/axis/sedm/Etabs/99.ENC new file mode 100644 index 00000000000..ba718acddd8 --- /dev/null +++ b/configs/sim/axis/sedm/Etabs/99.ENC @@ -0,0 +1,12 @@ +99.ENC MM +NR IP P HV GVHI GVLO TON TOF ISO AJD ET CB RAD SPA VDI VE VW +25 18 0 0 45 35 64 20 0 3.6 1.4 10 0.152 0.0 0 0 0 +24 16 0 0 50 40 48 24 0 3.6 1.4 10 0.02 45.0 0 0 0 +23 16 0 0 50 40 24 16 0 3.6 2.0 10 0.048 40.0 0 0 0 +22 16 0 0 50 40 12 12 0 3.6 3.0 10 0.069 36.0 0 0 0 +21 8 0 0 45 35 8 12 0 3.6 4.0 10 0.099 32.0 0 0 0 +20 8 0 0 40 30 4 12 0 3.6 5.0 10 0.112 29.0 0 0 0 +19 5 0 0 40 30 4 12 0 3.6 6.0 10 0.117 26.0 0 0 0 +18 3 0 0 40 30 4 12 0 3.6 6.0 10 0.122 23.0 0 0 0 +17 2 0 0 40 30 4 12 0 3.6 6.0 10 0.127 20.0 0 0 0 +[END] diff --git a/configs/sim/axis/sedm/Mcodes/M160 b/configs/sim/axis/sedm/Mcodes/M160 new file mode 100755 index 00000000000..ebc8d383073 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M160 @@ -0,0 +1,17 @@ +#!/bin/bash +# 22.11.2025 WAS only SET eTABnUM +# CHGD TO p ETABNUM q MSRDuns + +exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +# usage +# M160 P Q + +# EtabNum, will become a U32 ( bash always give a f;loat) +# vvv trick to cnvrt Float to INT (U32) +printf -v EtabNumInt '%d' "$1" +halcmd sets dEtabNum $EtabNumInt + +halcmd sets dMsrdUNSf $2 + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M161 b/configs/sim/axis/sedm/Mcodes/M161 new file mode 100755 index 00000000000..3fa2979c674 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M161 @@ -0,0 +1,24 @@ +#!/bin/bash + +exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +#21.08.2025 M161 + +# usage +# M161 P Q +# BegNR is U32 must be >= EndNR +# EndNR is U32 must be <= BegNR + +# and Bash retns Floaats +# so this vvv print trick cnvrts f2i +printf -v BegNRint '%d' "$1" + +# no more GUI BegNR nor EndNR +# this makes techGui smaller +# and fit next to std ZXIS gui +halcmd setp SEDM.BegNR $BegNRint + +printf -v EndNRint '%d' "$2" +halcmd setp SEDM.EndNR $EndNRint + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M162 b/configs/sim/axis/sedm/Mcodes/M162 new file mode 100755 index 00000000000..e99f4c7b3cb --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M162 @@ -0,0 +1,53 @@ +#!/bin/bash +# 24.11.2025 test the value reciorded is as expected POS NEG or ZERO + +# vvv this will silebvce bash, handy when i use pruntf to cnvrt strg to float +#exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +# usage +# M162 P Q + +#halcmd sets dFullDEPTHf $1 + +## vvv o dfomnt want to set 2x... +##halcmd setp SEDM.FullDEPTHf $1 +#echo "start 10 sec" +#sleep 10 +#echo "end 10 sec" +#d=$(halcmd setp SEDM.FullDEPTHf $1) +# +## get value setp[d to chceck it +#e=$(halcmd getp SEDM.FullDEPTHf) +#echo "getp rtns $e" # OK +# +## cnvet strg to floast +#fd=$(echo "$e" | bc -l) +#echo "fd is $fd" # OK +# +## vvv XMPL a test of maths on vars +##printf 'fd + fd is= %f\n' "$( bc <<<"$fd + $fd" )" # OK +# +## evaluate fd >0 <0 ==0 +#if (( $(echo "$fd > 0" | bc -l) )); then +# echo "$fd is greater than 0" +#elif (( $(echo "$fd < 0" | bc -l) )); then +# echo "$fd is less than 0" +#else +# echo "$fd is equal to 0" +#fi +#echo "start 10 sec" +#sleep 10 +#echo "end 10 sec" + +# revert to orig, that seems yto work +# querying the comp seems to NOT work +halcmd setp SEDM.FullDEPTHf $1 + +#echo "Rplane dist is $2" + +halcmd setp SEDM.RPlaneDist $2 + + + + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M163 b/configs/sim/axis/sedm/Mcodes/M163 new file mode 100755 index 00000000000..a9658cf133f --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M163 @@ -0,0 +1,25 @@ +#!/bin/bash + +exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +#10.08.2025 M163 + +# usage +# M163 P Q + +#set OrbCut.OrbTypeIN +#set OrbCutWiglRadIN + + +# OrbType is U32 0 circ 1 sqr +# WiglRad is pod Float + +# and Bash rerbs Floaatrs +# so this vvv print trick cnvrts +printf -v OrbTypeInt '%d' "$1" +halcmd sets dOrbitType $OrbTypeInt + +# WiglRad is already a float +halcmd sets dWiglRADf $2 +#echo "WiglRad $2" +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M164 b/configs/sim/axis/sedm/Mcodes/M164 new file mode 100755 index 00000000000..99b8f93b75e --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M164 @@ -0,0 +1,24 @@ +#!/bin/bash + NOT USED thgis not shoyld make using it fail +# User must plug in UNSf belonging to BegNR here +# weell it simpelr gor user to say 1 yes or 0 no +# thna to lookup data so i leave as yes/no QO +# with init of -1 meaning unanswered + + +#24.08.2025 new mcode to set Edm3.PlungeOrbit U32 -1 dwfault 0 dontt so plungeorbit 1 so plungeorbnit +# the -1 value is fefault +# i need to knmow if user has answered "eann orbuit the pklunge cut " or has NOT answered yet +# The comp Edm3 will hang till answered +# Then Edm3 comp will ensure answer is 0 or 1 else abort +# Edm2 comp will abort if value is not -1, 0 or 1 +# +# usage M164 P +# vaalues:s -1 (initial, user has not answered yet +# or 1 (yes wanted ) +# or 0 (not waanted + +printf -v WaantOrbitPlungeInt '%d' "$1" +halcmd sets dPlungeOrbitWanted $WaantOrbitPlungeInt + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M165 b/configs/sim/axis/sedm/Mcodes/M165 new file mode 100755 index 00000000000..012765a52db --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M165 @@ -0,0 +1,20 @@ +#!/bin/bash + +exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +# 03.10.2025 +# M165 P Pitch +# pitch is how many of path are done for 3 FWDS chg i ToolAxis +# 0 means all +# init to -1 so use S32 + + +# usage +# M65 P + +# EtabNum, will become a U32 ( bash always give a f;loat) +# vvv trick to cnvrt Float to INT (U32) +printf -v PitchInt '%d' "$1" +halcmd sets dPitch $PitchInt + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M166 b/configs/sim/axis/sedm/Mcodes/M166 new file mode 100755 index 00000000000..1b0920c66ab --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M166 @@ -0,0 +1,26 @@ +#!/bin/bash + +exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +# 03.10.2025 +# M166 P jumpwanted +# jump is a clockwork peck dtill +# Etrab has suggested CutTimes and JumpDist AJD +# init to 0 +# later allow hdwr swx to control +# swx overridfes etab and M1`66 +printf -v JumpInt '%d' "$1" +halcmd sets dJump $JumpInt + +# 15.02.2026 i has iof [#a = 1] +# chg to use bash -eq +if [ $JumpInt -eq 1 ]; then + halcmd sets dJump True + # Commands to execute if the condition is true +elif [ $JumpInt -eq 0 ]; then + halcmd sets dJump False +else + echo "M166 needs jump = 1 or 0" +fi +# TODO i funno how to exit mauin app when not 0 not 1 +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M190 b/configs/sim/axis/sedm/Mcodes/M190 new file mode 100755 index 00000000000..a08e93572be --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M190 @@ -0,0 +1,13 @@ +#!/bin/bash +# 02.11.2025 M190 tyrns off axis.L.eoffset.enable + +# tComp.ena MUST be IN +#halcmd setp tComp.enaIN False + +halcmd setp axis.x.eoffset-enable False +halcmd setp axis.y.eoffset-enable False +halcmd setp axis.z.eoffset-enable False + +halcmd setp tComp.isEna False + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M191 b/configs/sim/axis/sedm/Mcodes/M191 new file mode 100755 index 00000000000..e3860790554 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M191 @@ -0,0 +1,11 @@ +#!/bin/bash +# 02.11.2025 M191 tyrns on axis.L.eoffset.enable + +#halcmd setp tComp.enaIN True +halcmd setp axis.x.eoffset-enable True +halcmd setp axis.y.eoffset-enable True +halcmd setp axis.z.eoffset-enable True + +halcmd setp tComp.isEna True + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M197 b/configs/sim/axis/sedm/Mcodes/M197 new file mode 100755 index 00000000000..3f6a63efae2 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M197 @@ -0,0 +1,17 @@ +#!/bin/bash +# M197 no P no Q +# turn of jump if it was left on +# place this in ,ngc just before M02 + +# M197 toggles SEDM.JumpEna +# get checkbnox state +a="$(halcmd getp SEDM.JumpENA)" + +#echo "M197 getp said SEDM.JumpENA was $a " + +if [[ $a == "TRUE" ]]; then + #echo "was TRUE,so toggling " + b="$(halcmd setp techGui.JumpENA.changepin 1)" +fi + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M198 b/configs/sim/axis/sedm/Mcodes/M198 new file mode 100755 index 00000000000..9ec66b946a9 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M198 @@ -0,0 +1,12 @@ +#!/bin/bash +# for SEDM suite + +#echo "M198 begin" + +halcmd setp axis.x.eoffset-enable False +halcmd setp axis.y.eoffset-enable False +halcmd setp axis.z.eoffset-enable False + +#echo "M198 end" + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M199 b/configs/sim/axis/sedm/Mcodes/M199 new file mode 100755 index 00000000000..f684e006571 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M199 @@ -0,0 +1,31 @@ +#!/bin/bash +# for SEDM suite + +# 24.10.2025 maybe not necc, could be set in post.hal +# and left set just dont use +# +# M199 +# usage: M199 ( no P Q parms) +# purpose: begin Edm work +# + +#echo "M199 begin" + +halcmd setp axis.x.eoffset-enable True +halcmd setp axis.y.eoffset-enable True +halcmd setp axis.z.eoffset-enable True + +# 12.11.2025 vvv added +halcmd setp SEDM.isEna True + +# 05.02.2026 try to hide pin +#techGui.hiddenU32.forget() +# RESULT: +# ./M199: line 25: syntax error near unexpected token `exit' +# ./M199: line 25: `exit 0' + +# ??? grbg SEDM.RPlaneDist = 00.0 + + +#echo "M199 end" +exit 0 diff --git a/configs/sim/axis/sedm/README b/configs/sim/axis/sedm/README new file mode 100644 index 00000000000..d3ceb92757d --- /dev/null +++ b/configs/sim/axis/sedm/README @@ -0,0 +1,170 @@ +README for comp[ SEDM + +SEDM comp emulates Sink EDM orbiting + +EDM is a machinhing method that removes +microscppic bits of the workpiece +using electrical sparks. + +Sink EDM is the variant used to make molds. +(vs WEDSM for dies and Jole EDM or EDG grinding) +Sink EDM uses shaped tools. +These tools do not rotate. +All the plasic items on your desktop come +from mol;ds that wer EDM'ed. + +Orbiting ius a way to simplify the +manufacture of the shaped tools. + +EDM'ed cavities are larger than the tool +by the length of the spark. The spark +length ( Overburn) is proportional +to the spark's energy +( Currrent * Duration * Dischharge Voltage) +(xmpl 10amps * 10uS * 32Volts) + +Sparks with more energy make larger craters +(rougher surface) +and have larger overburn. +Conversely, sparks with less energy make +shallower craters (smoother surface). + +A molding surface must be smooth +to release the part. + +So the Sink EDM process traditionally used +different sized tools, roughers, +pre-finishers- and finisjers. + +Tools like that are difficukt to make. +Look at an RJ45 connector and image making 3 tools like that form, +one 0.15mm smaller, one 0.100 smaller +and one 0.075 smaller. +All these tool must have the same center. + +Well, Orniting allow the 0.15mm tool do +thhe same work as the smaller ones. +Orgiting remoives the 'many sizes' issue, +by moving the tool in tiny patterns called orbits. + +SEDM comp is mot difficult to use. +The user negins with blueprint/cad drawing +and finds the Fp ( frontal projection + +Get Fp + +of a detail to EDM. +The Fp is the scross sectinal area of the tool +at 'parting line' + +Determine PAARUNG ( Tool and work materials) +In the US and Canada, Graphite is +commonly used for tools, and Steel or Aluminum +for workpiece materials. + +CHOOSE the RTable +Many Etables are provided +Eaxh has a Fp and a Paarung +In thje table, there is a clumn +titled 'RAD'. Then RAD entry +for the 1st line in the Etable is the +UNDERSIZE PER SIDE aka 'UNS' +Make your tool this much smaller. +Aftwr manufacture, measure the tool +to find the MeasuredUNS. +If the MeasuredUNS > UNS, then you +are not finished making the tool. +Go back and grind some more ;-) + +The UNS and ORBITs supllied are 2D, +so only remove lateral stock. +Later I plan on Spherical Orbiting +( a stack of circle) that will require +the UNS applied in 3D. Thats for FUTURE FEATURE. + +Next finbf the cavity depth and refrenev +for that depth. + +Now you have the dimensions, positiins, +UNS, Etable and can begin progtramming. +Most NGC EDM code is finng in Mcode P's & Q's. + +NB: Orbits are TINY motions, +so zoom WAY in! To see beteer, +do not show Tool, avoid perspective view. + +NB The motion may zeem unevne. It IS uneven. +The progress alomg a perdetermioned path is +comtrolled by a random generator that moves +FWD HOLD or BWD along the path. If Bwd occurs, there will be a +DETOUR gnerated to move the tool away from stock. +Aee the X view of the demo below and observe the +'fringe' on the square path. Those ar 'detours'. +Tirn the JUMP on and off, using the checkbox. +Try The PEEK button and when the tool returns to +its starting position, try RESUME or WUIT. + + + +control signal is moving FWD or HOLD or Bed thru a predetermined path. +controls signal is moving Fwd abd Bwd +example + +;XMPLE.ngc cuts Z negative -1.204mm deerp +; DATUN for cut X1.0 Y 0 Z1.0 +; ORBIT type SQUARE +; ETABLE 34.ENC (This just finishing a cavity) +; ETABLE BegNR 17 EndNR 15 +; MsrdUNS == Etable UNS +o200 sub + M66 E0 L0 ;NEED QUEIE BUSTER so motion is stopped + M199 ; This begins EDM control + M162 P-1.304 Q+1.00 ; awt PrintDepth and Rplanemore tests per hr lookimg fdor bad tri from peri tto SPO + M163 P1 Q0 ; OrbType SQR, no 'Wigl' for bore + M160 P34 Q0.254 ; Etable, MsrdUNS + M161 P17 Q15 ; BeginningNR in Etable, EndNR + M00 ; needed for ExternalOffsets + M198 ; Rnd SEDM control + ; thsi last line wont be executed + ; untill AEDM comp finisshes +o200 endsub ; return to NGC code and LCNC position control +;now thw main NGC progtram poses the tool. and calls the o-sub. +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; posing can be rapid +G10L2P1 X0 Y0 Z0 ;'UNSHIFT' +; +#1 = 0 ;counter initial value +#2 = 1 ;counte max value +#3 = +2.000 ; Cplane above clamping/fixtires +#4 = +1.0 ; Rplane above woek wher EDM Power is turned on +; +o110 while [#1 LT #2] + g10l2p1 x0 y0 z0 ; UNSHIFT + G0Z5 ; mNUl tool chg for ToolAxis + ;//////////////////// DATUN for cut + g10l2p1 x1 y 0 z1 ;DATUM ref [posn + g0z#3 ;Cplane rek to Datum + g0 x0 y0 ;cavity center + z#4 ;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut + o200 call + ;//////////////////// + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 ;Cplane rel toDATUM + ; + #1 = [#1 + 1] ;bump ctr, Useful for usinga Positionn list +o110 endwhile +;//////////////////// goto exit posn, adjust fdor G17.18/19 and CutDirection +G10L2P1X0Y0Z0 ;UNHIFT +G0Z5 ;manual Tool Chg height and tool axis +G0X0Y0 ;manual Tool Vhg posn for 'other' axis alreaady at Cplane, moce to convenient x y +;//////////////////// end pgm +M197 ;T turn off JumpENA if leaft on +M02 +% + diff --git a/configs/sim/axis/sedm/SEDM.hal b/configs/sim/axis/sedm/SEDM.hal new file mode 100644 index 00000000000..18f93840933 --- /dev/null +++ b/configs/sim/axis/sedm/SEDM.hal @@ -0,0 +1,202 @@ +# SEDM.hal 30.09.2025 +# +#07.01.2026 DD Bae tghrwAA TO TRY CAPTIRE UNWNATED JUMPS TO spo +# +#28.10.2025 author used a cale and renamed it +# this cuased helll when i wnated to afdd 3 scales +# becuz his qwoukld never be dounf searchinf for scale.0/1/2... +# so i renamed his singlke to scale.,4, +# xhgf the addf for all 4 +# +# +# user space components +loadusr -W hal_manualtoolchange + +# components +loadrt trivkins coordinates=XYZ +# 07.01.2026 ALLOW BASR PD TP CATCH JUMP +# i dont see any addf to nbase_thread +# i think i added base_thread afster tan servo +# while tryuing tro trap tall skimnmy triangles problem + +loadrt motmod base_period_nsec=0 servo_period_nsec=1000000 num_joints=3 +# 05.02.2026 vvv trouble w unexpeted realtime errors MAYBE hurting s.poll for jump +#loadrt motmod base_period_nsec=50000 servo_period_nsec=1000000 num_joints=3 +loadrt pid names=J0_pid,J1_pid,J2_pid + +loadrt mux2 names=J0_mux,J1_mux,J2_mux +loadrt ddt names=J0_vel,J0_accel,J1_vel,J1_accel,J2_vel,J2_accel +loadrt hypot names=hyp_xy,hyp_xyz + +loadrt sim_home_switch names=J0_switch,J1_switch,J2_switch +loadrt sim_spindle names=sim_spindle +loadrt limit2 names=limit_speed +loadrt lowpass names=spindle_mass +loadrt near names=near_speed +loadrt scale count=4 +#names=rpm_rps + +# pin aliases +# param aliases +# signals +# nets + +# goddamn J: crap he grouped jopint items using this goofy prefic + +net J0:acc J0_accel.out +net J0:enable joint.0.amp-enable-out => J0_pid.enable +net J0:homesw J0_switch.home-sw => joint.0.home-sw-in +net J0:on-pos J0_pid.output => J0_mux.in1 +net J0:pos-cmd joint.0.motor-pos-cmd => J0_pid.command +net J0:pos-fb J0_mux.out => J0_mux.in0 J0_switch.cur-pos J0_vel.in joint.0.motor-pos-fb +net J0:vel J0_vel.out => J0_accel.in hyp_xy.in0 hyp_xyz.in0 + +net J1:acc J1_accel.out +net J1:enable joint.1.amp-enable-out => J1_pid.enable +net J1:homesw J1_switch.home-sw => joint.1.home-sw-in +net J1:on-pos J1_pid.output => J1_mux.in1 +net J1:pos-cmd joint.1.motor-pos-cmd => J1_pid.command +net J1:pos-fb J1_mux.out => J1_mux.in0 J1_switch.cur-pos J1_vel.in joint.1.motor-pos-fb +net J1:vel J1_vel.out => J1_accel.in hyp_xy.in1 hyp_xyz.in1 + +net J2:acc J2_accel.out +net J2:enable joint.2.amp-enable-out => J2_pid.enable +net J2:homesw J2_switch.home-sw => joint.2.home-sw-in +net J2:on-pos J2_pid.output => J2_mux.in1 +net J2:pos-cmd joint.2.motor-pos-cmd => J2_pid.command +net J2:pos-fb J2_mux.out => J2_mux.in0 J2_switch.cur-pos J2_vel.in joint.2.motor-pos-fb +net J2:vel J2_vel.out => J2_accel.in hyp_xyz.in2 + +net estop:loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in + +net sample:enable motion.motion-enabled => J0_mux.sel J1_mux.sel J2_mux.sel + +net spindle-at-speed near_speed.out => spindle.0.at-speed +net spindle-index-enable sim_spindle.index-enable <=> spindle.0.index-enable +net spindle-orient spindle.0.orient => spindle.0.is-oriented +net spindle-pos sim_spindle.position-fb => spindle.0.revs +#net spindle-rpm-filtered spindle_mass.out => near_speed.in2 rpm_rps.in +net spindle-rpm-filtered spindle_mass.out => near_speed.in2 scale.3.in + +#net spindle-rps-filtered rpm_rps.out => spindle.0.speed-in +net spindle-rps-filtered scale.3.out => spindle.0.speed-in + +net spindle-speed-cmd spindle.0.speed-out => limit_speed.in near_speed.in1 +net spindle-speed-limited limit_speed.out => sim_spindle.velocity-cmd spindle_mass.in + +net tool:change iocontrol.0.tool-change => hal_manualtoolchange.change +net tool:changed hal_manualtoolchange.changed => iocontrol.0.tool-changed +net tool:prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared +net tool:prep-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number + +net xy:vel hyp_xy.out +net xyz:vel hyp_xyz.out + +# parameter values +setp J0_accel.tmax 0 +setp J0_mux.tmax 0 +setp J0_pid.do-pid-calcs.tmax 0 +setp J0_switch.tmax 0 +setp J0_vel.tmax 0 + +setp J1_accel.tmax 0 +setp J1_mux.tmax 0 +setp J1_pid.do-pid-calcs.tmax 0 +setp J1_switch.tmax 0 +setp J1_vel.tmax 0 + +setp J2_accel.tmax 0 +setp J2_mux.tmax 0 +setp J2_pid.do-pid-calcs.tmax 0 +setp J2_switch.tmax 0 +setp J2_vel.tmax 0 + +setp hyp_xy.tmax 0 +setp hyp_xyz.tmax 0 + +setp limit_speed.tmax 0 + +setp motion-command-handler.tmax 0 +setp motion-controller.tmax 0 + +setp near_speed.difference 10 +setp near_speed.scale 1.1 +setp near_speed.tmax 0 + +#setp rpm_rps.tmax 0 +setp scale.3.tmax 0 + + +setp servo-thread.tmax 0 + +setp sim_spindle.scale 0.01666667 +setp sim_spindle.tmax 0 +setp spindle_mass.gain 0.07 +setp spindle_mass.tmax 0 + + + +# realtime thread/function links +addf motion-command-handler servo-thread +addf motion-controller servo-thread + +addf J0_pid.do-pid-calcs servo-thread +addf J1_pid.do-pid-calcs servo-thread +addf J2_pid.do-pid-calcs servo-thread +addf J0_mux servo-thread +addf J1_mux servo-thread +addf J2_mux servo-thread +addf J0_vel servo-thread +addf J0_accel servo-thread +addf J1_vel servo-thread +addf J1_accel servo-thread +addf J2_vel servo-thread +addf J2_accel servo-thread +addf hyp_xy servo-thread +addf hyp_xyz servo-thread +addf J0_switch servo-thread +addf J1_switch servo-thread +addf J2_switch servo-thread +addf limit_speed servo-thread +addf spindle_mass servo-thread + +#addf rpm_rps servo-thread +addf scale.0 servo-thread +addf scale.1 servo-thread +addf scale.2 servo-thread +addf scale.3 servo-thread + +addf near_speed servo-thread +addf sim_spindle servo-thread + +# setp commands for unconnected input pins +setp J0_pid.FF0 1.0 +setp J0_pid.Pgain 0 +setp J0_pid.Dgain 0 +setp J0_pid.Igain 0 +setp J0_pid.FF1 0 +setp J0_pid.FF2 0 +setp J1_pid.FF0 1.0 +setp J1_pid.Pgain 0 +setp J1_pid.Dgain 0 +setp J1_pid.Igain 0 +setp J1_pid.FF1 0 +setp J1_pid.FF2 0 +setp J2_pid.FF0 1.0 +setp J2_pid.Pgain 0 +setp J2_pid.Dgain 0 +setp J2_pid.Igain 0 +setp J2_pid.FF1 0 +setp J2_pid.FF2 0 + +setp sim_spindle.scale 0.01666667 +setp limit_speed.maxv 5000.0 +setp spindle_mass.gain .07 +setp near_speed.scale 1.1 +setp near_speed.difference 10 + +#/// old pin settung +#setp axis.x.eoffset-scale 0.001 +#setp axis.y.eoffset-scale 0.001 +#setp axis..eoffset-scale 0.001 +#/// diff --git a/configs/sim/axis/sedm/SEDM.ini b/configs/sim/axis/sedm/SEDM.ini new file mode 100644 index 00000000000..88e76cd2c89 --- /dev/null +++ b/configs/sim/axis/sedm/SEDM.ini @@ -0,0 +1,206 @@ +# 29.12.2025 mk default ngv 1wiglZneg,ngc + +# 03.11.2025 note @ S/V ratio +# [AXIS_Z] +# # Note: low OFFSET_AV_RATIO: +# +# #03.11.2025 saw 0.5 in dunamiv_offsets cfg +# # with note saying "give 1.2 to excternal offsets +# # [AXIS_Z] +# # Note:give half to external_offsets: +# # OFFSET_AV_RATIO = 0.5 +# # +# # 03.11.2025 u used 0.9 anf git hyge speen inscrease +# # but shoudl try 0.5 not right now +# OFFSET_AV_RATIO = 0.9 +# +# +# 08.10.2025 ng at stooping pt , not at same posn +# abd Axis path trace is a SQIGGLE THAT TURNS THEMN HEADS STARIHHT FOWN +# SO +# i did lots of testing of cL and StairsL +# to make sure they always mades same data given random inours +# # result: ok w randowm inouts, two passes at mkcL and mkStairsl +# wew like test1 andtest2 +# for 100 rndom inpts, test1 == test 2 +# +# so end posn us ng and varting +# but cL and StairsL are proven ok +# +# so err is after StairsL created, +# likely in doStairs or lower doEdmStep +# +# freeze this +# crippler doStairs to only [rint each step and compare new posn to StairsL[ndx] +# +# test b4 freexe ends at -0.002 0.000 -0.004 +# last elem in StairsL is (5, -1, -49) +# 2nd try +# ends w DRO at -0.002 -0.001 -0.006 +# last elem in StairsL is (5, -1, -49) +# same input , digg result !!! bbad computer , bbad!! + + +# 06.10.2025 depth is ng +# i say startposn is 0,0,+/010 +# i say FD is --.264 +# etab uns is 2.794 +# so UNS =2.794-2.54 = .254 +# rufpt is FD - UNS ??? MsrdUNS ??? +# -.264 - .254 HERE HERE HERE asleep + +# SEDM.ini 06.10.2025 +# the suite now moves all 3 axis +# i only had z motion +# becuz i didnt cfg OFFSET_AV_RATIO = 0.05 for X Y +# now freexe this suite, clean up, uncripplt.... +# +[HAL] +HALFILE = SEDM.hal +# use no post gui for ear;y tests +POSTGUI_HALFILE = SEDMpost.hal +HALUI = halui + +[EMC] +MACHINE = SEDM +# vvv bewares of nagging upddate dlog due top chging thiusvvv +VERSION = 1.1 +#DEBUG = 0x00000003 + +[DISPLAY] +DISPLAY = axis +POSITION_OFFSET = RELATIVE +POSITION_FEEDBACK = ACTUAL +MAX_LINEAR_VELOCITY = 2 +# try load NO mgc OPEN_FILE = ./SEDM06.ngc +# in attempot to stop SEDM comp form dissappearing +# no luck, AWSN ias no oin hal cfg flog +# techGui and updown ecist and can be setpd etc +# but not SEDM not in comp or pun list of hal cfg dlog +# didnt happen vvv +#OPEN_FILE = /home/cnc/Downloads/aSEDM-06102025woorking/SEDM06.ngc +# &&&& ok + +# vvv see dfiff between NOPGM and HASPGM +# before F1 F2 homeall +# w/o PGM ,SEDM was alive with deadstop after while EDMmode == True: +# with PGM SEDM pins all there B4 F1 F2 homeall +# and after F1 F3 homeall SEDM OK all pins +#OPEN_FILE = "" +# vvv 07 has queue busters +#OPEN_FILE = ./SEDMmultDStraight3.ngc +OPEN_FILE = ./ngc/1orb/nuZnegWiglNR17-15.ngc + +# was SEDMmult07.ngc + + +# ./SEDM06.ngc +# no quotes in google xmpl + + + +#OPEN_FILE = "./ferf6.ngc" # got no error + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 1 + +[TASK] +TASK = milltask +CYCLE_TIME = 0.001 + +[RS274NGC] +USER_M_PATH = ./Mcodes/ +PARAMETER_FILE = sim.var + +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 +TOOL_TABLE = SEDM.tbl + +[EMCMOT] +EMCMOT = motmod +# i think i need a base period for conv_dloast_s32 +# 03.09.2025 i dont use any conv +#07.01.2026 allow base thread just to captur 'jump' unwanted luch peri to SPO +BASE_PERIOD = 50000 +SERVO_PERIOD = 1000000 + +[TRAJ] +COORDINATES = XYZ +LINEAR_UNITS = mm +ANGULAR_UNITS = degree + +[KINS] +JOINTS = 3 +KINEMATICS = trivkins coordinates=XYZ + +# 06.10.2025 no fn clude what AV ratio us but Z had irt and CY not, and CY no move so make same +# SONOFABITCH!!!! NOW X and Y MOVE under edm gv ctrl +# feom lcnc ggogle Default value: 0 (disables external offset). +# +[AXIS_X] +# Note: low OFFSET_AV_RATIO: +#OFFSET_AV_RATIO = 0.05 +# 0/9 is max allowed +OFFSET_AV_RATIO = 0.9 +MIN_LIMIT = -150 +MAX_LIMIT = 150 +#MAX_VELOCITY = 2 +#MAX_ACCELERATION = 20 +MAX_VELOCITY = 20 +MAX_ACCELERATION = 200 + +[AXIS_Y] +# Note: low OFFSET_AV_RATIO: +#OFFSET_AV_RATIO = 0.05 +OFFSET_AV_RATIO = 0.9 +MIN_LIMIT = -150 +MAX_LIMIT = 150 +#MAX_VELOCITY = 2 +#MAX_ACCELERATION = 20 +MAX_VELOCITY = 20 +MAX_ACCELERATION = 200 + +[AXIS_Z] +# Note: low OFFSET_AV_RATIO: + +#03.11.2025 saw 0.5 in dunamiv_offsets cfg +# with note saying "give 1.2 to excternal offsets +# [AXIS_Z] +# # Note:give half to external_offsets: +# OFFSET_AV_RATIO = 0.5 +# +# 03.11.2025 u used 0.9 anf git hyge speen inscrease +# but shoudl try 0.5 not right now +OFFSET_AV_RATIO = 0.9 +MIN_LIMIT = -150 +MAX_LIMIT = 150 +#MAX_VELOCITY = 2 +#MAX_ACCELERATION = 20 +MAX_VELOCITY = 20 +MAX_ACCELERATION = 200 + +[JOINT_0] +TYPE = LINEAR +HOME_SEQUENCE = 0 +#MAX_VELOCITY = 2 +#MAX_ACCELERATION = 20 +MAX_VELOCITY = 20 +MAX_ACCELERATION = 200 + +[JOINT_1] +TYPE = LINEAR +HOME_SEQUENCE = 0 +#MAX_VELOCITY = 2 +#MAX_ACCELERATION = 20 +MAX_VELOCITY = 20 +MAX_ACCELERATION = 200 + +[JOINT_2] +TYPE = LINEAR +HOME_SEQUENCE = 0 +#MAX_VELOCITY = 2 +#MAX_ACCELERATION = 20 +MAX_VELOCITY = 20 +MAX_ACCELERATION = 200 diff --git a/configs/sim/axis/sedm/SEDM.py b/configs/sim/axis/sedm/SEDM.py new file mode 100644 index 00000000000..01eb8362d7a --- /dev/null +++ b/configs/sim/axis/sedm/SEDM.py @@ -0,0 +1,2517 @@ +#!/usr/bin/python3.11 +####################################### +# This is a component of linuxcnc +# SEDM Copyright 2026 Thomas J Powderly +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +####################################### + +#17.03.2026 +# Thi file should be copied tobin/SEDM and made executable. + +#07.03.2026 cleaned ~/Doenloads/SEDM of crudt +# chgd .ini to use ~/Download/SEDM/Mcodes for mcodes +# TODO backup +# docstrings +# get new clone of linuxcnc +# add my SEDM to that +# test +# if ok, notify devs of intent +# commit chgs.pulll rtequest ( jibberish GIT speak ) +# see gut howto from google +# +# TODO 26.02.2026 +# DONE BAVKUP +# DONE clean up dbug prints +# edit all test pgms ro use new etab file fdormat +# auto edit rest of etabs to new format +# +# 25.02.2026 now using new etab format +# work znegstraight zneg1orn usimg 19/ENC yable +# +# FIXED in SEDM.xml +# SPA can look like int, not so wide +# +# 22.02.2026 work onn etab ccnvrsn +""" futue: meaninmhful 1st line inm Etabs +# Note: 1st line of etb can have info +# cmpl GR+ ST-10mmsq +""" + +""" future: make fname dreom dfialogs +# The old naming 999999nn is not useful +# it was a workaround for file naming whencnc has no alpha keys +# and hal cant handle string file name +# The fdile name might be bvuilt from fialogs +# lkike Tool mat? pick one GR CU WoCo GrCu Brass, Alum Steel +# Work Matl ? St CU Alu +# Fp area ? pick from list +# Form pick one rin subgate pick a numebr fort,m list// +# these anf othe q's woul generate afile name +# (hopefully in library ) +""" + +# +""" +#22.02.2026 many days on hdwr +# now back to cnvrt etabs to new dornat +# 1st new qwaS 99999919->88888819 +# i SEE THE ETAB HAS LAST FEW ELEMENTYS UNUSED vdi ve vw +# I sont have good values dore tehm\# +# so ??? keep -'s in etab or remove 'slots' +# I sup[pose fdor lonmg term. +# the valyues sjould be left and populated later +# +""" + +# 15.02.2026 cleaned ngc file of unused m codes + +# 15.02.2026 pitch removed +# M197 fixed, had bash -eq when it should be == ( dore string) +# +# 15.02.2026 IF jump was off +# 1st run of 1EWiglZneg has no jump, screws down ok +# BUT if vhkBtn JumpENA is left OFF +# and a 3nd runs is started +# then the checkntn get marked amd Jump is ON +# The chkbtn is set just before end pof 1st pgm run +# +#15.02.2026 1WiglZneg womt run 2nds time if jump not on +# +# 13.02.2026 TODO meaninggull triple quotw indos + +# +import linuxcnc +import hal +import time +import sys, subprocess +import os.path +from random import uniform +# SEDMhdrs.py must be in /usr/lib/python3.11 +# or ~/yourRIP/lib/python +from SEDMhdrs import * + +def mkStairsJumpLegL( bP ): + """ + purpose: + Creates Jaeay and Jback lines for jump ( peck EDM)\ + when cutting a bore wiyh WoglRAD >0AND JumpENA checked. + + usage: pass a Tuple descibing breakPt + measured drom Start Point Origin (SPO) + + description: + The jump path needs to be calculated + on the fly. Powe is off during jump, + so delays are not dangerous + ( and Python is fast) + The Jump 'master' path is a line from + breakPt to anklePt to SPO. + The 'master' line is like a leg, + it has a toe, a foot line , + an ankle, a shin line and a hip (SPO) + The masterr path is sliced into 2 mini-paths. + 1) Jaway: from btrakPt + (tool position on periphery), + to the bore centerline ( anklePt) + tp Start Point Origin (SPO) + Slicing the 'amster' path + at the AJD distance, + craetes a 'hiPt' ( top of jump) + 2) Jback: from hiPt to anklePt + back to breakPt ( aka 'toe') + + The length of the jump is initialized + to the Etabl's AJD for the prsent + power stage (ThisNR) + AJD can be adjusted during cut. + Jump cycles alwys return to breakPt. + Jump cycle move without respect to + gap sensing. + A small AJD may not travel to anklePt. + An early jump may be clipped to SPO + or even onto the dootL. + """ + SPO = (0,0,0) #StartPtOffset nit Posn + # + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + # get ctrLevel, above breakPt by ThisRA + ctrLevel = bP[SEDM.ToolAxis] - (WiglRADi * SEDM.CutDir) + # get anklePt + if SEDM.ToolAxis == 2: # Z + anklePt = ( ( 0,0,ctrLevel ) ) + if SEDM.ToolAxis == 1: # Y + anklePt = ( ( 0, ctrLevel, 0 ) ) + if SEDM.ToolAxis == 0: # X 13.02.2026 damn had = 2 and spent a day + anklePt = ( ( ctrLevel, 0, 0 ) ) + footL = L3D(bP, anklePt) + lFL = len(footL)-1 + ankleNdx = footL.index(anklePt) + shinL = L3D(anklePt,SPO) + footl = footL[:ankleNdx] # slice off anklPt from footL, + legL = footL + shinL + return legL,ankleNdx +# +def mkJupLJdnL( L, bPndx): + if SEDM.JumpLtype == JumpBoreType: + AJDi = int(SEDM.AJD *1000) + # + bPtupl = L[bPndx] + hiPtNdx = bPndx - AJDi + if hiPtNdx < 0: # clip to 1st eleme ndx + hiPtNdx = 0 + hiPtTupl = L[hiPtNdx] + # + Jback = L # use not reveresed XDList + FirstDnNdx = hiPtNdx +1 # for Jdn + # + Jback = Jback[FirstDnNdx : bPndx+1] #+1 elese clipped + # + Jaway = [] + for d in L: + Jaway.append(d) + Jaway.reverse()# list goes UP from [0] to [last] + # + firstUpNdx = Jaway.index(bPtupl) + 1 + hiPtUpNdx = Jaway.index(hiPtTupl) + # + Jaway = Jaway[firstUpNdx : hiPtUpNdx + 1] # +1 else last missed + # + + return Jaway, Jback + # + if SEDM.JumpLtype == JumpStairsType: + # 0.050 *1000 = 50 + AJDi = int(SEDM.AJD * 1000) + + bPtupl = L[bPndx] + JL, ankleNdx = mkStairsJumpLegL( bPtupl ) # ignore ankleNdx + # + # now make HupL and JdnL fdrom JL + # + lJL = len(JL) - 1 + if AJDi > lJL :# ex if 50 > len(JL)-1 + AJDi = lJL# dore stairs, 1st jump >>> + hiPtNdx = AJDi + hiPtTupl = JL[hiPtNdx]# will use later to find inex in rev'd list + # + Jaway = JL[:hiPtNdx] + # + Jback = JL # usecopy of orig + Jback.reverse() # this list is from hip [0[ to toe [last] + hiPtNdx = JL.index(hiPtTupl) + Jback = Jback[hiPtNdx:] + + return Jaway, Jback + # + if SEDM.JumpLtype == JumpOrbLeadInType: + #13.02.2026 TODO reduce same as BoreL + + AJDi = int(SEDM.AJD *1000) + # + bPtupl = L[bPndx] + hiPtNdx = bPndx - AJDi + if hiPtNdx < 0: # clip to 1st eleme ndx + hiPtNdx = 0 + hiPtTupl = L[hiPtNdx] + # + Jback = L # use not reveresed XDList + FirstDnNdx = hiPtNdx +1 # for Jdn + # + Jback = Jback[FirstDnNdx : bPndx+1] #+1 elese clipped + # + Jaway = [] + for d in L: + Jaway.append(d) + Jaway.reverse()# list goes UP from [0] to [last] + # + firstUpNdx = Jaway.index(bPtupl) + 1 + hiPtUpNdx = Jaway.index(hiPtTupl) + # + Jaway = Jaway[firstUpNdx : hiPtUpNdx + 1] # +1 else last missed + + return Jaway, Jback + # + if SEDM.JumpLtype == JumpOrbPathType: + # + AJDi = int(SEDM.AJD *1000) + bPtupl = L[bPndx] + JL, ankleNdx = mkDetourLegL( L[bPndx] ) # ignore ankleNdx + # + lJL = len(JL) -1 + if AJDi > lJL : + AJDi = lJL # 13.02.2026 damnit had AJD>>I<< + hiPtNdx = AJDi + + hiPtTupl = JL[hiPtNdx]# will use later to find inex in rev'd list + # + Jaway = JL[:hiPtNdx] + # + Jback = JL # usecopy of orig + Jback.reverse() # this list is from hip [0[ to toe [last] + # vvv hiPtNdx chgs becux liest is reveresed now + hiPtNdx = JL.index(hiPtTupl) + Jback = Jback[hiPtNdx:] + return Jaway, Jback + # +# +# vvv rqrs JumpL and doMove() +def doJump(JupL,JdnL): + """ + moves tool away from stock + for the distance of AJD + then returns + """ + # + for p in JupL: #jump up + doMove(p) + # + for p in JdnL: + doMove(p) +# +#05.02.2026 TODO small enuf to so inline +def mkJT(): # sets SEDM.endJT + """ + creates float + repressenting when next Jump + should ha[[en + """ + Tnow = time.time() + # vvv these are all floats + SEDM.endJT = Tnow + SEDM.ET +# +#05.02.2026 TODO small enuf to so inline +def chkJT(): # run this every loop while cuttinmg + """ + for Jump cycles: + reports if Cut Time is over + and it is time to Jump + """ + Tnow = time.time() + timesUp = (Tnow >= SEDM.endJT) + return timesUp +# +def IsFreebie(posn): # posn is an x y z tuplke + """ + IsFreebie decide if teh gap value cam be ignored + esp at beginning of cuty, near SPO. + Freebies are needed for simulation. + When a real EDM cut runs, + there initially is some clearance between tool and work. + So a real Gap value would be high for that + distance. + In simulation, the gap is a random + value and _might_ be low. + This low woul;d cause teh simulation + to retreat, and that is a problem + brcause there is no place to retreat. + So, do simulation, I added a cube shaped zone + at th Start Point. + The zone is 2*Freebies in size, + and any motion in that zone ihnores + the gap value PV. + Freebies are set in NOTheaders.py + """ + + f = SEDM.freebies # avoid looking it up 3x + if abs(posn[0]) > f: + return False + elif abs(posn[1])> f: + return False + elif abs(posn[2]) > f: + return False + else: + return True +# +# 14.02.2026 TODO likely there are unused/refundamt pis +# clean them out +def mkSEDMcomp(): + """ + creates the LinuxCNC hal component + for orbiting sink EDM. + """ + h = hal.component("SEDM") + # + h.newpin("EDMgrade", hal.HAL_S32, hal.HAL_OUT) + h.newpin("EDpeek", hal.HAL_BIT, hal.HAL_IN) + + h.newpin("EDreturn", hal.HAL_BIT, hal.HAL_IN) + h.newpin("EDquit", hal.HAL_BIT, hal.HAL_IN) + h.newpin("QuitHit", hal.HAL_BIT, hal.HAL_OUT) + #08.12.2025 new + h.newpin("BwdMaxHit", hal.HAL_BIT, hal.HAL_OUT) + + # 29.11.2025 3 new pins to force FWD HOLD ForceBWD + h.newpin("ForceFWD", hal.HAL_BIT, hal.HAL_IN) + h.newpin("ForceHOLD", hal.HAL_BIT, hal.HAL_IN) + h.newpin("ForceBWD", hal.HAL_BIT, hal.HAL_IN) + + h.newpin("XOffsetCmd", hal.HAL_S32, hal.HAL_OUT) + h.newpin("YOffsetCmd", hal.HAL_S32, hal.HAL_OUT) + h.newpin("ZOffsetCmd", hal.HAL_S32, hal.HAL_OUT) + # + h.newpin("isEna", hal.HAL_BIT, hal.HAL_IN) + # + h.newpin("xyzSCALEfIN", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("xyzSCALEfOUT", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("mlt", hal.HAL_FLOAT, hal.HAL_OUT) + # + h.newpin("xFBf", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("yFBf", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("zFBf", hal.HAL_FLOAT, hal.HAL_IN) + # + h.newpin("xsp", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("ysp", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("zsp", hal.HAL_FLOAT, hal.HAL_OUT) + # + h.newpin("ctr", hal.HAL_U32, hal.HAL_OUT) + # + h.newpin("inpo", hal.HAL_BIT, hal.HAL_IN) + # + h.newpin("XoffsetNow", hal.HAL_S32, hal.HAL_IN) + h.newpin("YoffsetNow", hal.HAL_S32, hal.HAL_IN) + h.newpin("ZoffsetNow", hal.HAL_S32, hal.HAL_IN) + # + h.newpin("state", hal.HAL_U32, hal.HAL_OUT) + # + h.newpin("PgmStop", hal.HAL_BIT, hal.HAL_OUT) + # + h.newpin("disableOsc", hal.HAL_BIT, hal.HAL_OUT) + + h.newpin("NR", hal.HAL_U32, hal.HAL_OUT) + # the etab file is a flat database with numbered lines of + # data NR is the line number key into a dict + h.newpin("IP", hal.HAL_U32, hal.HAL_OUT) + h.newpin("P", hal.HAL_U32, hal.HAL_OUT) + h.newpin("HV", hal.HAL_U32, hal.HAL_OUT) + + h.newpin("GVHI", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("GVLO", hal.HAL_FLOAT, hal.HAL_OUT) + + h.newpin("TON", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("TOF", hal.HAL_FLOAT, hal.HAL_OUT) + + h.newpin("ISO", hal.HAL_U32, hal.HAL_OUT) + # if True, + # ON time is dev'd AFTER ionization ( makes uniform craters) + h.newpin("AJD", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("ET", hal.HAL_FLOAT, hal.HAL_OUT) + + #new 01.02.2026 the sys time when next jump occurs + h.newpin("endJT", hal.HAL_FLOAT, hal.HAL_OUT) + # 06.02.2026 new pin JumpLtype + # defines in SEDMhdrs.py + h.newpin("JumpLtype", hal.HAL_U32, hal.HAL_IN) + # vvv new 01.02.2026, cnx to gui checkbutton + h.newpin("JumpENA", hal.HAL_BIT, hal.HAL_IN) + # Jump rqrs ENA and ON + h.newpin("JumpOn", hal.HAL_BIT, hal.HAL_OUT) + + h.newpin("ChgJumpENA", hal.HAL_BIT, hal.HAL_OUT) + + h.newpin("BWDmax", hal.HAL_U32, hal.HAL_OUT) + # max continuous LoVoltage samples, will stop vut + #15.02.2026 not used h.newpin("PulseCount", hal.HAL_U32, hal.HAL_IN)# + h.newpin("freebies", hal.HAL_U32, hal.HAL_IN)# + # + h.newpin("RADf", hal.HAL_FLOAT, hal.HAL_OUT) + # orbital radius + h.newpin("RADi", hal.HAL_FLOAT, hal.HAL_OUT) + # rad as ounts + + #vvv nerw 28.11.2025 alc 1x and save it for later + h.newpin("XtraRADf", hal.HAL_FLOAT, hal.HAL_IN)# + + #vvv err when U32 and initd/reinitydx to -1 + h.newpin("Pitch", hal.HAL_S32, hal.HAL_IN) + # defines a ation of pattern elemnent to toolaxis steps. + # like rise & run on stairs + + # wthere AJD and ET are used, can have overriding switch + h.newpin("SPAf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("VDIf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("VEf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("VWf", hal.HAL_FLOAT, hal.HAL_OUT) + # + # 14.11.2025 new vvv used in egtEvalPV() + h.newpin("BWDcount", hal.HAL_U32, hal.HAL_OUT) + # + h.newpin("EtabNum", hal.HAL_U32, hal.HAL_IN)# filename , is a number as in old Heidnhain days + h.newpin("ThisNR", hal.HAL_S32, hal.HAL_OUT) + h.newpin("BegNR", hal.HAL_U32, hal.HAL_IN) + h.newpin("EndNR", hal.HAL_U32, hal.HAL_IN ) + h.newpin("NewNR", hal.HAL_S32, hal.HAL_IN) + #Edm3 request next RADf, implies dec-inng NR + # + h.newpin("UNSf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("ThisRADf", hal.HAL_FLOAT, hal.HAL_OUT) + # + h.newpin("GenReady", hal.HAL_S32, hal.HAL_IN) # was it but code cant set that DOUT) + # + h.newpin("restart", hal.HAL_BIT, hal.HAL_IN) + # + h.newpin("FullDEPTHf", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("RufPtDEPTHf", hal.HAL_FLOAT, hal.HAL_OUT) + # in EDM, the tool never goes to the blueprint depth, + # because it has 'overburn', + # so the FullDepth is reduced to "RoughingPoint'. + # All orbits are ecursions from this point + # + h.newpin("WiglRADf", hal.HAL_FLOAT, hal.HAL_IN) + # roughing 'wiggle' keeps sides of tool cleaner, + # should be just a few microns + h.newpin("MsrdUNSf", hal.HAL_FLOAT, hal.HAL_IN) + # user must make tool smaller than blueprint by UNderSize, + # its ok to make smaller, but latger is not allowed + h.newpin("OrbitType", hal.HAL_U32, hal.HAL_IN) + # only CIRCL and DQUARE for now, + # Later Spherical, Vextor, Undercut, SubGate, CashrwGate, + # Ribulator ) make rib tool a lot narrower + # tna blueprint, buy hop left and right to + # get correct wifth + h.newpin("PlungeOrbitWanted", hal.HAL_S32, hal.HAL_IN) + # if BegNR !1= 25, then user can get 1st cut to orbit. + # User may have already cut the net shape. + + h.newpin("ToolAxis", hal.HAL_U32, hal.HAL_OUT) + # orbits occur about an axis, + # the orbit can be -X or +x, also +x -X +Y -Y + # (Linuxcnc does not have tiltable planes, + # so use sine vises etc to orient work ) + h.newpin("CutDir", hal.HAL_S32, hal.HAL_OUT) + # cuts can be POS or NEG along ToolAxis + h.newpin("PgmIsMM", hal.HAL_BIT, hal.HAL_IN) + #15.02.2026 not used h.newpin("RndPlaces", hal.HAL_U32, hal.HAL_IN) + # + #15.02.2026 not used h.newpin("EOin" ,hal.HAL_BIT,hal.HAL_IN) + #15.02.2026 not used h.newpin("EOout",hal.HAL_BIT,hal.HAL_OUT) + # + #22.11.2025 add pin and esit M162 + h.newpin("RPlaneDist", hal.HAL_FLOAT,hal.HAL_IN) + # + h.newpin("PauseCtl", hal.HAL_BIT,hal.HAL_OUT) + h.newpin("abort", hal.HAL_BIT,hal.HAL_IN) + + h.ready() + return h +# +def getPgmUnits(): + """ + query system for + unit of measure. MM or INCH, + set pins dor SmallestCmdZise + to .0001 (inch) or .001 (mm( + """ + global SEDM # some SEDM pins gets chgd + # + s = linuxcnc.stat() + s.poll() + # + tmp = s.program_units # 1 2 or 3 + if tmp == 3: + # 3 is CM + msg = "Centimeter units not supported" + c = linuxcnc.command() + c.error_msg(msg) + raise SystemExit + # tmp will be 0 1 or 2 right now + tmp = tmp - 1 # now 0 means INCH and 1 means MM + if tmp == 0:# if INCH + SEDM.PgmIsMM = False + SEDM.xyzSCALEfIN = 0.0001 + SEDM.xyzSCALEfOUT = SEDM.xyzSCALEfIN + else:# else tmp == 1 meaning METRIC + SEDM.PgmIsMM = True + SEDM.xyzSCALEfIN = 0.001 + SEDM.xyzSCALEfOUT = SEDM.xyzSCALEfIN +# +def trap(): + """ + utility to stop comp proceeding + """ + a = 1 + while a == 1: + a = 1 +# +def getToolAxis():# s now global + """ + All orbiting is arouns an axis. + Gets ToolAxis accorng to PLANE + G17 = 2 (Z toolAxis) + G18 = 1 (Y toolAxis) + G19 = 0 (X toolAxis) + """ + global SEDM + # + s = linuxcnc.stat() + s.poll() + + # get G17 G18 G19 info + t= int(s.gcodes[3]) + if t == 190: + SEDM.ToolAxis = 0 # for X is toolAxis + elif t == 180: + SEDM.ToolAxis = 1 # for Y is ToolAxis + elif t == 170: + SEDM.ToolAxis = 2 # for Z is ToolAxis + else: + #TODO 16.11.2025 allow any of xyz abv uvw + print(t," Err invalid Plane, shouyld be 190 180 170") + raise SystemExit +# +def L3D(begTupl,endTupl): + """ + L3D returns a list of tuples + from begTupl to endTupl. + Uses Brteasenham's line alg, #D version + """ + # + ListOfPoints = [] #empty lcist for positions on line + # + x1 = begTupl[0] + y1 = begTupl[1] + z1 = begTupl[2] + # stoe initial position into list + ListOfPoints.append( ( x1,y1,z1 ) ) + + x2 = endTupl[0] + y2 = endTupl[1] + z2 = endTupl[2] + + # find vvector component lengths + # the longest will always get inc'd when creating list + dx = abs(x2 - x1) + dy = abs(y2 - y1) + dz = abs(z2 - z1) + # + # get direction of vvecotor components + # does X go Right or Left? + if (x2 > x1): + xs = 1 + else: + xs = -1 + # does Y go Fwd or Bwd? + if (y2 > y1): + ys = 1 + else: + ys = -1 + # does Z go Upr oir Down? + if (z2 > z1): + zs = 1 + else: + zs = -1 + # calc each point/tuple along line + # case: Driving axis is X axis" + if (dx >= dy and dx >= dz): + p1 = 2 * dy - dx + p2 = 2 * dz - dx + while (x1 != x2): + x1 += xs + if (p1 >= 0): + y1 += ys + p1 -= 2 * dx + if (p2 >= 0): + z1 += zs + p2 -= 2 * dx + p1 += 2 * dy + p2 += 2 * dz + ListOfPoints.append( ( x1, y1, z1) ) + # case: Driving axis is Y axis + elif (dy >= dx and dy >= dz): + p1 = 2 * dx - dy + p2 = 2 * dz - dy + while (y1 != y2): + y1 += ys + if (p1 >= 0): + x1 += xs + p1 -= 2 * dy + if (p2 >= 0): + z1 += zs + p2 -= 2 * dy + p1 += 2 * dx + p2 += 2 * dz + ListOfPoints.append( ( x1, y1, z1) ) + # case: Driving axis is Z axis + else: + p1 = 2 * dy - dz + p2 = 2 * dx - dz + while (z1 != z2): + z1 += zs + if (p1 >= 0): + y1 += ys + p1 -= 2 * dz + if (p2 >= 0): + x1 += xs + p2 -= 2 * dz + p1 += 2 * dy + p2 += 2 * dx + ListOfPoints.append( ( x1, y1, z1) ) + # + return ListOfPoints +# +# 14.02.2026 TODO +# do not scatter initializations thru code +# slammed a few lines down vvv +# RufPtTupl = None # make it globally readable +AllLines=[] +fqfn="" # Fully Qualified File Name ibcludes absolute path +EtabDict ={}# each EDM gnerator settling (Stage) +# is accessed as EtaabDict[Nr] +# vvv dummy value, ui just so it is global +RufPtTupl = ( (-100000,-100000,-100000) ) + +def getStartPtF(): + """ + All cuts measure from StartPointOrigin (DPO) + All cuts begin at Rplane, + 'above' the SPO, outside of stock. + + only callewd 1x per cut + + 14.02.2026 TODO years agao early in this code + i had issues with vakues not being rady + and adopted using short sleep's to ensure values were ok + TODO old voodoo should be understood and sleeps removed + """ + # wait for position to be true + time.sleep(0.1)# was ng at 0.01 + # collect posn at rest + SEDM.xsp = SEDM.xFBf # x posn feedback NOE + SEDM.ysp = SEDM.yFBf + SEDM.zsp = SEDM.zFBf +# +def setGen(NRval): + """ + Sets parametyers in the EDM POWER SUPPLY + ( aka Generator or Spark Generator) + + This func can be cvalled 2 ways + 1) with the key to a dictionary or parameters + 2) with key '0' meaning clear + the generator. + + The dunction relies on the data order in the dile . + + The SEDM system is an automatically + sequencing system. + When a single tool 'roughs' the net shape, + The system automtically decreaes the power + and rfinne the foem. + There are many 'finitions, + carried out automatically. + + The Generator will get + all data neccesary to cut. + As of 14.02.2026, the Generaor + is only a PyVCP xml GUI + That Gui could become the user I/F to the real gnenratyor + + There are a _lot_ of pins to a generator + 14.02.2026 TODO + reviewe list + remove unneede code + + The data for generator is held + in file called 'ETables'. + Each Etable is a list power stages + from more powqerdul to less powewrful. + Eaxh stage has a key 'NR' + each key can retrieve a + set of data for the generator + NRs run from 25 to 1. + Etables always begin at NR 25. + So the NR decreases as the cut progresses. + """ + global EtaabDict + # + if NRval != 0: + """ + 0 is for a breand new Etab + or before abort/resime, + no stages used yet + """ + NRstr = str(NRval)#key to dict is of form 'keyname' ( note ticks~) + # + SEDM.NR = NRval # local storage on SEDM pin + SEDM.IP = EtabDict[NRstr][0] #'peak' current + SEDM.P = EtabDict[NRstr][1] #Pollarity + SEDM.HV = EtabDict[NRstr][2] #ignitionVoltage + """ + a milliamp supply used to initialize the spark, + a higher HV makes it easier for system to 'see' + on smooth surfaces, where the highest point is + harder to distiguish + """ + # + # TODO vvv for real use + #SEDM.GVHI = EtabDict[NRstr][3] + #SEDM.GVLO = EtabDict[NRstr][4] + # TODO vvv for testing + SEDM.GVHI = 50#35#40# 45# 2 #45 # + SEDM.GVLO = 40#28#30# 35# 1 #40 # + # + SEDM.TON = EtabDict[NRstr][5] + SEDM.TOF = EtabDict[NRstr][6] + SEDM.ISO = EtabDict[NRstr][7] #in IsoPulse mode, + # + SEDM.AJD = EtabDict[NRstr][8] + # 'peck' cycle jump distance, decimal mm + SEDM.ET = EtabDict[NRstr][9] + # 'peck' cycle cut duration, decimal Secs + # + SEDM.BWDmax = EtabDict[NRstr][10] + # max number of contiguous low voltage samples, + # eceeding will cause abort and return to start point + # + SEDM.RADf = EtabDict[NRstr][11] #radius per side + SEDM.SPAf = EtabDict[NRstr][12] #spherical step angle + # for sphertical orbit + # a hemisphere is a stack of circles + # these data are placeholders, neyonf my ability + # to measueree and erecord + SEDM.VEf = EtabDict[NRstr][13] #electrode wear + SEDM.VWf = EtabDict[NRstr][14] #MMR metal removal rate + SEDM.VDIf = EtabDict[NRstr][15] #surface roughness + # + SEDM.ThisNR = NRval # non zero + # + else: # NRval == 0 means clear the gennrator + NRstr = "0" #str(NRval) + # + SEDM.BWDcount = 0 + SEDM.CutDir = 0 + SEDM.EtabNum = 0 + SEDM.BegNR = 0 + SEDM.EndNR = 0 + # + SEDM.FullDEPTHf = 0 + SEDM.MsrdUNSf = 0 + SEDM.RADf = 0 + SEDM.RufPtDEPTHf = 0 + # + SEDM.state = 0 + # + SEDM.xsp = 0 + SEDM.ysp = 0 + SEDM.zsp = 0 + # + #data specific to Etaab and TechGui + SEDM.NR = 0 + SEDM.IP = 0 + SEDM.HV = 0 + SEDM.P = 0 + SEDM.ISO = 0 + SEDM.BWDmax = 0 + SEDM.AJD = 0 + SEDM.ET = 0 + # + #31.01.2026 TON TOF are integer uSec + SEDM.TON = 0 + SEDM.TOF = 0 + # + SEDM.GVHI = 0 + SEDM.GVLO = 0 + # + SEDM.SPAf = 0 + # + SEDM.VEf = 0 + SEDM.VWf = 0 + SEDM.VDIf = 0 + # + # TODO vvv + # vvv **** spcl values NOT set to 0 + #25.11.2025 make sure user answered Pitch w value >=0 + SEDM.Pitch = -1 + # + SEDM.ThisNR = -1 # after clean up + # + SEDM.inpo = False + SEDM.isEna = False +# +def parseEtab(fqfn): + """ + builds a dict from an ENC file + key = NR, + value = list of paarms + Eaxh NR is a set of cuttimg paramers. + The Largets NR ( 25) is where most cuts begin + It will havea large overburn and no orbit. + The subbsequent NRs have decreasing power + and increasing orbital 'radius'. + The enrty for 'radius' on NR 25 is actually + UNS 'undersize'. + The user enters the "measured underze'. + This must be less than or equal to the + Etable's undersize. The difference is + accomodated by the code. The Correct + cavity size and dpeth are maintained. + The energy resulting from the NR's parameters, + will have a 'reach' propotional to the product + of OnTime and Current and OpenVoltage + andthe Dielectric strength of the medium. + ( in general ). + As the joules decrease, the tool needs to + get closer to the stock to get the spark + phenomna to occur. + + That translation is the orbiting motion. + The tool never gets to the 'print' depth. + The tool position is restrined by the overburn value. + The overburn values are derived from many published + data. (sort of LLM for EDM) + These data were 'curve fit' to get generic formulae + independant of commercial manufactures. + """ + + global AllLines # + global EtabDict # + # + # open raed and close etab fille + fhndl=open(fqfn, 'r') # + if os.path.isfile(fqfn) != True: # + print("ffile nopt exist ", fqfn) # + raise SystemExit # + # + AllLines = fhndl.readlines() # + # TODO need err hndlimg if file not found and file + # empty or file ng + fhndl.close() # + # + # strip newlines + for i in range(0,len(AllLines)-1): # + AllLines[i]=AllLines[i].rstrip() # + # + # begin build dict key is NR val is a list (of params) + EtabDict ={} # # each NR or Staage is accessed as EtaabDict[Nr] + # + # get rid of 1st 2 lines, they just make file man readable + AllLines.pop(0) # # 1st line has etab fname old style 999999nn.E INCJ or MM and sometomes useless P + AllLines.pop(0) # # get wid of what was 2md line read + # + ####################### + # clean up list of lines + # remove trailg whitespace + ll= len(AllLines)-1 # + for i in range(0,ll): # + AllLines[i]=AllLines[i].rstrip() # + # remove empty lines + for i in range(0,ll): # + if AllLines[i]=="": # + AllLines.pop(i) # + else: # + # remove lines begommomg woth space char + if AllLines[i][0]==" ": # + AllLines.pop(i) # + else: # + # remove line brgiining w neewline + if AllLines[i][0]=='\n': # + AllLines.pop(i) # + else: + # remove lines == '[END]' + if AllLines[i]=="[END]": + AllLines.pop(i) + # + # ========CNVRT Strgs to Floats and Ints ============== + numLines=0 # + # ########## + # # BUILD DICT + # ########## + nl= len(AllLines)-1 # + + #process all remainiung lines + for i in range(0,nl): # + # break long string into list of substrings + lineParts=AllLines[i].split() # + + # linnePartrs[0] is IP + nP = len(lineParts)-1 # + # + tupl=() # + # TODO +1 seems wrong, but it 'worked' + for lPartNdx in range(1, nP+1): # # skip 0th thats Nr the key lpl already is leen *vlah) -1 + + ftmp=float(lineParts[lPartNdx]) # + + + + + """# + #/////// for new + #25.02.2026 FOR NEW STYLE ETABS,,, + # OLDNOTE skip #7 AJD 8 ET 15 RAD 16 SPA + # NEWNOTE 24.02.2026 does lineParts start w NR or IP, + # thats would chg all ndxsd + # NEW NOTE 24.02.2026 need to chg code for 3 indices + # NEW NOTE 24.02.2026 new schem 8 AJD 9 ET 11 RAD 12 SPA + # NEW NOTE 24.02.2026 those are the only floats in + # new xsheme + # 25.02.2026 ndxs 7 8 15 16 + # are for lists beginning at IP + # ? in 19/WBC got 15 16 look ok? + # RESULT [0] is val of IP (noy NR) + # i say 8 AJD 9 ET 11 RAD 12 SPA are floats in the dile (* mno cnvrsb needed) + if ( (lPartNdx != 8) and ( lPartNdx != 9) and ( lPartNdx != 11) and (lPartNdx != 12) ): + tupl=tupl+( int(ftmp),) # weird comma to make it + # a tuple so iy can be concvatenated + # + else: + tupl=tupl+( ftmp, ) + # ----- + ////// for new + #"""# + + + + + #"""# + #\\\\\\ for old + if ( (lPartNdx != 9) and ( lPartNdx != 10) and ( lPartNdx != 12) and (lPartNdx != 13) ): + tupl=tupl+( int(ftmp),) # weird comma to make it a tuple so iy can be concvatenated + else: + tupl=tupl+( ftmp, ) + + #/// end old + #"""# + + + + + # + if tupl != (): + numLines+=1 + EtabDict[ lineParts[0] ] = tupl[0:] # 25.02.2026 isnt [9:] same as []?? + # looked ok rint(9741,EtabDict[ lineParts[0] ] ) + """ + print() + print(989,EtabDict[lineParts[0]][9]) + print(989,EtabDict[lineParts[0]][10]) + print(989,EtabDict[lineParts[0]][12]) + print(989,EtabDict[lineParts[0]][13]) + print() + # NR 25 got + #3.0 10 0.0 0 + #NR 24 got + #3.0 10 45.0 0 + #NR 12 got + #3.0 10 3.0 0 + #which are + # ET CB SPA VDI + """ + + """ + # I want 8 9 11 12 + print() + print(989,EtabDict[lineParts[0]][8]) + #print(989,lineParts) + # got 989 ['25', '91', '0', '0', '40', '30', '440', '212', '0', '2.032', '3.0', '10', '0.635', '0.0', '0', '0', '0'] + # so lineparts begins at NR so interesting vcalue is at + # EtabDict index + 1 + print(989,lineParts[9]) + #trap() + + print(989,EtabDict[lineParts[0]][9]) + print(989,lineParts[10]) + print(989,EtabDict[lineParts[0]][11]) + print(989,lineParts[12]) + print(989,EtabDict[lineParts[0]][12]) + print(989,lineParts[13]) + # either the list begins at NR or ... + # those ^^^ data are correct + # check 0yh to see if EtabDict[NR][0] is NR (25) or IP (~100) + #print(989,EtabDict[lineParts[0]][0]) + # NB this is LineParts[] not EtabDict + # i get IP values not NR valyes + # result YES Etab9 is lineParts9 + print() + """ +# +def mkThisRADf(): # used every ThisNR EXCEPT 25 ( handled by mkRufPtTup/// l) + + SEDM.XtraRADf = round(SEDM.MsrdUNSf - SEDM.UNSf,3) + + if SEDM.ThisNR != 25: # call herte b4 dec'd + SEDM.ThisRADf = SEDM.RADf + SEDM.XtraRADf + # now make an INT of 'steps' in ThisRADf + # store it in SEDM.RADi + x = SEDM.ThisRADf + # SEDM.xyzSCALEfOUT or IN are .002 for MM and .0001 for Inch + x = x * (1/SEDM.xyzSCALEfOUT) + x = round(x) + SEDM.RADi = int(x) + else: # ThisNR == 25 + SEDM.UNSf = SEDM.RADf + SEDM.ThisRADf = 0.0 # there is no orbit on NR 25, only wigl + SEDM.RADi = 0 # there is no orbit on NR 25, only wigl +# +#05.02.2026 this vvv looks at ctrl variable PV +# In EDM it would be called GapValue +# a voltage analgous to distannce between +# too and workpice +# This valie is constantly monitored, +# So, it is ahanfly place tp do other checks +# like\: +# did user pree PEEK nutton? +# Is it time to do a 'jump' ( fluching techique) +#06.02.2026 vvv chg to pass ndx not tipl +# CutL should become global +def getEvalPV( Ltype,L,ndx ): # rtns FWD HOLD BWD for EDM + # TODO06.02.2026 xhg pnow s tp l[ndx] + """ doc line + Rtruns a value that controls tool position. + This value is 1 of FWD HOLD or BWD. + The value is from a random.uniform call, + which is filtered by a software + window comparator. + + The returned value is similar to the + GapValue in many EDM process controls. + + The limits for the call to uniform() + are FvMin and GvMax taken from a file + similare tro an .ini file ( called SEDMhdrs,py) + + The evaluation of the uniform value uses + 2 threshodls forming the window comparator. + These thrsholds are GvHi and GvLo. + + Thos 2 parameters are obtained from a cutting technology tabvle. + ( ETable ) + + The value from uniform can be above the GvHi threshold, + and evaulates to FWD. + Or, the values can be below the GvLo threshold, + evaluating to DWD. + Else, the value is between the thresholds, + evaluating to HOLD. + + Th EDM motion is simply followinga rpedetermined + list of XYZ tuples. Thes tuples are adjacent, and the + FWD HOLD VWD deide the next smae or previous tuple + in the lts. + """ + # for debugm i pu EDMgrade on a pin do halmeter can onserve + # 03.01.2026 straight kubne bore alwayts FWD , 1wiglZneg gets bwds gets holds + # + SPO = ( (0,0,0) ) + """ + # This dunction is central to the entire system + # so central, and called fo often, + # it is also where the operattor + # can choose to PEEK RETURN or QUIT. + # + """ + # + # handle PEEK Return QUIT btns + SEDM.QuitHit = False; #no lingetring flags + # + # ceck if time to jump + if (SEDM.JumpENA == True) and (SEDM.JumpOn == True): + t2jump = chkJT() + if t2jump: + JupL,JdnL = mkJupLJdnL(L,ndx) + doJump(JupL,JdnL) + mkJT() # make a new endJT + # + if SEDM.EDpeek == True: + SEDM.disableOsc = True # power off asap , during tool withdrawl + + # return began to work, but at bP it rtnd to SPO + # i trhibnk becus PEEK still active + # ao tyurn it off like the other btns get turnmed off + # YAY peek return quit work + SEDM.EDpeek = False + + peekL = [] + retL = [] + peekL, retL = mkPeekL( L[ndx] ) + doExitL(peekL) + # + # at SPO, user just did PEEK + while 1: + if SEDM.EDquit == True:# vvv already at SPO becuz ^^^ + SEDM.disableOsc = True + SEDM.QuitHit = True + SEDM.EDquit = False # release btn + return BWD #retval is bogud, caller must test Quit and Return before eval + if SEDM.EDreturn == True :# more readble than elseif , + # the reason why is not hidden + + # this vvv setgen is dore RETURN after PEEK + setGen(SEDM.ThisNR) # maybe useless. unnecc + + SEDM.disableOsc = False + doExitL(retL)# rwtL was made during Peek hanfler + SEDM.EDreturn = False # 05.01.2026 missimg turn of btn + # + + # NO DONT RETURN JUDST CONTINUE return FWD # cade in ca;;er excpect FWD to continue + # well don t leave thid func, cont into get PV + #break # tricky with frerebies, well freebies is 20 now + + return FWD + #end while 1 + #end if SEDM.EDpeek == True + #/// can i get return wokinmg + elif IsFreebie(L[ndx]) == True: + return FWD # was EDMgrade = FWD + #ng EDMgrade = FWD # get return continuing??? + #/// + else: # else PEEK was not pressed se use PV + pv = uniform(GVMIN, GVMAX)# GVMAX GV SEDM.GVHI: # HIGVLIM in SEDMhdrs.py + SEDM.BWDcount = 0 + #29.12.2025 wasreturn FWD + EDMgrade = FWD + elif pv < SEDM.GVLO:# LOGVLIM in SEDMhdrs.py + SEDM.BWDcount += 1 + if SEDM.BWDcount >= SEDM.BWDmax: + SEDM.BwdMaxHit == True + EDMgrade = BWD + else: + # 29.12.2025 was return HOLD # caller can ignore it + EDMgrade = HOLD + # common exit for PV + SEDM.EDMgrade = EDMgrade + return EDMgrade +# end test +# +def mkDetourLegL( ToePt ): + # this makes a legL fro, toe to amnkl to jip + # + SPO = (0,0,0) #StartPtOffset nit Posn + # + footL = L3D( ToePt , RufPtTupl) + # slice off ankle, its also on end of shinL + lfL = len(footL)-1 + footL = footL[:lfL] + + # make shinL + shinL = L3D(RufPtTupl ,SPO) + # + lsL = len(shinL) - 1 + ankleNdx = lfL + # join foot bone to shinbone + legL = footL + shinL + # + #03.01.2026dbug + # make sure footL[0] === TorPt + return legL, ankleNdx +# +# TODO vvv BAD NAME +# code reads like it can use +# CtrPt that is NOT RufPtTupl +#10.02.2026 in YposWiglNR17-15.ngc +# when moving from rufpttuple to peri +# there is no Z component +# but the X should be inc'ing from 0 tp radius +# +def mkOrbitEntryLegL( EntryPt ): + SPO = (0,0,0) #StartPtOffset nit Posn + + # make CtrPt tupl using radi and entrypt + if SEDM.ToolAxis == 2: #Z + cZ = EntryPt[2] + cZ -= SEDM.RADi * SEDM.CutDir + CtrPt = ( ( 0, 0, cZ) ) + elif SEDM.ToolAxis == 1: #Y + cY =EntryPt[1] + #10.02.2026 vvv i used -= for toolAxis =2 + #cY += SEDM.RADi * SEDM.CutDir + cY -= SEDM.RADi * SEDM.CutDir + CtrPt = ( ( 0, cY, 0 ) ) + else: #X + cX = EntryPt[0] + #10.02.2026 vvv i used -= for toolAxis =2 + #cX += SEDM.RADi * SEDM.CutDir + cX -= SEDM.RADi * SEDM.CutDir + CtrPt = ( ( cX, 0, 0) ) + # + footL = L3D( EntryPt, CtrPt ) # path exits at 'TOE' + # I want footL[0] to be on peri + # becuz 1st parm in L3D is [0]th + lfL = len(footL)-1 + ankleNdx = lfL + footL = footL[:lfL]# slice off ankle, + # its in the shinL anyway + # + shinL = L3D( CtrPt, SPO) # 1st parm is 0th + # join foot bone to shinbone + legL = footL + shinL + # ndx anklNdx is wghere tool is start of EntryLegL + # + # should cont to doOrbL + return legL, ankleNdx +# +def mkFootLeadInL( PathEntryPt ): + # passing PathEntryPt allows HORZ + # or 45deg approackh to periemeter + SPO = (0,0,0) #StartPtOffset nit Posn + # + footL = L3D( RufPtTupl, PathEntryPt ) # path exits at 'TOE' + footLen = len(footL) + footL = footL[1:footLen -1] + # + return FootLeadInL +# +def mkPeekL( pNow ): + + SPO = ( (0,0,0) ) + if SEDM.ToolAxis == 2: + # if at ctr + if (pNow[0] == 0) and (pNow[1] == 0): + xL = L3D( pNow, SPO) + rL = L3D( SPO, pNow) + + # test adjacency + return xL,rL + else:# else NOT at ctr + # 27.11.2025 if cutting sown, + # then REDUCE the distancve to 0,0,0 + # so, subtract an neg numbert to get a less neg result + ctrPosn = ( (0,0, pNow[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir) ) ) + elif SEDM.ToolAxis == 1: + if (pNow[0] == 0) and (pNow[2] == 0): + xL = L3D( pNow, SPO) + rL = L3D( SPO,pNow) + + #test asjacenvy + return xL,rl + else:# else NOT at ctr + #27.11.2025 subtract + ctrPosn = ( (0, pNow[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir) ,0) ) + elif SEDM.ToolAxis == 0: + if (pNow[1] == 0) and (pNow[2] == 0): + xL = L3D( pNow, SPO) + rL = L3D( SPO, pNow) + + # test adjacenvy + return xL, rL + else:# else NOT atr ctr + #27.11.2025 subtract + # 12.02.2026 was + #ctrPosn = ( (posn[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir),0,0) ) + ctrPosn = ( (pNow[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir),0,0) ) + # only those NOT atr xtr are left + footL = L3D( pNow,ctrPosn) + shinL = L3D(ctrPosn,SPO) + # + xL = footL[:(len(footL)-1) ] + shinL + # 27.11.2025 each sublist need to be reversed + shinL.reverse() + footL.reverse() + rL = shinL[:(len(shinL)-1) ] + footL + + # test adjacency xL + #msg = "in mkPeekL, exit path 'xL' is not adjacent" + #chkListAdj(xL,msg) # wonmt process if false, + # + return xL,rL +# +def mkcL( radi, cLevel ): # pass LeadInLine + # BRESENHAM CIRCLE PATH PLANNER, THANK YOU MR b, NO FLOATS NEEDED! AND FAST + #--------beg octant 1 of 8 + oct1L = [] + a = radi + b = 0 + # + da = 1 - ( radi + radi ) + db = 1# dTER = 1 + re = 0 # radius error + # + while a >= b: # + if SEDM.ToolAxis == 2: #Z plnne is XY + tupl = (a, b, cLevel ) + + + elif SEDM.ToolAxis == 1: #Y plane is ZX + tupl = ( a, cLevel, b) + elif SEDM.ToolAxis == 0: #X plane is YZ + tupl = (cLevel, a, b) + oct1L.append( tupl ) + # ------------------- + # ----- mid loop + b = b + 1 # always inc b + re = re + db # re = re + dTER + db = db + 2 #dTER = dTER + 2 + if ( ( (re + re ) + da ) > 0 ):# if (( (re + re) + dSEC ) > 0 ): + a = a - 1 + re = re + da #re = re + dSEC + da = da + 2 # dSEC = dSEC + 2 + # -- end while + l = len(oct1L) # calc 1x and keep it available + # ------- end octant 1 + # + # ------- beg octant 2 + oct2L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct1L[ndx][1] + nuy = oct1L[ndx][0] + nuz = oct1L[ndx][2] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct1L[ndx][2] + nuy = oct1L[ndx][1] + nuz = oct1L[ndx][0] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct1L[ndx][0] + nuy = oct1L[ndx][2] + nuz = oct1L[ndx][1] + tupl=( (nux,nuy,nuz) ) + # + oct2L.append(tupl) + # + # ------- beg octant 3 + oct3L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct2L[ndx][0] + nuy = oct2L[ndx][1] + nuz = oct2L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct2L[ndx][0] + nuy = oct2L[ndx][1] + nuz = oct2L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct2L[ndx][0] + nuy = oct2L[ndx][1] + nuz = oct2L[ndx][2] + tupl=( (nux,-nuy,nuz) ) + # + oct3L.append(tupl) + # ------- beg octant 4 + oct4L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct3L[ndx][1] + nuy = oct3L[ndx][0] + nuz = oct3L[ndx][2] + tupl=( (-nux,-nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct3L[ndx][2] + nuy = oct3L[ndx][1] + nuz = oct3L[ndx][0] + tupl=( (-nux,nuy,-nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct3L[ndx][0] + nuy = oct3L[ndx][2] + nuz = oct3L[ndx][1] + tupl=( (nux,-nuy,-nuz) ) + # + oct4L.append(tupl) + # ------- beg octant 5 + oct5L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct4L[ndx][0] + nuy = oct4L[ndx][1] + nuz = oct4L[ndx][2] + tupl=( (nux,-nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct4L[ndx][0] + nuy = oct4L[ndx][1] + nuz = oct4L[ndx][2] + tupl=( (nux,nuy,-nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct4L[ndx][0] + nuy = oct4L[ndx][1] + nuz = oct4L[ndx][2] + tupl=( (nux,nuy,-nuz) ) + # + oct5L.append(tupl) + # ------- beg octant 6 + oct6L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct5L[ndx][1] + nuy = oct5L[ndx][0] + nuz = oct5L[ndx][2] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct5L[ndx][2] + nuy = oct5L[ndx][1] + nuz = oct5L[ndx][0] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct5L[ndx][0] + nuy = oct5L[ndx][2] + nuz = oct5L[ndx][1] + tupl=( (nux,nuy,nuz) ) + # + oct6L.append(tupl) + # ------- beg octant 7 + oct7L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct6L[ndx][0] + nuy = oct6L[ndx][1] + nuz = oct6L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct6L[ndx][0] + nuy = oct6L[ndx][1] + nuz = oct6L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct6L[ndx][0] + nuy = oct6L[ndx][1] + nuz = oct6L[ndx][2] + tupl=( (nux,-nuy,nuz) ) + # + oct7L.append(tupl) + # ------- beg octant 8 + oct8L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct7L[ndx][1] + nuy = oct7L[ndx][0] + nuz = oct7L[ndx][2] + tupl=( (-nux,-nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct7L[ndx][2] + nuy = oct7L[ndx][1] + nuz = oct7L[ndx][0] + tupl=( (-nux,nuy,-nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct7L[ndx][0] + nuy = oct7L[ndx][2] + nuz = oct7L[ndx][1] + tupl=( (nux,-nuy,-nuz) ) + # + oct8L.append(tupl) + # + # + # concat octants + # then remove duplicates + # where lists overlap + cL=[] + #07.10.2025 damnit i didnt continu l;ibe correvct, fo iy hard way + cL = oct1L + oct2L + oct3L + oct4L \ + + oct5L + oct6L + oct7L + oct8L + # + # vvv trick to removve duplicate list entries + cL = list(dict.fromkeys(cL)) + + return cL +# +def mksqrL( radi,cLevel):# yeah radius is bad word but its ok + sqrL = [] + # 29.11.2025 RADi passed + + # Right Middle a,b + rMida = radi #like 5,0 was SEDM.RADf # wasradCounts + rMidb = 0 + # Top Right a,b + tRa = rMida # was Mda eg 5,5 + tRb = rMida # wsa Mda + # Top Left a,b + tLa = -(rMida) + tLb = rMida + # Bot Left a,b + bLa = tLa + bLb = -(rMida) + # Bot Right a,b + bRa = tRa + bRb = bLb + # + # BEWARE looks like i calc thuis 2x, once outrside, onece insidee func + #sqrDp = RufPtTupl[ ToolAxis ] + ( CutDir * radi ) + + sqrDp = cLevel + + # --------------- + if SEDM.ToolAxis== 2: #Z G17 XY plane + topRtHalfL = L3D( (rMida, rMidb , sqrDp) , (tRa,tRb , sqrDp) ) + topL = L3D( ( tRa, tRb , sqrDp) , (tLa,tLb , sqrDp) ) + leftL = L3D( ( tLa, tLb , sqrDp) , (bLa, bLb , sqrDp) ) + botL = L3D( ( bLa, bLb , sqrDp) , (bRa, bRb , sqrDp) ) + botRtHalfL = L3D((bRa,bRb,sqrDp),(rMida,rMidb,sqrDp)) + + if SEDM.ToolAxis== 1: + topRtHalfL = L3D( (rMida, sqrDp, rMidb ) , (tRa, sqrDp ,tRb ) ) + topL = L3D( ( tRa, sqrDp, tRb ) , (tLa, sqrDp, tRb ) ) + leftL = L3D( ( tLa, sqrDp ,tLb ) , (bLa, sqrDp, bLb) ) + botL = L3D( ( bLa, sqrDp, bLb) , (bRa, sqrDp, bRb ) ) + botRtHalfL = L3D( ( bRa, sqrDp, bRb ) , (rMida, sqrDp, rMidb ) ) + if SEDM.ToolAxis== 0: + topRtHalfL = L3D( ( sqrDp, rMida, rMidb ) , ( sqrDp, tRa,tRb ) ) + topL = L3D( ( sqrDp, tRa, tRb ) , ( sqrDp, tLa, tLb ) ) + leftL = L3D( ( sqrDp ,tLa, tLb ) , ( sqrDp, bLa, bLb) ) + botL = L3D( ( sqrDp, bLa, bLb) , ( sqrDp, bRa, bRb ) ) + botRtHalfL = L3D( ( sqrDp, bRa, bRb ) , ( sqrDp, rMida, rMidb ) ) + #----------------------- + sqrL = topRtHalfL[0: len(topRtHalfL) -1 ] \ + + topL[0: len(topL)-1]\ + + leftL[0: len(leftL)-1]\ + + botL[0: len(botL)-1]\ + + botRtHalfL[0: len(botRtHalfL)-1]\ + # + #sqrL.append( topRtHalfL[0]) + + # TODO last cell is dupw of 1st cell + return sqrL +# +def mkOrbitPathL(radi, cLevel): + + # 10.02.2026 ???? doe opL contain leadinline>>> + + if SEDM.OrbitType == CIRCLE: + orbL = mkcL( radi, cLevel) + entryPt = orbL[0] + # add a cxopy of 1st posn onto end of list + orbL.append(entryPt) # dipe 1st to last + # + if SEDM.OrbitType == SQUARE: + orbL = mksqrL( radi,cLevel) + entryPt = orbL[0] + orbL.append(entryPt) # dipe 1st to last + # + # 04.01.2026 c hec klist for SPO + SPO = ( ( 0,0,0 ) ) + + """ re: tall skinny triangles + # this code never tripped + # so the tall skiunny trinagle tip + # is Not SPO + # or + # not due to the path list + for p in orbL: + if p == SPO: + print(1555,"orbL containds SPO") + """ + # + return orbL +# +def mkDetourWiglL( posn): #SEDM.ToolAxis ): + # + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + + cDeep = posn[SEDM.ToolAxis] - ( WiglRADi * SEDM.CutDir) + + if SEDM.ToolAxis == 2: + CtrNow = (0,0,cDeep) #posn[SEDM.ToolAxis]) + elif SEDM.ToolAxis == 1: + CtrNow = (0,cDeep,0) #posn[SEDM.ToolAxis],0) + elif SEDM.ToolAxis == 0: + CtrNow = (cDeep,0,0) #posn[SEDM.ToolAxis],0,0) + # + footL = L3D(posn,CtrNow) + # + shinL = L3D( CtrNow, (0,0,0) ) + WiglEscL = footL + shinL + ankleNdx = len(footL) + # + return WiglEscL, ankleNdx +# +def doOrbL( OrbL): # begins at EnrtyPt + # ends at RufPtTupl NOT at SPO + SPO = ( ( 0,0,0) ) + + # 12.02.2026 TODO chg to goodLim badLim so it reads like others + endNdx = len(OrbL) -1 + begNdx = 0 + + #12.02.2026 new 3 lines do vvv alays if SEDM.JumpENA == True: + SEDM.JumpLtype = JumpOrbPathType + SEDM.JumpOn = True + + OrbEndPt = OrbL[endNdx] + + #02.01.2026 why start at ndx 1 other codes start at ndx 0 + ndx = 1 + # + doMove(OrbL[ndx]) + # + # ??? importannt ??? not yet SEDM.JumpoOn = True + while 1: # # seq is + nextDir = getEvalPV( JumpOrbPathType,OrbL,ndx ) + # + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + return + # rtn w flag set let CUPA move to ctr, move to SPO + else: + if nextDir == FWD:# check all done and SUCCESS + if ndx == endNdx: #goodLim = len(OrbL) -1 + # + # if ALREADY at end of orbList and FWD + loL = L3D(OrbL[ndx],RufPtTupl) + doExitL(loL) # MOVES TO RUFPTTUPL NOT SPO + return + # rtn w NO flag set p = RufPtTupl no flags + # + else: # else FWD and ndx < goodLim + oldP = OrbL[ndx] + ndx += 1 + newP = OrbL[ndx] + # + doMove(newP) + #test fatyal flags + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.JumpOn = False + return + # rtn w flag set + # let CUPA move to ctr, move to SPO + # + elif nextDir == BWD: + # done aLREADY 1st check for fatal + # + bP = OrbL[ndx] #make a detour path frm BreakPt bP + legL,ankleNdx = mkDetourLegL(bP) + doDetourLegL(legL,begNdx) + # 0 is BegNdx , hwre to start in List + # + if ( SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.JumpOn = False + return +# +def doExitL( xL): # no getEvalPV, just cloicck out stepsxl[0] is + ndx = 0 + goodLim = len(xL)-1 + badLim = 0 + while ndx < goodLim: # + # + oldP = xL[ ndx ] + ndx += 1 + newP = xL[ ndx ] + # + doMove( newP ) + time.sleep(.001) +# +def doMove( posn): # caller must make sure podn is adjacen to last + # + # 02.01.2026 neccc this is the cmd to move to posn + SEDM.XOffsetCmd = posn[0] + SEDM.YOffsetCmd = posn[1] + SEDM.ZOffsetCmd = posn[2] + # !?!? NECC yes !!!thius is MIN and NECC + time.sleep(0.001) +# +def getAtctr(posn): + #rtns atctr CtrPosn + if SEDM.ToolAxis == 2:# Z + if (posn[0] == 0) and (posn[1] == 0): + atctr = True + else:# else tool is NOT at ctr + CtrPosn = ( ( 0,0,posn[SEDM.ToolAxis] ) ) + atctr = False + elif SEDM.ToolAxis == 1 : # Y + if (posn[0] == 0) and (posn[2] == 0): + atctr = True + else: + CtrPogsn = ( ( 0,posn[SEDM.ToolAxis],0 ) ) + atctr = False + elif SEDM.ToolAxis == 0:# X + if (posn[1] == 0) and (posn[2] == 0): + atctr = True + else: + CtrPosn = ( ( posn[SEDM.ToolAxis],0,0 ) ) + atctr = False +# +def mkStairsL( cL): # now RufPtTupl is global;ly readable + # + s = SEDM.CutDir # just a short name + StairsL=[] # empty list to hold stairsteps + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + TopStairLevel = ( s * WiglRADi) + # 23.12.2025 REMEBNER rUFpTtUPL MAY BE RADI ABOVE + # DEEPEST PT OF STAIRS + beg = abs(TopStairLevel) + RufPtDepth = RufPtTupl[SEDM.ToolAxis] + BotStairLevel = RufPtTupl[SEDM.ToolAxis] + TopStairLevel + end = abs(BotStairLevel) + # + cLlen = len(cL) # yes, not -1 + # loop runs from 0 to dpethOfStiars + # DepthOfStairs is + # (deepest - topstairsDept) + for i in range(0,(end - beg) + 1 ): # 61): + cLndx = i % cLlen + deepNow = TopStairLevel + (i * s) + # get 2 axis from cL pattern, + # calc ToolAxis posn, then store tupl + tmpX, tmpY, tmpZ = cL[cLndx] + # retrieve but ignore toolaxis value + # Next, calc ToolAxis posn + if SEDM.ToolAxis == 2: # Z G17 plabe is XY + p=( tmpX, tmpY, deepNow) + elif SEDM.ToolAxis == 1: # Y G18 plane is ZX + p=( tmpX, deepNow, tmpZ) + elif SEDM.ToolAxis == 0: # X G19 plabe is YZ + p=( deepNow, tmpY, tmpZ) + # + StairsL.append(p) + # + return StairsL +# +# TODO 05.02.2026 ugly lotda ferad cats +def doWiglLeadIn(liL): + # + ndx = 0 + # + lim = len(liL) - 1 + # + while 1: # + nextDir = getEvalPV( NoJump,liL,ndx )# 0 indicates dont jump + if SEDM.QuitHit == True: + return BWD # well,QuitHit is bnetter name (nit taken) + elif SEDM.BwdMaxHit == True: + return BWD # well,BwdMaxHit is better name ( but taken) + else: + if nextDir == FWD: + # FWD is towards liL[lim] (stairs top step) + # + if ndx >= lim: # all done if at lim and FWD + # caller must look at rtn'd FWD + # and set state = CUPA + return FWD # well, Done_Success is better name + # + else: + oldP = liL[ndx] + ndx += 1 + newP = liL[ndx] + # + elif nextDir == BWD: # BWD is tiwards lissr[0] + # + if ndx <= 0:# if at badLim and BWD + # is ndx wronG + SEDM.BwdMaxHit = True # well , really BwdTooMuch is bettwer name + #caller must look at rtnd BWD and set state CUPA + return BWD; # well TooManyBwd is better name + # + else: + oldP = liL[ndx] + ndx -= 1 + newP = liL[ndx] + # + SPO = ( ( 0,0,0 ) ) + + """ re: tall skinmmy triamg;es + # vvv this never tripped + if newP == SPO: + print(2229,"in doWiglLeadIn newP == SPO") + trap() + # + """ + doMove(newP) +# +def doPlunge(): + # + SPO = ( (0,0,0) ) # Start Point Offset + # + # decide use wigl or not + """ + # wigl is halpful + # i sides of toool get 'slimy' + # the motion makes sides spark + """ + # + if SEDM.WiglRADf != 0:# else doBoreL( BoreL ) + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + if SEDM.ToolAxis == 2: + liLdest = ( (WiglRADi, 0, WiglRADi * SEDM.CutDir) ) + elif SEDM.ToolAxis == 1: + liLdest = ( (WiglRADi, WiglRADi * SEDM.CutDir, 0) ) + elif SEDM.ToolAxis == 0: + liLdest = ( (WiglRADi * SEDM.CutDir ,WiglRADi, 0) ) + # + # make a list of circle pts + cLevel = liLdest[SEDM.ToolAxis] # cLevel is ToolAxis dimension at lilDest + cL = mkcL( WiglRADi, cLevel ) + # make lead in line . dtartPyt to TopSair + EntryPt = cL[0] + # npow lead in line can be made + liL = L3D( SPO,EntryPt) + # mkStairss ,use cL as template, + # and moces along ToolAxis for eah cell in template + sL = mkStairsL(cL) + # make StairsExitL loL ends at RufPtTupl + # 29.12.2025 fix bad ]) closure + wigLoL=L3D(sL[len(sL)-1],RufPtTupl) + ####################### + # now all mini paths have been planeed + # and verides adjacent + # begin processing them using PV FWD HOLD BWD + + + ####################### + # power up and start cutting + SEDM.disableOsc = False # power on + # + #################### + # process WiglLiL StairsL WiglLoL + # NB BwdMaxCount is handled in geTevalPV + # NOT in fo Move + ###################### + doWiglLeadIn(liL) + #31.01.2026 ??? allow jump on ewigl leadin limne//\ + + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True) : + return BWD #caller must look foe fatal flag and set state accordingly + # else: # liL success, begin StairsL + # + #process StairsL + doStairsL( sL) + # 31.01.2026 allow jump on stairs + + + # + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True) : + return BWD #caller must look foe fatal flag and set state accordingly + # else: # StairsL sL success, beginloL + # + # do Exit L + doExitL(wigLoL) + # + else: #WiglRADf == 0 so doBore ( simplecut + + # make BoreL + BoreL = L3D(SPO,RufPtTupl) + # + #05.02.2026 jump + if SEDM.JumpENA == True: + #06.02.2026 this may be good palces + # to sets pin JumpLtype + SEDM.JumpLtype = JumpBoreType #1 + #vvv dunno BPndx now, putyin getEval + # THIS BELONNGS IN GEETEVALPV JumL = mkJupLJdnL(JumpBoreType,BoreL, BPndx) + # no, let getREva;lPV get L LType BP + # and let getEvalPV call mkJupLJdnL + # do i need an SEDM.cutLndx?? + # already got SEDM.JumpLtype + # do I need global ThisCutL?? + + mkJT() # sets SEDM.endJT + # halmeter ahoew 1.401 # suspiciously like ET in etab + 1mS + # check the \yimenow' valu + + # use an LED or Halmeter to watch + #power on + SEDM.disableOsc = False + # + # process BoreL + doBoreL(BoreL) + # allow jump on BoreList + + # + #test fatal + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True) : + return BWD #caller must look foe fatal flag and set state accordingly + # else: else dObreL() success + # tool now at RufPtTupl + # power off + SEDM.disableOsc = True + return FWD +# +def getCutDir(): + if SEDM.FullDEPTHf > 0: + SEDM.CutDir = POS + elif SEDM.FullDEPTHf < 0: + SEDM.CutDir = NEG + else:# else SEDM.FullDEPTHf == 0 + msg ="1694 RufPt is same as StartPt" + c = linuxcnc.command() + c.error_msg(msg) + raise SystemExit +# +def chkAtCtr(posn): + atctr = False # guilty tiill proven innocent + if SEDM.ToolAxis == 2: + if (posn[0] == 0) and ( posn[1] == 0): # if x and y are 0 + atctr = True + if SEDM.ToolAxis == 1: + if (posn[0] == 0) and ( posn[2] == 0):# if x and z are 0 + atctr = True + if SEDM.ToolAxis == 0: + if (posn[0] == 0) and ( posn[2] == 0):# if y and z are 0 + atctr = True + return atctr +# +def mkRufPtTupl(): #called 1x per cut, setGen(25) before call + global RufPtTupl + SEDM.ThisRADf = 0.0 + SEDM.RADi = 0 + # + if SEDM.CutDir == NEG: + tmp = SEDM.FullDEPTHf + SEDM.MsrdUNSf # makes LESS neg + tmp = tmp - SEDM.RPlaneDist # more neg to get CutDiost + SEDM.FullDEPTHf = tmp + + SEDM.RufPtDEPTHf = round(tmp,3) + RufPtINT = int( round(tmp / SEDM.xyzSCALEfOUT )) + if SEDM.CutDir == POS: # say cyt fro -15 to -10 + tmp = SEDM.FullDEPTHf - SEDM.MsrdUNSf # makes LESS neg + tmp = tmp - SEDM.RPlaneDist # more neg to get CutDiost + SEDM.FullDEPTHf = tmp + + SEDM.RufPtDEPTHf = round(tmp,3) + RufPtINT = int( round(tmp / SEDM.xyzSCALEfOUT )) + # 2nd create RufPtTupl + if SEDM.ToolAxis == 0: + RufPtTupl = ( ( RufPtINT,0,0) ) + elif SEDM.ToolAxis ==1: + RufPtTupl = ( ( 0, RufPtINT,0) ) + elif SEDM.ToolAxis == 2: + RufPtTupl = ( ( 0, 0, RufPtINT) ) +# +def doCtrSpo():# move tool to ctr then to StartPtOffset + # + posn = ( (SEDM.XOffsetCmd , SEDM.YOffsetCmd , SEDM.ZOffsetCmd ) ) + atctr = chkAtCtr(posn) + if atctr != True: + # TODO isa RufPt correct for all cases?? + rcL = L3D(posn,RufPtTupl) + doExitL(rcL) + posn = ( (SEDM.XOffsetCmd , SEDM.YOffsetCmd , SEDM.ZOffsetCmd ) ) + if posn != SPO: + xL = L3D(posn,SPO) + doExitL(xL) +# +def stop_ngc_program(): + c = linuxcnc.command() + s = linuxcnc.stat() + s.poll() + c.abort() + # if at first you dony abort HAMMER it + #if s.exec_state == linuxcnc.EXEC_RUNNING: + while s.exec_state != linuxcnc.EXEC_DONE: + print("Stopping current NGC program...") + # HAMMER the abort command + c.abort() +# +def doBoreL( BoreL ): # , destPt): + ndx = 0 + lim = len(BoreL)-1 + + # vvv brware JumpENA and JumpOn + # JumpENA set in techGui, higher level than KumpOn + # JumpOn set in code, ineach of 4 jump list typrs + SEDM.JumpOn = True # turn off after L complted/failed + # + while 1: # TODO while 1 is bad form, find a proper limit + # + # 07.01.2026 work jump imn at top of hgwile + # + nextDir = getEvalPV(JumpBoreType, BoreL,ndx ) + # test w 1st run NO jump chheckntn + # and 3nd smae no chkbtn, 3nd hangs + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True): + SEDM.JumpOn = False # turn off after L complted/failed + return BWD + # + if nextDir != HOLD: + if nextDir == FWD: + BwdMaxCount = False + if ndx == lim: + SEDM.JumpOn = False + # turn off after L complted/failed + return FWD # ~ OK + else: + ndx += 1 # doMove comes later + elif nextDir == BWD: + if ndx == 0: # at SPO and gap eval is BWD + SEDM.BwdMaxHit= True + SEDM.JumpOn = False + # turn off after L complted/failed + return BWD # 05.01.2026 new had no ret vak + else: + ndx -= 1 # doMove comes later + newP = BoreL[ndx] + SPO = ( ( 0,0,0 ) ) + if newP == SPO: + SEDM.JumpOn = False + # turn off after L complted/failed + trap() + doMove(newP) + # all exitts have JumpOn saet False +# +def doStairsL( StairsL): + """ + StairsL list begins at TopStep + ends at BotStep + FWD moveds down stairts + BWD call detor + """ + # + SPO = (0,0,0) + ndx = 0 + GoodLim = len(StairsL)-1 + BadLim = 0# StairsL inclunde liL do sL[0] is startPt )also is SPO) + EntryPt = StairsL[0] + + ctr = 0 # prob dteing backed up to ndx 0 vd just stated at ndx0 + # + SEDM.JumpLtype = JumpStairsType + SEDM.JumpOn = True + # + while ndx <= GoodLim: + # vvv this will jump if needed + nextDir = getEvalPV(JumpStairsType, StairsL,ndx ) + # + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True): + return BWD + # + if nextDir == FWD:# FWD is toqerda BotStep ( dowqn stairs) + if ndx >= GoodLim: # >= BptStep + return FWD # 12.02.2026 why return FWD why etn anythinf + else: + oldP = StairsL[ndx] # keep copy for adjancency tests + ndx += 1 + newP = StairsL[ndx] + # + # 12.02.2026 vvv paranoia + if StairsL[ndx] == SPO: + print(1812,"in doStairsL StairsL[ndx] == SPO") + trap() + # + doMove( StairsL[ndx] ) # more dlear meaning + # + elif nextDir == BWD: # BWD is tiwards startposn + bP = StairsL[ndx] # BreaakPt + # + DetourWiglL, ankleNdx = mkDetourWiglL( bP ) + # + doDetourWiglL( DetourWiglL, ankleNdx) + # + # test fdatal flags + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True): + return BWD +# +def doOrbitEntryLegL( legL, ankleNdx): + SPO = ( ( 0,0,0) ) + ndx = ankleNdx + # + goodLim =len(legL) -1 + badLim = 0 + # + #do vvv alays if SEDM.JumpENA == True: + SEDM.JumpLtype = JumpOrbLeadInType + SEDM.JumpOn = True + # + while 1: # # seq is + # + nextDir = getEvalPV( SEDM.JumpLtype, legL,ndx ) + # + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.JumpOn = False + return # let CUPA move to ctr, move to SPO + else: + if nextDir == FWD:# FWD is towards RufPt + if ndx >= goodLim: + SEDM.JumpOn = False + return # no flags + else: + oldP = legL[ndx] + if ndx > 0: + ndx += 1 + elif nextDir == BWD: + if ndx <= badLim : # backed up to SPO + SEDM.BwdMaxHit = True + SEDM.JumpOn = False + return + else: + oldP = legL[ndx] + ndx -= 1 + # + if nextDir != HOLD: # move but stay in limits + newP = legL[ndx] + # + """ re: tall skinny triales + # vv never triggered + if newP == SPO: + print(1772,"in doOrbitEntryLegL newP == SPO|") + SEDM.JumpOn = False + trap() + # + """ + doMove(newP) +# +def doDetourWiglL( DetourWiglL,ankleNdx): + + # 01.01.2026 i thought itrapped ctr ==0 and thidzDir == BWD + # i thought that condition was related to + # 'tall skinnmy Tri" vs wanted Strairs + # buit isee no such trap.test, so implement it + # and run a loop test + # + ctr = 0 # 01.01.2026 trapTri test + + #arrgh + # FWD must DEC mdx towards toe + # BWDF must INC mdx towrads HIP + # + SPO = (0,0,0) + + ndx = 0 # + + posnb = DetourWiglL[ndx] + #posn = ( ( SEDM.XOffsetCmd , SEDM.YOffsetCmd , SEDM.ZOffsetCmd ) ) + + goodLim = 0 # toe + badLim = len(DetourWiglL)-1 # hip + + while 1: # begin lpp[ + # + #07.01.2026 work jump into yop of while loop + # + + # + nextDir = getEvalPV( NoJump,DetourWiglL,ndx ) + # + if nextDir == FWD: # FWD is GOOD butr nmust DEC ndx + ndx -= 1 # + if ndx <= goodLim: + return FWD # success + # + elif nextDir == BWD: # BWD INCs ndx towards SPO BAD + oldP = DetourWiglL[ndx] # where tool was on entry to this dunc + ndx += 1 # BWD INCs the ndx towards HIP SPO + + #01.01.2026 new + ctr += 1 + # + if ndx >= badLim: # + SEDM.BwdMaxHit = True + return BWD # yes FWD means successm bad wors, correct axtion + # + newP = DetourWiglL[ndx] # get newP from list, ndx already INCd + """ re tall skinny triaNGLES + # vvv never tripped + # check old and new re adjacent + # vvv doesbnt show up on tall skinng tri prob + if aj(oldP, newP ) == False: + #print(1652,"in doDetourWiglL() TRAP prev possn was ", oldP) + #print(1853,"in doDetourWiglL() TRAP new posn is ", newP) + #print( 1854," ndx of nmewP is TRAP ", ndx) + + #if ndx > 0:# next line accesec ndx - 1 fo besure ndx > 0 + # print("in doDetourWiglL TRAP prev posn in list ",DetourWiglL[ndx-1]) + # # NB the prev posnn is asj to last cmds posn + + #print("in doDetourWiglL TRAP next posn in list ",DetourWiglL[ndx+1]) + #print("in doDetourWiglL TRAP 0th posn in list ",DetourWiglL[0]) + #print("in doDetourWiglL TRAP whole list ",DetourWiglL) + # NB he next posn in list is too far deom last cmd [posn + print(2191,"aj(oldP, newP ) == False") + trap() + else: # aj(oldP, newP ) == True + # dupe posn = DetourWiglL[ndx] + # dumb doMove( posn) + + if newP == SPO: + print(1812,"in doDetourWiglL newP == SPO") + trap() + + doMove( newP) + # + if newP == SPO: + print(1812,"in doDetourWiglL newP == SPO") + trap() + """ + doMove( newP) +# +def doDetourLegL( legL, BegNdx): # wasankleNdx): + # BegNdx is 0 when making detour from peri + SPO = ( ( 0,0,0) ) + # + ndx = BegNdx #maybe ankle, maybe toe, wasankleNdx # Begin at ankl ndx + goodLim =0 #TOE + badLim = len(legL) -1 # HIP + + #stepNum = 0 + # + while 1: # # seq is + # + #07.01.2026 work jump into yop of while loop + # + nextDir = getEvalPV( NoJump,legL,ndx )# 0 means DONT JUMMP + # check fataal flags + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + return BWD# let CUPA move to ctr, move to SPO + # + if nextDir == FWD:# FWD is DEC towards TOE, towards ndx == 0 + if ndx == 0: #aka goodLim: # ndx 0 is TOE + return# ok retn to caller, we all done w fetote and gotr a FWD PV no flags # no rtn value needed + else: #FWD and ndx != 0, not at TOE + #oldP = legL[ndx] + ####### legL is list w [0] = toe + ######## legL[badLim == SPO) + ######## ??? is legL[-1] == SPO??? YES + ######## DONT DEC ndx if ndx == 0 + ndx -= 1 # FWD is DEC towards TOE towrads PeriPath Towars ndx == 0 + newP = legL[ndx] + elif nextDir == BWD: # BWD is INC ndx BWD is tiwards SPO , ndx gets larger + if (ndx == badLim): # and (stepNum != 0): # backed up to SPO + SEDM.BwdMaxHit = True + return + else: + #oldP = legL[ndx] + ndx += 1 # BWD is towards HIP. ndx is larger + newP = legL[ndx] + if (nextDir != HOLD): + + """ re TST nevcer tyrihghered + if newP == SPO: + print(1731,"in doDetourLegL newP == SPO|") + trap() + """ + doMove( newP ) + +# ......... end funcs needing Hump code +# +SEDM = mkSEDMcomp() + + +try: # SEDM preparation + # vvv initl state of state machine + SEDM.state = WaitFullDepthRplaneDist + # + # i needed a while for the try, EDMmode is ON:Y uised to keep the while open + EDMmode = True + time.sleep(0.10) # nECC as well as QBreaker + SEDM.xyzSCALEfOUT = SEDM.xyzSCALEfIN + SEDM.mlt = 1/SEDM.xyzSCALEfOUT + + getPgmUnits() # should ONLY be called 1x per pgm ( tho user could tryt G20 G21 G20 G31 blah + # + SEDM.ctr = 0 + + while EDMmode == True: + if SEDM.isEna == True: # set by M199 clrd by M198 + # vvv new 11.12.2025 reset at top, not bot + #SEDM.ctr = 0 + + # peek rwtr wuit btns enabled at start up NG + # so wait isEna + # ng all eNOT greyed at startup + # ~ok catch22 + # when panel si loaded, the btns are enabled + # and the nets needed tro DISable them are not yet enabled by M199 + # so TODO fix btns ena too eartly + # BTW PEEK enable as soon as 1st getEvalPV()_ ca;;ed + # these vvv 2 lines are va + SEDM.BwdMaxHit = False + SEDM.BWDcount = 0 + + time.sleep(0.10) # nECC as well as QBreaker + # vvv call 1s + if SEDM.NR == SEDM.BegNR: + getStartPtF() + # + SEDM.disableOsc = True + + + + #---------------------------------------- + #----------- begin state machine -------- + #---------------------------------------- + if SEDM.state == WaitFullDepthRplaneDist: + + + #25.11.2025 this is top of state machuien for subsequent iters + time.sleep(0.1) + + # M162 sets FullDEPTHf and RPlaneDist + SEDM.restart = False + + # vvv doews NOT use mly + getToolAxis() # ths need to run for each tool change + + if SEDM.RPlaneDist != 0: + #vvv asets + # SEDM.CutDir + # SEDM.FullDEPTHf = SEDM.FullDEPTHf + SEDM.RPlaneDist + getCutDir() # also combine RPlane and FullDpeeth tto make CutTraavel + # + SEDM.state = WaitOrbitTypeWiglRADf + # + else: # SEDM.RPlaneDist == 0: + # FAIL becuz RPlaneDisst == 0 + msg = "SEDM.RPlaneDist = 0" + msg = msg + str(SEDM.RPlaneDist) + c = linuxcnc.command() + c.error_msg(msg) + raise SystemExit + # + if SEDM.state == WaitOrbitTypeWiglRADf: + # test OrbitType valid + if (SEDM.OrbitType == CIRCLE) or (SEDM.OrbitType == SQUARE) : + # ^^^ must be circle or sqr for now 26.11.2025 + # + # test WiglRADf valid ( >=0) + # M163 SEDM.OrbitType SEDM.WiglRADf vi dignals + if SEDM.WiglRADf >= 0:#15.11.2025 vhg to >= hung at 0 + SEDM.state = WaitEttabNumberMsrdUNS + # + #TODO 25.11.2025 no testing dict creation success + if SEDM.state == WaitEttabNumberMsrdUNS: + # + # Path to ETAB is \local' + etabPath = "./Etabs"#25.02.2026 <<< make etab path ='HERE' + # + if (SEDM.EtabNum > 0): + # construct file name from number + EtabNumStr = str(SEDM.EtabNum) #"99999944" + fqfn = etabPath + "/" + EtabNumStr +".ENC" + # + # read file, make dict of lists made from lines in file + parseEtab(fqfn) + # + SEDM.state = WaitBegEndNR + # + if SEDM.state == WaitBegEndNR: + if(SEDM.BegNR != 0) and (SEDM.EndNR != 0 ): + if (SEDM.EndNR <= SEDM.BegNR)and(SEDM.EndNR > 0): + if SEDM.BegNR != 25: + SEDM.PlungeOrbitWanted = True + # dont progress until EndNR <= BegNR + # the PlungOrnbWantewds is a side issue + SEDM.state = WaitPitch + # + # I dont handfle plungeOrbWanted correctly + # ... dont undeterdtansd yet... + # + if SEDM.state == WaitPitch: # WaitPitch is state 5 + #15.02.2026 pitch is not used now + # so not good to wait for M??? + # so i shoirt shank this state + SEDM.state = WaitGenReady + # + # TODO JumpENA is BIT, will never be -1 + #if SEDM.state == WaitJumpwANTED: + # if SEDM.JumpENA != -1: #insist M166 is used( oper must say he wants.doersmnt want jump) + # SEDM.state = WaitGenReady + # + if SEDM.state == WaitGenReady:# i need UNS to caLC + # ThisRADf, SO NAME GENREADY MISLEADING MORE LIKE # # GENPrepared MAYBE + #vvv makes UNSf, SEDM.RufPtDEPTHf, RufPtTupl, + if SEDM.ThisNR == SEDM.BegNR: + # temp set ThisNR = 25 to get UND asnd??? + # reset ThisNR to BegNR afterwards + + + # this chink is dfor spcl case + # where BegNR != 25 + # and mkThusRAD and UND not normally called + # so, ThisNR is LIEF to, just to get UNS + # bur 25.02.2026 in new scheme + # thhe etavDixr['25'][11] hol;ds UNS ( tho collumn hdr sez RAD + SEDM.ThisNR = 25 + setGen(SEDM.ThisNR) + mkThisRADf() # get UNS + + else: # 15.02.2026 thius line was missing + # reset to BegNR + SEDM.ThisNR = SEDM.BegNR + + # + mkRufPtTupl()# the 25 could be embedded inside mkRufPtTupl, but keeping it outside shows better + + setGen(SEDM.BegNR) + SEDM.UNSf = EtabDict['25'][11] + SEDM.GenReady = 1 # domt say True it can be -1 0 or 1 + SEDM.state = WaitPlunge + # + if SEDM.state == WaitPlunge: + SEDM.disableOsc = False # turn ON power to tll + doPlunge() # main entry to plunge + # we are done with NR 25, so dec ThisNR + if SEDM.BegNR == 25: + SEDM.ThisNR -= 1 + + #else leave nr alone, + # user may wantplungeOrb when BegNR != 25 + SEDM.disableOsc = True # turn OFF power to tool + # duting DoPlunge some fatal falgs may have been set + if SEDM.QuitHit == True: + SEDM.state = CleanUpPutAway # handle fatal flag, exit clean + elif SEDM.BwdMaxHit == True: + SEDM.state = CleanUpPutAway # handle fatal flag, exit clean + else: + SEDM.state = WaitDoPlungeOrbit + # + # if here Gen NR == ThisNR < 25 + # TODO 13.12.2025 state can be removed + if SEDM.state == WaitDoPlungeOrbit: # MISSING 03.12.2025 + SEDM.state = WaitAllNRsDone + # + if SEDM.state == WaitAllNRsDone: # 13 NRs remaining are ORBITS + if (SEDM.QuitHit == True)or(SEDM.BwdMaxHit == True): + SEDM.state = CleanUpPutAway + # ??? break??? no rtn in state mc + else:# no fatalflags + if (SEDM.ThisNR < SEDM.EndNR):# all NRs are done, + SEDM.state = CleanUpPutAway + else: #else do more orbits, ThisNR IS NOT EndNR, so do more orbits + # + setGen(SEDM.ThisNR) # get power back on + + SEDM.disableOsc = False + # get paths: legEntryL legL opL + mkThisRADf() + # + cLevel = RufPtTupl[SEDM.ToolAxis] + (SEDM.RADi * SEDM.CutDir) + opL = mkOrbitPathL(SEDM.RADi,cLevel) + entryPt = opL[0] + # + legL,ankleNdx = mkOrbitEntryLegL(entryPt) + # + ankleTupl = legL[ankleNdx] + legL.reverse() + ankleNdx = legL.index(ankleTupl) + # + doOrbitEntryLegL(legL,ankleNdx) # + # + # test for fatal flags + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.state = CleanUpPutAway # let CUPA move to ctr, move to SPO + else: + # + doOrbL(opL)# whwrw does doOrbL end??? + # + if (SEDM.QuitHit == True)or(SEDM.BwdMaxHit == True): + SEDM.state = CleanUpPutAway + else: # turn off power, dec ThisNR + SEDM.disableOsc = True + SEDM.ThisNR = SEDM.ThisNR - 1 + # any more NRstoprocess??? + if SEDM.ThisNR < SEDM.EndNR: + SEDM.state = CleanUpPutAway + # + if SEDM.state == CleanUpPutAway : # ALSO SUCCRESS + SPO = ( (0,0,0) ) + doCtrSpo() + c = linuxcnc.command() + SEDM.disableOsc = True + SEDM.isEna = False + SEDM.BWDcount = 0 + # + setGen(0) + SEDM.state = WaitFullDepthRplaneDist + SEDM.ctr += 1 # report count ( for multiple cut loops ) + if SEDM.QuitHit == True: + SEDM.QuitHit = False + msg = "Operator Aborted" + c.error_msg(msg) # stop_ngc_program() + stop_ngc_program() + elif SEDM.BwdMaxHit == True: + SEDM.BwdMaxHit = False + msg = "BwdMaxHit True" + c.error_msg(msg) + stop_ngc_program() + else: # Succesful completion + c.auto(linuxcnc.AUTO_RESUME) +# +except KeyboardInterrupt: + raise SystemExit diff --git a/configs/sim/axis/sedm/SEDM.tbl b/configs/sim/axis/sedm/SEDM.tbl new file mode 100644 index 00000000000..3a5209c2c34 --- /dev/null +++ b/configs/sim/axis/sedm/SEDM.tbl @@ -0,0 +1,2 @@ +T1 P1 Z0.5 D0.125 +T2 P2 Z2 D0.125 diff --git a/configs/sim/axis/sedm/SEDM.xml b/configs/sim/axis/sedm/SEDM.xml new file mode 100644 index 00000000000..e26d4410b80 --- /dev/null +++ b/configs/sim/axis/sedm/SEDM.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + "EtabNum" + ("DejaVu Sans Mono",18,"bold") + "8d" + 8 + "red" + + + + + "UNS" + ("DejaVu Sans Mono",12,"bold") + "LightBlue3" + "2.3f" + + + + + "ThisRAD" + ("DejaVu Sans Mono",12,"bold") + "LightBlue3" + "2.3f" + + + + + ("DejaVu Sans Mono",12,"bold") + + + + + + + + + + + + + + + "NR" + "2d" + "LightBlue3" + ("DejaVu Sans Mono",12,"bold") + 2 + + + "IP" + "3d" + ("DejaVu Sans Mono",12,"bold") + 3 + + + "P" + "1d" + "LightBlue3" + ("DejaVu Sans Mono",12,"bold") + 1 + + + "HV" + "1d" + 3 + ("DejaVu Sans Mono",12,"bold") + + + "TON" + "4d" + "LightBlue3" + ("DejaVu Sans Mono",12,"bold") + 4 + + + "ISO" + "1d" + ("DejaVu Sans Mono",12,"bold") + 3 + + + "BWDmax" + "2d" + ("DejaVu Sans Mono",12,"bold") + "LightBlue3" + 3 + + + "RAD" + "1.3f" + ("DejaVu Sans Mono",12,"bold") + 5 + + + "SPA" + "1.0f" + ("DejaVu Sans Mono",12,"bold") + "LightBlue3" + 5 + + + "VDI" + "3d" + ("DejaVu Sans Mono",12,"bold") + 3 + +
+
+ + + ("DejaVu Sans Mono",12,"bold") + + + ("DejaVu Sans Mono",12,"bold") + + + + + "right" + "TOF" + 1 + 9999 + 0000 + 1.0 + "4.0f" + ("DejaVu Sans Mono",12,"bold") + 1 + 7 + + + + + + ("DejaVu Sans Mono",12,"bold") + + + + + "GVHI" + 0 + 100 + 0000 + 1 + "3f" + ("DejaVu Sans Mono",12,"bold") + 1 + 4 + + + + + + "GVLO" + 0 + 100 + 0000 + 1 + "3f" + ("DejaVu Sans Mono",12,"bold") + 1 + 4 + + + + + + ("DejaVu Sans Mono",12,"bold") + + + + + "JumpENA" + + + 0 + 1 + + 1 + + + + + + + + + + + + + + "ET" + 0.001 + 10.0 + 0000 + 0.001 + "1.3f" + ("DejaVu Sans Mono",12,"bold") + 1 + 6 + + + + + + "AJD" + 0.010 + 10.0 + 0000 + 0.01 + "1.2f" + ("DejaVu Sans Mono",12,"bold") + 1 + 6 + + + + + + +
+ + + +
diff --git a/configs/sim/axis/sedm/SEDMpause.xml b/configs/sim/axis/sedm/SEDMpause.xml new file mode 100644 index 00000000000..5fee76a7236 --- /dev/null +++ b/configs/sim/axis/sedm/SEDMpause.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff --git a/configs/sim/axis/sedm/SEDMpost.hal b/configs/sim/axis/sedm/SEDMpost.hal new file mode 100644 index 00000000000..8a00813bbf3 --- /dev/null +++ b/configs/sim/axis/sedm/SEDMpost.hal @@ -0,0 +1,126 @@ +# SEDMpost.hal 30.09.2025 +# 02.02.2026 TODO need dummy genetatyoe comp 'gen' +# just rcvs gen inmfo untyil real gen buiult +# +# 11.12.2025 the SEDMctr cant be cleared not writeavle +# +#==============beg loads=============== + +loadusr -Wn techGui pyvcp -c techGui ./SEDM.xml +loadusr -Wn EDpanel pyvcp -g 200x150+800+50 -c EDpanel ./SEDMpause.xml +loadusr -W SEDM + +#==============end loads=============== + +net inpo motion.in-position SEDM.inpo + +net J0:pos-fb SEDM.xFBf +net J1:pos-fb SEDM.yFBf +net J2:pos-fb SEDM.zFBf + +#net sABORT => halui.abort + +setp SEDM.xyzSCALEfIN 0.001 + +net stepSize SEDM.xyzSCALEfOUT axis.x.eoffset-scale +net stepSize axis.y.eoffset-scale +net stepSize axis.z.eoffset-scale + +# cnx non editable parms im SEDM to techGUI and generator +net dNR SEDM.NR techGui.NR #gen.NR #U32 +net dIP SEDM.IP techGui.IP #gen.IP #u32 +net dHV SEDM.HV techGui.HV #gen.HV #U32 + +net dTON SEDM.TON techGui.TON #gen.TONO #FLOAT + +net dP SEDM.P techGui.P # gen.IP +net dISO SEDM.ISO techGui.ISO # gen/ISO + +#01.02.2026 try set spinbox initial value to etab value +net sTOFetab SEDM.TOF techGui.spinbox.0.param_pin +net sGVHIetab SEDM.GVHI techGui.spinbox.1.param_pin +net sGVLOetab SEDM.GVLO techGui.spinbox.2.param_pin +net sETetab SEDM.ET techGui.spinbox.3.param_pin +net sAHDetab SEDM.AJD techGui.spinbox.4.param_pin + +#02.02.2026 set generator with spinbox value +net sTOFout techGui.TOF #gen.TOF +net sGVHIout techGui.GVHI #gen.GVHI +net sGVLOout techGui.GVLO #gen.GVLO +net sETout techGui.ET #gen.ET +net sAJDout techGui.AJD #gen.AJD + +net sJumpENA techGui.JumpENA SEDM.JumpENA +#02.02.2026 after a progtram is done +# if SEDM.JumpENA == True: +# #turn iot off before next use +# SEDM.ChgJumpENA = 0 +#03.02.2026 unlink these 2 +# domt use a net , dfo manually +# net sChgJumpENA SEDM.ChgJumpENA techGui.JumpENA.changepin + +# set other etab values direct to generator +#///// +# TODO 02.02.2026 i tyhink gen shoulf be src for genready +# h.newpin("GenReady", hal.HAL_S32, hal.HAL_IN) +# #??? really??? was it but code cant set that DOUT) +#///// + +net dBWDmax SEDM.BWDmax techGui.BWDmax + +# 31.01.2026 removed net dVE SEDM.VEf techGui.Ve +# 31.01.2026 removed net dVw SEDM.VWf techGui.Vw +net dVDI SEDM.VDIf techGui.VDI + +net dRAD SEDM.RADf techGui.RAD +net dSPA SEDM.SPAf techGui.SPA + +net dOrbitType SEDM.OrbitType +net dWiglRADf SEDM.WiglRADf +net dPlungeOrbitWanted SEDM.PlungeOrbitWanted + +net dPitch SEDM.Pitch + +net dUNS SEDM.UNSf techGui.UNS +net dThisRad SEDM.ThisRADf techGui.ThisRAD + +net dEtabNum SEDM.EtabNum techGui.EtabNum + +# 04.02.2026 no more techGui BegNR EndNR + +net eox SEDM.XOffsetCmd axis.x.eoffset-counts +net eoy SEDM.YOffsetCmd axis.y.eoffset-counts +net eoz SEDM.ZOffsetCmd axis.z.eoffset-counts + +#15.02.2026 not used setp SEDM.PulseCount 0 +setp SEDM.freebies 20 #12 + +net die SEDM.abort halui.abort + +# 02.02.2026 TODO need trhhisvvv??? i got disableOsc +net hot SEDM.disableOsc EDpanel.EDpeek.disable + +# make sure SEDM.isNotCutting is True asap after start + +net EDpk EDpanel.EDpeek SEDM.EDpeek +net EDret EDpanel.EDreturn SEDM.EDreturn +net EDq EDpanel.EDquit SEDM.EDquit + +net dMsrdUNSf SEDM.MsrdUNSf + +net ForzFWD SEDM.ForceFWD EDpanel.ForzFWD +net ForzHOLD SEDM.ForceHOLD EDpanel.ForzHOLD +net ForzBWD SEDM.ForceBWD EDpanel.ForzBWD + +net inpo motion.in-position SEDM.inpo + +#loadusr halmeter -g 800 10 pin SEDM.JumpENA +#loadusr halmeter -g 800 210 pin SEDM.endJT +#loadusr halmeter -g 800 410 pin SEDM.JumpOn +#loadusr halmeter -g 800 610 pin SEDM.AJD + + +# vvv not writeable tyep HAL_IN +# awtting up initl state is a prob to be solved +#setp SEDM.DontEnaPeek True NOT WRITREABLE +#setp SEDM.DisableRetQuit True NOT WRITREABLE diff --git a/configs/sim/axis/sedm/ngc/16x/16xZnegNoWiglNR15-15.ngc b/configs/sim/axis/sedm/ngc/16x/16xZnegNoWiglNR15-15.ngc new file mode 100644 index 00000000000..f13914b362f --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/16xZnegNoWiglNR15-15.ngc @@ -0,0 +1,208 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.0; OrbType Circle, EiglRad 50um + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P15 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y0 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y0 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y0 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y2 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y2 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y2 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y2 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x10 y4 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y4 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y4 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y4 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y6 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y6 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y6 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y6 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-15.ngc b/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-15.ngc new file mode 100644 index 00000000000..b063f686e49 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-15.ngc @@ -0,0 +1,208 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P1 Q0.010; OrbType SQR, WiglRad 50um + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y0 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y0 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y0 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y2 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y2 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y2 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y2 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x10 y4 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y4 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y4 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y4 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y6 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y6 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y6 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y6 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-24.ngc b/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-24.ngc new file mode 100644 index 00000000000..3af2dbe4e31 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-24.ngc @@ -0,0 +1,208 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.005; OrbType Circle, EiglRad 50um + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q24 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y0 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y0 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y0 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y2 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y2 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y2 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y2 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x10 y4 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y4 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y4 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y4 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y6 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y6 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y6 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y6 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-25.ngc b/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-25.ngc new file mode 100644 index 00000000000..00e81ed5f86 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/16xZnegWiglNR25-25.ngc @@ -0,0 +1,208 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.05; OrbType Circle, EiglRad 50um + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y0 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y0 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y0 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y2 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y2 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y2 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y2 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x10 y4 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y4 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y4 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y4 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y6 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y6 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y6 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y6 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/16x/1firstOrb.ngc b/configs/sim/axis/sedm/ngc/16x/1firstOrb.ngc new file mode 100644 index 00000000000..27677c09ddf --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/1firstOrb.ngc @@ -0,0 +1,157 @@ +;1rowEachType.ngc +; +; thinks its at SPO +; BEFORE calle to doCtrSpo +; +; single row with 1 cut of each type +; just wigl +; jist 1st orb +; just last orb +; wigl and all robs +; +; there some left over nad thing +; so swap the order of types to see and test +; +; 1st err, when allorbs follow justlast, the 1st move seems to be +; fro ryfpt to startpt +; the line is curved and quick +; +; test1: sub call order is 210 220 230 240 +; make same Z datum +; +; res: i see LastOrb posn hozz fro RufPtTipl +; tyo get to AllOrbs cut +; so LastOrb needs rtn to DPO b4 exit +; why doesnt 1stOrb show similar??? +; sunno +; do g10l2p1x0y0z0 AND rehome befoore xit LCNC and wacth again +; esp watch 1stOrb to LastOrb motion +; 1stOrb motion to LastOrb is correct +; motion LastOrb to AllOrb is ng +; +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.000 ; FD RPlane + + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P34 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q25 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o210 endsub + +o220 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.000 ; FD RPlane + M163 P0 Q0.0 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q24 ; BegNR EndNR + M00 + M198 +o220 endsub + +o230 sub + ; just last orb + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P0 Q0.0 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P15 Q15 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o230 endsub +;end just last orb + +o240 sub + ; wigl and all orbits + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P1 Q0.012 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q15 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o240 endsub +;end wigl and all orbits + +; /////////////// end subs //////// +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 10(limit) +#3 = +5.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0 ; UNSHIFT + G0Z#3 ; CPlane + + ;;-DETAIL 1 ------------- + ;g10l2p1 x10 y0 z-2 ;DATUM 1 + ;g0x0y0 + ;z#4 ;RPlane rel to DATUM + ;o210 call + ;g10l2p1 x0 y0 z0 ;UNSHIFT + ;G0Z#3 ;CPlane abso mc coords + + ;-DETAIL 2------------------------- + ;g10l2p1 x12 y0 z-2 ; DATUM 2 + ;g0x0y0 ; rapid to DATUM 2 ctr + ;z#4 ; rapid to RPlane + ;o220 call ; cut Detail 2 + ;g10l2p1x0y0z0 ; UNSHIFT + ;G0Z#3 + + ;g10l2p1 x14 y0 z-2 ; Set DATUM 3 + ;g0x0y0 ; rapid to DATUM 3 ctr + ;z#4 + ;o230 call ; cut dertail 3 + ;g10l2p1x0y0z0 ;UNSHIFT + ;G0Z#3 + + g10l2p1 x16 y0 z-2 ; set DATUM 4 + g0x0y0 + z#4 + o240 call ; cut detail 4 + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 ;UNSHIFT +G0Z#3 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/16x/1rowEachType.ngc b/configs/sim/axis/sedm/ngc/16x/1rowEachType.ngc new file mode 100644 index 00000000000..bd37dc6386d --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/1rowEachType.ngc @@ -0,0 +1,135 @@ +;1rowEachType.ngc +; +; +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.000 ; FD RPlane + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o210 endsub + +o220 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.000 ; FD RPlane + + M163 P0 Q0.0 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q24 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o220 endsub + +o230 sub + ; just last orb + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P0 Q0.0 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P15 Q15 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o230 endsub +;end just last orb + +o240 sub + ; wigl and all orbits + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P1 Q0.012 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q15 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o240 endsub +;end wigl and all orbits + +; /////////////// end subs //////// +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +T2 +M6 + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 10 (limit) +#3 = +5.000 ; CPlane +#4 = +1.000 ; RPlane + +#5 = 0 ; yaxis + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0 ; UNSHIFT + G0Z#3 ; CPlane + + ;-DETAIL 1 ------------- + g10l2p1 x10 y#5 z-2 ;DATUM 1 + g0x0y0 + z#4 ;RPlane rel to DATUM + o210 call + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 ;CPlane abso mc coords + + ;-DETAIL 2------------------------- + g10l2p1 x12 y#5 z-2 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + o220 call ; cut Detail 2 + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + ;-Detail 3 + g10l2p1 x14 y#5 z-2 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + o230 call ; cut dertail 3 + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y#5 z-2 ; set DATUM 4 + g0x0y0 + z#4 + o240 call ; cut detail 4 + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + #1 = [#1 + 1] + #5 = [#5 + 2] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 ;UNSHIFT +G0Z#3 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/16x/2eachWigl-25-15-all.ngc b/configs/sim/axis/sedm/ngc/16x/2eachWigl-25-15-all.ngc new file mode 100644 index 00000000000..9967c0c02c6 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/16x/2eachWigl-25-15-all.ngc @@ -0,0 +1,261 @@ +;SEDMmulDstraight3.ngc +; wigl and all orbs seems to begin at RufPtTul, +; jump (xcurved) to top +; then runs ~ok +; mnove it to from row by swappinsg sib name/numbet +; +; +o240 sub + ; just wigl + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.05 ; OrbType Circle, EiglRad 50um + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o240 endsub +;end just wigl + +o220 sub + ; just first orb + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.0 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q24 ; BegNR EndNR + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o220 endsub +;end just first orb + +o230 sub + ; just last orb + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.0 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P15 Q15 ; BegNR EndNR + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o230 endsub +;end just last orb + +o210 sub + ; wigl and all orbits + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.025 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q15 ; BegNR EndNR + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o210 endsub +;end wigl and all orbits + +; /////////////// end subs //////// +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o210 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y0 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o210 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y0 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o210 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y0 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o210 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y2 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o220 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y2 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o220 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y2 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o220 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y2 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o220 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x10 y4 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o230 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y4 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o230 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x14 y4 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o230 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y4 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o230 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + ;//////////////////// Posn 1 + g10l2p1 x16 y6 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o240 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x14 y6 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o240 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1 x12 y6 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + ;//////////////////// + o240 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x10 y6 z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o240 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/XnegWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/XnegWiglNR17-15.ngc new file mode 100644 index 00000000000..57395f08cff --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/XnegWiglNR17-15.ngc @@ -0,0 +1,67 @@ +;XnegsWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = 2.000 ; CPlane small for more test s per hr +#4 = 1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = -3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;g10l2p1 x0 y0 z0; UNSHIFT + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/XposWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/XposWiglNR17-15.ngc new file mode 100644 index 00000000000..15a9943be4b --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/XposWiglNR17-15.ngc @@ -0,0 +1,63 @@ +;XnegsWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = 5.000 ; CPlane small for more test s per hr +#4 = 1.0 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0X0; already + G0Y0Z0; already + + ;//////////////////// Posn 1 + g10l2p1 x#3 y0 z0 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#4 ; move to Rplabe aboce bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/YnegWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/YnegWiglNR17-15.ngc new file mode 100644 index 00000000000..c16674c3dfb --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/YnegWiglNR17-15.ngc @@ -0,0 +1,56 @@ +;YnegsWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.0 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x1 y 0 z1 ;was x0 y0 z2; DATUM for cut #1 + g0 x0 y0 + z#4;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/YposWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/YposWiglNR17-15.ngc new file mode 100644 index 00000000000..5a24a0b864d --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/YposWiglNR17-15.ngc @@ -0,0 +1,56 @@ +;YposWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.0 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x1 y 0 z1 ;was x0 y0 z2; DATUM for cut #1 + g0 x0 y0 + z#4;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR17-15-02.ngc b/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR17-15-02.ngc new file mode 100644 index 00000000000..c7d0c1119db --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR17-15-02.ngc @@ -0,0 +1,69 @@ +;ZnegWigl-17-15-02.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G0X0Y0Z0 ; dont really so this tool would touch wkpc + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro +;DRO shows Z 0 + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + ; DRO shows Z 0 + + G0Z#3; CPlane + ;Z moves and DRO shows Z 2.0 + ;********** Z is at G53 Z2.0 + ;//////////////////// Posn 1 + g10l2p1 x1 y 0 z1 ;DATUM for Z is G53 Z1 + ; DRO shows Z1,0 shiftewd hairball + ;*********** Z msrd from G53 Z1, dro shows shifted Z1.0 + g0 x0 y0 + z#4 ;RPlane rel to DATUM + ; Z moves to 0.5 above G53 Z 1.0 + ; DRO shows shifted X at 0.5 + ; and unshifted Z at G53 1.5 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + ;DRO shows unshifted G53 Z1.5 + G0Z#3;CPlane abso mc coords + ;DRO shows unshifted G63 Z2.0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off Jump if it was left on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR17-15.ngc new file mode 100644 index 00000000000..23172de08bd --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR17-15.ngc @@ -0,0 +1,56 @@ +;ZnegWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.0 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x1 y 0 z1 ;was x0 y0 z2; DATUM for cut #1 + g0 x0 y0 + z#4;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR25-15.ngc b/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR25-15.ngc new file mode 100644 index 00000000000..b5b97ecafdf --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/ZnegWiglNR25-15.ngc @@ -0,0 +1,54 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P1 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/ZposWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/ZposWiglNR17-15.ngc new file mode 100644 index 00000000000..63e1cf85d4e --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/ZposWiglNR17-15.ngc @@ -0,0 +1,56 @@ +;ZnegWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.0 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x1 y 0 z1 ;was x0 y0 z2; DATUM for cut #1 + g0 x0 y0 + z#4;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab19-NR25-10.ngc b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab19-NR25-10.ngc new file mode 100644 index 00000000000..4d8f3b7d103 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab19-NR25-10.ngc @@ -0,0 +1,54 @@ +;nuZnegWiglEyab19-NR25-12.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P19 Q0.508 ; etabnum, MsrdUNS + M161 P25 Q10 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab20-NR25-12.ngc b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab20-NR25-12.ngc new file mode 100644 index 00000000000..825d66e0f1c --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab20-NR25-12.ngc @@ -0,0 +1,54 @@ +;nuZnegWiglEyab19-NR25-12.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P20 Q0.635 ; etabnum, MsrdUNS + M161 P25 Q12 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab21-NR25-11.ngc b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab21-NR25-11.ngc new file mode 100644 index 00000000000..a3df5888488 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEtab21-NR25-11.ngc @@ -0,0 +1,54 @@ +;nuZnegWiglEtab21-NR25-11.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P21 Q0.762 ; etabnum, MsrdUNS + M161 P25 Q11 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEyab19-NR25-12.ngc b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEyab19-NR25-12.ngc new file mode 100644 index 00000000000..38f093c07cf --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEyab19-NR25-12.ngc @@ -0,0 +1,54 @@ +;nuZnegWiglEyab19-NR25-12.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P1 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P19 Q0.635 ; etabnum, MsrdUNS + M161 P25 Q12 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEyab20-NR25-12.ngc b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEyab20-NR25-12.ngc new file mode 100644 index 00000000000..ac44850a72a --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglEyab20-NR25-12.ngc @@ -0,0 +1,54 @@ +;nuZnegWiglEyab19-NR25-12.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-0.304 Q1.0 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P1 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P20 Q0.685 ; etabnum, MsrdUNS + M161 P25 Q12 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglNR17-15.ngc b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglNR17-15.ngc new file mode 100644 index 00000000000..e8c0da4aec8 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1orb/nuZnegWiglNR17-15.ngc @@ -0,0 +1,56 @@ +;nuZnegWigl-17-15.ngc +; lookinmg for why tal skinny tri ovveurs +; seems to happern mostly on final ornits +; use ZNR17-15 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P19 Q0.635 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.0 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x1 y 0 z1 ;was x0 y0 z2; DATUM for cut #1 + g0 x0 y0 + z#4;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/1straightXneg.ngc b/configs/sim/axis/sedm/ngc/1straight/1straightXneg.ngc new file mode 100644 index 00000000000..65d388536c8 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/1straightXneg.ngc @@ -0,0 +1,63 @@ +;1straightXneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = 2.000 ; CPlane small for more test s per hr +#4 = 1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = -3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/1straightXpos.ngc b/configs/sim/axis/sedm/ngc/1straight/1straightXpos.ngc new file mode 100644 index 00000000000..12efb8b3fe2 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/1straightXpos.ngc @@ -0,0 +1,63 @@ +;1straightXpos.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = +3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/1straightYneg.ngc b/configs/sim/axis/sedm/ngc/1straight/1straightYneg.ngc new file mode 100644 index 00000000000..7be35ddc41d --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/1straightYneg.ngc @@ -0,0 +1,63 @@ +;1straightYneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = -3.123 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 z0 ; above bore ctr + g0 y#3 ; move to Cplane + g0 y#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Y0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/1straightYpos.ngc b/configs/sim/axis/sedm/ngc/1straight/1straightYpos.ngc new file mode 100644 index 00000000000..683ebb4d9d5 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/1straightYpos.ngc @@ -0,0 +1,63 @@ +;1straightYpos.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = +3.123 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 z0 ; above bore ctr + g0 y#3 ; move to Cplane + g0 y#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Y0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/1straightZneg.ngc b/configs/sim/axis/sedm/ngc/1straight/1straightZneg.ngc new file mode 100644 index 00000000000..dd9e24bb333 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/1straightZneg.ngc @@ -0,0 +1,64 @@ +;1straightZneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = -3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/1straightZpos.ngc b/configs/sim/axis/sedm/ngc/1straight/1straightZpos.ngc new file mode 100644 index 00000000000..e95f832638e --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/1straightZpos.ngc @@ -0,0 +1,64 @@ +;1straightZpos.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = +3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1straight/nu1straightZneg.ngc b/configs/sim/axis/sedm/ngc/1straight/nu1straightZneg.ngc new file mode 100644 index 00000000000..e8c4a3bd4fe --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1straight/nu1straightZneg.ngc @@ -0,0 +1,64 @@ +;1straightZneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, no Wigl for more tests per hr + M160 P19 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = -3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/WiglXpos.ngc b/configs/sim/axis/sedm/ngc/1wigl/WiglXpos.ngc new file mode 100644 index 00000000000..a5a0ca95b49 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/WiglXpos.ngc @@ -0,0 +1,63 @@ +;WuglXpos.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.050; OrbType SQR, 50 Wigl + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = +3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/WiglYneg.ngc b/configs/sim/axis/sedm/ngc/1wigl/WiglYneg.ngc new file mode 100644 index 00000000000..41be562c887 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/WiglYneg.ngc @@ -0,0 +1,63 @@ +;WuglYneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.050 ; OrbType SQR, 50 Wigl + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = -3.123 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 z0 ; above bore ctr + g0 y#3 ; move to Cplane + g0 y#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Y0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/WiglYpos.ngc b/configs/sim/axis/sedm/ngc/1wigl/WiglYpos.ngc new file mode 100644 index 00000000000..0dd08fb275e --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/WiglYpos.ngc @@ -0,0 +1,63 @@ +;WuglYpos.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.050 ; OrbType SQR, 50 Wigl + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = +3.123 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 z0 ; above bore ctr + g0 y#3 ; move to Cplane + g0 y#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Y0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/WiglZneg.ngc b/configs/sim/axis/sedm/ngc/1wigl/WiglZneg.ngc new file mode 100644 index 00000000000..2af66d7cb07 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/WiglZneg.ngc @@ -0,0 +1,63 @@ +;WuglZneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.050; OrbType SQR, 50 Wigl + M160 P34 Q0.254 ; etabnum, MsrdUNS M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = -3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/WiglZpos.ngc b/configs/sim/axis/sedm/ngc/1wigl/WiglZpos.ngc new file mode 100644 index 00000000000..0fd70ace9f7 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/WiglZpos.ngc @@ -0,0 +1,64 @@ +;WuglZpos.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.050 ; OrbType SQR, 50 Wigl + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = +3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/WigltXneg.ngc b/configs/sim/axis/sedm/ngc/1wigl/WigltXneg.ngc new file mode 100644 index 00000000000..90a7336889a --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/WigltXneg.ngc @@ -0,0 +1,63 @@ +;WuglXneg.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0.050; OrbType SQR, 50 Wigl + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = 2.000 ; CPlane small for more test s per hr +#4 = 1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = -3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/1wiglXneg.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglXneg.ngc new file mode 100644 index 00000000000..2f5624aebfc --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglXneg.ngc @@ -0,0 +1,71 @@ +;1wiglXneg.ngc +; +; +; CUTS x NEG g19 TOWARDS OPER left +; X -11 is where wiggl begins, this is RPlane, stock begins at -10 +; cut is from -9.00 to -11.000 + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G19 + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 1 (limit) +#3 = -2 ; +#4 = 1.000 ; RPlane 2 right of datum + +;pre posn +G10L2P1 X0 Y0 Z0 ; UNSHIFT +G0 X0 ; PrePosn right of satum +G0 Y0 Z 5; PRE POSN,while unshifted, + +; for XNEG cut , get further X POS than DATUM (later g10l2p1x?y?z? ) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + g10l2p1 x#3 y0 z2 ; DATURM + g0 y0 z0 ; center over DATUM + G0 X#4 ;get close to DATUM on open side od wekpc + ;//////////////////// Cut 1 code + o210 call + ;//////////////////// + g10l2p1 x0 y0 z0 ; UNSHIFT + ; endds at RPlane above DATUM on ctr + G0 X0 ; rtn to pre posn + G0 y0 z5 ; << thes 2 can be 1 line +;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +;rdundant G10L2P1 X0 Y0 Z0 ;UNSHIFT after loo despite loop also unchifting + +;etn to pre posn +;redundant G0 X8 Y0 Z 5 ; + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 + +; can sub be after M02? YES +; can sub use # vars? NO killsa comp +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.304 Q+1.00 ; FD RPlane + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o210 endsub +; /////////////// end subs //////// +% + diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/1wiglXpos.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglXpos.ngc new file mode 100644 index 00000000000..a077baaddad --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglXpos.ngc @@ -0,0 +1,61 @@ +;1wiglXXpos.ngc +; +; CUTS x POS g19 TOWARDS OPER right +; X+2 Y0 Z5 is DATUM. the cut is rtelative to DATUN +; sub gets all parms from Mcodes +; M162 P1.304 Q-1.00 +; set P as FullDepth ( per print) +; set Q as RPlane, a dist above DATUM where power is turned on +; + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G19 ; defines ToolAxis as + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 1 (limit) +#3 = +2 ( ToolAxis Datum) +#4 = -1.000 ( RPlane above DATUM, in free space outside of stock) + +;------------------ pre posn +G10L2P1 X0 Y0 Z0 ; UNSHIFT +G0 X0 ; PrePosn to LEFT of satum ( Right of DATUN is inside stock) +G0 Y0 Z 5; PRE POSN,while unshifted, + +; loop framework +o110 while [#1 LT #2] + g10l2p1 x#3 y0 z2 ; DATUM + g0 y0 z0 ; center over DATUM + G0 X#4 ;get to RPlaane over DATUM + ; + o210 call + ; + g10l2p1 x0 y0 z0 ; UNSHIFT + ; sub call endds at RPlane above DATUM on ctr + G0 X0 ; rtn to pre posn + G0 y0 z5 ; << thes 2 can be 1 line + ; + #1 = [#1 + 1] +o110 endwhile +M197 ( turn off JumpENA if leaft on ) +M02 + +; subs can be after M02, just to unclutter +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P1.304 Q-1.00 ; FD RPlane + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o210 endsub +; +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/1wiglYneg.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglYneg.ngc new file mode 100644 index 00000000000..6e29b172896 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglYneg.ngc @@ -0,0 +1,61 @@ +;1wiglYnegD.ngc +; +; CUTS Y NEG g18 TOWARDS OPER +; Y-2 Y0 Z5 is DATUM. the cut is rtelative to DATUN +; sub gets all parms from Mcodes +; M162 P-1.304 Q+1.00 +; set P as FullDepth ( per print) +; set Q as RPlane, a dist above DATUM where power is turned on +; + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G18 ; defines ToolAxis as Y + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 1 (limit) +#3 = -2 ( ToolAxis Datum) +#4 = +1.000 ( RPlane above DATUM, in free space outside of stock) + +;------------------ pre posn +G10L2P1 X0 Y0 Z0 ; UNSHIFT +G0 Y0 ; PrePosn to LEFT of satum ( Right of DATUN is inside stock) +G0 X0 Z 5; PRE POSN,while unshifted, + +; loop framework +o110 while [#1 LT #2] + g10l2p1 x0 y#3 z2 ; DATUM + g0 x0 z0 ; center over DATUM + G0 y#4 ;get to RPlaane over DATUM + ; + o210 call + ; + g10l2p1 x0 y0 z0 ; UNSHIFT + ; sub call endds at RPlane above DATUM on ctr + G0 y0 ; rtn to pre posn + G0 x0 z5 ; << thes 2 can be 1 line + ; + #1 = [#1 + 1] +o110 endwhile +M197 ( turn off JumpENA if leaft on ) +M02 + +; subs can be after M02, just to unclutter +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.304 Q+1.00 ; FD RPlane + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o210 endsub +; +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/1wiglYpos.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglYpos.ngc new file mode 100644 index 00000000000..efd27eac08b --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglYpos.ngc @@ -0,0 +1,62 @@ +;1wiglYpos.ngc +; +; CUTS Y POS g19 TOWARDS OPER right +; Y+2 Y0 Z5 is DATUM. the cut is rtelative to DATUN +; sub gets all parms from Mcodes +; M162 P1.304 Q-1.00 +; set P as FullDepth ( per print) +; set Q as RPlane, a dist above DATUM where power is turned on +; + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G18 ; defines ToolAxis as Y + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 1 (limit) +#3 = +2 ( ToolAxis Datum) +#4 = -1.000 ( RPlane above DATUM, in free space outside of stock) + +;------------------ pre posn +G10L2P1 X0 Y0 Z0 ; UNSHIFT +G0 Y0 ; PrePosn to LEFT of satum ( Right of DATUN is inside stock) +G0 X0 Z 5; PRE POSN,while unshifted, + +; loop framework +o110 while [#1 LT #2] + g10l2p1 x0 y#3 z2 ; DATUM + g0 x0 z0 ; center over DATUM + G0 y#4 ;get to RPlaane over DATUM + ; + o210 call + ; + g10l2p1 x0 y0 z0 ; UNSHIFT + ; sub call endds at RPlane above DATUM on ctr + G0 y0 ; rtn to pre posn + G0 x0 z5 ; << thes 2 can be 1 line + ; + #1 = [#1 + 1] +o110 endwhile +M197 ( turn off JumpENA if leaft on ) +M02 + +; subs can be after M02, just to unclutter +o210 sub + ; just wigl .050 seep .01 above .01wiglrad + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P1.304 Q-1.00 ; FD RPlane + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o210 endsub +; +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/1wiglZneg.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglZneg.ngc new file mode 100644 index 00000000000..f79fa6f7ce2 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglZneg.ngc @@ -0,0 +1,46 @@ +;1wiglZneg.ngc +;---- Preamble----- +G21 ; mm +G90 ; absolute +G17 ; defines ToolAxis as Z +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F000 ; wishful thinnking +; ------ vars ------- +#1 = 0 (counter) +#2 = 1 (limit) +#3 = -2.00 ( ToolAxis Datum) +#4 = +1.000 ( RPlane above DATUM, in free space outside of stock) +#5 = 5.000 ( Cplnae clearanve plane above clamps) +;-------- pre posn ------ +G10 L2 P1 X0 Y0 Z0; UNSHIFT +G0 Z#5; move to Cplane +;-------- loop ------ +o110 while [#1 LT #2] + g10 l2 p1 x0 y0 z#3 + g0 x0 y0 + G0 z#4 + o210 call + g10 l2 p1 x0 y0 z0 ; UNSHIFT + G0 z#5 ; rtn to pre posn + G0 x0 y0 + #1 = [#1 + 1] +o110 endwhile +; ---- pre exit +M197 ( turn off JumpENA if left on ) +M02 +; ------- subrtns ----- +; subs can be after M02, just to unclutter +o210 sub + M66 E0 L0 + M199 + M162 P-1.304 Q+1 + M163 P0 Q0.025 + M160 P88888834 Q0.254 + M161 P25 Q25 + ;-------M166 P0 ;ue gui to yuirn on jump + ;-------M165 P1 ; pitch not used + M00 + M198 +o210 endsub +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/1wiglZpos.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglZpos.ngc new file mode 100644 index 00000000000..e505967c57f --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/1wiglZpos.ngc @@ -0,0 +1,71 @@ +;1wiglZpos.ngc +; +; CUTS Z POS g17 'down' +; x0 y0 z0 is DATUM (z#3) +; sub gets all parms from Mcodes +; M162 P+1.304 Q-1.00 +; set P as FullDepth ( per print) +; set Q as RPlane, a dist above DATUM where power is turned on +; + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G17 ; defines ToolAxis as Y + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 1 (limit) +#3 = +4 ( ToolAxis Datum) +#4 = -1.000 ( RPlane above DATUM, in free space outside of stock) + +;------------------ pre posn +g0x10; start here juist so tool is outta the way +g0z5y0 + + +G10L2P1 X0 Y0 Z0 ; UNSHIFT +G0 Z0 ; PrePosn to LEFT of satum ( Right of DATUN is inside stock) +G0 X0 Y0 ; PRE POSN,while unshifted, + +; loop framework +o110 while [#1 LT #2] + g10l2p1 x0 y0 z#3 ; DATUM z+2 + g0 x0 y0 ; center over DATUM + G0 z#4 ;get to z+1 RPlaane over DATUM + ; + o210 call + ; + g10l2p1 x0 y0 z0 ; UNSHIFT + ; sub call endds at RPlane above DATUM on ctr + G0 z0 ; rtn to pre posn + G0 x0 y0 ; << thes 2 can be 1 line + ; + #1 = [#1 + 1] +o110 endwhile + +g0x10 +g0z5 + +M197 ( turn off JumpENA if leaft on ) +M02 + +; subs can be after M02, just to unclutter +o210 sub + ; just wigl .050 seep .01 above .01wiglrad + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P+1.304 Q-1.00 ; FD RPlane + ; NOTE bash m1nn scrupt wonr pass #n vars + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P25 Q25 ; BegNR EndNR + M00 + M198 +o210 endsub +; +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/tarpTri.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/tarpTri.ngc new file mode 100644 index 00000000000..b4bf6e9688f --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/tarpTri.ngc @@ -0,0 +1,80 @@ +;trapTri.ngc +; +; sometimes i get no stairs +; just liL +;tehn a line to ?RufPtTupl, +;then a line to sSPO +; incosistant, rare +; so loop the cut in smae place +; and use dbug prints, naybe traps to catch it +; +; +; i have spcl code for when 1st stepop ofsatairs gets a BWD +; suing a ctr +; but maybe nore than 1 of tyhe 1stmoives on stairs is BWD +; +; CUTS Z NEG g17 'down' +; x0 y-2 z2 is DATUM (z#3) +; sub gets all parms from Mcodes +; M162 P-1.304 Q+1.00 +; set P as FullDepth ( per print) +; set Q as RPlane, a dist above DATUM where power is turned on +; + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G17 ; defines ToolAxis as Y + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 100 (limit) +#3 = -2.00 ( ToolAxis Datum) +#4 = +1.000 ( RPlane above DATUM, in free space outside of stock) + +;------------------ pre posn +G10L2P1 X0 Y0 Z0 ; UNSHIFT + +G0 Z5 ; PrePosn to LEFT of satum ( Right of DATUN is inside stock) +G0 X0 Y0 ; PRE POSN,while unshifted, + +; loop framework +o110 while [#1 LT #2] + g10l2p1 x0 y0 z#3 ; DATUM + g0 x0 y0 ; center over DATUM + G0 z#4 ;get to RPlaane over DATUM + ; + o210 call + ; + g10l2p1 x0 y0 z0 ; UNSHIFT + ; sub call endds at RPlane above DATUM on ctr + G0 z5 ; rtn to pre posn + G0 x0 y0 ; << thes 2 can be 1 line + ; + #1 = [#1 + 1] +o110 endwhile +M197 ( turn off JumpENA if leaft on ) +M02 + +; subs can be after M02, just to unclutter +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-0.304 Q+1.00 ; FD RPlane + + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q25 ; BegNR EndNR + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o210 endsub +; +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/trapTri.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/trapTri.ngc new file mode 100644 index 00000000000..cd77e11f781 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/trapTri.ngc @@ -0,0 +1,84 @@ +;trapTri.ngc +; err tri happeb at top stair +; so get more test per hr by making dethh small\; +; also Z CPlane lowe +; +; sometimes i get no stairs +; just liL +;tehn a line to ?RufPtTupl, +;then a line to sSPO +; incosistant, rare +; so loop the cut in smae place +; and use dbug prints, naybe traps to catch it +; +; +; i have spcl code for when 1st stepop ofsatairs gets a BWD +; suing a ctr +; but maybe nore than 1 of tyhe 1stmoives on stairs is BWD +; +; CUTS Z NEG g17 'down' +; x0 y-2 z2 is DATUM (z#3) +; sub gets all parms from Mcodes +; M162 P-1.304 Q+1.00 +; set P as FullDepth ( per print) +; set Q as RPlane, a dist above DATUM where power is turned on +; + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G17 ; defines ToolAxis as Y + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (counter) +#2 = 1000 (limit) +#3 = -2.00 ( ToolAxis Datum) +#4 = +1.000 ( RPlane above DATUM, in free space outside of stock) + +;------------------ pre posn +G10L2P1 X0 Y0 Z0 ; UNSHIFT + +G0 Z0.5 ; PrePosn to LEFT of satum ( Right of DATUN is inside stock) +G0 X0 Y0 ; PRE POSN,while unshifted, + +; loop framework +o110 while [#1 LT #2] + g10l2p1 x0 y0 z#3 ; DATUM + g0 x0 y0 ; center over DATUM + G0 z#4 ;get to RPlaane over DATUM + ; + o210 call + ; + g10l2p1 x0 y0 z0 ; UNSHIFT + ; sub call endds at RPlane above DATUM on ctr + G0 z0.5 ; rtn to pre posn + G0 x0 y0 ; << thes 2 can be 1 line + ; + #1 = [#1 + 1] +o110 endwhile +M197 ( turn off JumpENA if leaft on ) +M02 + +; subs can be after M02, just to unclutter +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-0.104 Q+1.00 ; was .304 ; FD RPlane + ;M162 P-0.110 Q+1.00 ; was .104 abd saw V from entry to exit NOT A PROB just aestheticc + + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q25 ; BegNR EndNR + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o210 endsub +; +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/wiglAllOrbs-4x10.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/wiglAllOrbs-4x10.ngc new file mode 100644 index 00000000000..6198195c828 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/wiglAllOrbs-4x10.ngc @@ -0,0 +1,144 @@ +;wiglAllOrbs-4x10.ngc not 4x10 just x4 and same place redrawn +; that allows me to seleep and still find bad detores +; so get rid of inc'ing Y by 2 more +; +;all posn do wigl and all orbits sqr +; sumply always call o240 +o210 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.000 ; FD RPlane + + M163 P0 Q0.05 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q25 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o210 endsub + +o220 sub + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.000 ; FD RPlane + + M163 P0 Q0.0 ; OrbType Circle, WiglRad 50um5 + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q24 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o220 endsub + +o230 sub + ; just last orb + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P0 Q0.0 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P15 Q15 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o230 endsub +;end just last orb + +o240 sub + ; wigl and all orbits + M66 E0 L0 ;QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; start PV control + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P1 Q0.012 ; OrbType Circle, EiglRad 50um + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q15 ; BegNR EndNR + + M166 P0 ; no jump + M165 P1 ; Pitch == 1 + M00 + M198 +o240 endsub +;end wigl and all orbits + +; /////////////// end subs //////// +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +T2 +M6 + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 10 (limit) +#3 = +5.000 ; CPlane +#4 = +1.000 ; RPlane + +#5 = 0 ; yaxis + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0 ; UNSHIFT + G0Z#3 ; CPlane + + ;-DETAIL 1 ------------- + g10l2p1 x10 y#5 z-2 ;DATUM 1 + g0x0y0 + z#4 ;RPlane rel to DATUM + o240 call + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 ;CPlane abso mc coords + + ;-DETAIL 2------------------------- + g10l2p1 x12 y#5 z-2 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + o240 call ; cut Detail 2 + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + ;-Detail 3 + g10l2p1 x14 y#5 z-2 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + o240 call ; cut dertail 3 + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1 x16 y#5 z-2 ; set DATUM 4 + g0x0y0 + z#4 + o240 call ; cut detail 4 + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + #1 = [#1 + 1] + ; DO NOT INC Y #5 = [#5 + 2] + ; use Y view and wasily see any bads detours +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 ;UNSHIFT +G0Z#3 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/1wigl/old/x.ngc b/configs/sim/axis/sedm/ngc/1wigl/old/x.ngc new file mode 100644 index 00000000000..0a8f83a9be0 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/1wigl/old/x.ngc @@ -0,0 +1,43 @@ +;1wiglZneg.ngc +;///////////////////// PREAMBLE +G21 +G90 +G17 +G61 +G64 P0 +F5000 +#1 = 0 +#2 = 1 +#3 = -2.00 +#4 = +1.000 +#5 = 5.000 +G10L2P1 X0 Y0 Z0 +G0 Z#5 + +o110 while [#1 LT #2] +g10 l2 p1 x10 y0 z#3 +g0 x0 y0 +G0 z#4 +o210 call +g10 l2 p1 x0 y0 z0 +G0z#5 +G0x0y0 +#1 = [#1 + 1] +o110 endwhile + +M197 +M02 +o210 sub +M66E0L0 +M199 +M162P-1.304Q+1.00 +M163 P0 Q0.025 +M160 P88888834 Q0.254 +M161 P25 Q25 +;M166 P0 +;M165 P1 +M00 +M198 +o210 endsub + +% diff --git a/configs/sim/axis/sedm/ngc/BADjumpsfromRufPtToEntryPt-SEDMmultDStraight3.ngc b/configs/sim/axis/sedm/ngc/BADjumpsfromRufPtToEntryPt-SEDMmultDStraight3.ngc new file mode 100644 index 00000000000..b4b22c7ec31 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/BADjumpsfromRufPtToEntryPt-SEDMmultDStraight3.ngc @@ -0,0 +1,91 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + + M162 P-1.304 Q1.0 ; FD RPlabe + + M163 P0 Q0.05; OrbType Circle, EiglRad 50um + + M160 P34 Q0.254 ; etabnum, MsrdUNS + + M161 P15 Q15; BegNR EndNR + + M166 P0 ; no jump + + M165 P1; Pitch == 1 + + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) + +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + g10l2p1 x0 y0 z0; UNSHIFT + G53G0Z#3 ; CPlane is in mc coords + + g10l2p1 x1 y0 z2; DATUM for cut #1 + g0x0y0 ; at CPlane l;evel move to xy ctr of Cut #1 + z#4 ; rapid to RPlane ( 1mm above DATUM + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 ;rapid to CPlane + + + g10l2p1x2y0z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + ; rapis to CPlane + g10l2p1x3y0z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#1 ; rapid to RPLANE + + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 ; rapid to CPlane + + g10l2p1x4y0z-1 ; set DATUM 4 + g0x0y0 ; rapid to ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10l2p1x0y0z0 ; UNSHIFT +G0Z#3 ; rapid to CPlane +G0X0Y0 ; rapid to oper's choce xy + +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/Last2orbs6ways/XnegNR17-15.ngc b/configs/sim/axis/sedm/ngc/Last2orbs6ways/XnegNR17-15.ngc new file mode 100644 index 00000000000..4c638a2f4ca --- /dev/null +++ b/configs/sim/axis/sedm/ngc/Last2orbs6ways/XnegNR17-15.ngc @@ -0,0 +1,63 @@ +;XnegNR17-15.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, 0 Wigl + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = 2.000 ; CPlane small for more test s per hr +#4 = 1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = -3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/Last2orbs6ways/XposNR17-15.ngc b/configs/sim/axis/sedm/ngc/Last2orbs6ways/XposNR17-15.ngc new file mode 100644 index 00000000000..40d19e314c3 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/Last2orbs6ways/XposNR17-15.ngc @@ -0,0 +1,63 @@ +;XposXnegNR17-15.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, 0 Wigl + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G19 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = +3.123 +#11 = 0 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 y0 z0 ; above bore ctr + g0 X#3 ; move to Cplane + g0 X#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0X0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/Last2orbs6ways/YnegNR17-15.ngc b/configs/sim/axis/sedm/ngc/Last2orbs6ways/YnegNR17-15.ngc new file mode 100644 index 00000000000..80f7e308e8c --- /dev/null +++ b/configs/sim/axis/sedm/ngc/Last2orbs6ways/YnegNR17-15.ngc @@ -0,0 +1,63 @@ +;YnegXnegNR17-15.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0 ; OrbType SQR, 0 Wigl + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = -3.123 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 z0 ; above bore ctr + g0 y#3 ; move to Cplane + g0 y#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Y0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/Last2orbs6ways/YposNR17-15.ngc b/configs/sim/axis/sedm/ngc/Last2orbs6ways/YposNR17-15.ngc new file mode 100644 index 00000000000..89a47382406 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/Last2orbs6ways/YposNR17-15.ngc @@ -0,0 +1,63 @@ +;YposXnegNR17-15.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0 ; OrbType SQR, 0 Wigl + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G18 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = +3.123 +#12 = 0 + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 z0 ; above bore ctr + g0 y#3 ; move to Cplane + g0 y#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Y0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/Last2orbs6ways/ZnegNR17-15.ngc b/configs/sim/axis/sedm/ngc/Last2orbs6ways/ZnegNR17-15.ngc new file mode 100644 index 00000000000..6f8546dac40 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/Last2orbs6ways/ZnegNR17-15.ngc @@ -0,0 +1,64 @@ +;ZnegXnegNR17-15.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.304 Q+1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0; OrbType SQR, 0 Wigl + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = +2.000 ; CPlane small for more test s per hr +#4 = +1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = -3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/Last2orbs6ways/ZposNR17-15.ngc b/configs/sim/axis/sedm/ngc/Last2orbs6ways/ZposNR17-15.ngc new file mode 100644 index 00000000000..351f462aa2f --- /dev/null +++ b/configs/sim/axis/sedm/ngc/Last2orbs6ways/ZposNR17-15.ngc @@ -0,0 +1,64 @@ +;ZposXnegNR17-15.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.304 Q-1.00 ; more tests per hr lookimg fdor bad tri from peri tto SPO + M163 P0 Q0 ; OrbType SQR, 0 Wigl + M160 P88888834 Q0.254 ; etabnum, MsrdUNS + M161 P17 Q15 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z5 ;prepositiomning is done with G17 in mind +G0X0Y0 ; after datum is set, thnik in G1? ( whatever) +G0Z0 ; until then, Z 1st XY 2nd + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (was 100 limit) +#3 = -2.000 ; CPlane small for more test s per hr +#4 = -1.000 ; RPlane small for more test s per hr + +; unshigted ordinates of datum ( cut posn ) +#10 = 0 +#11 = 0 +#12 = +3.123 + + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x#10 y#11 z#12 ; cut ref pt /datum + + g0 x0 y0 ; above bore ctr + g0 z#3 ; move to Cplane + g0 z#4 ; move to Rplane above bore ctr + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z0 + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z5 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDM-1XmultDStraight3.ngc b/configs/sim/axis/sedm/ngc/SEDM-1XmultDStraight3.ngc new file mode 100644 index 00000000000..9b240e42c25 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDM-1XmultDStraight3.ngc @@ -0,0 +1,175 @@ +;SEDMmult07.ngc +; hard to press PEEK bntn cuz yimw winoiw when bvtn enabled is small, so make it deeper DUH +; +; YAY DRO is relative to THID cut, and is Rel to MC0,0,0, when m,ovinge to nrxt cut +; one shift is wrong, bad copy and paste out of sync +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + ;M162 P-5.304 Q1.0 ; 22.11.2025 now Q is RPlane wasa -2.304 expect DRO + M162 P-1.304 Q1.0 ;shallower for more tests per hour + ; vvv P is orbtype (0circ 1swr) Q is wiglRAD) + M163 P0 Q0.05 + ; ^^^ was 0.01 .05 + M160 P34 Q0.254 + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + g10l2p1 x0 y0 z0; remove shift + G53G0Z3; keep constant ht in wk area + g10l2p1 x1 y0 z2; add shift, mder from HERE + g0x0y0 + z1; move 1mm above ref pt (RPlane) + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0; remove offsets + G53G0Z3; keep constant ht in wk area + g10l2p1x2y0z1; set ref + g0x0y0 + z1; move 1mm above ref pt (RPlane) + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + g10l2p1x0y0z0 + G53G0Z3; keep constant ht in wk area + g10l2p1x3y0z0 + g0x0y0 + z1 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + g10l2p1x0y0z0 + G53G0Z3; keep constant ht in wk area + g10l2p1x4y0z-1 + g0x0y0 + z1 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y1z0 + g0x0y0 + z1 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + g10l2p1x3y1z0 + G0Z3; keep constant ht in wk area g10l2p1x3y1z0 + g0x0y0 + z1 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y3z0 + g0x0y0 + z1 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y1z0 + g0x0y0 + z1 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y1z0 + g0x0y0 + z1 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y2z0 + g0x0y0 + z1 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y2z0 + g0x0y0 + z1 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y2z0 + g0x0y0 + z1 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y2z0 + g0x0y0 + z1 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y3z0 + g0x0y0 + z1 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y3z0 + g0x0y0 + z1 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y3z0 + g0x0y0 + z1 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10l2p1x0y0z0 + +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDM-1x.ngc b/configs/sim/axis/sedm/ngc/SEDM-1x.ngc new file mode 100644 index 00000000000..355ffe87728 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDM-1x.ngc @@ -0,0 +1,39 @@ +; SEDM-1x.ngc +; 01.12.2025 +o200 sub + M66 E0 L0 ; NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; begin EDM mode by collectinf data from Mxcodes + M162 P-1.304 Q1.0 ; now Q is RPlane + M163 P0 Q0.05 ; P orbtype(0 circ 1sqr) Q wiglRAD + M160 P34 Q0.254 ; P Etab Q MsrdUNS + M161 P25 Q15 ; P BegNR W EndMR + M166 P0 ; jump OFF + M165 P1 ; pitch 1 + M00 ' necc for offsets while paused + M198 ; end EDM modde +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +; //////////////////// Posn 1 +g10l2p1 x0 y0 z0; UNshift +G53 G0 Z3; keep constant ht in wk area +g10l2p1 x1 y0 z2; add shift, mder from HERE +g0 x0 y0 ; get to new rwf pt (fromn g10 l2 p1.... +z1 ; move 1mm above ref pt (RPlane) +; +o200 call +; +; UNshift +G10l2p1x0y0z0 +; goto safe posn +G0Z3 +G0X0Y0 +; ////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDM06.ngc b/configs/sim/axis/sedm/ngc/SEDM06.ngc new file mode 100644 index 00000000000..e8764cbe69c --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDM06.ngc @@ -0,0 +1,212 @@ +;SEDM06.ngc +#12.11.2025 add queue buster +; +; begin untrapping Satate machibne +; +; +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////////////// goto Posn 1 + +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0 ; to make maths simple + +;//////////////////// prep cut posn 1 +;vvv +M199; done 1st M199 ; at top so SEDM creatd and enable early +;^^^ +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch +;//////////////////// cut posn 1 +M00 ; nrcc?? yes , alloes EDM cut + + +;//////////////////// tuen off axus.L.eoffset-enable +;vvv +M198 ; will be replaced by a trap at end of state machibne +;^^^ + +; SEDM comp should have hit last state of state machinbe +; and be stuck in a loop +; becuz SEDM.enable == Falsee +; LATERvvv M197 will break that loop +; by setting SEDM.enable True +; +;////// goto 2nd posn +G0X1 +G0X2Y0 +G0Z0 + +;vvv +M197 ; set EDM.restart True AFTER in posn BEFORE M1nn codes w data +;^^^ + +;vvv DO 2nd cut +M199; done 1st M199 ; at top so SEDM creatd and enable early +;^^^ +; 26.10.2025 try deep cut using non-updown methoc +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch + +M00 ; nrcc?? yes , alloes EDM cut +;vvv +M198 ; will be replaced by a trap at end of state machibne +;^^^ + +M197 + +; SEDM.restart should be FALSE ( if 2nd pass thru SM happened) + +G0Z1 ; move tp a 3rf posn +G0X3Y0 +; +G0Z2 ; vizual somethong after 2nd cut did 2nd cut iccur> + +;//////////////////////////////// +M02 +% + +///////////////////////////////////// +;SEDM03.ngc 12.11.2025 +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 ; enable SEDM comp + M00 + M198 ; disable SEDM comp +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + G0Z3 + G0X1Y0 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z1 + G0X2Y0 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z1 + G0X3Y0 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z1 + G0X4Y0 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z1 + G0X4Y1 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z1 + G0X3Y1 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z1 + G0X2Y1 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z1 + G0X1Y1 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + G0Z1 + G0X1Y2 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z1 + G0X2Y2 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z1 + G0X3Y2 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z1 + G0X4Y2 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z1 + G0X4Y3 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z1 + G0X3Y3 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z1 + G0X2Y3 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z1 + G0X1Y3 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDM0A.ngc b/configs/sim/axis/sedm/ngc/SEDM0A.ngc new file mode 100644 index 00000000000..128145fd9f7 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDM0A.ngc @@ -0,0 +1,133 @@ +;SEDM0A.ngc +; try o200 sub WORKS +; i should learn to automate a grid of cuts +; even randomize the spths and wiglrad +; +; +o200 sub + M197; harmless, SEDM.restart will be False before 1st cut w/o M197 + M199 + M162 P-2.304 Q.255 + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 + M165 P1 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////////////// Posn 1 +G0Z3 +G0X1Y0 +G0Z0 +;//////////////////// Cut 1 code +o200 call +;//////////////////// posn 2 +G0Z2 +G0X2Y0 +G0Z0 +;//////////////////// CUT 2 code +o200 call +;//////////////////// posn 3 +G0Z2 +G0X3Y0 +G0Z0 +;//////////////////// CUT 3 cmds +o200 call +;//////////////////// posn 4 +G0Z2 +G0X4Y0 +G0Z0 +;//////////////////// CUT 4 ccmds +o200 call +;>>>>>>>>>>>>>>>>>>>>>>>>> +;//////////////////// Posn 5 +G0Z2 +G0X4Y1 +G0Z0 +;//////////////////// Cut 5 code +o200 call +;//////////////////// posn 6 +G0Z2 +G0X3Y1 +G0Z0 +;//////////////////// CUT 6 code +o200 call +;//////////////////// posn 7 +G0Z2 +G0X2Y1 +G0Z0 +;//////////////////// CUT 7 cmds +o200 call +;//////////////////// posn 8 +G0Z2 +G0X1Y1 +G0Z0 +;//////////////////// CUT 8 ccmds +o200 call +;>>>>>>>>>>>>>>>>>>>>>>>>> +;************************* +;//////////////////// Posn 1 +G0Z2 +G0X1Y2 +G0Z0 +;//////////////////// Cut 1 code +o200 call +;//////////////////// posn 2 +G0Z2 +G0X2Y2 +G0Z0 +;//////////////////// CUT 2 code +o200 call +;//////////////////// posn 3 +G0Z2 +G0X3Y2 +G0Z0 +;//////////////////// CUT 3 cmds +o200 call +;//////////////////// posn 4 +G0Z2 +G0X4Y2 +G0Z0 +;//////////////////// CUT 4 ccmds +o200 call +;>>>>>>>>>>>>>>>>>>>>>>>>> +;//////////////////// Posn 5 +G0Z2 +G0X4Y3 +G0Z0 +;//////////////////// Cut 5 code +o200 call +;//////////////////// posn 6 +G0Z2 +G0X3Y3 +G0Z0 +;//////////////////// CUT 6 code +o200 call +;//////////////////// posn 7 +G0Z2 +G0X2Y3 +G0Z0 +;//////////////////// CUT 7 cmds +o200 call +;//////////////////// posn 8 +G0Z2 +G0X1Y3 +G0Z0 +;//////////////////// CUT 8 ccmds +o200 call +;>>>>>>>>>>>>>>>>>>>>>>>>> +;************************* +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDM0Along.ngc b/configs/sim/axis/sedm/ngc/SEDM0Along.ngc new file mode 100644 index 00000000000..4f6d3061c46 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDM0Along.ngc @@ -0,0 +1,140 @@ +;SEDM0Alomg.ngc +; try o200 sub WORKS +; i should learn to automate a grid of cuts +; even randomize the spths and wiglrad +; +; +o200 sub + M197; harmless, SEDM.restart will be False before 1st cut w/o M197 + M199 + M162 P-2.304 Q.255 + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 + M165 P1 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + G0Z3 + G0X1Y0 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z2 + G0X2Y0 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z2 + G0X3Y0 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z2 + G0X4Y0 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z2 + G0X4Y1 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z2 + G0X3Y1 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z2 + G0X2Y1 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z2 + G0X1Y1 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + G0Z2 + G0X1Y2 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z2 + G0X2Y2 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z2 + G0X3Y2 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z2 + G0X4Y2 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z2 + G0X4Y3 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z2 + G0X3Y3 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z2 + G0X2Y3 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z2 + G0X1Y3 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDM0Asmall.ngc b/configs/sim/axis/sedm/ngc/SEDM0Asmall.ngc new file mode 100644 index 00000000000..dc053a3a06f --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDM0Asmall.ngc @@ -0,0 +1,41 @@ +;SEDM0Asmall.ngc +; 1st 2 posmns of SEDM0A.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q.255 ; wasa -2.304 expect DRO + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.0 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHUFT, msr as if G53 +;//////////////////// Posn 1 +G0Z3; this is G53 coords doe to UNSHIDT + +G10L2P1X1Y0Z1 ; NEW DATUM + +G0X0Y10 ; move over new datum +G0Z1.0; move to RPlaneDist abve new datum +;//////////////////// Cut 1 code +o200 call +;//////////////////// posn 2 +G10L2P1x0y0z0 ; msr like G53 +G0Z3 +;should be at +1 +0 +3 anf g54 is x0 y0 z0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmult01.ngc b/configs/sim/axis/sedm/ngc/SEDMmult01.ngc new file mode 100644 index 00000000000..72bcf7aac43 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult01.ngc @@ -0,0 +1,55 @@ +;SEDMmult01.ngc +; +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////////////// Posn 1 +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0 ; to make maths simple +;//////////////////// Cut Cmds +M199 +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch +M00 ; nrcc +M198 +;/////////// Posn 2 +G0X1 +G0X2Y0 +G0Z0 + +; set EDM.restart True AFTER in posn BEFORE M1nn codes w data +M197 + + +;/////// Cut Cmds +M199 +M162 P- 2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch +M00 ; nrcc +M198 + +M197 + +;//////// rtn to resting place easy oper unload/inspect +G0Z1 ; move tp a 3rf posn +G0X3Y0 +G0Z2 ; vizual somethong after 2nd cut did 2nd cut iccur> + +;//////////////////////////////// +M02 +% + +; vvv for ref +;M66 E0 L0; queue buster diff --git a/configs/sim/axis/sedm/ngc/SEDMmult02.ngc b/configs/sim/axis/sedm/ngc/SEDMmult02.ngc new file mode 100644 index 00000000000..b66cbc9962e --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult02.ngc @@ -0,0 +1,44 @@ +;SEDMmult01.ngc +; +;//////// subs +o200 sub + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? +o200 endsub + +;//////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////// Posn 1 +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0.010 ; to make maths simple +;//////////////////// Cut Cmds +o200 call +;/////////// Posn 2 +G0Z2 +G0X2Y0 +G0Z0.010 +;/////// call cut +o200 call +;//////// rtn to resting place easy oper unload/inspect +G0Z3 +G0X0Y0 +;//////////////////////////////// +M02 +% + +; vvv for ref +;M66 E0 L0; queue buster diff --git a/configs/sim/axis/sedm/ngc/SEDMmult03.ngc b/configs/sim/axis/sedm/ngc/SEDMmult03.ngc new file mode 100644 index 00000000000..bfcdc8cf838 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult03.ngc @@ -0,0 +1,58 @@ +;SEDMmult01.ngc +; damnit after last cut i do NBOT see QUIT on menu +;//////// subs +o200 sub + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? +o200 endsub + +;//////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////// Posn 1 +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0.010 ; to make maths simple +;//////////////////// Cut Cmds +o200 call +;/////////// Posn 2 +G0Z2 +G0X2Y0 +G0Z0.010 +;/////// call cut +o200 call + +;/////////// Posn 3 +G0Z2 +G0X3Y0 +G0Z0.010 +;/////// call cut +o200 call + +;/////////// Posn 4 +G0Z2 +G0X4Y0 +G0Z0.010 +;/////// call cut +o200 call + + +;//////// rtn to resting place easy oper unload/inspect +G0Z3 +G0X0Y0 + +;//////////////////////////////// +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmult04.ngc b/configs/sim/axis/sedm/ngc/SEDMmult04.ngc new file mode 100644 index 00000000000..65a7e373be4 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult04.ngc @@ -0,0 +1,104 @@ +;SEDMmult04.ngc +; damnit after last cut i do NBOT see QUIT on menu +; try use no subs +; ng ran all 4 cuts back to 0,0,3 and NO QWIT +;//////// subs +o200 sub + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? +o200 endsub + +;//////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////// Posn 1 +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0.010 ; to make maths simple +;//////////////////// Cut Cmds +;o200 call + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? + +G0Z3 +M02 +% + +;/////////// Posn 2 +G0Z2 +G0X2Y0 +G0Z0.010 +;/////// call cut +;o200 call + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? +;/////////// Posn 3 +G0Z2 +G0X3Y0 +G0Z0.010 +;/////// call cut +;o200 call + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? +;/////////// Posn 4 +G0Z2 +G0X4Y0 +G0Z0.010 +;/////// call cut +;o200 call + ;M197 ;not necc 1st time, but keep macxro same + M199 + M162 P- 2.314 Q.255 ; added .010 fro rplane + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 ; nrcc + M198 + M197; ??? 2x in same macro?? +;//////// rtn to resting place easy oper unload/inspect +G0Z3 +G0X0Y0 +;//////////////////////////////// +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmult05.ngc b/configs/sim/axis/sedm/ngc/SEDMmult05.ngc new file mode 100644 index 00000000000..f16e860ecea --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult05.ngc @@ -0,0 +1,80 @@ +;SEDM08.ngc +; begin untrapping Satate machibne +; +; +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////////////// goto Posn 1 +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0 ; to make maths simple + +;//////////////////// prep cut posn 1 +;vvv +M199; done 1st M199 ; at top so SEDM creatd and enable early +;^^^ +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch +;//////////////////// cut posn 1 +M00 ; nrcc?? yes , alloes EDM cut + + +;//////////////////// tuen off axus.L.eoffset-enable +;vvv +M198 ; will be replaced by a trap at end of state machibne +;^^^ + +; SEDM comp should have hit last state of state machinbe +; and be stuck in a loop +; becuz SEDM.enable == Falsee +; LATERvvv M197 will break that loop +; by setting SEDM.enable True +; +;////// goto 2nd posn +G0X1 +G0X2Y0 +G0Z0 + +;vvv +M197 ; set EDM.restart True AFTER in posn BEFORE M1nn codes w data +;^^^ + +;vvv DO 2nd cut +M199; done 1st M199 ; at top so SEDM creatd and enable early +;^^^ +; 26.10.2025 try deep cut using non-updown methoc +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch + +M00 ; nrcc?? yes , alloes EDM cut +;vvv +M198 ; will be replaced by a trap at end of state machibne +;^^^ + +M197 + +; SEDM.restart should be FALSE ( if 2nd pass thru SM happened) + +G0Z1 ; move tp a 3rf posn +G0X3Y0 +; +G0Z2 ; vizual somethong after 2nd cut did 2nd cut iccur> + +;//////////////////////////////// +M02 +% + +; vvv for ref +;M66 E0 L0; queue buster diff --git a/configs/sim/axis/sedm/ngc/SEDMmult06.ngc b/configs/sim/axis/sedm/ngc/SEDMmult06.ngc new file mode 100644 index 00000000000..b70bd8feaaa --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult06.ngc @@ -0,0 +1,83 @@ +;SEDM06.ngc +#12.11.2025 add queue buster +; +; begin untrapping Satate machibne +; +; +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +;//////////////////// goto Posn 1 + +G0Z3 +G0X1Y0 ; CUT 1 @ x1 y0 +G0Z0 ; to make maths simple + +;//////////////////// prep cut posn 1 +;vvv +M199; done 1st M199 ; at top so SEDM creatd and enable early +;^^^ +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch +;//////////////////// cut posn 1 +M00 ; nrcc?? yes , alloes EDM cut + + +;//////////////////// tuen off axus.L.eoffset-enable +;vvv +M198 ; will be replaced by a trap at end of state machibne +;^^^ + +; SEDM comp should have hit last state of state machinbe +; and be stuck in a loop +; becuz SEDM.enable == Falsee +; LATERvvv M197 will break that loop +; by setting SEDM.enable True +; +;////// goto 2nd posn +G0X1 +G0X2Y0 +G0Z0 + +;vvv +M197 ; set EDM.restart True AFTER in posn BEFORE M1nn codes w data +;^^^ + +;vvv DO 2nd cut +M199; done 1st M199 ; at top so SEDM creatd and enable early +;^^^ +; 26.10.2025 try deep cut using non-updown methoc +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q00.10 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch + +M00 ; nrcc?? yes , alloes EDM cut +;vvv +M198 ; will be replaced by a trap at end of state machibne +;^^^ + +M197 + +; SEDM.restart should be FALSE ( if 2nd pass thru SM happened) + +G0Z1 ; move tp a 3rf posn +G0X3Y0 +; +G0Z2 ; vizual somethong after 2nd cut did 2nd cut iccur> + +;//////////////////////////////// +M02 +% + +; vvv for ref +;M66 E0 L0; queue buster diff --git a/configs/sim/axis/sedm/ngc/SEDMmult07.ngc b/configs/sim/axis/sedm/ngc/SEDMmult07.ngc new file mode 100644 index 00000000000..25f4e3e9034 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmult07.ngc @@ -0,0 +1,136 @@ +;SEDMmult07.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-2.304 Q.255 ; expect DRO + M163 P0 Q00.10 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + G0Z3 + G0X1Y0 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z1 + G0X2Y0 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z1 + G0X3Y0 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z1 + G0X4Y0 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z1 + G0X4Y1 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z1 + G0X3Y1 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z1 + G0X2Y1 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z1 + G0X1Y1 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + G0Z1 + G0X1Y2 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z1 + G0X2Y2 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z1 + G0X3Y2 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z1 + G0X4Y2 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z1 + G0X4Y3 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z1 + G0X3Y3 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z1 + G0X2Y3 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z1 + G0X1Y3 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmultDStraight01.ngc b/configs/sim/axis/sedm/ngc/SEDMmultDStraight01.ngc new file mode 100644 index 00000000000..56ccda221b3 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultDStraight01.ngc @@ -0,0 +1,210 @@ +;SEDMmult07.ngc +; hard to press PEEK bntn cuz yimw winoiw when bvtn enabled is small, so make it deeper DUH +; +; YAY DRO is relative to THID cut, and is Rel to MC0,0,0, when m,ovinge to nrxt cut +; one shift is wrong, bad copy and paste out of sync +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-5.304 Q.255 ; wasa -2.304 expect DRO + ; vvv straight cut (no wigl) + M163 P0 Q0.0 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + + ; remove G54 offsets ( G34 id aligned w L1 in G10L2Pi....msr from 'here' + g10l2p1x0y0z0; remove shift + + G0Z3; keep constant ht in wk area + # ^^^ motion msrd from ??? G53 ??? + + g10l2p1x1y0z0; add shift, mder from HERE + + g0x0y0z1; x at Rplane above shifted posn ??? above + ;G0X1Y0 + ;G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y0z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y0 + ;G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y0z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y0 + ;G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y0z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y0 + ;G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y1 + ;G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + g10l2p1x3y1z0 + G0Z3; keep constant ht in wk area g10l2p1x3y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y1 + ;G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y1 + ;G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X1Y1 + ;G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X1Y2 + ;G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y2 + ;G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y2 + ;G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y2 + ;G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y3 + ;G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y3 + ;G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y3 + ;G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X1Y3 + ;G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10l2p1x0y0z0 + +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmultDStraight02.ngc b/configs/sim/axis/sedm/ngc/SEDMmultDStraight02.ngc new file mode 100644 index 00000000000..7fedcec6b43 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultDStraight02.ngc @@ -0,0 +1,212 @@ +;SEDMmult07.ngc +; hard to press PEEK bntn cuz yimw winoiw when bvtn enabled is small, so make it deeper DUH +; +; YAY DRO is relative to THID cut, and is Rel to MC0,0,0, when m,ovinge to nrxt cut +; one shift is wrong, bad copy and paste out of sync +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-5.304 Q1.0 ; 22.11.2025 now Q is RPlane wasa -2.304 expect DRO + ; vvv straight cut (no wigl) + M163 P0 Q0.0 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + + ; remove G54 offsets ( G34 id aligned w L1 in G10L2Pi....msr from 'here' + g10l2p1x0y0z0; remove shift + G53G0Z3; keep constant ht in wk area + ; ^^^ motion msrd from ??? G53 ??? + g10l2p1x1y0z2; add shift, mder from HERE + ; NB ^^^ does not have motion, its just what msrmenst refer to ( the ref pt) + + ; TODO need to yt *move with sensing on) + ; move to Rplabe ( rel to new ref pt) + ; should NOT be included in FullDepth + ; vvv move 1 mmm above ref pt + g0x0y0z1; x at Rplane above shifted posn ??? above + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1x0y0z0 + G53G0Z3; keep constant ht in wk area + g10l2p1x2y0z1 + g0x0y0z1 + ;G0Z1 + ;G0X2Y0 + ;G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + g10l2p1x0y0z0 + G53G0Z3; keep constant ht in wk area + g10l2p1x3y0z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y0 + ;G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + g10l2p1x0y0z0 + G53G0Z3; keep constant ht in wk area + g10l2p1x4y0z-1 + g0x0y0z1 + ;G0Z1 + ;G0X4Y0 + ;G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y1 + ;G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + g10l2p1x3y1z0 + G0Z3; keep constant ht in wk area g10l2p1x3y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y1 + ;G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y1 + ;G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X1Y1 + ;G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y1z0 + g0x0y0z1 + ;G0Z1 + ;G0X1Y2 + ;G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x1y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y2 + ;G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y2 + ;G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y2 + ;G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y2z0 + g0x0y0z1 + ;G0Z1 + ;G0X4Y3 + ;G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x4y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X3Y3 + ;G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x3y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X2Y3 + ;G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + g10l2p1x0y0z0 + G0Z3; keep constant ht in wk area + g10l2p1x2y3z0 + g0x0y0z1 + ;G0Z1 + ;G0X1Y3 + ;G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10l2p1x0y0z0 + +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmultDStraight3-NoWuglandLASTorb.ngc b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3-NoWuglandLASTorb.ngc new file mode 100644 index 00000000000..180e7cb3899 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3-NoWuglandLASTorb.ngc @@ -0,0 +1,95 @@ +;SEDMmulDstraight3.ngc +; +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.0 ; FD RPlabe + M163 P0 Q0.0; OrbType Circle, EiglRad 50um + M160 P34 Q0.254 ; etabnum, MsrdUNS + M161 P15 Q15 + M166 P0 ; no jump + M165 P1; Pitch == 1 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1 X0 Y0 Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro +G0 Z3 ; CPlane + +o110 while [#1 LT #2] + + ;//////////////////// Posn 1 + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z#4 ;RPlane rel to DATUM + + ;//////////////////// Cut 1 code + o200 call + ;g1z-2 + ;g1z#4 + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 ;CPlane abso mc coords + + ;-------------------------- + g10l2p1 x12 y0 z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call + ;g1z-2 + ;g1z#4 + ;//////////////////// + g10l2p1 x0 y0 z0 ; UNSHIFT + G0Z#3 + + ;----------------------------- + g10l2p1 x14 y0 z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#4 + + ;//////////////////// + o200 call + ;g1z-2 + ;g1z#4 + ;//////////////////// + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 + + ;--------------------------------- + g10l2p1 x16 y0 z-1 ; set DATUM 4 + g0x0y0 + z#4 + + ;//////////////////// + o200 call + ;g1z-2 + ;g1z#4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + + G10L2P1 X0 Y0 Z0 + G0Z#3 + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1 X0 Y0 Z0 ; unshift +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M02 +% + goz-2 diff --git a/configs/sim/axis/sedm/ngc/SEDMmultDStraight3-Wugland1stOrb.ngc b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3-Wugland1stOrb.ngc new file mode 100644 index 00000000000..751f005f394 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3-Wugland1stOrb.ngc @@ -0,0 +1,89 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + + M162 P-1.254 Q1.0 ; FD RPlane + + M163 P0 Q0.005; OrbType Circle, WiglRad 5um + + M160 P34 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q24 + ;P15 Q15; BegNR EndNR + + M166 P0 ; no jump + + M165 P1; Pitch == 1 + + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + g10l2p1 x0 y0 z0; UNSHIFT + G0Z3; CPlane + + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z1;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z3;CPlane abso mc coords + + ;-------------------------- + g10l2p1x12y0z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1x14y0z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#1 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1x16y0z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmultDStraight3.ngc b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3.ngc new file mode 100644 index 00000000000..1405207431a --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3.ngc @@ -0,0 +1,89 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P0 Q0.05; OrbType Circle, EiglRad 50um + + M160 P34 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q25 + ;P15 Q15; BegNR EndNR + + M166 P0 ; no jump + + M165 P1; Pitch == 1 + + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + g10l2p1 x0 y0 z0; UNSHIFT + G53G0Z3; CPlane + + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z1;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z3;CPlane abso mc coords + + ;-------------------------- + g10l2p1x12y0z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1x14y0z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#1 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + + g10l2p1x16y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1x4y0z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmultDStraight3justWuglPlunge.ngc b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3justWuglPlunge.ngc new file mode 100644 index 00000000000..933e70ec01d --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultDStraight3justWuglPlunge.ngc @@ -0,0 +1,91 @@ +;SEDMmulDstraight3.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + + M162 P-1.254 Q1.0 ; FD RPlabe + + M163 P0 Q0.05; OrbType Circle, EiglRad 50um + + M160 P34 Q0.254 ; etabnum, MsrdUNS + + M161 P25 Q25 + ;P15 Q15; BegNR EndNR + + M166 P0 ; no jump + + M165 P1; Pitch == 1 + + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +3.000 ; CPlane +#4 = +1.000 ; RPlane + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + g10l2p1 x0 y0 z0; UNSHIFT + G53G0Z3; CPlane + + g10l2p1 x10 y0 z2; DATUM for cut #1 + g0x0y0 + z1;RPlane rel to DATUM + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z3;CPlane abso mc coords + + ;-------------------------- + g10l2p1x12y0z1 ; DATUM 2 + g0x0y0 ; rapid to DATUM 2 ctr + z#4 ; rapid to RPlane + ;//////////////////// + o200 call ; cut Detail 2 + ;//////////////////// + + g10l2p1x0y0z0 ; UNSHIFT + G0Z#3 + + g10l2p1x14y0z0 ; Set DATUM 3 + g0x0y0 ; rapid to DATUM 3 ctr + z#1 + ;//////////////////// + o200 call ; cut dertail 3 + ;//////////////////// + + g10l2p1x0y0z0 ;UNSHIFT + G0Z#3 + + g10l2p1x16y0z-1 ; set DATUM 4 + g0x0y0 + z#4 + ;//////////////////// + o200 call ; cut detail 4 + ;>>>>>>>>>>>>>>>>>>>>>>>>> + + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 +G0Z3 +G0X0Y0 ; alreaady at Cplane, moce to convenient x y +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMmultStraight01.ngc b/configs/sim/axis/sedm/ngc/SEDMmultStraight01.ngc new file mode 100644 index 00000000000..c51acf77404 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMmultStraight01.ngc @@ -0,0 +1,137 @@ +;SEDMmult07.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-2.304 Q.255 ; expect DRO + ; vvv straight cut (no wigl) + M163 P0 Q0.0 + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 100 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + G0Z3 + G0X1Y0 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z1 + G0X2Y0 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z1 + G0X3Y0 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z1 + G0X4Y0 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z1 + G0X4Y1 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z1 + G0X3Y1 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z1 + G0X2Y1 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z1 + G0X1Y1 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;************************* + ;//////////////////// Posn 1 + G0Z1 + G0X1Y2 + G0Z0 + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + G0Z1 + G0X2Y2 + G0Z0 + ;//////////////////// CUT 2 code + o200 call + ;//////////////////// posn 3 + G0Z1 + G0X3Y2 + G0Z0 + ;//////////////////// CUT 3 cmds + o200 call + ;//////////////////// posn 4 + G0Z1 + G0X4Y2 + G0Z0 + ;//////////////////// CUT 4 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + ;//////////////////// Posn 5 + G0Z1 + G0X4Y3 + G0Z0 + ;//////////////////// Cut 5 code + o200 call + ;//////////////////// posn 6 + G0Z1 + G0X3Y3 + G0Z0 + ;//////////////////// CUT 6 code + o200 call + ;//////////////////// posn 7 + G0Z1 + G0X2Y3 + G0Z0 + ;//////////////////// CUT 7 cmds + o200 call + ;//////////////////// posn 8 + G0Z1 + G0X1Y3 + G0Z0 + ;//////////////////// CUT 8 ccmds + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMsingle01.ngc b/configs/sim/axis/sedm/ngc/SEDMsingle01.ngc new file mode 100644 index 00000000000..f34bf897c6b --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMsingle01.ngc @@ -0,0 +1,50 @@ +;SEDMsingl101.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-2.304 Q.255; RifPt at -2.049 ?? NO at -1.049 + ; so i hace depth rel to startposn + ; I'd like septh to be absolut ( butt reduce by UNS... + ; DOH i have nbo Datum Sjift l;ike Herif + ; with Datum Shift, i cvould mopbve 1mm over shift pt + ; then cut rel to ahift pt + ;??? how to set G5x from ttable?? + ; + M163 P0 Q0.0;starghtr plunge + M160 P34 + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) + +o110 while [#1 LT #2] + ;//////////////////// Posn 1 + G0Z3 + G0X1Y0 + ;G0Z1; cut to -1.049 + G0Z-1; cit to -3.049 + ;//////////////////// Cut 1 code + o200 call + ;>>>>>>>>>>>>>>>>>>>>>>>>> + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +;////////// end pgm +M02 +% diff --git a/configs/sim/axis/sedm/ngc/SEDMstraight01.ngc b/configs/sim/axis/sedm/ngc/SEDMstraight01.ngc new file mode 100644 index 00000000000..29152a751cc --- /dev/null +++ b/configs/sim/axis/sedm/ngc/SEDMstraight01.ngc @@ -0,0 +1,30 @@ +;SEDMstraight01.ngc +; +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +;//////////////////// Posn 1 +G0Z3 +G0X1Y0 +G0Z0 + +M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH +M199 +M162 P-2.304 Q.255 ; expect DRO +M163 P0 Q0.0 +M160 P34 +M161 P25 Q25 +M166 P0 ; no jump +M165 P1 ; pitch +M00 +M198 + +;//////////////////// goto exit posn +G0Z3 +G0X0Y0 +M02 +% diff --git a/configs/sim/axis/sedm/ngc/XMPL.ngc b/configs/sim/axis/sedm/ngc/XMPL.ngc new file mode 100644 index 00000000000..fda502022ff --- /dev/null +++ b/configs/sim/axis/sedm/ngc/XMPL.ngc @@ -0,0 +1,58 @@ +;XMPLE.ngc cuts Z negative -1.204mm deerp +; DATUN for cut X1.0 Y 0 Z1.0 +; ORBIT type SQUARE +; ETABLE 34.ENC (This just finishing a cavity) +; ETABLE BegNR 17 EndNR 15 +; MsrdUNS == Etable UNS +o200 sub + M66 E0 L0 ;NEED QUEIE BUSTER so motion is stopped + M199 ; This begins EDM control + M162 P-1.304 Q+1.00 ; awt PrintDepth and Rplanemore tests per hr lookimg fdor bad tri from peri tto SPO + M163 P1 Q0 ; OrbType SQR, no 'Wigl' for bore + M160 P34 Q0.254 ; Etable, MsrdUNS + M161 P17 Q15 ; BeginningNR in Etable, EndNR + M00 ; needed for ExternalOffsets + M198 ; Rnd SEDM control + ; thsi last line wont be executed + ; untill AEDM comp finisshes +o200 endsub ; return to NGC code and LCNC position control +;now thw main NGC progtram poses the tool. and calls the o-sub. +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; posing can be rapid +G10L2P1 X0 Y0 Z0 ;'UNSHIFT' +; +#1 = 0 ;counter initial value +#2 = 1 ;counte max value +#3 = +2.000 ; Cplane above clamping/fixtires +#4 = +1.0 ; Rplane above woek wher EDM Power is turned on +; +o110 while [#1 LT #2] + g10l2p1 x0 y0 z0 ; UNSHIFT + G0Z5 ; manl tool chg for ToolAxis + ;//////////////////// DATUN for cut + g10l2p1 x1 y 0 z1 ;DATUM ref [posn + g0z#3 ;Cplane (2mm avove the 1mm DATUM) + g0 x0 y0 ;cavity center + z#4 ;RPlane rel to DATUM at G53 2.5 now + ;//////////////////// Cut + o200 call + ;//////////////////// + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3 ;Cplane rel toDATUM + ; + #1 = [#1 + 1] ;bump ctr, Useful for usinga Positionn list +o110 endwhile +;//////////////////// goto exit posn, adjust fdor G17.18/19 and CutDirection +G10L2P1X0Y0Z0 ;UNHIFT +G0Z5 ;manual Tool Chg height and tool axis +G0X0Y0 ;manual Tool Vhg posn for 'other' axis alreaady at Cplane, moce to convenient x y +;//////////////////// end pgm +M197 ;T turn off JumpENA if leaft on +M02 +% + diff --git a/configs/sim/axis/sedm/ngc/a.ngc b/configs/sim/axis/sedm/ngc/a.ngc new file mode 100644 index 00000000000..9773d5d3175 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/a.ngc @@ -0,0 +1,59 @@ +;SEDM0Asmall.ngc +; 1st 2 posmns of SEDM0A.ngc +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.085 + M163 P0 Q0.085 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z1 ; NEW DATUM + +G0X0Y0z1 ; move over new datum at CPlane + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +; this doesnt get exec'd if QUIT +; BUT +; pgm b3gina w same, so safe + +;G10L2P1x0y0z0 ; UNSHIFT + +;look whre tool is at +; IS at x1 y0 z0 no hairball +; should be at x1 y0 z1 + +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/axnrgwigl25-15.ngc b/configs/sim/axis/sedm/ngc/axnrgwigl25-15.ngc new file mode 100644 index 00000000000..8641957d938 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/axnrgwigl25-15.ngc @@ -0,0 +1,61 @@ +;axmgwigl25-15.ngc +; z neg bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.1 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G19; toolaxis is X + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z1 ; NEW DATUM + +G0X0Y0z1 ; move over new datum at CPlane + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +; this doesnt get exec'd if QUIT +; BUT +; pgm b3gina w same, so safe + +;G10L2P1x0y0z0 ; UNSHIFT + +;look whre tool is at +; IS at x1 y0 z0 no hairball +; should be at x1 y0 z1 + +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/axposwigl25-15.ngc b/configs/sim/axis/sedm/ngc/axposwigl25-15.ngc new file mode 100644 index 00000000000..21449232859 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/axposwigl25-15.ngc @@ -0,0 +1,53 @@ +;axposigl25-15.ngc +; x pos bore with wig +; x pos bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.005 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G19 + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z-3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z-1 ; NEW DATUM + +G0X0Y0z-1 + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +;G10L2P1x0y0z0 ; UNSHIFT +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/aynrgwigl25-15.ngc b/configs/sim/axis/sedm/ngc/aynrgwigl25-15.ngc new file mode 100644 index 00000000000..f990b8ab604 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/aynrgwigl25-15.ngc @@ -0,0 +1,61 @@ +;aymgwigl25-24.ngc +; z neg bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.005 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G18; toolaxis is Y + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z1 ; NEW DATUM + +G0X0Y0z1 ; move over new datum at CPlane + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +; this doesnt get exec'd if QUIT +; BUT +; pgm b3gina w same, so safe + +;G10L2P1x0y0z0 ; UNSHIFT + +;look whre tool is at +; IS at x1 y0 z0 no hairball +; should be at x1 y0 z1 + +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/ayposwigl25-15.ngc b/configs/sim/axis/sedm/ngc/ayposwigl25-15.ngc new file mode 100644 index 00000000000..9d863cdf4a2 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/ayposwigl25-15.ngc @@ -0,0 +1,53 @@ +;ayposigl25-15.ngc +; y pos bore with wig +; y pos bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.005 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G18 + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z-3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z-1 ; NEW DATUM + +G0X0Y0z-1 + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +;G10L2P1x0y0z0 ; UNSHIFT +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/aznrgwigl.ngc b/configs/sim/axis/sedm/ngc/aznrgwigl.ngc new file mode 100644 index 00000000000..5bab120548c --- /dev/null +++ b/configs/sim/axis/sedm/ngc/aznrgwigl.ngc @@ -0,0 +1,36 @@ +;azmgwigl.ngc +; x neg bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-.354 Q1.000 ;fd -0.354 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.05 ; circ orb 5 wiglrad + M160 P34 Q.254 ; etab filename msrdUNS + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + ;g4p + M00 + M198 +o200 endsub + +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking +G10 l2 p1 x0 y0 z0 ; UNSHIFT simplify dro to G53 +G0 X-2 Y2 Z3 ; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +G10 L2 P1 X1 Y0 Z1 ; NEW DATUM +G0 X0 Y0 z1 ; move over new datum at CPlane + +o200 call + +G10 L2 P1 x0 y0 z0 ; UNSHIFT +G0 x0 y0 z3 ; abso mc coords +M02 +% diff --git a/configs/sim/axis/sedm/ngc/aznrgwigl25-15.ngc b/configs/sim/axis/sedm/ngc/aznrgwigl25-15.ngc new file mode 100644 index 00000000000..fa36db35480 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/aznrgwigl25-15.ngc @@ -0,0 +1,58 @@ +;azmgwigl25-24.ngc +; x neg bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.005 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z1 ; NEW DATUM + +G0X0Y0z1 ; move over new datum at CPlane + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +; this doesnt get exec'd if QUIT +; BUT +; pgm b3gina w same, so safe + +;G10L2P1x0y0z0 ; UNSHIFT + +;look whre tool is at +; IS at x1 y0 z0 no hairball +; should be at x1 y0 z1 + +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/aznrgwigl25-24.ngc b/configs/sim/axis/sedm/ngc/aznrgwigl25-24.ngc new file mode 100644 index 00000000000..341ec92216d --- /dev/null +++ b/configs/sim/axis/sedm/ngc/aznrgwigl25-24.ngc @@ -0,0 +1,40 @@ +;azmgwigl25-24.ngc +; x neg bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + + M162 P-1.254 Q1.000 ;fd -1.254 RPlane 1.000 + + M163 P0 Q0.005 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q24 + M166 P0 ; no jump + M165 P1 ; pitch + ;g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +G0X-2Y2Z3 ; CPlane +;//////////////////// Posn 1 +G10L2P1X1Y0Z1 ; NEW DATUM +G0X0Y0z1 ; move to RPlane over new datum +;//////////////////// Cut 1 code +o200 call +;//////////////////// +G10L2P1X0Y0Z0 +G0Z3 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/azposwigl.ngc b/configs/sim/axis/sedm/ngc/azposwigl.ngc new file mode 100644 index 00000000000..24d4db81430 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/azposwigl.ngc @@ -0,0 +1,53 @@ +;azposigl.ngc +; z pos bore with wig +; z pos bore with wig +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.005 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q25 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G17 + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z-3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z-1 ; NEW DATUM + +G0X0Y0z-1 + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +;G10L2P1x0y0z0 ; UNSHIFT +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/azposwigl25-15.ngc b/configs/sim/axis/sedm/ngc/azposwigl25-15.ngc new file mode 100644 index 00000000000..6c6a1864302 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/azposwigl25-15.ngc @@ -0,0 +1,51 @@ +;azposigl25-15.ngc wigl and 1 orb +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.010 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G17 + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z-3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z-1 ; NEW DATUM + +G0X0Y0z-1 + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +;G10L2P1x0y0z0 ; UNSHIFT +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/azposwigl25-24.ngc b/configs/sim/axis/sedm/ngc/azposwigl25-24.ngc new file mode 100644 index 00000000000..e8bf1bb78f9 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/azposwigl25-24.ngc @@ -0,0 +1,51 @@ +;azposigl25-24.ngc wigl and 1 orb +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P+1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + M163 P0 Q0.010 + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q24 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 + +G17 + +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +; ^^^ UNSHIFT +;g0x0y0z0; just get c on plot + +G0X-2Y2Z-3; dro show -2 2 3 and NO hairball +; move someplace in G53 sys +;g4p5 + +;//////////////////// Posn 1 + +G10L2P1X1Y0Z-1 ; NEW DATUM + +G0X0Y0z-1 + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +;G10L2P1x0y0z0 ; UNSHIFT +;g4p5 +;g53g0x0y0z0; moves to x0y0z-2 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/b.ngc b/configs/sim/axis/sedm/ngc/b.ngc new file mode 100644 index 00000000000..68456f3aea8 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/b.ngc @@ -0,0 +1,49 @@ +;b.ngc test orbits +;06.12.2025 never got to NR24 +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + ; vvv otbtype is circ (notused tho) no wigl + ;M163 P0 Q0.005; wigl should be smaller than 1st orbRAD + M163 P1 Q0.01; orbtype wiglrad + M160 P34 Q.254; etab filename msrdUNS + M161 P25 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G18 ; NECC TO BE AWARE OFTOOL AXIS +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 + +;//////////////////// Posn 1 + +G10L2P1X5Y-1Z5 ; NEW DATUM + +G0Y-1; move to RPlane 1mm furtgher than the 1mm of datum +G0X0Z0 ; move to ctr + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +; this doesnt get exec'd if QUIT +; BUT +; pgm b3gina w same, so safe + +G10L2P1x0y0z0 ; UNSHIFT + +G0X5Y-2Z5 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/bzn.ngc b/configs/sim/axis/sedm/ngc/bzn.ngc new file mode 100644 index 00000000000..8e7888f9eeb --- /dev/null +++ b/configs/sim/axis/sedm/ngc/bzn.ngc @@ -0,0 +1,68 @@ +;bzn.ngc cut x negative +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P-1.254 Q1.000 ;fd -1.254 RPlane 1.000 + M163 P0 Q0.01; orbtype wiglrad + M160 P34 Q.254; etab filename msrdUNS + M161 P15 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G17 ; NECC TO BE AWARE OFTOOL AXIS +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + + + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 +G0Z3; acts like g53 due to prev cmd Cplane in abso/mc coords +; !!! w cold boot i see x0 y0 z3 + +g4p5 +; then i se -5 -5 3 +M66 E0 L0 ; qbrkr +G10L2P1X5Y5Z0 ; NEW DATUM msrf from work surface ( wk at x0) +g4p5 +; then i see morion ro 0 0 3 + +M66 E0 L0 ; qbrkr +g4p5; should see x-5 y-5 z3 +G0X0Y0 ; move to ctr x0 y0 z3 +M66 E0 L0 ; qbrkr + +; tool goes to z+1 rel +; then to x-1rel for lommg tome 10sec g4p10 + +g0z1; see x0 y0 z1 +g4p10 + +; this is datum.ref pt +; cut should cut 1,000 -(-1.254 ) +; which mioves from +1 to -1 on rel dro (hairball) + +;//////////////////// Cut 1 code +o200 call; motion is rel to datum set prior +;see tool move to z-1 and orb appear +; then too rtn to ctr then up to SPO +; which is x0 y0 z1 +;//////////////////// + +G10L2P1x0y0z0 ; UNSHIFT +; should see dro chg to s5 y5 z??? + +; g53 unnecc G53G0Z3;CPlane abdo/mc coords +G0Z3;CPlane abdo/mc coords +G0X0Y0 +; should see x0 y0 z3 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/bzp.ngc b/configs/sim/axis/sedm/ngc/bzp.ngc new file mode 100644 index 00000000000..a20df547512 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/bzp.ngc @@ -0,0 +1,55 @@ +;bzp.ngc cut z pos +; +#11 = -3.00 ; CP;lane in G53 abso m.c coords +#12 = -1.0 ;RPlane rel to Datum + +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + M162 P1.254 Q-1.000 ;fd -1.254 RPlane 1.000 + M163 P1 Q0.01; orbtype wiglrad + M160 P34 Q.254; etab filename msrdUNS + M161 P15 Q15 + M166 P0 ; no jump + M165 P1 ; pitch + g4p2 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G17 ; NECC TO BE AWARE OFTOOL AXIS +G90 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +g10l2p1x0y0z0; UNSHIFT simplify dro to G53 + +;//////////////////// Posn 1 + +G53G0Z#11; Cplane in abso/mc coords + +G10L2P1X5Y5Z-2 ; NEW DATUM toolaxis at work surface in abso/mc coords + +g0z#12;RPlane rel to Datum +G0X0Y0 ; move to ctr + +; RPlane handl;ed by comp + +;//////////////////// Cut 1 code +o200 call + +;//////////////////// +; this doesnt get exec'd if QUIT +; BUT +; pgm b3gina w same, so safe + +G10L2P1x0y0z0 ; UNSHIFT + +G53G0Z#11 ;CPlane abdo/mc coords +G0X0Y0 + +M02 +% diff --git a/configs/sim/axis/sedm/ngc/circ-allNR/ZnegWigl88888819-all-circ.ngc b/configs/sim/axis/sedm/ngc/circ-allNR/ZnegWigl88888819-all-circ.ngc new file mode 100644 index 00000000000..503221ad527 --- /dev/null +++ b/configs/sim/axis/sedm/ngc/circ-allNR/ZnegWigl88888819-all-circ.ngc @@ -0,0 +1,67 @@ +;ZnwgWigl88888819-all-circ.ngc +;22.02.2026 i just hanad edited 99999919 +; hwci lookls ;like a CU/ST etab +; +o200 sub + M66 E0 L0 ;NEED QBUSTER AND sleep(0.010) in rComp BOTH + M199 + + ; vvv i dont like Rplane being a #var AND psassed to SEDM + ; but BASH cant hanfl r #vcars ( or $vars can work w bash, as you wisj) + M162 P-0.304 Q0.5 ; more tests per hr lookimg fdor bad tri from peri tto SPO + + M163 P1 Q0.05; OrbType SQR, no Wigl for more tests per hr + M160 P19 Q0.500 ; etabnum, MsrdUNS + ;M161 P25 Q10 + M161 P12 Q10 + M00 + M198 +o200 endsub + +;///////////////////// PREAMBLE +G21 ; mm +G90 +G17 +G61 ; exact path mode +G64 P0 ; set blend toleranve to 0 +F5000 ; wishful thinnking + +G10L2P1X0Y0Z0 ; UNSHIFT, cut posns will be G43 msr and rel dro + +G0Z3 +X0Y0 + +#1 = 0 (assign parameter #1 the value of 0) +#2 = 1 (limit) +#3 = +1.000 ; CPlane small for more test s per hr +#4 = +0.5 ; RPlane small for more test s per hr + +o110 while [#1 LT #2] + + g10l2p1 x0 y0 z0; UNSHIFT + G0Z#3; CPlane + + ;//////////////////// Posn 1 + g10l2p1 x0 y0 z0; DATUM for cut #1 (same as UNshift i dopmnt ;like ) + g0x0y0 + z#4;RPlane rel to DATUM + + ;//////////////////// Cut 1 code + o200 call + ;//////////////////// posn 2 + g10l2p1 x0 y0 z0 ;UNSHIFT + G0Z#3;CPlane abso mc coords + ; + #1 = [#1 + 1] +o110 endwhile + +;//////////////////// goto exit posn +G10L2P1X0Y0Z0 + +G0Z3 +X0Y0 + +;////////// end pgm +M197 ( turn off JumpENA if leaft on ) +M02 +% diff --git a/lib/python/SEDMhdrs.py b/lib/python/SEDMhdrs.py new file mode 100644 index 00000000000..0163a77bc93 --- /dev/null +++ b/lib/python/SEDMhdrs.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 +# +# SEDMhdrs.py +# resides in /usr/lib/python3.11 +# or ~/yourRIP/lib/python +# +#06.02.2026 add new JumpLtype(s) +# is infor for mkJumpL where to get dat +# some rqrs build fromBreakPy +# some will use sections of know lumpLine +# +# contains variables commom to other +# can be imported by: +# feom SEDMhdrs import * +# +# 09082025 assing backup limit +""" +#shows a way to get ~header files +# in python3 +# +# 18072025 +# python has no 'header' files +# and has 'import' not @inmcliude" +# so +# i have some 'token's whcih are know to funcs +# and the funs are indiv .py files +# so +# from SEDMhdrs import * +# result: +# YAY all variables ~conmstants are available +# even tab completed +# +# BEWARE all ~consnta can be edited in a single file +# BUT +# if name.value is chgd, +# then chgs are needed +# in all files that used it +# +""" + +# JumpLtype +JumpBoreType = 1 # use part of sexisyting BoreL +#JumpStairsLeadIn dont jump on StairsLeadin too small +JumpStairsType = 2 # create a leg shape beg at BP end at BP +JumpOrbLeadInType = 3 #use section of existing Legshape +# in Heidenhain, i didnt jump if too far away... how did i tell? +JumpOrbPathType = 4 #create dwtour wqith legshape +#JumpOrbPathDetour = 5 #NO dont jump , thertes only 1 posn where there may be stock, else its just backaway to clear low V +NoJump = 10 # avoid 0 for unitialized cars + + +# beg--------- CINSTANTS -------- +FWD = +1 +# vvv 'HOLD' ??? what name to use.. pick one damnit +HOLD = 0 +BWD = -1 +# 18.11.2025 vvv new when already doFail, this is rtnd +DEAD = 666 + +ContBWDmax = 20 # maxximum continouous low voltage sample, causes ABORT + + +LEADIN = 1 +PERIPHERY = 2 +LEADOUT = 3 + +ESCAPE_END_AT_MIN = 1 # token means +ESCAPE_END_AT_MAX = 2 # token meaning +ESCAPE_DO_MORE_FWD = 3 # token meaning last move was FWD ( away from periphery ) and not near ends of escapepath, caller should process more points +ESCAPE_DO_MORE_WAIT = 4 # token meaning last move was WAIT ( no motion ) and not near ends of escapepath, caller should process more points +ESCAPE_DO_MORE_BWD = 5 # token meaning last move was BWD ( towards periphery ) and not near ends of escapepath, caller should process more points + +NO_PLACE_TO_GO = 6 # at orb vctr and gv is ko FIX w x retreatr code TRBD + +BACK_ON_PERI_OK =7 # escLine finished ok + +BACK_AFTER_PERI_AND_OK = 8# escLine finished ok +# new 09042025 +BACK_AFTER_BORE_AND_OK = 9# escLine finished ok + +# neww 25072025 +MISMATH_DISPT_RUFPT = 10 +# use BO_PLACE_TO_GO FAIL_ON_PERI = 21 +OK_START_LEADOUT = 22 + +tooManyContinuousBWDs = 11 +EscOkBackOnPath = 12 +EscapeFailNeedAbort = 13 + +PathFinishedOK = 14 + +# 17.08.2025 GVMIN GVMAX set by NOT hdrs.py +#03072025 GVVMIN GVMAX now globals 'constyants" +#02.09.2025 i want to set GVMAX and GV>",ETABPATH) +# ^^^^^^^^ +# NameError: name 'ETABPATH' is not defined + +ETABPATH = "." + +# G20 is 0(INCH) G21 is 1(MM) +INCHUNIT = 0 +MMUNIT = 1 + +NEG = -1 +POS = +1 + +CIRCLE = 0 +SQUARE = 1 + +# WaitFullDepthMsrdUNS = 1 +WaitFullDepthRplaneDist = 1 +WaitOrbitTypeWiglRADf = 2 + +# WaitEttabNumber = 3 +WaitEttabNumberMsrdUNS = 3 + +WaitBegEndNR = 4 +WaitPitch = 5 +WaitJumpwANTED = 6 +WaitGenReady = 7 +WaitM199 = 8 + +WaitPlunge = 11 +WaitDoPlungeOrbit = 12 + +WaitAllNRsDone = 13 +WaitThisOrbitDone = 14 +WaitNewNR = 15 +CleanUpPutAway = 16 +# 12.11.2025 chgd name WaitRestart = 17 + +WaitNewCut = 20 diff --git a/src/Makefile b/src/Makefile index 1f46e9e8659..60d91162a3a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -784,6 +784,7 @@ install-python: install-dirs $(EXE) ../bin/hal_input $(DESTDIR)$(bindir) $(EXE) ../bin/hal_bridge $(DESTDIR)$(bindir) $(EXE) ../bin/mitsub_vfd $(DESTDIR)$(bindir) + $(EXE) ../bin/SEDM $(DESTDIR)$(bindir) $(EXE) ../bin/mqtt-publisher $(DESTDIR)$(bindir) $(EXE) ../bin/z_level_compensation $(DESTDIR)$(bindir) $(EXE) ../bin/pmx485 $(DESTDIR)$(bindir) diff --git a/src/hal/user_comps/SEDM.py b/src/hal/user_comps/SEDM.py new file mode 100644 index 00000000000..ca5bb014c9b --- /dev/null +++ b/src/hal/user_comps/SEDM.py @@ -0,0 +1,2498 @@ +#!/usr/bin/python3.11 +#07.03.2026 cleaned ~/Doenloads/SEDM of crudt +# chgd .ini to use ~/Download/SEDM/Mcodes for mcodes +# TODO backup +# docstrings +# get new clone of linuxcnc +# add my SEDM to that +# test +# if ok, notify devs of intent +# commit chgs.pulll rtequest ( jibberish GIT speak ) +# see gut howto from google +# +# TODO 26.02.2026 +# DONE BAVKUP +# DONE clean up dbug prints +# edit all test pgms ro use new etab file fdormat +# auto edit rest of etabs to new format +# +# 25.02.2026 now using new etab format +# work znegstraight zneg1orn usimg 19/ENC yable +# +# FIXED in SEDM.xml +# SPA can look like int, not so wide +# +# 22.02.2026 work onn etab ccnvrsn +""" futue: meaninmhful 1st line inm Etabs +# Note: 1st line of etb can have info +# cmpl GR+ ST-10mmsq +""" + +""" future: make fname dreom dfialogs +# The old naming 999999nn is not useful +# it was a workaround for file naming whencnc has no alpha keys +# and hal cant handle string file name +# The fdile name might be bvuilt from fialogs +# lkike Tool mat? pick one GR CU WoCo GrCu Brass, Alum Steel +# Work Matl ? St CU Alu +# Fp area ? pick from list +# Form pick one rin subgate pick a numebr fort,m list// +# these anf othe q's woul generate afile name +# (hopefully in library ) +""" + +# +""" +#22.02.2026 many days on hdwr +# now back to cnvrt etabs to new dornat +# 1st new qwaS 99999919->88888819 +# i SEE THE ETAB HAS LAST FEW ELEMENTYS UNUSED vdi ve vw +# I sont have good values dore tehm\# +# so ??? keep -'s in etab or remove 'slots' +# I sup[pose fdor lonmg term. +# the valyues sjould be left and populated later +# +""" + +# 15.02.2026 cleaned ngc file of unused m codes + +# 15.02.2026 pitch removed +# M197 fixed, had bash -eq when it should be == ( dore string) +# +# 15.02.2026 IF jump was off +# 1st run of 1EWiglZneg has no jump, screws down ok +# BUT if vhkBtn JumpENA is left OFF +# and a 3nd runs is started +# then the checkntn get marked amd Jump is ON +# The chkbtn is set just before end pof 1st pgm run +# +#15.02.2026 1WiglZneg womt run 2nds time if jump not on +# +# 13.02.2026 TODO meaninggull triple quotw indos + +# +import linuxcnc +import hal +import time +import sys, subprocess +import os.path +from random import uniform +# SEDMhdrs.py must be in /usr/lib/python3.11 +# or ~/yourRIP/lib/python +from SEDMhdrs import * + +def mkStairsJumpLegL( bP ): + """ + purpose: + Creates Jaeay and Jback lines for jump ( peck EDM)\ + when cutting a bore wiyh WoglRAD >0AND JumpENA checked. + + usage: pass a Tuple descibing breakPt + measured drom Start Point Origin (SPO) + + description: + The jump path needs to be calculated + on the fly. Powe is off during jump, + so delays are not dangerous + ( and Python is fast) + The Jump 'master' path is a line from + breakPt to anklePt to SPO. + The 'master' line is like a leg, + it has a toe, a foot line , + an ankle, a shin line and a hip (SPO) + The masterr path is sliced into 2 mini-paths. + 1) Jaway: from btrakPt + (tool position on periphery), + to the bore centerline ( anklePt) + tp Start Point Origin (SPO) + Slicing the 'amster' path + at the AJD distance, + craetes a 'hiPt' ( top of jump) + 2) Jback: from hiPt to anklePt + back to breakPt ( aka 'toe') + + The length of the jump is initialized + to the Etabl's AJD for the prsent + power stage (ThisNR) + AJD can be adjusted during cut. + Jump cycles alwys return to breakPt. + Jump cycle move without respect to + gap sensing. + A small AJD may not travel to anklePt. + An early jump may be clipped to SPO + or even onto the dootL. + """ + SPO = (0,0,0) #StartPtOffset nit Posn + # + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + # get ctrLevel, above breakPt by ThisRA + ctrLevel = bP[SEDM.ToolAxis] - (WiglRADi * SEDM.CutDir) + # get anklePt + if SEDM.ToolAxis == 2: # Z + anklePt = ( ( 0,0,ctrLevel ) ) + if SEDM.ToolAxis == 1: # Y + anklePt = ( ( 0, ctrLevel, 0 ) ) + if SEDM.ToolAxis == 0: # X 13.02.2026 damn had = 2 and spent a day + anklePt = ( ( ctrLevel, 0, 0 ) ) + footL = L3D(bP, anklePt) + lFL = len(footL)-1 + ankleNdx = footL.index(anklePt) + shinL = L3D(anklePt,SPO) + footl = footL[:ankleNdx] # slice off anklPt from footL, + legL = footL + shinL + return legL,ankleNdx +# +def mkJupLJdnL( L, bPndx): + if SEDM.JumpLtype == JumpBoreType: + AJDi = int(SEDM.AJD *1000) + # + bPtupl = L[bPndx] + hiPtNdx = bPndx - AJDi + if hiPtNdx < 0: # clip to 1st eleme ndx + hiPtNdx = 0 + hiPtTupl = L[hiPtNdx] + # + Jback = L # use not reveresed XDList + FirstDnNdx = hiPtNdx +1 # for Jdn + # + Jback = Jback[FirstDnNdx : bPndx+1] #+1 elese clipped + # + Jaway = [] + for d in L: + Jaway.append(d) + Jaway.reverse()# list goes UP from [0] to [last] + # + firstUpNdx = Jaway.index(bPtupl) + 1 + hiPtUpNdx = Jaway.index(hiPtTupl) + # + Jaway = Jaway[firstUpNdx : hiPtUpNdx + 1] # +1 else last missed + # + + return Jaway, Jback + # + if SEDM.JumpLtype == JumpStairsType: + # 0.050 *1000 = 50 + AJDi = int(SEDM.AJD * 1000) + + bPtupl = L[bPndx] + JL, ankleNdx = mkStairsJumpLegL( bPtupl ) # ignore ankleNdx + # + # now make HupL and JdnL fdrom JL + # + lJL = len(JL) - 1 + if AJDi > lJL :# ex if 50 > len(JL)-1 + AJDi = lJL# dore stairs, 1st jump >>> + hiPtNdx = AJDi + hiPtTupl = JL[hiPtNdx]# will use later to find inex in rev'd list + # + Jaway = JL[:hiPtNdx] + # + Jback = JL # usecopy of orig + Jback.reverse() # this list is from hip [0[ to toe [last] + hiPtNdx = JL.index(hiPtTupl) + Jback = Jback[hiPtNdx:] + + return Jaway, Jback + # + if SEDM.JumpLtype == JumpOrbLeadInType: + #13.02.2026 TODO reduce same as BoreL + + AJDi = int(SEDM.AJD *1000) + # + bPtupl = L[bPndx] + hiPtNdx = bPndx - AJDi + if hiPtNdx < 0: # clip to 1st eleme ndx + hiPtNdx = 0 + hiPtTupl = L[hiPtNdx] + # + Jback = L # use not reveresed XDList + FirstDnNdx = hiPtNdx +1 # for Jdn + # + Jback = Jback[FirstDnNdx : bPndx+1] #+1 elese clipped + # + Jaway = [] + for d in L: + Jaway.append(d) + Jaway.reverse()# list goes UP from [0] to [last] + # + firstUpNdx = Jaway.index(bPtupl) + 1 + hiPtUpNdx = Jaway.index(hiPtTupl) + # + Jaway = Jaway[firstUpNdx : hiPtUpNdx + 1] # +1 else last missed + + return Jaway, Jback + # + if SEDM.JumpLtype == JumpOrbPathType: + # + AJDi = int(SEDM.AJD *1000) + bPtupl = L[bPndx] + JL, ankleNdx = mkDetourLegL( L[bPndx] ) # ignore ankleNdx + # + lJL = len(JL) -1 + if AJDi > lJL : + AJDi = lJL # 13.02.2026 damnit had AJD>>I<< + hiPtNdx = AJDi + + hiPtTupl = JL[hiPtNdx]# will use later to find inex in rev'd list + # + Jaway = JL[:hiPtNdx] + # + Jback = JL # usecopy of orig + Jback.reverse() # this list is from hip [0[ to toe [last] + # vvv hiPtNdx chgs becux liest is reveresed now + hiPtNdx = JL.index(hiPtTupl) + Jback = Jback[hiPtNdx:] + return Jaway, Jback + # +# +# vvv rqrs JumpL and doMove() +def doJump(JupL,JdnL): + """ + moves tool away from stock + for the distance of AJD + then returns + """ + # + for p in JupL: #jump up + doMove(p) + # + for p in JdnL: + doMove(p) +# +#05.02.2026 TODO small enuf to so inline +def mkJT(): # sets SEDM.endJT + """ + creates float + repressenting when next Jump + should ha[[en + """ + Tnow = time.time() + # vvv these are all floats + SEDM.endJT = Tnow + SEDM.ET +# +#05.02.2026 TODO small enuf to so inline +def chkJT(): # run this every loop while cuttinmg + """ + for Jump cycles: + reports if Cut Time is over + and it is time to Jump + """ + Tnow = time.time() + timesUp = (Tnow >= SEDM.endJT) + return timesUp +# +def IsFreebie(posn): # posn is an x y z tuplke + """ + IsFreebie decide if teh gap value cam be ignored + esp at beginning of cuty, near SPO. + Freebies are needed for simulation. + When a real EDM cut runs, + there initially is some clearance between tool and work. + So a real Gap value would be high for that + distance. + In simulation, the gap is a random + value and _might_ be low. + This low woul;d cause teh simulation + to retreat, and that is a problem + brcause there is no place to retreat. + So, do simulation, I added a cube shaped zone + at th Start Point. + The zone is 2*Freebies in size, + and any motion in that zone ihnores + the gap value PV. + Freebies are set in NOTheaders.py + """ + + f = SEDM.freebies # avoid looking it up 3x + if abs(posn[0]) > f: + return False + elif abs(posn[1])> f: + return False + elif abs(posn[2]) > f: + return False + else: + return True +# +# 14.02.2026 TODO likely there are unused/refundamt pis +# clean them out +def mkSEDMcomp(): + """ + creates the LinuxCNC hal component + for orbiting sink EDM. + """ + h = hal.component("SEDM") + # + h.newpin("EDMgrade", hal.HAL_S32, hal.HAL_OUT) + h.newpin("EDpeek", hal.HAL_BIT, hal.HAL_IN) + + h.newpin("EDreturn", hal.HAL_BIT, hal.HAL_IN) + h.newpin("EDquit", hal.HAL_BIT, hal.HAL_IN) + h.newpin("QuitHit", hal.HAL_BIT, hal.HAL_OUT) + #08.12.2025 new + h.newpin("BwdMaxHit", hal.HAL_BIT, hal.HAL_OUT) + + # 29.11.2025 3 new pins to force FWD HOLD ForceBWD + h.newpin("ForceFWD", hal.HAL_BIT, hal.HAL_IN) + h.newpin("ForceHOLD", hal.HAL_BIT, hal.HAL_IN) + h.newpin("ForceBWD", hal.HAL_BIT, hal.HAL_IN) + + h.newpin("XOffsetCmd", hal.HAL_S32, hal.HAL_OUT) + h.newpin("YOffsetCmd", hal.HAL_S32, hal.HAL_OUT) + h.newpin("ZOffsetCmd", hal.HAL_S32, hal.HAL_OUT) + # + h.newpin("isEna", hal.HAL_BIT, hal.HAL_IN) + # + h.newpin("xyzSCALEfIN", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("xyzSCALEfOUT", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("mlt", hal.HAL_FLOAT, hal.HAL_OUT) + # + h.newpin("xFBf", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("yFBf", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("zFBf", hal.HAL_FLOAT, hal.HAL_IN) + # + h.newpin("xsp", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("ysp", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("zsp", hal.HAL_FLOAT, hal.HAL_OUT) + # + h.newpin("ctr", hal.HAL_U32, hal.HAL_OUT) + # + h.newpin("inpo", hal.HAL_BIT, hal.HAL_IN) + # + h.newpin("XoffsetNow", hal.HAL_S32, hal.HAL_IN) + h.newpin("YoffsetNow", hal.HAL_S32, hal.HAL_IN) + h.newpin("ZoffsetNow", hal.HAL_S32, hal.HAL_IN) + # + h.newpin("state", hal.HAL_U32, hal.HAL_OUT) + # + h.newpin("PgmStop", hal.HAL_BIT, hal.HAL_OUT) + # + h.newpin("disableOsc", hal.HAL_BIT, hal.HAL_OUT) + + h.newpin("NR", hal.HAL_U32, hal.HAL_OUT) + # the etab file is a flat database with numbered lines of + # data NR is the line number key into a dict + h.newpin("IP", hal.HAL_U32, hal.HAL_OUT) + h.newpin("P", hal.HAL_U32, hal.HAL_OUT) + h.newpin("HV", hal.HAL_U32, hal.HAL_OUT) + + h.newpin("GVHI", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("GVLO", hal.HAL_FLOAT, hal.HAL_OUT) + + h.newpin("TON", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("TOF", hal.HAL_FLOAT, hal.HAL_OUT) + + h.newpin("ISO", hal.HAL_U32, hal.HAL_OUT) + # if True, + # ON time is dev'd AFTER ionization ( makes uniform craters) + h.newpin("AJD", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("ET", hal.HAL_FLOAT, hal.HAL_OUT) + + #new 01.02.2026 the sys time when next jump occurs + h.newpin("endJT", hal.HAL_FLOAT, hal.HAL_OUT) + # 06.02.2026 new pin JumpLtype + # defines in SEDMhdrs.py + h.newpin("JumpLtype", hal.HAL_U32, hal.HAL_IN) + # vvv new 01.02.2026, cnx to gui checkbutton + h.newpin("JumpENA", hal.HAL_BIT, hal.HAL_IN) + # Jump rqrs ENA and ON + h.newpin("JumpOn", hal.HAL_BIT, hal.HAL_OUT) + + h.newpin("ChgJumpENA", hal.HAL_BIT, hal.HAL_OUT) + + h.newpin("BWDmax", hal.HAL_U32, hal.HAL_OUT) + # max continuous LoVoltage samples, will stop vut + #15.02.2026 not used h.newpin("PulseCount", hal.HAL_U32, hal.HAL_IN)# + h.newpin("freebies", hal.HAL_U32, hal.HAL_IN)# + # + h.newpin("RADf", hal.HAL_FLOAT, hal.HAL_OUT) + # orbital radius + h.newpin("RADi", hal.HAL_FLOAT, hal.HAL_OUT) + # rad as ounts + + #vvv nerw 28.11.2025 alc 1x and save it for later + h.newpin("XtraRADf", hal.HAL_FLOAT, hal.HAL_IN)# + + #vvv err when U32 and initd/reinitydx to -1 + h.newpin("Pitch", hal.HAL_S32, hal.HAL_IN) + # defines a ation of pattern elemnent to toolaxis steps. + # like rise & run on stairs + + # wthere AJD and ET are used, can have overriding switch + h.newpin("SPAf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("VDIf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("VEf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("VWf", hal.HAL_FLOAT, hal.HAL_OUT) + # + # 14.11.2025 new vvv used in egtEvalPV() + h.newpin("BWDcount", hal.HAL_U32, hal.HAL_OUT) + # + h.newpin("EtabNum", hal.HAL_U32, hal.HAL_IN)# filename , is a number as in old Heidnhain days + h.newpin("ThisNR", hal.HAL_S32, hal.HAL_OUT) + h.newpin("BegNR", hal.HAL_U32, hal.HAL_IN) + h.newpin("EndNR", hal.HAL_U32, hal.HAL_IN ) + h.newpin("NewNR", hal.HAL_S32, hal.HAL_IN) + #Edm3 request next RADf, implies dec-inng NR + # + h.newpin("UNSf", hal.HAL_FLOAT, hal.HAL_OUT) + h.newpin("ThisRADf", hal.HAL_FLOAT, hal.HAL_OUT) + # + h.newpin("GenReady", hal.HAL_S32, hal.HAL_IN) # was it but code cant set that DOUT) + # + h.newpin("restart", hal.HAL_BIT, hal.HAL_IN) + # + h.newpin("FullDEPTHf", hal.HAL_FLOAT, hal.HAL_IN) + h.newpin("RufPtDEPTHf", hal.HAL_FLOAT, hal.HAL_OUT) + # in EDM, the tool never goes to the blueprint depth, + # because it has 'overburn', + # so the FullDepth is reduced to "RoughingPoint'. + # All orbits are ecursions from this point + # + h.newpin("WiglRADf", hal.HAL_FLOAT, hal.HAL_IN) + # roughing 'wiggle' keeps sides of tool cleaner, + # should be just a few microns + h.newpin("MsrdUNSf", hal.HAL_FLOAT, hal.HAL_IN) + # user must make tool smaller than blueprint by UNderSize, + # its ok to make smaller, but latger is not allowed + h.newpin("OrbitType", hal.HAL_U32, hal.HAL_IN) + # only CIRCL and DQUARE for now, + # Later Spherical, Vextor, Undercut, SubGate, CashrwGate, + # Ribulator ) make rib tool a lot narrower + # tna blueprint, buy hop left and right to + # get correct wifth + h.newpin("PlungeOrbitWanted", hal.HAL_S32, hal.HAL_IN) + # if BegNR !1= 25, then user can get 1st cut to orbit. + # User may have already cut the net shape. + + h.newpin("ToolAxis", hal.HAL_U32, hal.HAL_OUT) + # orbits occur about an axis, + # the orbit can be -X or +x, also +x -X +Y -Y + # (Linuxcnc does not have tiltable planes, + # so use sine vises etc to orient work ) + h.newpin("CutDir", hal.HAL_S32, hal.HAL_OUT) + # cuts can be POS or NEG along ToolAxis + h.newpin("PgmIsMM", hal.HAL_BIT, hal.HAL_IN) + #15.02.2026 not used h.newpin("RndPlaces", hal.HAL_U32, hal.HAL_IN) + # + #15.02.2026 not used h.newpin("EOin" ,hal.HAL_BIT,hal.HAL_IN) + #15.02.2026 not used h.newpin("EOout",hal.HAL_BIT,hal.HAL_OUT) + # + #22.11.2025 add pin and esit M162 + h.newpin("RPlaneDist", hal.HAL_FLOAT,hal.HAL_IN) + # + h.newpin("PauseCtl", hal.HAL_BIT,hal.HAL_OUT) + h.newpin("abort", hal.HAL_BIT,hal.HAL_IN) + + h.ready() + return h +# +def getPgmUnits(): + """ + query system for + unit of measure. MM or INCH, + set pins dor SmallestCmdZise + to .0001 (inch) or .001 (mm( + """ + global SEDM # some SEDM pins gets chgd + # + s = linuxcnc.stat() + s.poll() + # + tmp = s.program_units # 1 2 or 3 + if tmp == 3: + # 3 is CM + msg = "Centimeter units not supported" + c = linuxcnc.command() + c.error_msg(msg) + raise SystemExit + # tmp will be 0 1 or 2 right now + tmp = tmp - 1 # now 0 means INCH and 1 means MM + if tmp == 0:# if INCH + SEDM.PgmIsMM = False + SEDM.xyzSCALEfIN = 0.0001 + SEDM.xyzSCALEfOUT = SEDM.xyzSCALEfIN + else:# else tmp == 1 meaning METRIC + SEDM.PgmIsMM = True + SEDM.xyzSCALEfIN = 0.001 + SEDM.xyzSCALEfOUT = SEDM.xyzSCALEfIN +# +def trap(): + """ + utility to stop comp proceeding + """ + a = 1 + while a == 1: + a = 1 +# +def getToolAxis():# s now global + """ + All orbiting is arouns an axis. + Gets ToolAxis accorng to PLANE + G17 = 2 (Z toolAxis) + G18 = 1 (Y toolAxis) + G19 = 0 (X toolAxis) + """ + global SEDM + # + s = linuxcnc.stat() + s.poll() + + # get G17 G18 G19 info + t= int(s.gcodes[3]) + if t == 190: + SEDM.ToolAxis = 0 # for X is toolAxis + elif t == 180: + SEDM.ToolAxis = 1 # for Y is ToolAxis + elif t == 170: + SEDM.ToolAxis = 2 # for Z is ToolAxis + else: + #TODO 16.11.2025 allow any of xyz abv uvw + print(t," Err invalid Plane, shouyld be 190 180 170") + raise SystemExit +# +def L3D(begTupl,endTupl): + """ + L3D returns a list of tuples + from begTupl to endTupl. + Uses Brteasenham's line alg, #D version + """ + # + ListOfPoints = [] #empty lcist for positions on line + # + x1 = begTupl[0] + y1 = begTupl[1] + z1 = begTupl[2] + # stoe initial position into list + ListOfPoints.append( ( x1,y1,z1 ) ) + + x2 = endTupl[0] + y2 = endTupl[1] + z2 = endTupl[2] + + # find vvector component lengths + # the longest will always get inc'd when creating list + dx = abs(x2 - x1) + dy = abs(y2 - y1) + dz = abs(z2 - z1) + # + # get direction of vvecotor components + # does X go Right or Left? + if (x2 > x1): + xs = 1 + else: + xs = -1 + # does Y go Fwd or Bwd? + if (y2 > y1): + ys = 1 + else: + ys = -1 + # does Z go Upr oir Down? + if (z2 > z1): + zs = 1 + else: + zs = -1 + # calc each point/tuple along line + # case: Driving axis is X axis" + if (dx >= dy and dx >= dz): + p1 = 2 * dy - dx + p2 = 2 * dz - dx + while (x1 != x2): + x1 += xs + if (p1 >= 0): + y1 += ys + p1 -= 2 * dx + if (p2 >= 0): + z1 += zs + p2 -= 2 * dx + p1 += 2 * dy + p2 += 2 * dz + ListOfPoints.append( ( x1, y1, z1) ) + # case: Driving axis is Y axis + elif (dy >= dx and dy >= dz): + p1 = 2 * dx - dy + p2 = 2 * dz - dy + while (y1 != y2): + y1 += ys + if (p1 >= 0): + x1 += xs + p1 -= 2 * dy + if (p2 >= 0): + z1 += zs + p2 -= 2 * dy + p1 += 2 * dx + p2 += 2 * dz + ListOfPoints.append( ( x1, y1, z1) ) + # case: Driving axis is Z axis + else: + p1 = 2 * dy - dz + p2 = 2 * dx - dz + while (z1 != z2): + z1 += zs + if (p1 >= 0): + y1 += ys + p1 -= 2 * dz + if (p2 >= 0): + x1 += xs + p2 -= 2 * dz + p1 += 2 * dy + p2 += 2 * dx + ListOfPoints.append( ( x1, y1, z1) ) + # + return ListOfPoints +# +# 14.02.2026 TODO +# do not scatter initializations thru code +# slammed a few lines down vvv +# RufPtTupl = None # make it globally readable +AllLines=[] +fqfn="" # Fully Qualified File Name ibcludes absolute path +EtabDict ={}# each EDM gnerator settling (Stage) +# is accessed as EtaabDict[Nr] +# vvv dummy value, ui just so it is global +RufPtTupl = ( (-100000,-100000,-100000) ) + +def getStartPtF(): + """ + All cuts measure from StartPointOrigin (DPO) + All cuts begin at Rplane, + 'above' the SPO, outside of stock. + + only callewd 1x per cut + + 14.02.2026 TODO years agao early in this code + i had issues with vakues not being rady + and adopted using short sleep's to ensure values were ok + TODO old voodoo should be understood and sleeps removed + """ + # wait for position to be true + time.sleep(0.1)# was ng at 0.01 + # collect posn at rest + SEDM.xsp = SEDM.xFBf # x posn feedback NOE + SEDM.ysp = SEDM.yFBf + SEDM.zsp = SEDM.zFBf +# +def setGen(NRval): + """ + Sets parametyers in the EDM POWER SUPPLY + ( aka Generator or Spark Generator) + + This func can be cvalled 2 ways + 1) with the key to a dictionary or parameters + 2) with key '0' meaning clear + the generator. + + The dunction relies on the data order in the dile . + + The SEDM system is an automatically + sequencing system. + When a single tool 'roughs' the net shape, + The system automtically decreaes the power + and rfinne the foem. + There are many 'finitions, + carried out automatically. + + The Generator will get + all data neccesary to cut. + As of 14.02.2026, the Generaor + is only a PyVCP xml GUI + That Gui could become the user I/F to the real gnenratyor + + There are a _lot_ of pins to a generator + 14.02.2026 TODO + reviewe list + remove unneede code + + The data for generator is held + in file called 'ETables'. + Each Etable is a list power stages + from more powqerdul to less powewrful. + Eaxh stage has a key 'NR' + each key can retrieve a + set of data for the generator + NRs run from 25 to 1. + Etables always begin at NR 25. + So the NR decreases as the cut progresses. + """ + global EtaabDict + # + if NRval != 0: + """ + 0 is for a breand new Etab + or before abort/resime, + no stages used yet + """ + NRstr = str(NRval)#key to dict is of form 'keyname' ( note ticks~) + # + SEDM.NR = NRval # local storage on SEDM pin + SEDM.IP = EtabDict[NRstr][0] #'peak' current + SEDM.P = EtabDict[NRstr][1] #Pollarity + SEDM.HV = EtabDict[NRstr][2] #ignitionVoltage + """ + a milliamp supply used to initialize the spark, + a higher HV makes it easier for system to 'see' + on smooth surfaces, where the highest point is + harder to distiguish + """ + # + # TODO vvv for real use + #SEDM.GVHI = EtabDict[NRstr][3] + #SEDM.GVLO = EtabDict[NRstr][4] + # TODO vvv for testing + SEDM.GVHI = 50#35#40# 45# 2 #45 # + SEDM.GVLO = 40#28#30# 35# 1 #40 # + # + SEDM.TON = EtabDict[NRstr][5] + SEDM.TOF = EtabDict[NRstr][6] + SEDM.ISO = EtabDict[NRstr][7] #in IsoPulse mode, + # + SEDM.AJD = EtabDict[NRstr][8] + # 'peck' cycle jump distance, decimal mm + SEDM.ET = EtabDict[NRstr][9] + # 'peck' cycle cut duration, decimal Secs + # + SEDM.BWDmax = EtabDict[NRstr][10] + # max number of contiguous low voltage samples, + # eceeding will cause abort and return to start point + # + SEDM.RADf = EtabDict[NRstr][11] #radius per side + SEDM.SPAf = EtabDict[NRstr][12] #spherical step angle + # for sphertical orbit + # a hemisphere is a stack of circles + # these data are placeholders, neyonf my ability + # to measueree and erecord + SEDM.VEf = EtabDict[NRstr][13] #electrode wear + SEDM.VWf = EtabDict[NRstr][14] #MMR metal removal rate + SEDM.VDIf = EtabDict[NRstr][15] #surface roughness + # + SEDM.ThisNR = NRval # non zero + # + else: # NRval == 0 means clear the gennrator + NRstr = "0" #str(NRval) + # + SEDM.BWDcount = 0 + SEDM.CutDir = 0 + SEDM.EtabNum = 0 + SEDM.BegNR = 0 + SEDM.EndNR = 0 + # + SEDM.FullDEPTHf = 0 + SEDM.MsrdUNSf = 0 + SEDM.RADf = 0 + SEDM.RufPtDEPTHf = 0 + # + SEDM.state = 0 + # + SEDM.xsp = 0 + SEDM.ysp = 0 + SEDM.zsp = 0 + # + #data specific to Etaab and TechGui + SEDM.NR = 0 + SEDM.IP = 0 + SEDM.HV = 0 + SEDM.P = 0 + SEDM.ISO = 0 + SEDM.BWDmax = 0 + SEDM.AJD = 0 + SEDM.ET = 0 + # + #31.01.2026 TON TOF are integer uSec + SEDM.TON = 0 + SEDM.TOF = 0 + # + SEDM.GVHI = 0 + SEDM.GVLO = 0 + # + SEDM.SPAf = 0 + # + SEDM.VEf = 0 + SEDM.VWf = 0 + SEDM.VDIf = 0 + # + # TODO vvv + # vvv **** spcl values NOT set to 0 + #25.11.2025 make sure user answered Pitch w value >=0 + SEDM.Pitch = -1 + # + SEDM.ThisNR = -1 # after clean up + # + SEDM.inpo = False + SEDM.isEna = False +# +def parseEtab(fqfn): + """ + builds a dict from an ENC file + key = NR, + value = list of paarms + Eaxh NR is a set of cuttimg paramers. + The Largets NR ( 25) is where most cuts begin + It will havea large overburn and no orbit. + The subbsequent NRs have decreasing power + and increasing orbital 'radius'. + The enrty for 'radius' on NR 25 is actually + UNS 'undersize'. + The user enters the "measured underze'. + This must be less than or equal to the + Etable's undersize. The difference is + accomodated by the code. The Correct + cavity size and dpeth are maintained. + The energy resulting from the NR's parameters, + will have a 'reach' propotional to the product + of OnTime and Current and OpenVoltage + andthe Dielectric strength of the medium. + ( in general ). + As the joules decrease, the tool needs to + get closer to the stock to get the spark + phenomna to occur. + + That translation is the orbiting motion. + The tool never gets to the 'print' depth. + The tool position is restrined by the overburn value. + The overburn values are derived from many published + data. (sort of LLM for EDM) + These data were 'curve fit' to get generic formulae + independant of commercial manufactures. + """ + + global AllLines # + global EtabDict # + # + # open raed and close etab fille + fhndl=open(fqfn, 'r') # + if os.path.isfile(fqfn) != True: # + print("ffile nopt exist ", fqfn) # + raise SystemExit # + # + AllLines = fhndl.readlines() # + # TODO need err hndlimg if file not found and file + # empty or file ng + fhndl.close() # + # + # strip newlines + for i in range(0,len(AllLines)-1): # + AllLines[i]=AllLines[i].rstrip() # + # + # begin build dict key is NR val is a list (of params) + EtabDict ={} # # each NR or Staage is accessed as EtaabDict[Nr] + # + # get rid of 1st 2 lines, they just make file man readable + AllLines.pop(0) # # 1st line has etab fname old style 999999nn.E INCJ or MM and sometomes useless P + AllLines.pop(0) # # get wid of what was 2md line read + # + ####################### + # clean up list of lines + # remove trailg whitespace + ll= len(AllLines)-1 # + for i in range(0,ll): # + AllLines[i]=AllLines[i].rstrip() # + # remove empty lines + for i in range(0,ll): # + if AllLines[i]=="": # + AllLines.pop(i) # + else: # + # remove lines begommomg woth space char + if AllLines[i][0]==" ": # + AllLines.pop(i) # + else: # + # remove line brgiining w neewline + if AllLines[i][0]=='\n': # + AllLines.pop(i) # + else: + # remove lines == '[END]' + if AllLines[i]=="[END]": + AllLines.pop(i) + # + # ========CNVRT Strgs to Floats and Ints ============== + numLines=0 # + # ########## + # # BUILD DICT + # ########## + nl= len(AllLines)-1 # + + #process all remainiung lines + for i in range(0,nl): # + # break long string into list of substrings + lineParts=AllLines[i].split() # + + # linnePartrs[0] is IP + nP = len(lineParts)-1 # + # + tupl=() # + # TODO +1 seems wrong, but it 'worked' + for lPartNdx in range(1, nP+1): # # skip 0th thats Nr the key lpl already is leen *vlah) -1 + + ftmp=float(lineParts[lPartNdx]) # + + + + + """# + #/////// for new + #25.02.2026 FOR NEW STYLE ETABS,,, + # OLDNOTE skip #7 AJD 8 ET 15 RAD 16 SPA + # NEWNOTE 24.02.2026 does lineParts start w NR or IP, + # thats would chg all ndxsd + # NEW NOTE 24.02.2026 need to chg code for 3 indices + # NEW NOTE 24.02.2026 new schem 8 AJD 9 ET 11 RAD 12 SPA + # NEW NOTE 24.02.2026 those are the only floats in + # new xsheme + # 25.02.2026 ndxs 7 8 15 16 + # are for lists beginning at IP + # ? in 19/WBC got 15 16 look ok? + # RESULT [0] is val of IP (noy NR) + # i say 8 AJD 9 ET 11 RAD 12 SPA are floats in the dile (* mno cnvrsb needed) + if ( (lPartNdx != 8) and ( lPartNdx != 9) and ( lPartNdx != 11) and (lPartNdx != 12) ): + tupl=tupl+( int(ftmp),) # weird comma to make it + # a tuple so iy can be concvatenated + # + else: + tupl=tupl+( ftmp, ) + # ----- + ////// for new + #"""# + + + + + #"""# + #\\\\\\ for old + if ( (lPartNdx != 9) and ( lPartNdx != 10) and ( lPartNdx != 12) and (lPartNdx != 13) ): + tupl=tupl+( int(ftmp),) # weird comma to make it a tuple so iy can be concvatenated + else: + tupl=tupl+( ftmp, ) + + #/// end old + #"""# + + + + + # + if tupl != (): + numLines+=1 + EtabDict[ lineParts[0] ] = tupl[0:] # 25.02.2026 isnt [9:] same as []?? + # looked ok rint(9741,EtabDict[ lineParts[0] ] ) + """ + print() + print(989,EtabDict[lineParts[0]][9]) + print(989,EtabDict[lineParts[0]][10]) + print(989,EtabDict[lineParts[0]][12]) + print(989,EtabDict[lineParts[0]][13]) + print() + # NR 25 got + #3.0 10 0.0 0 + #NR 24 got + #3.0 10 45.0 0 + #NR 12 got + #3.0 10 3.0 0 + #which are + # ET CB SPA VDI + """ + + """ + # I want 8 9 11 12 + print() + print(989,EtabDict[lineParts[0]][8]) + #print(989,lineParts) + # got 989 ['25', '91', '0', '0', '40', '30', '440', '212', '0', '2.032', '3.0', '10', '0.635', '0.0', '0', '0', '0'] + # so lineparts begins at NR so interesting vcalue is at + # EtabDict index + 1 + print(989,lineParts[9]) + #trap() + + print(989,EtabDict[lineParts[0]][9]) + print(989,lineParts[10]) + print(989,EtabDict[lineParts[0]][11]) + print(989,lineParts[12]) + print(989,EtabDict[lineParts[0]][12]) + print(989,lineParts[13]) + # either the list begins at NR or ... + # those ^^^ data are correct + # check 0yh to see if EtabDict[NR][0] is NR (25) or IP (~100) + #print(989,EtabDict[lineParts[0]][0]) + # NB this is LineParts[] not EtabDict + # i get IP values not NR valyes + # result YES Etab9 is lineParts9 + print() + """ +# +def mkThisRADf(): # used every ThisNR EXCEPT 25 ( handled by mkRufPtTup/// l) + + SEDM.XtraRADf = round(SEDM.MsrdUNSf - SEDM.UNSf,3) + + if SEDM.ThisNR != 25: # call herte b4 dec'd + SEDM.ThisRADf = SEDM.RADf + SEDM.XtraRADf + # now make an INT of 'steps' in ThisRADf + # store it in SEDM.RADi + x = SEDM.ThisRADf + # SEDM.xyzSCALEfOUT or IN are .002 for MM and .0001 for Inch + x = x * (1/SEDM.xyzSCALEfOUT) + x = round(x) + SEDM.RADi = int(x) + else: # ThisNR == 25 + SEDM.UNSf = SEDM.RADf + SEDM.ThisRADf = 0.0 # there is no orbit on NR 25, only wigl + SEDM.RADi = 0 # there is no orbit on NR 25, only wigl +# +#05.02.2026 this vvv looks at ctrl variable PV +# In EDM it would be called GapValue +# a voltage analgous to distannce between +# too and workpice +# This valie is constantly monitored, +# So, it is ahanfly place tp do other checks +# like\: +# did user pree PEEK nutton? +# Is it time to do a 'jump' ( fluching techique) +#06.02.2026 vvv chg to pass ndx not tipl +# CutL should become global +def getEvalPV( Ltype,L,ndx ): # rtns FWD HOLD BWD for EDM + # TODO06.02.2026 xhg pnow s tp l[ndx] + """ doc line + Rtruns a value that controls tool position. + This value is 1 of FWD HOLD or BWD. + The value is from a random.uniform call, + which is filtered by a software + window comparator. + + The returned value is similar to the + GapValue in many EDM process controls. + + The limits for the call to uniform() + are FvMin and GvMax taken from a file + similare tro an .ini file ( called SEDMhdrs,py) + + The evaluation of the uniform value uses + 2 threshodls forming the window comparator. + These thrsholds are GvHi and GvLo. + + Thos 2 parameters are obtained from a cutting technology tabvle. + ( ETable ) + + The value from uniform can be above the GvHi threshold, + and evaulates to FWD. + Or, the values can be below the GvLo threshold, + evaluating to DWD. + Else, the value is between the thresholds, + evaluating to HOLD. + + Th EDM motion is simply followinga rpedetermined + list of XYZ tuples. Thes tuples are adjacent, and the + FWD HOLD VWD deide the next smae or previous tuple + in the lts. + """ + # for debugm i pu EDMgrade on a pin do halmeter can onserve + # 03.01.2026 straight kubne bore alwayts FWD , 1wiglZneg gets bwds gets holds + # + SPO = ( (0,0,0) ) + """ + # This dunction is central to the entire system + # so central, and called fo often, + # it is also where the operattor + # can choose to PEEK RETURN or QUIT. + # + """ + # + # handle PEEK Return QUIT btns + SEDM.QuitHit = False; #no lingetring flags + # + # ceck if time to jump + if (SEDM.JumpENA == True) and (SEDM.JumpOn == True): + t2jump = chkJT() + if t2jump: + JupL,JdnL = mkJupLJdnL(L,ndx) + doJump(JupL,JdnL) + mkJT() # make a new endJT + # + if SEDM.EDpeek == True: + SEDM.disableOsc = True # power off asap , during tool withdrawl + + # return began to work, but at bP it rtnd to SPO + # i trhibnk becus PEEK still active + # ao tyurn it off like the other btns get turnmed off + # YAY peek return quit work + SEDM.EDpeek = False + + peekL = [] + retL = [] + peekL, retL = mkPeekL( L[ndx] ) + doExitL(peekL) + # + # at SPO, user just did PEEK + while 1: + if SEDM.EDquit == True:# vvv already at SPO becuz ^^^ + SEDM.disableOsc = True + SEDM.QuitHit = True + SEDM.EDquit = False # release btn + return BWD #retval is bogud, caller must test Quit and Return before eval + if SEDM.EDreturn == True :# more readble than elseif , + # the reason why is not hidden + + # this vvv setgen is dore RETURN after PEEK + setGen(SEDM.ThisNR) # maybe useless. unnecc + + SEDM.disableOsc = False + doExitL(retL)# rwtL was made during Peek hanfler + SEDM.EDreturn = False # 05.01.2026 missimg turn of btn + # + + # NO DONT RETURN JUDST CONTINUE return FWD # cade in ca;;er excpect FWD to continue + # well don t leave thid func, cont into get PV + #break # tricky with frerebies, well freebies is 20 now + + return FWD + #end while 1 + #end if SEDM.EDpeek == True + #/// can i get return wokinmg + elif IsFreebie(L[ndx]) == True: + return FWD # was EDMgrade = FWD + #ng EDMgrade = FWD # get return continuing??? + #/// + else: # else PEEK was not pressed se use PV + pv = uniform(GVMIN, GVMAX)# GVMAX GV SEDM.GVHI: # HIGVLIM in SEDMhdrs.py + SEDM.BWDcount = 0 + #29.12.2025 wasreturn FWD + EDMgrade = FWD + elif pv < SEDM.GVLO:# LOGVLIM in SEDMhdrs.py + SEDM.BWDcount += 1 + if SEDM.BWDcount >= SEDM.BWDmax: + SEDM.BwdMaxHit == True + EDMgrade = BWD + else: + # 29.12.2025 was return HOLD # caller can ignore it + EDMgrade = HOLD + # common exit for PV + SEDM.EDMgrade = EDMgrade + return EDMgrade +# end test +# +def mkDetourLegL( ToePt ): + # this makes a legL fro, toe to amnkl to jip + # + SPO = (0,0,0) #StartPtOffset nit Posn + # + footL = L3D( ToePt , RufPtTupl) + # slice off ankle, its also on end of shinL + lfL = len(footL)-1 + footL = footL[:lfL] + + # make shinL + shinL = L3D(RufPtTupl ,SPO) + # + lsL = len(shinL) - 1 + ankleNdx = lfL + # join foot bone to shinbone + legL = footL + shinL + # + #03.01.2026dbug + # make sure footL[0] === TorPt + return legL, ankleNdx +# +# TODO vvv BAD NAME +# code reads like it can use +# CtrPt that is NOT RufPtTupl +#10.02.2026 in YposWiglNR17-15.ngc +# when moving from rufpttuple to peri +# there is no Z component +# but the X should be inc'ing from 0 tp radius +# +def mkOrbitEntryLegL( EntryPt ): + SPO = (0,0,0) #StartPtOffset nit Posn + + # make CtrPt tupl using radi and entrypt + if SEDM.ToolAxis == 2: #Z + cZ = EntryPt[2] + cZ -= SEDM.RADi * SEDM.CutDir + CtrPt = ( ( 0, 0, cZ) ) + elif SEDM.ToolAxis == 1: #Y + cY =EntryPt[1] + #10.02.2026 vvv i used -= for toolAxis =2 + #cY += SEDM.RADi * SEDM.CutDir + cY -= SEDM.RADi * SEDM.CutDir + CtrPt = ( ( 0, cY, 0 ) ) + else: #X + cX = EntryPt[0] + #10.02.2026 vvv i used -= for toolAxis =2 + #cX += SEDM.RADi * SEDM.CutDir + cX -= SEDM.RADi * SEDM.CutDir + CtrPt = ( ( cX, 0, 0) ) + # + footL = L3D( EntryPt, CtrPt ) # path exits at 'TOE' + # I want footL[0] to be on peri + # becuz 1st parm in L3D is [0]th + lfL = len(footL)-1 + ankleNdx = lfL + footL = footL[:lfL]# slice off ankle, + # its in the shinL anyway + # + shinL = L3D( CtrPt, SPO) # 1st parm is 0th + # join foot bone to shinbone + legL = footL + shinL + # ndx anklNdx is wghere tool is start of EntryLegL + # + # should cont to doOrbL + return legL, ankleNdx +# +def mkFootLeadInL( PathEntryPt ): + # passing PathEntryPt allows HORZ + # or 45deg approackh to periemeter + SPO = (0,0,0) #StartPtOffset nit Posn + # + footL = L3D( RufPtTupl, PathEntryPt ) # path exits at 'TOE' + footLen = len(footL) + footL = footL[1:footLen -1] + # + return FootLeadInL +# +def mkPeekL( pNow ): + + SPO = ( (0,0,0) ) + if SEDM.ToolAxis == 2: + # if at ctr + if (pNow[0] == 0) and (pNow[1] == 0): + xL = L3D( pNow, SPO) + rL = L3D( SPO, pNow) + + # test adjacency + return xL,rL + else:# else NOT at ctr + # 27.11.2025 if cutting sown, + # then REDUCE the distancve to 0,0,0 + # so, subtract an neg numbert to get a less neg result + ctrPosn = ( (0,0, pNow[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir) ) ) + elif SEDM.ToolAxis == 1: + if (pNow[0] == 0) and (pNow[2] == 0): + xL = L3D( pNow, SPO) + rL = L3D( SPO,pNow) + + #test asjacenvy + return xL,rl + else:# else NOT at ctr + #27.11.2025 subtract + ctrPosn = ( (0, pNow[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir) ,0) ) + elif SEDM.ToolAxis == 0: + if (pNow[1] == 0) and (pNow[2] == 0): + xL = L3D( pNow, SPO) + rL = L3D( SPO, pNow) + + # test adjacenvy + return xL, rL + else:# else NOT atr ctr + #27.11.2025 subtract + # 12.02.2026 was + #ctrPosn = ( (posn[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir),0,0) ) + ctrPosn = ( (pNow[SEDM.ToolAxis] - (SEDM.RADi * SEDM.CutDir),0,0) ) + # only those NOT atr xtr are left + footL = L3D( pNow,ctrPosn) + shinL = L3D(ctrPosn,SPO) + # + xL = footL[:(len(footL)-1) ] + shinL + # 27.11.2025 each sublist need to be reversed + shinL.reverse() + footL.reverse() + rL = shinL[:(len(shinL)-1) ] + footL + + # test adjacency xL + #msg = "in mkPeekL, exit path 'xL' is not adjacent" + #chkListAdj(xL,msg) # wonmt process if false, + # + return xL,rL +# +def mkcL( radi, cLevel ): # pass LeadInLine + # BRESENHAM CIRCLE PATH PLANNER, THANK YOU MR b, NO FLOATS NEEDED! AND FAST + #--------beg octant 1 of 8 + oct1L = [] + a = radi + b = 0 + # + da = 1 - ( radi + radi ) + db = 1# dTER = 1 + re = 0 # radius error + # + while a >= b: # + if SEDM.ToolAxis == 2: #Z plnne is XY + tupl = (a, b, cLevel ) + + + elif SEDM.ToolAxis == 1: #Y plane is ZX + tupl = ( a, cLevel, b) + elif SEDM.ToolAxis == 0: #X plane is YZ + tupl = (cLevel, a, b) + oct1L.append( tupl ) + # ------------------- + # ----- mid loop + b = b + 1 # always inc b + re = re + db # re = re + dTER + db = db + 2 #dTER = dTER + 2 + if ( ( (re + re ) + da ) > 0 ):# if (( (re + re) + dSEC ) > 0 ): + a = a - 1 + re = re + da #re = re + dSEC + da = da + 2 # dSEC = dSEC + 2 + # -- end while + l = len(oct1L) # calc 1x and keep it available + # ------- end octant 1 + # + # ------- beg octant 2 + oct2L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct1L[ndx][1] + nuy = oct1L[ndx][0] + nuz = oct1L[ndx][2] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct1L[ndx][2] + nuy = oct1L[ndx][1] + nuz = oct1L[ndx][0] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct1L[ndx][0] + nuy = oct1L[ndx][2] + nuz = oct1L[ndx][1] + tupl=( (nux,nuy,nuz) ) + # + oct2L.append(tupl) + # + # ------- beg octant 3 + oct3L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct2L[ndx][0] + nuy = oct2L[ndx][1] + nuz = oct2L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct2L[ndx][0] + nuy = oct2L[ndx][1] + nuz = oct2L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct2L[ndx][0] + nuy = oct2L[ndx][1] + nuz = oct2L[ndx][2] + tupl=( (nux,-nuy,nuz) ) + # + oct3L.append(tupl) + # ------- beg octant 4 + oct4L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct3L[ndx][1] + nuy = oct3L[ndx][0] + nuz = oct3L[ndx][2] + tupl=( (-nux,-nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct3L[ndx][2] + nuy = oct3L[ndx][1] + nuz = oct3L[ndx][0] + tupl=( (-nux,nuy,-nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct3L[ndx][0] + nuy = oct3L[ndx][2] + nuz = oct3L[ndx][1] + tupl=( (nux,-nuy,-nuz) ) + # + oct4L.append(tupl) + # ------- beg octant 5 + oct5L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct4L[ndx][0] + nuy = oct4L[ndx][1] + nuz = oct4L[ndx][2] + tupl=( (nux,-nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct4L[ndx][0] + nuy = oct4L[ndx][1] + nuz = oct4L[ndx][2] + tupl=( (nux,nuy,-nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct4L[ndx][0] + nuy = oct4L[ndx][1] + nuz = oct4L[ndx][2] + tupl=( (nux,nuy,-nuz) ) + # + oct5L.append(tupl) + # ------- beg octant 6 + oct6L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct5L[ndx][1] + nuy = oct5L[ndx][0] + nuz = oct5L[ndx][2] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct5L[ndx][2] + nuy = oct5L[ndx][1] + nuz = oct5L[ndx][0] + tupl=( (nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct5L[ndx][0] + nuy = oct5L[ndx][2] + nuz = oct5L[ndx][1] + tupl=( (nux,nuy,nuz) ) + # + oct6L.append(tupl) + # ------- beg octant 7 + oct7L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct6L[ndx][0] + nuy = oct6L[ndx][1] + nuz = oct6L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct6L[ndx][0] + nuy = oct6L[ndx][1] + nuz = oct6L[ndx][2] + tupl=( (-nux,nuy,nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct6L[ndx][0] + nuy = oct6L[ndx][1] + nuz = oct6L[ndx][2] + tupl=( (nux,-nuy,nuz) ) + # + oct7L.append(tupl) + # ------- beg octant 8 + oct8L = [] + for ndx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if SEDM.ToolAxis == 2: #Z G17 + nux = oct7L[ndx][1] + nuy = oct7L[ndx][0] + nuz = oct7L[ndx][2] + tupl=( (-nux,-nuy,nuz) ) + elif SEDM.ToolAxis == 1: #Y G18 + nux = oct7L[ndx][2] + nuy = oct7L[ndx][1] + nuz = oct7L[ndx][0] + tupl=( (-nux,nuy,-nuz) ) + elif SEDM.ToolAxis == 0: #X G19 + nux = oct7L[ndx][0] + nuy = oct7L[ndx][2] + nuz = oct7L[ndx][1] + tupl=( (nux,-nuy,-nuz) ) + # + oct8L.append(tupl) + # + # + # concat octants + # then remove duplicates + # where lists overlap + cL=[] + #07.10.2025 damnit i didnt continu l;ibe correvct, fo iy hard way + cL = oct1L + oct2L + oct3L + oct4L \ + + oct5L + oct6L + oct7L + oct8L + # + # vvv trick to removve duplicate list entries + cL = list(dict.fromkeys(cL)) + + return cL +# +def mksqrL( radi,cLevel):# yeah radius is bad word but its ok + sqrL = [] + # 29.11.2025 RADi passed + + # Right Middle a,b + rMida = radi #like 5,0 was SEDM.RADf # wasradCounts + rMidb = 0 + # Top Right a,b + tRa = rMida # was Mda eg 5,5 + tRb = rMida # wsa Mda + # Top Left a,b + tLa = -(rMida) + tLb = rMida + # Bot Left a,b + bLa = tLa + bLb = -(rMida) + # Bot Right a,b + bRa = tRa + bRb = bLb + # + # BEWARE looks like i calc thuis 2x, once outrside, onece insidee func + #sqrDp = RufPtTupl[ ToolAxis ] + ( CutDir * radi ) + + sqrDp = cLevel + + # --------------- + if SEDM.ToolAxis== 2: #Z G17 XY plane + topRtHalfL = L3D( (rMida, rMidb , sqrDp) , (tRa,tRb , sqrDp) ) + topL = L3D( ( tRa, tRb , sqrDp) , (tLa,tLb , sqrDp) ) + leftL = L3D( ( tLa, tLb , sqrDp) , (bLa, bLb , sqrDp) ) + botL = L3D( ( bLa, bLb , sqrDp) , (bRa, bRb , sqrDp) ) + botRtHalfL = L3D((bRa,bRb,sqrDp),(rMida,rMidb,sqrDp)) + + if SEDM.ToolAxis== 1: + topRtHalfL = L3D( (rMida, sqrDp, rMidb ) , (tRa, sqrDp ,tRb ) ) + topL = L3D( ( tRa, sqrDp, tRb ) , (tLa, sqrDp, tRb ) ) + leftL = L3D( ( tLa, sqrDp ,tLb ) , (bLa, sqrDp, bLb) ) + botL = L3D( ( bLa, sqrDp, bLb) , (bRa, sqrDp, bRb ) ) + botRtHalfL = L3D( ( bRa, sqrDp, bRb ) , (rMida, sqrDp, rMidb ) ) + if SEDM.ToolAxis== 0: + topRtHalfL = L3D( ( sqrDp, rMida, rMidb ) , ( sqrDp, tRa,tRb ) ) + topL = L3D( ( sqrDp, tRa, tRb ) , ( sqrDp, tLa, tLb ) ) + leftL = L3D( ( sqrDp ,tLa, tLb ) , ( sqrDp, bLa, bLb) ) + botL = L3D( ( sqrDp, bLa, bLb) , ( sqrDp, bRa, bRb ) ) + botRtHalfL = L3D( ( sqrDp, bRa, bRb ) , ( sqrDp, rMida, rMidb ) ) + #----------------------- + sqrL = topRtHalfL[0: len(topRtHalfL) -1 ] \ + + topL[0: len(topL)-1]\ + + leftL[0: len(leftL)-1]\ + + botL[0: len(botL)-1]\ + + botRtHalfL[0: len(botRtHalfL)-1]\ + # + #sqrL.append( topRtHalfL[0]) + + # TODO last cell is dupw of 1st cell + return sqrL +# +def mkOrbitPathL(radi, cLevel): + + # 10.02.2026 ???? doe opL contain leadinline>>> + + if SEDM.OrbitType == CIRCLE: + orbL = mkcL( radi, cLevel) + entryPt = orbL[0] + # add a cxopy of 1st posn onto end of list + orbL.append(entryPt) # dipe 1st to last + # + if SEDM.OrbitType == SQUARE: + orbL = mksqrL( radi,cLevel) + entryPt = orbL[0] + orbL.append(entryPt) # dipe 1st to last + # + # 04.01.2026 c hec klist for SPO + SPO = ( ( 0,0,0 ) ) + + """ re: tall skinny triangles + # this code never tripped + # so the tall skiunny trinagle tip + # is Not SPO + # or + # not due to the path list + for p in orbL: + if p == SPO: + print(1555,"orbL containds SPO") + """ + # + return orbL +# +def mkDetourWiglL( posn): #SEDM.ToolAxis ): + # + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + + cDeep = posn[SEDM.ToolAxis] - ( WiglRADi * SEDM.CutDir) + + if SEDM.ToolAxis == 2: + CtrNow = (0,0,cDeep) #posn[SEDM.ToolAxis]) + elif SEDM.ToolAxis == 1: + CtrNow = (0,cDeep,0) #posn[SEDM.ToolAxis],0) + elif SEDM.ToolAxis == 0: + CtrNow = (cDeep,0,0) #posn[SEDM.ToolAxis],0,0) + # + footL = L3D(posn,CtrNow) + # + shinL = L3D( CtrNow, (0,0,0) ) + WiglEscL = footL + shinL + ankleNdx = len(footL) + # + return WiglEscL, ankleNdx +# +def doOrbL( OrbL): # begins at EnrtyPt + # ends at RufPtTupl NOT at SPO + SPO = ( ( 0,0,0) ) + + # 12.02.2026 TODO chg to goodLim badLim so it reads like others + endNdx = len(OrbL) -1 + begNdx = 0 + + #12.02.2026 new 3 lines do vvv alays if SEDM.JumpENA == True: + SEDM.JumpLtype = JumpOrbPathType + SEDM.JumpOn = True + + OrbEndPt = OrbL[endNdx] + + #02.01.2026 why start at ndx 1 other codes start at ndx 0 + ndx = 1 + # + doMove(OrbL[ndx]) + # + # ??? importannt ??? not yet SEDM.JumpoOn = True + while 1: # # seq is + nextDir = getEvalPV( JumpOrbPathType,OrbL,ndx ) + # + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + return + # rtn w flag set let CUPA move to ctr, move to SPO + else: + if nextDir == FWD:# check all done and SUCCESS + if ndx == endNdx: #goodLim = len(OrbL) -1 + # + # if ALREADY at end of orbList and FWD + loL = L3D(OrbL[ndx],RufPtTupl) + doExitL(loL) # MOVES TO RUFPTTUPL NOT SPO + return + # rtn w NO flag set p = RufPtTupl no flags + # + else: # else FWD and ndx < goodLim + oldP = OrbL[ndx] + ndx += 1 + newP = OrbL[ndx] + # + doMove(newP) + #test fatyal flags + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.JumpOn = False + return + # rtn w flag set + # let CUPA move to ctr, move to SPO + # + elif nextDir == BWD: + # done aLREADY 1st check for fatal + # + bP = OrbL[ndx] #make a detour path frm BreakPt bP + legL,ankleNdx = mkDetourLegL(bP) + doDetourLegL(legL,begNdx) + # 0 is BegNdx , hwre to start in List + # + if ( SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.JumpOn = False + return +# +def doExitL( xL): # no getEvalPV, just cloicck out stepsxl[0] is + ndx = 0 + goodLim = len(xL)-1 + badLim = 0 + while ndx < goodLim: # + # + oldP = xL[ ndx ] + ndx += 1 + newP = xL[ ndx ] + # + doMove( newP ) + time.sleep(.001) +# +def doMove( posn): # caller must make sure podn is adjacen to last + # + # 02.01.2026 neccc this is the cmd to move to posn + SEDM.XOffsetCmd = posn[0] + SEDM.YOffsetCmd = posn[1] + SEDM.ZOffsetCmd = posn[2] + # !?!? NECC yes !!!thius is MIN and NECC + time.sleep(0.001) +# +def getAtctr(posn): + #rtns atctr CtrPosn + if SEDM.ToolAxis == 2:# Z + if (posn[0] == 0) and (posn[1] == 0): + atctr = True + else:# else tool is NOT at ctr + CtrPosn = ( ( 0,0,posn[SEDM.ToolAxis] ) ) + atctr = False + elif SEDM.ToolAxis == 1 : # Y + if (posn[0] == 0) and (posn[2] == 0): + atctr = True + else: + CtrPogsn = ( ( 0,posn[SEDM.ToolAxis],0 ) ) + atctr = False + elif SEDM.ToolAxis == 0:# X + if (posn[1] == 0) and (posn[2] == 0): + atctr = True + else: + CtrPosn = ( ( posn[SEDM.ToolAxis],0,0 ) ) + atctr = False +# +def mkStairsL( cL): # now RufPtTupl is global;ly readable + # + s = SEDM.CutDir # just a short name + StairsL=[] # empty list to hold stairsteps + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + TopStairLevel = ( s * WiglRADi) + # 23.12.2025 REMEBNER rUFpTtUPL MAY BE RADI ABOVE + # DEEPEST PT OF STAIRS + beg = abs(TopStairLevel) + RufPtDepth = RufPtTupl[SEDM.ToolAxis] + BotStairLevel = RufPtTupl[SEDM.ToolAxis] + TopStairLevel + end = abs(BotStairLevel) + # + cLlen = len(cL) # yes, not -1 + # loop runs from 0 to dpethOfStiars + # DepthOfStairs is + # (deepest - topstairsDept) + for i in range(0,(end - beg) + 1 ): # 61): + cLndx = i % cLlen + deepNow = TopStairLevel + (i * s) + # get 2 axis from cL pattern, + # calc ToolAxis posn, then store tupl + tmpX, tmpY, tmpZ = cL[cLndx] + # retrieve but ignore toolaxis value + # Next, calc ToolAxis posn + if SEDM.ToolAxis == 2: # Z G17 plabe is XY + p=( tmpX, tmpY, deepNow) + elif SEDM.ToolAxis == 1: # Y G18 plane is ZX + p=( tmpX, deepNow, tmpZ) + elif SEDM.ToolAxis == 0: # X G19 plabe is YZ + p=( deepNow, tmpY, tmpZ) + # + StairsL.append(p) + # + return StairsL +# +# TODO 05.02.2026 ugly lotda ferad cats +def doWiglLeadIn(liL): + # + ndx = 0 + # + lim = len(liL) - 1 + # + while 1: # + nextDir = getEvalPV( NoJump,liL,ndx )# 0 indicates dont jump + if SEDM.QuitHit == True: + return BWD # well,QuitHit is bnetter name (nit taken) + elif SEDM.BwdMaxHit == True: + return BWD # well,BwdMaxHit is better name ( but taken) + else: + if nextDir == FWD: + # FWD is towards liL[lim] (stairs top step) + # + if ndx >= lim: # all done if at lim and FWD + # caller must look at rtn'd FWD + # and set state = CUPA + return FWD # well, Done_Success is better name + # + else: + oldP = liL[ndx] + ndx += 1 + newP = liL[ndx] + # + elif nextDir == BWD: # BWD is tiwards lissr[0] + # + if ndx <= 0:# if at badLim and BWD + # is ndx wronG + SEDM.BwdMaxHit = True # well , really BwdTooMuch is bettwer name + #caller must look at rtnd BWD and set state CUPA + return BWD; # well TooManyBwd is better name + # + else: + oldP = liL[ndx] + ndx -= 1 + newP = liL[ndx] + # + SPO = ( ( 0,0,0 ) ) + + """ re: tall skinmmy triamg;es + # vvv this never tripped + if newP == SPO: + print(2229,"in doWiglLeadIn newP == SPO") + trap() + # + """ + doMove(newP) +# +def doPlunge(): + # + SPO = ( (0,0,0) ) # Start Point Offset + # + # decide use wigl or not + """ + # wigl is halpful + # i sides of toool get 'slimy' + # the motion makes sides spark + """ + # + if SEDM.WiglRADf != 0:# else doBoreL( BoreL ) + WiglRADi = int(round(SEDM.WiglRADf / SEDM.xyzSCALEfOUT)) + if SEDM.ToolAxis == 2: + liLdest = ( (WiglRADi, 0, WiglRADi * SEDM.CutDir) ) + elif SEDM.ToolAxis == 1: + liLdest = ( (WiglRADi, WiglRADi * SEDM.CutDir, 0) ) + elif SEDM.ToolAxis == 0: + liLdest = ( (WiglRADi * SEDM.CutDir ,WiglRADi, 0) ) + # + # make a list of circle pts + cLevel = liLdest[SEDM.ToolAxis] # cLevel is ToolAxis dimension at lilDest + cL = mkcL( WiglRADi, cLevel ) + # make lead in line . dtartPyt to TopSair + EntryPt = cL[0] + # npow lead in line can be made + liL = L3D( SPO,EntryPt) + # mkStairss ,use cL as template, + # and moces along ToolAxis for eah cell in template + sL = mkStairsL(cL) + # make StairsExitL loL ends at RufPtTupl + # 29.12.2025 fix bad ]) closure + wigLoL=L3D(sL[len(sL)-1],RufPtTupl) + ####################### + # now all mini paths have been planeed + # and verides adjacent + # begin processing them using PV FWD HOLD BWD + + + ####################### + # power up and start cutting + SEDM.disableOsc = False # power on + # + #################### + # process WiglLiL StairsL WiglLoL + # NB BwdMaxCount is handled in geTevalPV + # NOT in fo Move + ###################### + doWiglLeadIn(liL) + #31.01.2026 ??? allow jump on ewigl leadin limne//\ + + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True) : + return BWD #caller must look foe fatal flag and set state accordingly + # else: # liL success, begin StairsL + # + #process StairsL + doStairsL( sL) + # 31.01.2026 allow jump on stairs + + + # + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True) : + return BWD #caller must look foe fatal flag and set state accordingly + # else: # StairsL sL success, beginloL + # + # do Exit L + doExitL(wigLoL) + # + else: #WiglRADf == 0 so doBore ( simplecut + + # make BoreL + BoreL = L3D(SPO,RufPtTupl) + # + #05.02.2026 jump + if SEDM.JumpENA == True: + #06.02.2026 this may be good palces + # to sets pin JumpLtype + SEDM.JumpLtype = JumpBoreType #1 + #vvv dunno BPndx now, putyin getEval + # THIS BELONNGS IN GEETEVALPV JumL = mkJupLJdnL(JumpBoreType,BoreL, BPndx) + # no, let getREva;lPV get L LType BP + # and let getEvalPV call mkJupLJdnL + # do i need an SEDM.cutLndx?? + # already got SEDM.JumpLtype + # do I need global ThisCutL?? + + mkJT() # sets SEDM.endJT + # halmeter ahoew 1.401 # suspiciously like ET in etab + 1mS + # check the \yimenow' valu + + # use an LED or Halmeter to watch + #power on + SEDM.disableOsc = False + # + # process BoreL + doBoreL(BoreL) + # allow jump on BoreList + + # + #test fatal + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True) : + return BWD #caller must look foe fatal flag and set state accordingly + # else: else dObreL() success + # tool now at RufPtTupl + # power off + SEDM.disableOsc = True + return FWD +# +def getCutDir(): + if SEDM.FullDEPTHf > 0: + SEDM.CutDir = POS + elif SEDM.FullDEPTHf < 0: + SEDM.CutDir = NEG + else:# else SEDM.FullDEPTHf == 0 + msg ="1694 RufPt is same as StartPt" + c = linuxcnc.command() + c.error_msg(msg) + raise SystemExit +# +def chkAtCtr(posn): + atctr = False # guilty tiill proven innocent + if SEDM.ToolAxis == 2: + if (posn[0] == 0) and ( posn[1] == 0): # if x and y are 0 + atctr = True + if SEDM.ToolAxis == 1: + if (posn[0] == 0) and ( posn[2] == 0):# if x and z are 0 + atctr = True + if SEDM.ToolAxis == 0: + if (posn[0] == 0) and ( posn[2] == 0):# if y and z are 0 + atctr = True + return atctr +# +def mkRufPtTupl(): #called 1x per cut, setGen(25) before call + global RufPtTupl + SEDM.ThisRADf = 0.0 + SEDM.RADi = 0 + # + if SEDM.CutDir == NEG: + tmp = SEDM.FullDEPTHf + SEDM.MsrdUNSf # makes LESS neg + tmp = tmp - SEDM.RPlaneDist # more neg to get CutDiost + SEDM.FullDEPTHf = tmp + + SEDM.RufPtDEPTHf = round(tmp,3) + RufPtINT = int( round(tmp / SEDM.xyzSCALEfOUT )) + if SEDM.CutDir == POS: # say cyt fro -15 to -10 + tmp = SEDM.FullDEPTHf - SEDM.MsrdUNSf # makes LESS neg + tmp = tmp - SEDM.RPlaneDist # more neg to get CutDiost + SEDM.FullDEPTHf = tmp + + SEDM.RufPtDEPTHf = round(tmp,3) + RufPtINT = int( round(tmp / SEDM.xyzSCALEfOUT )) + # 2nd create RufPtTupl + if SEDM.ToolAxis == 0: + RufPtTupl = ( ( RufPtINT,0,0) ) + elif SEDM.ToolAxis ==1: + RufPtTupl = ( ( 0, RufPtINT,0) ) + elif SEDM.ToolAxis == 2: + RufPtTupl = ( ( 0, 0, RufPtINT) ) +# +def doCtrSpo():# move tool to ctr then to StartPtOffset + # + posn = ( (SEDM.XOffsetCmd , SEDM.YOffsetCmd , SEDM.ZOffsetCmd ) ) + atctr = chkAtCtr(posn) + if atctr != True: + # TODO isa RufPt correct for all cases?? + rcL = L3D(posn,RufPtTupl) + doExitL(rcL) + posn = ( (SEDM.XOffsetCmd , SEDM.YOffsetCmd , SEDM.ZOffsetCmd ) ) + if posn != SPO: + xL = L3D(posn,SPO) + doExitL(xL) +# +def stop_ngc_program(): + c = linuxcnc.command() + s = linuxcnc.stat() + s.poll() + c.abort() + # if at first you dony abort HAMMER it + #if s.exec_state == linuxcnc.EXEC_RUNNING: + while s.exec_state != linuxcnc.EXEC_DONE: + print("Stopping current NGC program...") + # HAMMER the abort command + c.abort() +# +def doBoreL( BoreL ): # , destPt): + ndx = 0 + lim = len(BoreL)-1 + + # vvv brware JumpENA and JumpOn + # JumpENA set in techGui, higher level than KumpOn + # JumpOn set in code, ineach of 4 jump list typrs + SEDM.JumpOn = True # turn off after L complted/failed + # + while 1: # TODO while 1 is bad form, find a proper limit + # + # 07.01.2026 work jump imn at top of hgwile + # + nextDir = getEvalPV(JumpBoreType, BoreL,ndx ) + # test w 1st run NO jump chheckntn + # and 3nd smae no chkbtn, 3nd hangs + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True): + SEDM.JumpOn = False # turn off after L complted/failed + return BWD + # + if nextDir != HOLD: + if nextDir == FWD: + BwdMaxCount = False + if ndx == lim: + SEDM.JumpOn = False + # turn off after L complted/failed + return FWD # ~ OK + else: + ndx += 1 # doMove comes later + elif nextDir == BWD: + if ndx == 0: # at SPO and gap eval is BWD + SEDM.BwdMaxHit= True + SEDM.JumpOn = False + # turn off after L complted/failed + return BWD # 05.01.2026 new had no ret vak + else: + ndx -= 1 # doMove comes later + newP = BoreL[ndx] + SPO = ( ( 0,0,0 ) ) + if newP == SPO: + SEDM.JumpOn = False + # turn off after L complted/failed + trap() + doMove(newP) + # all exitts have JumpOn saet False +# +def doStairsL( StairsL): + """ + StairsL list begins at TopStep + ends at BotStep + FWD moveds down stairts + BWD call detor + """ + # + SPO = (0,0,0) + ndx = 0 + GoodLim = len(StairsL)-1 + BadLim = 0# StairsL inclunde liL do sL[0] is startPt )also is SPO) + EntryPt = StairsL[0] + + ctr = 0 # prob dteing backed up to ndx 0 vd just stated at ndx0 + # + SEDM.JumpLtype = JumpStairsType + SEDM.JumpOn = True + # + while ndx <= GoodLim: + # vvv this will jump if needed + nextDir = getEvalPV(JumpStairsType, StairsL,ndx ) + # + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True): + return BWD + # + if nextDir == FWD:# FWD is toqerda BotStep ( dowqn stairs) + if ndx >= GoodLim: # >= BptStep + return FWD # 12.02.2026 why return FWD why etn anythinf + else: + oldP = StairsL[ndx] # keep copy for adjancency tests + ndx += 1 + newP = StairsL[ndx] + # + # 12.02.2026 vvv paranoia + if StairsL[ndx] == SPO: + print(1812,"in doStairsL StairsL[ndx] == SPO") + trap() + # + doMove( StairsL[ndx] ) # more dlear meaning + # + elif nextDir == BWD: # BWD is tiwards startposn + bP = StairsL[ndx] # BreaakPt + # + DetourWiglL, ankleNdx = mkDetourWiglL( bP ) + # + doDetourWiglL( DetourWiglL, ankleNdx) + # + # test fdatal flags + if (SEDM.QuitHit == True) or (SEDM.BwdMaxHit == True): + return BWD +# +def doOrbitEntryLegL( legL, ankleNdx): + SPO = ( ( 0,0,0) ) + ndx = ankleNdx + # + goodLim =len(legL) -1 + badLim = 0 + # + #do vvv alays if SEDM.JumpENA == True: + SEDM.JumpLtype = JumpOrbLeadInType + SEDM.JumpOn = True + # + while 1: # # seq is + # + nextDir = getEvalPV( SEDM.JumpLtype, legL,ndx ) + # + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.JumpOn = False + return # let CUPA move to ctr, move to SPO + else: + if nextDir == FWD:# FWD is towards RufPt + if ndx >= goodLim: + SEDM.JumpOn = False + return # no flags + else: + oldP = legL[ndx] + if ndx > 0: + ndx += 1 + elif nextDir == BWD: + if ndx <= badLim : # backed up to SPO + SEDM.BwdMaxHit = True + SEDM.JumpOn = False + return + else: + oldP = legL[ndx] + ndx -= 1 + # + if nextDir != HOLD: # move but stay in limits + newP = legL[ndx] + # + """ re: tall skinny triales + # vv never triggered + if newP == SPO: + print(1772,"in doOrbitEntryLegL newP == SPO|") + SEDM.JumpOn = False + trap() + # + """ + doMove(newP) +# +def doDetourWiglL( DetourWiglL,ankleNdx): + + # 01.01.2026 i thought itrapped ctr ==0 and thidzDir == BWD + # i thought that condition was related to + # 'tall skinnmy Tri" vs wanted Strairs + # buit isee no such trap.test, so implement it + # and run a loop test + # + ctr = 0 # 01.01.2026 trapTri test + + #arrgh + # FWD must DEC mdx towards toe + # BWDF must INC mdx towrads HIP + # + SPO = (0,0,0) + + ndx = 0 # + + posnb = DetourWiglL[ndx] + #posn = ( ( SEDM.XOffsetCmd , SEDM.YOffsetCmd , SEDM.ZOffsetCmd ) ) + + goodLim = 0 # toe + badLim = len(DetourWiglL)-1 # hip + + while 1: # begin lpp[ + # + #07.01.2026 work jump into yop of while loop + # + + # + nextDir = getEvalPV( NoJump,DetourWiglL,ndx ) + # + if nextDir == FWD: # FWD is GOOD butr nmust DEC ndx + ndx -= 1 # + if ndx <= goodLim: + return FWD # success + # + elif nextDir == BWD: # BWD INCs ndx towards SPO BAD + oldP = DetourWiglL[ndx] # where tool was on entry to this dunc + ndx += 1 # BWD INCs the ndx towards HIP SPO + + #01.01.2026 new + ctr += 1 + # + if ndx >= badLim: # + SEDM.BwdMaxHit = True + return BWD # yes FWD means successm bad wors, correct axtion + # + newP = DetourWiglL[ndx] # get newP from list, ndx already INCd + """ re tall skinny triaNGLES + # vvv never tripped + # check old and new re adjacent + # vvv doesbnt show up on tall skinng tri prob + if aj(oldP, newP ) == False: + #print(1652,"in doDetourWiglL() TRAP prev possn was ", oldP) + #print(1853,"in doDetourWiglL() TRAP new posn is ", newP) + #print( 1854," ndx of nmewP is TRAP ", ndx) + + #if ndx > 0:# next line accesec ndx - 1 fo besure ndx > 0 + # print("in doDetourWiglL TRAP prev posn in list ",DetourWiglL[ndx-1]) + # # NB the prev posnn is asj to last cmds posn + + #print("in doDetourWiglL TRAP next posn in list ",DetourWiglL[ndx+1]) + #print("in doDetourWiglL TRAP 0th posn in list ",DetourWiglL[0]) + #print("in doDetourWiglL TRAP whole list ",DetourWiglL) + # NB he next posn in list is too far deom last cmd [posn + print(2191,"aj(oldP, newP ) == False") + trap() + else: # aj(oldP, newP ) == True + # dupe posn = DetourWiglL[ndx] + # dumb doMove( posn) + + if newP == SPO: + print(1812,"in doDetourWiglL newP == SPO") + trap() + + doMove( newP) + # + if newP == SPO: + print(1812,"in doDetourWiglL newP == SPO") + trap() + """ + doMove( newP) +# +def doDetourLegL( legL, BegNdx): # wasankleNdx): + # BegNdx is 0 when making detour from peri + SPO = ( ( 0,0,0) ) + # + ndx = BegNdx #maybe ankle, maybe toe, wasankleNdx # Begin at ankl ndx + goodLim =0 #TOE + badLim = len(legL) -1 # HIP + + #stepNum = 0 + # + while 1: # # seq is + # + #07.01.2026 work jump into yop of while loop + # + nextDir = getEvalPV( NoJump,legL,ndx )# 0 means DONT JUMMP + # check fataal flags + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + return BWD# let CUPA move to ctr, move to SPO + # + if nextDir == FWD:# FWD is DEC towards TOE, towards ndx == 0 + if ndx == 0: #aka goodLim: # ndx 0 is TOE + return# ok retn to caller, we all done w fetote and gotr a FWD PV no flags # no rtn value needed + else: #FWD and ndx != 0, not at TOE + #oldP = legL[ndx] + ####### legL is list w [0] = toe + ######## legL[badLim == SPO) + ######## ??? is legL[-1] == SPO??? YES + ######## DONT DEC ndx if ndx == 0 + ndx -= 1 # FWD is DEC towards TOE towrads PeriPath Towars ndx == 0 + newP = legL[ndx] + elif nextDir == BWD: # BWD is INC ndx BWD is tiwards SPO , ndx gets larger + if (ndx == badLim): # and (stepNum != 0): # backed up to SPO + SEDM.BwdMaxHit = True + return + else: + #oldP = legL[ndx] + ndx += 1 # BWD is towards HIP. ndx is larger + newP = legL[ndx] + if (nextDir != HOLD): + + """ re TST nevcer tyrihghered + if newP == SPO: + print(1731,"in doDetourLegL newP == SPO|") + trap() + """ + doMove( newP ) + +# ......... end funcs needing Hump code +# +SEDM = mkSEDMcomp() + + +try: # SEDM preparation + # vvv initl state of state machine + SEDM.state = WaitFullDepthRplaneDist + # + # i needed a while for the try, EDMmode is ON:Y uised to keep the while open + EDMmode = True + time.sleep(0.10) # nECC as well as QBreaker + SEDM.xyzSCALEfOUT = SEDM.xyzSCALEfIN + SEDM.mlt = 1/SEDM.xyzSCALEfOUT + + getPgmUnits() # should ONLY be called 1x per pgm ( tho user could tryt G20 G21 G20 G31 blah + # + SEDM.ctr = 0 + + while EDMmode == True: + if SEDM.isEna == True: # set by M199 clrd by M198 + # vvv new 11.12.2025 reset at top, not bot + #SEDM.ctr = 0 + + # peek rwtr wuit btns enabled at start up NG + # so wait isEna + # ng all eNOT greyed at startup + # ~ok catch22 + # when panel si loaded, the btns are enabled + # and the nets needed tro DISable them are not yet enabled by M199 + # so TODO fix btns ena too eartly + # BTW PEEK enable as soon as 1st getEvalPV()_ ca;;ed + # these vvv 2 lines are va + SEDM.BwdMaxHit = False + SEDM.BWDcount = 0 + + time.sleep(0.10) # nECC as well as QBreaker + # vvv call 1s + if SEDM.NR == SEDM.BegNR: + getStartPtF() + # + SEDM.disableOsc = True + + + + #---------------------------------------- + #----------- begin state machine -------- + #---------------------------------------- + if SEDM.state == WaitFullDepthRplaneDist: + + + #25.11.2025 this is top of state machuien for subsequent iters + time.sleep(0.1) + + # M162 sets FullDEPTHf and RPlaneDist + SEDM.restart = False + + # vvv doews NOT use mly + getToolAxis() # ths need to run for each tool change + + if SEDM.RPlaneDist != 0: + #vvv asets + # SEDM.CutDir + # SEDM.FullDEPTHf = SEDM.FullDEPTHf + SEDM.RPlaneDist + getCutDir() # also combine RPlane and FullDpeeth tto make CutTraavel + # + SEDM.state = WaitOrbitTypeWiglRADf + # + else: # SEDM.RPlaneDist == 0: + # FAIL becuz RPlaneDisst == 0 + msg = "SEDM.RPlaneDist = 0" + msg = msg + str(SEDM.RPlaneDist) + c = linuxcnc.command() + c.error_msg(msg) + raise SystemExit + # + if SEDM.state == WaitOrbitTypeWiglRADf: + # test OrbitType valid + if (SEDM.OrbitType == CIRCLE) or (SEDM.OrbitType == SQUARE) : + # ^^^ must be circle or sqr for now 26.11.2025 + # + # test WiglRADf valid ( >=0) + # M163 SEDM.OrbitType SEDM.WiglRADf vi dignals + if SEDM.WiglRADf >= 0:#15.11.2025 vhg to >= hung at 0 + SEDM.state = WaitEttabNumberMsrdUNS + # + #TODO 25.11.2025 no testing dict creation success + if SEDM.state == WaitEttabNumberMsrdUNS: + # + # Path to ETAB is \local' + etabPath = "./Etabs"#25.02.2026 <<< make etab path ='HERE' + # + if (SEDM.EtabNum > 0): + # construct file name from number + EtabNumStr = str(SEDM.EtabNum) #"99999944" + fqfn = etabPath + "/" + EtabNumStr +".ENC" + # + # read file, make dict of lists made from lines in file + parseEtab(fqfn) + # + SEDM.state = WaitBegEndNR + # + if SEDM.state == WaitBegEndNR: + if(SEDM.BegNR != 0) and (SEDM.EndNR != 0 ): + if (SEDM.EndNR <= SEDM.BegNR)and(SEDM.EndNR > 0): + if SEDM.BegNR != 25: + SEDM.PlungeOrbitWanted = True + # dont progress until EndNR <= BegNR + # the PlungOrnbWantewds is a side issue + SEDM.state = WaitPitch + # + # I dont handfle plungeOrbWanted correctly + # ... dont undeterdtansd yet... + # + if SEDM.state == WaitPitch: # WaitPitch is state 5 + #15.02.2026 pitch is not used now + # so not good to wait for M??? + # so i shoirt shank this state + SEDM.state = WaitGenReady + # + # TODO JumpENA is BIT, will never be -1 + #if SEDM.state == WaitJumpwANTED: + # if SEDM.JumpENA != -1: #insist M166 is used( oper must say he wants.doersmnt want jump) + # SEDM.state = WaitGenReady + # + if SEDM.state == WaitGenReady:# i need UNS to caLC + # ThisRADf, SO NAME GENREADY MISLEADING MORE LIKE # # GENPrepared MAYBE + #vvv makes UNSf, SEDM.RufPtDEPTHf, RufPtTupl, + if SEDM.ThisNR == SEDM.BegNR: + # temp set ThisNR = 25 to get UND asnd??? + # reset ThisNR to BegNR afterwards + + + # this chink is dfor spcl case + # where BegNR != 25 + # and mkThusRAD and UND not normally called + # so, ThisNR is LIEF to, just to get UNS + # bur 25.02.2026 in new scheme + # thhe etavDixr['25'][11] hol;ds UNS ( tho collumn hdr sez RAD + SEDM.ThisNR = 25 + setGen(SEDM.ThisNR) + mkThisRADf() # get UNS + + else: # 15.02.2026 thius line was missing + # reset to BegNR + SEDM.ThisNR = SEDM.BegNR + + # + mkRufPtTupl()# the 25 could be embedded inside mkRufPtTupl, but keeping it outside shows better + + setGen(SEDM.BegNR) + SEDM.UNSf = EtabDict['25'][11] + SEDM.GenReady = 1 # domt say True it can be -1 0 or 1 + SEDM.state = WaitPlunge + # + if SEDM.state == WaitPlunge: + SEDM.disableOsc = False # turn ON power to tll + doPlunge() # main entry to plunge + # we are done with NR 25, so dec ThisNR + if SEDM.BegNR == 25: + SEDM.ThisNR -= 1 + + #else leave nr alone, + # user may wantplungeOrb when BegNR != 25 + SEDM.disableOsc = True # turn OFF power to tool + # duting DoPlunge some fatal falgs may have been set + if SEDM.QuitHit == True: + SEDM.state = CleanUpPutAway # handle fatal flag, exit clean + elif SEDM.BwdMaxHit == True: + SEDM.state = CleanUpPutAway # handle fatal flag, exit clean + else: + SEDM.state = WaitDoPlungeOrbit + # + # if here Gen NR == ThisNR < 25 + # TODO 13.12.2025 state can be removed + if SEDM.state == WaitDoPlungeOrbit: # MISSING 03.12.2025 + SEDM.state = WaitAllNRsDone + # + if SEDM.state == WaitAllNRsDone: # 13 NRs remaining are ORBITS + if (SEDM.QuitHit == True)or(SEDM.BwdMaxHit == True): + SEDM.state = CleanUpPutAway + # ??? break??? no rtn in state mc + else:# no fatalflags + if (SEDM.ThisNR < SEDM.EndNR):# all NRs are done, + SEDM.state = CleanUpPutAway + else: #else do more orbits, ThisNR IS NOT EndNR, so do more orbits + # + setGen(SEDM.ThisNR) # get power back on + + SEDM.disableOsc = False + # get paths: legEntryL legL opL + mkThisRADf() + # + cLevel = RufPtTupl[SEDM.ToolAxis] + (SEDM.RADi * SEDM.CutDir) + opL = mkOrbitPathL(SEDM.RADi,cLevel) + entryPt = opL[0] + # + legL,ankleNdx = mkOrbitEntryLegL(entryPt) + # + ankleTupl = legL[ankleNdx] + legL.reverse() + ankleNdx = legL.index(ankleTupl) + # + doOrbitEntryLegL(legL,ankleNdx) # + # + # test for fatal flags + if (SEDM.BwdMaxHit == True) or (SEDM.QuitHit == True): + SEDM.state = CleanUpPutAway # let CUPA move to ctr, move to SPO + else: + # + doOrbL(opL)# whwrw does doOrbL end??? + # + if (SEDM.QuitHit == True)or(SEDM.BwdMaxHit == True): + SEDM.state = CleanUpPutAway + else: # turn off power, dec ThisNR + SEDM.disableOsc = True + SEDM.ThisNR = SEDM.ThisNR - 1 + # any more NRstoprocess??? + if SEDM.ThisNR < SEDM.EndNR: + SEDM.state = CleanUpPutAway + # + if SEDM.state == CleanUpPutAway : # ALSO SUCCRESS + SPO = ( (0,0,0) ) + doCtrSpo() + c = linuxcnc.command() + SEDM.disableOsc = True + SEDM.isEna = False + SEDM.BWDcount = 0 + # + setGen(0) + SEDM.state = WaitFullDepthRplaneDist + SEDM.ctr += 1 # report count ( for multiple cut loops ) + if SEDM.QuitHit == True: + SEDM.QuitHit = False + msg = "Operator Aborted" + c.error_msg(msg) # stop_ngc_program() + stop_ngc_program() + elif SEDM.BwdMaxHit == True: + SEDM.BwdMaxHit = False + msg = "BwdMaxHit True" + c.error_msg(msg) + stop_ngc_program() + else: # Succesful completion + c.auto(linuxcnc.AUTO_RESUME) +# +except KeyboardInterrupt: + raise SystemExit diff --git a/src/hal/user_comps/Submakefile b/src/hal/user_comps/Submakefile index 661d5259e4d..b584e4e6ed2 100644 --- a/src/hal/user_comps/Submakefile +++ b/src/hal/user_comps/Submakefile @@ -1,4 +1,4 @@ -USER_COMP_PY = pyvcp hal_input gladevcp scorbot-er-3 mitsub_vfd pmx485 sim-torch z_level_compensation mqtt-publisher hal_bridge +USER_COMP_PY = pyvcp hal_input gladevcp scorbot-er-3 mitsub_vfd pmx485 sim-torch z_level_compensation mqtt-publisher hal_bridge SEDM USER_COMPS := $(sort $(wildcard hal/user_comps/*.comp)) USER_COMP_BINS := $(patsubst hal/user_comps/%.comp, ../bin/%, $(USER_COMPS))