Hírek:

Fontos tudnivalók a migrációval kapcsolatban, Kérlek nézd meg a Régi fórumról új fórumra való költözés

Main Menu

UCCNC vezérlő program

Indította gaben, 2024 április 09, 16:54

Előző téma - Következő téma

svejk

Valószínűleg több száz ilyen szoftver van, de én épp ezt az UCCNC-t néztem ki.
Amíg van rá esély addig nem kutakodok más, ismeretlen után, aminek a fejlesztője elérhetetlen.

Motoros

Természetesen igazad van, csak nekem beugrott hirtelen.
De ez is jelzi, hogy régen is volt igény rá, és a mai programokban is be  lehetne tenni alapfunkcióként.

dezsoe

Na, kérem. Akkor abban maradtunk, hogy ívekkel nem foglalkozunk. Az alábbi kis szösszenet a hat tengely mozgását figyeli. Amelyik tengelyen volt változás, azt kiírja. File-név bevitellel nem vacakoltam: a Tools/Probe ablakban beállított digitalizáló file nevét használom, ott kell beállítani a Set gombbal.

Csinálsz három gombot, vagy lehet hotkey vagy trigger is, ami szimpatikus. Elmentesz három makrót, mindegy, hogy milyen számmal, csak a 20xxx tartományt javaslom, mert oda tudsz gombot, triggert vagy hotkey-t is definiálni. Arra figyelj, hogy a második és harmadik makró az elsőt hívja, tehát úgy kell módosítanod értelem szerűen.

--- M20100.txt: ---
int Qint = 0;

double ax = exec.GetXpos();
double ay = exec.GetYpos();
double az = exec.GetZpos();
double aa = exec.GetApos();
double ab = exec.GetBpos();
double ac = exec.GetCpos();

string ujsor = "";

if (Qvar == null)
{
  if (mode == 1)
  {
    if (ax != px) ujsor = ujsor + " X" + ax.ToString();
    if (ay != py) ujsor = ujsor + " Y" + ay.ToString();
    if (az != pz) ujsor = ujsor + " Z" + az.ToString();
    if (aa != pa) ujsor = ujsor + " A" + aa.ToString();
    if (ab != pb) ujsor = ujsor + " B" + ab.ToString();
    if (ac != pc) ujsor = ujsor + " C" + ac.ToString();
    if (ujsor != "") System.IO.File.AppendAllText(SaveTo, "G01" + ujsor + "\r\n");
    px = ax;
    py = ay;
    pz = az;
    pa = aa;
    pb = ab;
    pc = ac;
  }
  return;
}

Qint = Convert.ToInt32(Qvar);

switch (Qint)
{
  case 1:
    SaveTo = AS3.Getfield(2017);
    System.IO.File.WriteAllText(SaveTo,
      "G00 X" + ax.ToString() + " Y" + ay.ToString() + " Z" + az.ToString() +
      " A" + aa.ToString() + " B" + ab.ToString() + " C" + ac.ToString() + "\r\n");
    px = ax;
    py = ay;
    pz = az;
    pa = aa;
    pb = ab;
    pc = ac;
    mode = 1;
    break;
  case 2:
    mode = 0;
    break;
}

#Events

static int mode = 0;

static double px = 0.0;
static double py = 0.0;
static double pz = 0.0;
static double pa = 0.0;
static double pb = 0.0;
static double pc = 0.0;

static string SaveTo = "";

--- M20101.txt: ---
exec.Code("M20100 Q1"); // Start
while(exec.IsMoving()){}

--- M20102.txt: ---
exec.Code("M20100 Q2"); // Stop
while(exec.IsMoving()){}

Az első a tényleges végrehajtó, ez fogja az adatokat kiírni. A második egy "start" makró, beállítja az alapértékeket és az aktuális pozíciót fogja kezdőpontnak tekinteni: ide mozog G00-lal. A harmadik az a "stop" makró, csak jelzi, hogy újra start-ra lesz szükség. (Ha nem volt start, akkor nincs tárolás. Ha lestoppolod, akkor sincs, így ha véletlenül újra tárolást nyomsz, akkor nem történik semmi.)

A mozgások G01-gyel tárolódnak, és csak az a koordináta, amelyik változott. A tároláshoz az első makrót kell meghívni, ha beálltál az új pozícióba. Tehát valahogy így:

"start" - mozgás - "tárolás" - mozgás - "tárolás" - mozgás - ... - "tárolás" - "stop"

Az eredmény pedig így néz ki:

G00 X0 Y0 Z0 A0 B0 C0
G01 X10 Y10 Z-1
G01 X11.36 Y10.884
G01 Y9.524
G01 A2.448
G01 X13.12 A1.292
G01 Z10

Próbáld ki, aztán mesélj! :)

dezsoe

A kacsintgató rosszok helyett ) -et tegyél. [#boxer][#mf3][#falbav]

ium8w94xp

Csak ámulok, bámulok.[#ijedt]

dezsoe

A vicc az, hogy a feladat végtelenül egyszerű, mint az a kódon is látszik. Csak át kell gondolni. Az egész alig volt több egy óránál, egy telefonhívással megszakítva, teszteléssel együtt, valamint Kernighan és Ritchie barátaim anyukájáról is megemlékezve... :)

ium8w94xp

Annak biztos egyszerű, aki bitekkel alszik. ;)

svejk

Azt a qrva... most értem ide...

Azonnal követelem, hogy kapjál fizetésemelést vagy legalább prémiumot! :)


Nekem ezt megemészteni is napokig fog tartani. :(

Úgy látom Fehérvárra sem mehetek üres kézzel! :)

svejk

Nem tudtam, de sejtésem beigazolódott amikor rákeresve megtudtam hogy kikkel is gyűlt meg a bajod. :)

svejk

Én már rég megmondtam, hogy az összes programozót falhoz kellene állítani...
No persze a jelenlevők -és főleg akik nekem segítenek- mindig kivételek. :)

svejk

Még ma este ha hazaérek kiprószálom demóban.

dezsoe

Na, majd mesélj, hogy megy-e rendesen. :)

svejk

Látod Motoros a mi Dezsoe-nk legalább olyan jó fej mint a  a Kowalczyk úr!  [#finom]

gaben

[#vigyor]

Na de tényleg le a kalappal Csaba előtt. [#worship]

Eddig bármit kérdeztem, mindenre érthető választ kaptam brutál rövid időn belül. [#awink]

Köszönjük Csaba! [#eljen]

gaben

Na és persze Svejk barátomat se felejtsük ki a listából, mert már Ő is annyi mindenben segített, hogy majd nem győzöm meghálálni. [#worship]