chenqinghong
2024-05-07 3ec06a830367465068963156dcc1d8e522571c13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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() );
      }
    }
  *]
}