ae795ae501
- Gestione click feature -Gestione movimento mouse pareti
957 lines
34 KiB
VB.net
957 lines
34 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.Collections.Specialized
|
|
Imports System.ComponentModel
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class BTLStructureVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
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
|
|
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_SelBTLPart As BTLPartVM = Nothing
|
|
Public Property SelBTLPart As BTLPartVM
|
|
Get
|
|
Return m_SelBTLPart
|
|
End Get
|
|
Set(value As BTLPartVM)
|
|
If Not IsNothing(m_SelBTLPart) Then
|
|
' se necessario tolgo solido dal precedentemente selezionato
|
|
If Map.refShowBeamPanelVM.ShowSolid_IsChecked Then
|
|
Map.refShowBeamPanelVM.SetShowSolid(False)
|
|
End If
|
|
' 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 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.SetPartManager_Visibility(True)
|
|
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProjectVM.PartManager_Visibility))
|
|
' deseleziono le feature
|
|
If Not IsNothing(m_SelBTLPart.SelBTLFeatureVM) Then SelBTLPart.SelBTLFeatureVM = Nothing
|
|
' aggiorno stato selezionato tutto
|
|
Map.refShowBeamPanelVM.bShowAll = False
|
|
' aggiorno vista
|
|
Dim view As VT = VT.ISO_SW
|
|
If Map.refProjectVM.BTLStructureVM.nPROJTYPE = Core.ConstBeam.MachineType.WALL Then view = VT.TOP
|
|
EgtSetView(view, False)
|
|
EgtZoom(ZM.ALL)
|
|
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
|
|
' resetto gruppo di lavorazione corrente
|
|
EgtResetCurrMachGroup()
|
|
' seleziono pezzo nella scena
|
|
SceneSelPartSelection()
|
|
' aggiorno vista
|
|
Dim view As VT = VT.ISO_SW
|
|
If Map.refProjectVM.BTLStructureVM.nPROJTYPE = Core.ConstBeam.MachineType.WALL Then view = VT.TOP
|
|
EgtSetView(view, False)
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
End If
|
|
NotifyPropertyChanged(NameOf(SelBTLPart))
|
|
End Set
|
|
End Property
|
|
' funzione che imposta pezzo BTL selezionato senza aggiornare nulla
|
|
Friend Sub SetSelBTLPart(BTLPart As BTLPartVM)
|
|
m_SelBTLPart = BTLPart
|
|
NotifyPropertyChanged(NameOf(SelBTLPart))
|
|
End Sub
|
|
|
|
' lista parametri per ricerca testuale
|
|
Private m_SearchParamList As New ObservableCollection(Of IdNameStruct)({New IdNameStruct(BTLPartParam.NULL, ""),
|
|
New IdNameStruct(BTLPartParam.PDN, "PDN"),
|
|
New IdNameStruct(BTLPartParam.NAM, "Descrizione"),
|
|
New IdNameStruct(BTLPartParam.GRP, "Gruppo")})
|
|
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 materiali utilizzati
|
|
Private m_MaterialList_View As CollectionView = Nothing
|
|
Private m_MaterialList As New ObservableCollection(Of String)({""})
|
|
Public Property MaterialList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_MaterialList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
m_MaterialList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelMaterial As String = ""
|
|
Public Property SelMaterial As String
|
|
Get
|
|
Return m_SelMaterial
|
|
End Get
|
|
Set(value As String)
|
|
m_SelMaterial = value
|
|
m_BTLPartVMList_View.Refresh()
|
|
m_SectionList_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_MaterialList_View.Refresh()
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
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_MaterialList_View.Refresh()
|
|
m_SectionList_View.Refresh()
|
|
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("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("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("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("sPROJGUID")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property nPROJTYPE As BWType
|
|
Get
|
|
Return m_BTLStructureM.m_nPROJTYPE
|
|
End Get
|
|
Set(value As BWType)
|
|
If EgtSetInfo(m_BTLStructureM.nBTLInfoId, BTL_GEN_PROJTYPE, value) Then
|
|
m_BTLStructureM.m_nPROJTYPE = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(nPROJTYPE))
|
|
End If
|
|
End Set
|
|
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(Map.refProjManagerVM.CurrProj.nProjId, value)
|
|
m_BTLStructureM.m_sLISTNAME = value
|
|
Else
|
|
NotifyPropertyChanged("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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 sBTLTotTime As String
|
|
Get
|
|
Return TimeSpan.FromSeconds(m_BTLPartVMList.Sum(Function(x) x.nCALC_TIME * (x.nCNT + x.nADDED))).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
|
|
|
|
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
|
|
' creo lista di BTLPartVM
|
|
CreateBTLPartVMList()
|
|
m_BTLPartVMList_View = CollectionViewSource.GetDefaultView(m_BTLPartVMList)
|
|
m_MaterialList_View = CollectionViewSource.GetDefaultView(m_MaterialList)
|
|
m_SectionList_View = CollectionViewSource.GetDefaultView(m_SectionList)
|
|
m_BTLPartVMList_View.Filter = AddressOf PartFilter
|
|
m_MaterialList_View.Filter = AddressOf MaterialFilter
|
|
m_SectionList_View.Filter = AddressOf SectionFilter
|
|
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
|
|
' verifico sezione e materiale per inserirli nei filtri
|
|
If Not MaterialList.Contains(BTLPartVM.sMATERIAL) Then
|
|
MaterialList.Add(BTLPartVM.sMATERIAL)
|
|
End If
|
|
If Not SectionList.Contains(BTLPartVM.Section) Then
|
|
SectionList.Add(BTLPartVM.Section)
|
|
End If
|
|
Next
|
|
|
|
m_BTLPartVMList = New ObservableCollection(Of BTLPartVM)(all)
|
|
AddHandler m_BTLPartVMList.CollectionChanged, AddressOf OnBTLPartVMListChanged
|
|
End Sub
|
|
|
|
Private 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)
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
If Not IsNothing(SelBTLPart) Then
|
|
' se pezzo solido, lo riporto normale
|
|
If Map.refShowBeamPanelVM.ShowSolid_IsChecked Then
|
|
ShowSolid(False)
|
|
Map.refShowBeamPanelVM.SetShowSolid(False)
|
|
End If
|
|
' tolgo pezzo selezionato
|
|
SelBTLPart.SelBTLFeatureVM = Nothing
|
|
End If
|
|
SelBTLPart = Nothing
|
|
' 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) 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()
|
|
EgtSetView(VT.ISO_SW, False)
|
|
EgtZoom(ZM.ALL, bRedraw)
|
|
' imposto stato per ShowBeamPanel
|
|
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
|
|
If Map.refShowBeamPanelVM.ShowSolid_IsChecked Then
|
|
ShowSolid(False)
|
|
Map.refShowBeamPanelVM.SetShowSolid(False)
|
|
End If
|
|
' tolgo pezzo selezionato
|
|
SelBTLPart.SelBTLFeatureVM = Nothing
|
|
End If
|
|
SelBTLPart = 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
|
|
'For Each Part As BTLPartVM In BTLPartVMList
|
|
' Dim nMode As Integer
|
|
' EgtGetMode(Part.nPartId, nMode)
|
|
' If nMode <> GDB_MD.HIDDEN Then
|
|
' EgtSetMode(Part.nPartId, GDB_MD.HIDDEN)
|
|
' End If
|
|
'Next
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
EgtSetView(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
|
|
' recupero progetto del primo pezzo
|
|
'Dim nFirstPartId As Integer = EgtGetFirstPart(True)
|
|
'Dim nCurrProjId As Integer
|
|
'If nFirstPartId = GDB_ID.NULL Then
|
|
' DisableMgr.ReEnable()
|
|
' Return
|
|
'End If
|
|
'If Not EgtGetInfo(nFirstPartId, BTL_PRT_PROJ, nCurrProjId) Then
|
|
' DisableMgr.ReEnable()
|
|
' Return
|
|
'End If
|
|
Dim nCurrProjId As Integer
|
|
If IsNothing(Map.refProjManagerVM) OrElse IsNothing(Map.refProjManagerVM.CurrProj) Then
|
|
DisableMgr.ReEnable()
|
|
Return
|
|
End If
|
|
' recupero il gruppo di assemblaggio
|
|
Dim AsseBaseId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
|
|
While AsseBaseId <> GDB_ID.NULL
|
|
Dim nProj As Integer = 0
|
|
EgtGetInfo(AsseBaseId, BTL_PRT_PROJ, nProj)
|
|
If nProj = Map.refProjManagerVM.CurrProj.nProjId Then Exit While
|
|
AsseBaseId = EgtGetNextName(AsseBaseId, ASSEBASE)
|
|
End While
|
|
If AsseBaseId = GDB_ID.NULL Then
|
|
DisableMgr.ReEnable()
|
|
Return
|
|
End If
|
|
' recupero il primo oggetto nel gruppo e verifico se devo assemblare o disassemblare
|
|
Dim AsseId As Integer = EgtGetFirstInGroup(AsseBaseId)
|
|
If AsseId = GDB_ID.NULL Then
|
|
DisableMgr.ReEnable()
|
|
Return
|
|
End If
|
|
Dim bMake As Boolean = (EgtGetGroupObjs(AsseId) = 0)
|
|
If bMake <> bShow Then
|
|
DisableMgr.ReEnable()
|
|
Return
|
|
End If
|
|
|
|
' ciclo sul gruppo di assemblaggio
|
|
While AsseId <> GDB_ID.NULL
|
|
' salvo il successivo nel gruppo dell'assemblato
|
|
Dim NextId As Integer = EgtGetNext(AsseId)
|
|
' costruisco l'assemblato
|
|
If bMake Then
|
|
' recupero il pezzo sorgente
|
|
Dim SouId As Integer
|
|
If EgtGetInfo(AsseId, GDB_SI_SOURCE, SouId) Then
|
|
EgtSetMode(SouId, GDB_MD.STD)
|
|
EgtSetStatus(SouId, GDB_ST.ON_)
|
|
' se già utilizzato, ne faccio una copia
|
|
If Not EgtIsPart(SouId) Then
|
|
Dim CopyId As Integer = EgtCopy(SouId, GDB_ID.ROOT)
|
|
If CopyId <> GDB_ID.NULL Then
|
|
EgtRemoveInfo(CopyId, GDB_SI_BASE)
|
|
EgtRemoveInfo(CopyId, GDB_SI_LIST)
|
|
EgtSetInfo(CopyId, GDB_SI_COPY, SouId)
|
|
EgtSetInfo(AsseId, GDB_SI_SOURCE, CopyId)
|
|
SouId = CopyId
|
|
End If
|
|
End If
|
|
EgtSetStatus(EgtGetFirstNameInGroup(SouId, "Box"), GDB_ST.OFF)
|
|
EgtGroupSwap(SouId, AsseId, True, True)
|
|
End If
|
|
' ritorno ai pezzi
|
|
Else
|
|
Dim BasId As Integer
|
|
If EgtGetInfo(AsseId, GDB_SI_BASE, BasId) Then
|
|
EgtGroupSwap(AsseId, BasId, True, True)
|
|
Dim CopId As Integer
|
|
If EgtGetInfo(AsseId, GDB_SI_COPY, CopId) Then
|
|
EgtErase(AsseId)
|
|
EgtSetInfo(BasId, GDB_SI_SOURCE, CopId)
|
|
Else
|
|
EgtSetStatus(EgtGetFirstNameInGroup(AsseId, "Box"), GDB_ST.ON_)
|
|
End If
|
|
End If
|
|
End If
|
|
' passo al successivo
|
|
AsseId = NextId
|
|
End While
|
|
|
|
' ripristino precedente impostazione modificato
|
|
DisableMgr.ReEnable()
|
|
|
|
' aggiorno visualizzazione
|
|
EgtSetView(VT.ISO_SW, False)
|
|
EgtZoom(ZM.ALL, bRedraw)
|
|
End Sub
|
|
|
|
Friend Sub ShowSolid(Optional bRedraw As Boolean = True)
|
|
' Recupero il pezzo del primo oggetto selezionato
|
|
Dim nPartId As Integer = If(Not IsNothing(SelBTLPart), SelBTLPart.nPartId, GDB_ID.NULL)
|
|
If nPartId = GDB_ID.NULL Or Not EgtIsPart(nPartId) Then
|
|
Map.refMyStatusBarVM.SetOutputMessage("ERROR: Nessuna trave selezionata ", 5, MSG_TYPE.ERROR_)
|
|
Return
|
|
End If
|
|
EgtDeselectAll()
|
|
|
|
' disabilito impostazione modificato
|
|
Dim DisableMgr As New DisableModifiedMgr
|
|
|
|
Dim nSolId As Integer = EgtBeamGetSolid(nPartId)
|
|
If nSolId = GDB_ID.NULL OrElse Not EgtExistsInfo(nSolId, "VALID") Then
|
|
EgtBeamCalcSolid(nPartId)
|
|
EgtBeamShowSolid(nPartId, True)
|
|
Else
|
|
Dim nStat As Integer
|
|
EgtGetStatus(EgtGetParent(nSolId), nStat)
|
|
EgtBeamShowSolid(nPartId, (nStat = GDB_ST.OFF))
|
|
End If
|
|
|
|
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 bMaterialOk As Boolean = True
|
|
Dim bSectionOk As Boolean = True
|
|
Dim bSearchTextOk As Boolean = True
|
|
If SelMaterial <> "" AndAlso CurrBTLPart.sMATERIAL <> SelMaterial Then bMaterialOk = False
|
|
If SelSection <> SectionXMaterial.Empty AndAlso CurrBTLPart.Section <> SelSection Then bSectionOk = False
|
|
'If SearchText <> "" AndAlso CurrBTLPart.sNAM.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0 Then bSectionOk = 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) OrElse
|
|
(m_SelSearchParam.Id = BTLPartParam.GRP AndAlso (IsNothing(CurrBTLPart.sGROUP) OrElse CurrBTLPart.sGROUP.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase)) < 0)) Then bSectionOk = False
|
|
Return (bMaterialOk AndAlso bSectionOk)
|
|
End Function
|
|
|
|
Private Function MaterialFilter(Material As Object) As Boolean
|
|
Dim CurrMaterial As String = DirectCast(Material, String)
|
|
Dim bOk As Boolean = True
|
|
If SelSection <> SectionXMaterial.Empty AndAlso SearchText <> "" AndAlso CurrMaterial <> "" Then
|
|
bOk = m_BTLPartVMList.Any(Function(x) x.sMATERIAL = CurrMaterial AndAlso x.Section = SelSection AndAlso 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 SelMaterial <> "" AndAlso SearchText <> "" AndAlso CurrSection <> Section.Empty Then
|
|
bOk = m_BTLPartVMList.Any(Function(x) x.sMATERIAL = SelMaterial AndAlso x.Section = CurrSection AndAlso 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
|
|
If Map.refProjectVM.BTLStructureVM.nPROJTYPE = MachineType.BEAM Then
|
|
' 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
|
|
Dim t = 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
|
|
ElseIf Map.refProjectVM.BTLStructureVM.nPROJTYPE = MachineType.WALL Then
|
|
' se ruoto o inverto parete, la sezione non cambia
|
|
End If
|
|
End Sub
|
|
|
|
' funzione che aggiorna totale tempi a fine calcolo
|
|
Friend Sub CalcGlobalTime()
|
|
NotifyPropertyChanged(NameOf(sBTLTotTime))
|
|
End Sub
|
|
|
|
' funzione che aggiorna numero pezzi, volume e tempo totali
|
|
Friend Sub CalcGlobalUpdate()
|
|
NotifyPropertyChanged(NameOf(sBTLTotParts))
|
|
NotifyPropertyChanged(NameOf(sBTLTotVolume))
|
|
NotifyPropertyChanged(NameOf(sBTLTotTime))
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#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
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnBTLPartVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
|
|
Select Case e.PropertyName
|
|
Case NameOf(sender.sMATERIAL)
|
|
If Not MaterialList.Contains(sender.sMATERIAL) Then
|
|
MaterialList.Add(sender.sMATERIAL)
|
|
End If
|
|
Case NameOf(sender.sW), NameOf(sender.sH), NameOf(sender.sL)
|
|
'If Not SectionList.Contains(sender.Section) Then
|
|
' SectionList.Add(sender.Section)
|
|
'End If
|
|
'Case NameOf(sender.sROTATED)
|
|
' UpdateSection(CType(sender, BTLPartVM).BTLPartM)
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' EVENTS
|
|
|
|
End Class
|