We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date

Line routing does not work.

Hello,

I'm implementing a flowchart and want to have lines (orthogonal links) to be routed around the symbols. The connectors link to top and bottom of the symbols (derived from RoundRect and PolyLine). We are using version 8.204.0.18.

I set the LineRouting property for the diagram and for each link to true before it is attached. In addition I set

this.diagramControl.Model.LineBridgingEnabled = true;
this.diagramControl.Model.LineRoutingEnabled = true;
this.diagramControl.Model.LineRouter.DistanceToObstacles = 20;
this.diagramControl.Model.LineRouter.RoutingMode = RoutingMode.Automatic;

Whatever I set the lines going just across the symbols. I attached a screenshot. The connections are always from the "leave" port to the next right symbol's "enter" port. I tried several layout managers but it's all the same.

How can I get this working?

Regards,
Christian




Bildschirmfoto 2012-02-17 um 13.53.56.png_27ee3175.zip

6 Replies

CR Christian Rattat February 21, 2012 08:33 AM UTC

I solved this partially using the OrgChartLayoutManager and OrgLineConnector. This seems to be the only combination that creates a reasonable layout where lines are no crossing other lines and symbols.

However there are still a couple issues:

In your documentation is written that one should set LineRoutingEnabled for connectors and so on. If I do that my diagrams with less than 250 symbols each connected with one connector loads and displays in 30 seconds and I expect my final diagrams to have up to 1500-2000 symbols. If I do not set the LineRoutingEnabled property to true the diagram is layouted anyway the same but then it loads in only 2 seconds. I don't understand this behavior or the settings you suggest. However any other layout manager messes up the diagrams completely. Connectors are crossing each other the same like crossing symbols no matter which routing and other options I use. The only one that works is org chart layout.

But org chart layout is not working correctly. The most parts are layouted correctly but for some nodes it does not work. I have custom symbols that have one entry port on top and a couple outgoing ports on the right and bottom. E.g. for conditional expressions I have a symbol with true and false ports on bottom and in some cases the two subgraphs starting at these ports are crossing each other.

Then, actually I want to have the option to change between vertical and horizontal layout. It works fine with vertical excepting whant I mentioned above. But in horizontal layout it messes up completely. In your samples it works ok but there you connect everything to only the center port. Once you have ports on top and bottom it completely fails and every link is crossing a symbol though the corresponding options to avoid that are set.

Did you change anything in the behavior of layout managers or fixed bugs after 8.2.0.18 so that it's worth to switch to newer versions that solve these issues?

Regards,
Christian






















CR Christian Rattat February 22, 2012 09:27 AM UTC

By the way: While analyzing org chart layouting algorithm I noticed that graph class and many others using HashTable and ArrayList. This requires a lot of boxing and unboxing in dotnet which wastes significant amount of performance. This should be replaced by generic collection types using the concrete types or base types.



CR Christian Rattat February 23, 2012 07:45 AM UTC

I have meanwhile implemented my own tree layouter as the included layouters all don't work properly. They work fine with the samples but any step beyond they fail. I'm completely dissatisfied with diagram component. And also feedback to posts in this section is disappointing. Many threads here which were interesting just stopped at a point where suggestions didn't solve the problem though the users asked further things. Links to samples and other posts showing how to do things do not work quite often. Many older posts are completely unformatted and hardly readable. The documentation is poor and does not explain more than the samples. We meanwhile paid around some 80.000 Euros or so for licenses and maintenance. I will now raise support issues for all these things, maybe this is a better way to get any reasonable feedback.



AA Amsath Ali M Syncfusion Team February 23, 2012 01:47 PM UTC

Hi Christian,

Thanks for using Syncfusion products and sorry for the inconvenience caused.

1. “Whatever I set the lines going just across the symbols”
We are able to reproduce the issue “The connectors are goes through the node even when LineRoutingEnabled property is true” reported by you at our end and the issue has been suspected to be a defect. Please create a DT incident for your query so that we can update the patch for this issue.

