diff --git a/configs/sim/axis/sedm/Cheatsheets/CheatShee1t.pdf b/configs/sim/axis/sedm/Cheatsheets/CheatShee1t.pdf new file mode 100644 index 00000000000..866dbc221cd Binary files /dev/null and b/configs/sim/axis/sedm/Cheatsheets/CheatShee1t.pdf differ diff --git a/configs/sim/axis/sedm/Cheatsheets/CheatSheet2.pdf b/configs/sim/axis/sedm/Cheatsheets/CheatSheet2.pdf new file mode 100644 index 00000000000..4807298b61c Binary files /dev/null and b/configs/sim/axis/sedm/Cheatsheets/CheatSheet2.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/19.ENC b/configs/sim/axis/sedm/Etabs/19.ENC new file mode 100644 index 00000000000..f452bcb8828 --- /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 6.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/Etabs/PDF/19.pdf b/configs/sim/axis/sedm/Etabs/PDF/19.pdf new file mode 100644 index 00000000000..4d1cf2bef1f Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/19.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/20.pdf b/configs/sim/axis/sedm/Etabs/PDF/20.pdf new file mode 100644 index 00000000000..1e591ea8fda Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/20.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/21.pdf b/configs/sim/axis/sedm/Etabs/PDF/21.pdf new file mode 100644 index 00000000000..e1838ccc005 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/21.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/22.pdf b/configs/sim/axis/sedm/Etabs/PDF/22.pdf new file mode 100644 index 00000000000..a9f5f939266 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/22.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/23.pdf b/configs/sim/axis/sedm/Etabs/PDF/23.pdf new file mode 100644 index 00000000000..ec3c1ade095 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/23.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/24.pdf b/configs/sim/axis/sedm/Etabs/PDF/24.pdf new file mode 100644 index 00000000000..e60bb873903 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/24.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/28.pdf b/configs/sim/axis/sedm/Etabs/PDF/28.pdf new file mode 100644 index 00000000000..92b5f6e72f8 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/28.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/29.pdf b/configs/sim/axis/sedm/Etabs/PDF/29.pdf new file mode 100644 index 00000000000..4421f81da18 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/29.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/30.pdf b/configs/sim/axis/sedm/Etabs/PDF/30.pdf new file mode 100644 index 00000000000..4d02a1f56f9 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/30.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/31.pdf b/configs/sim/axis/sedm/Etabs/PDF/31.pdf new file mode 100644 index 00000000000..113d8cae42b Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/31.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/32.pdf b/configs/sim/axis/sedm/Etabs/PDF/32.pdf new file mode 100644 index 00000000000..8152130e593 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/32.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/33.pdf b/configs/sim/axis/sedm/Etabs/PDF/33.pdf new file mode 100644 index 00000000000..97f623bb005 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/33.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/34.pdf b/configs/sim/axis/sedm/Etabs/PDF/34.pdf new file mode 100644 index 00000000000..9c151b18c4d Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/34.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/35.pdf b/configs/sim/axis/sedm/Etabs/PDF/35.pdf new file mode 100644 index 00000000000..35da5e94abd Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/35.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/41.pdf b/configs/sim/axis/sedm/Etabs/PDF/41.pdf new file mode 100644 index 00000000000..c111da906ea Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/41.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/42.pdf b/configs/sim/axis/sedm/Etabs/PDF/42.pdf new file mode 100644 index 00000000000..e66e878871f Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/42.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/43.pdf b/configs/sim/axis/sedm/Etabs/PDF/43.pdf new file mode 100644 index 00000000000..3b61f5740db Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/43.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/44.pdf b/configs/sim/axis/sedm/Etabs/PDF/44.pdf new file mode 100644 index 00000000000..a9807236c2a Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/44.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/45.pdf b/configs/sim/axis/sedm/Etabs/PDF/45.pdf new file mode 100644 index 00000000000..cbe31c4c49e Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/45.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/46.pdf b/configs/sim/axis/sedm/Etabs/PDF/46.pdf new file mode 100644 index 00000000000..6eacc13b542 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/46.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/47.pdf b/configs/sim/axis/sedm/Etabs/PDF/47.pdf new file mode 100644 index 00000000000..bdb9eab97d8 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/47.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/48.pdf b/configs/sim/axis/sedm/Etabs/PDF/48.pdf new file mode 100644 index 00000000000..db7378425e1 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/48.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/49.pdf b/configs/sim/axis/sedm/Etabs/PDF/49.pdf new file mode 100644 index 00000000000..fa5b66f838f Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/49.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/52.pdf b/configs/sim/axis/sedm/Etabs/PDF/52.pdf new file mode 100644 index 00000000000..bbf87f6a97b Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/52.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/53.pdf b/configs/sim/axis/sedm/Etabs/PDF/53.pdf new file mode 100644 index 00000000000..37cd5ee0d83 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/53.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/54.pdf b/configs/sim/axis/sedm/Etabs/PDF/54.pdf new file mode 100644 index 00000000000..57ab7aa886a Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/54.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/55.pdf b/configs/sim/axis/sedm/Etabs/PDF/55.pdf new file mode 100644 index 00000000000..125f5545ccb Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/55.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/56.pdf b/configs/sim/axis/sedm/Etabs/PDF/56.pdf new file mode 100644 index 00000000000..44359d29e65 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/56.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/57.pdf b/configs/sim/axis/sedm/Etabs/PDF/57.pdf new file mode 100644 index 00000000000..eb49ab797b9 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/57.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/58.pdf b/configs/sim/axis/sedm/Etabs/PDF/58.pdf new file mode 100644 index 00000000000..3693e7b8496 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/58.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/59.pdf b/configs/sim/axis/sedm/Etabs/PDF/59.pdf new file mode 100644 index 00000000000..28f3b9595f1 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/59.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/60.pdf b/configs/sim/axis/sedm/Etabs/PDF/60.pdf new file mode 100644 index 00000000000..1d06f497253 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/60.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/61.pdf b/configs/sim/axis/sedm/Etabs/PDF/61.pdf new file mode 100644 index 00000000000..dcc9b2a76ed Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/61.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/62.pdf b/configs/sim/axis/sedm/Etabs/PDF/62.pdf new file mode 100644 index 00000000000..7b0ca976c1f Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/62.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/63.pdf b/configs/sim/axis/sedm/Etabs/PDF/63.pdf new file mode 100644 index 00000000000..860ca201968 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/63.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/64.pdf b/configs/sim/axis/sedm/Etabs/PDF/64.pdf new file mode 100644 index 00000000000..040d7f1e18f Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/64.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/65.pdf b/configs/sim/axis/sedm/Etabs/PDF/65.pdf new file mode 100644 index 00000000000..95f0bd37041 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/65.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/66.pdf b/configs/sim/axis/sedm/Etabs/PDF/66.pdf new file mode 100644 index 00000000000..c46c5d9e42d Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/66.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/67.pdf b/configs/sim/axis/sedm/Etabs/PDF/67.pdf new file mode 100644 index 00000000000..6a225b85adf Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/67.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/68.pdf b/configs/sim/axis/sedm/Etabs/PDF/68.pdf new file mode 100644 index 00000000000..bdf6ac85092 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/68.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/69.pdf b/configs/sim/axis/sedm/Etabs/PDF/69.pdf new file mode 100644 index 00000000000..2187f6eb90d Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/69.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/70.pdf b/configs/sim/axis/sedm/Etabs/PDF/70.pdf new file mode 100644 index 00000000000..2243b83e84d Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/70.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/71.pdf b/configs/sim/axis/sedm/Etabs/PDF/71.pdf new file mode 100644 index 00000000000..b57e9eaceb2 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/71.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/72.pdf b/configs/sim/axis/sedm/Etabs/PDF/72.pdf new file mode 100644 index 00000000000..2efe944208c Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/72.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/73.pdf b/configs/sim/axis/sedm/Etabs/PDF/73.pdf new file mode 100644 index 00000000000..0cd002cd878 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/73.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/74.pdf b/configs/sim/axis/sedm/Etabs/PDF/74.pdf new file mode 100644 index 00000000000..e1ceaf28d56 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/74.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/75.pdf b/configs/sim/axis/sedm/Etabs/PDF/75.pdf new file mode 100644 index 00000000000..ca31383b813 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/75.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/76.pdf b/configs/sim/axis/sedm/Etabs/PDF/76.pdf new file mode 100644 index 00000000000..59338bdc926 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/76.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/77.pdf b/configs/sim/axis/sedm/Etabs/PDF/77.pdf new file mode 100644 index 00000000000..8bd7a6cf46e Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/77.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/78.pdf b/configs/sim/axis/sedm/Etabs/PDF/78.pdf new file mode 100644 index 00000000000..6138cc1b2a0 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/78.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/79.pdf b/configs/sim/axis/sedm/Etabs/PDF/79.pdf new file mode 100644 index 00000000000..6bf032eda95 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/79.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/80.pdf b/configs/sim/axis/sedm/Etabs/PDF/80.pdf new file mode 100644 index 00000000000..da4ab7575e5 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/80.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/81.pdf b/configs/sim/axis/sedm/Etabs/PDF/81.pdf new file mode 100644 index 00000000000..627d1bbb0f0 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/81.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/82.pdf b/configs/sim/axis/sedm/Etabs/PDF/82.pdf new file mode 100644 index 00000000000..c8e44b00363 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/82.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/90.pdf b/configs/sim/axis/sedm/Etabs/PDF/90.pdf new file mode 100644 index 00000000000..c68c00cd17f Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/90.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/91.pdf b/configs/sim/axis/sedm/Etabs/PDF/91.pdf new file mode 100644 index 00000000000..f82c489fd10 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/91.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/92.pdf b/configs/sim/axis/sedm/Etabs/PDF/92.pdf new file mode 100644 index 00000000000..74d0d123c56 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/92.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/93.pdf b/configs/sim/axis/sedm/Etabs/PDF/93.pdf new file mode 100644 index 00000000000..37f367f8ae6 Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/93.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/94.pdf b/configs/sim/axis/sedm/Etabs/PDF/94.pdf new file mode 100644 index 00000000000..5a29bcc96dc Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/94.pdf differ diff --git a/configs/sim/axis/sedm/Etabs/PDF/99.pdf b/configs/sim/axis/sedm/Etabs/PDF/99.pdf new file mode 100644 index 00000000000..4935358cdfa Binary files /dev/null and b/configs/sim/axis/sedm/Etabs/PDF/99.pdf differ diff --git a/configs/sim/axis/sedm/Mcodes/M160 b/configs/sim/axis/sedm/Mcodes/M160 new file mode 100755 index 00000000000..34c51f67dae --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M160 @@ -0,0 +1,17 @@ +#!/bin/bash + +# usage +# M160 P Q + +exec >/dev/null 2>&1 # quiet + + +# EtabNum, will become a U32 +# ( bash always give a flloat) +# 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..a1f2386ad50 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M161 @@ -0,0 +1,19 @@ +#!/bin/bash + +exec >/dev/null 2>&1 # quiet + +# 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" + +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..812feba4ae5 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M162 @@ -0,0 +1,10 @@ +#!/bin/bash + +# usage +# M162 P Q + +halcmd setp sedm.FullDEPTHf $1 + +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..a75ec665bd9 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M163 @@ -0,0 +1,19 @@ +#!/bin/bash + +exec >/dev/null 2>&1 # Redirects all stdout and stderr for the rest of the + +# usage +# M163 P Q + +# OrbType is U32 0 for circle, 1 for square orbit. +# WiglRad is positive 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 + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M197 b/configs/sim/axis/sedm/Mcodes/M197 new file mode 100755 index 00000000000..9d2bcf96a45 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M197 @@ -0,0 +1,16 @@ +#!/bin/bash +# M197 no P no Q +# It turns of jump +# if jump weas left on at end of NGC. +# Place this in .ngc just before M02 + +# M197 toggles sedm.JumpEna +# get pyvcp gui checkbnox state +a="$(halcmd getp sedm.JumpENA)" + +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..99c59c269a7 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M198 @@ -0,0 +1,10 @@ +#!/bin/bash + +# end use of external offsets for XYZ +# TODO 25.03.2026 discover axis using eoffsets +# and disable those axis +halcmd setp axis.x.eoffset-enable False +halcmd setp axis.y.eoffset-enable False +halcmd setp axis.z.eoffset-enable False + +exit 0 diff --git a/configs/sim/axis/sedm/Mcodes/M199 b/configs/sim/axis/sedm/Mcodes/M199 new file mode 100755 index 00000000000..ada7d421fb0 --- /dev/null +++ b/configs/sim/axis/sedm/Mcodes/M199 @@ -0,0 +1,12 @@ +#!/bin/bash + +# usage: M199 ( no P Q parms) +# purpose: begin using eoffsets + +halcmd setp axis.x.eoffset-enable True +halcmd setp axis.y.eoffset-enable True +halcmd setp axis.z.eoffset-enable True + +halcmd setp sedm.isEna True + +exit 0 diff --git a/configs/sim/axis/sedm/README b/configs/sim/axis/sedm/README new file mode 100644 index 00000000000..bf9c47f0f72 --- /dev/null +++ b/configs/sim/axis/sedm/README @@ -0,0 +1,497 @@ +README for comp sedm + *** What is sedm? *** + +sedm comp emulates Sink EDM orbiting + + *** Whar is Sink EDM? *** +EDM is a machining method that removes +microscopic bits of the workpiece +using electrical sparks. ( electrothermal machining) + +Sink EDM is the variant used to make molds. +(vs WEDM for dies, Hole EDM and EDG grinding) +Sink EDM uses shaped tools. +Sink EDM tools do not rotate (like a mill), +and the work does not rotate (like a lathe). + +All the plastic items on your desktop come +from molds that used Sink EDM. + + *** What is Orbiting? *** +A way to simplify making the tools. + + + *** Tools are 3D shapes smaller than the created part *** +Mold cavities made with EDM are larger +than the tool. Larger by the length of +the spark. + + *** Tools are smaller than cavity by spark length *** +The spark length ( Overburn) is proportional +to the spark's energy +( Currrent * Duration * Dischharge Voltage , read ‘joules’) + +Sparks make craters in the work surface. +Sparks with more energy make larger craters +(rougher surface) +and have larger over-burn. + +Conversely, sparks with less energy make +shallower craters (smoother surface), +and smaller over-burn. + + *** Tools can use many spark lengths *** +To produce a mold cavity, +more than 1 energy is used. +There is a concept of +Rougher, Pre-Finisher and Finisher power stages. + +The sedm comp extends +this idea to 10 or more power stages. + +Each stage is designed to refine the surface +with as little tool wars as possible. + +Tool wear increases as finish improves, +so it is necessary to work as little as +possible ( a tiny loss of tool for a +increase in smoothness is a good trade off) + +A molding surface must be very smooth +for the part to release. +Molding surfaces shine like mirrors, +but EDM surfaces usually do not. +After EDM the cavity will usually be polished. + + *** Orbiting allows one size to work like many sizes *** +The Sink EDM process traditionally +used different sized tools for the +different power stages. + +Making tools that mat match in shape and center, +but with different sizes is difficult. + +Look at an RJ45 connector and image +making 3 tools with that form, +one 0.15mm smaller, one 0.100 smaller, +another 0.075 smaller. + +All these tools must have the same center, +so the tools can be exchanged. + +Well, Orbiting allows the 0.15mm tool do +the same work as the smaller ones. + +Orbiting removes the 'many sizes' issue, +by moving the tool in tiny motion patterns +called orbits. + + + *** How to use sedm comp *** +The comp is a state machine, +and it insists on each state’s completion to +advance to the next state. +Data required comes from files called Etables +and from Mcodes. +The state machine expects data is supplied in +the order seen in example.ngc . + +It is mot difficult to use, +most of the coding is filling out Mcodes. + + *** Begin with a drawing *** +Get the Fp: (frontal projection) + +The Fp is the cross sectional area of the tool +at the 'parting line'. +Fp is like a bird’s eye view of the tool’s shadow. + +The exact area is not important, +you are trying to select a size from a list +( 0.6mmx0.6mm up to 100mm x 100mm) + + *** Cheatsheet *** +Cheatsheet.pdf help you to choose +the Etable file using Fp and Pairing. + +So, refer to the ‘cheatsheet’ +( TODO make a copper to steel chheatsjeet ) + +In the cheatsheet look for the closest Fp. +There are 4 grades of graphite listed. +The large work uses less expensive grahite +( with larger particles) +and the smaller work use materrial with smaller grain. +Larger grain is cheaper and does not +machine fine fetails well. +Smaller grain material can be used for +very fine details, and costs a lot more. + +The columns 25 and 20 are fine grained, +with 25 very dense and 20 less so. +The column 9 is acceptable for general work, +and 4 is only used for heavy roughing +of large castings.. + +The cheatsheet #1 us for +cutting with flush holes thru the tool. +Cheat sheet #2 is for without such, +relying on external flushing and a lot of +the Jump feature. + +( TODO copper to steel cheatsheets ) + +I suggest you look at the POCO EDM Graphite manual. +Be ary of sciencve vs sales pith in all things EDM. +While you are searching, look fore Oel Held's book +on dielect fluids. There is alot +of good free information on the web. +Very litlle is practical, +but you should develope a mental image of what goes on in a cut. + +Back to the practical, +In the Cheatsheet, pick out yor Fp and an Wtable. +Open the Etablr file in a text editor and find +the UNS value. + + *** Pairing *** +The choice of tool and work materials. + +In the US and Canada, Graphite is +commonly used for tools, +and Steel or Aluminum for workpiece. + +Graphhite is wasy to machine, but dirty. +Copper is difficult to machine but clean. +Europe has used copper more than graphite. + + *** Choose ETABLE file *** +Choose according to Fp and Pairing. + + *** Choose the ToolAxis / select the Plane *** +If the caviy is cut ‘down’. +The the ToolAxis is Z. + +If the cavity is cut forwards +( away from the user), +Then the ToolAxis is Y. +Select the ToolAixs by choosing the PLANE +with G17, G18, or G19. +Circular motion is done in the ‘other 2 axis’. + + *** sedm can vut in many directions *** +Up Down Left Right Forwards and Backwards. + + + *** Find the undersize (UNS) *** +In the table, there is a column +titled 'RAD'. The RAD entry +for the 1st line is the UNS. +UNS means ‘undersize per side’. + + *** Make your tool *** +Make it smaller by UNS. +This reduction is 2D, +so,only reduce X and Y for a G17 Z tool. +Do not reduce the tool length. + + *** Register the actual UNS *** +Measure the tool to find the ‘MeasuredUNS’. + +You wanted the tool to be UNS smaller, +but its ok to be smaller . + +If the MeasuredUNS > UNS, +then you are not finished making the tool. +Go back and grind some more ;-) + +The sedm comp can exaggerate the orbiting +to get the correct size. + + *** Prepare an Mcode *** +Use this formaat: + +M160 P + +eg M160 P34 Q0.508 + + + *** Get Print Depth and location *** +Find the cavity depth and a reference +for that depth. +(How deep, measured from where) + +You will set areference position +using G10L2 P1 X(cval> Y Z +The EDM motion will be realtive to that. + + *** Rplane, where power is turned on *** +The Rplane is a small distance above the work. +EDM requires starting with the tool +not touching the work. +Large values waste time, +small values can be scary. + +Using the FullDepth and Rrplane values +to fill M162 data. +M162 P Q + +eg M162 P-1.304 Q1.0 + + *** Select Orbit Type and ‘WiglRadius’ *** + +Orbit types supplied are + Circular 0 + Square 1 + +(more can be aded later) +The difference: +A right angle corner will result +in a radius of UBNS in the work. +The same corner will have a radius +of the Etable’s RAD column. + +Circular cuts faster. +Square benefits surface refinement +by sliding along walls. + +I found users prefered Circular. +M163 P0 Q0.05 + +WiglRadius: +when the depth to Fp increases, +Residue from the fluid can accumulate +on trhe sides of the tool. +A small oscillation helps brush this ‘slime’ off +encouraging sparking over the lateral surfaces. +NB Only use a small value, and only use if needed. +I would suggest 0.02 to max 0.05. + +When a cut uses ‘Wigl’ you will see +a corkscrew or staircase trace in AXIS. +When WiglRadius is not used, enter 0. + +So, prepare M63 + +M163 P Q + +wg M163 P0 Q.0015 for circular and a small wigl. + + *** Choose the range of power settings *** +The chosen Etable will usually have many power settings. +Each is identified by NR. +M161 specifies the range to use. +Sometime the user just wants to cut the net shape. + The user could specify BegNR = 25 EndNR = 25 + That choice would not orbit, just ‘rough out’ the shape. +Sometimes the user wants to get better detail. + The user migh set BegNR = 12 EndNR = 10 + to only use the last 2 stages of a 16 stage Etable. +Or simply use all stages: + BegNR = 25 + EmdNR = whatever NR is on last line of chose table. + +So +M161 P Q 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 diff --git a/configs/sim/axis/sedm/sedm.ini b/configs/sim/axis/sedm/sedm.ini new file mode 100644 index 00000000000..535eff434bf --- /dev/null +++ b/configs/sim/axis/sedm/sedm.ini @@ -0,0 +1,104 @@ +# 29.12.2025 mk default ngv 1wiglZneg,ngc +# 25.03.2026 cleaned +# +[HAL] +HALFILE = sedm.hal +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 +OPEN_FILE = ./ngc/wxample.ngc + +# 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 +BASE_PERIOD = 50000 +SERVO_PERIOD = 1000000 + +[TRAJ] +COORDINATES = XYZ +LINEAR_UNITS = mm +ANGULAR_UNITS = degree + +[KINS] +JOINTS = 3 +KINEMATICS = trivkins coordinates=XYZ + +[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 = 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 = 20 +MAX_ACCELERATION = 200 + +[AXIS_Z] +# Note: low OFFSET_AV_RATIO: +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.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..00353b8d366 --- /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..fd7b3443159 --- /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..7fb160649f9 --- /dev/null +++ b/configs/sim/axis/sedm/sedmpost.hal @@ -0,0 +1,58 @@ +# sedmpost.hal 30.09.2025 +# 25.03.2026 cleaned +#==============begin 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=============== +setp sedm.xyzSCALEfIN 0.001 +setp sedm.freebies 20 #12 + +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 stepSize sedm.xyzSCALEfOUT axis.x.eoffset-scale +net stepSize axis.y.eoffset-scale +net stepSize axis.z.eoffset-scale +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 +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 +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 +net dBWDmax sedm.BWDmax techGui.BWDmax +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 +net eox sedm.XOffsetCmd axis.x.eoffset-counts +net eoy sedm.YOffsetCmd axis.y.eoffset-counts +net eoz sedm.ZOffsetCmd axis.z.eoffset-counts +net die sedm.abort halui.abort +net hot sedm.disableOsc EDpanel.EDpeek.disable +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 diff --git a/debian/linuxcnc.install.in b/debian/linuxcnc.install.in index 62cb17f1849..8c318e29576 100644 --- a/debian/linuxcnc.install.in +++ b/debian/linuxcnc.install.in @@ -83,6 +83,7 @@ usr/bin/rtapi_app usr/bin/scaragui usr/bin/schedrmt usr/bin/scorbot-er-3 +usr/bin/sedm usr/bin/sendkeys usr/bin/setup_designer usr/bin/shuttle diff --git a/src/Makefile b/src/Makefile index 1f46e9e8659..0669e1ad350 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/Submakefile b/src/hal/user_comps/Submakefile index 661d5259e4d..da3ebaebf1c 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)) diff --git a/src/hal/user_comps/sedm.py b/src/hal/user_comps/sedm.py new file mode 100644 index 00000000000..b4ce6ffb5ad --- /dev/null +++ b/src/hal/user_comps/sedm.py @@ -0,0 +1,2406 @@ +#!/usr/bin/env python3 + +#26.03.2026 clean comments and doclines +# +import linuxcnc +import hal +import time +import sys, subprocess +import os.path +from random import uniform + +# 23.03.2026 no more headers file \sedmhdrs.py' +""" +# 23.03.2026 build pkgs failed +# I think >I< put this file where a std build would find it +# but a pkg build may not +# The prpose of this file was to isolate a lot of 'equares' +# but because Python has no .h/inmclude/or hgeader files, +# I made it a python file accessible by 'import' +# That trick might make build pkgs or some rule break/fail. +# I will put thi inside the top[ of the sedm.py comp srrc file +# +# +# OLD NOTES sedmhdrs.py +# resides in /usr/lib/python3.11 +# or ~/yourRIP/lib/python +# +""" +# beg--------- CONSTANTS -------- + +# JumpLtypes The detour path varies with jumptype +# sometime a single line, and sometimes 3 with and angle between +JumpBoreType = 1 # use part of sexisyting BoreL +JumpStairsType = 2 # create a leg shape beg at BP end at BP +JumpOrbLeadInType = 3 #use section of existing Legshape +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 + +# motion directions +FWD = +1 +HOLD = 0 +BWD = -1 + +# how many consecutive BWD evaluations before ABORT +ContBWDmax = 20 # maxximum continouous low voltage sample, causes ABORT + +#02.09.2025 i want to set GVMAX and GV0AND 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 + # + if sedm/JumpLtype == NoJump: + print(357,"dont call mkJupLJdnL) wityh NoJimp") + trap() +# +# 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]) # + # + 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, ) + # + + # + if tupl != (): + numLines+=1 + EtabDict[ lineParts[0] ] = tupl[0:] # 25.02.2026 isnt [9:] same as []?? + # looked ok rint(9741,EtabDict[ lineParts[0] ] ) + +# +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 +# 24.03.2026 no need to pass Ltype, use sedm.JumpLtype instead +#24.03.2026 vhg ndx to myNdx so gloab ndx not needed +def getEvalPV(L,myNdx ): # rtns FWD HOLD BWD for EDM + # TODO06.02.2026 chg pnow s to l[myNdx] + """ 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: + # vvv uses sedm.JunpLtype + JupL,JdnL = mkJupLJdnL(L,myNdx) + 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[myNdx] ) + 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[myNdx]) == 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 = [] + # 24.03.2026 no need gor global index, ndx is init'd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct1L[bcNdx][1] + nuy = oct1L[bcNdx][0] + nuz = oct1L[bcNdx][2] + tupl=( (nux,nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct1L[bcNdx][2] + nuy = oct1L[bcNdx][1] + nuz = oct1L[bcNdx][0] + tupl=( (nux,nuy,nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct1L[bcNdx][0] + nuy = oct1L[bcNdx][2] + nuz = oct1L[bcNdx][1] + tupl=( (nux,nuy,nuz) ) + # + oct2L.append(tupl) + # + # ------- beg octant 3 + oct3L = [] + #24.03.2026 no need for gloabl bcNdx, it is initd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct2L[bcNdx][0] + nuy = oct2L[bcNdx][1] + nuz = oct2L[bcNdx][2] + tupl=( (-nux,nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct2L[bcNdx][0] + nuy = oct2L[bcNdx][1] + nuz = oct2L[bcNdx][2] + tupl=( (-nux,nuy,nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct2L[bcNdx][0] + nuy = oct2L[bcNdx][1] + nuz = oct2L[bcNdx][2] + tupl=( (nux,-nuy,nuz) ) + # + oct3L.append(tupl) + # ------- beg octant 4 + oct4L = [] + #24.03.2026 no need for global bcNdx, initd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct3L[bcNdx][1] + nuy = oct3L[bcNdx][0] + nuz = oct3L[bcNdx][2] + tupl=( (-nux,-nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct3L[bcNdx][2] + nuy = oct3L[bcNdx][1] + nuz = oct3L[bcNdx][0] + tupl=( (-nux,nuy,-nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct3L[bcNdx][0] + nuy = oct3L[bcNdx][2] + nuz = oct3L[bcNdx][1] + tupl=( (nux,-nuy,-nuz) ) + # + oct4L.append(tupl) + # ------- beg octant 5 + oct5L = [] + #24.03.2026 no need for global bcNdx, initd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct4L[bcNdx][0] + nuy = oct4L[bcNdx][1] + nuz = oct4L[bcNdx][2] + tupl=( (nux,-nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct4L[bcNdx][0] + nuy = oct4L[bcNdx][1] + nuz = oct4L[bcNdx][2] + tupl=( (nux,nuy,-nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct4L[bcNdx][0] + nuy = oct4L[bcNdx][1] + nuz = oct4L[bcNdx][2] + tupl=( (nux,nuy,-nuz) ) + # + oct5L.append(tupl) + # ------- beg octant 6 + oct6L = [] + #24.03.2026 no need for global bcNdx, initd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct5L[bcNdx][1] + nuy = oct5L[bcNdx][0] + nuz = oct5L[bcNdx][2] + tupl=( (nux,nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct5L[bcNdx][2] + nuy = oct5L[bcNdx][1] + nuz = oct5L[bcNdx][0] + tupl=( (nux,nuy,nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct5L[bcNdx][0] + nuy = oct5L[bcNdx][2] + nuz = oct5L[bcNdx][1] + tupl=( (nux,nuy,nuz) ) + # + oct6L.append(tupl) + # ------- beg octant 7 + oct7L = [] + #24.03.2026 no need for global bcNdx, initd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct6L[bcNdx][0] + nuy = oct6L[bcNdx][1] + nuz = oct6L[bcNdx][2] + tupl=( (-nux,nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct6L[bcNdx][0] + nuy = oct6L[bcNdx][1] + nuz = oct6L[bcNdx][2] + tupl=( (-nux,nuy,nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct6L[bcNdx][0] + nuy = oct6L[bcNdx][1] + nuz = oct6L[bcNdx][2] + tupl=( (nux,-nuy,nuz) ) + # + oct7L.append(tupl) + # ------- beg octant 8 + oct8L = [] + #24.03.2026 no need for global bcNdx, initd here + for bcNdx in range(l-1, -1, -1):# loop bwds thri octant 1 data + if sedm.ToolAxis == 2: #Z G17 + nux = oct7L[bcNdx][1] + nuy = oct7L[bcNdx][0] + nuz = oct7L[bcNdx][2] + tupl=( (-nux,-nuy,nuz) ) + elif sedm.ToolAxis == 1: #Y G18 + nux = oct7L[bcNdx][2] + nuy = oct7L[bcNdx][1] + nuz = oct7L[bcNdx][0] + tupl=( (-nux,nuy,-nuz) ) + elif sedm.ToolAxis == 0: #X G19 + nux = oct7L[bcNdx][0] + nuy = oct7L[bcNdx][2] + nuz = oct7L[bcNdx][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 ) ) + + 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 + #24.03.2026 chg ndx to oLndx + oLndx = 1 + # + doMove(OrbL[oLndx]) + # + # ??? importannt ??? not yet sedm.JumpoOn = True + while 1: # # seq is + #24.03.2026 vhg vvv + #nextDir = getEvalPV( JumpOrbPathType,OrbL,ndx ) + # 24.03.2026 vhg to vvv + nextDir = getEvalPV( OrbL,oLndx ) + # + 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 oLndx == endNdx: #goodLim = len(OrbL) -1 + # + # if ALREADY at end of orbList and FWD + loL = L3D(OrbL[oLndx],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[oLndx] + oLndx += 1 + newP = OrbL[oLndx] + # + 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[oLndx] #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 + #24.03.2026 chg ndx to xNdx + xNdx= 0 + goodLim = len(xL)-1 + badLim = 0 + while xNdx < goodLim: # + # + oldP = xL[ xNdx ] + xNdx += 1 + newP = xL[ xNdx ] + # + 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): + # + #24.03.2026 chg mdx to wiglNdx + wiglNdx = 0 + # + lim = len(liL) - 1 + # + sedm.JumpLtype = JumpOrbLeadInType + # 25.03.2026 'e' missing from pin + # ??? bad Geany? bbad memory? i have not esited near here for many days + + #print("JumpBoreType =1, JumpStairsType =2 JumpOrbLeadInType =3 JumpOrbPathType =4 JumpOrbPathDetour =5 NoJump = 10" + # + while 1: # + nextDir = getEvalPV( liL,wiglNdx )# 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 wiglNdx >= 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[wiglNdx] + #25.03.2026 vvv there shoulf be no 'ndx' asll were cleaned out yesterday + wiglNdx += 1 + newP = liL[wiglNdx] + # + elif nextDir == BWD: # BWD is tiwards lissr[0] + # + if wiglNdx <= 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[wiglNdx] + wiglNdx -= 1 + newP = liL[wiglNdx] + # + SPO = ( ( 0,0,0 ) ) + + 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): + # + #24.03.2026 add set pin for jump typr + sedm.JumpLtype = JumpBoreType + #24.03.2026 chg ndx to boreBdx + boreNdx = 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(BoreL,boreNdx ) + # 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 boreNdx == lim: + sedm.JumpOn = False + # turn off after L complted/failed + return FWD # ~ OK + else: + boreNdx += 1 # doMove comes later + elif nextDir == BWD: + if boreNdx == 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: + boreNdx -= 1 # doMove comes later + newP = BoreL[boreNdx] + 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) + # 24.03.2026 chg ndx to sNdx + sNdx = 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 sNdx 0 vd just stated at ndx0 + # + sedm.JumpLtype = JumpStairsType + + sedm.JumpOn = True + # + while sNdx <= GoodLim: + # vvv this will jump if needed + nextDir = getEvalPV(StairsL,sNdx ) + # + if (sedm.QuitHit == True) or (sedm.BwdMaxHit == True): + return BWD + # + if nextDir == FWD:# FWD is toqerda BotStep ( dowqn stairs) + if sNdx >= GoodLim: # >= BptStep + return FWD # 12.02.2026 why return FWD why etn anythinf + else: + oldP = StairsL[sNdx] # keep copy for adjancency tests + sNdx += 1 + newP = StairsL[sNdx] + # + # 12.02.2026 vvv paranoia + # vv re unresolved phantom lurchs to SPO, nevert triggerts, but i see AXIS trace + if StairsL[sNdx] == SPO: + print(1812,"in doStairsL StairsL[ndx] == SPO") + trap() + # + doMove( StairsL[sNdx] ) # more dlear meaning + # + elif nextDir == BWD: # BWD is tiwards startposn + bP = StairsL[sNdx] # 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) ) + #24.03.2026 chg ndx to entryNdx + entryNdx = 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( legL,entryNdx ) + # + 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 entryNdx >= goodLim: + sedm.JumpOn = False + return # no flags + else: + oldP = legL[entryNdx] + if entryNdx > 0: + entryNdx += 1 + elif nextDir == BWD: + if entryNdx <= badLim : # backed up to SPO + sedm.BwdMaxHit = True + sedm.JumpOn = False + return + else: + oldP = legL[entryNdx] + entryNdx -= 1 + # + if nextDir != HOLD: # move but stay in limits + newP = legL[entryNdx] + # + 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) + #24.03.2026 vhg ndx to wiglDtrNdx + wiglDtrNdx = 0 # + + posnb = DetourWiglL[wiglDtrNdx] + #posn = ( ( sedm.XOffsetCmd , sedm.YOffsetCmd , sedm.ZOffsetCmd ) ) + + goodLim = 0 # toe + badLim = len(DetourWiglL)-1 # hip + + sedm.JumpLtype = JumpStairsType + while 1: # begin lpp[ + # + #07.01.2026 work jump into yop of while loop + # + + # + nextDir = getEvalPV( DetourWiglL,wiglDtrNdx ) + # + if nextDir == FWD: # FWD is GOOD butr nmust DEC ndx + wiglDtrNdx -= 1 # + if wiglDtrNdx <= goodLim: + return FWD # success + # + elif nextDir == BWD: # BWD INCs ndx towards SPO BAD + oldP = DetourWiglL[wiglDtrNdx] # where tool was on entry to this dunc + wiglDtrNdx += 1 # BWD INCs the ndx towards HIP SPO + + #01.01.2026 new + ctr += 1 + # + if wiglDtrNdx >= badLim: # + sedm.BwdMaxHit = True + return BWD # yes FWD means successm bad wors, correct axtion + # + newP = DetourWiglL[wiglDtrNdx] # get newP from list, ndx already INCd + doMove( newP) +# +def doDetourLegL( legL, BegNdx): # wasankleNdx): + # + # BegNdx is 0 when making detour from peri + SPO = ( ( 0,0,0) ) + # + #24.03.2026 chg ndx to detourLegLndx + detourLegLndx = BegNdx #maybe ankle, maybe toe, wasankleNdx # Begin at ankl ndx + goodLim =0 #TOE + badLim = len(legL) -1 # HIP + + #stepNum = 0 + # + sedm.JumpLtype = JumpOrbPathType + # + while 1: # # seq is + # + #07.01.2026 work jump into yop of while loop + # + nextDir = getEvalPV( legL,detourLegLndx )# 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 detourLegLndx == 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 + detourLegLndx -= 1 # FWD is DEC towards TOE towrads PeriPath Towars ndx == 0 + newP = legL[detourLegLndx] + elif nextDir == BWD: # BWD is INC ndx BWD is tiwards SPO , ndx gets larger + if (detourLegLndx == badLim): # and (stepNum != 0): # backed up to SPO + sedm.BwdMaxHit = True + return + else: + #oldP = legL[ndx] + detourLegLndx += 1 # BWD is towards HIP. ndx is larger + newP = legL[detourLegLndx] + 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) + # + # sedm.JumpLtype is set inside doOrbitEntryLegL() to 3 + 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: + #>>> need to set sedm.jumpltype??? + # sedm.JumpLtype sets to JumpOrbPathType + 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