Stránka 1 z 1

Uprava post processoru Fusionu - funkce onLinear

Napsal: 8. 10. 2023, 6:28
od Lukas_2
Ahojte, jsem ztracen (dost na to abych hledal pomoc :D)

Potřebuju následující: Nějaký vstup (jméno operace(číslo 101 - 124), specifický komentář(číslo 101 - 124 + něco jako keyword třeba), cokoli ...). Při splnění tohoto vstupu by postprocessor (funkce onLinear) generoval místo pevné souřadnice pro proměnnou "z" # + to číslo z komentáře.

U cyklů jsem to rozchodil, ale tam to funguje jinak. Tady to musím upravit ve funkci onLinear ...

Nejde mi získat správný formát vstupu jména operace nebo komentáře u toho programu ... Nevím jakou funkcí nebo parametrem ten vstup získat. V manuálu konrétně o tom toho úplně moc není.

Věděl by někdo ?

Kód: Vybrat vše

function onLinear(_x, _y, _z, feed) {
  var x = xOutput.format(_x);
  var y = yOutput.format(_y);
  var z = zOutput.format(_z);
  var f = getFeed(feed);
  if (x || y || z) {
    if (pendingRadiusCompensation >= 0) {
      pendingRadiusCompensation = -1;
      var d = tool.diameterOffset;
      if (d > 999) {
        warning(localize("The diameter offset exceeds the maximum value."));
      }
      writeBlock(gPlaneModal.format(17));
      switch (radiusCompensation) {
      case RADIUS_COMPENSATION_LEFT:
        dOutput.reset();
        writeBlock(gMotionModal.format(1), gFormat.format(41), x, y, z, dOutput.format(d), f);
        break;
      case RADIUS_COMPENSATION_RIGHT:
        dOutput.reset();
        writeBlock(gMotionModal.format(1), gFormat.format(42), x, y, z, dOutput.format(d), f);
        break;
      default:
        writeBlock(gMotionModal.format(1), gFormat.format(40), x, y, z, f);
      }
    } else {
      writeBlock(gMotionModal.format(1), x, y, z, f);
    }
  } else if (f) {
    if (getNextRecord().isMotion()) { // try not to output feed without motion
      forceFeed(); // force feed on next line
    } else {
      writeBlock(gMotionModal.format(1), f);
    }
  }
}

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 8. 10. 2023, 6:53
od Thomeeque
Lukas_2 píše: 8. 10. 2023, 6:28 U cyklů jsem to rozchodil,
Můžeš ukázat jak?

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 8. 10. 2023, 7:14
od Lukas_2
Thomeeque píše: 8. 10. 2023, 6:53
Lukas_2 píše: 8. 10. 2023, 6:28 U cyklů jsem to rozchodil,
Můžeš ukázat jak?
Vlastně jsem zkopíroval funkci getCommonCycle a udělal novou > getParametricCycle. Vytviřil pro ni nový zOutput s prefixem #. Pak vstup ze jména operace porovná jestli se rovná "#521" (tady mi to ten vstup jména operace bere, ve funkci onLinear mi to nefunguje bůh ví proč, asi mi to prostě nenajde ten string nebo tak (nevím přesně, hrál jsme si s hodně možnostmi jak to rozjet, nemám to teď v hlavě...)). V tom kódu je ještě něco navíc, je to WIP no :D Potřebuju to pro navrtávání, takže to mám jen pro case "drilling" ...

Kód: Vybrat vše

function getParametricCycle(x, y, z, r, c) {
  var zOutput1 = createVariable({onchange: function() {retracted = false;}, prefix:"Z#"}, xyzFormat);
  forceXYZ(); // force xyz on first drill hole of any cycle
  if (incrementalMode) {
    zOutput.format(c);
    return [xOutput.format(x), yOutput.format(y),
      "Z" + xyzFormat.format(z - r),
      "R" + xyzFormat.format(r - c)];
  } else {
    return [xOutput.format(x), yOutput.format(y),

      zOutput1.format(z),
      "R" + xyzFormat.format(r)];
  }
}

