Hi,
über ActiveX läßt sich das relativ einfach realisieren...
Du benötigst ein paar Methoden und Eigenschaften des aktiven Layouts
und kannst Dir daraus den "druckbaren Bereich" rechnen...
Wichtig sind hier die Methoden:
getPaperSize -> Gibt die Blattgröße zurück
getPaperMargins -> Gibt die Randabstände zurück
und die Eigenschaften:
'PLOTORIGIN -> Gibt den Plotursprung zurück
'PlotRotation -> Gibt die Blattdrehung zurück
Je nachdem wie das Blatt nun gedreht ist und der Plotursprung liegt kann man nun genau die Layout-Koordinaten des Blattes und des druckbaren Bereichs rechnen.
Die Blattränder werden IMMER für die Normallage zurückgegeben, unabhängig von der Plotrotation...
Und zwar jeweils als zwei Verschiebevektoren:
UntenLinks->Rechtswert,Hochwert vom Blattrand zum Rand des druckbaren Bereichs
ObenRechts->Rechtswert,Hochwert vom Rand des druckbaren Bereichs zum Blattrand
Für ein DesignJet500 wäre das z.B.:
'((3.75708 15.3564) (4.60374 5.02707))
Unbedingt bei der Blattrandberechnung bzgl. der PlotRotation beachten:
Die Drehung erfolgt gegen den Uhrzeigersinn und der Punkt UntenLinks wandert!
0=ac0degrees=HochFormat
1=ac90degrees=Querformat
2=ac180degrees=Hochformat auf dem Kopf
3=ac270degrees=Querformat auf dem Kopf
Das heißt dann für die Berechnung beim
Punkt UL nach einer Drehung um 90°:
Der Rechtswert von UntenLinks wird zum Hochwert UntenLinks
und der Hochwert ObenRechts wird zum Rechtswert UntenLink
(analog dazu der andere Punkt und entsprechend bei weiterer Drehung...)
Ein Hinweis aus eigener leidvoller Erfahrung.
Übersehe auf gar keinen Fall die Funktion "vla-RefreshPlotDeviceInfo"
Ohne die geht gar nix. Ist aber in der Hilfe auch erwähnt, bitte unbedingt lesen...
------------------
Ciao,
Marc
[Diese Nachricht wurde von marc.scherer am 10. Mrz. 2005 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP