Page Index Toggle Pages: 1 2 [3] 4 5  Send TopicPrint
Very Hot Topic (More than 25 Replies) Link routing - supperposition + arrow orientation (Read 32461 times)
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #30 - May 26th, 2009 at 3:59pm
Print Post  
Hi Stoyan,

Thanks Smiley
I confirm that the crash has been fixed! It was quick!

-1- I got another crash while routing a single node (I'm not sure if I'm allowed to use NewRouter.RouteLink() however 8)).
Code
Select All
Additional information: non-adjacent tiles in Tile.Merge!

   at MindFusion.Diagramming.Tile.Merge(Tile tile1, Tile tile2)
   at MindFusion.Diagramming.RoutingTree.x260baf72fdd85c7c()
   at MindFusion.Diagramming.RoutingTree.CreateRoutingTree(Diagram diagram)
   at MindFusion.Diagramming.NewRouter.RouteLink(DiagramLink link) 



-2- Also, it's minor since I found only 1 occurrence in all my graphs, but I have one unecessary turn. I'll send the saved XML & screenshot for you.

-3- Once again something minor, but sometimes the path taken is weird. If it is easy to fix, it would make more sense that a link goes toward its destination where there is the appropriate place instead of going around an obstacle for no obvious reason. I'll send screenshots for that as well (it's the same XML).

