Laden...

Vorhandene STL Datei in Windows Forms anzeigen

Erstellt von xp21xp vor 5 Jahren Letzter Beitrag vor 5 Jahren 4.136 Views
X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren
Vorhandene STL Datei in Windows Forms anzeigen

Abend

Eigentlich benötige ich die Möglichkeit in einer Windows-Forms Anwendung ein vorhandenes 3D Objekt(Extern erstellt) einzufügen. Zudem sollten Animationen mit weiteren 3D Objekten machbar sein. Im Grundgedanke ist das ganze also nichts anderes wie bei einem CAD-Programm wie z.b SolidWorks nur das die Dateien nicht erstellt werden müssen sondern vorhanden sind und nur zu Baugruppen Verknüpft werden.

Ich bin kein Profi und da das ganze viel Wissen in Anspruch nimmt möchte ich mich gar nicht erst daran versuchen sondern das ganze vereinfachen. Ich möchte nur eine 3D Datei (.stl Datei) in die Anwendung einfügen. Bedeutet man muss keine Animationen oder dergleichen damit machen können sondern es soll nur das 3D Objekt angezeigt werden und natürlich Drehbar sein. (3D Viewer)

Ist das ganze in Windows-Forms möglich? Also ich glaube kaum das ich ein 3D-Objekt einfach in eine Picture Box einfügen kann 👅

Gruß Tino

16.806 Beiträge seit 2008
vor 5 Jahren

Warum soll das nicht in WinForms möglich sein? Die UI Technologie setzt hier ja keine Grenzen.

Musst halt eine Dritt-Komponente - die es wie Sand am Meer gibt - finden, die das kann - oder selbst entwickeln.
Von Haus aus geht das natürlich nicht... einfach mal in Google danach suchen. Ist nicht so schwer 👍

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Warum soll das nicht in WinForms möglich sein? Die UI Technologie setzt hier ja keine Grenzen.

Auf was war das bezogen die PictureBox oder?

Als Dritt-Komponente würde mir spontan DirectX einfallen aber des schätze ich mal auf einen ziemlich hohen Schwierigkeitsgrad oder etwa nicht?

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Mittels des
>
ist das zumindestens für WPF möglich:
>
.
Und mit dem
>
kannst du das WPF Control dann in deiner WinForms-Anwendung anzeigen, s.a.
>
.

Das habe ich mir schon einmal angeschaut jedoch wusste ich nicht das ich eine WPF in Windows Forms anzeigen lassen kann. Geht das ohne Problem oder benötigt das Hosten viel Leistung?

5.657 Beiträge seit 2006
vor 5 Jahren

Hi xp21xp,

du mußt ja kein Profi sein, aber ein bißchen Wissen über das Thema, das man angehen will, kann auch nicht schaden. Wenn du sagt, daß du keine Animation brauchst, aber das Modell "natürlich" drehbar sein soll, dann widerspricht sich das halt aus Entwicklersicht ein wenig.

