Drucken von Vektoren

Für allgemeine Fragen zur Programmierung mit PureBasic.
thkais
Beiträge: 9
Registriert: 29.11.2004 09:42

Drucken von Vektoren

Beitrag von thkais »

Moin allerseits,

ich habe da ein Problem:
Allgemein wird ja zwischen Bitmap- und Vektorgrafik unterschieden. Für ein aktuelles Projekt müßte ich einem Drucker beide Varianten schicken können - sowohl Bitmaps als auch Vektoren. Bei dem Drucker handelt es sich um eine Lasergravierer, der Bitmaps zum Gravieren und Vektoren zum Schneiden benutzt, angeschlossen ist das Ganze am USB.
Wenn ich die Hilfe richtig verstanden habe, sind die 2D-Drawing-Befehle alle Pixelorientiert - fehlen mir die Vektoren.
Jemand eine Idee ?
Heroglyph
Beiträge: 41
Registriert: 22.11.2004 20:34

Beitrag von Heroglyph »

Bei Vektorgrafiken schickst du wohl auch keine Vektoren an den Drucker (zumindest wäre mir das neu), sondern du renderst das Bild erst in ganz normaler Bitmapgrafik und verschickst es dann.
Der Qualitätsunterschied kommt nur durch die mathematische Definition des Bildes zustande.
God is real, unless declared integer.
traumatic
Beiträge: 478
Registriert: 27.11.2004 15:42

Beitrag von traumatic »

Ich weiß zwar keine Lösung des Problems, aber ich schätze mal, der
Lasergravierer wird einen eigenen RIP haben und daher schon 'echte'
Vektorgrafik erwarten, d.h. PostScript o.ä.

Kann man das nicht einfach dadurch erreichen, dass man
z.B. ein EPS an den Drucker schickt? Sollte nicht der Druckertreiber
selbst den Rest erledigen?
elektron-city
Beiträge: 17
Registriert: 25.09.2004 14:25

meinst du evtl. HPGL ?

Beitrag von elektron-city »

Ich kenne eigentlich nur Graviermaschienen die auch aus den Bitmaps HPGL erstellen um das dann aufs Material zu bringen. Sprich die arbeiten deine Bitmaps um in HPGL ! Evtl ist das bei deiner Maschine auch so.
Lieber klein uns böse als gar keinen Spass :-)
thkais
Beiträge: 9
Registriert: 29.11.2004 09:42

Beitrag von thkais »

Ich bin mir eigentlich ziemlich sicher, daß der Drucker-Treiber direkt Vektor-Grafik erwartet, aber ganz sicher eben nicht...
Momentan arbeiten wir mit CorelDraw. Der Knackpunkt sind die Linienstärken: Benutze ich eine Linie mit 0,001 Dicke (das dünnste, das geht), dann interpretiert das der "Drucker" als Vektor (fährt die Linie zum Schneiden exakt ab), ist die Linie etwas dicker, wird sie als Rastergrafik interpretiert (der "Drucker" geht in einen Scan-Modus, zum Schneiden ungeeignet).
Wie um alles in der Welt kann ich mit den Grafik-Funktionen von Purebasic verschiedene Linienstärken erzeugen? So, wie ich das sehe, kann ich bestenfalls Linien mit einem Pixel "Dicke" ziehen. Daß der Druckertreiber das in einen Vektor umwandelt, kann ich mir nicht vorstellen...
Ich sehe da momentan mit den Funktionen von PB keine Chance. Ich habe mich mal grob in die WinApi eingelesen, wenn ich das richtig sehe, dann unterscheidet die Winapi durchaus Vektor- und Rastergrafik. So gibt es die LineDDA (Raster) und den Line to (Vektor) Befehle. Aber irgendwie habe ich noch nicht so richtig die Erleuchtung...
Hat jemand eine Ahnung, wie das in Programmen wie CorelDraw mit den Linienstärtken gehandhabt wird? Vielleicht hilft mir dieses Wissen weiter...
Ich werde mal sehen, wie das Teil auf "selbsgemaltes" reagiert.

Edit:
Ich habe mir gerade mal einen Druck-Job als File ausgeben lassen. HPGL ist das auf keinen Fall, scheint etwas selbstgekochtes zu sein.

Der Knackpunkt, an dem ich hänge: Was muß ich dem Drucker-Treiber servieren, damit er zwischen Raster und Vektor unterscheiden kann? Bei CorelDraw läuft das über die Strichstärke....

Das mit dem EPS ist auch ne gute Idee, werde ich mal testen.

Edit2:
:? Wie zum Teufel kriege ich eine EPS-Datei zu einem USB-Drucker geschickt? "copy" funktioniert nicht, auch eine Freigabe und anschließendes Ansprechen über //computer/Drucker klappt nicht.
:(
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du musst vermutlich schneiden und gravieren komplett als vorgänge trennen.

lass den benutzer das schneiden extra definieren, und stelle es nur auf dem bildschirm als bmp dar.

dazu müsstest du allerdings auch das eingabeformat des treibers lernen,
um zu wissen, wie du ihm die schnittvektoren übergibst.

die corel -> treiber geschichte liegt vermutlich daran, dass dein gerät als 'plotter' angesteuert wird.

vielleicht hat dein gerät ja n gutes manual, dann progg dir die schnitte selbst...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
thkais
Beiträge: 9
Registriert: 29.11.2004 09:42

Beitrag von thkais »

Hm - schneiden und gravieren kann ich in Corel mischen - ohne Probleme.
Man muß sich das so vorstellen: Man hat 8 Farben zur Verfügung, die im Druckertreiber unterschiedlichen Methoden zugewiesen werden können (Laserstärke, Geschwindigkeit, Vektor/Raster).

Es geht mir darum, wie vektorbasierte Programme wie z.B. Coreldraw oder auch AutoCad (mit dem klappts übrigens auch) ihre Daten an den Druckertreiber weitergeben. Den Rest, nämlich die Umsetzung auf die "Druckersprache", macht ja der Treiber.

Meine bisherigen Versuche mit den 2-D Funktionen von PB waren nicht erfolgreich, weil das alles Bitmap-orientiert ist. Egal, was ich mache - der Laser interpretiert es als Raster.
Ich gehe davon aus, daß sich noch weitere Zeichenfunktionen in der API verstecken.

by the way: EPS klappt nicht, aber inzwischen kann ich Dateien per "copy" zum Drucker senden - war ein Schreibfehler.


[/b]
Antworten