-4- I noticed that manually routing some links can be quite long. I do it when a container gets moved, resized or unfolded (there might be other cases, I'm not sure). By example, the following code executed on a container that has about 50 nodes in it takes much longer than calling NewRouter.RouteAllLinks (on a diagram that has over 400 links):
Code
Select All
public void RouteRelatedLinks(DiagramNode node)
{
    foreach (DiagramLink link in this.diagram.Links)
    {
        if (link.Origin == node || link.Destination == node || link.Intersects(node))
        {
            NewRouter.RouteLink(link);
            this.Invalidate();
        }
    }

    if (node is ContainerNode)
    {
        ContainerNode comment = (ContainerNode)node;
        if (comment != null && comment.SubordinateGroup != null && comment.SubordinateGroup.AttachedNodes != null)
        {
            foreach (DiagramNode childNode in comment.SubordinateGroup.AttachedNodes)
                RouteRelatedLinks(childNode);
        }
    }
} 

Could I use RoutingTree somehow? It seems to be used in RouteAllLinks...

Thanks a lot!
Marie
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #31 - May 26th, 2009 at 4:29pm
Print Post  
Hi Marie,

Does the last diagram.xml file show the Tile.Merge exception, and for which link we should call NewRouter.RouteLink to reproduce it?

Thanks,
Stoyan
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #32 - May 26th, 2009 at 5:01pm
Print Post  
Hi Stoyan,

No, I did not get the crash in the same graph (it might be there as well, I don't know).

I'll send you the file. However, it's not a 100% repro. Just move the left-most node and eventually it'll crash (I call RouteRelatedLinks everytime a node is moved).

I got another crash while doing the same thing (It was a null exception):
Code
Select All
   at MindFusion.Diagramming.RoutingTree.Eval(Tile previous, Tile current, Tile next)
   at MindFusion.Diagramming.RoutingTree.Route(Tile start, Tile end)
   at MindFusion.Diagramming.NewRouter.x1a552bcef2b91b0f(DiagramLink xe9c763083b68a7ee, RoutingTree x28fd8f9c33fc7c8e, List`1 xa1b0e28271fd2a7c)
   at MindFusion.Diagramming.NewRouter.RouteLink(DiagramLink link, RoutingTree routingTree)
   at MindFusion.Diagramming.NewRouter.RouteLink(DiagramLink link) 



Thanks!
Marie
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #33 - May 27th, 2009 at 8:57am
Print Post  
Hi Marie,

1) Should be fixed here:
https://mindfusion.eu/_beta/fcnet_newrouter3.zip

2&3) We've seen such bends happen in our tests too, but if it's not urgent, we'll improve it after the 5.3 release.

4) You can create a shared RoutingTree object and pass it to one of the overloaded RouteLink methods in NewRouter. Anyway we'll integrate this into the control's auto-routing feature in the next few days.

Stoyan
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #34 - May 27th, 2009 at 12:32pm
Print Post  
Hi Stoyan,

1, 2, 3 & 4) All good! The crash is gone and I'm looking forward to 5.3! Do you know when that release is planned?

Thanks for you great help!
Marie
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #35 - May 28th, 2009 at 1:14pm
Print Post  
Hi Marie,

We plan to release it by mid-June.

We've found and fixed an index-out-of-bounds exception that was thrown every time when pathfinding fails:

https://mindfusion.eu/_beta/fcnet53.zip

I suppose the new router is so good that it always found paths successfully in your graphs Wink

Stoyan
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #36 - May 28th, 2009 at 8:27pm
Print Post  
Hi Stoyan,

I'll test your beta version early next week.

Thanks for your help Cheesy
Marie
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #37 - Jun 2nd, 2009 at 2:53pm
Print Post  
Hi Marie,

This version integrates the new routing algorithm into the auto-routing functionality:
https://mindfusion.eu/_beta/fcnet53.zip

Now calling the Diagram.RouteAllLinks method should be the same as NewRouter.RouteAllLinks. AutoRouted links automatically call NewRouter.RouteLink.

Stoyan
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #38 - Jun 17th, 2009 at 3:21pm
Print Post  
Hi Stoyan,

I'm really sorry if it took so long for me to test it, but I have been really busy we my own release...

Now I am dedicated again to our Flowchart component Wink.

I tested the new version and the links all seem to take the same vertical path when the graph is big enough... The user can't follow the path visually since the links overlap (even if they do not go towards the same point).

Could this be fixed?

Thanks as always!
Marie

p.s. I'll send you the screenshot & XML by email...
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #39 - Jun 18th, 2009 at 5:25am
Print Post  
Hi Marie,

We are releasing v5.3 now, we'll see about the overlapping links after that. Actually the router has some code that pulls apart overlapping segments, but it triggers only if the segments have exactly the same X or Y position.

If the left or right coordinates of your tables have some tiny difference, say 0.1mm, this might cause a similar difference in the segment coordinates in links passing through the free area along such tables. Then this leads to the segment separation code not running.

As a workaround you might set the table sides to the same coordinates when you detect they do not differ much. For the next release we'll add some threshold property that will let you specify for what segment distances the router's segment separation code should run.

Stoyan
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #40 - Jun 18th, 2009 at 8:41pm
Print Post  
Hi Stoyan,

I have been suggested to turn off routing to see if it would yield better results.

I am trying to have bezier links.

I set:
diagram.LinkStyle = Bezier
diagram.RouteLinks = false

I get mostly straight links (plus 1 or 2 bezier links and 1 or 2 weird curves). I was wondering if there is something else I need to do to get bezier links?

Thanks,
Marie

p.s. I'm using the beta 5.3 version.
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #41 - Jun 18th, 2009 at 8:47pm
Print Post  
Hi again!

I have another question.

This problem seems to have been there for a while.

I can't select a link if it is over a selected container. I tried playing with ZOrders without success (calling link.ZTop() for all links).

What can I do about this? Is it a bug?
Thanks,
Marie
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #42 - Jun 19th, 2009 at 6:35am
Print Post  
Hi,

This happens because selection handles of the active item take precedence when hit-testing, and by default the whole interior of a container is considered its move handle. You could change the container's HandlesStyle to a value that start move operations only from the selection frame. Another workaround is to set ModificationStart = AutoHandles.

I hope that helps,
Stoyan
  
Back to top
 
IP Logged
 
marie
Full Member
***
Offline



Posts: 147
Joined: Nov 11th, 2008
Re: Link routing - supperposition + arrow orientat
Reply #43 - Jun 19th, 2009 at 1:01pm
Print Post  
Hi Stoyan,

-2- I tried all HandlesStyle and I can select the link over a selected container for HandlesStyle.SquareHandles & HandlesStyle.HatchHandles. However, I need to be able to move the container by selecting anywhere in it. Just its borders is not user-friendly enough for my application. ModificationStart is already set to AutoHandles. Anything else I could try?

-3- New question: Do you have a definition of the differences between each HandlesStyle somewhere?

-1- Any idea how to make my links bezier (see post above)?

Thanks,
Marie

  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Link routing - supperposition + arrow orientat
Reply #44 - Jun 19th, 2009 at 3:05pm
Print Post  
Hi Marie,

Setting diagram.LinkStyle = Bezier will affect only new links, and won't change existing links, or ones that are loaded from a file.

At this time you could achieve -2- using a custom BehaviorBase derived class. We'll change the hit-testing of the standard class for the next release.

Stoyan
  
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1 2 [3] 4 5 
Send TopicPrint