AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

Ein Thema von Rainer Wolff · begonnen am 9. Apr 2020 · letzter Beitrag vom 9. Apr 2020
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

  Alt 9. Apr 2020, 11:52
Hallo,

jetzt hole ich hier mal noch ein bischen weiter aus und beschreibe, um was es mir eigentlich geht:

In meinen Anwendungen habe ich oftmals einen Editor, mit dem ich einen CAD-ähnlich Daten zusammenbaue. Ich habe ein Blech, in das mit verschiedenen Werkzeugen Ausschnitte gestanzt oder geprägt werden. Der Editor legt fest, wie groß das Teil werden soll, und an welchen X/Y-Positionen welche Ausschnitte gestanzt werden. Die Ausschnitte sind mal einfache Rundlöcher oder Vierecke, aber auch verschiedenste Konturen.
Die Werkzeugdaten für diese Ausschnitte liegen meist als DXF vor. Diese lese ich in Coreldraw ein und exportiere daraus WMF.

Das ganze bastle ich dann zusammen mit einem Koordinatenkreuz und einem Viereck für meine Blechplatine masstabsgerecht in eine Paintbox. Die Werkzeugdimensionen kann ich ja einfach über MMWidth/Height aus dem WMF entnehmen. Das lässt sich dann bei mir auch mehr oder weniger gut zoomen und der Ausschnitt verschieben.

Jetzt würde ich das ganze gerne etwas aufmöbeln, ohne dabei das Rad neu zu erfinden. Die Objekte in der Grafikanzeige zu selektieren wäre schön, das zoomen und verschieben läuft nicht so rund...

Die ganzen Grafik-Engines, die mir über den Weg gelaufen sind, gehen mehr in Richtung Spieleprogrammierung und benötigen erst mal ein ausgiebiges Handbuchstudium, soweit ich das bisher angerissen habe. Klar wäre so eine 3D-Darstellung auch hübsch, aber womit. GLScene habe ich kurz angeschaut, die 3D-Platine mit Loch-Demo ist zwar ganz nett und ähnelt schon meiner Anwendung, aber als ich das Loch aus der Mitte verschoben habe, war es auf Vorder- und Rückseite schon verkehrt, also wenn die Demo schon Reparaturversuche braucht, ich weiss nicht...

FMX bietet ja im Grunde schon Skalierung und Rotation von Haus aus, die Frage ist, wie bekomme ich hier meine Werkzeugkonturen hinein. Darauf hat meine Frage bezüglich WMF und FMX abgezielt.

SVG hatte ich als Grundidee auch schon, TPath soll ja da schon ein bischen was können, eine meiner Konturen konnte ich damit anzeigen, nur das mit dem Nullpunkt war noch nicht so doll. Dann habe ich mal ein anderes Werkzeug nach SVG konvertiert, das kann TPath aber wohl nicht ab:
Code:
<g id="Ebene_x0020_1">
  <metadata id="CorelCorpID_0Corel-Layer"/>
  <polygon class="fil0 str0" points="1.6,309.5 1.6,284.5 -1.6,284.5 -1.6,309.5 "/>
  <polygon class="fil0 str0" points="-8.8,284.5 -5.6,284.5 -5.6,309.5 -8.8,309.5 "/>
  <polygon class="fil0 str0" points="5.6,309.5 5.6,284.5 8.8,284.5 8.8,309.5 "/>
 </g>
Wer hätte dafür also einen genialen Tip für ein Framework, das solche Sachen einfach lösen könnte.
Miniaturansicht angehängter Grafiken
2020-04-09-11_49_13-window.png  
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

  Alt 9. Apr 2020, 12:26
Ich mache sowas auf Basis der TPath Komponente.
Da muss man sich schon was selber drumrum bauen, ist aber bei einachen Shapes sehr sinnvoll.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

  Alt 9. Apr 2020, 12:33
Zitat:
Die Werkzeugdaten für diese Ausschnitte liegen meist als DXF vor. Diese lese ich in Coreldraw ein und exportiere daraus WMF.
Ohne mich groß auszukennen, aber wäre eine direkte Verwendung der DXF-Daten nicht sinnvoller?

