Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frage zu firemonkey (https://www.delphipraxis.net/206497-frage-zu-firemonkey.html)

Schuby 29. Dez 2020 08:26

Frage zu firemonkey
 
Ich suche eine gute Anleitung um in FireMonkey Linien in einen Raum
zu zeichen die ich dann in 3D anschauen könnte.
Youtube bringt gute Viedeos aber nicht das was ich suche.
In Grafik habe ich noch nie etwas gemacht.

Ich habe eine CNC Software Programmiert und möchte meine
Fräsdaten per 3D anzeigen. Vielleicht ist firemonkey auch nicht das
richtige ? wie gesagt ich habe in 3D keine Ahnung, das ist alles neuland für mich.

vllt habt ihr Tipps für mich

mfg Schuby

jaenicke 29. Dez 2020 10:17

AW: Frage zu firemonkey
 
Videos zum Programmieren sind halt so eine Sache... ;-)

Wenn du eine 3D Anwendung erstellt hast, brauchst du lediglich im OnRender des Formulars deine Zeichenbefehle einzusetzen. Beispiel für einen Würfel:
Delphi-Quellcode:
uses
  System.Math.Vectors;

procedure TFormXXX.Form3DRender(Sender: TObject; Context: TContext3D);
begin
  // Deckel
  Context.DrawLine(Vector3D(100, 200, 0), Vector3D(200, 200, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 0), Vector3D(200, 200, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 100), Vector3D(100, 200, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(100, 200, 100), Vector3D(100, 200, 0), 1, TAlphaColorRec.Red);
  // Seiten
  Context.DrawLine(Vector3D(100, 200, 0), Vector3D(100, 100, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 0), Vector3D(200, 100, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 100), Vector3D(200, 100, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(100, 200, 100), Vector3D(100, 100, 100), 1, TAlphaColorRec.Red);
  // Boden
  Context.DrawLine(Vector3D(100, 100, 0), Vector3D(200, 100, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 100, 0), Vector3D(200, 100, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 100, 100), Vector3D(100, 100, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(100, 100, 100), Vector3D(100, 100, 0), 1, TAlphaColorRec.Red);
end;
Du kannst aber auch Pfaddaten (SVG oder XAML) in FMX verwenden.

Der schöne Günther 29. Dez 2020 10:29

AW: Frage zu firemonkey
 
Zitat:

Zitat von jaenicke (Beitrag 1480008)
Du kannst aber auch Pfaddaten (SVG oder XAML) in FMX verwenden

Meintest du als 2D oder als 3D-Darstellung?

jaenicke 29. Dez 2020 11:25

AW: Frage zu firemonkey
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1480009)
Meintest du als 2D oder als 3D-Darstellung?

Das sollte bei beidem funktionieren. So viel habe ich damit aber noch nicht gemacht, nur ein wenig ausprobiert.

Schuby 29. Dez 2020 11:50

AW: Frage zu firemonkey
 
Zitat:

Zitat von jaenicke (Beitrag 1480008)
Videos zum Programmieren sind halt so eine Sache... ;-)

Wenn du eine 3D Anwendung erstellt hast, brauchst du lediglich im OnRender des Formulars deine Zeichenbefehle einzusetzen. Beispiel für einen Würfel:
Delphi-Quellcode:
uses
  System.Math.Vectors;

procedure TFormXXX.Form3DRender(Sender: TObject; Context: TContext3D);
begin
  // Deckel
  Context.DrawLine(Vector3D(100, 200, 0), Vector3D(200, 200, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 0), Vector3D(200, 200, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 100), Vector3D(100, 200, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(100, 200, 100), Vector3D(100, 200, 0), 1, TAlphaColorRec.Red);
  // Seiten
  Context.DrawLine(Vector3D(100, 200, 0), Vector3D(100, 100, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 0), Vector3D(200, 100, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 200, 100), Vector3D(200, 100, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(100, 200, 100), Vector3D(100, 100, 100), 1, TAlphaColorRec.Red);
  // Boden
  Context.DrawLine(Vector3D(100, 100, 0), Vector3D(200, 100, 0), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 100, 0), Vector3D(200, 100, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(200, 100, 100), Vector3D(100, 100, 100), 1, TAlphaColorRec.Red);
  Context.DrawLine(Vector3D(100, 100, 100), Vector3D(100, 100, 0), 1, TAlphaColorRec.Red);
end;
Du kannst aber auch Pfaddaten (SVG oder XAML) in FMX verwenden.


Danke, genau das war es was ich gesucht habe.
:hello::hello::hello::hello::hello:


mfg Schuby

Schuby 29. Dez 2020 11:56

AW: Frage zu firemonkey
 
Doch eine Frage habe ich noch.

Ähmm ich habe ja mein Programm mit <VLC Formularanwendung> erstellt.

Aber bei firemonkey musste ich eine <Geräteübergreifende Anwendung> erstellen.
Kann man die Geräteübergreifende Anwendung in meine VLC Anwendung bekommen ?

Oder müsste ich jetzt alles in der Geräteübergreifende Anwendung neu einprogrammieren ?


mfg Schuby

mmw 29. Dez 2020 13:45

AW: Frage zu firemonkey
 
Hallo,

duerfte nicht so einfach sein.

http://docwiki.embarcadero.com/RADSt.../de/FireMonkey

als Zusatzinfo -

http://glscene.sourceforge.net/wikka/

https://www.openscad.org/index.html

Gruß

TigerLilly 29. Dez 2020 14:35

AW: Frage zu firemonkey
 
Doch, das geht schon:
https://parnassus.co/tfiremonkeycont...g-vcl-and-fmx/

Google gibt noch mehr her.

jaenicke 30. Dez 2020 15:46

AW: Frage zu firemonkey
 
Man kann beides theoretisch kombinieren. Ob sich das lohnt mit den Nachteilen (nicht plattformunabhängig, ...) ist eine Frage der Größe der Anwendung. Wenn sich die Oberflächenlogik in Grenzen hält, macht eher eine Umstellung auf FMX Sinn.

Wenn aber viele Formulare verwendet werden oder der Code schlecht von der Oberfläche getrennt ist (alles in den Formular-Units und direkt in den Eventhandlern, ...), macht es Sinn eine Kombination zu versuchen.

Eine 3D-Anzeige kannst du aber auch (selbst berechnet oder mit Drittbibliotheken) in einer VCL-Anwendung machen...

Harry Stahl 31. Dez 2020 14:55

AW: Frage zu firemonkey
 
Ich würde Dir eine Vermengung von VCL und FMX in einer Exe nicht empfehlen.

Mal abgesehen davon, dass es Deine Anwendung (Exe) nicht unerheblich vergrößern wird, es könnten sich bei der weiteren Entwicklung auch irgendwelche unerklärlichen Probleme ergeben.

Daher: Wenn Du Deine APP auch für MAC oder Linux anbieten willst, wäre FMX der richtige Weg.

Wenn es aber nur für Windows sein soll: Da Du schreibst, dass Du nur die Anzeige für 3D benötigst, könntest Du auch eine Anzeige-Anwendung in FMX programmieren, die Du dann von Deinem anderen (VCL-) Programm mit Parameterübergabe aufrufst (z.B. speicherst Du dann temporär die anzuzeigenden Daten ab und übergibst der Anzeige-Anwendung den Dateinamen beim Start-Aufruf).


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf