50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package section
|
||
|
||
import (
|
||
"container/list"
|
||
"fmt"
|
||
"sort"
|
||
"strings"
|
||
|
||
"joylink.club/bj-rtsts-server/ats/verify/simulation/wayside/face"
|
||
)
|
||
|
||
// 相邻计轴检测点(车档为特殊的计轴检测点)定义的计轴区段,由LinkSection组成
|
||
type AxleSectionModel struct {
|
||
//计轴区段基本信息
|
||
face.DeviceModel
|
||
//计轴区段的A端的计轴检测点
|
||
AxlePointA face.AxlePointDeviceModeller
|
||
//计轴区段的B端的计轴检测点
|
||
AxlePointB face.AxlePointDeviceModeller
|
||
//如果该计轴区段经过岔区,则所经过的道岔应该所处的定反位
|
||
//ref.SwitchPositionRef
|
||
ViaSwitchPositions *list.List
|
||
//PathLayer中收集: 该计轴区段经过的轨道
|
||
//face.LinkSectionModeller
|
||
ViaLinks *list.List
|
||
//计轴区段的两侧计轴点的图形id形成的key
|
||
pointsKey string
|
||
}
|
||
|
||
// 计轴区段的两侧计轴点的图形id形成的key
|
||
func (asm *AxleSectionModel) GetPointsKey() string {
|
||
if len(strings.TrimSpace(asm.pointsKey)) == 0 {
|
||
var pointsKeySlice = make([]string, 0, 2)
|
||
pointsKeySlice = append(pointsKeySlice, asm.AxlePointA.GetGraphicId())
|
||
pointsKeySlice = append(pointsKeySlice, asm.AxlePointB.GetGraphicId())
|
||
sort.Strings(pointsKeySlice)
|
||
asm.pointsKey = fmt.Sprintf("%s_%s", pointsKeySlice[0], pointsKeySlice[1])
|
||
}
|
||
return asm.pointsKey
|
||
}
|
||
|
||
// 计轴区段中轨道个数,即计轴区段是由几个轨道组成
|
||
func (asm *AxleSectionModel) LinksCount() int {
|
||
if asm.ViaSwitchPositions == nil {
|
||
return 1
|
||
} else {
|
||
return 1 + asm.ViaSwitchPositions.Len()
|
||
}
|
||
}
|