| Quintiq file version 2.0 | 
| #parent: #root | 
| Method AutoArrangeNodes ( | 
|   Unit unit, | 
|   Number maxx, | 
|   Number maxy | 
| ) | 
| { | 
|   Description: 'Move nodes into scope' | 
|   TextBody: | 
|   [* | 
|     nodes := construct( Nodes ); | 
|      | 
|     maxgridx := [Number]floor( maxx / ( this.GridPointDistance() ) ); // max of GridX | 
|     maxgridy := [Number]floor( maxy / ( this.GridPointDistance() ) ); // max of GridY | 
|      | 
|     nodes := selectset( this, | 
|                         Node, | 
|                         n, | 
|                         true, | 
|                         ( n.istype( UnitNode ) and n.astype( UnitNode ).Unit().Parent() = unit ) | 
|                         or ( n.istype( StockingPointNode ) and  n.astype( StockingPointNode ).StockingPoint_MP().Unit() = unit ) ) | 
|      | 
|      | 
|     traverse( nodes, Elements, node, node.GridX() < 0  // gridX < 0 | 
|                                      or node.GridX() > maxgridx // gridX > maxgridX | 
|                                      or node.GridY() < 0 // gridY < 0 | 
|                                      or node.GridY() > maxgridy ) // gridY > maxgridX | 
|     { | 
|       // Offset GridX | 
|       if( node.GridX() < 0 ) | 
|       { | 
|         node.GridX( this.OffsetX() ); | 
|       } | 
|       else if( node.GridX() > maxgridx ) | 
|       { | 
|         node.GridX( maxgridx - this.OffsetX() ); | 
|       } | 
|       // Offset GridY | 
|       if( node.GridY() < 0 ) | 
|       { | 
|         node.GridY( this.OffsetY() ); | 
|       } | 
|       else if( node.GridY() > maxgridy ) | 
|       { | 
|         node.GridY( maxgridy - this.OffsetY() ); | 
|       } | 
|     } | 
|   *] | 
| } |