RepRap Workbench, 1st draft

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Post Reply
ubit
Posts: 57
Joined: Mon Dec 15, 2014 8:58 am

RepRap Workbench, 1st draft

Post by ubit »

Hi,

in den letzten Wochen habe ich versucht mich ein wenig in Python und FreeCAD einzuarbeiten um eine eigene Workbench zu basteln. Jetzt bin ich soweit, dass ich den ersten Entwurf hier vorstellen möchte. Siehe Attachment.

Im Moment besteht diese Workbench nur aus einem einzigen Befehl "Create" mit dem sich ein Standardteil erzeugen lässt.

Wenn man das Kommando startet, öffnet sich ein Formular "Tasks".

Hier gibt es oben zwei Textfelder mit denen man in der Bibliothek suchen kann (im Moment ist nur eine Schraube und ein paar Unterlegscheiben drin). Zwei Felder, damit man z.B. in einem Feld "M3" stehen lassen kann, während man im zweiten nach "Nut", "Washer", "Screw" usw. sucht. Man kann auch einfach auf "Search" klicken, dann findet das Ding halt all (die wenigen Teile) die aktuell in der Bibliothek stehen.

Die Daten werden in einer SQLite-Datenbank verwaltet. Ich hoffe, dass alle Auslieferungsversionen SQLite3 beinhalten? Die aktuelle 0.14 Windows Version hat kein sqlite3, die 0.15 Dev schon. Mal schauen, was die offizielle 0.15 bringt *g*

Wenn man gesucht hat, kann man bei "Select Part" ggf. aus der Treffermenge ein konkretes Teil auswählen. Bei "Select variant" wählt man dann eine Variante dieses Teils, also z.B. "M4" bei einer Unterlegscheibe.

Darunter erscheinen dann die Parameter (und ganz, ganz unten ggf. eine Skizze des Teils mit der die Parameter erläutert weden). Die meisten Parameter sind fest aus der Datenbank vorgegeben. Wenn man sich aber mal das Teil "ISO 1207" anschaut, gibt es eine Besonderheit:

Der Parameter "l" ist eine Auswahl mit der sich "typische" Längen der Schrauben auswählen lassen. Alternativ kann man dort auch einfach "händisch" die gewünschte Länge eintragen (und muss dann ggf. schauen, wo man so eine exotische Schraubenlänge kaufen kann).

Unter den Parametern kann man wählen, wie detailliert das Teil dargestellt werden soll. Aktuell wird z.B. die Fase bei den Unterlegscheiben "mit Fase" in der Draft-Darstellung weggelassen.

