slow script in Quark
slow script in Quark
- Subject: slow script in Quark
- From: Jan Alwin De Jong <email@hidden>
- Date: Mon, 14 Oct 2002 16:18:02 +0200
Hallo,
I've written a script (see below) which creates grey textboxes behind
the main text of a document. It searches for paragraphs with the style
"witregel1" and "witregel2", get the positions of these paragraphs and
puts the box behind it.
It's part of a system to automate the creation of books.Using xtags and
Autopage Personal edition.
It works great until now. But now it get's very slow with some
documents. I suspect that it has something to do with the new method
I'm using to make tables. I use paragraphs with anchored boxes to make
tables now.
It takes a very long time for quark to do:
set witregel1objreflijst to object reference of every paragraph of
destory whose style sheet is "witregel1"
and:
set theTextBox1 to object reference of text box 1 of item teller of
witregel1objreflijst
Has anybody has any insight in this and hopefully a solution to speed
things up a bit?
I tried using the do script method, but this doesn't seem to speed
things up much.
thanks in advance
Jan Alwin de Jong
property correctieboven : -2
property correctieonder : -14
property margeeindpagina : 10
property margebeginpagina : -7
tell application "QuarkXPress Passport 4.11"
--activate
tell document 1
set item spread coords to true -- meet over de spread anders worden
kaders verkeerd geplaatst
try
set destory to object reference of story 1 of (object reference of
every text box whose selected is true)
on error
display dialog "Er is geen tekstkader geselecteerd of er zijn
meerdere tekstkaders geselecteerd"
error number -128
end try
--set witregel1tblijst to object reference of text box 1 of (object
reference of every paragraph of destory whose style sheet is
"witregel1")
set witregel1objreflijst to object reference of every paragraph of
destory whose style sheet is "witregel1" -- lijst met objectref
paragraaf
set witregel2objreflijst to object reference of every paragraph of
destory whose style sheet is "witregel2"
set witregel1baselinelijst to baseline of every paragraph of every
text box of destory whose style sheet is "witregel1" -- lijst met
baseline
set witregel2baselinelijst to baseline of every paragraph of every
text box of destory whose style sheet is "witregel2"
copy (coerce witregel1objreflijst to list) to witregel1objreflijst --
maak van alles een lijst (alleen nodig als er boven maar een element
gevonden is
copy (coerce witregel2objreflijst to list) to witregel2objreflijst
copy (coerce witregel1baselinelijst to list) to witregel1baselinelijst
copy (coerce witregel2baselinelijst to list) to witregel2baselinelijst
if (count of witregel1objreflijst) = (count of witregel2objreflijst)
then
repeat with teller from 1 to count of witregel1objreflijst
set theTextBox1 to object reference of text box 1 of item teller of
witregel1objreflijst -- vraag de textbox op met typogr
set theTextBox2 to object reference of text box 1 of item teller of
witregel2objreflijst
set depagina1 to object reference of page 1 of theTextBox1 -- vraag
de pagina op met het typogr
set depagina2 to object reference of page 1 of theTextBox2
set box1bounds to bounds of theTextBox1 as list -- bounds of textbox
set box2bounds to bounds of theTextBox2 as list
if theTextBox1 = theTextBox2 then
set x1grijs to my verwijderpt(item 2 of box1bounds as string) --
bepaal de x coord == textbox
set x2grijs to my verwijderpt(item 4 of box1bounds as string)
set ytextbox to my verwijderpt(item 1 of box1bounds as string) --
bovenste y coord
set afstandtypo1 to my verwijderpt(item teller of
witregel1baselinelijst as string) -- afstand van tekst tot bovenr kader
set afstandtypo2 to my verwijderpt(item teller of
witregel2baselinelijst as string)
set y1grijs to ytextbox + afstandtypo1 + correctieboven -- bereken
y coord grijs kader
set y2grijs to ytextbox + afstandtypo2 + correctieonder
--tell depagina1
-- make new picture box at beginning with properties
{bounds:{y1grijs, x1grijs, y2grijs, x2grijs}, runaround:none runaround,
color:"zwart", shade:5}
--end tell
make new picture box at after theTextBox1 with properties
{bounds:{y1grijs, x1grijs, y2grijs, x2grijs}, runaround:none runaround,
color:"zwart", shade:"5%"}
else
if depagina1 = depagina2 then -- verschillende tekstkaders op
zelfde pagina (bijv tabel ertussen)
-- y1grijs hangt af van 1e tektkader + baseline
-- y2grijs hangt af van 2e tekstkader + baseline
set x1grijs to my verwijderpt(item 2 of box1bounds as string)
set x2grijs to my verwijderpt(item 4 of box1bounds as string)
set ytextbox1 to my verwijderpt(item 1 of box1bounds as string)
set ytextbox2 to my verwijderpt(item 1 of box2bounds as string)
set afstandtypo1 to my verwijderpt(item teller of
witregel1baselinelijst as string)
set afstandtypo2 to my verwijderpt(item teller of
witregel2baselinelijst as string)
set y1grijs to ytextbox1 + afstandtypo1 + correctieboven
set y2grijs to ytextbox2 + afstandtypo2 + correctieonder
set x to make new picture box at after theTextBox1 with
properties {bounds:{y1grijs, x1grijs, y2grijs, x2grijs}, runaround:none
runaround, color:"zwart", shade:"5%"}
-- move x to after generic box 1
else -- kader over twee pagina's
-- we beginnen bij de 1e pagina
-- bovenkant afhankelijk van typogram witregel 1
-- onderkant afhankelijk van onderkant textkader 1
set x1grijs to my verwijderpt(item 2 of box1bounds as string)
set x2grijs to my verwijderpt(item 4 of box1bounds as string)
set ytextbox1 to my verwijderpt(item 1 of box1bounds as string)
set afstandtypo1 to my verwijderpt(item teller of
witregel1baselinelijst as string)
set y1grijs to ytextbox1 + afstandtypo1 + correctieboven
set y2grijs to (my verwijderpt(item 3 of box1bounds as string)) +
margeeindpagina
make new picture box at after theTextBox1 with properties
{bounds:{y1grijs, x1grijs, y2grijs, x2grijs}, runaround:none runaround,
color:"zwart", shade:"5%"}
-- nu de 2e pagina
-- bovenkant afhankelijk bovenkant textkader2
-- onderkant afhankelijk vn typogram witregel2
set x1grijs to my verwijderpt(item 2 of box2bounds as string)
set x2grijs to my verwijderpt(item 4 of box2bounds as string)
set ytextbox2 to my verwijderpt(item 1 of box2bounds as string)
set afstandtypo2 to my verwijderpt(item teller of
witregel2baselinelijst as string)
set y1grijs to ytextbox2 + margebeginpagina
set y2grijs to ytextbox2 + afstandtypo2 + correctieonder
make new picture box at after theTextBox2 with properties
{bounds:{y1grijs, x1grijs, y2grijs, x2grijs}, runaround:none runaround,
color:"zwart", shade:"5%"}
end if
end if
end repeat
else
display dialog "Ongelijk aantal witregel1 en witregel2"
end if
end tell
end tell
on verwijderpt(input)
set output to (characters 1 thru ((count of input) - 3) of input as
text)
return output
end verwijderpt
Mercator
Drs. Jan Alwin de Jong
Lijnbaanstraat 5/1
9711 RT Groningen
050-3139336
www.mercator-internet.nl
_______________________________________________
applescript-users mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/applescript-users
Do not post admin requests to the list. They will be ignored.