Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Zusammen,

ich arbeite schon seid längeren an einem Projekt, in dem erstelle ich 3D Zeichnungen mit System.Windows.Media.Media3D. Diese Zeichnung besteht aus vielen LinesVisual3D Linien, die Zusammen ein Rechteck bilden. In diesem Rechteck sind viele kleine GeometryModel3D Rechtecke die dann farbig sind. LinesVisual3D und GeometryModel3D werden in ModelVisual3D eingefügt und dann angezeigt, sodass man das Rechteck bewegen kann.

Dass zu der Hintergrund Geschichte, mein Problem das ich jetzt habe ist, dass ich nun die Zeichnung die ich erstelle als eine Bild Datei abspeichern möchte, damit auch andere Programme mit der Zeichnung etwas anfangen können. Doch ich habe im Internet noch keine Möglichkeit gefunden eine 3D Zeichnung von Media3D in eine Datei umzuwandeln. Kann mir vielleicht jemand helfen? ( Falls das jetzt verständlich war was ich geschrieben habe)

Was auch wohl so nicht gedacht ist. Der Media3D-Namespace beinhaltet nur Klassen und Methoden zur Darstellung von 3D-Präsentationen. Da musst du dir schon selber was einfallen lassen, wie du daraus eine Datei machst. Sprich, du musst selber einen Generator bauen, der aus deiner Darstellung eine Datei erzeugt oder wie man es eigentlich machen würde: Eine Abstraktion, aus der sowohl deine Grafik als auch die Datei erzeugt wird.

Du müsstest dich zuerst mal damit befassen, wie überhaupt die Dateien aufgebaut sind, die du speichern möchtest. Als Beispiel nehme ich mal dafür das SVG-Format. Im Grunde ist eine SVG-Format nichts weiter als eine XML-Struktur und eine XML-Struktur ist ein Baum.

Ein Beispiel aus Wikipedia:

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
	version="1.1" baseProfile="full"
	width="700px" height="400px" viewBox="0 0 700 400">

	<!-- Anschlüsse links und rechts -->
	<line x1="0" y1="200" x2="700" y2="200" stroke="black" stroke-width="20px"/>
	<!-- Das Rechteck -->
	<rect x="100" y="100" width="500" height="200" fill="white" stroke="black" stroke-width="20px"/>
	<!-- Der Schleifer -->
	<line x1="180" y1="370" x2="500" y2="50" stroke="black" stroke-width="15px"/>
	<!-- Die Pfeilspitze -->
	<polygon points="585 0 525 25 585 50" transform="rotate(135 525 25)"/>
</svg>

Eine SVG-Datei kann dann von einem XML-Parser eingelesen werden und erzeugt daraus ein Baum.

svg
    width  = "700px"
    height = "400px"
    line
        x1     = 0
        y1     = 200
        x2     = 700
        y2     = 200
        stroke = "black"
        ...
    rect
        ...
    line
        ...
    polygon
        ...

Die GUI (z.B. der Browser) durchläuft dann diesen Baum und je nach Knotenart (line, rect, polygon, ...) erzeugt er dann die geometrische Figur. Wenn man jetzt den Baum manipuliert, indem man z.B. einen weiteren Knoten hinzufügt, dann wird der Baum wieder durchlaufen und die neue Grafik wird erzeugt. Im einfachsten Fall hast du dann für line, rect, polygon, ... einzelne Klassen:

if(knotenart == "line")
    new Line(...)
else if(knotenart == "rect")
    new Rect(...)
else if(knotenart == "polygon")
    new Polygon(...)
...

Und die Klassen rendern dir später deine Grafiken auf dem Bildschirm und aus dem Baum lässt sich dann später wieder eine SVG-Datei generieren.

Bearbeitet von Whiz-zarD

  • Autor

Hallo Zusammen,

ich gestern schon ein bisschen weiter gekommen, mein Aktueller Code sieht jetzt so aus:

Unbenannt.PNG.55383133ede724c098247f143252b7b1.PNG

 

Ich bekomme zwar eine Datei, aber diese Datei ist komplett schwarz, man sieht das leider nicht meine Zeichnung und ich weis nicht warum. Hat hier jemand vielleicht eine Idee?

  • Autor

mfk'); DROP TABLE Users;- , daran hab ich auch gedacht, doch er bring mir immer ein Fehler Meldung und ich weis nicht woran das liegt:

Unbenannt2.PNG.203aa54476e4f1ec4693463bdcf3ec1d.PNG

Da wo es Gelb markiert ist taucht die Fehlermeldung auf. (System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."). dblLKWlänge = 13,2 ; dblLKWbreite = 2,4.

  • Autor

Mit Licht meinst du bestimmt die SunLight Klasse oder? Und ja ich habe zum Testen das HelixToolkit.Wpf.HelixViewport3D verwenden, habe aber gedacht das des zu normalen Viewport3D keinen Unterschied macht. Sorry für die Verwirrung :)

  • Autor

Okay, ich habe einen Hinweis und zwar fehlt bei meinem HelixViewport3D eine Einstellung die das Bild Zeichnet. Wenn man das HelixViewport3D von der Toolbox auf das MainWindow zieht hat das HelixViewport3D Standarteinstellungen wo das Bild gezeichnet wird und ich bekomme in meiner Datei dann auch ein Bild ( Habe zum Testen einfach ein HelixViewport3D in mein MainWindow gezogen und das dann mit meiner Variabel myviewport3D gleichgesetzt und dann hats Funktioniert). Kann mir einer sagen was für eine Einstellung ich vergessen habe?

Unbenannt3.PNG.9652929c51506af340794a0461e7d9c6.PNG

Hier sind alle Einstellungen die ich gemacht habe.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.