Mir ist das mal beim Surfen begegnet: https://cadsofttools.de/products/cad-vcl-enterprise/
Ist zwar ursprünglich für VCL und preislich ab einen vierstelligen Eurobeitrag zu haben, aber so eine eigene Mannstunde ist ja auch nicht für umsonst und wenn da ggf. schon viele Probleme gelöst sind, wäre es vielleicht sinnvoll sich damit näher zu beschäftigen.
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

  Alt 9. Apr 2020, 14:19
Ich mache sowas auf Basis der TPath Komponente.
Da muss man sich schon was selber drumrum bauen, ist aber bei einachen Shapes sehr sinnvoll.
Zitat von Delphi-Hilfeseiten:
Die Eigenschaft Data unterstützt nur eine durch Komma getrennte Liste von Anweisungen, die für das Attribut d des Elements path in SVG 1.0 definiert sind.
Benutzt du da noch zusätzliche SVG-Komponenten oder liest du die einzelnen Elemente aus der SVG und konvertierst zu d-Path-Elementen?
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

  Alt 9. Apr 2020, 17:49
Ich mache sowas auf Basis der TPath Komponente.
Da muss man sich schon was selber drumrum bauen, ist aber bei einachen Shapes sehr sinnvoll.
Zitat von Delphi-Hilfeseiten:
Die Eigenschaft Data unterstützt nur eine durch Komma getrennte Liste von Anweisungen, die für das Attribut d des Elements path in SVG 1.0 definiert sind.
Benutzt du da noch zusätzliche SVG-Komponenten oder liest du die einzelnen Elemente aus der SVG und konvertierst zu d-Path-Elementen?
Ich benutze das hauptsächlich um einfache SVG Grafiken anzuzeigen.
Dazu habe ich mir einen Exraktor gebaut, der den d="" Pfad aus dem SVG extrahiert.
Die SVG bekomme ich vom Designer oder von Inkscape.

Manchmal muss ich da von Hand noch etwas Korrigieren, das hält sich aber in Grenzen.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Ein bischen CAD-Anzeige (aka WMF in FMX benutzen)

  Alt 9. Apr 2020, 22:04
SVG hatte ich als Grundidee auch schon, TPath soll ja da schon ein bischen was können, eine meiner Konturen konnte ich damit anzeigen, nur das mit dem Nullpunkt war noch nicht so doll.
Was genau meinst du mit Nullpunkt?

Dann habe ich mal ein anderes Werkzeug nach SVG konvertiert, das kann TPath aber wohl nicht ab:
Code:
<g id="Ebene_x0020_1">
  <metadata id="CorelCorpID_0Corel-Layer"/>
  <polygon class="fil0 str0" points="1.6,309.5 1.6,284.5 -1.6,284.5 -1.6,309.5 "/>
  <polygon class="fil0 str0" points="-8.8,284.5 -5.6,284.5 -5.6,309.5 -8.8,309.5 "/>
  <polygon class="fil0 str0" points="5.6,309.5 5.6,284.5 8.8,284.5 8.8,309.5 "/>
 </g>
Was genau scheitert da denn? Bei einem <polygon> -Tag kannst du einfach den Inhalt von points nehmen, ein M davor setzen und ein z ans Ende und dann so tun, als wäre das das d -Attribut eines <path> -Tags.
Delphi-Quellcode:
  if XML.CurrentTag = 'polygonthen
  begin
    if XML.GetAttribute('points', d) then
    DrawPoly(Context, 'M' + d + 'Z');
  end
Bei Polyline dasselbe nur ohne z .
Ich hab mal 2017 einen relativ kompletten SVG-Renderer geschrieben, der SVG Tiny in GDI-Calls umsetzt. Bringt dir also erstmal nichts. Wenn ich mir den im vorherigen Thread verlinkten DP-EN-Thread ansehe, ist mein Path-Dekoder (DrawPoly im vorherigen Code-Block) dem von TPath zwar überlegen, aber sehr ähnlich. Fehlende Features könnte man also auch ergänzen. Dein obiger Code ist übrigens nicht SVG Tiny, dessen größter Unterschied zu SVG ist, dass es kein id und class kennt.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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