You can create the DT incident from the following link.
http://www.syncfusion.com/account/dashboard

In the interests of maintaining confidentiality, we have a policy of not sharing patches or otherwise proprietary customer specific information in the public Forum.

2. “Performance of Diagram is slow when LineRoutingEnabled Property is true”

The performance of the diagram control has been improved in the latest version when the line routing is enabled. Please create a DT incident for your query so that we can update the patch for this issue.

You can create the DT incident from the following link.
http://www.syncfusion.com/account/dashboard

In the interests of maintaining confidentiality, we have a policy of not sharing patches or otherwise proprietary customer specific information in the public Forum.

3. “Creating CustomLayoutManager”

We suggest you to create a custom OrgLayoutManager by driving the base class OrgChartLayoutManager and apply your own logic to achieve your requirement. Please follow the steps provided in the below document to create your own custom layout manager.

Here is the procedure to create custom org layout manager:
ProceduretoCreateCustomOrgLayout-877446085-1368864513.zip
Please let us know if you have any queries.

Regards,
Amsath Ali. M






CR Christian Rattat March 10, 2012 08:33 AM UTC

Hi,

At 3.: Why should I derive from any of the syncfusion layout classes? They have incredible overhead and very intransparent structure which is not documented at all.

I have implemented standard Reingold-Tilford algorithm plus adaption for routing nodes in less than 500 lines of code for the entire layouter class including positioning and this works like a charm and is faster than the syncfusion layouters.

I will now add Sugiyama algorithm in addition and have two fine layouters that do not use any function of the diagram at all excepting setting position of nodes.

I'm meanwhile very angry because I had to do nearly everything with diagram completely myself. I'm drawing the entire nodes now myself because several functions are not available, I'm doing the layout myself completely because the standard layouters do not work at all, I'm managing zooming completely myself because the standard behavior is unusable, I had to write own pan/point/select/movetools because the standard is unusable because of many strange behaviors and many things like tooltips/node clicks and so on must be handled outside the nodes which results in extremely ugly code which fits no coding standards. I have now meanwhile invested 2 month of work only to have the diagram node being painted, linked and aligned correctly and almost non of the actual work is done while you provide in your feature list that all these things are available, unhappily the most of them don't in any acceptable way. And you call this "rock solid components"?

Regards,
Christian




AA Amsath Ali M Syncfusion Team March 13, 2012 12:47 PM UTC

Hi Christian,

We regret for the inconvenience caused.

1. Why should I derive from any of the Syncfusion layout classes?
If your intention is to customize the existing behavior of our standard layout managers, then you can derive from any one of our standard layout manager of the diagram control which meets your requirement.

2. The information about the layout manager is not documented at all.
We will improve the documentation of the diagram control regarding the layout managers.

3. I'm doing the layout myself completely because the standard layouts do not work at all.
Our standard layout managers (Hierarchichal, Orgchart, DirectedTree, RadialLayout) are created based on the standard requirements available, and they are working fine with those requirements. Please provide your suggestions, feedbacks or issues you are facing with our standard layout managers, so that we will improve our layout managers further.

4. I'm drawing the entire nodes now myself because several functions are not available and I'm managing zooming completely myself because the standard behavior is unusable, I had to write own pan/point/select/move tools because the standard is unusable because of many strange behaviors. Many things like tooltips/node clicks and so on must be handled outside the nodes which results in extremely ugly code which fits no coding standards.

Sorry for the inconvenience caused.
Please list out your requirements regarding the zooming/pan/point/move tools which are not performed using our standard code library or list out the issues which you are facing with our component, so that we will consider including those requirements or fixing the issues reported by you in our library. Also, we will improve our coding standards and documentation of our component.

Please let us know if you have any queries.

Regards,
Amsath Ali. M




Loader.
Live Chat Icon For mobile
Up arrow icon