Files
egtbeamwall/EgtBEAMWALL.Core/Model/BTLPartM.vb
T
2021-03-31 18:37:07 +02:00

1102 lines
38 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Public Class BTLPartM
'' Feature a cui appartiene il parametro
'Public m_BTLStructureM As BTLStructureM
'Public ReadOnly Property BTLStructureM As BTLStructureM
' Get
' Return m_BTLStructureM
' End Get
'End Property
' Id geometrico del pezzo
Public m_nPartId As Integer
Public ReadOnly Property nPartId As Integer
Get
Return m_nPartId
End Get
End Property
Public WriteOnly Property SetPartId As Integer
Set(value As Integer)
m_nPartId = value
End Set
End Property
' Info del pezzo
Public m_nPDN As Integer
Public Property nPDN As Integer
Get
Return m_nPDN
End Get
Set(value As Integer)
m_nPDN = value
End Set
End Property
Public m_bDO As Boolean
Public Overridable Property bDO As Boolean
Get
Return m_bDO
End Get
Set(value As Boolean)
m_bDO = value
End Set
End Property
Public m_sNAM As String
Public Overridable Property sNAM As String
Get
Return m_sNAM
End Get
Set(value As String)
m_sNAM = value
End Set
End Property
Public m_dL As Double
Public Property dL As Double
Get
Return m_dL
End Get
Set(value As Double)
m_dL = value
End Set
End Property
Public m_dW As Double
Public Property dW As Double
Get
Return m_dW
End Get
Set(value As Double)
m_dW = value
End Set
End Property
Public m_dH As Double
Public Property dH As Double
Get
Return m_dH
End Get
Set(value As Double)
m_dH = value
End Set
End Property
#Region "Parametri pezzo"
Public m_nSINGLEMEMBERNUM As Integer
Public Property nSINGLEMEMBERNUM As Integer
Get
Return m_nSINGLEMEMBERNUM
End Get
Set(value As Integer)
m_nSINGLEMEMBERNUM = value
End Set
End Property
Public m_sASSEMBLYNUM As String
Public Property sASSEMBLYNUM As String
Get
Return m_sASSEMBLYNUM
End Get
Set(value As String)
m_sASSEMBLYNUM = value
End Set
End Property
Public m_nORDERNUM As Integer
Public Property nORDERNUM As Integer
Get
Return m_nORDERNUM
End Get
Set(value As Integer)
m_nORDERNUM = value
End Set
End Property
Public m_sDESIGN As String
Public Property sDESIGN As String
Get
Return m_sDESIGN
End Get
Set(value As String)
m_sDESIGN = value
End Set
End Property
Public m_sANNOT As String
Public Property sANNOT As String
Get
Return m_sANNOT
End Get
Set(value As String)
m_sANNOT = value
End Set
End Property
Public m_sSTOREY As String
Public Property sSTOREY As String
Get
Return m_sSTOREY
End Get
Set(value As String)
m_sSTOREY = value
End Set
End Property
Public m_sGROUP As String
Public Property sGROUP As String
Get
Return m_sGROUP
End Get
Set(value As String)
m_sGROUP = value
End Set
End Property
Public m_sPACKAGE As String
Public Property sPACKAGE As String
Get
Return m_sPACKAGE
End Get
Set(value As String)
m_sPACKAGE = value
End Set
End Property
Public m_sMATERIAL As String
Public Property sMATERIAL As String
Get
Return m_sMATERIAL
End Get
Set(value As String)
m_sMATERIAL = value
End Set
End Property
Public m_sTIMBERGRADE As String
Public Property sTIMBERGRADE As String
Get
Return m_sTIMBERGRADE
End Get
Set(value As String)
m_sTIMBERGRADE = value
End Set
End Property
Public m_sQUALITYGRADE As String
Public Property sQUALITYGRADE As String
Get
Return m_sQUALITYGRADE
End Get
Set(value As String)
m_sQUALITYGRADE = value
End Set
End Property
Public m_colCOLOR As Color3d
Public Property colCOLOR As Color3d
Get
Return m_colCOLOR
End Get
Set(value As Color3d)
m_colCOLOR = value
End Set
End Property
Public m_dPLANINGLEN As Double
Public Property dPLANINGLEN As Double
Get
Return m_dPLANINGLEN
End Get
Set(value As Double)
m_dPLANINGLEN = value
End Set
End Property
Public m_dSTARTOFFSET As Double
Public Property dSTARTOFFSET As Double
Get
Return m_dSTARTOFFSET
End Get
Set(value As Double)
m_dSTARTOFFSET = value
End Set
End Property
Public m_dENDOFFSET As Double
Public Property dENDOFFSET As Double
Get
Return m_dENDOFFSET
End Get
Set(value As Double)
m_dENDOFFSET = value
End Set
End Property
Public m_ocUID As New ObservableCollection(Of Integer)
Public ReadOnly Property ocUID As ObservableCollection(Of Integer)
Get
Return m_ocUID
End Get
End Property
Public m_SelUID As Integer
Public Property SelUID As Integer
Get
Return m_SelUID
End Get
Set(value As Integer)
m_SelUID = value
End Set
End Property
Public m_refTransfList As New List(Of Frame3d)
Public m_refTransf As Frame3d
Public Property refTransfList As List(Of Frame3d)
Get
Return m_refTransfList
End Get
Set(value As List(Of Frame3d))
m_refTransfList = value
End Set
End Property
Public Property refTransf As Frame3d
Get
Return m_refTransf
End Get
Set(value As Frame3d)
m_refTransf = value
End Set
End Property
Public m_ocCAMBERSIDE As New ObservableCollection(Of Integer)({1, 2, 3, 4})
Public ReadOnly Property ocCAMBERSIDE As ObservableCollection(Of Integer)
Get
Return m_ocCAMBERSIDE
End Get
End Property
Public m_SelCAMBERSIDE As Integer
Public Property SelCAMBERSIDE As Integer
Get
Return m_SelCAMBERSIDE
End Get
Set(value As Integer)
m_SelCAMBERSIDE = value
End Set
End Property
Public m_dCamberLen1 As Double
Public m_dCamberLen2 As Double
Public m_dCamberLen3 As Double
Public m_dCamberCross3 As Double
Public m_ocREFSIDEFIXCLAMP As New ObservableCollection(Of Object)({New IdNameStruct(PartOffset_RefSideFixClamp.INACTIVE, EgtMsg(61665)),
New IdNameStruct(PartOffset_RefSideFixClamp.REFSIDE1, EgtMsg(61687)),
New IdNameStruct(PartOffset_RefSideFixClamp.REFSIDE2, EgtMsg(61688)),
New IdNameStruct(PartOffset_RefSideFixClamp.REFSIDE3, EgtMsg(61689)),
New IdNameStruct(PartOffset_RefSideFixClamp.REFSIDE4, EgtMsg(61690))})
Public ReadOnly Property ocREFSIDEFIXCLAMP As ObservableCollection(Of Object)
Get
Return m_ocREFSIDEFIXCLAMP
End Get
End Property
Public m_SelREFSIDEFIXCLAMP As Integer
Public Property SelREFSIDEFIXCLAMP As Integer
Get
Return m_SelREFSIDEFIXCLAMP
End Get
Set(value As Integer)
m_SelREFSIDEFIXCLAMP = value
End Set
End Property
Public m_dPartOffsetSide1 As Double
Public m_dPartOffsetSide2 As Double
Public m_dPartOffsetSide3 As Double
Public m_dPartOffsetSide4 As Double
Public m_ocPROCESSINGQUALITY As New ObservableCollection(Of Object)({New IdNameStruct(ProcessingQuality.AUTOMATIC, EgtMsg(61658)),
New IdNameStruct(ProcessingQuality.VISIBLE, EgtMsg(61659)),
New IdNameStruct(ProcessingQuality.FAST, EgtMsg(61660))})
Public ReadOnly Property ocPROCESSINGQUALITY As ObservableCollection(Of Object)
Get
Return m_ocPROCESSINGQUALITY
End Get
End Property
Public m_SelPROCESSINGQUALITY As Integer
Public Property SelPROCESSINGQUALITY As Integer
Get
Return m_SelPROCESSINGQUALITY
End Get
Set(value As Integer)
m_SelPROCESSINGQUALITY = value
End Set
End Property
Public m_ocRECESS As New ObservableCollection(Of Object)({New IdNameStruct(Recess.AUTOMATIC, EgtMsg(61658)),
New IdNameStruct(Recess.MANUAL, EgtMsg(61661))})
Public ReadOnly Property ocRECESS As ObservableCollection(Of Object)
Get
Return m_ocRECESS
End Get
End Property
Public m_SelRECESS As Integer
Public Property SelRECESS As Integer
Get
Return m_SelRECESS
End Get
Set(value As Integer)
m_SelRECESS = value
End Set
End Property
Public m_ocSTOREYTYPE As New ObservableCollection(Of Object)({New IdNameStruct(StoreyType.CEILING, EgtMsg(61662)),
New IdNameStruct(StoreyType.ROOF, EgtMsg(61663)),
New IdNameStruct(StoreyType.WALL, EgtMsg(61664))})
Public ReadOnly Property ocSTOREYTYPE As ObservableCollection(Of Object)
Get
Return m_ocSTOREYTYPE
End Get
End Property
Public m_SelSTOREYTYPE As Integer
Public Property SelSTOREYTYPE As Integer
Get
Return m_SelSTOREYTYPE
End Get
Set(value As Integer)
m_SelSTOREYTYPE = value
End Set
End Property
Public m_sELEMENTNUM As String
Public Property sELEMENTNUM As String
Get
Return m_sELEMENTNUM
End Get
Set(value As String)
m_sELEMENTNUM = value
End Set
End Property
Public m_nLAYER As Integer
Public Property nLAYER As Integer
Get
Return m_nLAYER
End Get
Set(value As Integer)
m_nLAYER = value
End Set
End Property
Public m_sMODULENUM As String
Public Property sMODULENUM As String
Get
Return m_sMODULENUM
End Get
Set(value As String)
m_sMODULENUM = value
End Set
End Property
Public m_sCOMMENT As String
Public Property sCOMMENT As String
Get
Return m_sCOMMENT
End Get
Set(value As String)
m_sCOMMENT = value
End Set
End Property
Public m_refGrainDir As Vector3d
Public Property refGrainDir As Vector3d
Get
Return m_refGrainDir
End Get
Set(value As Vector3d)
m_refGrainDir = value
End Set
End Property
Public m_bGRAINDIRALIGN As Boolean
Public Property bGRAINDIRALIGN As Boolean
Get
Return m_bGRAINDIRALIGN
End Get
Set(value As Boolean)
m_bGRAINDIRALIGN = value
End Set
End Property
Public m_ocREFSIDE As New ObservableCollection(Of Integer)({1, 2, 3, 4})
Public ReadOnly Property ocREFSIDE As ObservableCollection(Of Integer)
Get
Return m_ocREFSIDE
End Get
End Property
Public m_SelREFSIDE As Integer
Public Property SelREFSIDE As Integer
Get
Return m_SelREFSIDE
End Get
Set(value As Integer)
m_SelREFSIDE = value
End Set
End Property
Public m_bREFSIDEALIGN As Boolean
Public Property bREFSIDEALIGN As Boolean
Get
Return m_bREFSIDEALIGN
End Get
Set(value As Boolean)
m_bREFSIDEALIGN = value
End Set
End Property
Public m_ocALIGNLOCATION As New ObservableCollection(Of Object)({New IdNameStruct(AlignmentLocation.INACTIV, EgtMsg(61665)),
New IdNameStruct(AlignmentLocation.BR, EgtMsg(61666)),
New IdNameStruct(AlignmentLocation.TR, EgtMsg(61667)),
New IdNameStruct(AlignmentLocation.BA, EgtMsg(61668)),
New IdNameStruct(AlignmentLocation.TA, EgtMsg(61669)),
New IdNameStruct(AlignmentLocation.HC, EgtMsg(61670)),
New IdNameStruct(AlignmentLocation.VC, EgtMsg(61671)),
New IdNameStruct(AlignmentLocation.AC, EgtMsg(61672))})
Public ReadOnly Property ocALIGNLOCATION As ObservableCollection(Of Object)
Get
Return m_ocALIGNLOCATION
End Get
End Property
Public m_SelALIGNLOCATION As Integer
Public Property SelALIGNLOCATION As Integer
Get
Return m_SelALIGNLOCATION
End Get
Set(value As Integer)
m_SelALIGNLOCATION = value
End Set
End Property
Public m_ocALIGNENDTYPE As New ObservableCollection(Of Object)({New IdNameStruct(AlignmentEndtype.R, EgtMsg(61673)),
New IdNameStruct(AlignmentEndtype.A, EgtMsg(61674)),
New IdNameStruct(AlignmentEndtype.D, EgtMsg(61675))})
Public ReadOnly Property ocALIGNENDTYPE As ObservableCollection(Of Object)
Get
Return m_ocALIGNENDTYPE
End Get
End Property
Public m_SelALIGNENDTYPE As Integer
Public Property SelALIGNENDTYPE As Integer
Get
Return m_SelALIGNENDTYPE
End Get
Set(value As Integer)
m_SelALIGNENDTYPE = value
End Set
End Property
Public m_ocMATERIALTYPEGRP As New ObservableCollection(Of Object)({New IdNameStruct(MaterialType.INACTIV, EgtMsg(61665)),
New IdNameStruct(MaterialType.BA, EgtMsg(61676)),
New IdNameStruct(MaterialType.CL, EgtMsg(61677)),
New IdNameStruct(MaterialType.MT, EgtMsg(61678)),
New IdNameStruct(MaterialType.ME_, EgtMsg(61679)),
New IdNameStruct(MaterialType.GB, EgtMsg(61680)),
New IdNameStruct(MaterialType.GF, EgtMsg(61681)),
New IdNameStruct(MaterialType.IN_, EgtMsg(61682)),
New IdNameStruct(MaterialType.SH, EgtMsg(61683)),
New IdNameStruct(MaterialType.FB, EgtMsg(61684)),
New IdNameStruct(MaterialType.PB, EgtMsg(61685)),
New IdNameStruct(MaterialType.PL, EgtMsg(61686))})
Public ReadOnly Property ocMATERIALTYPEGRP As ObservableCollection(Of Object)
Get
Return m_ocMATERIALTYPEGRP
End Get
End Property
Public m_SelMATERIALTYPEGRP As Integer
Public Property SelMATERIALTYPEGRP As Integer
Get
Return m_SelMATERIALTYPEGRP
End Get
Set(value As Integer)
m_SelMATERIALTYPEGRP = value
End Set
End Property
Public m_sMATERIALTYPESPEC As String
Public Property sMATERIALTYPESPEC As String
Get
Return m_sMATERIALTYPESPEC
End Get
Set(value As String)
m_sMATERIALTYPESPEC = value
End Set
End Property
#End Region ' Parametri pezzo
Public m_nCNT As Integer
Public Property nCNT As Integer
Get
Return m_nCNT
End Get
Set(value As Integer)
m_nCNT = value
End Set
End Property
Private m_nINVERTED As Integer
Public Property nINVERTED As Integer
Get
Return m_nINVERTED
End Get
Set(value As Integer)
m_nINVERTED = value
End Set
End Property
Private m_nROTATED As Integer
Public Property nROTATED As Integer
Get
Return m_nROTATED
End Get
Set(value As Integer)
m_nROTATED = value
End Set
End Property
Private m_nCALC_ERR As Integer
Public Property nCALC_ERR As Integer
Get
Return m_nCALC_ERR
End Get
Set(value As Integer)
m_nCALC_ERR = value
End Set
End Property
Private m_nCALC_FALL As Integer
Public Property nCALC_FALL As Integer
Get
Return m_nCALC_FALL
End Get
Set(value As Integer)
m_nCALC_FALL = value
End Set
End Property
Private m_sCALC_MSG As String
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
End Get
Set(value As String)
m_sCALC_MSG = value
End Set
End Property
Public m_nCALC_ROT As Integer
Public Property nCALC_ROT As Integer
Get
Return m_nCALC_ROT
End Get
Set(value As Integer)
m_nCALC_ROT = value
End Set
End Property
Public m_nCALC_TIME As Integer
Public Property nCALC_TIME As Integer
Get
Return m_nCALC_TIME
End Get
Set(value As Integer)
m_nCALC_TIME = value
End Set
End Property
Public m_nGlobalState As CalcStates = -1
Public Property nGlobalState As CalcStates
Get
Return m_nGlobalState
End Get
Set(value As CalcStates)
m_nGlobalState = value
End Set
End Property
Public m_nState As CalcStates = -1
Public Property nState As CalcStates
Get
Return m_nState
End Get
Set(value As CalcStates)
m_nState = value
End Set
End Property
' lista delle feature del pezzo
Public m_BTLFeatureMList As List(Of BTLFeatureM)
Public Property BTLFeatureMList As List(Of BTLFeatureM)
Get
Return m_BTLFeatureMList
End Get
Set(value As List(Of BTLFeatureM))
m_BTLFeatureMList = value
End Set
End Property
#Region "CONSTRUCTOR"
Protected Sub New()
End Sub
Public Shared Function CreateNewBTLPart() As BTLPartM
Return New BTLPartM
End Function
Public Shared Function CreateBTLPart(nPartId As Integer) As BTLPartM
Dim NewBTLPart As New BTLPartM
NewBTLPart.m_nPartId = nPartId
' leggo info pezzo
Dim sValArray() As String
Dim sValue As String = String.Empty
Dim nValue As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PDN, NewBTLPart.nPDN)
Dim nDO As Integer = 1
If EgtGetInfo(nPartId, BTL_PRT_DO, nDO) Then
NewBTLPart.m_bDO = (nDO <> 0)
Else
NewBTLPart.m_bDO = True
End If
EgtGetInfo(nPartId, BTL_PRT_NAM, NewBTLPart.m_sNAM)
EgtGetInfo(nPartId, BTL_PRT_L, NewBTLPart.m_dL)
EgtGetInfo(nPartId, BTL_PRT_W, NewBTLPart.m_dW)
EgtGetInfo(nPartId, BTL_PRT_H, NewBTLPart.m_dH)
EgtGetInfo(nPartId, BTL_PRT_CNT, NewBTLPart.m_nCNT)
EgtGetInfo(nPartId, BTL_PRT_ASSEMBLYNUM, NewBTLPart.m_sASSEMBLYNUM)
EgtGetInfo(nPartId, BTL_PRT_ORDERNUM, NewBTLPart.m_nORDERNUM)
EgtGetInfo(nPartId, BTL_PRT_DESIGNATION, NewBTLPart.m_sDESIGN)
EgtGetInfo(nPartId, BTL_PRT_ANNOTATION, NewBTLPart.m_sANNOT)
EgtGetInfo(nPartId, BTL_PRT_STOREY, NewBTLPart.m_sSTOREY)
EgtGetInfo(nPartId, BTL_PRT_GROUP, NewBTLPart.m_sGROUP)
EgtGetInfo(nPartId, BTL_PRT_PACKAGE, NewBTLPart.m_sPACKAGE)
EgtGetInfo(nPartId, BTL_PRT_TIMBERGRADE, NewBTLPart.m_sTIMBERGRADE)
EgtGetInfo(nPartId, BTL_PRT_QUALITYGRADE, NewBTLPart.m_sQUALITYGRADE)
EgtGetInfo(nPartId, BTL_PRT_COLOUR, sValue)
NewBTLPart.m_colCOLOR.FromString(sValue)
EgtGetInfo(nPartId, BTL_PRT_PLANINGLENGTH, NewBTLPart.m_dPLANINGLEN)
EgtGetInfo(nPartId, BTL_PRT_STARTOFFSET, NewBTLPart.m_dSTARTOFFSET)
EgtGetInfo(nPartId, BTL_PRT_ENDOFFSET, NewBTLPart.m_dENDOFFSET)
Dim ind As Integer = 1
While EgtGetInfo(nPartId, BTL_PRT_UID & ind, nValue)
NewBTLPart.ocUID.Add(nValue)
EgtGetInfo(nPartId, BTL_PRT_TRANSFORMATION & ind, sValue)
NewBTLPart.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)
NewBTLPart.m_refTransf.ChangeOrigin(ptOri)
NewBTLPart.m_refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY)
End If
NewBTLPart.refTransfList.Add(NewBTLPart.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), NewBTLPart.m_dCamberLen1)
StringToLen(sValArray(5), NewBTLPart.m_dCamberLen2)
StringToLen(sValArray(7), NewBTLPart.m_dCamberLen3)
StringToLen(sValArray(9), NewBTLPart.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))
NewBTLPart.m_SelCAMBERSIDE = NewBTLPart.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), NewBTLPart.m_dPartOffsetSide1)
StringToLen(sValArray(5), NewBTLPart.m_dPartOffsetSide2)
StringToLen(sValArray(7), NewBTLPart.m_dPartOffsetSide3)
StringToLen(sValArray(9), NewBTLPart.m_dPartOffsetSide4)
End If
pFrom = sValue.IndexOf("P04: ") + "P04: ".Length
pTo = sValue.LastIndexOf(" P11")
If pTo >= 0 Then
NewBTLPart.m_SelREFSIDEFIXCLAMP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue.Substring(pFrom, pTo - pFrom),
NewBTLPart.ocREFSIDEFIXCLAMP),
NewBTLPart.ocREFSIDEFIXCLAMP)
End If
EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
NewBTLPart.m_SelPROCESSINGQUALITY = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLPart.ocPROCESSINGQUALITY),
NewBTLPart.ocPROCESSINGQUALITY)
EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
NewBTLPart.m_SelRECESS = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLPart.ocRECESS), NewBTLPart.ocRECESS)
EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
NewBTLPart.m_SelSTOREYTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLPart.ocSTOREYTYPE),
NewBTLPart.ocSTOREYTYPE)
EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, NewBTLPart.m_sELEMENTNUM)
EgtGetInfo(nPartId, BTL_PRT_LAYER, NewBTLPart.m_nLAYER)
EgtGetInfo(nPartId, BTL_PRT_MODULENUM, NewBTLPart.m_sMODULENUM)
'EgtGetInfo(nPartId, BTL_PRT_USERATTRIBUTE, m_sUSERATTRIBUTE)
EgtGetInfo(nPartId, BTL_PRT_COMMENT, NewBTLPart.m_sCOMMENT)
EgtGetInfo(nPartId, BTL_PRT_GRAINDIR, sValue)
NewBTLPart.m_refGrainDir = New Vector3d
sValArray = sValue.Split(New String() {",", ";"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 4 Then
StringToDouble(sValArray(0), NewBTLPart.m_refGrainDir.x)
StringToDouble(sValArray(1), NewBTLPart.m_refGrainDir.y)
StringToDouble(sValArray(2), NewBTLPart.m_refGrainDir.z)
NewBTLPart.m_bGRAINDIRALIGN = (CInt(sValArray(3)) = 1)
End If
EgtGetInfo(nPartId, BTL_PRT_REFSIDE, sValue)
sValArray = sValue.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 2 Then
NewBTLPart.m_SelREFSIDE = NewBTLPart.ocREFSIDE.IndexOf(CInt(sValArray(0)))
NewBTLPart.m_bREFSIDEALIGN = (CInt(sValArray(1)) = 1)
End If
EgtGetInfo(nPartId, BTL_PRT_ALIGNMENT, sValue)
sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 2 Then
NewBTLPart.m_SelALIGNLOCATION = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), NewBTLPart.ocALIGNLOCATION),
NewBTLPart.ocALIGNLOCATION)
NewBTLPart.m_SelALIGNENDTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(1).Trim(),
NewBTLPart.ocALIGNENDTYPE),
NewBTLPart.ocALIGNENDTYPE)
End If
EgtGetInfo(nPartId, BTL_PRT_MATERIALTYPE, sValue)
sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 1 Then
NewBTLPart.m_SelMATERIALTYPEGRP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0),
NewBTLPart.ocMATERIALTYPEGRP),
NewBTLPart.ocMATERIALTYPEGRP)
If sValArray.Count() >= 2 Then NewBTLPart.m_sMATERIALTYPESPEC = sValArray(1).Trim()
End If
If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, NewBTLPart.m_nROTATED) Then
NewBTLPart.m_nROTATED = 0
End If
If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, NewBTLPart.m_nINVERTED) Then
NewBTLPart.m_nINVERTED = 0
End If
If EgtGetInfo(nPartId, BTL_PRT_MATERIAL, NewBTLPart.m_sMATERIAL) Then
End If
' Leggo outline e features
NewBTLPart.m_BTLFeatureMList = LoadFeatures(nPartId, NewBTLPart)
' 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, nFall)
EgtGetInfo(nPartId, ITG_PROJ_MSG, sMsg)
If Not bCalc Then
NewBTLPart.nState = CalcStates.NOTCALCULATED
NewBTLPart.nCALC_ERR = -1
NewBTLPart.nCALC_ROT = 0
NewBTLPart.nCALC_FALL = 0
NewBTLPart.sCALC_MSG = ""
Else
NewBTLPart.nCALC_ERR = nErr
NewBTLPart.nCALC_ROT = nRot
NewBTLPart.nCALC_FALL = nFall
NewBTLPart.sCALC_MSG = sMsg
If nErr = 0 Then
NewBTLPart.nState = CalcStates.OK
ElseIf nErr > 1 Then
NewBTLPart.nState = CalcStates.ERROR_
ElseIf nErr < 1 Then
NewBTLPart.nState = CalcStates.NOTCALCULATED
End If
End If
Return NewBTLPart
End Function
Private Shared Function LoadFeatures(nPartId As Integer, NewBTLPart As BTLPartM) As List(Of BTLFeatureM)
Dim TempList As New List(Of BTLFeatureM)
' 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
TempList.Add(BTLFeatureM.CreateBTLFeature(NewBTLPart, 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
TempList.Add(BTLFeatureM.CreateBTLFeature(NewBTLPart, nFeatureId))
End If
nFeatureId = EgtGetNext(nFeatureId)
End While
Return TempList
End Function
'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
'Sub New(ParentStructure As BTLStructure, nPartId As Integer)
' m_BTLStructureM = ParentStructure
' Me.SetPartId = nPartId
' m_FeatureList = New ObservableCollection(Of BTLFeature)
'End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Event BTLFeatureAdded As EventHandler(Of BTLFeatureAddedEventArgs)
Public Sub AddBTLFeature(BTLFeatureM As BTLFeatureM)
If IsNothing(BTLFeatureM) Then Return
If Not m_BTLFeatureMList.Contains(BTLFeatureM) Then
m_BTLFeatureMList.Add(BTLFeatureM)
RaiseEvent BTLFeatureAdded(Me, New BTLFeatureAddedEventArgs(BTLFeatureM))
End If
End Sub
Public Function GetBTLFeatures() As List(Of BTLFeatureM)
Return New List(Of BTLFeatureM)(m_BTLFeatureMList)
End Function
Public Function NewProcId() As Integer
Dim nMaxProcId As Integer = 0
If Not IsNothing(BTLFeatureMList) AndAlso BTLFeatureMList.Count > 0 Then
nMaxProcId = BTLFeatureMList.Max(Function(x) x.nPRID)
End If
Return nMaxProcId + 1
End Function
#End Region ' METHODS
End Class