Delphi-PRAXiS

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).

Schuby 2. Jan 2021 06:23

AW: Frage zu firemonkey
 
Liste der Anhänge anzeigen (Anzahl: 2)
Erstmal Danke für die vielen Antworten.

Ich habe jetzt GLScene genommen und es sieht auch schon sehr gut aus.
Mit der linken Maus Taste kann ich schon das Grid in allen Seiten bewegen.

Aber wie mache ich es das ich den Mittelpunkt vom Grid verschieben kann.
Bin die ganze Zeit bei Youtube und suche nach Demo.

Delphi-Quellcode:
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if Shift=[ssLeft] then
  Begin
    GLCamera1.MoveAroundTarget(my-y,mx-x);
  end;
  if Shift=[ssRight] then
  Begin
    ????
  end;
  mx:= x;
  my:= y;
end;
Hat jmd einen Tipp für mich ?

mfg schuby

mmw 2. Jan 2021 11:54

AW: Frage zu firemonkey
 
Hallo,

das müsste eigentlich schon reichen, als Beispiel -

Delphi-Quellcode:
GLXYZGrid1.XSamplingScale.Max:=0.5;
GLXYZGrid1.XSamplingScale.Min:=-0.5;

GLXYZGrid1.YSamplingScale.Max:=0.5;
GLXYZGrid1.YSamplingScale.Min:=-0.5;

GLXYZGrid1.ZSamplingScale.Max:=0.5;
GLXYZGrid1.ZSamplingScale.Min:=-0.5;
es wäre besser einen neuen Thread aufzumachen.

http://www.anderswallin.net/cam/

ist zwar fuer Python/C++ aber kann man vielleicht mal gebrauchen.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.

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