Hier gibt es zumindest einen Überblick über die Möglichkeiten, die du hast: [FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?

XNA und DirectX fallen schonmal weg, wegen veraltet. Für 3D unter WinForms wird meistens wie schon weiter oben der Helix-Toolkit empfohlen, da kommst du schonmal mit den Suchbegriffen weiter. Die Dokumentation für Helix ist größtenteils nicht vorhanden, aber es gibt jede Menge Beispiel-Projekte, die man sich anschauen kann, um den Einstieg zu finden.

Helix scheint auch auf Umwegen STL-Dateien zu unterstützen, zumindest wenn man diesem Beitrag Glauben schenkt: How to load STL file in Helixtoolkit.SharpDX?. Aber letzendlich ist es meistens einfacher, die Datei(en) in das am besten unterstützte Format zu konvertieren, oder gleich in dem korrekten Format zu erzeugen.

Je nachdem, was du vor hast, wäre evtl. auch mal ein Blick auf Unity 3D zu empfehlen.

Weeks of programming can save you hours of planning

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Hey und danke für deine Antwort.

Denn ersten Link hatte ich mir bereits vorher schon einmal angeschaut jedoch wusste ich danach genau so viel wie vorher.

Du hast sicherlich recht das es nicht schadet. Grundsätzliche habe ich kein Problem etwas neues kennen zu lernen bzw mich an das Thema heranzuwagen. Das Helix werde ich mir sicherlich mal anschauen hätte nicht gedacht das dies ein so aktuelles/viel verwendetes Kit ist.

Grundsätzlich ist es egal welches Format, ich arbeite mit Solidworks mit dem es möglich ist Dateien in 30 verschiedenen Formaten abzuspeichern.

Unity wäre eine Wahl jedoch hätte ich das eher in die Abteilung Game-Entwicklung eingestuft.

Ich weiß nicht wie vertraut du/ihr mit der Roboter Programmierung seit jedoch ist das Vorhaben eine Software zu programmieren die einen Roboter Steuern kann.
Das mit Abstand aller beste wäre wenn es möglich ist mehrere 3D Objekte in die Anwendung zuladen und diese dann über Verknüpfungen wie einer Baugruppe verbinden zu können. Wie am Anfang gesagt wäre es dann nichts anderes wie bei einem CAD-Programm jedoch würde bei meiner Anwendung aus denn Verbindungen ein Roboterprogrammierung entstehen.
Ich Hoffe es hat das ganze Verständlicher und nicht noch komplizierter gemacht 👅

Schönen Abend

Hinweis von Abt vor 5 Jahren

[Hinweis] Wie poste ich richtig? keine Full Quotes

5.657 Beiträge seit 2006
vor 5 Jahren

Möglich wäre sowas sowohl mit Unity 3D als auch mit Helix. Unity richtet sich eher an die Leute, die nicht so viel programmieren, aber dafür mehr klicken wollen. Und wenn man dann mal was programmieren muß, kann man C# verwenden.

Wie kompliziert das wird, hängt natürlich von deinen Anforderungen ab. Wenn du einen virtuellen programmierbaren Roboter animieren lassen möchtest, dann ist das sicherlich fast so aufwendig, wie einen echten programmierbaren Roboter zu bauen.

Aber vielleicht gibt es ja schon fertige Bibliotheken von anderen Roboter-Enthusiasten, die man verwenden oder anpassen kann. Das und das sieht ja schonmal ganz vielversprechend aus.

Weeks of programming can save you hours of planning

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Möglich wäre sowas sowohl mit Unity 3D als auch mit Helix. Unity richtet sich eher an die Leute, die nicht so viel programmieren, aber dafür mehr klicken wollen. Und wenn man dann mal was programmieren muß, kann man C# verwenden.

Dann werde ich mir Unity 3D und Helix mal genauer anschauen.

Das wäre natürlich das beste jedoch muss es das nicht unbedingt können wichtiger wäre es wenn man die Objekte wie z.b Schrauben die der Roboter bewegt animieren könnte wie der Roboter dabei verfährt ist nicht ganz so relevant.

Danke für diese Links ich werde sie mir mal genauer anschauen. Sieht im ersten Moment nicht schlecht aus weis abe nicht ob sie geeignet sind da es sich bei meinem Projekt um einen Industrieroboter handelt.

Danke für die ganzen Tipps.

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Ich habe mich etwas schlau gemacht und sehe eigentlich nur noch 2 Optionen, Helix oder Unity.
Ich würde zu Unity tendieren, die Frage ist nur wie ist es möglich auf der Windows Form Anwendung Unity anzuzeigen/einzubinden. Leider bringt mir die Suche danach so gut wie nichts denn manche sagen es geht nicht, andere sagen es geht nur einzeln also das 2 Anwendungen geöffnet sind und wiederum andere Einträge sagen es gibt eine kostenpflichtige Möglichkeit. 🙁

Deshalb die Frage, weiß da jemand von euch etwas? 🤔

Ich bin mir nicht ganz sicher ob das hier hinpasst wenn nicht bitte mitteilen dann werde ich es wo anders versuchen.

Gruß Tino

Hinweis von Abt vor 5 Jahren

[Hinweis] Wie poste ich richtig? Keine Full Quotes

16.806 Beiträge seit 2008
vor 5 Jahren

Mach doch einfach mal 1-2 Stunden nen Tutorial, um mit einer Technologie vertraut zu werden und entscheide dann, ob es was für Dich ist - oder eben nicht.

Wenn Du den Gedanken hast, dass Du Unity in einer Forms Anwendung "einfach so" hosten kannst - dann hast Du Dir Unity nicht wirklich angeschaut.
Eine Unity Anwendung läuft immer als eigener Prozess und kann nicht "einfach so" in WinForms oder WPF laufen; er kann - wenn überhaupt - nur als eigenen Prozess in einem Window eingebettet werden.

Und PS: bitte lass das mit den Full Quotes.
Hab durchaus andere Dinge zutun als "jeden" Deiner Beiträge zu editieren 😉

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Und PS: bitte lass das mit den Full Quotes.
Hab durchaus andere Dinge zutun als "jeden" Deiner Beiträge zu editieren 😉

Mach ich.

Ich bin mir bewusst das Unity eine eigene Anwendung ist bzw nicht von einer anderen gehostet werden kann das hatte ich auch nicht vor es war eher die Frage wie es möglich ist denn Prozess in die Form einzubinden .

In diesem Video wird gezeigt was ich meine jedoch ohne Erklärung.
https://www.youtube.com/watch?v=_oBmEclRDRc

16.806 Beiträge seit 2008
vor 5 Jahren

Google-Suche nach host unity in wpf spuckt Embed Unity3D app inside WPF application inkl Sample Code aus.
Durch Anpassung der Google Suche findest Du sicherlich weitere Treffer 😉

Bin mir sicher, dass Du auf GitHub auch Samples (für WinForms) findest - Du musst nur mal danach suchen.
Müssen ja nicht immer wir für Dich tun 😃

5.657 Beiträge seit 2006
vor 5 Jahren

WinForms als Basis zu verwenden, scheint mir aber in beiden Fällen nicht sinnvoll zu sein. Wenn man Helix verwendet, kann man die UI auch gleich in WPF schreiben.

Und Unity benötigt weder WPF noch WinForms. Im Gegenteil würde man sich dadurch die Möglichkeit verspielen, das Unity-Projekt für verschiedene Plattformen zu publizieren.

Die Anwendungslogik kann man sowieso unabhängig von der Benutzeroberfläche schreiben und zu testen, und dann sowohl in WPF als auch in Unity einbinden. Siehe dazu [Artikel] Drei-Schichten-Architektur

Man sollte aber so vorgehen, wie in jedem anderen Projekt, und zuerst die Anforderungen ermitteln, und auf dieser Basis mögliche Umsetzungsvarianten evaluieren. Und da scheinst du ja erst am Anfang zu stehen. Jedenfalls ergibt sich aus den bisher genannten Anforderungen keine Notwendigkeit, das Ganze auf WinForms aufzubauen.

Weeks of programming can save you hours of planning

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren


>
spuckt
>
inkl Sample Code aus.
Durch Anpassung der Google Suche findest Du sicherlich weitere Treffer 😉

Das erste hatte ich kurz nachdem ich den Beitrag erstellt hatte gefunden und bin seitdem auch am ausprobieren. Es klappt zwar noch nicht aber es sieht sehr viel versprechend aus.

Danke trotzdem fürs Suchen 😁

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Jedenfalls ergibt sich aus den bisher genannten Anforderungen keine Notwendigkeit, das Ganze auf WinForms aufzubauen.

Das Projekt geht schon seit fast einem Jahr und da ich die ganze Anwendung bisher in WinForms programmiert habe würde ich jetzt nur ungern wechseln.
Das eigentlich Vorhaben wurde bereits erreicht und WinForms war für die bisherigen Anforderungen optimal geeignet da 3D Grafiken etc. nie eine Rolle gespielt haben sondern nur eine Benutzeroberfläche erstellt wurde. Die Grafiken die ich nun versuche einzubinden würde das ganze deutlich verbessern nur wie gesagt ich möchte eigentlich nicht alles wieder über den Haufen werfen und neu anfangen.

5.657 Beiträge seit 2006
vor 5 Jahren

Wenn das so ist, würde ich lieber nach einer Lösung suchen, die auch ohne größere Umstände unter WinForms funktioniert. In Frage kommen würde da u.a. SharpDX oder OpenTK. Da kannst du dich erstmal in die 3D-Entwicklung einarbeiten, ohne dich ständig damit beschäftigen zu müssen, die Nachteile bei der Verwendung von eigentlich inkompatiblen Technologien zu umschiffen.

Weeks of programming can save you hours of planning

X
xp21xp Themenstarter:in
22 Beiträge seit 2018
vor 5 Jahren

Wenn das so ist, würde ich lieber nach einer Lösung suchen, die auch ohne größere Umstände unter WinForms funktioniert. In Frage kommen würde da u.a.
>
oder
>
. Da kannst du dich erstmal in die 3D-Entwicklung einarbeiten, ohne dich ständig damit beschäftigen zu müssen, die Nachteile bei der Verwendung von eigentlich inkompatiblen Technologien zu umschiffen.

Nach nun einigen Stunden Arbeit habe ich es hinbekommen Unity mit meiner Anwendung zu verbinden. Unity wird beim Start der Anwendung mitgestartet läuft jedoch im Hintergrund und wird dann in form eines Panels sichtbar. Ich werde mir jedoch trotzdem die 2 Links einmal anschauen denn ich bin mir noch unsicher ob Unity das gewünschte Ergebnis erbringt bzw. wie schwer oder auch nicht schwer die Kommunikation zwischen den Anwendungen wird.

Schönen Abend