Sequence Diagram

Hi,

I am looking at getting something like the figure below.(a sequence diagram).Currently I am using a combination GoIconic node and GoLabelledLink objects to draw the diagram.But if i use these objects i will have to specify the postion of each of the nodes.
Is there any way by which i can draw the diagram below without specifying the location of each node.
I need this because i will have around 10000 or more such steps in the diagram.So it wont be good to hardcode the postions of each node.
Waiting for a reply
Thanks and Regards,
Arun

OK, I have implemented some classes for implementing Sequence diagrams: Lifeline, Activation, and Message.

The Lifeline class has a header, a dashed line GoStroke extending downwards, a LifelinePort that is smart about Messages (links) that connect to it, and any number of Activations.
The Activation class is basically a GoRectangle that knows what steps it begins at and ends at. Lifeline.LayoutChildren positions its Activation children appropriately along the lifeline. The user can resize Activations, but only vertically; such resizes also update the Begin and End properties.
The Message class is a GoLabeledLink that has a Step property, so that it knows what vertical position it should have.
The code is available at: http://www.nwoods.com/forum/uploads/SequenceDiagram.cs.
Here's a screenshot:
And here's the code to create the above diagram:
[code] Lifeline fred = new Lifeline("Fred : Patron");
doc.Add(fred);
Lifeline bob = new Lifeline("Bob : Waiter");
doc.Add(bob);
Lifeline hank = new Lifeline("Hank : Cook");
doc.Add(hank);
Lifeline renee = new Lifeline("Renee : Cashier");
doc.Add(renee);
doc.Add(new Message(0, fred, bob, "order food", 2));
doc.Add(new Message(1, bob, hank, "order food", 2));
doc.Add(new Message(2, bob, fred, "serve wine", 1));
doc.Add(new Message(3, hank, bob, "pickup", 1));
doc.Add(new Message(4, bob, fred, "serve food", 1));
doc.Add(new Message(5, fred, renee, "pay", 1));
fred.Left = 20;
bob.Left = fred.Right+30;
hank.Left = bob.Right+30;
renee.Left = hank.Right+30;[/code]

I just updated the code a bit.