Dynamischer Ablauf für Zuordnung von Objekten zu anderen Objekten

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von GuentherA.

    Dynamischer Ablauf für Zuordnung von Objekten zu anderen Objekten

    Hallo Zusammen,

    Meine Frage bezieht sich jetzt nicht direkt auf ein VB Problem, denn mit dem Code habe ich (vorerst :D ) kein Problem, nur weiß ich aktuell nichteinmal, wie ich eine aktuelle (reale) Problemstellung im Code abbilden soll/kann. Und da würde ich euch wenn möglich, um Vorschläge oder Tips bitten. Ich beschreibe mal kurz worum es geht:

    Ich habe in meinem Programm eine Auftragsliste. Diese beinhaltet Informationen zu (verschiedenen) Bauteilen. Mit diesen Bauteilen werden nun Paletten befüllt. Da die Bauteile unterschiedlich groß sind, gibt es auch unterschiedlich große Paletten. Diese werden im Programm auf Basis verschiedner Kriterien (Größe, Stapelanzahl, Stapelhöhe, Gesamtgewicht, usw) automatisch ausgewählt und befüllt.

    Abschließend gibt es jetzt noch eine sehr eingeschränkte Anzahl an Palettenplätzen. Nun muss ich die zuvor erzeugten Paletten je einem Platz zuordnen. Da nun die zu Beginn erwähnte Auftragsliste von einem Roboter abgearbeitet wird, wird irgendwann ein Palettenwechsel notwendig sein. Auch kann es vorkommen, dass sich die Reihenfolge meiner Aufträge in der Liste ändert. Und zu guter letzt würde auch noch die Möglichkeit bestehen, eine Palette zu ändern (Sprich eine andere als die automatisch gewählte auszuwählen). Das würde bedeuten, das sich die Befüllung ändert und somit auch der Füllgrad aller nachfolgenden Paletten neu berrechnet werden muss.

    Jetzt dreh ich an dem Ding schon seit Tagen herum und komme nicht recht weiter. Versucht hab ich das schon mit zig verschiedenen Listen zu lösen, da bekommt man im besten Fall nur einen Knopf im Hirn. Momentan wäre mein Gedanke, für jeden Schritt (also praktisch für jedes Bauteil) einmal die Palettenplätze zu instanzieren und den Zustand der vorherigen Instanz für den neuen Schritt anzupassen. Also zb. Eine Palette raus, eine andere rein. Wenn nur ein weiteres Bauteil auf eine Palette kommt würde sich ja nichts ändern.

    Grundsätzlich ist es wichtig, dass ich von Anfang an alle Zustände kenne, damit der Bediener nachher auch bereits zu Beginn weiß, welche Paletten er vorbereiten muss.

    So recht überzeugt bin ich davon aber auch nicht. Dementsprechend meine Bitte nach Tips!

    Danke schon mal im Vorraus,

    LG Günther
    ich weiss jetzt nicht was das Programm machen soll - soll es automatisch die optimale Befüllung von Paletten ermitteln, und den PalettenPlätzen zuordnen?
    Da muss man Super-listige Optimierungs-Algorithmen anwenden.

    aber ich glaub, du wärst erstmal froh, wenn der User diese Dinge ühaupt angezeigt bekommt, und händisch ausführen kann?

    In letzterem Falle (im ersteren übrigens auch) brauchst du ein relationales Datenmodell.

    Das ist eine Menge Stoff zu lernen. Nichts davon ist schwierig, aber man musses halt lernen, sonst kann mans nicht:
    codeproject.com/Articles/10309…l-Datamodel-for-Beginners

    Deine Beschreibung ist ansonsten sogar ausgesprochen gut, da kann man sehr leicht draus ableiten, wie das Datenmodell auszusehen hat.
    Hallo,

    nun ja, leider läufts drauf hinaus, dass das Programm automatisch die Zuteilung der Paletten durchführen soll - möglichst optimiert. Die Anzeige und händische zuordnung hätte ich im Rahmen meiner Versuche schon gehabt. Beim automatischen berechnen bin ich dann aber immer gegen die Wand gelaufen.

    Hättest du vielleicht noch einen Tip von welchem super-listigen Optimierungs Algorithmus du da beispielsweise sprichst?

    Danke und LG
    Günther
    Das ist vom Prinzip das Rucksack-Problem, oder das Problem des Handelsreisenden.
    Aber Rucksack passt eiglich sehr gut - deine Paletten sind ja so Behälter, und wollen optimal gepackt werden. (deine Variante hat leider auch noch mehrere Palettengrößen, uiuiuiuih!)
    google "Rucksack-Problem" und werd glücklich (oder krieg graue Haare).
    Oder gugge Wikipedia - die erklären mathematische Abstrakta ich find immer recht gut.

    Nur soviel: die Laufzeit, um beim Rucksack-Problem die optimale Lösung durch Ausprobieren zu finden steigt extrem an mit der Anzahl der Elemente: O(n!). Leider ist Ausprobieren der einzige Algo, der sicher die optimale Lösung findet.
    Aber es gibt wesentlich laufzeit-günstigere Algos (und die sind kompliziert), die immerhin sehr sehr gute Lösungen finden, (aber ohne Garantie, dasses die beste ist).
    Na halelujua.. :) Von den beiden "Problemen" hab ich mal in Mathe gehört... Na guat :) Dann schau ma sich das mal an...

    Die Laufzeit macht mir nicht wirklich sorgen, denn zum einen hält sich die Anzahl in Grenzen. Wir reden von weniger als 20 Aufträgen, sind im worst case ~300 Teile und die kommen auf 5-10 Paletten. Und Palettenplätze gibts zwar in Summe 20, allerdings durch Überschneidungen miteinander bleiben untern Strich nur 3.

    Die Eigentliche Berechnung des ganzen soll ja auch vor der Abarbeitung durch den Roboter passieren. Und da ist mir die Laufzeit noch egal. Selbst wenn wir von Minuten reden würden...

    In jedem Fall dank ich dir (wiedermal) für deine Unterstützung

    und jetzt hol ich mir mal die grauen Haare :)

    LG Günther
    Hab jetzt kurz ein bisschen geschmöckert in den Optimierungsproblemen (Rucksack und Handelsreisender). Aber das ist glaube ich garnicht so das Thema. Ich habe die Zuteilung grundsätzlich schon gehabt. Also Zuteilung der jeweiligen Paletten zu einem passenden Platz. Unter Berücksichtigung verschiedener Einschränkungen wie zB Greiferkollision mit anderen Paletten (bzw. der darauf befindlichen Stapeln) usw. Die Reihenfolge, wann welche Palette verfügbar sein muss, ist ja durch die Auftragsliste bestimmt. Großartig zu optimieren gibt es da nix. Ja man könnte jetzt noch die Häufigkeit und die Roboterbahn betrachten, dass tu ich mir aber bestimmt nicht an.

    Spannender wirds nachdem der Palettenplatz zum ersten gefüllt wurde und die erste Palette raus muss (obwohl diese nicht voll ist) weil jetzt ein Platz für ein weiteres Bauteil benötigt wird. Aber selbst das wäre ja nur wieder von bereits verfügbaren Faktoren abhängig. Z.b. wann wird welche Palette (der bereits zugeteilten) das nächste mal befüllt, die die am längsten nichts bekommt, die fliegt raus.

    Mein größtes Problem liegt jetzt eigentlich darin, das im Code abzubilden. Momentan habe ich für die Palettenplätze ein Usercontrol. Dieses beinhaltet unter anderem ein Dictionary(of integer, cls_PalettenPlatz). Der Intergerwert ist der Schlüßel des Palettenplatzes aus dem DataSet, csl_palettenPlatz beschreibt einen Palettenplatz (Abmessung, Position,...). Die cls_PalettenPlatz hat auch ein Feld Palette, dem die jeweilige Palette dann zugeteilt wird.

    Und dieser Aufbau macht mir irgenwie sorgen. Damit komm ich, was den Palettentausch angeht nicht recht weiter. Im Prinzip müsste ich, wie oben bereits erwähnt, das Usercontrol für jedes Bauteil, oder zumindest für jeden Palettenwechsel neu instanzieren und in einem Dictionary(Pick_Index, Cls_PalettenPlaetze) ablegen. Und dann je nach aktuellem Zustand der Anlage aufrufen und darstellen.

    Da fällt mir irgendwie nix besseres dazu ein... :(

    Danke und LG
    Günther
    Das Ausprobieren oder "Brute-Force" oder Kombination ohne Wiederholung ist eigentlich recht einfach zu programmieren und für einfache Berechnungen (dazu zähle ich einfach mal das Platzproblem für so eine geringe Anzahl an Paletten) ist es hier tatsächlich das maßgebende. Die Berechnungszeit sollte sich hierbei doch sehr in Grenzen halten, so dass sich ein ausgewachsener Optimierungsalgorithmus nicht zu programmieren lohnt. Die Anzanhl an zu überprüfenden Möglichkeiten kann auch normalerweise duch geschickte Überlegungen immer eingeschränkt werden. Zum Beispiel Breite der Stellfläche: Es passen hier nur x Paletten der Größe y nebeneinander usw.
    Gibt es auch im Forum was von EDR.

    Falls du dich doch für Optimierungsalgorithmen interessierst aber keinen Schimmer von Mathe hast würde ich dir Irgendwelche Metaheuristiken ans Herz legen (Evolution, Ameisen-Algo,....) die echt gut sind für kombinatorische Probleme da du dir weder Gedanken um die Zielfunktion noch deren Ableitungen machen musst. Diese finden für so einfache Probleme aus eigener Erfahrungen immer das Optimum, da laut deiner Problembeschreibung nach kurzem Durchdenken eine recht gutmütige Zielfunktion vorliegen müsste ohne viele lokalen Minima. Solche Algorithmen lassen sich auch schnell umsetzen bzw. es gibt bereits viele projekte im Netz die sich damit befassen.

    @ErfinderDesRades: Den BruteForce Algorithmus von hier Permutieren mit dem Iterator-Feature (ab 2012) kompiliert nicht.
    Fehler BC30512 "Option Strict On" lässt keine impliziten Konvertierungen von "IEnumerable" in "IEnumerable(Of Integer())"


    Viele Grüße

    Edit: Naja das bedeutet ja nur, dass du nach jeder Änderung wieder alle Kombinationen durch spielen musst um wieder das optimum zu finden

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SKeks“ () aus folgendem Grund: Rechtschreibfehler und Fehlercode

    GuentherA schrieb:

    Momentan habe ich für die Palettenplätze ein Usercontrol.
    Das klingt mir ungemütlich - nämlich als habest du eben doch kein Datenmodell.
    Ohne das kann man dir aber nicht helfen.
    Ich kann dir allenfalls helfen, dir eines zu schaffen.

    GuentherA schrieb:

    Schlüßel des Palettenplatzes aus dem DataSet
    Das klingt mir schon gemütlicher - ich hoffe es ist ein typisiertes Dataset?
    Wenn ja, dann poste bitte Screenshot.
    Wenn nein, dann doch ungemütlich.



    @SKeks: Bei mir kompiliert das. Nur die 2. Variante mit der anonymen Iterator-Funktion liefert falsche Ergebnisse. Was ich nicht verstehe, weils ist eine 1:1 - Übersetzung der anderen Methode.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Na wenn das mal auf das Problem zutrifft, dann gemütlich! :) Ja dataset, und ja typisiert. Screenshot anbei!

    Aus diesem DataSet erzeuge ich dann die Einträge bzw Objekte der cls_Palettenplatz, ein UserControl deshalb, weil da drin dann das ganze Paint zeugs zum darstellen ist.

    LG
    Bilder
    • sc1.png

      8,6 kB, 196×447, 79 mal angesehen
    fein - aber das datenmodell ist unzureichend - mit nur einer Tabelle wirst du kaum hinkommen.
    Leider ist was in post#1 noch total übersichtlich klang mittlerweile ziemlich verwirrend geworden.

    aber dennoch denke ich, dass du mindestens die Tabellen Auftrag, AuftragPosten, Bauteil, Palette, PalettenArt, PalettenPlatz brauchst, um die Verhältnisse abzubilden.
    Das ist sicher noch nicht alles, aber schoma ein Schritt, um Übersichtlichkeit reinzukriegen.

    Deine Tabelle schmeiss bitte weg, mit den Namens-Unkonventionen, die du da verwendest, kannichnich leben.

    Bei mir hat eine Tabelle einen Singular-Namen, und ID ist der Primärschlüssel - keine andere Spalte.
    Und Properties (SpaltenNamen) fangen mit Großbuchstaben an.
    Zugegebener Maßen habe ich das DataSet erstellt, weil es damit wesentlich leichter fällt, Daten die gespeichert werden müssen auch zu speichern (XML). Der restliche Ablauf läuft (im Moment) über die Klassen. Und die haben auch etwas mehr Eigenschaften als das Dataset. Ob das jetzt so richtig böse ist weiß ich nicht ist - gebe ich zu - gewachsenes chaos! :)

    Die Tabelle werde ich ausbessern, bzw. wegschmeissen. Das Thema mit "Key" und "ID" fällt ebenfalls unter gewachsenes Chaos... ;)

    Werde aber für heute abbrechen. Genug für heut... ;)

    Danke in jedem Fall für deine Unterstützung. Melde mich morgen dazu wieder.

    LG Günther
    Hallo,

    ich habe das ganze jetzt nochmal durchdacht und werde mal versuchen, mich damit zu begnügen, immer nur den aktuellen Status zu berechnen. Das heißt ich befülle alle Plätze und warte auf ein Ereignis welches einen Wechsel notwendig macht. Dann wird gewechselt und ich betrachte wieder nur den aktuellen Status. Eine vorrausberechnung ist eigentlich weder notwendig noch sinnvoll, da sich an meinen Bauteilen während der Bearbeitung durch den Roboter auch wieder was ändern kann. D.h. neu berechnen muss ich dann ohnehin alles.

    Trotzdem wäre ich an deinen Verbesserungsmaßnahmen mit dem DataSet interessiert. Würde das aber im Moment in eine Kopie implementieren, denn das System muss(!) anfang Februar beim Kunden laufen. Und ich kann im Moment jetzt nicht abschätzen was die Änderungen von denen du da sprichst zeitmäßig bedeuten. ;)

    Datasets habe ich ja aktuell schon mehr in Verwendung als das eine für die Plätze. Die Relation untereinander habe ich aber definitiv nur im Code abgebildet, nicht im Dataset. Ich vermute mal dass das schon einer der "Fehler" ist. Anbei mal die Screenshots der DataSets die ich im Einsatz hab. Wie gesagt, erstellt habe ich die, um einen bestimmten Teil der Informationen einfach in einem XML speichern zu können. Die im Code verwendeten Objekte haben weit mehr Eigenschaften als im DataSet zu finden sind.

    Meine Namens-unkonvention möge man mir (vorerst) verzeihn ;)

    LG Günther
    Bilder
    • DS_Rondentable.png

      18,31 kB, 228×644, 54 mal angesehen
    • DS_Paletten.png

      4,23 kB, 150×187, 240 mal angesehen
    • DS_PalettenPaetze.png

      10,33 kB, 212×467, 78 mal angesehen

    GuentherA schrieb:

    Die Relation untereinander habe ich aber definitiv nur im Code abgebildet, nicht im Dataset. Ich vermute mal dass das schon einer der "Fehler" ist.
    jo - das halte ich auch für denkbar ungeschickt und vollkommen unnötig.
    Ah - du hast mehrere Datasetse? Dassis grundfalsch.
    Eine Anwendung hat normalerweise genau ein Dataset. Und da ist alles drin was gebraucht wir. Und dann ists auch ein Kinderspiel, die Relationen abzubilden, und du wirst dich fragen, was für'n Umstand du da per Code dir angetan hast.

    Weiters denke ich, dass du bei deim Stand die Datasetserei vlt. recht schnell erlernen kannst, und dann dürfte das eine große Zeitersparnis bringen. Weil aus dem einheitlichen Gesamt-Datenmodell, nach klaren Prinzipien gestrickt, ergibt sich für ungefähr jedes Problem logisch ein Lösungs-Ansatz, und auch die Lokalität, wo der dazugehörige Code anzusiedeln ist.

    Aber klar - das alte System erstma nur auf Eis legen - nicht weghauen, bevor das neue auf mindestens denselben Stand ist.

    Wie kommste mit dem Tut aus post#2 klar?
    Hallo,

    @ErfinderDesRades verzeih bitte die lange Verzögerung, aber mir kam da irgendwie Weihnachten und dann eine grausliche Grippe dazwischen :) Wie auch immer, jetzt gehts wieder an die Arbeit!

    Ein gutes neues Jahr an dieser Stelle an alle freundlichen Helferleins hier im Forum :o)

    Also das Tut aus Post #2 hab ich durch, mir war der Aufbau von relationalen Datenmodellen prinzipiell schon klar (würde ich zumindest meinen), das ganze mit OOP gemisch macht das Thema jetzt doch schon wieder ordentlich spannend. Ich bin soweit schon überzeugt dass das die geschicktere Variante ist. Allerdings sind mir jetzt beim Aufbau von dem Modell noch ein paar Sachen unklar. Und mit Aufbau meine ich jetzt mal Skizzenhaft "am Papier".

    Wenn ich das DataSet nun so nutze wie es sein soll, dann kann ich ja meine bisherigen Objekte "kübeln" bzw. besser: Muss die darin enthaltenen Informationen natürlich im Datenmodell abbilden. Jetzt habe ich dabei aber schon ganz zu Begin meines Programms ein Problem damit. Denn am Anfang wird aus einem Haufen G-Code eine grafische Abbildung von einem Bauteil erzeugt. Diese Abbildung erfolgt in Form einer Region. Diese Region wird dann mit dem vorliegenden Greifer auf Überschneidungen geprüft, also ob der Greifer das Teil überhaupt aufnehmen kann. Im Moment passiert dies in der Importer Klasse. Diese bekommt mit dem Konstruktor den Pfad zu dem "G-Code Haufen" und werkelt dann munter in einem anderern Thread. Dieser Importer beinhaltet dann alle Informationen zu diesem einen Auftrag. Also angefangen beim Material, bis hin zur Auflistung der einzelnen Bauteile. Wie bekomme ich nun solche graphischen Elemente in das DataSet? Ich schätze mal garnicht und es gehört woanders hin. Nur wohin? :)

    Ich werde nun mal Versuchen ein DataSet zu erzeugen, welches die Struktur in meinem Programm abbildet. Mal sehen wie weit ich damit komme!

    LG Günther
    ist bisserl dumm, dass die TabellenNamen teilweise nur teilweise lesbar sind.

    Ich würde das mit den Prim- und ForeignKeys einheitlicher handhaben:
    PrimkeyName ist immer ID
    ForeignkeyName ist immer die ZielTabelle + ID
    Schlüsselspalten einheitlich Integer, keine zusammengesetzten Schlüssel.
    Doch - bei MittlerTabellen können beide ForeignKey zusammen den Primkey bilden, aber ich hab ja schon gesagt, wie ForeignKeys heissen müssen.
    Aber sonst keine zusammengesetzten Schlüssel!

    Guck daraufhin die Tabellen [tt]Paletten...[tt], PalettenPlatz, Palette, Stapel, naja - einfach alle an - entspricht ja keine einzige meinen Vorstellungen (doch - PalettenTemplate!).



    Denn gebe ich mal wieder, was dein Modell mir sagt - und du korrigierst alles, was ich falsch verstanden habe.
    Es gibt Aufträge, und jeder Auftrag hat viele Ronde. Hä? was ist eine Ronde? Eine Ronde ist offsichtlich etwas, was auf ein RondenBibliothek verweist?

    Hä? du verfknüpst einen Auftrag über Ronden mit vielen RondenBiblitotheken???

    Also in meiner Welt wäre was bei dir Rondenbibliothek heisst die Entität "Ronde".
    Und was bei dir "Ronde" heisst, wäre bei mir ein Auftrag-Posten.
    Dann hätte ein Auftrag viele Auftragposten, deren jeder auf ein Ronde verweist - was in meiner Welt eher einen Sinn ergibt.

    Und wie gesagt - die Schlüsselspalten ordentlich machen.

    Weiter.
    Ein Auftragposten ist über viele Stapel mit vielen Paletten verknüpft - ist das tatsächlich inne Realität so? Weil das ist ja eine schöne Sucherei, wenn man einen Auftrag fertig hat und abliefern will - stell ich mir vor.
    Aber ist vlt. nicht anners modellierbar, also ich denk, die Realität ist, dass die Ronden eines AuftragPostens evtl. nicht alle auf dieselbe Palette passen - müssen folglich mehrere Paletten her, und damit tatsächlich auch mehrere Stapel - check.

    Die Art einer Palette wird wesentlich übers PalettenTemplate beschrieben - check

    Ein PalettenPlatz enthält viele Paletten - ist das so?

    Dann gibts da noch die unleserlichen Tabellen PalettenPlatzHa? und Paletten? - da habich keine Idee, wasses damit auf sich haben könnte.
    Frage an dich: Was hat es damit auf sich?
    Danke für deine Antwort!

    Das mit den Key Spalten kann ich natürlich anpassen. Die Geschichte mit mehreren Fremdschlüßeln stimmt so eh nicht, das ist falsch im Modell drin. Aber da fehlt mir irgendwie im Designer die Möglichkeit eine 1:1 Relation zu erzeugen. Warum? Dazu weiter unten bei der Beschreibung:

    Ich beschreibe mal den tatsächlichen Aufbau von dem Programm:

    Es gibt eine Auftragsliste:



    Je ein Auftrag ist dann das Ergebnis der G-Code Auswertung von einem CNC-Programm. Darin Enthalten sind Informationen wie Blechabmessungen, Blechdicke, Material, Rondenauflistung.
    Im Prinzip ist dies ein rechteckiges Blech aus dem eben eine bestimmte Anzahl von Ronden (runde Scheiben) herausgeschnitten wurden. Diese Ronden sind die Bauteile die der Roboter dann bearbeitet. siehe Bild:



    Im obigen Bild ist das Ergebnis zu sehen. Eine Blechtafel und in grün die geschnittenen Ronden. Die gelben kleckse zeigen die Sauger des Greifers, wie dieser die Ronde aufnimmt. D.h. hinter einer Ronde stecken Informationen wie Durchmesser, Position, Greiferanordnung, Entnahmenummer, die graphische Darstellung, usw.

    Das heißt ein Auftrag besteht aus X-Ronden, wobei diese in einem Auftrag nicht gleich sein müssen (so wie im Bild), sondern es können in einem Auftrag auch 5 verschiedene Ronden (unterscheiden sich im Durchmesser) vorkommen. Diese Ronden werden dann sortenrein (gleiche Durchmesser) bestimmten Paletten zugeteilt. Je nach Rondengröße zu Palettengröße passen natürlich eine unterschiedliche Anzahl von Stapel auf eine Palette. Und so kann es natürlich auch vorkommen, dass ein Auftrag auf mehrere Paletten/Stapel verteilt wird. Sei es aufgrund der unterschiedlichen Durchmesser, aber auch aufgrund der Menge.

    So und diese Paletten werden dann einem Palettenplatz zugeordnet. Also genauer natürlich wird EINE Palette EINEM Platz zugeordnet. Da wären wir dann wieder bei meinem Problem mit der 1:1 Relation.

    Hier eine Abbildung der Palettenplätze:



    Wie die Abbildung zeigt gibt es eigentlich an die 20 Palettenplätze. Die Palettenplätze 4.0 - 4.4 sind in der Abbildung ausgeblendet, denn diese Überschneiden sich mit 1 & 2. Dies sind Spezialplätze, die sind Vergleichbar jeweils mit den Plätzen 1.0-1.4, aber um ca. 300mm breiter. D.h. sie überschneiden sich mit Platz 2. In der Anicht könnte man kaum was lesen wenn ich diese anzeigen würde.

    Und da ist auch die Lösung für einen Teil der Verwirrung mit den Palettenplatz-Tabellen. Es gibt eine Tabelle für die Hauptgruppe (1.0 - 4.0) und jeder von diesen Hauptplätzen hat nun 4 "Unterplätze". Die Unterscheiden sich alle nur durch ihre Größe. Also von den nicht lesbaren Tabellenbezeichnungen war die eine "PalettenPlatzHauptGruppe" und eine "PalettenPlatzUnterGruppe". Dieser Aufbau zeigt offengestanden nur mein Unvermögen so eine Baumstruktur abzubilden :o)

    Soweit zur Realität. Ich hoffe das ist nachvollziehbar? Bin was das angeht bestimmt schon ordentlich "Betriebsblind" :)

    Danke und LG
    Günther

    EDIT:
    Und mit den zig Unterbrechnungen im Büro hab ich natürlich glatt einen Punkt vergessen: Die Rondenbibliothek!
    Und zwar, diese Bauteile (Ronden) werden ja jedes mal wenn sie in einem Programm vorkommen, neu erzeugt. (Diese Aussage impliziert jetzt schon, eine Ronde ist nicht an ein bestimmtes Programm gebunden, vielmehr ist ein "Programm" nur eine (schneidoptimierte) Kombinitation von Ronden). Jetzt muss der Bediener aber die Möglichkeit haben, bestimmte Einstellungen für eine Ronde zu treffen. z.B. ob diese überhaupt mit dem Roboter bearbeitet werden soll, oder ob diese vermessen werden soll, wenn ja mit welchen Toleranzfeldern usw... Um diese Informationen nun speichern zu können gibt es eben diese Rondenbibliothek. Darin werden alle relevanten Informationen zu einer Ronde gespeichert (am PC dann in Form einer XML-Datei). Immer wieder neu erstellt wird die Ronde trotzdem, denn es könnte ja eine Bauteiländerung gegeben haben. Und das kann ich sonst nicht erkennen und liegt auch nicht in meinem Einflussbereich.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GuentherA“ ()