Hi!

The BSpline package allows one to define hierarchical bundle edges.
These screenshots have been made using the script below, runnable in a Glamour-based Roassal Easel open on a class group in Moose.


More screenshot on : https://www.facebook.com/media/set/?set=a.511442275609041.1073741827.340543479365589&type=1

Cheers,
Alexandre

|bs superclassEdges lastlevel|
view shape circle size: 10.
view nodes: classGroup. 

 
superclassEdges := view edgesFrom: #superclass.

"
view treeLayout  userDefinedEdges: superclassEdges.
"


view radialTreeLayout  userDefinedEdges: superclassEdges.

"
view forceBasedLayout  userDefinedEdges: superclassEdges.
"

lastlevel := classGroup select: [ :cls | (cls subclassHierarchy size) == 0 ].

"Blue"
bs := (ROBSplineLine  new). 
bs alpha: 0.8.
bs setDiscovery: [ :cls | cls superclass ].
bs color: (Color blue alpha: 0.3).
 
view shape: bs. 
view edges: lastlevel from: #yourself toAll: [ :cls | (cls queryAllOutgoingInvocations atTypeScope) select: [:clsa | (clsa subclassHierarchy size) == 0 and: [ cls name size odd ] ]].

"Red"
bs := (ROBSplineLine  new). 
bs alpha: 0.8.
bs setDiscovery: [ :cls | cls superclass ].
bs color: (Color red alpha: 0.3).
 
view shape: bs. 
view edges: lastlevel from: #yourself toAll: [ :cls | (cls queryAllOutgoingInvocations atTypeScope) select: [:clsa | (clsa subclassHierarchy size) == 0 and: [ cls name size even ] ]].

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.