175 lines
19 KiB
HTML
175 lines
19 KiB
HTML
<html><head><title>Assembly project/de</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Assembly project/de</h1></div>
|
|
|
|
<div id="mw-content-text" lang="de" dir="ltr" class="mw-content-ltr"><hr/><div class="mw-parser-output"><p>Hier ist der Projektplan für das <b>Assembly</b>-Modul (Montagemodul) als Teil der <a href="https://www.freecadweb.org/wiki/index.php?title=Development_roadmap/de" title="Development roadmap/de">Development roadmap</a>
|
|
</p>
|
|
<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
|
|
<ul>
|
|
<li class="toclevel-1 tocsection-1"><a href="#Anliegen_und_Grundlagen"><span class="tocnumber">1</span> <span class="toctext">Anliegen und Grundlagen</span></a></li>
|
|
<li class="toclevel-1 tocsection-2"><a href="#Ergebnis"><span class="tocnumber">2</span> <span class="toctext">Ergebnis</span></a></li>
|
|
<li class="toclevel-1 tocsection-3"><a href="#Brainstorming"><span class="tocnumber">3</span> <span class="toctext">Brainstorming</span></a>
|
|
<ul>
|
|
<li class="toclevel-2 tocsection-4"><a href="#Multi-Modell"><span class="tocnumber">3.1</span> <span class="toctext">Multi-Modell</span></a></li>
|
|
<li class="toclevel-2 tocsection-5"><a href="#Projektmanagement"><span class="tocnumber">3.2</span> <span class="toctext">Projektmanagement</span></a></li>
|
|
<li class="toclevel-2 tocsection-6"><a href="#Copyright"><span class="tocnumber">3.3</span> <span class="toctext">Copyright</span></a></li>
|
|
<li class="toclevel-2 tocsection-7"><a href="#ISO_10303"><span class="tocnumber">3.4</span> <span class="toctext">ISO 10303</span></a></li>
|
|
<li class="toclevel-2 tocsection-8"><a href="#Montage-Randbedingungen_.28assembly_constraints.29"><span class="tocnumber">3.5</span> <span class="toctext">Montage-Randbedingungen (assembly constraints)</span></a></li>
|
|
<li class="toclevel-2 tocsection-9"><a href="#Kinematik"><span class="tocnumber">3.6</span> <span class="toctext">Kinematik</span></a></li>
|
|
<li class="toclevel-2 tocsection-10"><a href="#Versionskontrolle"><span class="tocnumber">3.7</span> <span class="toctext">Versionskontrolle</span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toclevel-1 tocsection-11"><a href="#Organisation"><span class="tocnumber">4</span> <span class="toctext">Organisation</span></a>
|
|
<ul>
|
|
<li class="toclevel-2 tocsection-12"><a href="#Infrastruktur"><span class="tocnumber">4.1</span> <span class="toctext">Infrastruktur</span></a>
|
|
<ul>
|
|
<li class="toclevel-3 tocsection-13"><a href="#Multi-Modell_2"><span class="tocnumber">4.1.1</span> <span class="toctext">Multi-Modell</span></a></li>
|
|
<li class="toclevel-3 tocsection-14"><a href="#Part-Trees"><span class="tocnumber">4.1.2</span> <span class="toctext">Part-Trees</span></a></li>
|
|
<li class="toclevel-3 tocsection-15"><a href="#Einheitliches_Drag.2FDrop.2FCopy.2FPaste-Interface"><span class="tocnumber">4.1.3</span> <span class="toctext">Einheitliches Drag/Drop/Copy/Paste-Interface</span></a></li>
|
|
<li class="toclevel-3 tocsection-16"><a href="#Externe_Ressourcen"><span class="tocnumber">4.1.4</span> <span class="toctext">Externe Ressourcen</span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toclevel-2 tocsection-17"><a href="#Material"><span class="tocnumber">4.2</span> <span class="toctext">Material</span></a></li>
|
|
<li class="toclevel-2 tocsection-18"><a href="#Objektmodell"><span class="tocnumber">4.3</span> <span class="toctext">Objektmodell</span></a></li>
|
|
<li class="toclevel-2 tocsection-19"><a href="#Assembly_constraint_solver"><span class="tocnumber">4.4</span> <span class="toctext">Assembly constraint solver</span></a></li>
|
|
<li class="toclevel-2 tocsection-20"><a href="#Interface_Physiksimulation"><span class="tocnumber">4.5</span> <span class="toctext">Interface Physiksimulation</span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toclevel-1 tocsection-21"><a href="#N.C3.A4chste_Aktionen"><span class="tocnumber">5</span> <span class="toctext">Nächste Aktionen</span></a></li>
|
|
<li class="toclevel-1 tocsection-22"><a href="#Tutorial"><span class="tocnumber">6</span> <span class="toctext">Tutorial</span></a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h2><span class="mw-headline" id="Anliegen_und_Grundlagen">Anliegen und Grundlagen</span></h2>
|
|
<p>Dies ist ein Softwareentwicklungsprojekt mit dem Ziel, Montage- und Fertigungsfähigkeiten zu implementieren. Es geht um die Integration einiger Kern-Features in die FreeCAD-Modulesammlung <b>Part and Assembly</b>,
|
|
</p><p>Die Entwicklungsschritte werden hier geplant und im Issue-Tracking-System verfolgt um ein brauchbares Change-Log zu erhalten:
|
|
<a rel="nofollow" class="external text" href="http://apps.sourceforge.net/mantisbt/free-cad/my_view_page.php">Issue tracker</a>
|
|
</p>
|
|
<h2><span class="mw-headline" id="Ergebnis">Ergebnis</span></h2>
|
|
<p>Ziel des Projektes ist es, FreeCAD zu befähigen, Design-Aufgaben wie diese umsetzen zu können:
|
|
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Gripper.jpg" class="image"><img alt="Gripper.jpg" src="400px-Gripper.jpg" width="400" height="355" srcset="/wiki/images/thumb/7/78/Gripper.jpg/600px-Gripper.jpg 1.5x, /wiki/images/thumb/7/78/Gripper.jpg/800px-Gripper.jpg 2x" /></a>
|
|
</p><p>Dies wird durch das <b>Assembly</b>-Modul ermöglicht werden, welches die verschiedenen Teile und Zwangs- bzw. Nebenbedingungen zusammenfasst und dabei so nahe wie möglich an der Spezifikation ISO 10303 bleibt, um Modelländerungen zu erleichtern.
|
|
</p><p>Ein weiteres Ziel ist die Verwendung von <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_Dynamics_Engine">ODE</a> für Kinematik.
|
|
</p>
|
|
<h2><span class="mw-headline" id="Brainstorming">Brainstorming</span></h2>
|
|
<h3><span class="mw-headline" id="Multi-Modell">Multi-Modell</span></h3>
|
|
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:MultiModel.png" class="image"><img alt="MultiModel.png" src="600px-MultiModel.png" width="600" height="341" srcset="/wiki/images/thumb/7/70/MultiModel.png/900px-MultiModel.png 1.5x, /wiki/images/thumb/7/70/MultiModel.png/1200px-MultiModel.png 2x" /></a></div>
|
|
<p>Ein Schlüssel-Feature komplexer Designs ist die Möglichkeit, dieses in handhabbare Teile zu zerlegen.
|
|
Es ist schlicht nicht möglich, an allen Aspekten eines Designs zur gleichen Zeit oder allein zu arbeiten. Dies gilt für die Modellierung der Geometrie genauso wie für FEM-oder CAM-Aufgaben.
|
|
</p><p>Daher benötigt FreeCAD die Fähigkeit, Modelle zu teilen. Dies öffnet folgende Möglichkeiten:
|
|
</p>
|
|
<ul><li> <b>Late loading</b> - Hauptspeicher und Grafik werden nur für den gegenwärtig bearbeiteten Teil benötigt.</li>
|
|
<li> <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Concurrent_engineering"><b>Concurrent engineering</b></a> - erlaubt mehreren Mitarbeitern am selben Design zu arbeiten.</li>
|
|
<li> Feinkörnige <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Version_control"><b>Versionskontrolle</b></a> - bessere Kontrolle über verschiedene Designaspekte.</li>
|
|
<li> und vieles mehr....</li></ul>
|
|
<p>Ein Multi-Modell-Design könnte folgendermaßen aussehen:
|
|
</p>
|
|
<h3><span class="mw-headline" id="Projektmanagement">Projektmanagement</span></h3>
|
|
<p>Multi-Modell bedeutet, daß eine Menge Dateien, wahrscheinlich in einem gemeinsamen Verzeichnis, zu einem einzigen Projekt gehören.
|
|
Eine Projektdatei und ein Projekt-Browser können die Organisation dieser Dateien erleichtern. Weiterhin kann dann zusätzliche Information über das Projekt oder eine Projekt-Webseite mit verwaltet werden.
|
|
</p><p>1. Zwei Modi: "Simple" und "Project" Modus. Simple bedeutet, dass nur ein Dokument angelegt wird und alle Assemblies und Teile in dieser Datei abgelegt werden. Wenn ein Projekt geöffnet oder angelegt wird, befindet sich FreeCAD im Project-Modus.
|
|
</p><p>2. Projekte. Die Position der FCPrj-Datei auf dem Laufwerk definiert ein Projektverzeichnis. Alle Dateien unterhalb dieses Verzeichnisses werden mit relativen Pfaden zu diesem Projektverzeichnis definiert. Eine zusätzliche Ansicht auf der linken Seite wird den ProjectExplorer darstellen, welcher den Verzeichnisbaum und die daruntger verwalteten Dateien anzeigt.
|
|
Das Projektverzeichnis ist gleichzeitig das Wurzelverzeichnis (root) einer SVN-Sandbox, wodurch spätere Verteilung und Versionskontrolle (Konfigurationsmanagement) erleichtert werden. Externe Referenzen (zu einem Verzeichnis außerhalb des Verzeichnisbaumes, einem Server-Share oder einer Web-Ressource) werden im ProjectExplorer separat gehandhabt und angezeigt (ein Pseudo-Verzeichnis für jeden Dateiserver oder Webserver). Dies erleichtert den Überblick über externe Referenzen und das einfache Re-Routing derselben.
|
|
</p>
|
|
<h3><span class="mw-headline" id="Copyright">Copyright</span></h3>
|
|
<p>Das Thema Copyright für 3D-Modelle ist ein interessantes Feld. 3D-Modelle fallen unter das Copyright, welches dem <b>Autor</b>en eines Modells zugestanden wird. Es ist nur möglich, die Form, welche durch das Modell repräsentiert wird, durch ein Patent oder Geschmacksmuster schützen zu lassen (US).
|
|
Patente decken aber nur den kommerziellen Teil der tatsächlichen Teileproduktion.
|
|
Als Beispiel sei hier das <a rel="nofollow" class="external text" href="http://patft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=D464,651.PN.&OS=PN/D464,651&RS=PN/D464,651">Microsoft Mouse design patent</a> angeführt.
|
|
</p><p>Wir müssen also für jedes Model/Produkt/Datei eines Designs den Autoren (Copyright-Inhaber) speichern.
|
|
Als Lizenz würde ich CC-Lizenzen verwenden: <a rel="nofollow" class="external free" href="http://creativecommons.org/">http://creativecommons.org/</a>
|
|
</p><p>Abkürzungsschlüssel für CC-Lizenzen:
|
|
</p>
|
|
<ul><li> BY = Attribution only</li>
|
|
<li> BY-ND = Attribution-NoDerivatives</li>
|
|
<li> BY-NC-ND = Attribution-NonCommercial- NoDerivatives</li>
|
|
<li> BY-NC = Attribution-NonCommercial</li>
|
|
<li> BY-NC-SA = Attribution-NonCommercial- ShareAlike</li>
|
|
<li> BY-SA = Attribution-ShareAlike</li>
|
|
<li> PD = Dedicated to or marked as being in the public domain via one of our public domain tools, or other public domain work; adaptations of works in the public domain may be built upon and licensed by the creator under any license terms desired </li></ul>
|
|
<p>Zusätzlich kann eine URL zum vollständigen Lizenztext für alternative Lizenzen verwendet werden.
|
|
</p>
|
|
<h3><span class="mw-headline" id="ISO_10303">ISO 10303</span></h3>
|
|
<p>Die ISO 10303 (STEP) ist in diesem Zusammenhang sehr wichtig. Es ist die einzige mir bekannte Definition von Produktstrukturen, welche standardisiert und gemeinhin anerkannt ist.
|
|
</p>
|
|
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Product_structure_modeling_Process-Data_diagram.gif" class="image"><img alt="Product structure modeling Process-Data diagram.gif" src="500px-Product_structure_modeling_Process-Data_diagram.gif" width="500" height="556" srcset="/wiki/images/thumb/f/f7/Product_structure_modeling_Process-Data_diagram.gif/750px-Product_structure_modeling_Process-Data_diagram.gif 1.5x, /wiki/images/f/f7/Product_structure_modeling_Process-Data_diagram.gif 2x" /></a></div>
|
|
<p>Hier einige Links mit Informationen:
|
|
</p>
|
|
<ul><li> <a rel="nofollow" class="external text" href="http://de.wikipedia.org/wiki/Standard_for_the_exchange_of_product_model_data">ISO 10303 auf Wikipedia</a></li>
|
|
<li> <a rel="nofollow" class="external text" href="http://www.wikistep.org/index.php/Introduction_and_Overview_of_STEP">Einführung und Übersicht</a></li>
|
|
<li> <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/ISO_10303-11">ISO 10303-11</a> über die Modelliersprache (EXPRESS)</li>
|
|
<li> <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Product_Structure_Modeling">Ein Wikipedia-Artikel</a> über Produktmodellierung</li>
|
|
<li> <a rel="nofollow" class="external text" href="http://www.steptools.com/support/stdev_docs/express/step_irs/index.html#part41">Überblick Part 41 -- Grundlagen der Produktbeschreibung und Support</a></li>
|
|
<li> <a rel="nofollow" class="external text" href="http://www.steptools.com/support/stdev_docs/express/step_irs/index.html#part44">Überblick Part 44 (edition 2) -- Produktstrukturkonfiguration</a></li>
|
|
<li> <a rel="nofollow" class="external text" href="http://www.steptools.com/support/stdev_docs/express/ap214/index.html">Beispiele kleiner AP 214 Dateien</a></li></ul>
|
|
<h3><span class="mw-headline" id="Montage-Randbedingungen_.28assembly_constraints.29">Montage-Randbedingungen (assembly constraints)</span></h3>
|
|
<p>Eine wichtige Rolle beim Zusammensetzen großer Modelle und Produkte spielen die Randbedingungen der Montage (assembly constraints), welche bestimmte Regeln festlegen, nach denen die Teile eines Produktes zusammengesetzt werden.
|
|
Diese sind im wesentlichen Fix, FaceToFace (Fläche zu Fläche), Angle (Winkel), Offset (Verschiebung) und eine Art Musterbildung. Diese Randbedingungen benötigen zum Aufrechterhalten bei Modelländerungen einen spezialisierten Solver.
|
|
Dieser Solver unterscheidet sich fundamental vom Sketch-Solver. Ich glaube wir werden einen Graph-basierten Ansatz hierfür verfolgen...
|
|
</p>
|
|
<h3><span class="mw-headline" id="Kinematik">Kinematik</span></h3>
|
|
<p>Ein weiterer Schritt wäre die Verwendung von <a rel="nofollow" class="external text" href="http://ode.org/">ODE</a> oder ähnlichen Bibliotheken, um Teile und Randbedingungen einer kinematischen Maschinensimulation zu unterziehen. Dies würde die Kollisionsprüfung und Analyse des Verhaltens mechanischer Systeme ermöglichen.
|
|
</p>
|
|
<h3><span class="mw-headline" id="Versionskontrolle">Versionskontrolle</span></h3>
|
|
<p>Wichtige Punkte sind verteilte Entwicklung und Versionskontrolle, da ein Multimodell-Design die Zerlegung und Aufteilung größerer Designs im Team ermöglicht. Für einen Softwareentwickler klingen "verteilt" und "Version" vertraut, also warum nicht ein <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Distributed_Version_Control_System">DVCS</a> verwenden?
|
|
Ein guter Vergleich findet sich <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Comparison_of_revision_control_software#Technical_information">hier</a>.
|
|
</p><p>Da wir mit großen und schwer vergleichbaren (diff) Datenmengen zu tun haben, sind wir auf die Versionskontrollsysteme angewiesen, welche ein snapshot-persistence-Modell verwenden. Alle Systeme, welche nur Versionsunterschiede speichern, werden schwerwiegende Probleme mit diesen Daten haben (selbst getestet mit Mercurial- und Catia-Dateien).
|
|
Wenn man kommerzielle und unfreie Varianten aussortiert, bleiben nur noch <a rel="nofollow" class="external text" href="http://de.wikipedia.org/wiki/Git">Git</a> und <a rel="nofollow" class="external text" href="http://subversion.apache.org/">SVN</a>.
|
|
</p><p>Die Verwendung von Git für diese Aufgabe setzt zwei große Einschränkungen:
|
|
</p>
|
|
<ul><li> Git ist reichlich kompliziert; Branching, Merging und Tagging entlang eines nichtlinearen Entwicklungspfades, oder sogar Merging mit externen Repositories (push, pull), bringt eine hohe Komplexität mit sich, die schwierig vor dem Anwender zu verbergen ist.</li>
|
|
<li> Git ermöglicht Dateityp-spezifische Merge- und Diff-Handler - wir benötigen einen für <i>.fcstd</i>. Dieser Handler muß zwei FreeCAD-Dokumente untersuchen und Unterschiede in den Objekten, Eigenschaften und Parametern zeigen und integrieren können. Ebenfalls nicht einfach.</li></ul>
|
|
<p>Andererseits würde die Verwendung von Git eine Menge Möglichkeiten eröffnen, von denen hochklassige PLM-Systeme nur träumen können...
|
|
</p>
|
|
<h2><span class="mw-headline" id="Organisation">Organisation</span></h2>
|
|
<p>Hier einige der für ein brauchbares Montagemodul nötigen Entwicklungsaufgaben:
|
|
</p>
|
|
<h3><span class="mw-headline" id="Infrastruktur">Infrastruktur</span></h3>
|
|
<p>Das Montagemodul benötigt einige Änderungen am Basissystem und im Infrastruktur-Layer von FreeCAD.
|
|
</p>
|
|
<h4><span class="mw-headline" id="Multi-Modell_2">Multi-Modell</span></h4>
|
|
<p>Multi-Modell war von Anfang an ein Ziel in der FreeCAD-Entwicklung. Daher gibt es bereits ein MDI zum Laden einer unbegrenzten Anzahl von Dokumenten. Allerdings muß der 3D-Viewer erweitert werden, um mehr als ein Dokument im Sichtbereich (View) darstellen zu können (Part-Trees).
|
|
</p>
|
|
<h4><span class="mw-headline" id="Part-Trees">Part-Trees</span></h4>
|
|
<p>Da in der Montage das Zusammensetzen von Teilen und Teilegruppen der Hauptanwendungsfall ist, müssen die Werkzeuge zum Gruppieren von Teilen in einem Baum implementiert werden. Anders als die DocumentObjectGroup muß die Montagegruppe die Sichtbarkeit und Platzierung, am besten durch Aufeinandersetzen mehrerer ViewProvider, von Kindern verwalten können.
|
|
Dafür wird eine Art ClaimChildren()-Interface zu den ViewProvidern benötigt.
|
|
</p>
|
|
<h4><span class="mw-headline" id="Einheitliches_Drag.2FDrop.2FCopy.2FPaste-Interface">Einheitliches Drag/Drop/Copy/Paste-Interface</span></h4>
|
|
<p>Ein Interface um ViewProvider und Workbenches volle Kontrolle über Drag/Drop/Copy/Paste-Operationen im Baum oder der 3D-Ansicht zu ermöglichen.
|
|
</p>
|
|
<h4><span class="mw-headline" id="Externe_Ressourcen">Externe Ressourcen</span></h4>
|
|
<p>Handhabung von Links (interner oder externe Browser). Bedeutet das Laden von Ressource über potentiell langsame Verbindungen (http).
|
|
</p>
|
|
<h3><span class="mw-headline" id="Material">Material</span></h3>
|
|
<p>Beschreibung von Materialien und deren Eigenschaften ist grundlegender Bestandteil eines CAD/CAE-Systems.
|
|
Materialien haben unzählige Eigenschaften und Namensgebungen hängen stark vom Einsatzgebiet ab: FEM und Maschinenbau haben zum Beispiel verschiedene Frameworks und Standards der Materialbeschreibung.
|
|
</p><p>Für die Materialbeschreibung gibt es einen eigenen Artikel: <a href="https://www.freecadweb.org/wiki/index.php?title=Material/de" title="Material/de">Material</a>
|
|
</p>
|
|
<h3><span class="mw-headline" id="Objektmodell">Objektmodell</span></h3>
|
|
<p>Klassenbaum für folgende Konzepte nötig: Referenzen, Interfaces, Dokumentenlinks, Ansichten, Objektgruppen, Randbedingungen, Konfigurationen u.v.m.
|
|
</p><p>Implementierung eines STEP-Importers, der mehr Möglichkeiten bietet, als nur die Prüfung von Geometrie und Farbe.
|
|
</p>
|
|
<h3><span class="mw-headline" id="Assembly_constraint_solver">Assembly constraint solver</span></h3>
|
|
<p>Definiere ein Interface zum Assembly Constraint Solver analog zum Sketcher Solver interface.
|
|
</p>
|
|
<h3><span class="mw-headline" id="Interface_Physiksimulation">Interface Physiksimulation</span></h3>
|
|
<p>Interface um einer (externen) (Multi-)Physiksimulationssoftware die Kontrolle über die Positionierung von Teilen einer Baugruppe zu ermöglichen. Dies eröffnet die Möglichkeit der Verwendung von "bullet" oder "ODE" für DMU und kinematische Tests.
|
|
</p>
|
|
<h2><span class="mw-headline" id="N.C3.A4chste_Aktionen">Nächste Aktionen</span></h2>
|
|
<ul><li> Objektmodell</li>
|
|
<li> Warten auf den 0.12 release branch </li></ul>
|
|
<h2><span class="mw-headline" id="Tutorial">Tutorial</span></h2>
|
|
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Assembly_Basic_Tutorial/de" title="Assembly Basic Tutorial/de">Assembly Basic Tutorial</a></li></ul>
|
|
<div style="clear:both"></div>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div><div class="printfooter">
|
|
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Assembly_project/de&oldid=260297">http://www.freecadweb.org/wiki/index.php?title=Assembly_project/de&oldid=260297</a>"</div>
|
|
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
<div id="mw-navigation">
|
|
<h2>Navigation menu</h2>
|
|
|
|
</body></html> |