nasty FrameMaker or FrameScript behaviour

Recently I got a complaint from an user that my FrameScript code did not work. Understanding the problem was a valuable experience.

The code does the following: it processes all images in a document and sets frames padding to zero. Initially it was a very trivial script, but then some features were added and script became more compilcated. The last change was in January when I added regarding of yet another offset parameter.

At first, I failed to reproduce the user’s problem and asked him to send me video of his actions. He did it, and I reproduced the problem on my own.

It was very ridiculous. Depending on a location in a document, the script fixes different number of images. I hardly was able to beleive my eyes. The script could not be non-determenistic.

The localization of the problem was a simple, but time-consuming task. Finally I got it.

FrameMaker doesn’t immediately load all images of a document when opening the document. Instead, it uses a sort of proxy objects. When an user scrolls to a proxied object, FM automatically loads the corresponding image object.

The problem was in the following. One of the properties of a proxy object (in my case LocY) had one value, but the real value was another.

The only solution is to avoid the proxy objects. That’s what I do now. Before accessing image properies, the script scrolls the document to the location of the image, and if it is a proxy, it’s automatically replaced by the real image.

Unfortunately, now theh script works a lot slower.

And I don’t know why the problem appeared only now, after a long time of successfull use.

2 Responses to “nasty FrameMaker or FrameScript behaviour”

  1. David Geddes Says:

    Hi,

    Great article! As you seem to be very knowledgeable about FrameMaker scripting, can you point me to a good place to view sample scripts or to learn about scripting a FrameMaker file?

    I want to see if I can create a script that sorts all heading X topics alphbetically.

    Thanks

  2. olpa Says:

    Hi David,

    the best starting points are:

    * the book “FrameScript: A crash course” by Rick Quatro, and
    * the mailing list framescript-users: http://tech.groups.yahoo.com/group/framescript-users/

Leave a Reply