Kód: Vybrat vše

    var F = 516; //uprava - "F" nahrazeno za 516 - cislo parametru pro parametric cycle;
    if (properties.useG95) {
      F /= spindleSpeed;
    }
    var P = !cycle.dwell ? 0 : clamp(1, cycle.dwell * 1000, 99999999); // in milliseconds

    var forceCycle = false;
    switch (cycleType) {
    case "drilling":
      var feedOutput1 = createVariable({prefix:"F#"}, feedFormat); // uprava - pridano
      var comment = getParameter("operation-comment");
      //comment = "#521"
      if (comment == "#521") {
        useCycle = getParametricCycle
        z = 521;
      } else {
        useCycle = getCommonCycle
      };

      writeBlock(
        gRetractModal.format(98), gCycleModal.format(81),
        useCycle(x, y, z, cycle.retract, cycle.clearance), //uprava - z "getCommonCycle()"
        feedOutput1.format(F) //uprava - na parametric feed
      );
      var feedOutput1 = createVariable({prefix:"F"}, feedFormat); //uprava - pridano - vraci prefix zpet na F 
      break;
edit: koukám na ten kód a feedOutput je špatně. Takhle to "F" bude vždy generovat jako "F#" (taky parametricky).

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 8. 10. 2023, 8:24
od Lukas_2
Ještě doplním že to mám pro to aby některé parametry pro posuvy, hloubka navrtání, hloubka gravírování a další... to načítalo ze stroje. Proto v některých případech potřebuju generovat místo pevné souřadnice variables (#)...

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 8. 10. 2023, 9:22
od Thomeeque
Mě toto funguje (viz blok if (z) { ... }), jen nevím, jestli je to to, co chceš:

Kód: Vybrat vše

function onLinear(_x, _y, _z, feed) {
  if (pendingRadiusCompensation >= 0) {
    xOutput.reset();
    yOutput.reset();
  }
  var x = xOutput.format(_x);
  var y = yOutput.format(_y);
  var z = zOutput.format(_z);
  var f = getFeed(feed);

  if (z) {
    var comment = getParameter('operation-comment');
    var match = comment.match(/^z#(\d+)$/i);

    if (match) {
      z = 'Z#' + match[1];
    }
  }

  if (x || y || z) {
  ... dále již bez úprav ...
Screenshot 2023-10-08 at 22.16.35.png

Jinak jsem si všiml, že se to musí spustit víckrát, než zaberou poslední změny v cps, asi nějaká cache.

T.

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 9. 10. 2023, 7:21
od Lukas_2
Ano to je ono. Ještě to musí F# generovat pouze když jede do materiálu. Takže do podmínky přidat směr, bottom height nebo něco takového ...
Odpoledne, večer na to kouknu.

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 12. 10. 2023, 6:44
od Lukas_2
Tak bych to rád ještě otevřel. Jde mi ideáně o toto. Každopádně takle to nefunguje. Ale záměr je si myslím jasný. Máte někdo nápad či zkušenost ? :)

Kód: Vybrat vše

  var strategy = getParameter("operation-strategy");
  if (strategy == "trace" && MOVEMENT_PLUNGE == true) {
    var z = zOutput.format("#Z101");
  } else {
    var z = zOutput.format(_z);
  }

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 12. 10. 2023, 7:25
od Thomeeque

Kód: Vybrat vše

  var strategy = getParameter("operation-strategy");
  var z = (strategy == "trace" && MOVEMENT_PLUNGE) ? "Z#101" : zOutput.format(_z);
Jinak je slušnost poprosit a poděkovat..

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 12. 10. 2023, 7:56
od Lukas_2
Děkuju, vážím si pomoci. Děkuju.
Snažím se nad tím přemýšlet a zapojovat chatbota, ať otravuju co nejméně. Každopádně ani tohle nefunguje. Vždy to generuje souřadnici ...

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 12. 10. 2023, 8:15
od Thomeeque
Pak asi neplatí ta podmínka, buď strategy není "trace" a/nebo MOVEMENT_PLUNGE není true(thy).

Můžeš si to vypsat do výsledného kódu ve formě komentářů (nevím, jestli je tam i nějaká elegantnější možnost debugování):

Kód: Vybrat vše

  var strategy = getParameter("operation-strategy");
  
  writeComment("strategy = " + strategy);
  writeComment("MOVEMENT_PLUNGE = " + MOVEMENT_PLUNGE);  
Btw. u mě (v tom onLinear) je MOVEMENT_PLUNGE číslo (10).

Screenshot 2023-10-12 at 21.20.05.png

EDIT: Lepší je použít writeln, komentář ten text dost silně modifikuje. Možná pak gcode nebude validní, ale o to v této fázi nejde.

Kód: Vybrat vše

  var strategy = getParameter("operation-strategy");

  writeln("; strategy: " + strategy);
  writeln("; MOVEMENT_PLUNGE: " + MOVEMENT_PLUNGE);
Výstup např.

Kód: Vybrat vše

; strategy: contour2d
; MOVEMENT_PLUNGE: 10

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 12. 10. 2023, 8:38
od Thomeeque
Když já zkusim Trace, tak strategy je "path3d".

Screenshot 2023-10-12 at 21.37.08.png

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 13. 10. 2023, 5:09
od Lukas_2
Teď jsem to upravil a funguje to. Skvělý, mockrát děkuju Thomeeque
Tohle mi teď udělalo mega radost :D
Výstřižek.PNG

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 13. 10. 2023, 5:31
od Thomeeque
Tak to mě těší, rádo se stalo :) Jen mě trochu zaráží, že ti funguje to #Z101. (mělo by být Z#101), asi si to ten systém umí nějak přebrat (nebo je to nějaká novinka, kterou ještě neznám :D). Jaký systém používáš?

Re: Uprava post processoru Fusionu - funkce onLinear

Napsal: 13. 10. 2023, 5:34
od Lukas_2
Thomeeque píše: 13. 10. 2023, 5:31 Tak to mě těší, rádo se stalo :) Jen mě trochu zaráží, že ti funguje to #Z101. (mělo by být Z#101), asi si to ten systém umí nějak přebrat (nebo je to nějaká novinka, kterou ještě neznám :D). Jaký systém používáš?
Jo vidíš. Toho jsem si v zápalu nadšení nevšiml :D Jen to přehodím :lol: Je to na Mach4. Data to bere z .csv souboru. Tam mi to už krásně funguje :D