1321 lines
50 KiB
VB.net
1321 lines
50 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.Collections.Specialized
|
|
Imports System.ComponentModel
|
|
Imports System.Windows.Threading
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class BTLStructureVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Friend Enum SelectionTypes As Integer
|
|
NULL = 0
|
|
SELECT_ = 1
|
|
HIGHLIGHT = 2
|
|
End Enum
|
|
|
|
Private m_Calc_PartEnd As New DispatcherTimer
|
|
|
|
Private WithEvents m_BTLStructureM As BTLStructureM
|
|
Public ReadOnly Property BTLStructureM As BTLStructureM
|
|
Get
|
|
Return m_BTLStructureM
|
|
End Get
|
|
End Property
|
|
|
|
' pezzi da BTL
|
|
Private m_BTLPartVMList_View As CollectionView = Nothing
|
|
Public ReadOnly Property BTLPartVMList_View As CollectionView
|
|
Get
|
|
Return m_BTLPartVMList_View
|
|
End Get
|
|
End Property
|
|
|
|
Private m_BTLPartVMList As ObservableCollection(Of BTLPartVM)
|
|
Public Property BTLPartVMList As ObservableCollection(Of BTLPartVM)
|
|
Get
|
|
Return m_BTLPartVMList
|
|
End Get
|
|
Set(value As ObservableCollection(Of BTLPartVM))
|
|
m_BTLPartVMList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_bOnlySelectItem As Boolean = False
|
|
Public Property bOnlySelectItem As Boolean
|
|
Get
|
|
Return m_bOnlySelectItem
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bOnlySelectItem = value
|
|
End Set
|
|
End Property
|
|
Private m_PrevSelectionType As SelectionTypes = SelectionTypes.NULL
|
|
Friend ReadOnly Property PrevSelectionType As SelectionTypes
|
|
Get
|
|
Return m_PrevSelectionType
|
|
End Get
|
|
End Property
|
|
Private m_SelectionType As SelectionTypes = SelectionTypes.NULL
|
|
Friend ReadOnly Property SelectionType As SelectionTypes
|
|
Get
|
|
Return m_SelectionType
|
|
End Get
|
|
End Property
|
|
Friend Sub SetSelectionType(value As SelectionTypes)
|
|
If Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE And Map.refProjectVM.LastSelGridType = ProjectVM.GridSelTypes.MACHGROUP Then
|
|
' resetto gruppo di lavorazione corrente
|
|
EgtResetCurrMachGroup()
|
|
End If
|
|
If Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then
|
|
' rimuovo selezione da pezzo in MachGroup
|
|
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup) Then
|
|
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.SelPart) Then
|
|
Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.SelPart = Nothing
|
|
End If
|
|
End If
|
|
End If
|
|
m_PrevSelectionType = m_SelectionType
|
|
If value = m_SelectionType And (Map.refProjectVM.LastSelGridType = ProjectVM.GridSelTypes.PART Or Map.refProjectVM.LastSelGridType = ProjectVM.GridSelTypes.PARTLIST) Then Return
|
|
m_SelectionType = value
|
|
Select Case m_SelectionType
|
|
Case SelectionTypes.SELECT_
|
|
' imposto modalita' proj su vista feature
|
|
If Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then
|
|
Map.refProdProjManagerVM.SelProdProj = ProdProj.PROJ
|
|
' rendo visibile PartManager
|
|
Map.refLeftPanelVM.SetOnlyProdPartManager_Visibility(Visibility.Visible)
|
|
End If
|
|
' rendo enable bottone parameters
|
|
Map.refLeftPanelVM.SetParametersIsEnabled(True)
|
|
Map.refLeftPanelVM.SetData_IsEnabled(False)
|
|
' verifico reset mark su tutti i pezzi
|
|
For Each BTLPart In m_BTLPartVMList
|
|
EgtResetMark(BTLPart.nPartId)
|
|
Next
|
|
' mostro barra di gestione pezzo
|
|
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProdProjManagerVM.PartManager_Visibility))
|
|
Case SelectionTypes.HIGHLIGHT
|
|
' imposto modalita' nulla su vista feature
|
|
If Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then
|
|
Map.refProdProjManagerVM.SelProdProj = ProdProj.NULL
|
|
' rendo visibile PartManager
|
|
Map.refLeftPanelVM.SetOnlyProdPartManager_Visibility(Visibility.Collapsed)
|
|
End If
|
|
' rendo disable bottone parameters
|
|
Map.refLeftPanelVM.SetParametersIsEnabled(False)
|
|
Map.refLeftPanelVM.SetData_IsEnabled(True)
|
|
If m_PrevSelectionType = SelectionTypes.SELECT_ Then
|
|
EgtBeamShowFacesName(False)
|
|
EgtBeamShowLoadingSide(False, False)
|
|
End If
|
|
If Not IsNothing(m_SelBTLPart) Then
|
|
m_SelBTLPart = Nothing
|
|
NotifyPropertyChanged(NameOf(SelBTLPart))
|
|
End If
|
|
' mostro pezzi selezionati
|
|
Map.refProjectVM.BTLStructureVM.ShowAll(False)
|
|
' se attivata opzione, li assemblo
|
|
Map.refProjectVM.BTLStructureVM.ShowBuilding(If(Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE, Map.refShowBeamPanelVM.ShowBuilding_IsChecked, False), False)
|
|
' nascondo barra di gestione pezzo
|
|
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProdProjManagerVM.PartManager_Visibility))
|
|
End Select
|
|
' aggiornamento grafica
|
|
Configuration.UpdateGraphics()
|
|
If Not IsNothing(Map.refFeatureListManagerVM) Then Map.refFeatureListManagerVM.FeatureSelectionChanged()
|
|
Map.refCALCPanelVM.SetIsEnabledForSelPart()
|
|
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProdProjManagerVM.PartManager_Visibility))
|
|
End Sub
|
|
|
|
Private m_SelBTLParts As New PartsObservableCollection(Of BTLPartVM)
|
|
Public ReadOnly Property SelBTLParts As PartsObservableCollection(Of BTLPartVM)
|
|
Get
|
|
Return m_SelBTLParts
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelBTLPartsCnt As Integer = Nothing
|
|
Public ReadOnly Property SelBTLPartsCnt As Integer
|
|
Get
|
|
Return m_SelBTLPartsCnt
|
|
End Get
|
|
End Property
|
|
|
|
Private Sub SelBTLParts_CollectionChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
|
|
If m_bOnlySelectItem Then Return
|
|
Select Case e.Action
|
|
Case NotifyCollectionChangedAction.Add
|
|
If Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE And Map.refProjectVM.LastSelGridType = ProjectVM.GridSelTypes.MACHGROUP Then
|
|
' resetto gruppo di lavorazione corrente
|
|
EgtResetCurrMachGroup()
|
|
End If
|
|
If e.NewItems.Count > 0 AndAlso Not IsNothing(e.NewItems(0)) Then
|
|
If ((Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE) AndAlso m_SelectionType = SelectionTypes.SELECT_) OrElse Map.refMainMenuVM.SelPage = Pages.MACHINING Then
|
|
SelectBTLPart(e.NewItems(0))
|
|
Else ' SelectionTypes.HIGHLIGHT
|
|
HighlightBTLPart(e.NewItems(0))
|
|
End If
|
|
End If
|
|
Case NotifyCollectionChangedAction.Remove
|
|
If e.OldItems.Count > 0 AndAlso Not IsNothing(e.OldItems(0)) Then
|
|
If ((Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE) AndAlso m_PrevSelectionType = SelectionTypes.SELECT_) OrElse Map.refMainMenuVM.SelPage = Pages.MACHINING Then
|
|
DeselectBTLPart(e.OldItems(0))
|
|
Else ' SelectionTypes.HIGHLIGHT
|
|
DeHighlightBTLPart(e.OldItems(0))
|
|
End If
|
|
End If
|
|
Case NotifyCollectionChangedAction.Reset
|
|
If ((Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE) AndAlso m_PrevSelectionType = SelectionTypes.SELECT_) OrElse Map.refMainMenuVM.SelPage = Pages.MACHINING Then
|
|
If Not IsNothing(m_SelBTLPart) Then
|
|
DeselectBTLPart(m_SelBTLPart)
|
|
End If
|
|
Else ' SelectionTypes.HIGHLIGHT
|
|
For Each BTLPart In m_BTLPartVMList
|
|
DeHighlightBTLPart(BTLPart, False)
|
|
Next
|
|
EgtDraw()
|
|
End If
|
|
SelBTLPart = Nothing
|
|
End Select
|
|
' aggiornamento grafica
|
|
Configuration.UpdateGraphics()
|
|
End Sub
|
|
|
|
Private Sub SelectBTLPart(BtlPart As BTLPartVM)
|
|
m_SelBTLPart = BtlPart
|
|
If Map.refMainMenuVM.SelPage = Pages.VIEW Then
|
|
Configuration.SelectedPieces(BtlPart.nPartId, Me)
|
|
' seleziono pagina BottomPanel
|
|
If Not IsNothing(Map.refBottomPanelVM) Then
|
|
Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.PART)
|
|
End If
|
|
' mostro barra di gestione pezzo
|
|
If Not IsNothing(BtlPart.BTLFeatureVMList) AndAlso BtlPart.BTLFeatureVMList.Count > 0 Then SelBTLPart.SelBTLFeatureVM = BtlPart.BTLFeatureVMList(0)
|
|
' aggiorno stato selezionato tutto
|
|
Map.refShowBeamPanelVM.bShowAll = False
|
|
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
|
|
EgtZoom(ZM.ALL)
|
|
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
|
|
' resetto gruppo di lavorazione corrente
|
|
EgtResetCurrMachGroup()
|
|
EgtBeamShowFacesName(False)
|
|
EgtBeamShowLoadingSide(False, False)
|
|
' trovo ed evidenzio MachGroup e Duplo di questo pezzo
|
|
Configuration.SetSearchPiece(BtlPart.nPartId)
|
|
' seleziono pezzo nella scena
|
|
SceneSelPartSelection()
|
|
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
|
|
EgtZoom(ZM.ALL)
|
|
ElseIf Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then
|
|
' deseleziono eventuale MachGroup selezionato
|
|
If Not IsNothing(Map.refMachGroupPanelVM.SelectedMachGroup) Then
|
|
Map.refMachGroupPanelVM.SelectedMachGroup = Nothing
|
|
End If
|
|
If Map.refProjectVM.LastSelGridType = ProjectVM.GridSelTypes.MACHGROUP Then
|
|
' resetto gruppo di lavorazione corrente
|
|
EgtResetCurrMachGroup()
|
|
End If
|
|
Configuration.SelectedPieces(BtlPart.nPartId, Me)
|
|
' seleziono la prima feature
|
|
If Not IsNothing(BtlPart.BTLFeatureVMList) AndAlso BtlPart.BTLFeatureVMList.Count > 0 Then SelBTLPart.SelBTLFeatureVM = BtlPart.BTLFeatureVMList(0)
|
|
' aggiorno stato selezionato tutto
|
|
Map.refShowBeamPanelVM.bShowAll = False
|
|
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
NotifyPropertyChanged(NameOf(SelBTLPart))
|
|
End Sub
|
|
Private Sub DeselectBTLPart(BtlPart As BTLPartVM)
|
|
' se necessario tolgo solido dal precedentemente selezionato
|
|
Configuration.DeselectSolid(BtlPart.nPartId, True)
|
|
If m_SelBTLPart Is BtlPart Then
|
|
EgtBeamShowFacesName(False)
|
|
EgtBeamShowLoadingSide(False, False)
|
|
m_SelBTLPart = Nothing
|
|
NotifyPropertyChanged(NameOf(SelBTLPart))
|
|
End If
|
|
' disabilito eventuale feature selezionata
|
|
If Not IsNothing(BtlPart.m_SelBTLFeatureVM) AndAlso (Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.MACHINING) Then BtlPart.SelBTLFeatureVM = Nothing
|
|
EgtDraw()
|
|
End Sub
|
|
Private Sub HighlightBTLPart(BtlPart As BTLPartVM)
|
|
EgtSetMark(BtlPart.nPartId)
|
|
' se modalità building
|
|
If Map.refShowBeamPanelVM.ShowBuilding_IsChecked Then
|
|
' evidenzio anche copie
|
|
Dim nNextPartId As Integer = EgtGetNext(BtlPart.nPartId)
|
|
While nNextPartId <> GDB_ID.NULL
|
|
Dim nOrigId As Integer = GDB_ID.NULL
|
|
If EgtGetInfo(nNextPartId, "!COP", nOrigId) AndAlso nOrigId <> GDB_ID.NULL AndAlso nOrigId = BtlPart.nPartId Then
|
|
EgtSetMark(nNextPartId)
|
|
Else
|
|
Exit While
|
|
End If
|
|
nNextPartId = EgtGetNext(nNextPartId)
|
|
End While
|
|
End If
|
|
If Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then
|
|
' trovo ed evidenzio MachGroup e Duplo di questo pezzo
|
|
Configuration.SetSearchPiece(BtlPart.nPartId)
|
|
End If
|
|
' seleziono pagina BottomPanel
|
|
If Not IsNothing(Map.refBottomPanelVM) Then Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.NULL)
|
|
EgtDraw()
|
|
End Sub
|
|
Private Sub DeHighlightBTLPart(BtlPart As BTLPartVM, Optional bDraw As Boolean = True)
|
|
EgtResetMark(BtlPart.nPartId)
|
|
' se modalità building
|
|
If Map.refShowBeamPanelVM.ShowBuilding_IsChecked Then
|
|
' deevidenzio anche copie
|
|
Dim nNextPartId As Integer = EgtGetNext(BtlPart.nPartId)
|
|
While nNextPartId <> GDB_ID.NULL
|
|
Dim nOrigId As Integer = GDB_ID.NULL
|
|
If EgtGetInfo(nNextPartId, "!COP", nOrigId) AndAlso nOrigId <> GDB_ID.NULL AndAlso nOrigId = BtlPart.nPartId Then
|
|
EgtResetMark(nNextPartId)
|
|
Else
|
|
Exit While
|
|
End If
|
|
nNextPartId = EgtGetNext(nNextPartId)
|
|
End While
|
|
End If
|
|
' deevidenzio MachGroup e Duplo di questo pezzo
|
|
Configuration.ResetSearchPiece(BtlPart.nPartId)
|
|
' seleziono pagina BottomPanel
|
|
If bDraw Then EgtDraw()
|
|
End Sub
|
|
|
|
Private m_SelBTLPart As BTLPartVM = Nothing
|
|
Public Property SelBTLPart As BTLPartVM
|
|
Get
|
|
Return m_SelBTLPart
|
|
End Get
|
|
Set(value As BTLPartVM)
|
|
If Map.refMainMenuVM.SelPage = Pages.MACHINING Or (Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE And Map.refProjectVM.LastSelGridType = ProjectVM.GridSelTypes.MACHGROUP) AndAlso
|
|
Not IsNothing(value) Then
|
|
' resetto gruppo di lavorazione corrente
|
|
EgtResetCurrMachGroup()
|
|
End If
|
|
If Not IsNothing(m_SelBTLPart) Then
|
|
' se necessario tolgo solido dal precedentemente selezionato
|
|
Configuration.DeselectSolid()
|
|
' disabilito eventuale feature selezionata
|
|
If Not IsNothing(m_SelBTLPart.m_SelBTLFeatureVM) Then m_SelBTLPart.SelBTLFeatureVM = Nothing
|
|
End If
|
|
m_SelBTLPart = value
|
|
' se seleziono un pezzo
|
|
If Not IsNothing(m_SelBTLPart) Then
|
|
If Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then
|
|
' se modalità building, la tolgo
|
|
If Map.refShowBeamPanelVM.ShowBuilding_IsChecked Then
|
|
ShowBuilding(False, False)
|
|
End If
|
|
' seleziono pezzo nella scena
|
|
SceneSelPartSelection()
|
|
' seleziono pezzo in Db geometrico
|
|
EgtBeamSetPart(m_SelBTLPart.nPartId)
|
|
' seleziono pagina BottomPanel
|
|
Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.PART)
|
|
' mostro barra di gestione pezzo
|
|
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProdProjManagerVM.PartManager_Visibility))
|
|
' deseleziono le feature
|
|
If Not IsNothing(m_SelBTLPart.SelBTLFeatureVM) Then SelBTLPart.SelBTLFeatureVM = Nothing
|
|
' aggiorno stato selezionato tutto
|
|
Map.refShowBeamPanelVM.bShowAll = False
|
|
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
|
|
EgtZoom(ZM.ALL)
|
|
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
|
|
' trovo ed evidenzio MachGroup e Duplo di questo pezzo
|
|
Configuration.SetSearchPiece(m_SelBTLPart.nPartId)
|
|
' seleziono pezzo nella scena
|
|
SceneSelPartSelection()
|
|
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
End If
|
|
NotifyPropertyChanged(NameOf(SelBTLPart))
|
|
End Set
|
|
End Property
|
|
|
|
Friend Sub SetSelBTLPart(SelBTLPart As BTLPartVM, Optional bByOptim As Boolean = False, Optional bSingleHighlight As Boolean = False)
|
|
If bByOptim Then
|
|
' annullo evidenziazione MachGroup e Duplo
|
|
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM) Then
|
|
For Each Machgroup As MyMachGroupVM In Map.refProjectVM.MachGroupPanelVM.MachGroupVMList
|
|
For Each Part As PartVM In Machgroup.PartVMList
|
|
Part.ResetSearchFound()
|
|
Next
|
|
Machgroup.ResetSearchFound()
|
|
Next
|
|
End If
|
|
End If
|
|
SetSelectionType(SelectionTypes.HIGHLIGHT)
|
|
If bByOptim Then
|
|
m_bOnlySelectItem = True
|
|
End If
|
|
If bByOptim Or bSingleHighlight Then
|
|
If SelBTLParts.Contains(SelBTLPart) Then
|
|
For Each Part In SelBTLParts.ToList()
|
|
If Part IsNot SelBTLPart Then SelBTLParts.Remove(Part)
|
|
Next
|
|
Else
|
|
SelBTLParts.Clear()
|
|
End If
|
|
End If
|
|
|
|
If Not IsNothing(SelBTLPart) Then SelBTLParts.AddToList(SelBTLPart)
|
|
|
|
If bByOptim Then
|
|
m_bOnlySelectItem = False
|
|
End If
|
|
End Sub
|
|
|
|
' lista parametri per ricerca testuale
|
|
Private m_SearchParamList As New ObservableCollection(Of IdNameStruct)({New IdNameStruct(BTLPartParam.NULL, ""),
|
|
New IdNameStruct(BTLPartParam.PDN, EgtMsg(61809)),
|
|
New IdNameStruct(BTLPartParam.NAM, EgtMsg(61603))})
|
|
Public ReadOnly Property SearchParamList As ObservableCollection(Of IdNameStruct)
|
|
Get
|
|
Return m_SearchParamList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelSearchParam As IdNameStruct = m_SearchParamList(0)
|
|
Public Property SelSearchParam As IdNameStruct
|
|
Get
|
|
Return m_SelSearchParam
|
|
End Get
|
|
Set(value As IdNameStruct)
|
|
' resetto il contenuto della barra di ricerca testuale e refresho la lista dei Part (in modo da averli visibili tutti)
|
|
SearchText = ""
|
|
NotifyPropertyChanged(NameOf(SearchText))
|
|
' ora setto il valore scelto come Parameter Type
|
|
m_SelSearchParam = value
|
|
End Set
|
|
End Property
|
|
|
|
' lista dei gruppi
|
|
Private m_GroupList_View As CollectionView = Nothing
|
|
Private m_GroupList As New ObservableCollection(Of String)({""})
|
|
Public Property GroupList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_GroupList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
m_GroupList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelGroup As String = ""
|
|
Public Property SelGroup As String
|
|
Get
|
|
Return m_SelGroup
|
|
End Get
|
|
Set(value As String)
|
|
m_SelGroup = value
|
|
m_BTLPartVMList_View.Refresh()
|
|
m_SectionList_View.Refresh()
|
|
m_SubGroupList_View.Refresh()
|
|
End Set
|
|
End Property
|
|
|
|
' lista dei SubGroup
|
|
Private m_SubGroupList_View As CollectionView = Nothing
|
|
Private m_SubGroupList As New ObservableCollection(Of String)({""})
|
|
Public Property SubGroupList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_SubGroupList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
m_SubGroupList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelSubGroup As String = ""
|
|
Public Property SelSubGroup As String
|
|
Get
|
|
Return m_SelSubGroup
|
|
End Get
|
|
Set(value As String)
|
|
m_SelSubGroup = value
|
|
m_BTLPartVMList_View.Refresh()
|
|
m_SectionList_View.Refresh()
|
|
m_GroupList_View.Refresh()
|
|
End Set
|
|
End Property
|
|
|
|
' lista delle sezioni utilizzate
|
|
Private m_SectionList_View As CollectionView = Nothing
|
|
Private m_SectionList As New ObservableCollection(Of SectionXMaterial)({SectionXMaterial.Empty})
|
|
Public Property SectionList As ObservableCollection(Of SectionXMaterial)
|
|
Get
|
|
Return m_SectionList
|
|
End Get
|
|
Set(value As ObservableCollection(Of SectionXMaterial))
|
|
m_SectionList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelSection As SectionXMaterial = SectionXMaterial.Empty
|
|
Public Property SelSection As SectionXMaterial
|
|
Get
|
|
Return m_SelSection
|
|
End Get
|
|
Set(value As SectionXMaterial)
|
|
If Not IsNothing(value) Then
|
|
m_SelSection = value
|
|
m_BTLPartVMList_View.Refresh()
|
|
m_GroupList_View.Refresh()
|
|
m_SubGroupList_View.Refresh()
|
|
End If
|
|
End Set
|
|
End Property
|
|
Friend Sub SetSelSection(value As SectionXMaterial)
|
|
If Not IsNothing(value) Then
|
|
m_SelSection = value
|
|
m_BTLPartVMList_View.Refresh()
|
|
m_GroupList_View.Refresh()
|
|
m_SubGroupList_View.Refresh()
|
|
End If
|
|
NotifyPropertyChanged(NameOf(SelSection))
|
|
End Sub
|
|
|
|
Private m_SearchText As String = ""
|
|
Public Property SearchText As String
|
|
Get
|
|
Return m_SearchText
|
|
End Get
|
|
Set(value As String)
|
|
m_SearchText = value
|
|
m_BTLPartVMList_View.Refresh()
|
|
m_GroupList_View.Refresh()
|
|
m_SectionList_View.Refresh()
|
|
End Set
|
|
End Property
|
|
|
|
Public Property bDOALL As Boolean?
|
|
Get
|
|
If BTLPartVMList.Count = 0 Then Return False
|
|
Dim bTemp As Boolean = BTLPartVMList(0).bDO
|
|
For FeatureIndex = 1 To BTLPartVMList.Count - 1
|
|
If BTLPartVMList(FeatureIndex).bDO <> bTemp Then Return Nothing
|
|
Next
|
|
Return bTemp
|
|
End Get
|
|
Set(value As Boolean?)
|
|
If BTLPartVMList.Count = 0 Then
|
|
NotifyPropertyChanged(NameOf(bDOALL))
|
|
Return
|
|
End If
|
|
For PartIndex = 0 To BTLPartVMList.Count - 1
|
|
Dim Part As BTLPartVM = BTLPartVMList(PartIndex)
|
|
If (IsNothing(m_SelSection) OrElse m_SelSection.dH = -1 OrElse Part.Section = m_SelSection) AndAlso
|
|
(SelGroup = "" OrElse Part.sGROUP = SelGroup) AndAlso
|
|
(SelSubGroup = "" OrElse Part.sSTOREY = SelSubGroup) AndAlso
|
|
(SelSearchParam.Id = BTLPartParam.NULL OrElse SearchText = String.Empty OrElse (
|
|
(SelSearchParam.Id = BTLPartParam.PDN AndAlso Part.nPDN.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) >= 0) OrElse
|
|
(SelSearchParam.Id = BTLPartParam.NAM AndAlso Part.sNAM.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) >= 0))) Then
|
|
Part.bDO = value
|
|
Part.NotifyPropertyChanged(NameOf(Part.bDO))
|
|
End If
|
|
Next
|
|
End Set
|
|
End Property
|
|
|
|
#Region "Parametri generici"
|
|
|
|
Public Property sPROJNUM As String
|
|
Get
|
|
Return m_BTLStructureM.m_sPROJNUM
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_PROJNUM, value) Then
|
|
m_BTLStructureM.m_sPROJNUM = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sPROJNUM))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sPROJNAME As String
|
|
Get
|
|
Return m_BTLStructureM.m_sPROJNAME
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_PROJNAME, value) Then
|
|
m_BTLStructureM.m_sPROJNAME = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sPROJNAME))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sPROJPART As String
|
|
Get
|
|
Return m_BTLStructureM.m_sPROJPART
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_PROJPART, value) Then
|
|
m_BTLStructureM.m_sPROJPART = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sPROJPART))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sPROJGUID As String
|
|
Get
|
|
Return m_BTLStructureM.m_sPROJGUID
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_PROJGUID, value) Then
|
|
m_BTLStructureM.m_sPROJGUID = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sPROJGUID))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property nPROJTYPE As BWType
|
|
Get
|
|
Select Case Map.refMainMenuVM.SelPage
|
|
Case Pages.VIEW
|
|
Return Map.refProjManagerVM.nProjType
|
|
Case Pages.MACHINING
|
|
Return Map.refProdManagerVM.nProdType
|
|
Case Pages.ONLYPRODPAGE
|
|
Return Map.refOnlyProdManagerVM.nProdType
|
|
Case Else
|
|
Return BWType.NULL
|
|
End Select
|
|
End Get
|
|
End Property
|
|
|
|
Public Property sLISTNAME As String
|
|
Get
|
|
Return m_BTLStructureM.m_sLISTNAME
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_LISTNAME, value) Then
|
|
DbControllers.m_ProjController.UpdateListName(ProjectManagerVM.CurrProj.nProjId, value)
|
|
m_BTLStructureM.m_sLISTNAME = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sLISTNAME))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sCUSTOMER As String
|
|
Get
|
|
Return m_BTLStructureM.m_sCUSTOMER
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_CUSTOMER, value) Then
|
|
m_BTLStructureM.m_sCUSTOMER = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sCUSTOMER))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sARCHITECT As String
|
|
Get
|
|
Return m_BTLStructureM.m_sARCHITECT
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_ARCHITECT, value) Then
|
|
m_BTLStructureM.m_sARCHITECT = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sARCHITECT))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sEDITOR As String
|
|
Get
|
|
Return m_BTLStructureM.m_sEDITOR
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_EDITOR, value) Then
|
|
m_BTLStructureM.m_sEDITOR = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sEDITOR))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sDELIVDATE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sDELIVDATE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_DELIVDATE, value) Then
|
|
m_BTLStructureM.m_sDELIVDATE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sDELIVDATE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sEXPDATE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sEXPDATE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_EXPDATE, value) Then
|
|
m_BTLStructureM.m_sEXPDATE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sEXPDATE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sEXPTIME As String
|
|
Get
|
|
Return m_BTLStructureM.m_sEXPTIME
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_EXPTIME, value) Then
|
|
m_BTLStructureM.m_sEXPTIME = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sEXPTIME))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sEXPRELEASE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sEXPRELEASE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_EXPRELEASE, value) Then
|
|
m_BTLStructureM.m_sEXPRELEASE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sEXPRELEASE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sLANGUAGE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sLANGUAGE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_LANGUAGE, value) Then
|
|
m_BTLStructureM.m_sLANGUAGE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sLANGUAGE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ocRANGE As List(Of Object)
|
|
Get
|
|
Return m_BTLStructureM.ocRANGE
|
|
End Get
|
|
End Property
|
|
|
|
Public Property SelRANGE As Integer
|
|
Get
|
|
Return m_BTLStructureM.m_SelRANGE
|
|
End Get
|
|
Set(value As Integer)
|
|
Dim nValue As Integer = IdNameStruct.IdFromInd(value, m_BTLStructureM.ocRANGE)
|
|
Dim sValue As String = [Enum].GetName(GetType(Range), nValue)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_RANGE, sValue) Then
|
|
m_BTLStructureM.m_SelRANGE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(SelRANGE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ocPROCESSINGQUALITY As List(Of Object)
|
|
Get
|
|
Return m_BTLStructureM.ocPROCESSINGQUALITY
|
|
End Get
|
|
End Property
|
|
|
|
Public Property SelPROCESSINGQUALITY As Integer
|
|
Get
|
|
Return m_BTLStructureM.m_SelPROCESSINGQUALITY
|
|
End Get
|
|
Set(value As Integer)
|
|
Dim nValue As Integer = IdNameStruct.IdFromInd(value, m_BTLStructureM.ocPROCESSINGQUALITY)
|
|
Dim sValue As String = [Enum].GetName(GetType(ProcessingQuality), nValue)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_PRT_PROCESSINGQUALITY, sValue) Then
|
|
m_BTLStructureM.m_SelPROCESSINGQUALITY = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(SelPROCESSINGQUALITY))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sCOMPUTERNAME As String
|
|
Get
|
|
Return m_BTLStructureM.m_sCOMPUTERNAME
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_COMPUTERNAME, value) Then
|
|
m_BTLStructureM.m_sCOMPUTERNAME = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sCOMPUTERNAME))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sUSER As String
|
|
Get
|
|
Return m_BTLStructureM.m_sUSER
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_USER, value) Then
|
|
m_BTLStructureM.m_sUSER = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sUSER))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sSRCFILE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sSRCFILE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_SRCFILE, value) Then
|
|
m_BTLStructureM.m_sSRCFILE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sSRCFILE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sEXPFILE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sEXPFILE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_EXPFILE, value) Then
|
|
m_BTLStructureM.m_sEXPFILE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sEXPFILE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ocRECESS As List(Of Object)
|
|
Get
|
|
Return m_BTLStructureM.ocRECESS
|
|
End Get
|
|
End Property
|
|
|
|
Public Property SelRECESS As Integer
|
|
Get
|
|
Return m_BTLStructureM.m_SelRECESS
|
|
End Get
|
|
Set(value As Integer)
|
|
Dim nValue As Integer = IdNameStruct.IdFromInd(value, m_BTLStructureM.ocRECESS)
|
|
Dim sValue As String = [Enum].GetName(GetType(Recess), nValue)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_PRT_RECESS, sValue) Then
|
|
m_BTLStructureM.m_SelRECESS = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(SelRECESS))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property sUSERATTRIBUTE As String
|
|
Get
|
|
Return m_BTLStructureM.m_sUSERATTRIBUTE
|
|
End Get
|
|
Set(value As String)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_USERATTRIBUTE, value) Then
|
|
m_BTLStructureM.m_sUSERATTRIBUTE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sUSERATTRIBUTE))
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property sBTLTotParts As String
|
|
Get
|
|
Return m_BTLPartVMList.Sum(Function(x) x.nCNT + x.nADDED)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sBTLTotVolume As String
|
|
Get
|
|
Dim dMMTotVolume As Double = m_BTLPartVMList.Sum(Function(x) x.dUnitVolume * (x.nCNT + x.nADDED))
|
|
Return If(EgtUiUnitsAreMM(), DoubleToString(dMMTotVolume / 1000000000, 3), DoubleToString(dMMTotVolume * (12 / ONEINCH), 3))
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property dBTLTotTime As Double
|
|
Get
|
|
Return m_BTLPartVMList.Sum(Function(x) x.nCALC_TIME * (x.nCNT + x.nADDED))
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sBTLTotTime As String
|
|
Get
|
|
Return TimeSpan.FromSeconds(dBTLTotTime).ToString()
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sBTLDoneTime As String
|
|
Get
|
|
Return TimeSpan.FromSeconds(m_BTLPartVMList.Sum(Function(x) x.nCALC_TIME * x.nDONE)).ToString()
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sBTLRemainingTime As String
|
|
Get
|
|
Return TimeSpan.FromSeconds(dBTLTotTime - m_BTLPartVMList.Sum(Function(x) x.nCALC_TIME * x.nDONE)).ToString()
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sTotCNTParts As String
|
|
Get
|
|
Return m_BTLPartVMList.Sum(Function(x) x.nCNT)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sTotADDEDParts As String
|
|
Get
|
|
Return m_BTLPartVMList.Sum(Function(x) x.nADDED)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sTotINPRODParts As String
|
|
Get
|
|
Return m_BTLPartVMList.Sum(Function(x) x.nINPROD)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sTotDONEParts As String
|
|
Get
|
|
Return m_BTLPartVMList.Sum(Function(x) x.nDONE)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' Parametri generici
|
|
|
|
' Definizione comandi
|
|
Private m_cmdDeletePart As ICommand
|
|
|
|
Public ReadOnly Property PDN_Msg As String
|
|
Get
|
|
Return EgtMsg(61809)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New(BTLStructureM As BTLStructureM)
|
|
m_BTLStructureM = BTLStructureM
|
|
AddHandler m_BTLStructureM.BTLPartAdded, AddressOf OnBTLPartAdded
|
|
AddHandler m_SelBTLParts.CollectionChanged, AddressOf SelBTLParts_CollectionChanged
|
|
' creo lista di BTLPartVM
|
|
CreateBTLPartVMList()
|
|
m_BTLPartVMList_View = CollectionViewSource.GetDefaultView(m_BTLPartVMList)
|
|
m_GroupList_View = CollectionViewSource.GetDefaultView(m_GroupList)
|
|
m_SubGroupList_View = CollectionViewSource.GetDefaultView(m_SubGroupList)
|
|
m_SectionList_View = CollectionViewSource.GetDefaultView(m_SectionList)
|
|
m_BTLPartVMList_View.Filter = AddressOf PartFilter
|
|
m_GroupList_View.Filter = AddressOf GroupFilter
|
|
m_SectionList_View.Filter = AddressOf SectionFilter
|
|
m_Calc_PartEnd.Interval = TimeSpan.FromMilliseconds(500)
|
|
AddHandler m_Calc_PartEnd.Tick, AddressOf Calc_PartEnd_Tick
|
|
m_Calc_PartEnd.Start()
|
|
' Aggiorno check DOALL
|
|
NotifyPropertyChanged(NameOf(bDOALL))
|
|
If BTLStructureM.nAsseBaseId = GDB_ID.NULL Then
|
|
Map.refShowBeamPanelVM.SetShowBuilding(False)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
#Region "METHODS"
|
|
|
|
Private Sub CreateBTLPartVMList()
|
|
Dim all As List(Of BTLPartVM) = (From BTLPartM In m_BTLStructureM.GetBTLParts()
|
|
Select New BTLPartVM(BTLPartM, m_BTLStructureM)).ToList()
|
|
|
|
For Each BTLPartVM As BTLPartVM In all
|
|
AddHandler BTLPartVM.PropertyChanged, AddressOf OnBTLPartVMPropertyChanged
|
|
Next
|
|
|
|
m_BTLPartVMList = New ObservableCollection(Of BTLPartVM)(all)
|
|
AddHandler m_BTLPartVMList.CollectionChanged, AddressOf OnBTLPartVMListChanged
|
|
End Sub
|
|
|
|
|
|
Friend Sub LoadFilters()
|
|
For Each BTLPartVM As BTLPartVM In m_BTLPartVMList
|
|
' verifico sezione, gruppo e sottogruppo per inserirli nei filtri
|
|
If Not SectionList.Contains(BTLPartVM.Section) Then
|
|
SectionList.Add(BTLPartVM.Section)
|
|
End If
|
|
If Not GroupList.Contains(BTLPartVM.sGROUP) Then
|
|
GroupList.Add(BTLPartVM.sGROUP)
|
|
End If
|
|
If Not SubGroupList.Contains(BTLPartVM.sSTOREY) Then
|
|
SubGroupList.Add(BTLPartVM.sSTOREY)
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub Calc_PartEnd_Tick()
|
|
' se calcolo non in corso (mainmenu e' attivo), esco
|
|
If Map.refMainMenuVM.MainMenu_IsEnabled Then Return
|
|
' aggiorno iconcina delle feature dei part che hanno finito calcolo
|
|
For Each BTLPart In BTLPartVMList
|
|
If BTLPart.Calc_PartEnd Then
|
|
BTLPart.BTLFeatureVMList_View.Refresh()
|
|
BTLPart.ResetCalcPartEnd()
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Friend Sub SceneSelPartSelection()
|
|
' deseleziono tutto
|
|
EgtDeselectAll()
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
' ciclo sui pezzi
|
|
For Each Part As BTLPartVM In m_BTLPartVMList
|
|
' se non è quello selezionato, lo nasondo
|
|
If Part IsNot m_SelBTLPart Then
|
|
EgtSetMode(Part.nPartId, GDB_MD.HIDDEN)
|
|
Else
|
|
EgtSetMode(Part.nPartId, GDB_MD.STD)
|
|
End If
|
|
Next
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
End Sub
|
|
|
|
Friend Sub ShowAll(Optional bRedraw As Boolean = True, Optional bOnlySelected As Boolean = False)
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
If Not IsNothing(SelBTLPart) Then
|
|
' se pezzo solido, lo riporto normale
|
|
Configuration.DeselectSolid()
|
|
' tolgo pezzo selezionato
|
|
SelBTLPart.SelBTLFeatureVM = Nothing
|
|
End If
|
|
' mostro tutti i pezzi
|
|
' creo lista id presenti
|
|
Dim BTLPartIdList As List(Of Integer) = (From Part In BTLPartVMList
|
|
Select Part.nPartId).ToList()
|
|
BTLPartIdList.Sort()
|
|
Dim nGeomPartId As Integer = EgtGetFirstPart()
|
|
While nGeomPartId <> GDB_ID.NULL
|
|
Dim CurrPart As BTLPartVM = BTLPartVMList.FirstOrDefault(Function(x) x.nPartId = nGeomPartId)
|
|
If Not IsNothing(CurrPart) AndAlso Not bOnlySelected Then
|
|
Dim nMode As Integer
|
|
EgtGetMode(CurrPart.nPartId, nMode)
|
|
If nMode <> GDB_MD.STD Then
|
|
EgtSetMode(CurrPart.nPartId, GDB_MD.STD)
|
|
End If
|
|
Else
|
|
EgtSetMode(nGeomPartId, GDB_MD.HIDDEN)
|
|
End If
|
|
nGeomPartId = EgtGetNextPart(nGeomPartId)
|
|
End While
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
Core.ViewPanelVM.BWSetView(VT.ISO_SW, False)
|
|
EgtZoom(ZM.ALL, bRedraw)
|
|
' imposto stato per ShowBeamPanel
|
|
If Not bOnlySelected Then Map.refShowBeamPanelVM.bShowAll = True
|
|
End Sub
|
|
|
|
Friend Sub HideAll(Optional bRedraw As Boolean = True)
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
If Not IsNothing(SelBTLPart) Then
|
|
' se pezzo solido, lo riporto normale
|
|
Configuration.DeselectSolid(GDB_ID.NULL, True)
|
|
' tolgo pezzo selezionato
|
|
SelBTLPart.SelBTLFeatureVM = Nothing
|
|
End If
|
|
SetSelBTLPart(Nothing)
|
|
' nascondo tutti i pezzi
|
|
Dim nPartId As Integer = EgtGetFirstPart()
|
|
While nPartId <> GDB_ID.NULL
|
|
Dim nMode As Integer
|
|
EgtGetMode(nPartId, nMode)
|
|
If nMode <> GDB_MD.HIDDEN Then
|
|
EgtSetMode(nPartId, GDB_MD.HIDDEN)
|
|
End If
|
|
nPartId = EgtGetNextPart(nPartId)
|
|
End While
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
Core.ViewPanelVM.BWSetView(VT.ISO_SW, False)
|
|
EgtZoom(ZM.ALL, bRedraw)
|
|
' imposto stato per ShowBeamPanel
|
|
Map.refShowBeamPanelVM.bShowAll = True
|
|
End Sub
|
|
|
|
Friend Sub ShowBuilding(bShow As Boolean, Optional bRedraw As Boolean = True)
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
|
|
Dim bOn As Boolean = EgtBeamGetBuildingIsOn()
|
|
If bShow <> bOn Then
|
|
EgtBeamShowBuilding(bShow)
|
|
End If
|
|
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
|
|
' aggiorno visualizzazione
|
|
Core.ViewPanelVM.BWSetView(VT.ISO_SW, False)
|
|
EgtZoom(ZM.ALL, bRedraw)
|
|
End Sub
|
|
|
|
Friend Sub ShowSolid(nPartId As Integer, bShow As Boolean, Optional bRedraw As Boolean = True)
|
|
' se non viene passato, recupero il pezzo del primo oggetto selezionato
|
|
If nPartId = GDB_ID.NULL And Not IsNothing(SelBTLPart) Then
|
|
nPartId = SelBTLPart.nPartId
|
|
End If
|
|
If Not EgtIsPart(nPartId) Then
|
|
Dim nLayerId As Integer = EgtGetParent(nPartId)
|
|
Dim sLayerName As String = ""
|
|
EgtGetName(nLayerId, sLayerName)
|
|
If sLayerName <> ASSEBASE Then
|
|
Map.refMyStatusBarVM.SetOutputMessage("ERROR: Nessuna trave selezionata ", 5, MSG_TYPE.ERROR_)
|
|
Return
|
|
End If
|
|
End If
|
|
EgtDeselectAll()
|
|
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
|
|
If bShow Then EgtBeamCalcSolid(nPartId)
|
|
|
|
EgtBeamShowSolid(nPartId, bShow)
|
|
If bRedraw Then EgtDraw()
|
|
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
End Sub
|
|
|
|
' Funzione per regolarizzare, se necessario, la superficie della feature
|
|
Private Function RegularizeTriMesh(SurfId As Integer, DestGrpId As Integer, dStep As Double) As Integer
|
|
' solo per superfici trimesh con poche facce (max4)
|
|
Dim nFacetCnt As Integer = EgtSurfTmFacetCount(SurfId)
|
|
If nFacetCnt > 4 Then
|
|
Return SurfId
|
|
End If
|
|
' box della superficie
|
|
Dim b3Surf As New BBox3d
|
|
EgtGetBBox(SurfId, GDB_BB.STANDARD, b3Surf)
|
|
If b3Surf.IsEmpty() Or b3Surf.DimX() < 2 * dStep Then
|
|
Return SurfId
|
|
End If
|
|
' recupero le facce e le divido in X
|
|
Dim dXmin As Double = b3Surf.Min().x - 1
|
|
Dim dXmax As Double = b3Surf.Max().x + 1
|
|
Dim nStep As Integer = CInt(Math.Floor((dXmax - dXmin) / dStep + 0.9))
|
|
dStep = (dXmax - dXmin) / nStep
|
|
Dim NewSurfId As Integer = GDB_ID.NULL
|
|
For nF = 0 To nFacetCnt - 1
|
|
Dim FacId As Integer = EgtCopySurfTmFacet(SurfId, nF, DestGrpId)
|
|
Dim b3Fac As New BBox3d
|
|
EgtGetBBox(FacId, GDB_BB.STANDARD, b3Fac)
|
|
Dim dX2 As Double = dXmin
|
|
For nI = 1 To nStep
|
|
Dim dX1 As Double = dX2
|
|
dX2 = dX2 + dStep
|
|
If b3Fac.Min().x < dX2 And b3Fac.Max().x > dX1 Then
|
|
EgtCutSurfTmPlane(FacId, New Point3d(dX1, 0, 0), -Vector3d.X_AX, True)
|
|
EgtCutSurfTmPlane(FacId, New Point3d(dX2, 0, 0), Vector3d.X_AX, False)
|
|
Dim nCount As Integer = 0
|
|
Dim LoopId As Integer = EgtExtractSurfTmFacetLoops(FacId, 0, DestGrpId, nCount)
|
|
EgtMergeCurvesInCurveCompo(LoopId, 0.001)
|
|
Dim TmpSurfId As Integer = EgtCreateSurfTmByFlatContour(DestGrpId, LoopId, 0.01)
|
|
EgtErase(LoopId)
|
|
If NewSurfId <> GDB_ID.NULL Then
|
|
NewSurfId = EgtCreateSurfTmBySewing(DestGrpId, 2, {NewSurfId, TmpSurfId}, True)
|
|
Else
|
|
NewSurfId = TmpSurfId
|
|
End If
|
|
EgtErase(FacId)
|
|
FacId = EgtCopySurfTmFacet(SurfId, nF, DestGrpId)
|
|
End If
|
|
Next
|
|
EgtErase(FacId)
|
|
Next
|
|
Return NewSurfId
|
|
End Function
|
|
|
|
Private Function PartFilter(Part As Object) As Boolean
|
|
Dim CurrBTLPart As BTLPartVM = DirectCast(Part, BTLPartVM)
|
|
Dim bGroupOk As Boolean = True
|
|
Dim bSubGroupOk As Boolean = True
|
|
Dim bSectionOk As Boolean = True
|
|
Dim bSearchTextOk As Boolean = True
|
|
If SelSection <> SectionXMaterial.Empty AndAlso CurrBTLPart.Section <> SelSection Then bSectionOk = False
|
|
If SelGroup <> "" AndAlso CurrBTLPart.sGROUP <> SelGroup Then bGroupOk = False
|
|
If SelSubGroup <> "" AndAlso CurrBTLPart.sSTOREY <> SelSubGroup Then bSubGroupOk = False
|
|
If m_SelSearchParam.Id <> BTLPartParam.NULL AndAlso m_SearchText <> String.Empty AndAlso (
|
|
(m_SelSearchParam.Id = BTLPartParam.PDN AndAlso CurrBTLPart.nPDN.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
|
|
(m_SelSearchParam.Id = BTLPartParam.NAM AndAlso CurrBTLPart.sNAM.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then
|
|
bSearchTextOk = False
|
|
End If
|
|
Dim bResult As Boolean = bSectionOk AndAlso bGroupOk AndAlso bSubGroupOk AndAlso bSearchTextOk
|
|
' If Not bResult And CurrBTLPart.IsSelected Then CurrBTLPart.IsSelected = False
|
|
Return bResult
|
|
End Function
|
|
|
|
Private Function GroupFilter(Group As Object) As Boolean
|
|
Dim CurrGroup As String = DirectCast(Group, String)
|
|
Dim bOk As Boolean = True
|
|
If CurrGroup <> "" AndAlso (SelSection <> SectionXMaterial.Empty OrElse SelSubGroup <> "" OrElse SearchText <> "") Then
|
|
bOk = m_BTLPartVMList.Any(Function(x) x.sGROUP = CurrGroup AndAlso
|
|
(SelSection = SectionXMaterial.Empty OrElse x.Section = SelSection) AndAlso
|
|
(SelSubGroup = "" OrElse x.sSTOREY = SelSubGroup) AndAlso
|
|
(SearchText = "" OrElse Not x.sNAM.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) >= 0))
|
|
End If
|
|
Return bOk
|
|
End Function
|
|
|
|
Private Function SubGroupFilter(SubGroup As Object) As Boolean
|
|
Dim CurrSubGroup As String = DirectCast(SubGroup, String)
|
|
Dim bOk As Boolean = True
|
|
If CurrSubGroup <> "" AndAlso (SelSection <> SectionXMaterial.Empty OrElse SearchText <> "" OrElse SelGroup <> "") Then
|
|
bOk = m_BTLPartVMList.Any(Function(x) x.sGROUP = CurrSubGroup AndAlso
|
|
(SelSection = SectionXMaterial.Empty OrElse x.Section = SelSection) AndAlso
|
|
(SelGroup = "" OrElse x.sGROUP = SelGroup) AndAlso
|
|
(SearchText = "" OrElse Not x.sNAM.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) >= 0))
|
|
End If
|
|
Return bOk
|
|
End Function
|
|
|
|
Private Function SectionFilter(Section As Object) As Boolean
|
|
Dim CurrSection As SectionXMaterial = DirectCast(Section, SectionXMaterial)
|
|
Dim bOk As Boolean = True
|
|
If CurrSection <> Section.Empty AndAlso (SelGroup <> "" OrElse SelSubGroup <> "" OrElse SearchText <> "") Then
|
|
bOk = m_BTLPartVMList.Any(Function(x) x.Section = CurrSection AndAlso
|
|
(SelGroup = "" OrElse x.sGROUP = SelGroup) AndAlso
|
|
(SelSubGroup = "" OrElse x.sSTOREY = SelSubGroup) AndAlso
|
|
(SearchText = "" OrElse Not x.sNAM.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) >= 0))
|
|
End If
|
|
Return bOk
|
|
End Function
|
|
|
|
Friend Sub UpdateSection(NewPartSection As SectionXMaterial, OldPartSection As SectionXMaterial)
|
|
If IsNothing(BTLPartVMList) Then Return
|
|
' verifico se era unico con vecchia sezione
|
|
If Not m_BTLPartVMList.Any(Function(x) x.Section = OldPartSection) Then
|
|
' nel caso seleziono filtro generico
|
|
SelSection = m_SectionList(0)
|
|
' e poi lo cerco ed elimino
|
|
m_SectionList.FirstOrDefault(Function(x) x = OldPartSection)
|
|
m_SectionList.Remove(m_SectionList.FirstOrDefault(Function(x) x = OldPartSection))
|
|
End If
|
|
' verifico se esiste già nuova sezione
|
|
If Not m_SectionList.Any(Function(x) x = NewPartSection) Then
|
|
m_SectionList.Add(NewPartSection)
|
|
End If
|
|
End Sub
|
|
|
|
' funzione che aggiorna totale tempi a fine calcolo
|
|
Friend Sub CalcGlobalTime()
|
|
NotifyPropertyChanged(NameOf(sBTLTotTime))
|
|
NotifyPropertyChanged(NameOf(sBTLDoneTime))
|
|
NotifyPropertyChanged(NameOf(sBTLRemainingTime))
|
|
End Sub
|
|
|
|
' funzione che aggiorna numero pezzi, volume e tempo totali
|
|
Friend Sub CalcGlobalUpdate()
|
|
NotifyPropertyChanged(NameOf(sBTLTotParts))
|
|
NotifyPropertyChanged(NameOf(sBTLTotVolume))
|
|
NotifyPropertyChanged(NameOf(sBTLTotTime))
|
|
NotifyPropertyChanged(NameOf(sBTLDoneTime))
|
|
NotifyPropertyChanged(NameOf(sBTLRemainingTime))
|
|
End Sub
|
|
|
|
' funzione utilizata per aggiornare rot e flip dopo calcolo
|
|
Public Sub RefreshRotFlip()
|
|
For Each BTLPart In BTLPartVMList
|
|
If Not EgtGetInfo(BTLPart.nPartId, BTL_PRT_ROTATED, BTLPart.BTLPartM.nROTATED) Then
|
|
BTLPart.BTLPartM.nROTATED = 0
|
|
End If
|
|
If Not EgtGetInfo(BTLPart.nPartId, BTL_PRT_INVERTED, BTLPart.BTLPartM.nINVERTED) Then
|
|
BTLPart.BTLPartM.nINVERTED = 0
|
|
End If
|
|
BTLPart.NotifyPropertyChanged(NameOf(BTLPart.sROTATED))
|
|
BTLPart.NotifyPropertyChanged(NameOf(BTLPart.sINVERTED))
|
|
Next
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "DeletePart"
|
|
|
|
Public ReadOnly Property DeletePart_Command As ICommand
|
|
Get
|
|
If m_cmdDeletePart Is Nothing Then
|
|
m_cmdDeletePart = New Command(AddressOf DeletePart)
|
|
End If
|
|
Return m_cmdDeletePart
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub DeletePart()
|
|
If Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE Then Map.refBTLPartManagerVM.RemovePartCmd()
|
|
End Sub
|
|
|
|
#End Region ' DeletePart
|
|
|
|
#Region "EVENTS"
|
|
|
|
Private Sub OnBTLPartAdded(sender As Object, e As BTLPartAddedEventArgs)
|
|
Dim BTLPartVM As BTLPartVM = New BTLPartVM(e.NewBTLPart, m_BTLStructureM)
|
|
m_BTLPartVMList.Add(BTLPartVM)
|
|
NotifyPropertyChanged(NameOf(BTLPartVMList))
|
|
End Sub
|
|
|
|
Private Sub OnBTLPartVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
|
|
If Not IsNothing(e.NewItems) AndAlso e.NewItems.Count > 0 Then
|
|
For Each BTLPartVM As BTLPartVM In e.NewItems
|
|
AddHandler BTLPartVM.PropertyChanged, AddressOf OnBTLPartVMPropertyChanged
|
|
Next
|
|
End If
|
|
If Not IsNothing(e.OldItems) AndAlso e.OldItems.Count > 0 Then
|
|
For Each BTLPartVM As BTLPartVM In e.OldItems
|
|
RemoveHandler BTLPartVM.PropertyChanged, AddressOf OnBTLPartVMPropertyChanged
|
|
m_BTLStructureM.BTLPartMList.Remove(BTLPartVM.BTLPartM)
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnBTLPartVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
|
|
Select Case "bDO"
|
|
Case NameOf(sender.sMATERIAL)
|
|
If Not GroupList.Contains(sender.sMATERIAL) Then
|
|
GroupList.Add(sender.sMATERIAL)
|
|
End If
|
|
Case NameOf(sender.sW), NameOf(sender.sH), NameOf(sender.sL)
|
|
Case NameOf(sender.nDONE)
|
|
NotifyPropertyChanged(NameOf(sBTLDoneTime))
|
|
NotifyPropertyChanged(NameOf(sBTLRemainingTime))
|
|
Case NameOf(sender.bDO), NameOf(sender.sPriority)
|
|
NotifyPropertyChanged(NameOf(bDOALL))
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' EVENTS
|
|
|
|
End Class
|