Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5

Public Class WallM
   Inherits PartM

   Protected m_dPOSY As Double
   Public Property dPOSY As Double
      Get
         Return m_dPOSY
      End Get
      Set(value As Double)
         m_dPOSY = value
      End Set
   End Property

   Protected m_dROT As Double
   Public Property dROT As Double
      Get
         Return m_dROT
      End Get
      Set(value As Double)
         m_dROT = value
      End Set
   End Property

   Protected m_bFLIP As Boolean
   Public Property bFLIP As Boolean
      Get
         Return m_bFLIP
      End Get
      Set(value As Boolean)
         m_bFLIP = value
      End Set
   End Property

#Region "CONSTRUCTOR"

   Protected Sub New(nParentMachGroup As MyMachGroupM, nPartId As Integer)
      MyBase.New(nParentMachGroup, nPartId)
   End Sub

   Public Shared Function CreateWall(nParentMachGroup As MyMachGroupM, nPartId As Integer, nRawPartId As Integer) As WallM
      Dim NewWallM As New WallM(nParentMachGroup, nPartId)
      ' leggo info pezzo
      EgtGetInfo(nPartId, BTL_PRT_PROJ, NewWallM.m_nProjId)
      EgtGetInfo(nPartId, BTL_PRT_PDN, NewWallM.m_nPDN)
      EgtGetInfo(nPartId, BTL_PRT_NAM, NewWallM.m_sNAM)
      EgtGetInfo(nPartId, BTL_PRT_L, NewWallM.m_dBtlL)
      EgtGetInfo(nPartId, BTL_PRT_W, NewWallM.m_dBtlW)
      EgtGetInfo(nPartId, BTL_PRT_H, NewWallM.m_dBtlH)
      EgtGetInfo(nPartId, BTL_PRT_CNT, NewWallM.m_nCNT)
      Dim nTemp As Integer = 0
      If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, nTemp) Then
         nTemp = 0
      End If
      NewWallM.SetRotated(nTemp)
      If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, nTemp) Then
         nTemp = 0
      End If
      NewWallM.SetInverted(nTemp)
      ' leggo PosX, PosY, Rot e Flip
      EgtGetInfo(nPartId, MGR_PRT_POSX, NewWallM.m_dPOSX)
      EgtGetInfo(nPartId, MGR_PRT_POSY, NewWallM.m_dPOSY)
      EgtGetInfo(nPartId, MGR_PRT_ROT, NewWallM.m_dROT)
      EgtGetInfo(nPartId, MGR_PRT_FLIP, NewWallM.m_bFLIP)
      ' leggo feature
      NewWallM.m_FeatureMList = LoadBTLFeatures(nPartId)
      ReadMachGroupData(NewWallM)
      Return NewWallM
   End Function

#End Region    ' CONSTRUCTOR

#Region "METHODS"

   Private Shared Function LoadBTLFeatures(nPartId As Integer) As List(Of BTLFeatureM)
      Dim TempList As New List(Of BTLFeatureM)
      ' Aggiungo outline
      Dim nOutLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
      Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutLayerId)
      While nOutlineId <> GDB_ID.NULL
         ' verifico che sia una feature
         Dim nGRP As Integer
         If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nOutlineId, BTL_FTR_MAINID) Then
            ' creo la feature
            TempList.Add(BTLFeatureM.CreateBTLFeature(Nothing, nOutlineId))
         End If
         nOutlineId = EgtGetNext(nOutlineId)
      End While
      ' Aggiungo feature
      Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
      Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
      While nFeatureId <> GDB_ID.NULL
         ' verifico che sia una feature
         Dim nGRP As Integer
         If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nFeatureId, BTL_FTR_MAINID) Then
            ' creo la feature
            TempList.Add(BTLFeatureM.CreateBTLFeature(Nothing, nFeatureId))
         End If
         nFeatureId = EgtGetNext(nFeatureId)
      End While
      Return TempList
   End Function

#End Region    ' METHODS

End Class
