Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 100tel Millimeter dicke Linie drucken (https://www.delphipraxis.net/41969-100tel-millimeter-dicke-linie-drucken.html)

semo 11. Mär 2005 11:22


100tel Millimeter dicke Linie drucken
 
Wie kann ich eine Linie in 100tel Millimeter drucken?
Bzw. ein TRect in 100tel Millimeter drucken???

die einheit habe ich bereits per
Delphi-Quellcode:
SetMapMode(printCanvHandle, mm_himetric);
umgestellt.

SubData 11. Mär 2005 11:43

Re: 100tel Millimeter dicke Linie drucken
 
Garnich... Weil kaum ein Drucker so eine dünne Linie drucken kann. Die Anzeige auf dem Bildschirm wäre auch nicht möglich.

semo 11. Mär 2005 11:57

Re: 100tel Millimeter dicke Linie drucken
 
das soll an einen laser ausgegeben werden... der kann sowas.

ist für nen kumpel der ne gravurfirma hat.

semo 11. Mär 2005 18:13

Re: 100tel Millimeter dicke Linie drucken
 
der soll ja nicht genau 1/100 millimeter breit sein, sondern x/100 millimter..... es kommt dabei ja auf die genauigkeit an.

Nikolas 11. Mär 2005 18:36

Re: 100tel Millimeter dicke Linie drucken
 
Willst du das dann Drucken, später wieder einscannen und dann dem Laser vorlegen??? Es wäre doch sinnvoller, wenn du dir sagen lässt in welchem Dateiformat der Laser seine Daten will und dann solche Dateien zu produzieren. Wenn's um Rechtecke geht, geh ich mal davon aus, dass der Laser wie eine Fräse nur die Eckpunkte haben will.

semo 11. Mär 2005 18:40

Re: 100tel Millimeter dicke Linie drucken
 
der typ meinte dass ich mir das wie ne ausgabe an den drucker vorstellen muss.
dabei wird das vom programm aus direkt an den laser übergeben. nix drucken und wieder einscannen. der laser kann wohl angeblich mit den maßen 1/100 Millimeter umgehen.

ich gebe im programm die breite des strahls in 1/100 mm an und muss nun irgendwie mit einem rechteck/linien/eckpunkte einen umriss "zeichnen" den der laser abfahren soll.

aber wie zeichnet man auf dem druckercanvas in dieser einheit? trect und lineto verlangen ja alle pixel?!

semo 19. Mär 2005 17:23

Re: 100tel Millimeter dicke Linie drucken
 
wollt ihr mir also sagen dass ein zeichnen in 100tel millimeter dicke auf dem druckercanvas absolut unmöglich ist?

Nikolas 19. Mär 2005 17:32

Re: 100tel Millimeter dicke Linie drucken
 
Warum sollte das denn möglich sein? Es ist doch unnötig und nicht ressourcenschlonend in eine Bitmap Infos reinzuschreiben, die keinen Drucker interessieren, da er so fein nicht drucken kann.
Vielleicht kannst du dem Laser ja sagen, dass ein Pixel für ihn 1/1000 mm sein soll.

Treffnix 19. Mär 2005 17:36

Re: 100tel Millimeter dicke Linie drucken
 
Ich kann mir nicht vorstellen, dass der Laser wirklich über einen Druckertreiber funktioniert. Son Ding hat ja ausser den x/y auch noch ne Tiefe durch die Beschussdauer. Dass es "so ähnlich" funktioniert, mag ja stimmen, aber "so ähnlich" ist nicht genauso. Lass dir doch erstmal die genauen Spezifikationen der Schnittstelle geben, bevor du in ner völlig falschen Richtung suchst.

semo 19. Mär 2005 17:50

Re: 100tel Millimeter dicke Linie drucken
 
ich werd mir das mal haargenau erklären lassen. meld mich dann wieder.

semo 20. Mär 2005 09:56

Re: 100tel Millimeter dicke Linie drucken
 
ich habe nochmal nachgefragt und folgende Antwort bekommen:
Zitat:

Tiefe und Bschussdauer können Sie vergessen,
wie bereits mehrfach erwähnt, unterscheidet der Treiber
des Lasers ob es sich um Bildpunkte oder Vektorlinien
handelt.

Wenn als Rand des Schildes (aber auch innerhalb) eine
Vektorlinie angegeben ist, die das im Treiber festgelegte
Rot als Farbton besitzt und auch die entsprechende
Linienstärke hat, dann fährt der Laser mit einer entsprechenden
Leistung (Schneidleistung) die Koordinaten dieser Linie ab
und schneidet damit das Material.

Im bisherigen Fall der roten Linie, die wir schon im Programm
angegeben haben, wird anscheinend keine Vektorlinie
sondern nur Bildpunkte erkannt und somit werden diese
Linien nur als Bildpunkte und damit wie eine Schrift behandelt.

Das ist daran zu erkennen, daß der Laser auch die Linie
Zeile für Zeile abfährt und lasert, während im richtigen Falle,
erst die Schrift und das Logo gelasert werden und dann
in einem 2.Arbeitsgang die Linie als Vektorlinie nochmals
abgefahren wird. Der Lasertreiber macht also 2 Vorgänge,
zuerst das Druckbild lasern und dann im 2.Arbeitsgang das
Schild an der Vektorlinie schneiden.


Harald 20. Mär 2005 10:12

Re: 100tel Millimeter dicke Linie drucken
 
Hast Du schon mal versucht, vom Hersteller des Gerätes eine Beschreibung der Befehle zu erhalten? Vielleicht hat er spezielle ...

Gruß
Harald

semo 20. Mär 2005 18:58

Re: 100tel Millimeter dicke Linie drucken
 
Auf Nachfrage habe ich noch folgende Antwort bekommen:
Zitat:

das Ding wird lediglich über einen Druckertreiber angesteuert,
es wäre aber sinnlos, sich auf einen hersteller zu konzentrieren.

Offensichtlich geht es nur über eine Vektorlinie, denn wenn Sie als
Vorlage eine Worddatei haben, könne Sie zwar lasern aber nicht schneiden.

Man darf hier das Lasergravurgerät nicht mit einem Laserdrucker verwechseln.

Ähnlich einem Folienschneidgerät für Plotterschriften, oder einem Zeichenplotter,
wird beim Laser eine Vektorlinie erkannt und diese abgefahren.
Der Laserkopf bewegt sich über das Material
mit einer X und Y Achse, die Höhenverstellung erfolgt über die Z-Achse.

Es werden also bei der Schneidlinie die x und Y Achse abgefahren, nach den
Koordinaten der Vorgabe (rote Linie) (Z-Achse entfällt für das Programm)

Der Druckertreiber des Lasergravurgerätes unterscheidet zwischen
Bitmap und Vektorangabe durch die Angabe der Farbe und der Linienstärke.

Wenn ich einem Buchstaben eine Außenlinie in rot mit Haarstärke verpasse
dann wird dieser auch ausgeschnitten. - Was bei uns nicht sein soll.

SirThornberry 20. Mär 2005 19:23

Re: 100tel Millimeter dicke Linie drucken
 
mit
Delphi-Quellcode:
SetMapMode(printCanvHandle, mm_himetric);
stellst du die maßeinheit von pixel auf 100tel Millimeter um. Desweiteren ist zubeachten das die y-Achse im Minusbereich ist.
Mit
Delphi-Quellcode:
Printer.Canvas.MoveTo(0, -200);
Printer.Canvas.Line(400, -200);
würdest du also erreichen das eine Line gemalt wird die auf der ausgabe 0 Millimeter von Links, 2 mm von oben bis 4 mm link und 2 mm oben geht.

Also nochmal zusammgengefasst, mit den beiden befehlen (und der vorherigen umstelle der auf mm_himetric), erreichst du das eine Linie von
X: 0mm
Y: 2mm
nach
X: 4mm
Y: 2mm
ausgegeben wird.
Du kannst das ganze ja auch erstmal mit der ausgabe auf einem normalen blatt probieren.
Als beispiel auf einem normalen Blatt würde sich dann folgendes eignen:
Delphi-Quellcode:
Printer.Canvas.Font.Height := 1000;
Printer.Canvas.TextOut(2000, -2000, 'Testtext');
Damit solltest du dann auf dem Blatt den Text "Testtext" sehen welcher 1 cm (1000 100ersten millimeter) hoch ist und 2 cm vom linken Rand entfernt ist.

semo 20. Mär 2005 21:04

Re: 100tel Millimeter dicke Linie drucken
 
das ist ja soweit alles klar. nur geht es um die linienstärke!
bzw die linienstärke bei einem TRect.

SirThornberry 20. Mär 2005 21:19

Re: 100tel Millimeter dicke Linie drucken
 
mit pen.width kannst du die Linienstärke setzen. bzw. kannst du auch mehrmals die linie nebeneinander malen.

semo 20. Mär 2005 22:36

Re: 100tel Millimeter dicke Linie drucken
 
stimmt ja, ich habe immer nur daran gedacht dass pen.width ja in pixel gemessen wird. habe ja aber bereits in 1/100 mm umgestellt. :wall:

habe mal ne testversion fertig gemacht und mal sehen was der werte herr dazu sagt.

danke erstmal soweit


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 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