Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/BTLParam/BTLPartVM.vb
T
2021-03-25 20:07:33 +01:00

1527 lines
55 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Imports EgtUILib
Imports EgtBEAMWALL.Core
Public Class BTLPartVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private m_BTLPartM As BTLPartM
Private m_BTLStructureM As BTLStructureM
Public ReadOnly Property nPartId As Integer
Get
Return m_BTLPartM.nPartId
End Get
End Property
Public Property nPDN As Integer
Get
Return m_BTLPartM.nPDN
End Get
Set(value As Integer)
m_BTLPartM.nPDN = value
End Set
End Property
Public Property bDO As Boolean
Get
Return m_BTLPartM.bDO
End Get
Set(value As Boolean)
m_BTLPartM.bDO = value
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_DO, If(value, 1, 0))
NotifyPropertyChanged("Calc_BorderBrush")
End Set
End Property
Public Property sNAM As String
Get
Return m_BTLPartM.sNAM
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_NAM, value) Then
m_BTLPartM.sNAM = value
Else
NotifyPropertyChanged("sNAM")
End If
End Set
End Property
Public Property sL As String
Get
Return LenToString(m_BTLPartM.dL, 3)
End Get
Set(value As String)
Dim dTempL As Double
If StringToLen(value, dTempL) Then
' verifico se ci sono già copie in grezzi
Dim nDuploCount As Integer = 0
If EgtDuploCount(m_BTLPartM.nPartId, nDuploCount) AndAlso nDuploCount > 0 Then
' se modalità travi e trave
If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM OrElse
Map.refMachinePanelVM.SelectedMachine.nType = MachineType.WALL Then
If dTempL > m_BTLPartM.dL Then
' avviso che tutti i pezzi verranno tolti dai grezzi e chiedo di confermare
If MessageBox.Show("La modifica di questo parametro comporta la rimozione del pezzo da " & nDuploCount & " grezzi. Procedere comunque?", "Info", MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then
MyMachGroupPanelVM.DuploSetToDelete(m_BTLPartM.nPartId)
Else
' reimposto vecchio valore
NotifyPropertyChanged("sL")
Return
End If
End If
End If
End If
If EgtBeamSetPartBox(dTempL, m_BTLPartM.dH, m_BTLPartM.dW) Then
' imposto modificato per copie
EgtDuploSetModified(m_BTLPartM.nPartId)
EgtDraw()
m_BTLPartM.dL = dTempL
End If
Else
NotifyPropertyChanged("sL")
End If
End Set
End Property
Public Property sW As String
Get
Return LenToString(m_BTLPartM.dW, 3)
End Get
Set(value As String)
Dim dTempW As Double
If StringToLen(value, dTempW) AndAlso EgtBeamSetPartBox(m_BTLPartM.dL, m_BTLPartM.dH, dTempW) Then
EgtDraw()
m_BTLPartM.dW = dTempW
Else
NotifyPropertyChanged("sW")
End If
End Set
End Property
Public Property sH As String
Get
Return LenToString(m_BTLPartM.dH, 3)
End Get
Set(value As String)
Dim dTempH As Double
If StringToLen(value, dTempH) AndAlso EgtBeamSetPartBox(m_BTLPartM.dL, dTempH, m_BTLPartM.dW) Then
EgtDraw()
m_BTLPartM.dH = dTempH
Else
NotifyPropertyChanged("sH")
End If
End Set
End Property
#Region "Parametri pezzo"
Public Property nSINGLEMEMBERNUM As Integer
Get
Return m_BTLPartM.nSINGLEMEMBERNUM
End Get
Set(value As Integer)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_SINGLEMEMBERNUM, value) Then
m_BTLPartM.nSINGLEMEMBERNUM = value
Else
NotifyPropertyChanged("nSINGLEMEMBERNUM")
End If
End Set
End Property
Public Property sASSEMBLYNUM As String
Get
Return m_BTLPartM.sASSEMBLYNUM
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ASSEMBLYNUM, value) Then
m_BTLPartM.sASSEMBLYNUM = value
Else
NotifyPropertyChanged("sASSEMBLYNUM")
End If
End Set
End Property
Public Property nORDERNUM As Integer
Get
Return m_BTLPartM.nORDERNUM
End Get
Set(value As Integer)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ORDERNUM, value) Then
m_BTLPartM.nORDERNUM = value
Else
NotifyPropertyChanged("nORDERNUM")
End If
End Set
End Property
Public Property sDESIGN As String
Get
Return m_BTLPartM.sDESIGN
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_DESIGNATION, value) Then
m_BTLPartM.sDESIGN = value
Else
NotifyPropertyChanged("sDESIGN")
End If
End Set
End Property
Public Property sANNOT As String
Get
Return m_BTLPartM.sANNOT
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ANNOTATION, value) Then
m_BTLPartM.sANNOT = value
Else
NotifyPropertyChanged("sANNOT")
End If
End Set
End Property
Public Property sSTOREY As String
Get
Return m_BTLPartM.sSTOREY
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_STOREY, value) Then
m_BTLPartM.sSTOREY = value
Else
NotifyPropertyChanged("sSTOREY")
End If
End Set
End Property
Public Property sGROUP As String
Get
Return m_BTLPartM.sGROUP
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_GROUP, value) Then
m_BTLPartM.sGROUP = value
Else
NotifyPropertyChanged("sGROUP")
End If
End Set
End Property
Public Property sPACKAGE As String
Get
Return m_BTLPartM.sPACKAGE
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_PACKAGE, value) Then
m_BTLPartM.sPACKAGE = value
Else
NotifyPropertyChanged("sPACKAGE")
End If
End Set
End Property
Public Property sMATERIAL As String
Get
Return m_BTLPartM.sMATERIAL
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_MATERIAL, value) Then
m_BTLPartM.sMATERIAL = value
Else
NotifyPropertyChanged("sMATERIAL")
End If
End Set
End Property
Public Property sTIMBERGRADE As String
Get
Return m_BTLPartM.sTIMBERGRADE
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_TIMBERGRADE, value) Then
m_BTLPartM.sTIMBERGRADE = value
Else
NotifyPropertyChanged("sTIMBERGRADE")
End If
End Set
End Property
Public Property sQUALITYGRADE As String
Get
Return m_BTLPartM.sQUALITYGRADE
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_QUALITYGRADE, value) Then
m_BTLPartM.sQUALITYGRADE = value
Else
NotifyPropertyChanged("sQUALITYGRADE")
End If
End Set
End Property
Public ReadOnly Property PartColour As Brush
Get
Return New SolidColorBrush(Color.FromArgb(m_BTLPartM.colCOLOR.ToColor().A,
CByte(m_BTLPartM.colCOLOR.R),
CByte(m_BTLPartM.colCOLOR.G),
CByte(m_BTLPartM.colCOLOR.B)))
End Get
End Property
Public Property sCOLRGB As String
Get
Return m_BTLPartM.colCOLOR.R & "," &
m_BTLPartM.colCOLOR.G & "," &
m_BTLPartM.colCOLOR.B & "," &
nCOLA
End Get
Set(value As String)
Dim sValArray() As String = value.Split(",")
If sValArray.Count() >= 4 Then
m_BTLPartM.m_colCOLOR.R = Color3d.Clamp(sValArray(0), 0, 255)
m_BTLPartM.m_colCOLOR.G = Color3d.Clamp(sValArray(1), 0, 255)
m_BTLPartM.m_colCOLOR.B = Color3d.Clamp(sValArray(2), 0, 255)
m_BTLPartM.m_colCOLOR.A = Color3d.Clamp(nCOLA, 0, 100)
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_COLOUR, m_BTLPartM.colCOLOR.ToString())
Else
NotifyPropertyChanged("sCOLRGB")
End If
End Set
End Property
Public Property nCOLA As Integer
Get
Return m_BTLPartM.colCOLOR.A
End Get
Set(value As Integer)
If m_BTLPartM.colCOLOR.A <> value Then
m_BTLPartM.m_colCOLOR.A = Color3d.Clamp(value, 0, 100)
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_COLOUR, m_BTLPartM.colCOLOR.ToString())
NotifyPropertyChanged("nCOLA")
NotifyPropertyChanged("PartColour")
End If
End Set
End Property
Public Property dPLANINGLEN As String
Get
Return LenToString(m_BTLPartM.dPLANINGLEN, 3)
End Get
Set(value As String)
Dim dTempPlaningLen As Double
If StringToLen(value, dTempPlaningLen) AndAlso EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_PLANINGLENGTH, dTempPlaningLen) Then
m_BTLPartM.dPLANINGLEN = dTempPlaningLen
Else
NotifyPropertyChanged("dPLANINGLEN")
End If
End Set
End Property
Public Property dSTARTOFFSET As String
Get
Return LenToString(m_BTLPartM.dSTARTOFFSET, 3)
End Get
Set(value As String)
Dim dTempStartOffset As Double
If StringToLen(value, dTempStartOffset) AndAlso EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_STARTOFFSET, dTempStartOffset) Then
m_BTLPartM.dSTARTOFFSET = dTempStartOffset
Else
NotifyPropertyChanged("dSTARTOFFSET")
End If
End Set
End Property
Public Property dENDOFFSET As String
Get
Return LenToString(m_BTLPartM.dENDOFFSET, 3)
End Get
Set(value As String)
Dim dTempEndOffset As Double
If StringToLen(value, dTempEndOffset) AndAlso EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ENDOFFSET, dTempEndOffset) Then
m_BTLPartM.dENDOFFSET = dTempEndOffset
Else
NotifyPropertyChanged("dENDOFFSET")
End If
End Set
End Property
Public ReadOnly Property ocUID As ObservableCollection(Of Integer)
Get
Return m_BTLPartM.ocUID
End Get
End Property
Public Property SelUID As Integer
Get
Return m_BTLPartM.SelUID
End Get
Set(value As Integer)
If m_BTLPartM.SelUID <> value Then
m_BTLPartM.m_refTransf = m_BTLPartM.refTransfList(value)
m_BTLPartM.SelUID = value
NotifyPropertyChanged("TransfOrig")
NotifyPropertyChanged("TransfVersX")
NotifyPropertyChanged("TransfVersY")
Else
NotifyPropertyChanged("SelUID")
End If
End Set
End Property
Public Property TransfOrig As String
Get
If SelUID >= 0 AndAlso
SelUID < m_BTLPartM.refTransfList.Count AndAlso
Not IsNothing(m_BTLPartM.refTransfList(SelUID)) Then
Return LenToString(m_BTLPartM.refTransfList(SelUID).Orig().x, 3) & "," &
LenToString(m_BTLPartM.refTransfList(SelUID).Orig().y, 3) & "," &
LenToString(m_BTLPartM.refTransfList(SelUID).Orig().z, 3)
Else
Return Nothing
End If
End Get
Set(value As String)
Dim sValArray() As String = value.Split(",")
Dim ptOri As New Point3d
If sValArray.Count() >= 3 AndAlso
StringToLen(sValArray(0), ptOri.x) AndAlso
StringToLen(sValArray(1), ptOri.y) AndAlso
StringToLen(sValArray(2), ptOri.z) AndAlso
m_BTLPartM.refTransf.ChangeOrigin(ptOri) Then
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_TRANSFORMATION & (SelUID + 1), LenToString(m_BTLPartM.refTransf.Orig.x, 3) & "," &
LenToString(m_BTLPartM.refTransf.Orig.y, 3) & "," &
LenToString(m_BTLPartM.refTransf.Orig.z, 3) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.x, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.y, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.z, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.x, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.y, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.z, 6))
Else
NotifyPropertyChanged("TransfOrig")
End If
End Set
End Property
Public Property TransfVersX As String
Get
If SelUID >= 0 AndAlso
SelUID < m_BTLPartM.refTransfList.Count AndAlso
Not IsNothing(m_BTLPartM.refTransfList(SelUID)) Then
Return DoubleToString(m_BTLPartM.refTransfList(SelUID).VersX().x, 6) & "," &
DoubleToString(m_BTLPartM.refTransfList(SelUID).VersX().y, 6) & "," &
DoubleToString(m_BTLPartM.refTransfList(SelUID).VersX().z, 6)
Else
Return Nothing
End If
End Get
Set(value As String)
Dim ptOri As New Point3d(m_BTLPartM.refTransf.Orig())
Dim vtVersY As New Vector3d(m_BTLPartM.refTransf.VersY())
Dim sValArray() As String = value.Split(",")
Dim vtVersX As New Vector3d
If sValArray.Count() >= 3 AndAlso
StringToDouble(sValArray(0), vtVersX.x) AndAlso
StringToDouble(sValArray(1), vtVersX.y) AndAlso
StringToDouble(sValArray(2), vtVersX.z) AndAlso
m_BTLPartM.refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY) Then
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_TRANSFORMATION & (SelUID + 1), LenToString(m_BTLPartM.refTransf.Orig.x, 3) & "," &
LenToString(m_BTLPartM.refTransf.Orig.y, 3) & "," &
LenToString(m_BTLPartM.refTransf.Orig.z, 3) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.x, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.y, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.z, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.x, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.y, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.z, 6))
NotifyPropertyChanged("TransfVersX")
NotifyPropertyChanged("TransfVersY")
Else
NotifyPropertyChanged("TransfVersX")
End If
End Set
End Property
Public Property TransfVersY As String
Get
If SelUID >= 0 AndAlso
SelUID < m_BTLPartM.refTransfList.Count AndAlso
Not IsNothing(m_BTLPartM.refTransfList(SelUID)) Then
Return DoubleToString(m_BTLPartM.refTransfList(SelUID).VersY().x, 6) & "," &
DoubleToString(m_BTLPartM.refTransfList(SelUID).VersY().y, 6) & "," &
DoubleToString(m_BTLPartM.refTransfList(SelUID).VersY().z, 6)
Else
Return Nothing
End If
End Get
Set(value As String)
Dim ptOri As New Point3d(m_BTLPartM.refTransf.Orig())
Dim vtVersX As New Vector3d(m_BTLPartM.refTransf.VersX())
Dim sValArray() As String = value.Split(",")
Dim vtVersY As New Vector3d
If sValArray.Count() >= 3 AndAlso
StringToDouble(sValArray(0), vtVersY.x) AndAlso
StringToDouble(sValArray(1), vtVersY.y) AndAlso
StringToDouble(sValArray(2), vtVersY.z) AndAlso
m_BTLPartM.refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY) Then
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_TRANSFORMATION & (SelUID + 1), LenToString(m_BTLPartM.refTransf.Orig.x, 3) & "," &
LenToString(m_BTLPartM.refTransf.Orig.y, 3) & "," &
LenToString(m_BTLPartM.refTransf.Orig.z, 3) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.x, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.y, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersX.z, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.x, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.y, 6) & "," &
DoubleToString(m_BTLPartM.refTransf.VersY.z, 6))
NotifyPropertyChanged("TransfVersX")
NotifyPropertyChanged("TransfVersY")
Else
NotifyPropertyChanged("TransfVersY")
End If
End Set
End Property
Public ReadOnly Property ocCAMBERSIDE As ObservableCollection(Of Integer)
Get
Return m_BTLPartM.ocCAMBERSIDE
End Get
End Property
Public Property SelCAMBERSIDE As Integer
Get
Return m_BTLPartM.SelCAMBERSIDE
End Get
Set(value As Integer)
Dim sValArray() As String = CamberParams.Split(",")
If sValArray.Count() >= 4 AndAlso
StringToLen(sValArray(0), m_BTLPartM.m_dCamberLen1) AndAlso
StringToLen(sValArray(1), m_BTLPartM.m_dCamberLen2) AndAlso
StringToLen(sValArray(2), m_BTLPartM.m_dCamberLen3) AndAlso
StringToLen(sValArray(3), m_BTLPartM.m_dCamberCross3) AndAlso
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_CAMBER, "SIDE: " & (value + 1) &
" P01: " & sValArray(0) &
" P02: " & sValArray(1) &
" P03: " & sValArray(2) &
" P04: " & sValArray(3)) Then
m_BTLPartM.SelCAMBERSIDE = value
Else
NotifyPropertyChanged("SelCAMBERSIDE")
End If
End Set
End Property
Public Property CamberParams As String
Get
Return LenToString(m_BTLPartM.m_dCamberLen1, 3) & "," &
LenToString(m_BTLPartM.m_dCamberLen2, 3) & "," &
LenToString(m_BTLPartM.m_dCamberLen3, 3) & "," &
LenToString(m_BTLPartM.m_dCamberCross3, 3)
End Get
Set(value As String)
Dim sValArray() As String = value.Split(",")
If sValArray.Count() >= 4 AndAlso
StringToLen(sValArray(0), m_BTLPartM.m_dCamberLen1) AndAlso
StringToLen(sValArray(1), m_BTLPartM.m_dCamberLen2) AndAlso
StringToLen(sValArray(2), m_BTLPartM.m_dCamberLen3) AndAlso
StringToLen(sValArray(3), m_BTLPartM.m_dCamberCross3) Then
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_CAMBER, " SIDE: " & (SelCAMBERSIDE + 1) &
" P01: " & sValArray(0) &
" P02: " & sValArray(1) &
" P03: " & sValArray(2) &
" P04: " & sValArray(3))
Else
NotifyPropertyChanged("CamberParams")
End If
End Set
End Property
Public ReadOnly Property ocREFSIDEFIXCLAMP As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocREFSIDEFIXCLAMP
End Get
End Property
Public Property SelREFSIDEFIXCLAMP As Integer
Get
Return m_BTLPartM.SelREFSIDEFIXCLAMP
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(value, ocREFSIDEFIXCLAMP)
Dim sValue As String = ocREFSIDEFIXCLAMP(nValue).Name '[Enum].GetName(GetType(PartOffset_RefSideFixClamp), nValue)
Dim sValArray() As String = PartOffsetParams.Split(",")
If sValArray.Count() >= 4 AndAlso
StringToLen(sValArray(0), m_BTLPartM.m_dPartOffsetSide1) AndAlso
StringToLen(sValArray(1), m_BTLPartM.m_dPartOffsetSide2) AndAlso
StringToLen(sValArray(2), m_BTLPartM.m_dPartOffsetSide3) AndAlso
StringToLen(sValArray(3), m_BTLPartM.m_dPartOffsetSide4) AndAlso
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_PARTOFFSET, " P04: " & sValue &
" P11: " & sValArray(0) &
" P12: " & sValArray(1) &
" P13: " & sValArray(2) &
" P14: " & sValArray(3)) Then
m_BTLPartM.SelREFSIDEFIXCLAMP = value
Else
NotifyPropertyChanged("SelREFSIDEFIXCLAMP")
End If
End Set
End Property
Public Property PartOffsetParams As String
Get
Return LenToString(m_BTLPartM.m_dPartOffsetSide1, 3) & "," &
LenToString(m_BTLPartM.m_dPartOffsetSide2, 3) & "," &
LenToString(m_BTLPartM.m_dPartOffsetSide3, 3) & "," &
LenToString(m_BTLPartM.m_dPartOffsetSide4, 3)
End Get
Set(value As String)
Dim nValue As Integer = IdNameStruct.IdFromInd(SelREFSIDEFIXCLAMP, ocREFSIDEFIXCLAMP)
Dim sValue As String = ocREFSIDEFIXCLAMP(nValue).Name '[Enum].GetName(GetType(PartOffset_RefSideFixClamp), nValue)
Dim sValArray() As String = value.Split(",")
If sValArray.Count() >= 4 AndAlso
StringToLen(sValArray(0), m_BTLPartM.m_dPartOffsetSide1) AndAlso
StringToLen(sValArray(1), m_BTLPartM.m_dPartOffsetSide2) AndAlso
StringToLen(sValArray(2), m_BTLPartM.m_dPartOffsetSide3) AndAlso
StringToLen(sValArray(3), m_BTLPartM.m_dPartOffsetSide4) Then
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_PARTOFFSET, " P04: " & sValue &
" P11: " & sValArray(0) &
" P12: " & sValArray(1) &
" P13: " & sValArray(2) &
" P14: " & sValArray(3))
Else
NotifyPropertyChanged("PartOffsetParams")
End If
End Set
End Property
Public ReadOnly Property ocPROCESSINGQUALITY As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocPROCESSINGQUALITY
End Get
End Property
Public Property SelPROCESSINGQUALITY As Integer
Get
Return m_BTLPartM.SelPROCESSINGQUALITY
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(value, ocPROCESSINGQUALITY)
Dim sValue As String = [Enum].GetName(GetType(ProcessingQuality), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_PROCESSINGQUALITY, sValue) Then
m_BTLPartM.SelPROCESSINGQUALITY = value
Else
NotifyPropertyChanged("SelPROCESSINGQUALITY")
End If
End Set
End Property
Public ReadOnly Property ocRECESS As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocRECESS
End Get
End Property
Public Property SelRECESS As Integer
Get
Return m_BTLPartM.SelRECESS
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(value, ocRECESS)
Dim sValue As String = [Enum].GetName(GetType(Recess), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_RECESS, sValue) Then
m_BTLPartM.SelRECESS = value
Else
NotifyPropertyChanged("SelRECESS")
End If
End Set
End Property
Public ReadOnly Property ocSTOREYTYPE As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocSTOREYTYPE
End Get
End Property
Public Property SelSTOREYTYPE As Integer
Get
Return m_BTLPartM.SelSTOREYTYPE
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(value, ocSTOREYTYPE)
Dim sValue As String = [Enum].GetName(GetType(StoreyType), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_STOREYTYPE, sValue) Then
m_BTLPartM.SelSTOREYTYPE = value
Else
NotifyPropertyChanged("SelSTOREYTYPE")
End If
End Set
End Property
Public Property sELEMENTNUM As String
Get
Return m_BTLPartM.sELEMENTNUM
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ELEMENTNUM, value) Then
m_BTLPartM.sELEMENTNUM = value
Else
NotifyPropertyChanged("sELEMENTNUM")
End If
End Set
End Property
Public Property nLAYER As Integer
Get
Return m_BTLPartM.nLAYER
End Get
Set(value As Integer)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_LAYER, value) Then
m_BTLPartM.nLAYER = value
Else
NotifyPropertyChanged("nLAYER")
End If
End Set
End Property
Public Property sMODULENUM As String
Get
Return m_BTLPartM.sMODULENUM
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_MODULENUM, value) Then
m_BTLPartM.sMODULENUM = value
Else
NotifyPropertyChanged("sMODULENUM")
End If
End Set
End Property
'Protected m_sUSERATTRIBUTE As String
'Public Property sUSERATTRIBUTE As String
' Get
' Return m_sUSERATTRIBUTE
' End Get
' Set(value As String)
' If EgtSetInfo(m_nPartId, BTL_PRT_USERATTRIBUTE, value) Then
' m_sUSERATTRIBUTE = value
' Else
' NotifyPropertyChanged("sUSERATTRIBUTE")
' End If
' End Set
'End Property
Public Property sCOMMENT As String
Get
Return m_BTLPartM.sCOMMENT
End Get
Set(value As String)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_COMMENT, value) Then
m_BTLPartM.sCOMMENT = value
Else
NotifyPropertyChanged("sCOMMENT")
End If
End Set
End Property
Public Property GrainDirection As String
Get
Return DoubleToString(m_BTLPartM.refGrainDir.x, 6) & "," &
DoubleToString(m_BTLPartM.refGrainDir.y, 6) & "," &
DoubleToString(m_BTLPartM.refGrainDir.z, 6)
End Get
Set(value As String)
Dim sValArray() As String = value.Split(",")
If sValArray.Count() >= 3 AndAlso
StringToDouble(sValArray(0), m_BTLPartM.refGrainDir.x) AndAlso
StringToDouble(sValArray(1), m_BTLPartM.refGrainDir.y) AndAlso
StringToDouble(sValArray(2), m_BTLPartM.refGrainDir.z) Then
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_GRAINDIR, sValArray(0) & "," &
sValArray(1) & "," &
sValArray(2) & ";" &
If(bGRAINDIRALIGN, 1, 0))
Else
NotifyPropertyChanged("GrainDirection")
End If
End Set
End Property
Public Property bGRAINDIRALIGN As Boolean
Get
Return m_BTLPartM.bGRAINDIRALIGN
End Get
Set(value As Boolean)
Dim sValArray() As String = GrainDirection.Split(",")
If sValArray.Count() >= 3 AndAlso
StringToDouble(sValArray(0), m_BTLPartM.refGrainDir.x) AndAlso
StringToDouble(sValArray(1), m_BTLPartM.refGrainDir.y) AndAlso
StringToDouble(sValArray(2), m_BTLPartM.refGrainDir.z) AndAlso
EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_GRAINDIR, sValArray(0) & "," &
sValArray(1) & "," &
sValArray(2) & ";" &
If(value, 1, 0)) Then
m_BTLPartM.bGRAINDIRALIGN = value
NotifyPropertyChanged("bGRAINDIRALIGN")
End If
End Set
End Property
Public ReadOnly Property ocREFSIDE As ObservableCollection(Of Integer)
Get
Return m_BTLPartM.ocREFSIDE
End Get
End Property
Public Property SelREFSIDE As Integer
Get
Return m_BTLPartM.SelREFSIDE
End Get
Set(value As Integer)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_REFSIDE, (value + 1) & ";" & If(bREFSIDEALIGN, 1, 0)) Then
m_BTLPartM.SelREFSIDE = value
Else
NotifyPropertyChanged("SelREFSIDE")
End If
End Set
End Property
Public Property bREFSIDEALIGN As Boolean
Get
Return m_BTLPartM.bREFSIDEALIGN
End Get
Set(value As Boolean)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_REFSIDE, (SelREFSIDE + 1) & ";" & If(value, 1, 0)) Then
m_BTLPartM.bREFSIDEALIGN = value
NotifyPropertyChanged("bREFSIDEALIGN")
End If
End Set
End Property
Public ReadOnly Property ocALIGNLOCATION As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocALIGNLOCATION
End Get
End Property
Public Property SelALIGNLOCATION As Integer
Get
Return m_BTLPartM.SelALIGNLOCATION
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(value, ocALIGNLOCATION)
Dim sValueLoc As String = [Enum].GetName(GetType(AlignmentLocation), nValue)
nValue = IdNameStruct.IdFromInd(SelALIGNENDTYPE, ocALIGNENDTYPE)
Dim sValueEnd As String = [Enum].GetName(GetType(AlignmentEndtype), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ALIGNMENT, sValueLoc & ": " & sValueEnd) Then
m_BTLPartM.SelALIGNLOCATION = value
Else
NotifyPropertyChanged("SelALIGNLOCATION")
End If
End Set
End Property
Public ReadOnly Property ocALIGNENDTYPE As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocALIGNENDTYPE
End Get
End Property
Public Property SelALIGNENDTYPE As Integer
Get
Return m_BTLPartM.SelALIGNENDTYPE
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(SelALIGNLOCATION, ocALIGNLOCATION)
Dim sValueLoc As String = [Enum].GetName(GetType(AlignmentLocation), nValue)
nValue = IdNameStruct.IdFromInd(value, ocALIGNENDTYPE)
Dim sValueEnd As String = [Enum].GetName(GetType(AlignmentEndtype), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_ALIGNMENT, sValueLoc & ": " & sValueEnd) Then
m_BTLPartM.SelALIGNENDTYPE = value
Else
NotifyPropertyChanged("SelALIGNENDTYPE")
End If
End Set
End Property
Public ReadOnly Property ocMATERIALTYPEGRP As ObservableCollection(Of Object)
Get
Return m_BTLPartM.ocMATERIALTYPEGRP
End Get
End Property
Public Property SelMATERIALTYPEGRP As Integer
Get
Return m_BTLPartM.SelMATERIALTYPEGRP
End Get
Set(value As Integer)
Dim nValue As Integer = IdNameStruct.IdFromInd(value, ocMATERIALTYPEGRP)
Dim sValue As String = ocMATERIALTYPEGRP(nValue).Name '[Enum].GetName(GetType(MaterialType), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_MATERIALTYPE, sValue & ": " & sMATERIALTYPESPEC) Then
m_BTLPartM.SelMATERIALTYPEGRP = value
Else
NotifyPropertyChanged("SelMATERIALTYPEGRP")
End If
End Set
End Property
Public Property sMATERIALTYPESPEC As String
Get
Return m_BTLPartM.sMATERIALTYPESPEC
End Get
Set(value As String)
Dim nValue As Integer = IdNameStruct.IdFromInd(SelMATERIALTYPEGRP, ocMATERIALTYPEGRP)
Dim sValue As String = ocMATERIALTYPEGRP(nValue).Name '[Enum].GetName(GetType(MaterialType), nValue)
If EgtSetInfo(m_BTLPartM.nPartId, BTL_PRT_MATERIALTYPE, sValue & ": " & value) Then
m_BTLPartM.sMATERIALTYPESPEC = value
Else
NotifyPropertyChanged("sMATERIALTYPESPEC")
End If
End Set
End Property
#End Region ' Parametri pezzo
Public Property sCNT As String
Get
Return m_BTLPartM.nCNT
End Get
Set(value As String)
Dim nTempCNT As Integer
If Integer.TryParse(value, nTempCNT) AndAlso nTempCNT > 0 AndAlso EgtSetInfo(m_nPartId, BTL_PRT_CNT, value) Then
m_BTLPartM.nCNT = nTempCNT
Else
NotifyPropertyChanged("sCNT")
End If
End Set
End Property
Public ReadOnly Property sINVERTED As String
Get
Return m_BTLPartM.nINVERTED & "°"
End Get
End Property
Public ReadOnly Property sROTATED As String
Get
Return m_BTLPartM.nROTATED & "°"
End Get
End Property
Public ReadOnly Property nCALC_ERR As Integer
Get
Return m_BTLPartM.nCALC_ERR
End Get
End Property
Public ReadOnly Property nCALC_FALL As Integer
Get
Return m_BTLPartM.nCALC_FALL
End Get
End Property
Public ReadOnly Property sCALC_MSG As String
Get
Return m_BTLPartM.sCALC_MSG
End Get
End Property
Public Property nCALC_ROT As Integer
Get
Return m_BTLPartM.nCALC_ROT
End Get
Set(value As Integer)
m_BTLPartM.nCALC_ROT = value
End Set
End Property
Public Property nCALC_TIME As Integer
Get
Return m_BTLPartM.nCALC_TIME
End Get
Set(value As Integer)
m_BTLPartM.nCALC_TIME = value
End Set
End Property
Public Property nGlobalState As CalcStates
Get
Return m_BTLPartM.nGlobalState
End Get
Set(value As CalcStates)
m_BTLPartM.nGlobalState = value
End Set
End Property
Public Property nState As CalcStates
Get
Return m_BTLPartM.nState
End Get
Set(value As CalcStates)
m_BTLPartM.nState = value
End Set
End Property
Public ReadOnly Property Calc_BorderBrush As SolidColorBrush
Get
If Not bDO Then
Return Brushes.Aqua
ElseIf m_BTLPartM.nGlobalState = 0 Then
Return Brushes.Green
ElseIf m_BTLPartM.nGlobalState < 0 Then
Return Brushes.LightGray
ElseIf m_BTLPartM.nGlobalState > 0 Then
Return Brushes.Red
End If
End Get
End Property
Public ReadOnly Property Section As SectionXMaterial
Get
Return New SectionXMaterial(m_BTLPartM.dW, m_BTLPartM.dH, m_BTLPartM.dL, m_BTLPartM.sMATERIAL)
End Get
End Property
Public Property bDOALL As Boolean?
Get
If FeatureList.Count = 0 Then Return False
Dim bTemp As Boolean = FeatureList(0).bDO
For FeatureIndex = 1 To FeatureList.Count - 1
If FeatureList(FeatureIndex).bDO <> bTemp Then Return Nothing
Next
Return bTemp
End Get
Set(value As Boolean?)
If FeatureList.Count = 0 Then
NotifyPropertyChanged("bDOALL")
Return
End If
For Each Feature In FeatureList
Feature.bDO = value
Next
End Set
End Property
' lista delle feature del pezzo
Public Property FeatureList As ObservableCollection(Of BTLFeature)
Get
Return m_BTLPartM.FeatureList
End Get
Set(value As ObservableCollection(Of BTLFeature))
m_BTLPartM.FeatureList = value
End Set
End Property
Public m_SelFeature As BTLFeature
Public Property SelFeature As BTLFeature
Get
Return m_SelFeature
End Get
Set(value As Core.BTLFeature)
m_SelFeature = value
If Map.refMainMenuVM.SelPage = Pages.VIEW Then
If Not IsNothing(m_SelFeature) Then
DirectCast(m_SelFeature, BTLFeatureVM).SelGeomFeature()
EgtDraw()
' imposto path disegno da mostrare in BottomPanel
Map.refBottomPanelVM.SetCurrDraw(DirectCast(m_SelFeature, BTLFeatureVM).sDrawPath)
' seleziono pagina BottomPanel
Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.FEATURE)
' deseleziono i parametri
If Not IsNothing(SelFeature.SelPParam) Then SelFeature.SelPParam = Nothing
' se contorno libero
If m_SelFeature.IsFreeContour() Then
' attivo stato contorno libero
End If
Else
EgtDeselectAll()
End If
End If
NotifyPropertyChanged("SelFeature")
End Set
End Property
' Definizione comandi
Private m_cmdInvert As ICommand
Private m_cmdBackRotation As ICommand
Private m_cmdForwardRotation As ICommand
Private m_cmdPartColour As ICommand
Private m_cmdDeletePart As ICommand
#Region "MESSAGES"
Public ReadOnly Property DO_Msg As String
Get
Return EgtMsg(61602)
End Get
End Property
Public ReadOnly Property NAM_Msg As String
Get
Return EgtMsg(61603)
End Get
End Property
#End Region
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New(BTLPartM As BTLPartM, BTLStructureM As BTLStructureM)
m_BTLPartM = BTLPartM
m_BTLStructureM = BTLStructureM
End Sub
'Sub New(ParentStructure As BTLStructureVM, nPartId As Integer)
' MyBase.New(ParentStructure, nPartId)
' ' leggo info pezzo
' Dim sValArray() As String
' Dim sValue As String = String.Empty
' Dim nValue As Integer = 0
' EgtGetInfo(nPartId, BTL_PRT_PDN, nPDN)
' Dim nDO As Integer = 1
' If EgtGetInfo(nPartId, BTL_PRT_DO, nDO) Then
' m_bDO = (nDO <> 0)
' Else
' m_bDO = True
' End If
' EgtGetInfo(nPartId, BTL_PRT_NAM, m_sNAM)
' EgtGetInfo(nPartId, BTL_PRT_L, m_dL)
' EgtGetInfo(nPartId, BTL_PRT_W, m_dW)
' EgtGetInfo(nPartId, BTL_PRT_H, m_dH)
' EgtGetInfo(nPartId, BTL_PRT_CNT, m_nCNT)
' EgtGetInfo(nPartId, BTL_PRT_ASSEMBLYNUM, m_sASSEMBLYNUM)
' EgtGetInfo(nPartId, BTL_PRT_ORDERNUM, m_nORDERNUM)
' EgtGetInfo(nPartId, BTL_PRT_DESIGNATION, m_sDESIGN)
' EgtGetInfo(nPartId, BTL_PRT_ANNOTATION, m_sANNOT)
' EgtGetInfo(nPartId, BTL_PRT_STOREY, m_sSTOREY)
' EgtGetInfo(nPartId, BTL_PRT_GROUP, m_sGROUP)
' EgtGetInfo(nPartId, BTL_PRT_PACKAGE, m_sPACKAGE)
' EgtGetInfo(nPartId, BTL_PRT_TIMBERGRADE, m_sTIMBERGRADE)
' EgtGetInfo(nPartId, BTL_PRT_QUALITYGRADE, m_sQUALITYGRADE)
' EgtGetInfo(nPartId, BTL_PRT_COLOUR, sValue)
' m_colCOLOR.FromString(sValue)
' EgtGetInfo(nPartId, BTL_PRT_PLANINGLENGTH, m_dPLANINGLEN)
' EgtGetInfo(nPartId, BTL_PRT_STARTOFFSET, m_dSTARTOFFSET)
' EgtGetInfo(nPartId, BTL_PRT_ENDOFFSET, m_dENDOFFSET)
' Dim ind As Integer = 1
' While EgtGetInfo(nPartId, BTL_PRT_UID & ind, nValue)
' ocUID.Add(nValue)
' EgtGetInfo(nPartId, BTL_PRT_TRANSFORMATION & ind, sValue)
' m_refTransf = New Frame3d
' Dim ptOri As New Point3d
' Dim vtVersX As New Vector3d
' Dim vtVersY As New Vector3d
' sValArray = sValue.Split({","}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 9 Then
' StringToLen(sValArray(0), ptOri.x)
' StringToLen(sValArray(1), ptOri.y)
' StringToLen(sValArray(2), ptOri.z)
' StringToDouble(sValArray(3), vtVersX.x)
' StringToDouble(sValArray(4), vtVersX.y)
' StringToDouble(sValArray(5), vtVersX.z)
' StringToDouble(sValArray(6), vtVersY.x)
' StringToDouble(sValArray(7), vtVersY.y)
' StringToDouble(sValArray(8), vtVersY.z)
' m_refTransf.ChangeOrigin(ptOri)
' m_refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY)
' End If
' refTransfList.Add(m_refTransf)
' ind = ind + 1
' End While
' EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
' sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 5 Then
' StringToLen(sValArray(3), m_dCamberLen1)
' StringToLen(sValArray(5), m_dCamberLen2)
' StringToLen(sValArray(7), m_dCamberLen3)
' StringToLen(sValArray(9), m_dCamberCross3)
' End If
' Dim pFrom As Integer = sValue.IndexOf("SIDE: ") + "SIDE: ".Length
' Dim pTo As Integer = sValue.LastIndexOf(" P01")
' If pTo >= 0 Then
' nValue = CInt(sValue.Substring(pFrom, pTo - pFrom))
' m_SelCAMBERSIDE = ocCAMBERSIDE.IndexOf(CInt(sValue.Substring(pFrom, pTo - pFrom)))
' End If
' EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
' sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 5 Then
' StringToLen(sValArray(3), m_dPartOffsetSide1)
' StringToLen(sValArray(5), m_dPartOffsetSide2)
' StringToLen(sValArray(7), m_dPartOffsetSide3)
' StringToLen(sValArray(9), m_dPartOffsetSide4)
' End If
' pFrom = sValue.IndexOf("P04: ") + "P04: ".Length
' pTo = sValue.LastIndexOf(" P11")
' If pTo >= 0 Then
' m_SelREFSIDEFIXCLAMP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue.Substring(pFrom, pTo - pFrom), ocREFSIDEFIXCLAMP), ocREFSIDEFIXCLAMP)
' End If
' EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
' m_SelPROCESSINGQUALITY = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocPROCESSINGQUALITY), ocPROCESSINGQUALITY)
' EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
' m_SelRECESS = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocRECESS), ocRECESS)
' EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
' m_SelSTOREYTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocSTOREYTYPE), ocSTOREYTYPE)
' EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, m_sELEMENTNUM)
' EgtGetInfo(nPartId, BTL_PRT_LAYER, m_nLAYER)
' EgtGetInfo(nPartId, BTL_PRT_MODULENUM, m_sMODULENUM)
' 'EgtGetInfo(nPartId, BTL_PRT_USERATTRIBUTE, m_sUSERATTRIBUTE)
' EgtGetInfo(nPartId, BTL_PRT_COMMENT, m_sCOMMENT)
' EgtGetInfo(nPartId, BTL_PRT_GRAINDIR, sValue)
' m_refGrainDir = New Vector3d
' sValArray = sValue.Split(New String() {",", ";"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 4 Then
' StringToDouble(sValArray(0), m_refGrainDir.x)
' StringToDouble(sValArray(1), m_refGrainDir.y)
' StringToDouble(sValArray(2), m_refGrainDir.z)
' m_bGRAINDIRALIGN = (CInt(sValArray(3)) = 1)
' End If
' EgtGetInfo(nPartId, BTL_PRT_REFSIDE, sValue)
' sValArray = sValue.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 2 Then
' m_SelREFSIDE = ocREFSIDE.IndexOf(CInt(sValArray(0)))
' m_bREFSIDEALIGN = (CInt(sValArray(1)) = 1)
' End If
' EgtGetInfo(nPartId, BTL_PRT_ALIGNMENT, sValue)
' sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 2 Then
' m_SelALIGNLOCATION = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), ocALIGNLOCATION), ocALIGNLOCATION)
' m_SelALIGNENDTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(1).Trim(), ocALIGNENDTYPE), ocALIGNENDTYPE)
' End If
' EgtGetInfo(nPartId, BTL_PRT_MATERIALTYPE, sValue)
' sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 1 Then
' m_SelMATERIALTYPEGRP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), ocMATERIALTYPEGRP), ocMATERIALTYPEGRP)
' If sValArray.Count() >= 2 Then m_sMATERIALTYPESPEC = sValArray(1).Trim()
' End If
' If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, m_nROTATED) Then
' m_nROTATED = 0
' End If
' If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, m_nINVERTED) Then
' m_nINVERTED = 0
' End If
' If EgtGetInfo(nPartId, BTL_PRT_MATERIAL, m_sMATERIAL) Then
' If Not ParentStructure.MaterialList.Contains(m_sMATERIAL) Then
' ParentStructure.MaterialList.Add(m_sMATERIAL)
' End If
' End If
' If Not ParentStructure.SectionList.Contains(Section) Then
' ParentStructure.SectionList.Add(Section)
' End If
' ' Leggo outline
' Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
' Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayerId)
' While nOutlineId <> GDB_ID.NULL
' ' verifico che sia una feature
' Dim nGRP As Integer
' If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then
' ' creo la feature
' m_FeatureList.Add(New BTLFeatureVM(Me, nOutlineId))
' End If
' nOutlineId = EgtGetNext(nOutlineId)
' End While
' ' Leggo 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) Then
' ' creo la feature
' m_FeatureList.Add(New BTLFeatureVM(Me, nFeatureId))
' End If
' nFeatureId = EgtGetNext(nFeatureId)
' End While
' ' Aggiorno check DOALL
' NotifyPropertyChanged("bDOALL")
' ' leggo calc error
' Dim nErr As Integer = 0
' Dim nRot As Integer = 0
' Dim nFall As Integer = 0
' Dim sMsg As String = ""
' Dim bCalc As Boolean = False
' bCalc = EgtGetInfo(nPartId, ITG_PROJ_ERR, nErr)
' EgtGetInfo(nPartId, ITG_PROJ_ROT, nRot)
' EgtGetInfo(nPartId, ITG_PROJ_FALL, sMsg)
' EgtGetInfo(nPartId, ITG_PROJ_MSG, sMsg)
' CalcPartUpdate(bCalc, nErr, nRot, nFall, sMsg)
' CalcFeatureUpdate()
'End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Sub Rotation(IsPositive As Boolean)
' recupero il box del pezzo
Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
Dim b3Solid As New BBox3d
EgtGetBBoxGlob(nLs, GDB_BB.STANDARD, b3Solid)
If b3Solid.IsEmpty() Then
Map.refMyStatusBarVM.SetOutputMessage("ERROR: Box non definito per la trave " & sNAM, 5, MSG_TYPE.ERROR_)
Return
End If
' eseguo rotazione di 90 gradi attorno asse X
Dim dRot = If(IsPositive, 90, -90)
Dim vtAxes As Vector3d
' se travi ruoto attorno all'asse X
If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM Then
vtAxes = Vector3d.X_AX
' se pareti ruoto attorno all'asse Z
ElseIf Map.refMachinePanelVM.SelectedMachine.nType = MachineType.WALL Then
vtAxes = Vector3d.Z_AX
End If
If EgtRotate(nPartId, b3Solid.Center, vtAxes, dRot, GDB_RT.GLOB) Then
Select Case m_BTLPartM.nROTATED
Case 0
m_BTLPartM.nROTATED = If(IsPositive, 90, 270)
Case 90
m_BTLPartM.nROTATED = If(IsPositive, 180, 0)
Case 180
m_BTLPartM.nROTATED = If(IsPositive, 270, 90)
Case 270
m_BTLPartM.nROTATED = If(IsPositive, 0, 180)
End Select
EgtSetInfo(nPartId, BTL_PRT_ROTATED, m_BTLPartM.nROTATED)
' scambio dimensioni
SwapDimForRotation()
' aggiorno sezioni
DirectCast(BTLStructureM, BTLStructureVM).UpdateSectionFromRotation(Me)
' imposto modificato per copie
EgtDuploSetModified(nPartId)
End If
EgtDraw()
NotifyPropertyChanged("sROTATED")
End Sub
Private Function SwapDimForRotation()
If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM Then
' scambio W ed H
Dim Temp As Double = m_dW
m_dW = m_dH
m_dH = Temp
EgtSetInfo(nPartId, BTL_PRT_W, m_dW)
EgtSetInfo(nPartId, BTL_PRT_H, m_dH)
ElseIf Map.refMachinePanelVM.SelectedMachine.nType = MachineType.WALL Then
' scambio W ed L
Dim Temp As Double = m_dW
m_dW = m_dL
m_dL = Temp
EgtSetInfo(nPartId, BTL_PRT_W, m_dW)
EgtSetInfo(nPartId, BTL_PRT_L, m_dL)
End If
' notifica per valori in PartGrid
NotifyPropertyChanged("dW")
NotifyPropertyChanged("dH")
NotifyPropertyChanged("dL")
' notifica per valori in PartManager(textbox)
NotifyPropertyChanged("sW")
NotifyPropertyChanged("sH")
NotifyPropertyChanged("sL")
End Function
' funzione che aggiorna lo stato e gli errori dopo calcolo
Friend Sub CalcPartUpdate(bCalc As Boolean, ERR As Integer, ROT As Integer, FALL As Integer, MSG As String)
If Not bCalc Then
nState = CalcStates.NOTCALCULATED
m_nCALC_ERR = 0
m_nCALC_ROT = 0
m_nCALC_FALL = 0
m_sCALC_MSG = ""
Else
m_nCALC_ERR = ERR
m_nCALC_ROT = ROT
m_nCALC_FALL = FALL
m_sCALC_MSG = MSG
If ERR = 0 Then
nState = CalcStates.OK
ElseIf ERR > 1 Then
nState = CalcStates.ERROR_
ElseIf ERR < 1 Then
nState = CalcStates.NOTCALCULATED
End If
End If
NotifyPropertyChanged("Calc_BorderBrush")
End Sub
' funzione che aggiorna lo stato e gli errori dopo calcolo
Friend Sub CalcFeatureUpdate()
m_nGlobalState = nState
For Each Feature In FeatureList
If Not Feature.bDO Then
ElseIf Feature.nState < 0 Then
m_nGlobalState = CalcStates.NOTCALCULATED
Exit For
ElseIf Feature.nState > 0 AndAlso m_nGlobalState = CalcStates.OK Then
m_nGlobalState = CalcStates.ERROR_
End If
Next
NotifyPropertyChanged("Calc_BorderBrush")
End Sub
Public Function Copy() As BTLPartVM
' creo nuovo part
Dim nNewPartId As Integer = EgtBeamCreatePart()
If nNewPartId = GDB_ID.NULL Then Return Nothing
EgtBeamSetPartProdNbr(Me.BTLStructureM.NewPDN())
EgtBeamSetPartName(Me.sNAM)
EgtBeamSetPartCount(Me.nCNT)
EgtBeamSetPartBox(Me.dL, Me.dH, Me.dW)
' aggiungo dati pezzo
Dim NewPart As New BTLPartVM(Me.BTLStructureM, nNewPartId)
'aggiungo tutte le sue feature
For Each Feature In Me.FeatureList
Feature.Copy(NewPart)
Next
' aggiungo pezzo alla lista
Me.BTLStructureM.BTLPartMList.Add(NewPart)
Return NewPart
End Function
#End Region ' METHODS
#Region "COMMANDS"
#Region "Invert"
Public ReadOnly Property Invert_Command As ICommand
Get
If m_cmdInvert Is Nothing Then
m_cmdInvert = New Command(AddressOf Invert)
End If
Return m_cmdInvert
End Get
End Property
Public Sub Invert()
' recupero il box del pezzo
Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
Dim b3Solid As New BBox3d
EgtGetBBoxGlob(nLs, GDB_BB.STANDARD, b3Solid)
If b3Solid.IsEmpty() Then
Map.refMyStatusBarVM.SetOutputMessage("ERROR: Box non definito per la trave " & sNAM, 5, MSG_TYPE.ERROR_)
Return
End If
Dim vtAxes As Vector3d
' se travi ruoto attorno all'asse Z
If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM Then
vtAxes = Vector3d.Z_AX
' se pareti ruoto attorno all'asse X
ElseIf Map.refMachinePanelVM.SelectedMachine.nType = MachineType.WALL Then
vtAxes = Vector3d.X_AX
End If
' eseguo rotazione di 180 gradi
If EgtRotate(nPartId, b3Solid.Center, vtAxes, 180, GDB_RT.GLOB) Then
m_nINVERTED = If(m_nINVERTED = 0, 180, 0)
EgtSetInfo(nPartId, BTL_PRT_INVERTED, m_nINVERTED)
' imposto modificato per copie
EgtDuploSetModified(nPartId)
End If
EgtDraw()
NotifyPropertyChanged("sINVERTED")
End Sub
#End Region ' Invert
#Region "BackRotation"
Public ReadOnly Property BackRotation_Command As ICommand
Get
If m_cmdBackRotation Is Nothing Then
m_cmdBackRotation = New Command(AddressOf BackRotation)
End If
Return m_cmdBackRotation
End Get
End Property
Public Sub BackRotation()
Rotation(False)
End Sub
#End Region ' BackRotation
#Region "ForwardRotation"
Public ReadOnly Property ForwardRotation_Command As ICommand
Get
If m_cmdForwardRotation Is Nothing Then
m_cmdForwardRotation = New Command(AddressOf ForwardRotation)
End If
Return m_cmdForwardRotation
End Get
End Property
Public Sub ForwardRotation()
Rotation(True)
End Sub
#End Region ' ForwardRotation
#Region "PartColour"
Public ReadOnly Property PartColour_Command As ICommand
Get
If m_cmdPartColour Is Nothing Then
m_cmdPartColour = New Command(AddressOf PartColourCmd)
End If
Return m_cmdPartColour
End Get
End Property
Public Sub PartColourCmd()
Dim PartColor As New Color3d(192, 192, 192)
' Eseguo modifica con dialogo
If SelectColor(m_colCOLOR, PartColor) Then
'm_colCOLOR = PartColor
sCOLRGB = PartColor.ToString
NotifyPropertyChanged("PartColour")
End If
End Sub
#End Region ' PartColour
#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 Then Map.refLeftPanelVM.RemovePart()
End Sub
#End Region ' DeletePart
Private Function SelectColor(Col As Color3d, ByRef NewCol As Color3d) As Boolean
' Creo dialogo colori
Dim ColorDlg As New System.Windows.Forms.ColorDialog
ColorDlg.FullOpen = True
ColorDlg.Color = Col.ToColor()
' Visualizzo dialogo
If ColorDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return False
' Recupero colore scelto
NewCol.FromString(ColorDlg.Color.R & "," & ColorDlg.Color.G & "," & ColorDlg.Color.B & "," & ColorDlg.Color.A) 'NewCol.FromColor(ColorDlg.Color)
Return True
End Function
#End Region ' COMMANDS
End Class