AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

PaintBoxRaster

Ein Thema von Bjoerk · begonnen am 3. Jan 2014 · letzter Beitrag vom 4. Jan 2014
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: PaintBoxRaster

  Alt 3. Jan 2014, 21:04
Was willst Du damit denn machen?
Hi Kollege, ich versuche mich gerade an einem Positionsplan (Statik).
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: PaintBoxRaster

  Alt 3. Jan 2014, 21:38
Na, ich weiss nicht genau, ob das Dein Problem ist, aber ich tippe mal ins Blaue:

Du willst die Darstellung so einstellen, dass der Anwender die Maße mit einem Maßstab vom Monitor abgreifen kann. Ich habe sowas mal bei einem Cad-Programm gesehen. Da mußte der Anwender ein Quadrat auf dem Monitor so einmessen, dass es 10x10cm groß war. Mit dieser Einstellung hatte die Software dann die Korrekturwerte für die maßstabsgerechte Monitorausgabe. Vielleicht bring es Dich weiter.
Gruss Jens
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: PaintBoxRaster

  Alt 3. Jan 2014, 22:48
Ne ne ne, das meinte ich nicht. Du kennst ja Positionspläne? Da wird entweder der Architektenplan eingescannt und drüber gemalt oder falls es ein "ordentlicher" Ingenieur ist, dann erstellt er einen eigenen neuen Plan.

Das ist aber auch nix weltbewegendes. Ist quasi ein Paint mit Maßstab. Der User malt halt keine Line von 10/10 nach 100/20 Pixel sondern von 5/5 mm eine Line von 3,65 m z.B. im Maßstab 1:100 im Winkel 45 Grad, genauso wie früher am Zeichenbrett.

Ich hab meinen Usern versprochen: keine Einarbeitungszeit und genauso wie früher. Andernfalls hat mein Programm auf dem Markt auch keine Chance. Was es da alles gibt? Wahnsinn. Da kommst du mit 5 Leuten in 5 Jahren nicht hin. Nur bedienen kannst du die Dinger ohne Seminar nicht und die kosten auch teilweise so schlappe 1000 € pro Tag.

Das Prog ist soweit auch schon fast fertig. Mir geht es jetzt darum, meine Grafikobjekte aufs Canvas zu bringen und um das Punktefangen. Hierzu brauch ich sozusagen ein Tetrisspielfeld im DIN A0 Format mit einem Raster von 0,1 mm.

Die eigentliche Frage istt. Was mach ich, wenn das Cliprect des Canvas so eingstellt ist, daß die Genauigkeit von 0,1 mm gar nicht gezeichnet werden kann? Wie könnte man denn sowas machen? Die anderen können das ja auch? Ich hab aber keinen Plan wie?
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#4

AW: PaintBoxRaster

  Alt 3. Jan 2014, 23:15
Ich kenne den Positionsplan von MB (Video).
Einige günstige gibt es aber auch ..Harzer. Die Konkurrenz ist hart, aber die Anzahl ist mE überschaubar.
Auf Deiner Seite kann man nicht so viele Beschreibungen der Programme finden. Schade

So ganz habe ich Deine Problem aber nicht verstanden. Willst Du ein Raster auf den Bildschirm bringen, wo Raster angezeigt werden 5mm/5mm so wie die Leisten bei vielen Grafikprogrammen? Oder soll das Raster reale/ gemessene 5/5mm auf den Monitor anzeigen? Das erste ist doch nur relatives Umrechnen von einer Länge zu Pixelanzahl mit etwas Runden. Oder wie?

Zitat:
Die eigentliche Frage istt. Was mach ich, wenn das Cliprect des Canvas so eingstellt ist, daß die Genauigkeit von 0,1 mm gar nicht gezeichnet werden kann? Wie könnte man denn sowas machen? Die anderen können das ja auch? Ich hab aber keinen Plan wie?
Das mußt Du mir genauer erklären.

Guck Dir das Beispiel ObjectsSample aus dem Zip mal an. Bringt Dir das was?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: PaintBoxRaster

  Alt 3. Jan 2014, 23:19
Löse dich von der Canvas Darstellung und berechne alles in der echten Auflösung.

Auf dem Canvas wird einfach nur skaliert dargestellt.

So machen es die "Anderen" auch
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: PaintBoxRaster

  Alt 4. Jan 2014, 00:33
Treffer. MB ist mein härtester Konkurrent. Mein Vorbild ist aber DigCad 5.0 (find ich ziemlich genial, ist übrigens in Delphi geschrieben, vermute aber mal, daß die VDraw o. ä. drunter laufen haben, weiß es aber nicht).

Hallo Sir Rufo, ich hab intern alle Objekte in mm FloatPoint und berechne auch brav alles bezüglich dieser Koordinaten z.B. auch die Schnittpunkte. Mein Problem ist aber, daß z.B. die MouseDown-Koordinate viel zu ungenau ist?
Delphi-Quellcode:
procedure TCeCadForm.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
  begin
    if (FCECad.CadDrawing in [cadLine..cadGraphic]) and (FCECad.CadMouseStatus = cmsWaitForMouseDown) then
    begin
      FCECad.CadMouseStatus := cmsWaitForMouseMove;
      FCECad.Drawing := true;
    end;
    FCECad.MMP1 := PointToMMFloatPoint(Point(X, Y));
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: PaintBoxRaster

  Alt 4. Jan 2014, 01:26
Ja, das ist halt erstmal so ...

Nimm mal einen Globus und versuche dort mit dem Finger ganz genau die Straße zu treffen, in der du wohnst.

Du hast aber die Möglichkeit Raster, Mittellinien, Schnittpunkte, etc. anzuwenden, wobei du die aktuelle Position (Pixel) wieder umrechnest und dann den am nächsten liegenden Fangpunkt heraussuchst.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: PaintBoxRaster

  Alt 4. Jan 2014, 12:01
So, jetzt, ja, eine Insel.

Stimmt. Anders ist das ja gar nicht zu machen.

Ich hab jetzt auch nochmal den Weg eines Fangpunktes von der Berechnung zur Gui und wieder zurück verfolgt (Wahnsinn, kenn mich in meinem eigenen Code fast schon wieder nicht aus). Hab aber gesehen, daß ich da noch n Bock drin hab, weil die Gui daraus temporär (zur Anzeige) einen TPoint macht und den wieder (in mm umgerechnet) zurück an die Komponente liefert und genau das geht natürlich nicht. Das zerstört die Genauigkeit.

Ich werd jetzt zur Kommunikation von Gui und Komponente einen neuen Typ einführen. Falls OwnerDraw ist der Punkt durch die Komponente berechnet worden (z.B. Fangpunkt), falls nicht dann kommt der Punkt vom User z.B. via MouseDown /MouseMove.
Delphi-Quellcode:
  TCadFloatPoint = record
    X1, Y1: integer; // CanvasPoint, OwnerDraw FALSE expected;
    MMX1, MMY1: double; // MMComponentFloatPoint, OwnerDraw TRUE expected;
    OwnerDraw: boolean;
    procedure CanvasPointToComponentMMFloatPoint; // X1,Y1 TO MMX1,MMY1;
    procedure MMComponentFloatPointToCanvasPoint;// OwnerDraw: MMX1,MMY1 TO X1,Y1;
    procedure Clear;
  end;
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz