Playout: concept print en layout beheer

Playout wordt geactiveerd om een nieuwe viewport in een nieuwe layout te maken in AutoCAD.

{{{ Je zou een layout kunnen vergelijken met een een te printen blad papier en een viewport is vergelijkbaar met een vlak op dat blad geplaatste LCD-TV, verbonden aan een camera die op de een of andere manier op het (2D of 3D) CAD-model gericht staat. AutoCAD maakt gebruik van speciale printers die afgeleid zijn van systeemprinters. Dit is nodig omdat systeemprinters door beperkingen van de Windowsdrivers bijvoorbeeld geen lijndikten ondersteunen. De afgeleide printer drivers kunnen aangemaakt worden met de plottermanager waarna de printers als *.pc3 bestand worden weggeschreven naar de harde schijf. Van een systeemprinter kunnen varianten gemaakt worden, bijv. een variant voor liggend, een voor staand, een voor liggend zwart-wit, een voor staand kleur, een voor A3 kleur, enzovoorts. Playout koppelt zo'n printer aan een nieuwe layout en zorgt ervoor dat de marges optimaal ingesteld kunnen worden. Playout raadpleegt bestand CadchupConf in de map C:\cadchup_custom voor beschikbare printers. }}}

Ontwikkeling

Globaal wat er gebeuren moet, wat het globale principe is:

playout1.py moet het volgende doen:

acad kan verder met verwerken van playout1.scr en genereert op basis daarvan enkele waarden die als input voor playout2.py dienen

playout2.py moet het volgende doen:

acad voert ook dit bestand playout2.scr uit

Wat moet playout1.py inlezen?

Opmerking: de tweede routine, playout2.py, gebruikt deze waarden ook.

Uit CadchupConf:

Na het kiezen van een plotter, bijv. Plotter "HP Business InkJet 2200" DJ2200.pc3 "A4 (210 x 297 mm)" "A4" M L N L 1:1 0.0,0.0 Y . Y N N N N Y N 0.0 10.0 3.0 0.0 moet de string ontleed worden en variabelen als volgt toegekend worden:

en tot slot:

Output playout1.py, inhoud van playout1.scr

Opmerking: acad ziet in een script een spatie en einde regel als [enter]. Om die spaties zichtbaar te maken zijn ze hier vervangen door ; maar in de output moeten dit dus spaties of einde regels zijn. playout1.scr wordt:

regenmode;1

cmddia;0

filedia;0

insunits;0

cmdecho;1

layout;n;loname;layout;s;loname

-plot;yes;loname;pldev;plset;plunits;plorien;plupside;plarea;plscale;ploffset;plstyle;plsttab;plweight;plscweight;plpsfirst;plpshide;plfile;plsave;plproceed

-layout;d;dello

limmin

limmax

Wat moet playout2.py inlezen?

AutoCAD heeft op basis van vorige script twee coordinaten naar de betreffende *.log file in tmp weggeschreven. Dit log-bestand ziet er aan het einde bijv. zo uit:

{{{ blablabla...

Command: -layout

Enter layout option [Copy/Delete/New/Template/Rename/SAveas/Set/?] <set>: ?

Active Layouts:

Layout: loname Block name: *Paper_Space. Layout: nieuwe_layout Block name: *Paper_Space1. Layout: Page 1 Block name: *Paper_Space0.

Command: limmin

LIMMIN = -17.7938,-5.7937 (read only) Cannot set LIMMIN when paper margins or background are displayed. Command: limmax

LIMMAX = 261.6062,210.1062 (read only) Cannot set LIMMAX when paper margins or background are displayed. }}}

Allereerst moet Python slim de juiste log-file achterhalen. Met NTFS is dit niet zo moeilijk, maar bij FAT(32) verandert de tijd niet (atime, ctime en mtime). Daarom is het een goed idee alle overtollige log-bestanden te verwijderen voordat playout gestart wordt. Er blijven dan zoveel logfiles over als dat er tekeningen open staan. Die logfiles moeten ge-tail-d worden en de juiste - als de onderste string klopt - als uitgangsbasis genomen worden voor info-input.

LIMMIN en LIMMAX zijn de hoekcoordinaten van de nieuwe layout. Python moet van onder starten met zoeken naar een regel die begint met LIMMIN en LIMMAX en de x- en y-waarden van de coordinaten toewijzen aan variabelen: sheetlimits

verder: margins

frame

papersize

viewport

Output playout2.py, inhoud van playout2.scr

Playout (last edited 2009-02-19 13:31:16 by localhost)

Deze wikisite wordt gehost en gesponsord door StringIT.

e-mail bestuur wiebe@viaisn.org