Ein Click auf "Create" sollte das Teil in das aktuelle Dokument einfügen und die darunter befindlichen Optionen zur Platzierung "freischalten". Wo das Teil Platziert wird entscheidet sich auf Basis der aktuellen Auswahl. Man kann z.B. einfach einen Punkt auswählen und das Teil versucht "sinnvolle" Drehungen zu finden und das Teil an den Punkt zu platzieren. Wählt man einen Punkt UND eine Fläche, wird für die Drehung der Normalenvektor der Fläche genutzt und der Punkt als "Ziel". Man kann auch einfach nur eine Fläche auswählen oder eine Kante - das Programm versucht immer möglichst sinnvolle "Placements" zu finden. Im Moment aktualisiert sich das Feld "Placment" noch nicht wenn man eine neue Auswahl macht - das kommt aber als Nächstes rein (wie's geht weiß ich schon).

Im Feld "Placement" kann man die gefundenen Platzierungen einfach durchprobieren. Zusätzlich kann man das Teil in alle 6 Himmelsrichtungen drehen mit den Buttons "Up", "Down", "Right", ... und darunter einen Offset für X-, Y- und Z einstellen. Der Offset dreht aktuell leider noch nicht mit dem Objekt mit.

Oben kann man mit "Cancel" das aktuell bearbeitete Teil verwerfen oder mit "OK" behalten (und das Formular schließen).

Das Ganze ist noch laaange nicht fertig. Es fehlt natürlich noch "Material" in Form von ganz vielen Standardteilen und so richtig robust ist das Progrämmchen auch noch nicht. Es ist aber so angelegt, dass ich recht einfach zusätzliche Bauteile hinzufügen kann.

Installation ist einfach: Auspacken und den Ordern in "Mods" packen. Schreibrechte auf den Unterorderner "data" sind wichtig, damit die Datenbank angelegt werden kann. Die herumgeisternde 0.15 für Windows sollte funktionieren.

Aktuell ist das natürlich nicht viel mehr als eine grobe Designstudie. Trotzdem würde mich interessieren, wie Eure Meinung dazu ist, ob das Teil überhaupt anderswo als bei mir einigermaßen funktioniert, welche (Verständnis- und Laufzeit-)Probleme es ggf. gibt, ob ich irgendwas mache was völlig verkehrt ist usw.

Ciao, Udo
Attachments
RepRap.zip
(100.91 KiB) Downloaded 113 times
jreinhardt
Posts: 329
Joined: Mon Sep 09, 2013 6:08 pm

Re: RepRap Workbench, 1st draft

Post by jreinhardt »

Great Minds think alike: http://www.bolts-library.org/en/index.html
und
viewtopic.php?f=8&t=4549

Ausserdem auch noch viewtopic.php?f=22&t=6558#p52887

Ich bin gerade dabei, BOLTS in FreeCAD zu integrieren, muss aber noch einige größere Umbaumaßnahmen tätigen. Wir können uns gerne zusammentun.
BOLTS, standard parts library for FreeCAD Thread, Help with Translation
ubit
Posts: 57
Joined: Mon Dec 15, 2014 8:58 am

Re: RepRap Workbench, 1st draft

Post by ubit »

Schon klar, kenne ich Beides *g* Aber:

Bolts bekomme ich nicht lauffähig. Du hast das entwickelt? Das Problem scheinen Einige zu haben - eine Lösung habe ich bisher nicht gefunden. Irgendwie findet Bolts "yaml" nicht und ich habe nicht gefunden, wie ich das für die Windows-Versionen nachrüsten könnte.

ScrewMaker ist Ideengeber *g* ist halt aber sehr eingeschränkt und schwer erweiterbar.

Bei meinem Ansatz stehen ein paar Punkte im Vordergrund:

1. Möglichst komfortables Suchen von Teilen mit Hilfe einer "richtigen" (*hust* und das im Zusammenhang mit sqlite) Datenbank

2. Sehr einfach erweiterbar ohne Eingriff in den allgemeinen Teil des Sourcecodes. Aktuell muss ich für ein neues Teil "nur" die eigentliche grafische Darstellung basteln (im Verzeichnis RepRapParts), was je nach Teil einfach bis komplex ist (Beispiel "HexNut" im Source ist ziemlich einfach) und die Datenbank mit den Parametern füllen. Das ist alles. Dazu gibt es eine (extrem einfache) Versionsverwaltung für die Datenbank mit der sich Updates ohne komplettes Neuaufsetzen einspielen lassen.

3. Möglichst hilfreich bei der Platzierung und Ausrichtung der Teile zu sein. Da hab' ich noch ein paar Ideen im Hinterkopf. So sollen die Teile sich z.B. gegenseitig "erkennen". Daher kommt aktuell auch die "seltsame" Parametrisierung der Gewinde bei den Schrauben. Das Teil soll mal in der Lage sein automatisch zu erkennen wo man z.B. eine Schraube bei einem Nema 17 Motor eindrehen kann und auch welche Schrauben dort passen. Dann klickt man den Motor an, erzeugt die Schraube und bekommt die 4 Befestigungsgewinde als mögliche Placements präsentiert. Oder man erzeugt eine Kupplung und das Teil zeigt einem die Achse(n) des Motors als Platzierungsoptionen an.

4. Stücklisten soll das Ding auch erzeugen können.

5. Gui und Modellerzeugung sind ziemlich getrennt (ok - da ist noch Optimierungspotential *g*) so dass sich relativ einfach ein alternatives Benutzerinterface stricken ließe - falls PySide auch mal abgelöst wird.

Ich hab' mich durchaus vorher umgeschaut, aber schlicht nicht das gefunden was ich haben möchte. Daher habe ich halt selbst angefangen zu stricken.

Ich denke, dass das Alles auch einfach etwas über Bolts + Screwmaker hinausgeht. Das Grundgerüst ließe sich z.B. auch für die Planung von Systemmöbeln oder Küchen einsetzen oder für Rohrleitungsplanung. Überall dort halt, wo Teile mit typisierten Verbindungen aneinander gebaut werden können. Man könnte z.B. auch die Schienen einer Modelleisenbahn damit planen. Alles das selbe Prinzip.

Ciao, Udo
User avatar
r-frank
Veteran
Posts: 2180
Joined: Thu Jan 24, 2013 6:26 pm
Location: Möckmühl, Germany
Contact:

Re: RepRap Workbench, 1st draft

Post by r-frank »

@Ubit: Full ACK

Meine Überlegungen waren Folgende:
- Habe unter Windows Bolts nicht (noobsicher) zum Laufen bekommen
- alte Regel: immer das, was man baucht, ist nicht da ... (also braucht man etwas mit wenig
Verwaltungsaufwand und problemlos erweiterbar)
- wir sprechen von Normteilen, einmal erstellt reichen einfache Kopien, ich brauche keine
Historie oder Parametrik mehr.
- ich brauch das auch nur für FreeCAD, nix sonst ...

Was ich mir "gebastelt" habe.
- Grundlage bildet der "Part Library Browser" von Yorik (siehe Macro Recipes-Seite)
- ich habe mir getrennt nach Oberbegriff und DIN-Nummer eine Verzeichnisstruktur angelegt
- in den Verzeichnissen sind jeweils "ZZ-Master"-Unterverzeichnisse
- in diesen liegen die parametrischen FreeCAD-Modelle
- aus diesen erzeuge ich dann passenden simple Kopien, die ich einzeln richtig benenne und
per Zwischenablage in separate Dateien kopiere
- ist 'ne Riesenarbeit, aber ich habe schon alles wesentliche beisammen, was ich brauche

Hier noch ein Screenshot:
Parts_Library.jpg
Parts_Library.jpg (200.69 KiB) Viewed 2424 times
Roland
Deutsche FreeCAD Tutorials auf Youtube
My GrabCAD FreeCAD-Projects
FreeCAD lessons for beginners in english

Native german speaker - so apologies for my english, no offense intended :)
ubit
Posts: 57
Joined: Mon Dec 15, 2014 8:58 am

Re: RepRap Workbench, 1st draft

Post by ubit »

Jo - die Part-Library ist schon nett, aber für meine Begriffe immer noch zu unübersichtlich und mit den ganzen Verzeichnissen zu viel Klickerei. Daher der Ansatz über Datenbank und Suchfunktion. Ich will mich nicht durch 5 Hierarchieebenen klicken müssen um eine M3-Schraube, eine M3-Mutter und 2 passende Unterlegscheiben zu platzieren. Bei meinem Ansatz gibt man in eines der Suchfelder einfach "M3" ein und im Anderen dann "Screw", "Nut", "Washer" und schon ist man den gesuchten Teilen ganz nah. Wenn man sogar weiß wie die Din oder Iso-Nummer ist, kann man auch direkt nach 7089 suchen um die passende Unterlegscheibe zu finden.

Außerdem finde ich, dass die Erzeugung der Teile nur die halbe Miete ist. Die Dinger müssen ja auch an die "richtigen" Stellen im Gesamtmodell. Das ist dann "eigentlich" die Aufgabe des Assembly-Moduls, was aber soweit ich das überblicken kann noch nicht wirklich am Horizont steht. Außerdem ist Assembly für solchen "Kleinkram" vermutlich deutlich überdimensioniert. Mein RepRap arbeitet daher auch mit Compounds und lokalen Koordinatensystemen so dass man ein falsch platziertes Teil meist sehr einfach zurechtrücken kann.

Klar ist es schön, wenn es 3D-Constraints gibt mit denen sich Teile platzieren lassen. Aber soweit ich das überblicke wird Assembly das über die Zusammenführung von 3D-Modellen aus vielen, vielen einzelnen Dateien lösen. Und ich kann mir beim besten Willen nicht vorstellen, dass das übersichtlich und schnell genug wird um 1001 Normteile zu setzen.

Das Ganze soll halt auch tauglich für Leute sein die mit Constraints überfordert wären und deren 3D-Vorstellungsvermögen begrenzt ist. Mit den aktuell verfügbaren Funktionen von FreeCAD tut man sich ziemlich schwer, wenn man einigermaßen komplexe Modelle zusammenbauen möchte, weil man z.B. dauernd zwischen verschiedenen Workbenches wechseln muss und die benötigten Funktionen erst findet, wenn man sich laaaange eingearbeitet hat.

Außerdem ist das Ganze eine nette Fingerübung. Bevor ich angefangen habe hatte ich von Python keine Ahnung und Qt kannte ich nur vor sehr, sehr langer Zeit und da auch nur sehr oberflächlich.

Jedenfalls bin ich ziemlich angetan von den Möglichkeiten die sich mit Python und FreeCAD auftun.

Ciao, Udo
ulrich1a
Veteran
Posts: 1957
Joined: Sun Jul 07, 2013 12:08 pm

Re: RepRap Workbench, 1st draft

Post by ulrich1a »

ubit wrote:Irgendwie findet Bolts "yaml" nicht und ich habe nicht gefunden, wie ich das für die Windows-Versionen nachrüsten könnte.
Siehe hier: viewtopic.php?f=8&t=4549&start=240#p80010 und folgende sowie hier: viewtopic.php?f=8&t=4549&start=250#p80289

Ulrich
Post Reply