3886 lines
179 KiB
VB.net
3886 lines
179 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports EgtUILib
|
|
Imports System.Text.RegularExpressions
|
|
|
|
Public Class Assembly
|
|
Implements INotifyPropertyChanged
|
|
|
|
' questa variabile se settata a vero da la possibilità di costruire un riferimento sui Jamb
|
|
Friend Shared BuiltReffCompo As Boolean = False
|
|
Public bIsNewAssembly As Boolean = False
|
|
Public Shared FirstReadingWeight As Boolean = False
|
|
|
|
Public Shared Refreshing As Boolean = True
|
|
|
|
Public bOldVersion As Boolean = False
|
|
|
|
' è usata per abilitare la TextBox associata all'OverlapLock
|
|
Private m_OneDoorProperty As Boolean = True
|
|
Public Property OneDoorProperty As Boolean
|
|
Get
|
|
Return m_OneDoorProperty
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_OneDoorProperty = value
|
|
NotifyPropertyChanged("OneDoorProperty")
|
|
End Set
|
|
End Property
|
|
|
|
' tutte queste proprietà interagiscono direttamente con le dimensioni del TELAIO
|
|
' per questo motivo la funzione set può ospitare la chiamata ad una funzione che modifica le dimensioni della porta
|
|
|
|
Private m_AssemblyUnit As String = ConstGen.VAL_INCHES
|
|
Public ReadOnly Property AssemblyUnit As String
|
|
Get
|
|
Return m_AssemblyUnit
|
|
End Get
|
|
End Property
|
|
|
|
#Region "GENERAL"
|
|
|
|
#Region "Light Up/Bottom"
|
|
|
|
Private m_LightUp As String
|
|
Public Property LightUp As String
|
|
Get
|
|
Return m_LightUp
|
|
End Get
|
|
Set(value As String)
|
|
m_LightUp = value
|
|
NotifyPropertyChanged("LightUp")
|
|
' viene ricalcolata la dimensione dell'anta
|
|
HeightDoor()
|
|
' viene ricalcolata l'altezza della porta e dei jamb laterali a partire dalla dimensione della porta
|
|
HeightJamb()
|
|
' esegue il riposizionamento delle componeti sul telaio
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
' questo metodo è utilizzato per caricare e aggiornare il valore m_lightUp senza eseguire le operazioni del Set
|
|
Public Sub SetLightUp(sLightUp As String)
|
|
m_LightUp = sLightUp
|
|
NotifyPropertyChanged("LightUp")
|
|
End Sub
|
|
|
|
Private m_LightBottom As String
|
|
Public Property LightBottom As String
|
|
Get
|
|
Return m_LightBottom
|
|
End Get
|
|
Set(value As String)
|
|
m_LightBottom = value
|
|
' viene ricalcolata la dimensione dell'anta
|
|
HeightDoor()
|
|
' viene ricalcolata l'altezza dei jamb laterali a partire dalla dimensione della porta
|
|
HeightJamb()
|
|
' esegue il riposizionamento delle componeti sul telaio
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetLightBottom(sLightBottom As String)
|
|
m_LightBottom = sLightBottom
|
|
NotifyPropertyChanged("LightBottom")
|
|
End Sub
|
|
|
|
#End Region ' Light Up/Bottom
|
|
|
|
#Region "Light Hinge/Lock"
|
|
|
|
Private m_LightHinge As String
|
|
Public Property LightHinge As String
|
|
Get
|
|
Return m_LightHinge
|
|
End Get
|
|
Set(value As String)
|
|
m_LightHinge = value
|
|
' viene ricalcolata la larghezza dei jamb orizzonati (le dimensioni della porta devono esistere)
|
|
TopBottomWidth()
|
|
' esegue il riposizionamento delle componeti sul telaio
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetLightHinge(sSetLightHinge As String)
|
|
m_LightHinge = sSetLightHinge
|
|
NotifyPropertyChanged("LightHinge")
|
|
End Sub
|
|
|
|
Private m_LightLock As String
|
|
Public Property LightLock As String
|
|
Get
|
|
Return m_LightLock
|
|
End Get
|
|
Set(value As String)
|
|
m_LightLock = value
|
|
' viene ricalcolata la larghezza dei jamb orizzonati (le dimensioni della porta devono esistere)
|
|
TopBottomWidth()
|
|
' esegue il riposizionamento delle componeti sul telaio
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetLightLock(sLightLock As String)
|
|
m_LightLock = sLightLock
|
|
NotifyPropertyChanged("LightLock")
|
|
End Sub
|
|
|
|
#End Region ' Light Hinge/Lock
|
|
|
|
#Region "ThicknessHead"
|
|
|
|
Private m_ThicknessHead As String
|
|
Public Property ThicknessHead As String
|
|
Get
|
|
Return m_ThicknessHead
|
|
End Get
|
|
Set(value As String)
|
|
m_ThicknessHead = value
|
|
NotifyPropertyChanged("ThicknessHead")
|
|
' viene ricalcolata l'altezza del JambTop
|
|
HeightJambTop()
|
|
' viene ricalcolata l'altezza della porta e dei jamb laterali a partire dalla dimensione della porta
|
|
' per il fatto che anche i jamb lateriali devono allungarsi
|
|
HeightJamb()
|
|
' viene ricalcolata la dimsione dei rabbet sui jamb laterali (per ospitare la nuova dimansione del JambTop)
|
|
TopRabbetJamb()
|
|
' esegue il riposizionamento delle componeti sul telaio
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetThicknessHead(sThicknessHead As String)
|
|
m_ThicknessHead = sThicknessHead
|
|
NotifyPropertyChanged("ThicknessHead")
|
|
End Sub
|
|
|
|
#End Region ' ThicknessHead
|
|
|
|
#Region "Thickness/Depth Bottom"
|
|
|
|
Private m_ThicknessBottom As String
|
|
Public Property ThicknessBottom As String
|
|
Get
|
|
Return m_ThicknessBottom
|
|
End Get
|
|
Set(value As String)
|
|
m_ThicknessBottom = value
|
|
NotifyPropertyChanged("ThicknessBottom")
|
|
' viene ricalcolata l'altezza del JambTop
|
|
HeightJambBottom()
|
|
' viene ricalcolata l'altezza della porta e dei jamb laterali a partire dalla dimensione della porta
|
|
' per il fatto che anche i jamb lateriali devono allungarsi
|
|
HeightJamb()
|
|
' viene ricalcolata la dimsione dei rabbet sui jamb laterali (per ospitare la nuova dimansione del JambTop)
|
|
BottomRabbetJamb()
|
|
' esegue il riposizionamento delle componeti sul telaio
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetThicknessBottom(sThicknessBottom As String)
|
|
m_ThicknessBottom = sThicknessBottom
|
|
NotifyPropertyChanged("ThicknessBottom")
|
|
End Sub
|
|
|
|
Private m_DepthBottom As String
|
|
Public Property DepthBottom As String
|
|
Get
|
|
Return m_DepthBottom
|
|
End Get
|
|
Set(value As String)
|
|
m_DepthBottom = value
|
|
NotifyPropertyChanged("DepthBottom")
|
|
' viene ricalcolata la profondità del JambBottom
|
|
SetThicKnessJamb()
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetDepthBottom(sDepthBottom As String)
|
|
m_DepthBottom = sDepthBottom
|
|
NotifyPropertyChanged("DepthBottom")
|
|
End Sub
|
|
|
|
#End Region ' Thickness Depth Bottom
|
|
|
|
#Region "Overlap Hinge/Lock/Top/DeltaT"
|
|
|
|
Private m_OverlapHinge As String
|
|
Public Property OverlapHinge As String
|
|
Get
|
|
Return m_OverlapHinge
|
|
End Get
|
|
Set(value As String)
|
|
m_OverlapHinge = value
|
|
' modifico le dimensioni dei Jambs
|
|
'DoorVisibilityNew()
|
|
' deve essere ricalcolata la dimensione del Top e del Bottom del telaio
|
|
TopBottomWidth()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'SetWidthJamb()
|
|
' viene ricalcolato il valore dei rabbet (sui Jamb laterali)
|
|
TopRabbetJamb()
|
|
HingeRabbetJamb()
|
|
BottomRabbetJamb()
|
|
UpDateAllCompo()
|
|
End Set
|
|
End Property
|
|
Public Sub SetOverlapHinge(sOverlapHinge As String)
|
|
m_OverlapHinge = sOverlapHinge
|
|
NotifyPropertyChanged("OverlapHinge")
|
|
End Sub
|
|
|
|
Private m_OverlapLock As String
|
|
Public Property OverlapLock As String
|
|
Get
|
|
Return m_OverlapLock
|
|
End Get
|
|
Set(value As String)
|
|
m_OverlapLock = value
|
|
' modifico le dimensioni dei Jambs
|
|
'DoorVisibilityNew()
|
|
TopBottomWidth()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'SetWidthJamb()
|
|
TopRabbetJamb()
|
|
HingeRabbetJamb()
|
|
BottomRabbetJamb()
|
|
UpDateAllCompo()
|
|
End Set
|
|
End Property
|
|
Public Sub SetOverlapLock(sOverlapLock As String)
|
|
m_OverlapLock = sOverlapLock
|
|
NotifyPropertyChanged("OverlapLock")
|
|
End Sub
|
|
|
|
Private m_OverlapTop As String
|
|
Public Property OverlapTop As String
|
|
Get
|
|
Return m_OverlapTop
|
|
End Get
|
|
Set(value As String)
|
|
m_OverlapTop = value
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
HeightJamb()
|
|
SetWidthJamb()
|
|
HingeRabbetJamb()
|
|
'BottomRabbetJamb()
|
|
UpDateAllCompo()
|
|
End Set
|
|
End Property
|
|
Public Sub SetOverlapTop(sOverlapTop As String)
|
|
m_OverlapTop = sOverlapTop
|
|
NotifyPropertyChanged("OverlapTop")
|
|
End Sub
|
|
|
|
Private m_OverlapBottom As String
|
|
Public Property OverlapBottom As String
|
|
Get
|
|
Return m_OverlapBottom
|
|
End Get
|
|
Set(value As String)
|
|
m_OverlapBottom = value
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
HeightJamb()
|
|
SetWidthJamb()
|
|
UpDateAllCompo()
|
|
End Set
|
|
End Property
|
|
Public Sub SetOverlapBottom(sOverlapBottom As String)
|
|
m_OverlapBottom = sOverlapBottom
|
|
NotifyPropertyChanged("OverlapBottom")
|
|
End Sub
|
|
|
|
Private m_DeltaThickness As String
|
|
Public Property DeltaThickness As String
|
|
Get
|
|
Return m_DeltaThickness
|
|
End Get
|
|
Set(value As String)
|
|
m_DeltaThickness = value
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
HingeRabbetJamb()
|
|
BottomRabbetJamb()
|
|
UpDateAllCompo()
|
|
End Set
|
|
End Property
|
|
Public Sub SetDeltaThickness(sDeltaThickness As String)
|
|
m_DeltaThickness = sDeltaThickness
|
|
NotifyPropertyChanged("DeltaThickness")
|
|
End Sub
|
|
#End Region ' Overlap Hinge/Lock/Top/DeltaT
|
|
|
|
#Region "Jamb Thckness/Width"
|
|
|
|
Private m_Thickness As String
|
|
Public Property Thickness As String
|
|
Get
|
|
Return m_Thickness
|
|
End Get
|
|
Set(value As String)
|
|
m_Thickness = value
|
|
SetThicKnessJamb()
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetThickness(sThickness As String)
|
|
m_Thickness = sThickness
|
|
NotifyPropertyChanged("Thickness")
|
|
End Sub
|
|
|
|
Private m_Width As String
|
|
Public Property Width As String
|
|
Get
|
|
Return m_Width
|
|
End Get
|
|
Set(value As String)
|
|
m_Width = value
|
|
HeightJamb()
|
|
SetWidthJamb()
|
|
UpDateAllCompo()
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End Set
|
|
End Property
|
|
Public Sub SetWidth(sWidth As String)
|
|
m_Width = sWidth
|
|
NotifyPropertyChanged("Width")
|
|
End Sub
|
|
#End Region ' Jamb Thickness/Width
|
|
|
|
#Region "EdgeType/Machining"
|
|
|
|
Friend Shared m_FrameEdgeTypeList As New ObservableCollection(Of EdgeType)
|
|
Public ReadOnly Property EdgeTypeList As ObservableCollection(Of EdgeType)
|
|
Get
|
|
Return m_FrameEdgeTypeList
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property DispositionList As ObservableCollection(Of EdgeType)
|
|
Get
|
|
Return Part.m_DispositionList
|
|
End Get
|
|
End Property
|
|
|
|
' elemento selezionato dalla lista delle disposizinioni
|
|
Private m_DispositionItem As EdgeType
|
|
Public Property DispositionItem As EdgeType
|
|
Get
|
|
Return m_DispositionItem
|
|
End Get
|
|
Set(value As EdgeType)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.DispositionItem = value
|
|
Next
|
|
m_DispositionItem = value
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
NotifyPropertyChanged("DispositionItem")
|
|
End Set
|
|
End Property
|
|
Public Sub SetDispositionItem(ObjDisposition As EdgeType)
|
|
If IsNothing(m_DispositionItem) Then
|
|
m_DispositionItem = ObjDisposition
|
|
End If
|
|
NotifyPropertyChanged("DispositionItem")
|
|
End Sub
|
|
|
|
Private m_LockEdgeType As New EdgeType("", Visibility.Visible)
|
|
Public Property LockEdgeType As EdgeType
|
|
Get
|
|
If m_LockEdgeType.IsActive = Visibility.Collapsed Then
|
|
m_LockEdgeType = EdgeTypeList(0)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End If
|
|
Return m_LockEdgeType
|
|
End Get
|
|
Set(value As EdgeType)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.LockEdgeType = value
|
|
Next
|
|
m_LockEdgeType = value
|
|
NotifyPropertyChanged("LockEdgeType")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.SetLockEdgeType(value)
|
|
'm_RightJamb.SetLockEdgeType(value)
|
|
'm_TopJamb.SetLockEdgeType(value)
|
|
'm_BottomJamb.SetLockEdgeType(value)
|
|
End Set
|
|
End Property
|
|
Public Sub SetLockEdgeType(sLockEdgeType As EdgeType)
|
|
m_LockEdgeType = sLockEdgeType
|
|
NotifyPropertyChanged("LockEdgeType")
|
|
End Sub
|
|
|
|
Private m_HingeEdgeType As New EdgeType("", Visibility.Visible)
|
|
Public Property HingeEdgeType As EdgeType
|
|
Get
|
|
If m_HingeEdgeType.IsActive = Visibility.Collapsed Then
|
|
m_HingeEdgeType = EdgeTypeList(0)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End If
|
|
Return m_HingeEdgeType
|
|
End Get
|
|
Set(value As EdgeType)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.HingeEdgeType = value
|
|
Next
|
|
m_HingeEdgeType = value
|
|
NotifyPropertyChanged("HingeEdgeType")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.SetHingeEdgeType(value)
|
|
'm_RightJamb.SetHingeEdgeType(value)
|
|
'm_TopJamb.SetHingeEdgeType(value)
|
|
'm_BottomJamb.SetHingeEdgeType(value)
|
|
End Set
|
|
End Property
|
|
Public Sub SetHingeEdgeType(sHingeEdgeType As EdgeType)
|
|
m_HingeEdgeType = sHingeEdgeType
|
|
NotifyPropertyChanged("HingeEdgeType")
|
|
End Sub
|
|
|
|
Private m_TopType As New EdgeType("", Visibility.Visible)
|
|
Public Property TopType As EdgeType
|
|
Get
|
|
If m_TopType.IsActive = Visibility.Collapsed Then
|
|
m_TopType = EdgeTypeList(0)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End If
|
|
Return m_TopType
|
|
End Get
|
|
Set(value As EdgeType)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.TopType = value
|
|
Next
|
|
m_TopType = value
|
|
NotifyPropertyChanged("TopType")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.SetTopType(value)
|
|
'm_RightJamb.SetTopType(value)
|
|
'm_TopJamb.SetTopType(value)
|
|
'm_BottomJamb.SetTopType(value)
|
|
End Set
|
|
End Property
|
|
Public Sub SetTopType(sTopType As EdgeType)
|
|
m_TopType = sTopType
|
|
NotifyPropertyChanged("TopType")
|
|
End Sub
|
|
|
|
Private m_BottomType As New EdgeType("", Visibility.Visible)
|
|
Public Property BottomType As EdgeType
|
|
Get
|
|
If m_BottomType.IsActive = Visibility.Collapsed Then
|
|
m_BottomType = EdgeTypeList(0)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
End If
|
|
Return m_BottomType
|
|
End Get
|
|
Set(value As EdgeType)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.BottomType = value
|
|
Next
|
|
m_BottomType = value
|
|
NotifyPropertyChanged("BottomType")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.SetBottomType(value)
|
|
'm_RightJamb.SetBottomType(value)
|
|
'm_TopJamb.SetBottomType(value)
|
|
'm_BottomJamb.SetBottomType(value)
|
|
End Set
|
|
End Property
|
|
Public Sub SetBottomType(sBottomType As EdgeType)
|
|
m_BottomType = sBottomType
|
|
NotifyPropertyChanged("BottomType")
|
|
End Sub
|
|
|
|
Private m_TopMachining As Boolean
|
|
Public Property TopMachining As Boolean
|
|
Get
|
|
Return m_TopMachining
|
|
End Get
|
|
Set(value As Boolean)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.TopMachining = value
|
|
Next
|
|
m_TopMachining = value
|
|
NotifyPropertyChanged("TopMachining")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.TopMachining = m_TopMachining
|
|
'm_RightJamb.TopMachining = m_TopMachining
|
|
'm_TopJamb.TopMachining = m_TopMachining
|
|
'm_BottomJamb.TopMachining = m_TopMachining
|
|
End Set
|
|
End Property
|
|
Public Sub SetTopMachining(sTopMachining As Boolean)
|
|
m_TopMachining = sTopMachining
|
|
NotifyPropertyChanged("TopMachining")
|
|
End Sub
|
|
|
|
Private m_LockEdgeMachining As Boolean
|
|
Public Property LockEdgeMachining As Boolean
|
|
Get
|
|
Return m_LockEdgeMachining
|
|
End Get
|
|
Set(value As Boolean)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.LockEdgeMachining = value
|
|
Next
|
|
m_LockEdgeMachining = value
|
|
NotifyPropertyChanged("LockEdgeMachining")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.LockEdgeMachining = m_LockEdgeMachining
|
|
'm_RightJamb.LockEdgeMachining = m_LockEdgeMachining
|
|
'm_TopJamb.LockEdgeMachining = m_LockEdgeMachining
|
|
'm_BottomJamb.LockEdgeMachining = m_LockEdgeMachining
|
|
End Set
|
|
End Property
|
|
Public Sub SetLockEdgeMachining(sLockEdgeMachining As Boolean)
|
|
m_LockEdgeMachining = sLockEdgeMachining
|
|
NotifyPropertyChanged("LockEdgeMachining")
|
|
End Sub
|
|
|
|
Private m_HingeEdgeMachining As Boolean
|
|
Public Property HingeEdgeMachining As Boolean
|
|
Get
|
|
Return m_HingeEdgeMachining
|
|
End Get
|
|
Set(value As Boolean)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.HingeEdgeMachining = value
|
|
Next
|
|
m_HingeEdgeMachining = value
|
|
NotifyPropertyChanged("HingeEdgeMachining")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.HingeEdgeMachining = value
|
|
'm_RightJamb.HingeEdgeMachining = value
|
|
'm_TopJamb.HingeEdgeMachining = value
|
|
'm_BottomJamb.HingeEdgeMachining = value
|
|
End Set
|
|
End Property
|
|
Public Sub SetHingeEdgeMachining(sHingeEdgeMachining As Boolean)
|
|
m_HingeEdgeMachining = sHingeEdgeMachining
|
|
NotifyPropertyChanged("HingeEdgeMachining")
|
|
End Sub
|
|
|
|
Private m_BottomMachining As Boolean
|
|
Public Property BottomMachining As Boolean
|
|
Get
|
|
Return m_BottomMachining
|
|
End Get
|
|
Set(value As Boolean)
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.BottomMachining = value
|
|
Next
|
|
m_BottomMachining = value
|
|
NotifyPropertyChanged("BottomMachining")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
'm_LeftJamb.BottomMachining = value
|
|
'm_RightJamb.BottomMachining = value
|
|
'm_TopJamb.BottomMachining = value
|
|
'm_BottomJamb.BottomMachining = value
|
|
End Set
|
|
End Property
|
|
Public Sub SetBottomMachining(sBottomMachining As Boolean)
|
|
m_BottomMachining = sBottomMachining
|
|
NotifyPropertyChanged("BottomMachining")
|
|
End Sub
|
|
|
|
#End Region ' EdgeType
|
|
|
|
#Region "EXTERIOR"
|
|
|
|
Private m_Exterior As Boolean
|
|
Public Property Exterior As Boolean
|
|
Get
|
|
Return m_Exterior
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_Exterior = value
|
|
NotifyPropertyChanged("Exterior")
|
|
SetDimension("JambIsCheked")
|
|
'JambBIsChecked = value
|
|
SetJambBTIsChecked(value)
|
|
NotifyPropertyChanged("JambBIsChecked")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
SetThicKnessJamb()
|
|
'HingeRabbetJamb()
|
|
'BottomRabbetJamb()
|
|
End Set
|
|
End Property
|
|
Public Sub SetExterior(bExterior As Boolean)
|
|
m_Exterior = bExterior
|
|
NotifyPropertyChanged("Exterior")
|
|
End Sub
|
|
|
|
Private m_DeltaBottom As String
|
|
Public Property DeltaBottom As String
|
|
Get
|
|
Return m_DeltaBottom
|
|
End Get
|
|
Set(value As String)
|
|
m_DeltaBottom = value
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
BottomRabbetJamb()
|
|
UpDateAllCompo()
|
|
End Set
|
|
End Property
|
|
Public Sub SetDeltaBottom(sDeltaBottom As String)
|
|
m_DeltaBottom = sDeltaBottom
|
|
NotifyPropertyChanged("DeltaBottom")
|
|
End Sub
|
|
|
|
#End Region ' Exterior
|
|
|
|
#Region "ASSEMBLY DIMENSION"
|
|
|
|
Private m_Dimension As Boolean = OptionModule.m_TotalDimension
|
|
Public Property Dimension As Boolean
|
|
Get
|
|
Return m_Dimension
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_Dimension = value
|
|
NotifyPropertyChanged("Dimension")
|
|
End Set
|
|
End Property
|
|
Public Sub SetDimension(bDimension As Boolean)
|
|
m_Dimension = bDimension
|
|
NotifyPropertyChanged("Dimension")
|
|
End Sub
|
|
|
|
Private m_AssemblyHeight As String
|
|
Public Property AssemblyHeight As String
|
|
Get
|
|
' calcolo la dimensione dell'assemblato
|
|
If Not IsNothing(m_Door1) AndAlso Not m_Dimension Then
|
|
Dim nLU As Double = 0
|
|
Dim nLB As Double = 0
|
|
Dim nTH As Double = 0
|
|
Dim nBH As Double = 0
|
|
Dim nOLB As Double = 0
|
|
Dim nDO_1H As Double = 0
|
|
Dim nOLT As Double = 0
|
|
StringToDouble(LightUp, nLU)
|
|
StringToDouble(LightBottom, nLB)
|
|
StringToDouble(ThicknessHead, nTH)
|
|
StringToDouble(ThicknessBottom, nBH)
|
|
StringToDouble(OverlapBottom, nOLB)
|
|
StringToDouble(m_Door1.Height, nDO_1H)
|
|
StringToDouble(OverlapTop, nOLT)
|
|
m_AssemblyHeight = DoubleToString(nLU + nLB + nTH + nDO_1H - nOLT, 4)
|
|
If Exterior Then
|
|
|
|
m_AssemblyHeight = DoubleToString(nLU + nLB + nTH + nBH + nDO_1H - nOLT - nOLB, 4)
|
|
End If
|
|
End If
|
|
Return m_AssemblyHeight
|
|
End Get
|
|
Set(value As String)
|
|
m_AssemblyHeight = value
|
|
NotifyPropertyChanged("AssemblyHeight")
|
|
SetDimension("Height")
|
|
End Set
|
|
End Property
|
|
Public Sub SetAssemblyHeight(sAssemblyHeight As String)
|
|
m_AssemblyHeight = sAssemblyHeight
|
|
NotifyPropertyChanged("AssemblyHeight")
|
|
End Sub
|
|
|
|
Private m_AssemblyWidth As String
|
|
Public Property AssemblyWidth As String
|
|
Get
|
|
If Not Dimension AndAlso Not IsNothing(Map.refAssemblyManagerVM.ReserchPartDoor("FT_")) AndAlso
|
|
Not IsNothing(Map.refAssemblyManagerVM.ReserchPartDoor("FT_").Door.Width) Then
|
|
Dim nFTW As Double = 0
|
|
Dim nJW As Double = 0
|
|
Dim nOLL As Double
|
|
Dim nOLH As Double
|
|
StringToDouble(Map.refAssemblyManagerVM.ReserchPartDoor("FT_").Door.Width, nFTW)
|
|
StringToDouble(Width, nJW)
|
|
StringToDouble(OverlapLock, nOLL)
|
|
StringToDouble(OverlapHinge, nOLH)
|
|
If DoorNumber = "1" Then
|
|
m_AssemblyWidth = DoubleToString(nFTW + 2 * nJW - nOLL - nOLH, 4)
|
|
Else
|
|
m_AssemblyWidth = DoubleToString(nFTW + 2 * nJW - 2 * nOLH, 4)
|
|
End If
|
|
End If
|
|
Return m_AssemblyWidth
|
|
End Get
|
|
Set(value As String)
|
|
m_AssemblyWidth = value
|
|
SetWidthJamb()
|
|
SetDimension("Width")
|
|
NotifyPropertyChanged("AssemblyWidth")
|
|
End Set
|
|
End Property
|
|
Public Sub SetAssemblyWidth(sAssemblyWidth As String)
|
|
m_AssemblyWidth = sAssemblyWidth
|
|
NotifyPropertyChanged("AssemblyWidth")
|
|
End Sub
|
|
|
|
' questa proprietà è utilizzata per stampare l'altezza della porta nella sezione dei jamb
|
|
Public ReadOnly Property OrigHeightDoor As String
|
|
Get
|
|
If Not IsNothing(m_Door1) Then
|
|
Return m_Door1.Height
|
|
ElseIf Not IsNothing(m_Door2) Then
|
|
Return m_Door2.Height
|
|
End If
|
|
Return "0"
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' Assembly Dimension
|
|
|
|
#Region "OverMaterial"
|
|
|
|
Private m_LockEdgeOverMaterial As String = String.Empty
|
|
Public Property LockEdgeOverMaterial As String
|
|
Get
|
|
Return m_LockEdgeOverMaterial
|
|
End Get
|
|
Set(value As String)
|
|
If String.IsNullOrEmpty(value) Then value = "0"
|
|
Dim dVal As Double
|
|
If StringToDouble(value, dVal) Then
|
|
m_LockEdgeOverMaterial = value
|
|
Else
|
|
MessageBox.Show(EgtMsg(50148), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk)
|
|
End If
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.LockEdgeOverMaterial = value
|
|
Next
|
|
'm_LeftJamb.LockEdgeOverMaterial = value
|
|
'm_RightJamb.LockEdgeOverMaterial = value
|
|
'm_TopJamb.LockEdgeOverMaterial = value
|
|
'm_BottomJamb.LockEdgeOverMaterial = value
|
|
End Set
|
|
End Property
|
|
Public Sub SetLockEdgeOverMaterial(sLockEdgeOverMaterial As String)
|
|
m_LockEdgeOverMaterial = sLockEdgeOverMaterial
|
|
NotifyPropertyChanged("LockEdgeOverMaterial")
|
|
End Sub
|
|
|
|
Private m_HingeEdgeOverMaterial As String = String.Empty
|
|
Public Property HingeEdgeOverMaterial As String
|
|
Get
|
|
Return m_HingeEdgeOverMaterial
|
|
End Get
|
|
Set(value As String)
|
|
If String.IsNullOrEmpty(value) Then value = "0"
|
|
Dim dVal As Double
|
|
If StringToDouble(value, dVal) Then
|
|
m_HingeEdgeOverMaterial = value
|
|
Else
|
|
MessageBox.Show(EgtMsg(50148), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk)
|
|
End If
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.HingeEdgeOverMaterial = value
|
|
Next
|
|
'm_LeftJamb.HingeEdgeOverMaterial = value
|
|
'm_RightJamb.HingeEdgeOverMaterial = value
|
|
'm_TopJamb.HingeEdgeOverMaterial = value
|
|
'm_BottomJamb.HingeEdgeOverMaterial = value
|
|
End Set
|
|
End Property
|
|
Public Sub SetHingeEdgeOverMaterial(sHingeEdgeOverMaterial As String)
|
|
m_HingeEdgeOverMaterial = sHingeEdgeOverMaterial
|
|
NotifyPropertyChanged("HingeEdgeOverMaterial")
|
|
End Sub
|
|
|
|
Private m_TopOverMaterial As String = String.Empty
|
|
Public Property TopOverMaterial As String
|
|
Get
|
|
Return m_TopOverMaterial
|
|
End Get
|
|
Set(value As String)
|
|
If String.IsNullOrEmpty(value) Then value = "0"
|
|
Dim dVal As Double
|
|
If StringToDouble(value, dVal) Then
|
|
m_TopOverMaterial = value
|
|
Else
|
|
MessageBox.Show(EgtMsg(50148), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk)
|
|
End If
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.TopOverMaterial = value
|
|
Next
|
|
'm_LeftJamb.TopOverMaterial = value
|
|
'm_RightJamb.TopOverMaterial = value
|
|
'm_TopJamb.TopOverMaterial = value
|
|
'm_BottomJamb.TopOverMaterial = value
|
|
End Set
|
|
End Property
|
|
Public Sub SetTopOverMaterial(sTopOverMaterial As String)
|
|
m_TopOverMaterial = sTopOverMaterial
|
|
NotifyPropertyChanged("TopOverMaterial")
|
|
End Sub
|
|
|
|
Private m_BottomOverMaterial As String = String.Empty
|
|
Public Property BottomOverMaterial As String
|
|
Get
|
|
Return m_BottomOverMaterial
|
|
End Get
|
|
Set(value As String)
|
|
If String.IsNullOrEmpty(value) Then value = "0"
|
|
Dim dVal As Double
|
|
If StringToDouble(value, dVal) Then
|
|
m_BottomOverMaterial = value
|
|
Else
|
|
MessageBox.Show(EgtMsg(50148), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk)
|
|
End If
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
Dim CurrAssembly As Assembly = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly
|
|
For Each ItemPartDoor In CurrAssembly.ListPartDoor
|
|
If ItemPartDoor.Type.Contains("F") Then ItemPartDoor.Door.BottomOverMaterial = value
|
|
Next
|
|
'm_LeftJamb.BottomOverMaterial = value
|
|
'm_RightJamb.BottomOverMaterial = value
|
|
'm_TopJamb.BottomOverMaterial = value
|
|
'm_BottomJamb.BottomOverMaterial = value
|
|
End Set
|
|
End Property
|
|
Public Sub SetBottomOverMaterial(sBottomOverMaterial As String)
|
|
m_BottomOverMaterial = sBottomOverMaterial
|
|
NotifyPropertyChanged("BottomOverMaterial")
|
|
End Sub
|
|
|
|
#End Region ' OverMaterial
|
|
|
|
#End Region ' General
|
|
|
|
Private m_JambT As Part = Nothing
|
|
Private m_JambB As Part = Nothing
|
|
Private m_JambL As Part = Nothing
|
|
Private m_JambR As Part = Nothing
|
|
Private m_Door1 As Part = Nothing
|
|
Private m_Door2 As Part = Nothing
|
|
|
|
Public Property JambTIsChecked As Boolean
|
|
Get
|
|
If IsNothing(m_JambT) Then Return False
|
|
Return m_JambT.IsActive
|
|
End Get
|
|
Set(value As Boolean)
|
|
' se il pezzo non esiste deve essere creato
|
|
OptionModule.m_TopJambChk = value
|
|
' setto la sua variabile
|
|
If Not IsNothing(m_JambT) Then
|
|
m_JambT.IsActive = value
|
|
NotifyPropertyChanged("JambTIsChecked")
|
|
End If
|
|
' se non esiste l'oggeto prima lo creo
|
|
SetDimension("JambIsCheked")
|
|
End Set
|
|
End Property
|
|
|
|
Public Property JambBIsChecked As Boolean
|
|
Get
|
|
If IsNothing(m_JambB) Then Return False
|
|
Return m_JambB.IsActive
|
|
End Get
|
|
Set(value As Boolean)
|
|
OptionModule.m_BottomJambChk = value
|
|
' setto la sua variabile
|
|
If Not IsNothing(m_JambB) Then
|
|
m_JambB.IsActive = value
|
|
NotifyPropertyChanged("JambBIsChecked")
|
|
End If
|
|
' se non esiste l'oggeto prima lo creo
|
|
SetDimension("JambIsCheked")
|
|
End Set
|
|
End Property
|
|
|
|
Public Sub SetJambBTIsChecked(value As Boolean)
|
|
OptionModule.m_BottomJambChk = value
|
|
If Not IsNothing(m_JambB) Then
|
|
m_JambB.IsActive = value
|
|
NotifyPropertyChanged("JambBIsChecked")
|
|
Map.refSceneManagerVM.RefreshBtn()
|
|
End If
|
|
End Sub
|
|
|
|
Public Property JambLIsChecked As Boolean
|
|
Get
|
|
If IsNothing(m_JambL) Then Return False
|
|
Return m_JambL.IsActive
|
|
End Get
|
|
Set(value As Boolean)
|
|
OptionModule.m_LeftJambChk = value
|
|
' setto la sua variabile
|
|
If Not IsNothing(m_JambL) Then
|
|
m_JambL.IsActive = value
|
|
NotifyPropertyChanged("JambLIsChecked")
|
|
End If
|
|
' se non esiste l'oggeto prima lo creo
|
|
SetDimension("JambIsCheked")
|
|
|
|
End Set
|
|
End Property
|
|
|
|
Public Property JambRIsChecked As Boolean
|
|
Get
|
|
If IsNothing(m_JambR) Then Return False
|
|
Return m_JambR.IsActive
|
|
End Get
|
|
Set(value As Boolean)
|
|
OptionModule.m_RightJambChk = value
|
|
' setto la sua variabile
|
|
If Not IsNothing(m_JambR) Then
|
|
m_JambR.IsActive = value
|
|
NotifyPropertyChanged("JambRIsChecked")
|
|
End If
|
|
' se non esiste l'oggeto prima lo creo
|
|
SetDimension("JambIsCheked")
|
|
End Set
|
|
End Property
|
|
|
|
#Region "DOOR NUMBER"
|
|
|
|
' carica il numero di porte da mostrare nella combobox
|
|
Private m_DoorListNumber As New List(Of String)
|
|
Public Property DoorListNumber As List(Of String)
|
|
Get
|
|
Return m_DoorListNumber
|
|
End Get
|
|
Set(value As List(Of String))
|
|
m_DoorListNumber = value
|
|
End Set
|
|
End Property
|
|
|
|
' converto il numero di porte letto nella combobox in una lista di stringhe (sDoorList)
|
|
Private m_DoorNumber As String
|
|
Public Property DoorNumber As String
|
|
Get
|
|
Return m_DoorNumber
|
|
End Get
|
|
Set(value As String)
|
|
m_DoorNumber = value
|
|
If Trim(m_DoorNumber) = "1" Then
|
|
OneDoorProperty = True
|
|
Else
|
|
OneDoorProperty = False
|
|
End If
|
|
NotifyPropertyChanged("DoorNumber")
|
|
SetDimension("DoorNumber")
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
|
|
Map.refSceneManagerVM.RefreshBtn()
|
|
End Set
|
|
End Property
|
|
Public Sub SetDoorNumber(sDoorNumber As String)
|
|
DoorListNumber = OptionModule.m_DoorsListNumber
|
|
For Each sNumber In DoorListNumber
|
|
If sNumber = sDoorNumber Then
|
|
m_DoorNumber = sNumber
|
|
End If
|
|
Next
|
|
If Trim(m_DoorNumber) = "1" Then
|
|
OneDoorProperty = True
|
|
Else
|
|
OneDoorProperty = False
|
|
End If
|
|
NotifyPropertyChanged("DoorNumber")
|
|
End Sub
|
|
|
|
#End Region ' Door Number
|
|
|
|
#Region "LIST PART"
|
|
' al momento della creazione di un nuovo assembalto vengono caricati di defualt:
|
|
' JambLeft, JambTop, JambRight, JambBottom, Door_1
|
|
Private m_ListPartDoor As New ObservableCollection(Of PartDoor)
|
|
Public Property ListPartDoor As ObservableCollection(Of PartDoor)
|
|
Get
|
|
Return m_ListPartDoor
|
|
End Get
|
|
Set(value As ObservableCollection(Of PartDoor))
|
|
m_ListPartDoor = value
|
|
' ogni volta che si aggiunge una compoenente riallinea la lista sotto
|
|
NotifyPropertyChanged("ListPartDoorOfDoor")
|
|
End Set
|
|
End Property
|
|
|
|
' questo elenco estrae dall'elenco sopra tutte le ante, cosi da poter essre passata come lista di solo ante nella grafica
|
|
Private m_ListPartDoorOfDoor As New ObservableCollection(Of PartDoor)
|
|
Public ReadOnly Property ListPartDoorOfDoor As ObservableCollection(Of PartDoor)
|
|
Get
|
|
m_ListPartDoorOfDoor.Clear()
|
|
For Each ItemPartDoor In m_ListPartDoor
|
|
If ItemPartDoor.Type.Contains("DO_") Then
|
|
m_ListPartDoorOfDoor.Add(ItemPartDoor)
|
|
End If
|
|
Next
|
|
Return m_ListPartDoorOfDoor
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' List Part
|
|
|
|
#Region "Lettura Assemblato"
|
|
|
|
' messaggi che possono essere restituiti in fase di lettura dell'assemblato
|
|
Public Enum ResultReadingAssembInfo
|
|
MissingAssembInfo
|
|
ErrorInAssembInfo
|
|
CorrectAssembInfo
|
|
End Enum
|
|
|
|
' carico il valore finale restituito dalla lettura dell'assembalto (di default errore)
|
|
Public bOk As ResultReadingAssembInfo = ResultReadingAssembInfo.ErrorInAssembInfo
|
|
|
|
' vettore di righe del file ddf in lettura
|
|
Private FileContent() As String
|
|
|
|
Shared Sub ReadDDFAssembly(sPathDDF As String, ByRef ReadAssembly As Assembly)
|
|
' durante la lettura del ddf disabilito la costruzione degli hardware sui jamb
|
|
BuiltReffCompo = False
|
|
Dim sErrorInfo As String = String.Empty
|
|
' controllo se esiste il file DDF
|
|
If Not File.Exists(sPathDDF) Then
|
|
Return
|
|
End If
|
|
ReadAssembly.FileContent = File.ReadAllLines(sPathDDF)
|
|
' se il file esiste ma è vuoto
|
|
If ReadAssembly.FileContent.Count = 0 Then
|
|
' 50107: Emplyu file, 50101: Error
|
|
MessageBox.Show(EgtMsg(50107), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
'---------------------------------------------------------------------------------------------------------------------------------
|
|
Dim IndexLine As Integer = 0
|
|
' carico i valori di default dell'assemblato (dalla pagina delle opzioni)
|
|
Map.refAssemblyManagerVM.LoadAssemblyInformation(ReadAssembly)
|
|
ReadAssembly.bOk = ReadAssembly.GetGeneralAssembly(IndexLine, sErrorInfo)
|
|
Part.bFirstConfigRead = False
|
|
'---------------------------------------------------------------------------------------------------------------------------------
|
|
If ReadAssembly.bOk <> ResultReadingAssembInfo.ErrorInAssembInfo Then
|
|
If IndexLine = -1 Then
|
|
' 50163= Error in reading General Assembly in DDF
|
|
sErrorInfo += String.Format(EgtMsg(50102), EgtMsg(50163) + vbCrLf)
|
|
ReadAssembly = Nothing
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
Else
|
|
Map.refSceneManagerVM.EnableRefresh = False
|
|
If ReadAssembly.GetDDFDoor(IndexLine, sErrorInfo) = -1 Then
|
|
' errore nella lettura di un part: blocco tutto
|
|
ReadAssembly = Nothing
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
End If
|
|
End If
|
|
Map.refSceneManagerVM.EnableRefresh = True
|
|
If Not IsNothing(ReadAssembly) AndAlso ReadAssembly.bOldVersion Then
|
|
ReadAssembly.CalcOverlapTop()
|
|
ReadAssembly.CalcOverlapBottom()
|
|
ReadAssembly.GetSizeBottom()
|
|
End If
|
|
Else
|
|
' 50163= Error in reading General Assembly in DDF
|
|
sErrorInfo += String.Format(EgtMsg(50102), EgtMsg(50163) + vbCrLf)
|
|
ReadAssembly = Nothing
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
End If
|
|
If Not String.IsNullOrWhiteSpace(sErrorInfo) Then
|
|
' 50164=In General Assembly:
|
|
sErrorInfo = EgtMsg(50164) & vbCrLf & sErrorInfo
|
|
MessageBox.Show(sErrorInfo, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
End Sub
|
|
|
|
' lettura dei parametri generali dell'assemblato
|
|
Private Function GetGeneralAssembly(ByRef IndexLine As Integer, sErrorInfo As String) As ResultReadingAssembInfo
|
|
' salta le righe vuote e quelle che non contengono "##",
|
|
' restituisce la prima riga successiva valida,
|
|
' termina quando incontra la riga "measure" oppure "produce" restituiendo il valore 0
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
' se non carico nessuna informazione allora non è un assemblato, esco
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
|
|
' Measure
|
|
If IndexLine < FileContent.Count - 1 Then
|
|
If SearchKey(FileContent(IndexLine), "Unit") Then
|
|
' leggo le dimemensioni dei Jamb e restituisco la riga successiva
|
|
IndexLine = GetUnit(IndexLine + 1)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), "measures" + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
Else
|
|
IndexLine = GetUnitFromDoor(IndexLine)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), "measures" + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
' Size
|
|
If IndexLine < FileContent.Count - 1 Then
|
|
If SearchKey(FileContent(IndexLine), ConstIni.S_SIZE_INI) Then
|
|
' leggo le dimemensioni dei Jamb e restituisco la riga successiva
|
|
IndexLine = GetSize(IndexLine + 1)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), ConstIni.S_SIZE_INI + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
' Light
|
|
If IndexLine < FileContent.Count - 1 Then
|
|
If SearchKey(FileContent(IndexLine), ConstIni.S_LIGHT) Then
|
|
IndexLine = GetLight(IndexLine + 1)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), ConstIni.S_LIGHT + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
' Overlap
|
|
If IndexLine < FileContent.Count - 1 Then
|
|
If SearchKey(FileContent(IndexLine), ConstIni.S_OVERLAP) Then
|
|
IndexLine = GetOverlap(IndexLine + 1)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), ConstIni.S_OVERLAP + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
' Exterior
|
|
If IndexLine < FileContent.Count - 1 Then
|
|
If SearchKey(FileContent(IndexLine), ConstIni.K_EXTERIOR) Then
|
|
IndexLine = GetExterior(IndexLine + 1)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), ConstIni.K_EXTERIOR + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
' Profiles
|
|
If IndexLine < FileContent.Count - 1 Then
|
|
If SearchKey(FileContent(IndexLine), ConstIni.S_PROFILES) Then
|
|
IndexLine = GetProfiles(IndexLine + 1)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), ConstIni.S_PROFILES + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
IndexLine = SkipWhiteSpace(IndexLine)
|
|
If IndexLine = 0 Then Return ResultReadingAssembInfo.MissingAssembInfo
|
|
' Doors
|
|
If IndexLine < FileContent.Count Then
|
|
If SearchKey(FileContent(IndexLine), ConstIni.S_DOORS_ASSEMBY) Then
|
|
' assegno ad una variabile il valore in lettura
|
|
IndexLine = GetValue(IndexLine, ConstIni.S_DOORS_ASSEMBY, m_DoorNumber, False)
|
|
' assegno il numero di ante
|
|
SetDoorNumber(m_DoorNumber)
|
|
If IndexLine = -1 Then
|
|
' 50102: Failed reading DDF file. Missing needed parameter {0}.
|
|
sErrorInfo += String.Format(EgtMsg(50102), ConstIni.S_DOORS_ASSEMBY + vbCrLf)
|
|
Return ResultReadingAssembInfo.ErrorInAssembInfo
|
|
End If
|
|
' se sono arrivato fino a qui significa che ormai è terminata la pagina
|
|
If IsNothing(m_Exterior) OrElse Not m_Exterior Then
|
|
m_Exterior = False
|
|
m_OverlapBottom = m_OverlapTop
|
|
m_DepthBottom = m_Thickness
|
|
m_ThicknessBottom = m_Width
|
|
' il delta è sempre definito nullo di default, quindi è inutile scriverlo qui
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Return ResultReadingAssembInfo.CorrectAssembInfo
|
|
End Function
|
|
|
|
' salta le righe che non contengono un metadata
|
|
Private Function SkipWhiteSpace(Index As Integer) As Integer
|
|
Dim ExitLoop As Boolean = False
|
|
While Not ExitLoop And Index < FileContent.Count - 1
|
|
' se la riga contiene un commeto allora faccio questo controllo
|
|
If FileContent(Index).Contains(ConstCompo.DDF_METADATA) Then
|
|
If Not String.IsNullOrWhiteSpace(Regex.Match(FileContent(Index), "\s*" & DDF_METADATA & "\s*(.*?\b)\s*:\s*$").Groups(1).Value) Then
|
|
ExitLoop = True
|
|
ElseIf Not String.IsNullOrWhiteSpace(Regex.Match(FileContent(Index), "\s*" & DDF_METADATA & "\s*(.*?\b)\s*:\s*(.*?\.*)$").Groups(1).Value) Then
|
|
ExitLoop = True
|
|
ElseIf Not String.IsNullOrWhiteSpace(Regex.Match(FileContent(Index), "\s*(" & ConstCompo.S_MEASURES & ")\s*:\s*(.*?\.*)$").Groups(1).Value) Then
|
|
ExitLoop = True
|
|
Else
|
|
Index += 1
|
|
End If
|
|
' utilizzando una funzione regex
|
|
ElseIf Not String.IsNullOrWhiteSpace(Regex.Match(FileContent(Index), "\s*(" & ConstCompo.S_MEASURES & ")\s*:\s*(.*?\.*)$").Groups(1).Value) Or
|
|
Not String.IsNullOrWhiteSpace(Regex.Match(FileContent(Index), "\s*(" & ConstCompo.S_PRODUCE & ")\s*:\s*(.*?\.*)$").Groups(1).Value) Then
|
|
'' utilizzando il semplice controllo se la stringa contiene le parole
|
|
'ElseIf Not FileContent(Index).Contains(ConstCompo.S_MEASURES) Or
|
|
' Not FileContent(Index).Contains(ConstCompo.S_PRODUCE) Then
|
|
Index = 0
|
|
ExitLoop = True
|
|
Else
|
|
Index += 1
|
|
End If
|
|
End While
|
|
Return Index
|
|
End Function
|
|
|
|
' funzione per la ricerca dei valori, restituice la riga successiva
|
|
Private Function GetValue(Index As Integer, Name As String, ByRef Var As String, Optional bConvertUnit As Boolean = True) As Integer
|
|
If Index = -1 Then Return -1
|
|
Dim Local_Var As String = GetValueWithKey(FileContent(Index), Name)
|
|
If String.IsNullOrWhiteSpace(Local_Var) Then
|
|
' se non c'è la parola chiave allora esci
|
|
If Not SearchKey(FileContent(Index), Name) Then Return -1
|
|
' altrimenti lascia il valore vuoto
|
|
Else
|
|
If bConvertUnit Then ConvertDDFValueIntoCurrentUnit(m_AssemblyUnit, Local_Var)
|
|
Var = Local_Var
|
|
End If
|
|
Return Index + 1
|
|
End Function
|
|
|
|
' funzione per la ricerca dei profili, restituisce la riga successiva
|
|
Private Function GetValueProfiles(Index As Integer, Name As String, ByRef Var As EdgeType, ByRef VarMachining As Boolean, ByRef VarOverMaterial As String) As Integer
|
|
' Creo una stringa per scrivere gli errori
|
|
Dim bError As Boolean = False
|
|
If Index = -1 Then
|
|
Return Index
|
|
Else
|
|
' Lock
|
|
Dim Bevel As String
|
|
Bevel = GetValueWithKey(FileContent(Index), Name)
|
|
' se il valore restituito è nullo o vuoto
|
|
If String.IsNullOrWhiteSpace(Bevel) Then
|
|
' se non c'è la parola chiave allora esci
|
|
If Not SearchKey(FileContent(Index), Bevel) Then
|
|
' restituisco il valore -1
|
|
Return -1
|
|
Else
|
|
Var = EdgeTypeList(0)
|
|
End If
|
|
Index += 1
|
|
Else
|
|
'Dim IndexEdge As Integer = EdgeTypeList.IndexOf(Var)
|
|
Dim IndexEdge As Integer = 0
|
|
For I As Integer = 0 To EdgeTypeList.Count - 1
|
|
If Bevel = EdgeTypeList(I).Name And EdgeTypeList(I).IsActive = Visibility.Visible Then
|
|
Var = EdgeTypeList(I)
|
|
IndexEdge = I
|
|
Exit For
|
|
Else
|
|
IndexEdge = -1
|
|
End If
|
|
Next
|
|
|
|
If IndexEdge = -1 And Bevel = ConstGen.BEVEL_UP Then
|
|
Var = EdgeTypeList(0)
|
|
bError = True
|
|
MsgBevel(bError, Bevel)
|
|
Index += 1
|
|
Else
|
|
Var.Name = EdgeTypeList(IndexEdge).Name
|
|
' restituisco la riga successiva all'ultimo valore letto
|
|
Index += 1
|
|
End If
|
|
End If
|
|
End If
|
|
If Index = -1 Then
|
|
Return Index
|
|
Else
|
|
Dim Machining = GetValueWithKey(FileContent(Index), K_MACHINING)
|
|
If String.IsNullOrWhiteSpace(Machining) Then
|
|
If Not SearchKey(FileContent(Index), K_MACHINING) Then Return -1
|
|
Index += 1
|
|
Else
|
|
VarMachining = Utility.ConvertOnOffToBoolean(Machining)
|
|
Index += 1
|
|
End If
|
|
End If
|
|
If Index = -1 Then
|
|
Return Index
|
|
Else
|
|
VarOverMaterial = GetValueWithKey(FileContent(Index), K_OVERMATERIAL)
|
|
If String.IsNullOrWhiteSpace(VarOverMaterial) Then
|
|
If Not SearchKey(FileContent(Index), K_OVERMATERIAL) Then Return -1
|
|
Index += 1
|
|
Else
|
|
Index += 1
|
|
End If
|
|
End If
|
|
Return Index
|
|
End Function
|
|
|
|
Private Sub MsgBevel(bFound As Boolean, Edge As String)
|
|
If bFound And Not Part.FirstReadingEdge Then
|
|
' Bevel {0} can not be acceptable in Jamb
|
|
Dim CautionBevel As String = String.Format(EgtMsg(50158), Edge)
|
|
MessageBox.Show(CautionBevel, EgtMsg(50115), MessageBoxButton.OK, MessageBoxImage.Asterisk)
|
|
Part.FirstReadingEdge = True
|
|
End If
|
|
End Sub
|
|
|
|
' Unit (Metadati Assembly)
|
|
Private Function GetUnit(Index As Integer) As Integer
|
|
If Index = -1 Then Return -1
|
|
Dim PreviuosIndex As Integer = Index
|
|
Index = GetValue(Index, "measures", m_AssemblyUnit, False)
|
|
Return Index
|
|
End Function
|
|
|
|
' Measures (Parametri Door)
|
|
Private Function GetUnitFromDoor(Index As Integer) As Integer
|
|
' inizio la ricerca all'interno del file
|
|
Dim PreviuosIndex As Integer = Index
|
|
Dim bUnitFound As Boolean = False
|
|
' cerco la prima porta e recupero la sua unità di misura
|
|
While Not SearchKey(FileContent(Index), "measures") And Index < FileContent.Count - 1
|
|
Index += 1
|
|
End While
|
|
If SearchKey(FileContent(Index), "measures") Then
|
|
m_AssemblyUnit = GetValueWithKey(FileContent(Index), "measures")
|
|
bUnitFound = True
|
|
End If
|
|
If bUnitFound Then
|
|
Index = PreviuosIndex
|
|
Else
|
|
Index = -1
|
|
End If
|
|
Return Index
|
|
End Function
|
|
|
|
' Size
|
|
Private Function GetSize(Index As Integer) As Integer
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, "thickness", m_Thickness)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, "width", m_Width)
|
|
Return Index
|
|
End Function
|
|
|
|
' light
|
|
Private Function GetLight(Index As Integer) As Integer
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, SIDE_UP, m_LightUp)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, SIDE_LOCK, m_LightLock)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, SIDE_HINGE, m_LightHinge)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, K_BOTTOM, m_LightBottom)
|
|
Return Index
|
|
End Function
|
|
|
|
' Overlap
|
|
Private Function GetOverlap(Index As Integer) As Integer
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, "thickness", m_ThicknessHead)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, SIDE_HINGE, m_OverlapHinge)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, SIDE_LOCK, m_OverlapLock)
|
|
If Index = -1 Then Return -1
|
|
' per retrocompatibilità: se questo parametro manca dall'elenco devo comunque continuare
|
|
Dim TempIndex = GetValue(Index, K_TOP, m_OverlapTop)
|
|
If TempIndex > -1 Then
|
|
Index = TempIndex
|
|
Else
|
|
bOldVersion = True
|
|
End If
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, "deltaT", m_DeltaThickness)
|
|
Return Index
|
|
End Function
|
|
|
|
' Profiles
|
|
Private Function GetProfiles(Index As Integer) As Integer
|
|
If Index = -1 Then Return -1
|
|
Index = GetValueProfiles(Index, K_LOCKEDGE, m_LockEdgeType, m_LockEdgeMachining, m_LockEdgeOverMaterial)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValueProfiles(Index, K_HINGEEDGE, m_HingeEdgeType, m_HingeEdgeMachining, m_HingeEdgeOverMaterial)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValueProfiles(Index, K_TOP, m_TopType, m_TopMachining, m_TopOverMaterial)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValueProfiles(Index, K_BOTTOM, m_BottomType, m_BottomMachining, m_BottomOverMaterial)
|
|
Return Index
|
|
End Function
|
|
|
|
' exterior
|
|
Private Function GetExterior(Index As Integer) As Integer
|
|
' devo distingiure la lettura in funzione della versione del file DDF
|
|
m_Exterior = True
|
|
If Not bOldVersion Then
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, K_OVERLAP_BOTTOM, m_OverlapBottom)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, K_THICKNESS_BOTTOM, m_ThicknessBottom)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, K_DEPTH_BOTTOM, m_DepthBottom)
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, K_DELTA_BOTTOM, m_DeltaBottom)
|
|
Else
|
|
If Index = -1 Then Return -1
|
|
Index = GetValue(Index, K_TOP, m_OverlapTop)
|
|
End If
|
|
'If Index = -1 Then Return -1
|
|
'Index = GetValue(Index, "deltaT", m_DeltaThickness)
|
|
Return Index
|
|
End Function
|
|
|
|
' dopo la lettura delle informazioni dell'assemblato
|
|
Private Function GetDDFDoor(IndexLine As Integer, ByRef sErrorInfo As String) As Integer
|
|
Dim Line As Integer = IndexLine
|
|
While Line < FileContent.Count - 1 AndAlso Not Search3Dots(FileContent(Line))
|
|
Dim Local_PartDoor As New PartDoor
|
|
Dim Local_Door As New Part(Local_PartDoor)
|
|
' carcio la liste delle propiretà
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
If Line > 0 Then
|
|
' per saltare la riga che è stata appena restituita che contiene "---"
|
|
Line += 1
|
|
End If
|
|
' se la lettura di un oggetto fallisce allora restituisce nothing
|
|
Part.ReadDDFPartDoor(FileContent, Line, Local_Door)
|
|
' se l'oggetto appena restituito non esiste allora esco
|
|
If IsNothing(Local_Door) Then Return -1
|
|
' se l'getto appena caricato non specifica il tipo di pezzo allora di default è la prima anta
|
|
If String.IsNullOrEmpty(Local_Door.TypePart) Then Local_Door.TypePart = ConstGen.PART_DO_ & "1"
|
|
Dim sDoorPiece As String = Local_Door.TypePart
|
|
|
|
' ricavo il tipo di pezzo eliminando la descrizione dello swing da "TypePart"
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
|
|
If sDoorPiece.Count > 3 AndAlso sDoorPiece.Contains(ConstGen.PART_FRAME) Then
|
|
sDoorPiece = sDoorPiece.Remove(sDoorPiece.LastIndexOf("_"c) + 1)
|
|
End If
|
|
Map.refCompoPanelVM.GoBackVisibility = Visibility.Visible
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
|
|
Else
|
|
' significa che stiamo per leggere una porta singola, cerco una porta
|
|
If Not Local_Door.TypePart.Contains("DO_") Then
|
|
' 50518=The current ddf is an Assembly. Any modify will be saved as single door.
|
|
sErrorInfo = EgtMsg(50518)
|
|
Continue While
|
|
End If
|
|
Local_Door.IsActive = True
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_PartDoor.Door.SwingTypeList = OptionModule.m_SwingTypeList
|
|
Local_PartDoor.Door.MaterialsList = OptionModule.m_MaterialList
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
Map.refPartPageVM.CurrPart = Local_Door
|
|
Map.refCompoPanelVM.GoBackVisibility = Visibility.Collapsed
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage
|
|
Exit While
|
|
End If
|
|
|
|
' impedisco di costruire i riferminti
|
|
BuiltReffCompo = False
|
|
Select Case sDoorPiece
|
|
Case ConstGen.PART_DO_ & "1"
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_PartDoor.Door.SwingTypeList = m_SwingTypeListSinlgeDoor
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
Case ConstGen.PART_DO_ & "2"
|
|
Local_PartDoor.Door = Local_Door
|
|
If Not IsNothing(Map.refAssemblyManagerVM.ReserchPartDoor("DO_1")) Then
|
|
Local_PartDoor.Door.SwingTypeList = m_SwingTypeListRightDoor
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.SwingTypeList = m_SwingTypeListLeftDoor
|
|
Else
|
|
Local_PartDoor.Door.SwingTypeList = m_SwingTypeListSinlgeDoor
|
|
End If
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
|
|
Case ConstGen.PART_DO_ & "3"
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'SetArrayPartDoor(Local_PartDoor, 2)
|
|
Case ConstGen.PART_DO_ & "4"
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'SetArrayPartDoor(Local_PartDoor, 3)
|
|
Case ConstGen.PART_DO_ & "5"
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
'SetArrayPartDoor(Local_PartDoor, 4)
|
|
Case ConstGen.PART_DO_ & "6"
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_PartDoor.SetIsChecked(Local_Door.IsActive)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'SetArrayPartDoor(Local_PartDoor, 5)
|
|
|
|
Case ConstGen.PART_FRAME_LEFT
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_Door.SwingTypeList = m_SwingTypeList
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'm_LeftJamb = Local_Door
|
|
Case ConstGen.PART_FRAME_RIGHT
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_Door.SwingTypeList = m_SwingTypeList
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'm_RightJamb = Local_Door
|
|
Case ConstGen.PART_FRAME_TOP
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_Door.SwingTypeList = m_SwingTypeList
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'm_TopJamb = Local_Door
|
|
Case ConstGen.PART_FRAME_BOTTOM
|
|
Local_PartDoor.Door = Local_Door
|
|
Local_Door.SwingTypeList = m_SwingTypeList
|
|
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
|
|
CreateNewPropertiesList(Local_Door)
|
|
ListPartDoor.Add(Local_PartDoor)
|
|
'm_BottomJamb = Local_Door
|
|
If Not m_Exterior Then Local_PartDoor.Door.IsActive = False
|
|
End Select
|
|
End While
|
|
|
|
' controllo che gli oggetti che sono stati caricati
|
|
If Not ControlAssemblyInformation() Then
|
|
Return -1
|
|
Else
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
|
|
End If
|
|
' scrivo in locale un a copia dei riferiemti ai part
|
|
SetPartDoorCurrAssembly()
|
|
If Not OptionModule.m_ConfigurationSoftware = ConfigType.Door Then
|
|
If Not ControlListDoor() Then
|
|
Return -1
|
|
End If
|
|
If Not ControlSwing() Then
|
|
Return -1
|
|
End If
|
|
End If
|
|
BuiltReffCompo = True
|
|
Map.refAssemblyManagerVM.CreateAssociation(Me)
|
|
MatchCompo()
|
|
'Map.refProjectManagerVM.NotifyPropertyChanged("VisibilityCreateAssembly")
|
|
Return 1
|
|
End Function
|
|
|
|
' verifico che la dicitaura delle porte sia coerente
|
|
Private Function ControlListDoor() As Boolean
|
|
Dim WritingError As String = String.Empty
|
|
Select Case ListPartDoorOfDoor.Count
|
|
Case 1
|
|
' se ho una porta soltanto deve essere la prima
|
|
If IsNothing(m_Door1) Then
|
|
WritingError = EgtMsg(50506)
|
|
MessageBox.Show(WritingError, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
Case 2
|
|
If ListPartDoorOfDoor.Count < 2 Then Return False
|
|
If IsNothing(m_Door1) OrElse IsNothing(m_Door2) Then
|
|
' 50513=Impossible to find the first door (DO_1) or the second door (DO_2)!
|
|
WritingError = EgtMsg(50513)
|
|
MessageBox.Show(WritingError, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
If Not ListPartDoorOfDoor(0).Door.TypePart = "DO_1" Then
|
|
' 50515=The first door is not realy the first, check the ddf.
|
|
WritingError = EgtMsg(50515)
|
|
MessageBox.Show(WritingError, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
Return True
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
' controllo che gli swing siano coerenti:
|
|
Private Function ControlSwing() As Boolean
|
|
Dim ErrorSwingMessages As String = String.Empty
|
|
Select Case ListPartDoorOfDoor.Count
|
|
Case 1
|
|
Dim Local_Door1 As Part = ListPartDoorOfDoor(0).Door
|
|
Dim Local_Swing As String = Local_Door1.Swing
|
|
Local_Door1.SwingTypeList = OptionModule.m_SwingTypeListSinlgeDoor
|
|
If String.IsNullOrEmpty(Local_Swing) Then Return False
|
|
Dim Index As Integer = Local_Door1.SwingTypeList.FindIndex(Function(sValue) Trim(sValue) = Trim(Local_Swing))
|
|
' se Index = -1 significa che non è stata trovata nessuna corrispondenza
|
|
If Index < 0 Then
|
|
' 50507=The swing is not a member of the swing list of single door.
|
|
ErrorSwingMessages = EgtMsg(50507)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
Local_Door1.Swing = Local_Door1.SwingTypeList(Index)
|
|
Return True
|
|
Case 2
|
|
Dim Index_1 As Integer = -1
|
|
Dim Index_2 As Integer = -1
|
|
If Not IsNothing(m_Door1) Then
|
|
Index_1 = OptionModule.m_SwingTypeListLeftDoor.FindIndex(Function(sValue) Trim(sValue) = Trim(m_Door1.Swing))
|
|
End If
|
|
If Not IsNothing(m_Door2) Then
|
|
Index_2 = OptionModule.m_SwingTypeListRightDoor.FindIndex(Function(sValue) Trim(sValue) = Trim(m_Door2.Swing))
|
|
End If
|
|
' Se uno swing è corretto e l'altro è sbagliato
|
|
If (Index_1 < 0 AndAlso Index_2 > -1) Then
|
|
' 50508=The swing of left door is not a member of the swing list of left door.
|
|
ErrorSwingMessages = EgtMsg(50508)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
ElseIf (Index_1 > -1 AndAlso Index_2 < 0) Then
|
|
' 50509=The swing of right door is not a member of the swing list of right door.
|
|
ErrorSwingMessages = EgtMsg(50509)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
' se sono entrambi sbagliati provo a verificare che non siano invertite le ante
|
|
If Index_1 < 0 OrElse Index_2 < 0 Then
|
|
If Not IsNothing(m_Door2) Then
|
|
Index_1 = OptionModule.m_SwingTypeListLeftDoor.FindIndex(Function(sValue) Trim(sValue) = Trim(m_Door2.Swing))
|
|
End If
|
|
If Not IsNothing(m_Door1) Then
|
|
Index_2 = OptionModule.m_SwingTypeListRightDoor.FindIndex(Function(sValue) Trim(sValue) = Trim(m_Door1.Swing))
|
|
End If
|
|
' verifico i risultati ottenuti
|
|
If (Index_1 > -1 AndAlso Index_2 > -1) Then
|
|
' 50510=The swing of left door is on the right door and viceverse.
|
|
ErrorSwingMessages = EgtMsg(50510)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
ElseIf (Index_1 < 0 AndAlso Index_2 > -1) Then
|
|
' 50511=The swing of left door is not a member of the swing list of left door.
|
|
ErrorSwingMessages = EgtMsg(50511)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
ElseIf (Index_1 > -1 AndAlso Index_2 < 0) Then
|
|
' 50512=The swing of right door is not a member of the swing list of right door.
|
|
ErrorSwingMessages = EgtMsg(50512)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
Else
|
|
' 50514=The swing are absolutly wrong!
|
|
ErrorSwingMessages = EgtMsg(50514)
|
|
MessageBox.Show(ErrorSwingMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
End If
|
|
Return True
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
' controllo degli oggetti caricati nell'assemblato
|
|
Private Function ControlAssemblyInformation() As Boolean
|
|
Dim ErrorMessages As String = String.Empty
|
|
Select Case bOk
|
|
Case ResultReadingAssembInfo.CorrectAssembInfo
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then
|
|
' 50520=The current ddf is an assembly
|
|
ErrorMessages = EgtMsg(50520)
|
|
MessageBox.Show(ErrorMessages, EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return True
|
|
End If
|
|
' verifico se è un assemblato
|
|
If ListPartDoor.Count < 4 And ListPartDoorOfDoor.Count > 0 Then
|
|
' 50516=The current ddf contains {0} jambs.
|
|
ErrorMessages = EgtMsg(50516)
|
|
Dim sVal As String = Utility.DoubleToString(ListPartDoor.Count - ListPartDoorOfDoor.Count, 0)
|
|
' 50144=Warning
|
|
MessageBox.Show(String.Format(ErrorMessages, sVal), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return True
|
|
End If
|
|
If ListPartDoor.Count < 4 And ListPartDoorOfDoor.Count = 0 Then
|
|
' 50517=The current ddf does not contains doors!
|
|
ErrorMessages = EgtMsg(50517)
|
|
MessageBox.Show(ErrorMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
Case ResultReadingAssembInfo.MissingAssembInfo
|
|
' verifico se è un assemblato
|
|
If ListPartDoor.Count < 4 And ListPartDoorOfDoor.Count > 0 Then
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return True
|
|
' 50518=The current ddf is not an assembly.
|
|
ErrorMessages = EgtMsg(50518)
|
|
MessageBox.Show(ErrorMessages, EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return True
|
|
End If
|
|
' verifico che se è una porta singola oppure un assemblato vecchio
|
|
If ListPartDoor.Count < 4 And ListPartDoorOfDoor.Count = 0 Then
|
|
' 50519=Impossible to open a ddf with no doors.
|
|
ErrorMessages = EgtMsg(50519)
|
|
MessageBox.Show(ErrorMessages, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return False
|
|
End If
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door AndAlso ListPartDoor.Count > 4 Then
|
|
' 50520=The current ddf is an assembly
|
|
ErrorMessages = EgtMsg(50520)
|
|
MessageBox.Show(ErrorMessages, EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return True
|
|
End If
|
|
Case Else
|
|
Return False
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
Public Function ControlAssembly(Optional ByVal bSaving As Boolean = False) As String
|
|
' se è una porta singola oppure le info generali non sono state caricate correttamente non controllo l'assemblato
|
|
If bSaving Then
|
|
If bOk <> ResultReadingAssembInfo.MissingAssembInfo Then Return String.Empty
|
|
Else
|
|
If bOk = ResultReadingAssembInfo.ErrorInAssembInfo OrElse bOk = ResultReadingAssembInfo.MissingAssembInfo Then Return String.Empty
|
|
End If
|
|
Dim WritingError As String = String.Empty
|
|
Dim DoorTypeList As String = String.Empty
|
|
If ListPartDoor.Count < 3 Then
|
|
For Each ItemPart In ListPartDoor
|
|
DoorTypeList &= " ," & ItemPart.Door.TypePart
|
|
Next
|
|
DoorTypeList = DoorTypeList.Remove(1, 1)
|
|
WritingError = String.Format(EgtMsg(50505), DoorTypeList)
|
|
End If
|
|
Return WritingError
|
|
End Function
|
|
|
|
' ricavo dal JambT il valore di OverlabTop
|
|
Public Sub CalcOverlapTop()
|
|
Dim Jamb As Part = m_JambT
|
|
Dim IndexSide As Integer = 2
|
|
Dim Indexparam As Integer = 2
|
|
If Not IsNothing(Jamb) Then
|
|
Dim IndexCompo As Integer = GetRabbetCompo(Jamb, IndexSide)
|
|
SetOverlapTop(GetValueParam(Jamb, IndexSide, Indexparam))
|
|
End If
|
|
End Sub
|
|
|
|
' ricavo dal JambB il valore di OverlabBottom
|
|
Public Sub CalcOverlapBottom()
|
|
Dim Jamb As Part = m_JambB
|
|
Dim IndexSide As Integer = 2
|
|
Dim Indexparam As Integer = 2
|
|
If Not IsNothing(Jamb) Then
|
|
Dim IndexCompo As Integer = GetRabbetCompo(Jamb, IndexSide)
|
|
SetOverlapBottom(GetValueParam(Jamb, IndexSide, Indexparam))
|
|
End If
|
|
End Sub
|
|
|
|
' restituisce l'indice della componente nella lista delle componeti del jamb
|
|
Public Function GetRabbetCompo(ByVal Jamb As Part, ByVal IndexSide As Integer) As Integer
|
|
' IndexSide: 0->Top, 1->bottom , 2->hinge , 3->lock
|
|
' se ritorna "-2" significa che non esiste la componente rabbet nell'elenco dei direttori
|
|
' se ritorna "-1" significa che non esiste la componente rabbet nell'elenco delle componenti del Jamb
|
|
Dim IndexCompo As Integer
|
|
Dim IndexCompoPanel As Integer = -1
|
|
' ricerco la posizione del rabbet nella lista dei componenti
|
|
IndexCompoPanel = nCompoRabbet()
|
|
' se la ricerca ha dato un esito positivo allora procedo
|
|
If IndexCompoPanel = -1 Then Return -2
|
|
If Jamb.CompoList.Count > 0 Then
|
|
' inizio la ricerca della componente di tipo rabbet
|
|
For IndexCompo = 0 To Jamb.CompoList.Count - 1
|
|
If Jamb.CompoList(IndexCompo).CompoType.DDFName = OptionModule.m_CompoPaneOrder(IndexCompoPanel) Then
|
|
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(IndexSide) Then
|
|
Return IndexCompo
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
Return -1
|
|
End Function
|
|
|
|
' utlizzata per recuperare il valore di un parametro del rabbet
|
|
Public Function GetValueParam(Jamb As Part, IndexSide As Integer, IndexParam As Integer) As String
|
|
If Not IsNothing(Jamb) Then
|
|
' verifico che il rabbet indicato sia costruito su uno specifico lato
|
|
Dim IndexCompo As Integer = GetRabbetCompo(Jamb, IndexSide)
|
|
If IndexCompo < 0 Then
|
|
Return "0"
|
|
End If
|
|
' ricerco il parametro "depth"
|
|
If Jamb.CompoList(IndexCompo).CompoParamList.Count - 1 >= IndexParam Then
|
|
Dim sValue As String = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(IndexParam), TextBoxParam).Value
|
|
If Not String.IsNullOrEmpty(sValue) Then Return sValue
|
|
End If
|
|
End If
|
|
Return "0"
|
|
End Function
|
|
|
|
' carico le dimensioni del bottom direttamente del frame
|
|
Public Sub GetSizeBottom()
|
|
If IsNothing(m_JambB) Then Return
|
|
SetThicknessBottom(m_JambB.Height)
|
|
SetDepthBottom(m_JambB.Thickness)
|
|
' calcolo il delta del bottom
|
|
If Not IsNothing(m_Door1) Then
|
|
Dim dPositionZ As Double
|
|
Dim dThicknessBottom As Double
|
|
Dim dThicknessDoor As Double
|
|
Dim dDeltaThickness As Double
|
|
StringToDouble(m_JambB.Height, dThicknessBottom)
|
|
StringToDouble(m_Door1.Thickness, dThicknessDoor)
|
|
StringToDouble(m_DeltaThickness, dDeltaThickness)
|
|
StringToDouble(m_JambB.Position(2), dPositionZ)
|
|
Dim dDeltaBottom As Double = dThicknessBottom - dThicknessDoor - dDeltaThickness - dPositionZ
|
|
SetDeltaBottom(DoubleToString(dDeltaBottom, 4))
|
|
End If
|
|
End Sub
|
|
|
|
#Region "Associazione delle compo lette da ddf"
|
|
|
|
Public Sub MatchCompo()
|
|
If IsNothing(m_Door1) Then Return
|
|
For Each ItemDoor In ListPartDoorOfDoor
|
|
If Not IsNothing(m_JambL) Then ResearchMatchJamb(ItemDoor.Door, m_JambL)
|
|
If Not IsNothing(m_JambR) Then ResearchMatchJamb(ItemDoor.Door, m_JambR)
|
|
If Not IsNothing(m_JambT) Then ResearchMatchJamb(ItemDoor.Door, m_JambT)
|
|
If Not IsNothing(m_JambB) Then ResearchMatchJamb(ItemDoor.Door, m_JambB)
|
|
Next
|
|
If Not IsNothing(m_Door2) Then
|
|
ResearchMatchDoor(m_Door1, m_Door2)
|
|
ResearchMatchDoor(m_Door2, m_Door1)
|
|
SetDoorNumber("2")
|
|
Else
|
|
SetDoorNumber("1")
|
|
End If
|
|
End Sub
|
|
|
|
' setta per ogni componente sul telaio la proprietà "IsReadOnly" letta dal file Matching
|
|
Private Sub ResearchMatchJamb(Door As Part, Jamb As Part)
|
|
For IndexCompo As Integer = 0 To Door.CompoList.Count - 1
|
|
ReSearchFrameFile(Door.CompoList(IndexCompo))
|
|
If Not String.IsNullOrEmpty(Door.CompoList(IndexCompo).IdCode) Then
|
|
' cerco l'associazione delle compo sulla porta con le componenti sul telaio
|
|
For IndexCompoJamb As Integer = 0 To Jamb.CompoList.Count - 1
|
|
If Trim(Jamb.CompoList(IndexCompoJamb).IdCode) = Trim(Door.CompoList(IndexCompo).IdCode) Then
|
|
Door.CompoList(IndexCompo).refJambCompo = Jamb.CompoList(IndexCompoJamb)
|
|
Jamb.CompoList(IndexCompoJamb).refCompoDoor = Door.CompoList(IndexCompo)
|
|
Door.CompoList(IndexCompo).refJambCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
Door.CompoList(IndexCompo).refJambCompo.IsReadOnly = True
|
|
Door.CompoList(IndexCompo).IsReadOnly = False
|
|
' definisco la proprietà ReadOnly per i parametri inseriti
|
|
If Not LoadCompoParam(Door.CompoList(IndexCompo), Door.TypePart) Then Return
|
|
For IndexParam As Integer = 0 To Door.CompoList(IndexCompo).refJambCompo.CompoParamList.Count - 1
|
|
Dim CmpRefPar As CompoParam = Door.CompoList(IndexCompo).refJambCompo.CompoParamList(IndexParam)
|
|
If TypeOf CmpRefPar Is TextBoxOnOffParam Then
|
|
Dim TBoxRefPar As TextBoxOnOffParam = DirectCast(CmpRefPar, TextBoxOnOffParam)
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
ElseIf TypeOf CmpRefPar Is TextBoxParam Then
|
|
Dim TBoxRefPar As TextBoxParam = DirectCast(CmpRefPar, TextBoxParam)
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
ElseIf TypeOf CmpRefPar Is ComboBoxOnOffParam Then
|
|
Dim TBoxRefPar As ComboBoxOnOffParam = DirectCast(CmpRefPar, ComboBoxOnOffParam)
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
ElseIf TypeOf CmpRefPar Is ComboBoxParam Then
|
|
Dim TBoxRefPar As ComboBoxParam = DirectCast(CmpRefPar, ComboBoxParam)
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
End If
|
|
Next
|
|
ResetCompoParam()
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
Door.CompoList(IndexCompo).IsReadOnly = False
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
' setta per ogni componente (associata) sulla porta inattiva la proprietà "IsReadOnly" letta dal file Matching
|
|
Private Sub ResearchMatchDoor(DoorActive As Part, DoorInactive As Part)
|
|
If Not DoorActive.SwingAlias.Name.Contains(ConstGen.INACTIVE) Then
|
|
For IndexCompo As Integer = 0 To DoorActive.CompoList.Count - 1
|
|
If Not String.IsNullOrEmpty(DoorActive.CompoList(IndexCompo).IdCode) Then
|
|
For IndexCompoInactiveDoor As Integer = 0 To DoorInactive.CompoList.Count - 1
|
|
' cerco l'associazione delle compo sulla porta attiva con le componenti sulla porta inattiva
|
|
Dim Local_Copo As Compo
|
|
If Trim(DoorInactive.CompoList(IndexCompoInactiveDoor).IdCode) = Trim(DoorActive.CompoList(IndexCompo).IdCode) Then
|
|
If DoorActive.CompoList(IndexCompo).MatchedDoor Then
|
|
DoorInactive.CompoList(IndexCompoInactiveDoor).refJambCompo = DoorActive.CompoList(IndexCompo)
|
|
DoorInactive.CompoList(IndexCompoInactiveDoor).refJambCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
DoorActive.CompoList(IndexCompo).refCompoDoor = DoorInactive.CompoList(IndexCompoInactiveDoor)
|
|
DoorInactive.CompoList(IndexCompoInactiveDoor).refJambCompo.IsReadOnly = False
|
|
DoorInactive.CompoList(IndexCompoInactiveDoor).refJambCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
DoorInactive.CompoList(IndexCompoInactiveDoor).IsReadOnly = True
|
|
If Not LoadCompoParam(DoorInactive.CompoList(IndexCompoInactiveDoor), DoorActive.TypePart) Then Return
|
|
' assegno la componente
|
|
Local_Copo = DoorInactive.CompoList(IndexCompoInactiveDoor).refJambCompo
|
|
Else
|
|
DoorActive.CompoList(IndexCompo).refJambCompo = DoorInactive.CompoList(IndexCompoInactiveDoor)
|
|
DoorActive.CompoList(IndexCompo).refJambCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
DoorInactive.CompoList(IndexCompoInactiveDoor).refCompoDoor = DoorActive.CompoList(IndexCompo)
|
|
DoorActive.CompoList(IndexCompo).VisibilitiReloadBtn = Visibility.Visible
|
|
DoorActive.CompoList(IndexCompo).refJambCompo.IsReadOnly = False
|
|
DoorActive.CompoList(IndexCompo).IsReadOnly = True
|
|
' assegno la componente
|
|
If Not LoadCompoParam(DoorActive.CompoList(IndexCompo), DoorActive.TypePart) Then Return
|
|
Local_Copo = DoorActive.CompoList(IndexCompo).refJambCompo
|
|
End If
|
|
'DoorActive.CompoList(IndexCompo).refJambCompo = DoorInactive.CompoList(IndexCompoInactiveDoor)
|
|
'DoorInactive.CompoList(IndexCompoInactiveDoor).refCompoDoor = DoorActive.CompoList(IndexCompo)
|
|
'DoorActive.CompoList(IndexCompo).VisibilitiReloadBtn = Visibility.Visible
|
|
'DoorActive.CompoList(IndexCompo).refJambCompo.IsReadOnly = False
|
|
'DoorActive.CompoList(IndexCompo).IsReadOnly = True
|
|
'If Not LoadCompoParam(DoorActive.CompoList(IndexCompo), DoorActive.TypePart) Then Return
|
|
For IndexParam As Integer = 0 To Local_Copo.CompoParamList.Count - 1
|
|
'Dim CmpPar As CompoParam = DoorActive.CompoList(IndexCompo).CompoParamList(IndexParam)
|
|
Dim CmpRefPar As CompoParam = Local_Copo.CompoParamList(IndexParam)
|
|
If TypeOf CmpRefPar Is TextBoxOnOffParam Then
|
|
'Dim TBoxPar As TextBoxOnOffParam = DirectCast(CmpPar, TextBoxOnOffParam)
|
|
Dim TBoxRefPar As TextBoxOnOffParam = DirectCast(CmpRefPar, TextBoxOnOffParam)
|
|
'CalcCompoParamVisibility(TBoxPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
'TBoxPar.IsReadOnly = True
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
ElseIf TypeOf CmpRefPar Is TextBoxParam Then
|
|
'Dim TBoxPar As TextBoxParam = DirectCast(CmpPar, TextBoxParam)
|
|
Dim TBoxRefPar As TextBoxParam = DirectCast(CmpRefPar, TextBoxParam)
|
|
'CalcCompoParamVisibility(TBoxPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
'TBoxPar.IsReadOnly = True
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
ElseIf TypeOf CmpRefPar Is ComboBoxOnOffParam Then
|
|
'Dim TBoxPar As ComboBoxOnOffParam = DirectCast(CmpPar, ComboBoxOnOffParam)
|
|
Dim TBoxRefPar As ComboBoxOnOffParam = DirectCast(CmpRefPar, ComboBoxOnOffParam)
|
|
'CalcCompoParamVisibility(TBoxPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
'TBoxPar.IsReadOnly = True
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
ElseIf TypeOf CmpRefPar Is ComboBoxParam Then
|
|
'Dim TBoxPar As ComboBoxParam = DirectCast(CmpPar, ComboBoxParam)
|
|
Dim TBoxRefPar As ComboBoxParam = DirectCast(CmpRefPar, ComboBoxParam)
|
|
'CalcCompoParamVisibility(TBoxPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
'TBoxPar.IsReadOnly = True
|
|
CalcCompoParamVisibility(TBoxRefPar.DDFName, TBoxRefPar.IsReadOnly)
|
|
End If
|
|
Next
|
|
ResetCompoParam()
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
DoorActive.CompoList(IndexCompo).IsReadOnly = True
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
|
|
' in fase di cricamento della porta verifico se posso esistere delle componenti da associare
|
|
' infatti potrebbe esistere una componente sull'anta ma non sul telaio
|
|
' il caso contrario è vietato dal programma (a meno che non sia stato modificato il ddf manualmente)
|
|
Public Function ReSearchFrameFile(ByVal CurrCompo As Compo) As Boolean
|
|
' se è la configurazione è di songola porta allora interrompi la costruzione
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return False
|
|
' nome del file Matchting.ini
|
|
Dim FrameFile As String = String.Empty
|
|
' percorso del file di Config.ini del file frame
|
|
Dim FrameFileConfig As String = String.Empty
|
|
' numero di ante presenti nel progetto corrente
|
|
Dim nDoorNbr As Integer = 1
|
|
|
|
' cerco il nome della componente da associare FrameFile
|
|
Dim CurrDoorHArdwareFile As String = CurrCompo.CompoType.Path & "\" & CurrCompo.TemplateSelItem
|
|
If Path.GetExtension(CurrDoorHArdwareFile) <> NGE_EXTENSION Then
|
|
CurrDoorHArdwareFile &= LUA_EXTENSION
|
|
End If
|
|
' cerco il campo [Match file] nel file lua della componente
|
|
If File.Exists(CurrDoorHArdwareFile) Then
|
|
Dim ReadCurrCompo() As String = File.ReadAllLines(CurrDoorHArdwareFile)
|
|
For LineIndex = 0 To ReadCurrCompo.Count - 1
|
|
If RegexFunction.IsMatchingParameterTitle(ReadCurrCompo(LineIndex)) Then
|
|
' mi preparo per leggere la prima riga dopo il titolo
|
|
Dim ParamIndex As Integer = 1
|
|
FrameFile = Trim(RegexFunction.ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_MATCHING_FILE))
|
|
While String.IsNullOrEmpty(FrameFile) And LineIndex + ParamIndex < ReadCurrCompo(LineIndex + ParamIndex).Count
|
|
ParamIndex += 1
|
|
FrameFile = Trim(RegexFunction.ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_MATCHING_FILE))
|
|
End While
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
' se non esiste nessun accoppiamento allora esco ed elimino la componente
|
|
If FrameFile.Contains("None") Then
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
' converto il numero di porte da string a int
|
|
Int32.TryParse(Map.refAssemblyPageVM.CurrAssembly.DoorNumber, nDoorNbr)
|
|
' cerco il nome nella tabella: se lo script lua da errori, e la variabile FrameFile è vuota esco
|
|
If String.IsNullOrEmpty(FrameFile) AndAlso
|
|
Not CalcCompoMatching(CurrCompo.CompoType.Path, nDoorNbr, CurrCompo.TemplateSelItem, FrameFile) Then
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
Return True
|
|
End Function
|
|
|
|
#End Region ' Associazione delle compo lette da ddf
|
|
|
|
#End Region ' Lettura Assemblato
|
|
|
|
#Region "RULES ASSEMBLY"
|
|
|
|
#Region "CreateRefCompo"
|
|
|
|
' questo metodo è chiamato dalla proprietà CompoBtn nella classe CompoPanelVM
|
|
' dopo aver aggiunto una componente da pulsantiera viene chiamato questo metodo che costruisce il riferimento
|
|
' o anche solo esegue la modifica dell'associzaione
|
|
Public Function CreateCompoOnJamb(ByRef CurrCompo As Compo, ByVal sSide As String, Optional ByVal sTypeDoor As String = "") As Boolean
|
|
Dim Local_CurrDoor As Part = Nothing
|
|
' eventualmente carico la porta indicata nella funzione
|
|
If Not String.IsNullOrEmpty(sTypeDoor) Then
|
|
Dim Local_CurrPartDoor As PartDoor = Map.refAssemblyPageVM.ReserchPartDoor(sTypeDoor)
|
|
If Not IsNothing(Local_CurrPartDoor) Then
|
|
Local_CurrDoor = Local_CurrPartDoor.Door
|
|
Else
|
|
Local_CurrDoor = Map.refPartPageVM.CurrPart
|
|
End If
|
|
Else
|
|
Local_CurrDoor = Map.refPartPageVM.CurrPart
|
|
End If
|
|
|
|
' se è la configurazione è di songola porta allora interrompi la costruzione
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return False
|
|
' nome del file Matchting.ini
|
|
Dim FrameFile As String = String.Empty
|
|
' percorso del file di Config.ini del file frame
|
|
Dim FrameFileConfig As String = String.Empty
|
|
' numero di ante presenti nel progetto corrente
|
|
Dim nDoorNbr As Integer = 1
|
|
|
|
' cerco nella configurazione della componente sulla porta il parametro Side
|
|
Dim Side As String = String.Empty
|
|
If Not String.IsNullOrEmpty(sSide) Then Side = sSide
|
|
' cerco nel file Config.ini il campo [PositionSide]
|
|
If String.IsNullOrEmpty(Side) Then
|
|
GetPrivateProfileJambSide(S_POSITIONSIDE, K_SIDE, Side, CurrCompo.CompoType.Path & "\" & CONFIGINI_FILE_NAME)
|
|
End If
|
|
' controllo sempre nell'elenco dei parametri se esiste un parametro di tipo Side
|
|
For IndexParam As Integer = 0 To CurrCompo.CompoParamList.Count - 1
|
|
If CurrCompo.CompoParamList(IndexParam).DDFName.ToLower = K_SIDE.ToLower Then
|
|
Side = DirectCast(CurrCompo.CompoParamList(IndexParam), ComboBoxParam).SelItem
|
|
Dim IndexDDF As Integer = DirectCast(CurrCompo.CompoParamList(IndexParam), ComboBoxParam).ItemList.IndexOf(Side)
|
|
If IndexDDF > -1 Then
|
|
Side = DirectCast(CurrCompo.CompoParamList(IndexParam), ComboBoxParam).ItemListDDF(IndexDDF)
|
|
End If
|
|
Exit For
|
|
End If
|
|
Next
|
|
' converto tutti i nomi che ho caricato in carattere minuscolo
|
|
If Not String.IsNullOrEmpty(Side) Then
|
|
Side = Side.ToLower
|
|
Dim ItemSplit As String() = Side.Split("_"c)
|
|
If ItemSplit.Count > 1 Then
|
|
Side = Trim(ItemSplit(0))
|
|
End If
|
|
End If
|
|
' a questo punto ricerco nella lista delle associazioni se esite il frame sul quale costruire il riferimento
|
|
' converto la posizione letta in valore numerico
|
|
' queste associazioni funzionano sulle ante, per i Jamb non ho studiato una conversione
|
|
If IsNothing(Local_CurrDoor) Then Return False
|
|
Dim nSide As Integer = 0
|
|
Select Case Side
|
|
Case "lock"
|
|
' se è LeftHand
|
|
If Local_CurrDoor.SwingAlias.Name.Contains("L") Then
|
|
nSide = 100
|
|
Else
|
|
nSide = 300
|
|
End If
|
|
Case "hinge"
|
|
If Local_CurrDoor.SwingAlias.Name.Contains("L") Then
|
|
nSide = 300
|
|
Else
|
|
nSide = 100
|
|
End If
|
|
Case "top"
|
|
nSide = 200
|
|
Case "bottom"
|
|
nSide = 400
|
|
End Select
|
|
|
|
' ricerco il PartDoor associato al side
|
|
Dim refPartDoor As PartDoor = Nothing
|
|
If Local_CurrDoor.TypePart.Contains("DO_") Then
|
|
For Each ItemPartDoor In ListPartDoor
|
|
If ItemPartDoor.Type = Local_CurrDoor.TypePart Then
|
|
For Each ItemAssociation In ItemPartDoor.ListAssociation
|
|
' verifico che esiesta un Part sul lato indicato dal side
|
|
If ItemAssociation.Side > nSide AndAlso ItemAssociation.Side < nSide + 100 Then
|
|
refPartDoor = ItemAssociation.refPartDoor
|
|
Exit For
|
|
End If
|
|
Next
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
refPartDoor = Map.refAssemblyPageVM.ReserchPartDoor(Local_CurrDoor.TypePart)
|
|
End If
|
|
' se non è stata trovata nessuna associazione esco
|
|
If IsNothing(refPartDoor) Then
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
|
|
' se l'associazione è un'anta allora verifico se la componente non sia un riferiememto
|
|
If refPartDoor.Door.TypePart.Contains("DO_") AndAlso Not IsNothing(CurrCompo.refCompoDoor) Then
|
|
Return False
|
|
End If
|
|
|
|
' cerco il nome della componente da associare FrameFile
|
|
Dim CurrDoorHArdwareFile As String = CurrCompo.CompoType.Path & "\" & CurrCompo.TemplateSelItem
|
|
If Path.GetExtension(CurrDoorHArdwareFile) <> NGE_EXTENSION Then
|
|
CurrDoorHArdwareFile &= LUA_EXTENSION
|
|
End If
|
|
' cerco il campo [Match file] nel file lua della componente
|
|
Dim sKey As String = K_MATCHING_FILE
|
|
' se il riferiemento è un'anta allora devo caricare il file "MatchingFileDoor"
|
|
If refPartDoor.Door.TypePart.Contains("DO_") Then
|
|
sKey = K_MATCHING_FILE_DOOR
|
|
End If
|
|
If File.Exists(CurrDoorHArdwareFile) Then
|
|
Dim ReadCurrCompo() As String = File.ReadAllLines(CurrDoorHArdwareFile)
|
|
For LineIndex = 0 To ReadCurrCompo.Count - 1
|
|
If RegexFunction.IsMatchingParameterTitle(ReadCurrCompo(LineIndex)) Then
|
|
' mi preparo per leggere la prima riga dopo il titolo
|
|
Dim ParamIndex As Integer = 1
|
|
FrameFile = Trim(RegexFunction.ParamLine(ReadCurrCompo(LineIndex + ParamIndex), sKey))
|
|
While String.IsNullOrEmpty(FrameFile) And LineIndex + ParamIndex < ReadCurrCompo(LineIndex + ParamIndex).Count
|
|
ParamIndex += 1
|
|
FrameFile = Trim(RegexFunction.ParamLine(ReadCurrCompo(LineIndex + ParamIndex), sKey))
|
|
End While
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
' se non esiste nessun accoppiamento allora esco ed elimino la componente
|
|
If FrameFile.Contains("None") Then
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
Local_CurrDoor.RemoveCompo(CurrCompo, True)
|
|
CurrCompo.refJambCompo = Nothing
|
|
End If
|
|
' 50144 =Warning, 50166 =Jamb compo does not exist
|
|
'MessageBox.Show(EgtMsg(50166), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
' converto il numero di porte da string a int
|
|
Int32.TryParse(Map.refAssemblyPageVM.CurrAssembly.DoorNumber, nDoorNbr)
|
|
' cerco il nome nella tabella: se lo script lua da errori, e la variabile FrameFile è vuota esco
|
|
If String.IsNullOrEmpty(FrameFile) AndAlso
|
|
Not CalcCompoMatching(CurrCompo.CompoType.Path, nDoorNbr, CurrCompo.TemplateSelItem, FrameFile) Then
|
|
' elimino la componente di riferimento
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
Local_CurrDoor.RemoveCompo(CurrCompo, True)
|
|
CurrCompo.refJambCompo = Nothing
|
|
End If
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
|
|
' costruisco il percosrso del file Config.ini associato al FrameFile
|
|
If Not SearchFileConfig(FrameFile, FrameFileConfig) Then
|
|
' 50144 =Warning, 50166 =Jamb compo does not exist
|
|
' MessageBox.Show(EgtMsg(50166), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
' se il file FrameFileConfig.ini non esiste allora elimino il riferimento
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
Local_CurrDoor.RemoveCompo(CurrCompo, True)
|
|
CurrCompo.refJambCompo = Nothing
|
|
End If
|
|
' restituisco false perchè la componente non è stata creata
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
Else
|
|
' inizio la lettura di FrameFileConfig
|
|
Dim FrameNameDDF As String = String.Empty
|
|
Dim FrameName As String = String.Empty
|
|
Dim FrameSide As String = String.Empty
|
|
Dim FrameFolderName As String = String.Empty
|
|
GetPrivateProfileCompoName(ConstCompo.S_COMPO, ConstCompo.K_NAME, FrameNameDDF, FrameName, FrameFileConfig)
|
|
GetPrivateProfileJambSide(S_POSITIONSIDE, K_SIDE, FrameSide, FrameFileConfig)
|
|
GetPrivateProfileFolderName(S_TEMPLATE, K_FOLDER_NAME, FrameFolderName, FrameFileConfig)
|
|
|
|
'Ogni volta che creo una componente elimino i precedenti riferimenti
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then Local_CurrDoor.RemoveCompo(CurrCompo, True)
|
|
If IsNothing(CurrCompo.refJambCompo) Then
|
|
' costruisco sul riferiento la nuova componente inserita
|
|
Dim refCompoType As New CompoType(FrameName, FrameNameDDF, Path.GetDirectoryName(FrameFileConfig), FrameSide, FrameFolderName)
|
|
' aggiungo la componete sul riferiento passato (caricando la lista dei file di tipo Frame)
|
|
Dim refPartDoor_IsFrame As Boolean = True
|
|
If refPartDoor.Door.TypePart.Contains("DO_") Then refPartDoor_IsFrame = False
|
|
CurrCompo.refJambCompo = refPartDoor.Door.AddNewCompo(refCompoType, refPartDoor_IsFrame)
|
|
CurrCompo.refJambCompo.refCompoDoor = CurrCompo
|
|
' se non è un frame allora sto costruendo su una anta
|
|
CurrCompo.refJambCompo.MatchedDoor = Not refPartDoor_IsFrame
|
|
' definsco se la componente deve essre ribalata (Top-Door2; Bottom-Door1 e una sola anta)
|
|
If Side = "top" And Local_CurrDoor.TypePart.Contains("DO_2") Then
|
|
CurrCompo.refJambCompo.OtherDoor = True
|
|
ElseIf Side = "bottom" And Local_CurrDoor.TypePart.Contains("DO_1") And m_DoorNumber <> "1" Then
|
|
CurrCompo.refJambCompo.OtherDoor = True
|
|
End If
|
|
End If
|
|
' setto il nome della componente da caricare
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
CurrCompo.refJambCompo.SplitBrandFile(FrameFile)
|
|
CurrCompo.refJambCompo.refCompoDoor = CurrCompo
|
|
Else
|
|
MessageBox.Show("File '" & FrameFile & "' exist, but it is not in the correct Directory!", EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
' assegno i parametri letti dallo script per il corretto posizionamento del pezzo ( solo se il pezzo corrente è un DO_)
|
|
If LoadCompoParam(CurrCompo, Local_CurrDoor.TypePart) Then
|
|
UpDateCurrCompoJamb(CurrCompo, Local_CurrDoor.TypePart)
|
|
ResetSTU()
|
|
ResetCompoParam()
|
|
Else
|
|
Dim Msg As String = String.Format(EgtMsg(50157), CurrCompo.CompoType.Path, MATCHING_FILE_NAME)
|
|
MessageBox.Show(Msg, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
' se sono arrivato in fondo significa che il riferiemnto è stato costruito
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
CurrCompo.refJambCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
Return True
|
|
End Function
|
|
|
|
' questa funzione è utilizzata per ricostruire (da Matching.lua) una componente del telaio a partire da essa stessa
|
|
Public Function CreateCompoOnJambFromJamb(ByRef CurrCompo As Compo, ByVal sSide As String) As Boolean
|
|
Dim IndexRefCompo As Integer = -1
|
|
' se è la configurazione è di songola porta allora interrompi la costruzione
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return False
|
|
' nome del file Matchting.ini
|
|
Dim FrameFile As String = String.Empty
|
|
' percorso del file di Config.ini del file frame
|
|
Dim FrameFileConfig As String = String.Empty
|
|
' numero di ante presenti nel progetto corrente
|
|
Dim nDoorNbr As Integer = 1
|
|
|
|
' ricerco il PartDoor associato al side (anche da anta ad anta)
|
|
Dim refPartDoor As PartDoor = Map.refAssemblyPageVM.ReserchPartDoor(Map.refPartPageVM.CurrPart.TypePart)
|
|
'If Map.refPartPageVM.CurrPart.TypePart.Contains("DO_") Then
|
|
' Return False
|
|
'Else
|
|
' refPartDoor = Map.refAssemblyPageVM.ReserchPartDoor(Map.refPartPageVM.CurrPart.TypePart)
|
|
'End If
|
|
|
|
' se non è stata trovata nessuna associazione esco
|
|
If IsNothing(refPartDoor) Then
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
|
|
' ricerco l'indice della componente che sto modificando
|
|
For Index As Integer = 0 To refPartDoor.Door.CompoList.Count - 1
|
|
If Trim(refPartDoor.Door.CompoList(Index).IdCode) = Trim(CurrCompo.IdCode) Then
|
|
IndexRefCompo = Index
|
|
End If
|
|
Next
|
|
|
|
' ricerco l'anta a cui devo fare riferimento (dalle informazioni della Compo e del tipo di Frame)
|
|
Dim LocalDoor As Part = Map.refAssemblyPageVM.ReserchPartDoor("DO_1").Door
|
|
If IsNothing(LocalDoor) Then
|
|
Return False
|
|
End If
|
|
If m_DoorNumber <> "1" Then
|
|
If refPartDoor.Door.TypePart.Contains("FT_") AndAlso CurrCompo.refJambCompo.OtherDoor Then
|
|
LocalDoor = Map.refAssemblyPageVM.ReserchPartDoor("DO_2").Door
|
|
ElseIf refPartDoor.Door.TypePart.Contains("FB_") AndAlso Not CurrCompo.refJambCompo.OtherDoor Then
|
|
LocalDoor = Map.refAssemblyPageVM.ReserchPartDoor("DO_2").Door
|
|
ElseIf refPartDoor.Door.TypePart.Contains("FR_") Then
|
|
LocalDoor = Map.refAssemblyPageVM.ReserchPartDoor("DO_2").Door
|
|
ElseIf refPartDoor.Door.TypePart.Contains("DO_1") Then
|
|
LocalDoor = Map.refAssemblyPageVM.ReserchPartDoor("DO_2").Door
|
|
End If
|
|
End If
|
|
|
|
' costruisco il nome del FrameFile
|
|
Dim DirectoryCompo As String = Path.GetFileName(CurrCompo.refJambCompo.CompoType.Path)
|
|
FrameFile = DirectoryCompo & "\" & CurrCompo.refJambCompo.TemplateSelItem
|
|
|
|
' costruisco il percosrso del file Config.ini associato al FrameFile
|
|
If Not SearchFileConfig(FrameFile, FrameFileConfig) Then
|
|
' 50144 =Warning, 50166 =Jamb compo does not exist
|
|
' MessageBox.Show(EgtMsg(50166), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
' se il file FrameFileConfig.ini non esiste allora elimino il riferimento
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
LocalDoor.RemoveCompo(CurrCompo, True)
|
|
CurrCompo.refJambCompo = Nothing
|
|
End If
|
|
' restituisco false perchè la componente non è stata creata
|
|
Return False
|
|
Else
|
|
' inizio la lettura di FrameFileConfig
|
|
Dim FrameNameDDF As String = String.Empty
|
|
Dim FrameName As String = String.Empty
|
|
Dim FrameSide As String = String.Empty
|
|
Dim FrameFolderName As String = String.Empty
|
|
GetPrivateProfileCompoName(ConstCompo.S_COMPO, ConstCompo.K_NAME, FrameNameDDF, FrameName, FrameFileConfig)
|
|
GetPrivateProfileJambSide(S_POSITIONSIDE, K_SIDE, FrameSide, FrameFileConfig)
|
|
GetPrivateProfileFolderName(S_TEMPLATE, K_FOLDER_NAME, FrameFolderName, FrameFileConfig)
|
|
|
|
'Ogni volta che creo una componente elimino i precedenti riferimenti
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then LocalDoor.RemoveCompo(CurrCompo, True)
|
|
If IsNothing(CurrCompo.refJambCompo) Then
|
|
' costruisco sul riferiento la nuova componente inserita
|
|
Dim refCompoType As New CompoType(FrameName, FrameNameDDF, Path.GetDirectoryName(FrameFileConfig), FrameSide, FrameFolderName)
|
|
' aggiungo la componete sul riferiento passato (caricando la lista dei file di tipo Frame solo per il telaio)
|
|
Dim refPartDoor_IsFrame As Boolean = True
|
|
If refPartDoor.Door.TypePart.Contains("DO_") Then refPartDoor_IsFrame = False
|
|
CurrCompo.refJambCompo = refPartDoor.Door.AddNewCompo(refCompoType, refPartDoor_IsFrame, IndexRefCompo)
|
|
CurrCompo.refJambCompo.refCompoDoor = CurrCompo
|
|
' definsco se la componente deve essre ribalata (Top-Door2; Bottom-Door1 e una sola anta)
|
|
If sSide = "top" And LocalDoor.TypePart.Contains("DO_2") Then
|
|
CurrCompo.refJambCompo.OtherDoor = True
|
|
ElseIf sSide = "bottom" And LocalDoor.TypePart.Contains("DO_1") And m_DoorNumber <> "1" Then
|
|
CurrCompo.refJambCompo.OtherDoor = True
|
|
End If
|
|
End If
|
|
' setto il nome della componente da caricare
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
CurrCompo.refJambCompo.SplitBrandFile(FrameFile)
|
|
CurrCompo.refJambCompo.refCompoDoor = CurrCompo
|
|
Else
|
|
' 50549=File {0} exist, but it is not in the correct Directory!
|
|
Dim sMessageError As String = String.Format(EgtMsg(50549), FrameFile)
|
|
MessageBox.Show(sMessageError, EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Collapsed
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
' assegno i parametri letti dallo script per il corretto posizionamento del pezzo ( solo se il pezzo corrente è un DO_)
|
|
If LoadCompoParam(CurrCompo, LocalDoor.TypePart) Then
|
|
UpDateCurrCompoJamb(CurrCompo, LocalDoor.TypePart)
|
|
ResetSTU()
|
|
ResetCompoParam()
|
|
Else
|
|
Dim Msg As String = String.Format(EgtMsg(50157), CurrCompo.CompoType.Path, MATCHING_FILE_NAME)
|
|
MessageBox.Show(Msg, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
' se sono arrivato in fondo significa che il riferiemnto è stato costruito
|
|
CurrCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
CurrCompo.refJambCompo.VisibilitiReloadBtn = Visibility.Visible
|
|
Return True
|
|
End Function
|
|
|
|
#End Region ' CreateRefCompo
|
|
|
|
' ha lo scopo di creare una copia dei riferimenti dei PartDoor
|
|
' per permettere di scrivere in modo più semplice i metodi
|
|
Private Sub SetPartDoorCurrAssembly()
|
|
m_JambT = Nothing
|
|
m_JambB = Nothing
|
|
m_JambL = Nothing
|
|
m_JambR = Nothing
|
|
m_Door1 = Nothing
|
|
m_Door2 = Nothing
|
|
For IndexPartDoor As Integer = 0 To ListPartDoor.Count - 1
|
|
If ListPartDoor(IndexPartDoor).Type.Contains("FT_") Then
|
|
m_JambT = ListPartDoor(IndexPartDoor).Door
|
|
ElseIf ListPartDoor(IndexPartDoor).Type.Contains("FB_") Then
|
|
m_JambB = ListPartDoor(IndexPartDoor).Door
|
|
ElseIf ListPartDoor(IndexPartDoor).Type.Contains("FL_") Then
|
|
m_JambL = ListPartDoor(IndexPartDoor).Door
|
|
ElseIf ListPartDoor(IndexPartDoor).Type.Contains("FR_") Then
|
|
m_JambR = ListPartDoor(IndexPartDoor).Door
|
|
ElseIf ListPartDoor(IndexPartDoor).Type.Contains("DO_1") Then
|
|
m_Door1 = ListPartDoor(IndexPartDoor).Door
|
|
ElseIf ListPartDoor(IndexPartDoor).Type.Contains("DO_2") Then
|
|
m_Door2 = ListPartDoor(IndexPartDoor).Door
|
|
End If
|
|
Next
|
|
NotifyPropertyChanged("JambExists")
|
|
End Sub
|
|
|
|
Public ReadOnly Property JambExists As Boolean
|
|
Get
|
|
If Not IsNothing(m_JambL) AndAlso Not IsNothing(m_JambR) AndAlso Not IsNothing(m_JambT) Then
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Get
|
|
End Property
|
|
|
|
' gestisce la chimata delle funzioni a seconda della modifica eseguita
|
|
#Region "DIMENSIONING"
|
|
|
|
' Durante la costruzione di un nuovo assemblato, oppure quando viene aggiunta/rimossa un'anta
|
|
' una volta creata la prima porta questa funzione calcola le dimensioni del telaio
|
|
Public Sub SetNewDimensionAssembly(ByVal Optional IsNewAssembly As Boolean = False)
|
|
' permette di creare una copia degli oggetti di tipo PartDoor presenti nell'assemblato
|
|
SetPartDoorCurrAssembly()
|
|
' se non esiste la prima porta allora non calcolo le dimensioni del telaio
|
|
If IsNothing(m_Door1) Then Return
|
|
' i parametri che devono ancora essere definiti affinchè funzioni tutto sono
|
|
' Size, Swing, Rabbet
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return
|
|
SwingJamb()
|
|
HeightJamb(IsNewAssembly)
|
|
TopBottomWidth()
|
|
HeightDoor(IsNewAssembly)
|
|
TopRabbetJamb()
|
|
HingeRabbetJamb()
|
|
BottomRabbetJamb()
|
|
MaterialJamb()
|
|
End Sub
|
|
|
|
' riceve il nome del parametro modificato ed associa la funzione per il ridimensionamento
|
|
Public Sub SetDimension(sParameter As String, Optional CurrCompo As Compo = Nothing)
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return
|
|
' riceve il nome della modifica, e indirizza la funzione preposta alla modifica
|
|
Select Case sParameter
|
|
|
|
Case "CreateRefCompo"
|
|
If BuiltReffCompo Then CreateCompoOnJamb(CurrCompo, "")
|
|
|
|
Case "JambIsCheked"
|
|
Map.refAssemblyManagerVM.CreateJamb(Me, False)
|
|
Map.refAssemblyManagerVM.LoadOM_M_ET(Me)
|
|
Map.refAssemblyManagerVM.CreateAssociation(Me)
|
|
SetNewDimensionAssembly()
|
|
' UpDateAllCompo()
|
|
Map.refSceneManagerVM.RefreshBtn()
|
|
|
|
Case "Height"
|
|
HeightJamb()
|
|
HeightDoor()
|
|
TopRabbetJamb()
|
|
BottomRabbetJamb()
|
|
HingeRabbetJamb()
|
|
SetVarAssembly()
|
|
UpDateAllCompo()
|
|
|
|
Case "Width"
|
|
TopBottomWidth()
|
|
TopRabbetJamb()
|
|
BottomRabbetJamb()
|
|
HingeRabbetJamb()
|
|
SetVarAssembly()
|
|
UpDateAllCompo()
|
|
|
|
Case "Thickness"
|
|
TopRabbetJamb()
|
|
UpDateAllCompo()
|
|
|
|
Case "Swing"
|
|
UpDateCompolistOnJamb()
|
|
SwingJamb()
|
|
SetPartDoorCurrAssembly()
|
|
CreateAssembly(True)
|
|
'UpDateAllCompo()
|
|
|
|
Case "DoorNumber"
|
|
ClearRefOnAssembly()
|
|
SetPartDoorCurrAssembly()
|
|
ReverseDoor()
|
|
Map.refAssemblyManagerVM.CreateDoor(Me)
|
|
Map.refAssemblyManagerVM.CreateAssociation(Me)
|
|
SetPartDoorCurrAssembly()
|
|
SetVarAssembly()
|
|
ReloadAllCompoDoor1()
|
|
ReverseDoor()
|
|
UpDateAllCompo()
|
|
TopBottomWidth()
|
|
SwingJamb()
|
|
HeightDoor()
|
|
TopRabbetJamb()
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' Dimensioning
|
|
|
|
#Region "UpDateRefCompo"
|
|
|
|
' ricostruisce tutte le componenti del telaio
|
|
Public Sub CreateAssembly(Optional bAllDoors As Boolean = False)
|
|
If ListPartDoorOfDoor.Count < 1 Then Return
|
|
'If Not JambExists Then SetDimension("JambIsCheked")
|
|
Dim nIndexDoor As Integer = 0
|
|
If Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage AndAlso Not bAllDoors Then
|
|
If Map.refPartPageVM.CurrPart.TypePart.Contains("DO_") Then
|
|
If IsThereModifyCompoParamRef(Map.refPartPageVM.CurrPart.CompoList) Then
|
|
' 50550=Every componente on jambs will be relocated, do you want to continue , 50144=Warning
|
|
If MessageBox.Show(EgtMsg(50550), EgtMsg(50144), MessageBoxButton.YesNo, MessageBoxImage.Asterisk) = MessageBoxResult.No Then
|
|
Return
|
|
End If
|
|
End If
|
|
For IndexCompo = 0 To Map.refPartPageVM.CurrPart.CompoList.Count - 1
|
|
CreateCompoOnJamb(Map.refPartPageVM.CurrPart.CompoList(IndexCompo), "")
|
|
Next
|
|
End If
|
|
ElseIf Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage AndAlso bAllDoors Then
|
|
' verifico per entrmabe le ante se posso procedere
|
|
For Each ItemPart In ListPartDoorOfDoor
|
|
For IndexCompo = 0 To ItemPart.Door.CompoList.Count - 1
|
|
If IsThereModifyCompoParamRef(ItemPart.Door.CompoList) Then
|
|
If MessageBox.Show(EgtMsg(50550), EgtMsg(50144), MessageBoxButton.YesNo, MessageBoxImage.Asterisk) = MessageBoxResult.No Then
|
|
Return
|
|
Else
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
Next
|
|
For Each ItemPart In ListPartDoorOfDoor
|
|
For IndexCompo = 0 To ItemPart.Door.CompoList.Count - 1
|
|
CreateCompoOnJamb(ItemPart.Door.CompoList(IndexCompo), "", ItemPart.Door.TypePart)
|
|
' potrebbe capitare che vengano eliminate delle componenti, quindi è meglio controllare
|
|
If IndexCompo = ItemPart.Door.CompoList.Count - 1 Then Exit For
|
|
Next
|
|
Next
|
|
End If
|
|
Map.refSceneManagerVM.RefreshBtn()
|
|
End Sub
|
|
|
|
' appena verifico che esiste anche solo una componente modificata esco
|
|
Private Function IsThereModifyCompoParamRef(ByVal CompoList As ObservableCollection(Of Compo)) As Boolean
|
|
For Each ItemCompo In CompoList
|
|
If Not IsNothing(ItemCompo.refJambCompo) Then
|
|
For Each ItemParam In ItemCompo.refJambCompo.CompoParamList
|
|
If ItemParam.IsModifingRefCompoParam Then Return True
|
|
Next
|
|
End If
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
' è chiamata ogni volta che viene modificato un parametro del general dell'assemblato
|
|
Public Sub UpDateAllCompo()
|
|
Dim IdexDoorNumber As Integer = 0
|
|
IdexDoorNumber = CInt(m_DoorNumber)
|
|
If ListPartDoorOfDoor.Count < 1 Then Return
|
|
For IndexDoor As Integer = 0 To IdexDoorNumber - 1
|
|
For IndexCompo As Integer = 0 To ListPartDoorOfDoor(IndexDoor).Door.CompoList.Count - 1
|
|
' per ogni componente di ogni porta, se esiste una componente di riferimento
|
|
Dim CurrCompo As Compo = ListPartDoorOfDoor(IndexDoor).Door.CompoList(IndexCompo)
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
' ricerco il file lua che gestisce le associazioni delle componenti
|
|
If LoadCompoParam(CurrCompo, ListPartDoorOfDoor(IndexDoor).Door.TypePart) Then
|
|
UpDateCurrCompoJamb(CurrCompo, ListPartDoorOfDoor(IndexDoor).Door.TypePart)
|
|
ResetCompoParam()
|
|
Else
|
|
Dim Msg As String = String.Format(EgtMsg(50157), CurrCompo.CompoType.Path, MATCHING_FILE_NAME)
|
|
MessageBox.Show(Msg, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
End If
|
|
Next
|
|
Next
|
|
End Sub
|
|
|
|
' quando carico un assemblato devo ricalcolare tutti i parametri OrigValue
|
|
Public Sub UpDateAllOrigValue()
|
|
Dim IdexDoorNumber As Integer = 0
|
|
IdexDoorNumber = CInt(m_DoorNumber)
|
|
If ListPartDoorOfDoor.Count < 1 Then Return
|
|
For IndexDoor As Integer = 0 To IdexDoorNumber - 1
|
|
For IndexCompo As Integer = 0 To ListPartDoorOfDoor(IndexDoor).Door.CompoList.Count - 1
|
|
' per ogni componente di ogni porta, se esiste una componente di riferimento
|
|
Dim CurrCompo As Compo = ListPartDoorOfDoor(IndexDoor).Door.CompoList(IndexCompo)
|
|
If Not IsNothing(CurrCompo.refJambCompo) Then
|
|
' ricerco il file lua che gestisce le associazioni delle componenti
|
|
If LoadCompoParam(CurrCompo, ListPartDoorOfDoor(IndexDoor).Door.TypePart) Then
|
|
UpdateOrigValue(CurrCompo, ListPartDoorOfDoor(IndexDoor).Door.TypePart)
|
|
ResetCompoParam()
|
|
End If
|
|
End If
|
|
Next
|
|
Next
|
|
End Sub
|
|
|
|
' Ricevuta la componente Compo aggiorna la refCompo - Usata fino alla versione 2.2e1 del 7/5/2020
|
|
Public Sub UpDateCurrCompoJamb_OldVersion(ByRef CurrCompo As Compo, ByRef sCurrTypeDoor As String)
|
|
CurrCompo.refJambCompo.IsReadOnly = False
|
|
' devo distinguere il caso della componente sulla porta o sul jamb
|
|
' se il numero di elementi presenti nella lista riferita al jamb sono diversi da quelli riferiti all'anta
|
|
If CurrCompo.refJambCompo.CompoParamList.Count <> CurrCompo.CompoParamList.Count Then Return
|
|
|
|
' se il primo controllo è andato a buon fine passo al caricamento dei dati
|
|
For IndexParam As Integer = 0 To CurrCompo.refJambCompo.CompoParamList.Count - 1
|
|
If TypeOf CurrCompo.refJambCompo.CompoParamList(IndexParam) Is TextBoxOnOffParam AndAlso
|
|
CurrCompo.CompoParamList(IndexParam).DDFName = CurrCompo.refJambCompo.CompoParamList(IndexParam).DDFName Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
Dim TBoxPar As TextBoxOnOffParam = DirectCast(CurrCompo.CompoParamList(IndexParam), TextBoxOnOffParam)
|
|
Dim TBoxRefPar As TextBoxOnOffParam = DirectCast(CurrCompo.refJambCompo.CompoParamList(IndexParam), TextBoxOnOffParam)
|
|
' assegno i valori della componente dell'anta, e ricevo i valori da asseganre alla compente sul jamb
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.m_Value, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
TBoxRefPar.SetIsActive(TBoxPar.IsActive)
|
|
ElseIf TypeOf CurrCompo.refJambCompo.CompoParamList(IndexParam) Is ComboBoxOnOffParam AndAlso
|
|
CurrCompo.CompoParamList(IndexParam).DDFName = CurrCompo.refJambCompo.CompoParamList(IndexParam).DDFName Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
' l'unica operazione che eseguo è di abilitare la combobox
|
|
Dim CBoxRefPar As ComboBoxOnOffParam = DirectCast(CurrCompo.refJambCompo.CompoParamList(IndexParam), ComboBoxOnOffParam)
|
|
CBoxRefPar.IsReadOnly = False
|
|
Dim CBoxPar As ComboBoxOnOffParam = DirectCast(CurrCompo.CompoParamList(IndexParam), ComboBoxOnOffParam)
|
|
For Each ItemCombo In CBoxRefPar.ItemList
|
|
If ItemCombo = CBoxPar.SelItem Then
|
|
CBoxRefPar.SetSelItem(ItemCombo)
|
|
Exit For
|
|
End If
|
|
Next
|
|
CBoxRefPar.SetIsActive(CBoxPar.IsActive)
|
|
ElseIf TypeOf CurrCompo.refJambCompo.CompoParamList(IndexParam) Is TextBoxParam AndAlso
|
|
CurrCompo.CompoParamList(IndexParam).DDFName = CurrCompo.refJambCompo.CompoParamList(IndexParam).DDFName Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
Dim TBoxPar As TextBoxParam = DirectCast(CurrCompo.CompoParamList(IndexParam), TextBoxParam)
|
|
Dim TBoxRefPar As TextBoxParam = DirectCast(CurrCompo.refJambCompo.CompoParamList(IndexParam), TextBoxParam)
|
|
' assegno i valori della componente dell'anta, e ricevo i valori da asseganre alla compente sul jamb
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.m_Value, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
ElseIf TypeOf CurrCompo.refJambCompo.CompoParamList(IndexParam) Is ComboBoxParam AndAlso
|
|
CurrCompo.CompoParamList(IndexParam).DDFName = CurrCompo.refJambCompo.CompoParamList(IndexParam).DDFName Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
' l'unica operazione che eseguo è di abilitare la combobox
|
|
Dim CBoxRefPar As ComboBoxParam = DirectCast(CurrCompo.refJambCompo.CompoParamList(IndexParam), ComboBoxParam)
|
|
CBoxRefPar.IsReadOnly = False
|
|
Dim CBoxPar As ComboBoxParam = DirectCast(CurrCompo.CompoParamList(IndexParam), ComboBoxParam)
|
|
For Each ItemCombo In CBoxRefPar.ItemList
|
|
If ItemCombo = CBoxPar.SelItem Then
|
|
CBoxRefPar.SetSelItem(ItemCombo)
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
' Ricevuta la componente Compo aggiorna la refCompo - In uso dalla versione 2.2e1 del 8/5/2020
|
|
Public Sub UpDateCurrCompoJamb(ByRef CurrCompo As Compo, ByRef sCurrTypeDoor As String, Optional bOverWrite As Boolean = True)
|
|
CurrCompo.refJambCompo.IsReadOnly = False
|
|
' ad ogni parametro (sul compo frame) associo il parametro con lo stesso nome (sul compo door)
|
|
For Each ItemCompoRef In CurrCompo.refJambCompo.CompoParamList
|
|
' cerco il parametro con lo stesso nome nella componente della porta
|
|
For Each ItemCompo In CurrCompo.CompoParamList
|
|
' se trovo lo stesso nome
|
|
If ItemCompoRef.DDFName = ItemCompo.DDFName Then
|
|
' verifico che siano anche dello stesso tipo
|
|
If TypeOf ItemCompoRef Is TextBoxOnOffParam AndAlso TypeOf ItemCompo Is TextBoxOnOffParam Then
|
|
Dim TBoxPar As TextBoxOnOffParam = DirectCast(ItemCompo, TextBoxOnOffParam)
|
|
Dim TBoxRefPar As TextBoxOnOffParam = DirectCast(ItemCompoRef, TextBoxOnOffParam)
|
|
' non ricalcolo il parametro
|
|
If TBoxRefPar.IsModifingRefCompoParam AndAlso Not bOverWrite Then
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.OrigValue, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.ConfigurationParameters, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
Continue For
|
|
End If
|
|
' assegno i valori della componente dell'anta, e ricevo i valori da asseganre alla compente sul jamb
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.m_Value, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.ConfigurationParameters, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
TBoxRefPar.OrigValue = TBoxRefPar.m_Value
|
|
TBoxRefPar.SetIsActive(TBoxPar.IsActive)
|
|
ElseIf TypeOf ItemCompoRef Is ComboBoxOnOffParam AndAlso TypeOf ItemCompo Is ComboBoxOnOffParam Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
' l'unica operazione che eseguo è di abilitare la combobox
|
|
Dim CBoxRefPar As ComboBoxOnOffParam = DirectCast(ItemCompoRef, ComboBoxOnOffParam)
|
|
CBoxRefPar.IsReadOnly = False
|
|
Dim CBoxPar As ComboBoxOnOffParam = DirectCast(ItemCompo, ComboBoxOnOffParam)
|
|
For Each ItemCombo In CBoxRefPar.ItemList
|
|
If ItemCombo = CBoxPar.SelItem Then
|
|
CBoxRefPar.SetSelItem(ItemCombo)
|
|
CBoxRefPar.OrigItem = CBoxPar.SelItem
|
|
Exit For
|
|
End If
|
|
Next
|
|
CBoxRefPar.SetIsActive(CBoxPar.IsActive)
|
|
ElseIf TypeOf ItemCompoRef Is TextBoxParam AndAlso TypeOf ItemCompo Is TextBoxParam Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
Dim TBoxRefPar As TextBoxParam = DirectCast(ItemCompoRef, TextBoxParam)
|
|
Dim TBoxPar As TextBoxParam = DirectCast(ItemCompo, TextBoxParam)
|
|
If TBoxRefPar.IsModifingRefCompoParam AndAlso Not bOverWrite Then
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.OrigValue, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.ConfigurationParameters, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
Continue For
|
|
End If
|
|
' assegno i valori della componente dell'anta, e ricevo i valori da asseganre alla compente sul jamb
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.m_Value, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.ConfigurationParameters, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
TBoxRefPar.OrigValue = TBoxRefPar.m_Value
|
|
ElseIf TypeOf ItemCompoRef Is ComboBoxParam AndAlso TypeOf ItemCompo Is ComboBoxParam Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
' l'unica operazione che eseguo è di abilitare la combobox
|
|
Dim CBoxRefPar As ComboBoxParam = DirectCast(ItemCompoRef, ComboBoxParam)
|
|
CBoxRefPar.IsReadOnly = False
|
|
Dim CBoxPar As ComboBoxParam = DirectCast(ItemCompo, ComboBoxParam)
|
|
For Each ItemCombo In CBoxRefPar.ItemList
|
|
If ItemCombo = CBoxPar.SelItem Then
|
|
CBoxRefPar.SetSelItem(ItemCombo)
|
|
CBoxRefPar.OrigItem = CBoxPar.SelItem
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
' passo al parametro successivo della lista del CompoRef
|
|
Exit For
|
|
End If
|
|
Next
|
|
Next
|
|
End Sub
|
|
|
|
' carico i valori OrigValue in fase di lettura di un assemblato nuovo
|
|
Public Sub UpdateOrigValue(ByRef CurrCompo As Compo, ByRef sCurrTypeDoor As String)
|
|
CurrCompo.refJambCompo.IsReadOnly = False
|
|
' ad ogni parametro (sul compo frame) associo il parametro con lo stesso nome (sul compo door)
|
|
For Each ItemCompoRef In CurrCompo.refJambCompo.CompoParamList
|
|
' cerco il parametro con lo stesso nome nella componente della porta
|
|
For Each ItemCompo In CurrCompo.CompoParamList
|
|
' se trovo lo stesso nome
|
|
If ItemCompoRef.DDFName = ItemCompo.DDFName Then
|
|
' verifico che siano anche dello stesso tipo
|
|
If TypeOf ItemCompoRef Is TextBoxOnOffParam AndAlso TypeOf ItemCompo Is TextBoxOnOffParam Then
|
|
Dim TBoxPar As TextBoxOnOffParam = DirectCast(ItemCompo, TextBoxOnOffParam)
|
|
Dim TBoxRefPar As TextBoxOnOffParam = DirectCast(ItemCompoRef, TextBoxOnOffParam)
|
|
' assegno i valori della componente dell'anta, e ricevo i valori da asseganre alla compente sul jamb
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.OrigValue, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.ConfigurationParameters, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
' confronto il valore calcolato con il parametro caricato da DDF
|
|
If Trim(TBoxRefPar.m_Value) <> Trim(TBoxRefPar.OrigValue) Then
|
|
Dim dValue As Double
|
|
Dim dOrigValue As Double
|
|
If Not IsNothing(TBoxRefPar.m_Value) AndAlso Not IsNothing(TBoxRefPar.OrigValue) Then
|
|
StringToDouble(TBoxRefPar.m_Value, dValue)
|
|
StringToDouble(TBoxRefPar.OrigValue, dOrigValue)
|
|
If dValue <> dOrigValue Then
|
|
TBoxRefPar.IsModifingRefCompoParam = True
|
|
Else
|
|
TBoxRefPar.IsModifingRefCompoParam = False
|
|
End If
|
|
End If
|
|
'TBoxRefPar.IsModifingRefCompoParam = True
|
|
End If
|
|
ElseIf TypeOf ItemCompoRef Is TextBoxParam AndAlso TypeOf ItemCompo Is TextBoxParam Then
|
|
' ho controllato che i nome ddf del parametro sul jamb è lo stesso che sta sull'anta
|
|
Dim TBoxRefPar As TextBoxParam = DirectCast(ItemCompoRef, TextBoxParam)
|
|
Dim TBoxPar As TextBoxParam = DirectCast(ItemCompo, TextBoxParam)
|
|
' assegno i valori della componente dell'anta, e ricevo i valori da asseganre alla compente sul jamb
|
|
CalcCompoParamValue(TBoxPar.DDFName, TBoxPar.m_Value, TBoxRefPar.OrigValue, TBoxRefPar.IsReadOnly, sCurrTypeDoor, CurrCompo.ConfigurationParameters, CurrCompo.refJambCompo.ConfigurationParameters)
|
|
' confronto il valore calcolato con il parametro caricato da DDF
|
|
If Trim(TBoxRefPar.m_Value) <> Trim(TBoxRefPar.OrigValue) Then
|
|
Dim dValue As Double
|
|
Dim dOrigValue As Double
|
|
If Not IsNothing(TBoxRefPar.m_Value) AndAlso Not IsNothing(TBoxRefPar.OrigValue) Then
|
|
StringToDouble(TBoxRefPar.m_Value, dValue)
|
|
StringToDouble(TBoxRefPar.OrigValue, dOrigValue)
|
|
If dValue <> dOrigValue Then
|
|
TBoxRefPar.IsModifingRefCompoParam = True
|
|
Else
|
|
TBoxRefPar.IsModifingRefCompoParam = False
|
|
End If
|
|
End If
|
|
'TBoxRefPar.IsModifingRefCompoParam = True
|
|
End If
|
|
End If
|
|
' passo al parametro successivo della lista del CompoRef
|
|
Exit For
|
|
End If
|
|
Next
|
|
Next
|
|
End Sub
|
|
|
|
' copia i parametri di una componente (PrecCompo) su un'altra componente (NewCompo, solo se hanno lo stesso nome)
|
|
Public Sub CopyParam(ByRef PrecCompo As Compo, ByRef NewCompo As Compo)
|
|
If PrecCompo.TemplateSelItem <> NewCompo.TemplateSelItem Then Return
|
|
For IndexParam As Integer = 0 To PrecCompo.CompoParamList.Count - 1
|
|
If TypeOf PrecCompo.CompoParamList(IndexParam) Is TextBoxOnOffParam AndAlso
|
|
PrecCompo.CompoParamList(IndexParam).DDFName = NewCompo.CompoParamList(IndexParam).DDFName Then
|
|
Dim TBoxPar As TextBoxOnOffParam = DirectCast(PrecCompo.CompoParamList(IndexParam), TextBoxOnOffParam)
|
|
Dim TBoxNewPar As TextBoxOnOffParam = DirectCast(NewCompo.CompoParamList(IndexParam), TextBoxOnOffParam)
|
|
If TBoxPar.EnableCopy Then
|
|
TBoxNewPar.SetValue(TBoxPar.Value)
|
|
TBoxNewPar.SetIsActive(TBoxPar.IsActive)
|
|
End If
|
|
ElseIf TypeOf PrecCompo.CompoParamList(IndexParam) Is TextBoxParam AndAlso
|
|
PrecCompo.CompoParamList(IndexParam).DDFName = NewCompo.CompoParamList(IndexParam).DDFName Then
|
|
Dim TBoxPar As TextBoxParam = DirectCast(PrecCompo.CompoParamList(IndexParam), TextBoxParam)
|
|
Dim TBoxNewPar As TextBoxParam = DirectCast(NewCompo.CompoParamList(IndexParam), TextBoxParam)
|
|
If TBoxPar.EnableCopy Then
|
|
TBoxNewPar.SetValue(TBoxPar.Value)
|
|
End If
|
|
ElseIf TypeOf PrecCompo.CompoParamList(IndexParam) Is ComboBoxOnOffParam AndAlso
|
|
PrecCompo.CompoParamList(IndexParam).DDFName = NewCompo.CompoParamList(IndexParam).DDFName Then
|
|
Dim CBoxPar As ComboBoxOnOffParam = DirectCast(PrecCompo.CompoParamList(IndexParam), ComboBoxOnOffParam)
|
|
Dim CBoxNewPar As ComboBoxOnOffParam = DirectCast(NewCompo.CompoParamList(IndexParam), ComboBoxOnOffParam)
|
|
If CBoxNewPar.EnableCopy Then
|
|
CBoxNewPar.SetSelItem(CBoxNewPar.ItemList(CBoxPar.ItemList.IndexOf(CBoxPar.SelItem)))
|
|
CBoxNewPar.SetIsActive(CBoxPar.IsActive)
|
|
End If
|
|
ElseIf TypeOf PrecCompo.CompoParamList(IndexParam) Is ComboBoxParam AndAlso
|
|
PrecCompo.CompoParamList(IndexParam).DDFName = NewCompo.CompoParamList(IndexParam).DDFName Then
|
|
Dim CBoxPar As ComboBoxParam = DirectCast(PrecCompo.CompoParamList(IndexParam), ComboBoxParam)
|
|
Dim CBoxNewPar As ComboBoxParam = DirectCast(NewCompo.CompoParamList(IndexParam), ComboBoxParam)
|
|
If CBoxNewPar.EnableCopy Then
|
|
CBoxNewPar.SetSelItem(CBoxNewPar.ItemList(CBoxNewPar.ItemList.IndexOf(CBoxPar.SelItem)))
|
|
End If
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
|
|
|
|
#End Region ' UpDateRefCompo
|
|
|
|
#Region "HEIGHT"
|
|
|
|
' calcola l'altezza dei JambLeft e JambRight
|
|
Public Sub HeightJamb(ByVal Optional IsNewAssembly As Boolean = False)
|
|
' se ho impostanto l'area di lavoro non modifico l'altezza dei jamb
|
|
If Dimension Then
|
|
If Not IsNothing(m_JambL) Then m_JambL.SetHeight(m_AssemblyHeight)
|
|
If Not IsNothing(m_JambR) Then m_JambR.SetHeight(m_AssemblyHeight)
|
|
Return
|
|
End If
|
|
|
|
' vericfico che almeno uno su due esista
|
|
If (IsNothing(m_JambL) OrElse IsNothing(m_JambR)) AndAlso IsNothing(m_Door1) Then Return
|
|
' se almeno un jamb esiste continuo
|
|
Dim dLightUp As Double
|
|
Dim dLightBottom As Double
|
|
Dim dThicknessHead As Double
|
|
Dim dHeight As Double
|
|
Dim dOverlapTop As Double
|
|
Dim dThicknessJamb As Double
|
|
Dim dThicknessBottm As Double
|
|
Dim dOverlapBottom As Double
|
|
StringToDouble(LightUp, dLightUp)
|
|
StringToDouble(LightBottom, dLightBottom)
|
|
StringToDouble(ThicknessHead, dThicknessHead)
|
|
StringToDouble(m_Door1.Height, dHeight)
|
|
StringToDouble(ThicknessBottom, dThicknessBottm)
|
|
StringToDouble(OverlapBottom, dOverlapBottom)
|
|
|
|
'If IsNothing(Map.refPartPageVM.CurrPart) OrElse Not Map.refPartPageVM.CurrPart.TypePart.Contains("DO_") Then
|
|
' StringToDouble(m_Door1.Height, dHeight)
|
|
'Else
|
|
' StringToDouble(Map.refPartPageVM.CurrPart.Height, dHeight)
|
|
'End If
|
|
|
|
If Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso Map.refPartPageVM.CurrPart.TypePart.Contains("DO_") AndAlso
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage AndAlso
|
|
Not IsNewAssembly Then
|
|
StringToDouble(Map.refPartPageVM.CurrPart.Height, dHeight)
|
|
Else
|
|
StringToDouble(m_Door1.Height, dHeight)
|
|
End If
|
|
|
|
StringToDouble(OverlapTop, dOverlapTop)
|
|
StringToDouble(Width, dThicknessJamb)
|
|
Dim HJamb As Double = dLightBottom + dHeight + dLightUp + dThicknessHead - dOverlapTop
|
|
Dim HJambExterior As Double = HJamb + dThicknessBottm - dOverlapBottom
|
|
' se è exterior
|
|
If Map.refAssemblyPageVM.CurrAssembly.Exterior Then
|
|
If Not IsNothing(m_JambL) Then m_JambL.SetHeight(DoubleToString(HJambExterior, 4))
|
|
If Not IsNothing(m_JambR) Then m_JambR.SetHeight(DoubleToString(HJambExterior, 4))
|
|
Else
|
|
If Not IsNothing(m_JambL) Then m_JambL.SetHeight(DoubleToString(HJamb, 4))
|
|
If Not IsNothing(m_JambR) Then m_JambR.SetHeight(DoubleToString(HJamb, 4))
|
|
End If
|
|
NotifyPropertyChanged("AssemblyHeight")
|
|
|
|
End Sub
|
|
|
|
' Ricalcola la dimensione di tutte le porte ricevendo come valore esterno la dimensione della porta modificata
|
|
Public Sub HeightDoor(ByVal Optional IsNewAssembly As Boolean = False)
|
|
Dim HeightDoor As String = String.Empty
|
|
Dim nTH As Double = 0
|
|
Dim nTB As Double = 0
|
|
Dim nLU As Double = 0
|
|
Dim nLB As Double = 0
|
|
Dim nOLT As Double = 0
|
|
Dim nOLB As Double = 0
|
|
StringToDouble(m_LightUp, nLU)
|
|
StringToDouble(m_LightBottom, nLB)
|
|
StringToDouble(m_ThicknessHead, nTH)
|
|
StringToDouble(m_OverlapTop, nOLT)
|
|
StringToDouble(m_ThicknessBottom, nTB)
|
|
StringToDouble(m_OverlapBottom, nOLB)
|
|
|
|
' carico il valore che è stato modificato
|
|
If Not IsNewAssembly AndAlso Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso Map.refPartPageVM.CurrPart.TypePart.Contains("DO_") Then
|
|
HeightDoor = Map.refPartPageVM.CurrPart.Height
|
|
Else
|
|
' altrienti prendo quello della prima porta
|
|
If Not IsNothing(m_Door1) Then
|
|
HeightDoor = m_Door1.Height
|
|
Else
|
|
Return
|
|
End If
|
|
End If
|
|
|
|
' devo verificare che l'altezza che è stata imposta non sia maggiore di quella consentita
|
|
If Dimension Then
|
|
Dim nHeightDoor As Double
|
|
' se riesco ad eseguire la conversione numerica
|
|
If StringToDouble(HeightDoor, nHeightDoor) Then
|
|
Dim nTotalHeight As Double = 0
|
|
StringToDouble(m_AssemblyHeight, nTotalHeight)
|
|
' dimensiono la porta sempre in funzione delle dimensioni dell'assemblato
|
|
nHeightDoor = nTotalHeight - (nLU + nLB) - nTH
|
|
If Exterior Then
|
|
nHeightDoor = nHeightDoor + nOLT + nOLB - nTB
|
|
End If
|
|
m_Door1.SetHeight(DoubleToString(nHeightDoor, 4))
|
|
HeightDoor = m_Door1.Height
|
|
End If
|
|
End If
|
|
|
|
Dim nDN As Integer = 1
|
|
Int32.TryParse(m_DoorNumber, nDN)
|
|
If nDN < 2 Then Return
|
|
For Each PDOfDoor In ListPartDoorOfDoor
|
|
PDOfDoor.Door.SetHeight(HeightDoor)
|
|
Next
|
|
End Sub
|
|
|
|
' riassegna il TicnkessHead
|
|
Public Sub HeightJambTop()
|
|
Dim nTH As Double = 0
|
|
Dim nTB As Double = 0
|
|
Dim nLU As Double = 0
|
|
Dim nLB As Double = 0
|
|
Dim nOLT As Double = 0
|
|
Dim nOLB As Double = 0
|
|
Dim nHD As Double = 0
|
|
StringToDouble(m_LightUp, nLU)
|
|
StringToDouble(m_LightBottom, nLB)
|
|
StringToDouble(m_ThicknessHead, nTH)
|
|
StringToDouble(m_OverlapTop, nOLT)
|
|
StringToDouble(m_OverlapBottom, nOLB)
|
|
StringToDouble(m_ThicknessBottom, nTB)
|
|
|
|
If Not IsNothing(m_JambT) Then
|
|
m_JambT.SetHeight(ThicknessHead)
|
|
End If
|
|
|
|
If IsNothing(m_Door1) Then Return
|
|
StringToDouble(m_Door1.Height, nHD)
|
|
' se non sono definite le quote esterne del telaio esco
|
|
If Not Dimension Then Return
|
|
Dim nTotalHeight As Double = 0
|
|
StringToDouble(AssemblyHeight, nTotalHeight)
|
|
|
|
If nTotalHeight < nTH Then
|
|
' se le quote sono totalmente sbagliate
|
|
nTH = nTotalHeight - (nLU + nLB) - nHD
|
|
If Exterior Then
|
|
nTH = nTH + nOLT - nTB
|
|
End If
|
|
ThicknessHead = DoubleToString(nTH, 4)
|
|
Else
|
|
' ridimensiono la porta
|
|
nHD = nTotalHeight - (nLU + nLB) - (nTH - nOLT)
|
|
If Exterior Then
|
|
nHD = nHD + nOLT - nTB
|
|
End If
|
|
For Each ItemListPDOD In ListPartDoorOfDoor
|
|
ItemListPDOD.Door.SetHeight(DoubleToString(nHD, 4))
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
|
|
' riassegna il TicnkessBottom
|
|
Public Sub HeightJambBottom()
|
|
Dim nTB As Double = 0
|
|
Dim nTH As Double = 0
|
|
Dim nLU As Double = 0
|
|
Dim nLB As Double = 0
|
|
Dim nOLB As Double = 0
|
|
Dim nOLT As Double = 0
|
|
Dim nHD As Double = 0
|
|
StringToDouble(m_LightUp, nLU)
|
|
StringToDouble(m_LightBottom, nLB)
|
|
StringToDouble(m_ThicknessBottom, nTB)
|
|
StringToDouble(m_OverlapBottom, nOLB)
|
|
StringToDouble(m_OverlapTop, nOLT)
|
|
StringToDouble(m_ThicknessHead, nTH)
|
|
|
|
If Not IsNothing(m_JambB) Then
|
|
m_JambB.SetHeight(ThicknessBottom)
|
|
End If
|
|
|
|
If IsNothing(m_Door1) Then Return
|
|
StringToDouble(m_Door1.Height, nHD)
|
|
' se non sono definite le quote esterne del telaio esco
|
|
If Not Dimension Then Return
|
|
|
|
Dim nTotalHeight As Double = 0
|
|
StringToDouble(AssemblyHeight, nTotalHeight)
|
|
|
|
If nTotalHeight < nTB Then
|
|
' se lo spessore è esageratamente grande è un erore
|
|
nTB = nTotalHeight - (nLU + nLB) - nHD - nTH + nOLT
|
|
ThicknessBottom = DoubleToString(nTB, 4)
|
|
Else
|
|
nHD = nTotalHeight - (nLU + nLB) - (nTH - nOLT) - (nTB - nOLB)
|
|
For Each ItemListPDOD In ListPartDoorOfDoor
|
|
ItemListPDOD.Door.SetHeight(DoubleToString(nHD, 4))
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
|
|
#End Region ' Height
|
|
|
|
#Region "WIDTH"
|
|
|
|
' calcola la larghezza dei jamb orizzonatli
|
|
Private Sub TopBottomWidth()
|
|
' vericfico che almeno uno su tre esista
|
|
If (IsNothing(m_JambT) OrElse IsNothing(m_JambB)) AndAlso IsNothing(m_Door1) Then Return
|
|
' se almeno uno esiste
|
|
Dim dLightHinge As Double
|
|
Dim dLightLock As Double
|
|
Dim dOverlapLock As Double
|
|
Dim dOverlapHinge As Double
|
|
Dim dWidth1 As Double
|
|
Dim dWidth2 As Double
|
|
Dim dActualWidth As Double
|
|
Dim dThicknessJamb As Double
|
|
StringToDouble(Map.refAssemblyPageVM.CurrAssembly.LightHinge, dLightHinge)
|
|
StringToDouble(Map.refAssemblyPageVM.CurrAssembly.LightLock, dLightLock)
|
|
StringToDouble(Map.refAssemblyPageVM.CurrAssembly.OverlapLock, dOverlapLock)
|
|
StringToDouble(Map.refAssemblyPageVM.CurrAssembly.OverlapHinge, dOverlapHinge)
|
|
StringToDouble(Map.refAssemblyPageVM.CurrAssembly.Thickness, dThicknessJamb)
|
|
StringToDouble(m_Door1.Width, dWidth1)
|
|
|
|
Select Case m_DoorNumber
|
|
Case "1"
|
|
dActualWidth = dLightHinge + dLightLock
|
|
If Not IsNothing(m_JambB) Then m_JambB.SetWidth(DoubleToString(dWidth1 + dActualWidth, 4))
|
|
If Not IsNothing(m_JambT) Then m_JambT.SetWidth(DoubleToString(dWidth1 + dActualWidth, 4))
|
|
Case "2"
|
|
If Not IsNothing(m_Door2) Then
|
|
StringToDouble(m_Door2.Width, dWidth2)
|
|
Else
|
|
' se la seconda anta non esiste allora devo ridimensionare il progetto ad una sola anta
|
|
For Each sNumber In m_DoorListNumber
|
|
If Trim(sNumber) = "1" Then
|
|
m_DoorNumber = sNumber
|
|
Return
|
|
End If
|
|
Next
|
|
Return
|
|
End If
|
|
' se la seconda anta esiste allora procedo nel calcolo
|
|
dActualWidth = dLightHinge + dLightHinge + dLightLock + dWidth1
|
|
If Not IsNothing(m_JambB) Then m_JambB.SetWidth(DoubleToString(dWidth2 + dActualWidth, 4))
|
|
If Not IsNothing(m_JambT) Then m_JambT.SetWidth(DoubleToString(dWidth2 + dActualWidth, 4))
|
|
End Select
|
|
NotifyPropertyChanged("AssemblyWidth")
|
|
|
|
End Sub
|
|
|
|
' calcola la larghezza dei Jamb laterali
|
|
Public Sub SetWidthJamb()
|
|
If Not IsNothing(m_JambR) Then m_JambR.SetWidth(m_Width)
|
|
If Not IsNothing(m_JambL) Then m_JambL.SetWidth(m_Width)
|
|
'If Not IsNothing(m_JambB) Then m_JambB.Height = m_Width
|
|
|
|
' ricalcolo la dimensione dell'anta
|
|
If Not Dimension Then Return
|
|
'Dim DO_1 As PartDoor = Map.refAssemblyManagerVM.ReserchPartDoor("DO_1")
|
|
'Dim DO_2 As PartDoor = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2")
|
|
Dim LL As String = LightLock
|
|
Dim LH As String = LightHinge
|
|
Dim JW As String = Width
|
|
Dim TotW As String = m_AssemblyWidth
|
|
|
|
If Not IsNothing(m_Door1) Then
|
|
Dim nDO_1Width As Double = 0
|
|
Dim nDO_2Width As Double = 0
|
|
StringToDouble(m_Door1.Width, nDO_1Width)
|
|
Dim nJW As Double = 0
|
|
StringToDouble(JW, nJW)
|
|
Dim nLL As Double = 0
|
|
StringToDouble(LL, nLL)
|
|
Dim nLH As Double = 0
|
|
StringToDouble(LH, nLH)
|
|
Dim nTotW As Double = 0
|
|
StringToDouble(TotW, nTotW)
|
|
' due ante
|
|
If Not IsNothing(m_Door2) Then
|
|
' la seconda anta viene ricalcolata mantenedo fissa la dimensione della prima
|
|
StringToDouble(m_Door2.Width, nDO_2Width)
|
|
nDO_2Width = nTotW - (nLL + nLH * 2 + 2 * nJW + nDO_1Width)
|
|
If Exterior Then
|
|
Dim nOLL As Double = 0
|
|
StringToDouble(OverlapLock, nOLL)
|
|
Dim nOLH As Double = 0
|
|
StringToDouble(OverlapHinge, nOLH)
|
|
nDO_2Width = nDO_2Width + 2 * nOLH
|
|
End If
|
|
m_Door2.SetWidth(DoubleToString(nDO_2Width, 4))
|
|
Else
|
|
' singol anta
|
|
nDO_1Width = nTotW - (nLL + nLH + 2 * nJW)
|
|
If Exterior Then
|
|
Dim nOLL As Double = 0
|
|
StringToDouble(OverlapLock, nOLL)
|
|
Dim nOLH As Double = 0
|
|
StringToDouble(OverlapHinge, nOLH)
|
|
nDO_1Width = nDO_1Width + nOLH + nOLL
|
|
End If
|
|
m_Door1.SetWidth(DoubleToString(nDO_1Width, 4))
|
|
End If
|
|
End If
|
|
TopBottomWidth()
|
|
'm_BottomJamb.SetHeight(m_Width)
|
|
'm_TopJamb.SetHeight(m_ThicknessHead)
|
|
'm_LeftJamb.SetWidth(m_Width)
|
|
'm_RightJamb.SetWidth(m_Width)
|
|
End Sub
|
|
|
|
#End Region ' Width
|
|
|
|
#Region "THICKNESS"
|
|
|
|
' calcola la dimensione spessore dei Jamb (per tutti lo stesso)
|
|
Public Sub SetThicKnessJamb()
|
|
If Not IsNothing(m_JambB) Then
|
|
If m_Exterior Then
|
|
m_JambB.Thickness = m_DepthBottom
|
|
Else
|
|
m_JambB.Thickness = m_Thickness
|
|
End If
|
|
End If
|
|
If Not IsNothing(m_JambT) Then m_JambT.Thickness = m_Thickness
|
|
If Not IsNothing(m_JambR) Then m_JambR.Thickness = m_Thickness
|
|
If Not IsNothing(m_JambR) Then m_JambL.Thickness = m_Thickness
|
|
End Sub
|
|
|
|
#End Region ' Thickness
|
|
|
|
#Region "SWING"
|
|
|
|
' se sulla porta singola avviene cambio swing (da LeftHand a RightHand) allora devo invertire i Jamb laterali
|
|
' se eistono entrambi i Jamb laterali inverto allora li inverto
|
|
Public Sub UpDateCompolistOnJamb()
|
|
Dim sSwing1 As SwingItemTypeList = Nothing
|
|
' in AssemblyManager ho assegnato ai Jamb la lista completa degli swing
|
|
For Each Item In OptionModule.m_SwingTypeList
|
|
If Trim(m_Door1.SwingAlias.AliasName) = Trim(Item) Then
|
|
OptionModule.SetCurrSwing(sSwing1, Item)
|
|
Exit For
|
|
End If
|
|
Next
|
|
If IsNothing(sSwing1) Then Return
|
|
Select Case DoorNumber
|
|
Case "1"
|
|
' passo da un'anta LeftHand ad una RightHand
|
|
If Not IsNothing(m_JambL) Then
|
|
If (m_JambL.SwingAlias.Name.Contains("LH") And sSwing1.Name.Contains("RH")) OrElse
|
|
(m_JambL.SwingAlias.Name.Contains("RH") And sSwing1.Name.Contains("LH")) Then
|
|
If Not IsNothing(m_JambR) Then
|
|
Dim TempJambL As Part = Map.refAssemblyManagerVM.ReserchPartDoor("FL_").Door.ShallowCopy()
|
|
Dim TempJambR As Part = Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door.ShallowCopy()
|
|
TempJambR.IsActive = TempJambL.IsActive
|
|
TempJambL.IsActive = Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door.IsActive
|
|
TempJambR.TypePart = ConstGen.PART_FRAME_LEFT
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("FL_").Door = TempJambR
|
|
TempJambL.TypePart = ConstGen.PART_FRAME_RIGHT
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door = TempJambL
|
|
' aggiorno le copie presenti nell'assemblato
|
|
SetPartDoorCurrAssembly()
|
|
End If
|
|
End If
|
|
End If
|
|
Case "2"
|
|
' passo da un'anta Active ad una Inactive
|
|
If IsNothing(m_Door2) Then Return
|
|
' sicuramente la porta corrente è quella modificata
|
|
If Map.refPartPageVM.CurrPart.TypePart.Contains("DO_1") Then
|
|
SwingDoor(m_Door2, m_Door1)
|
|
Else
|
|
SwingDoor(m_Door1, m_Door2)
|
|
End If
|
|
' in AssemblyManager ho assegnato ai Jamb la lista completa degli swing
|
|
For Each Item In OptionModule.m_SwingTypeList
|
|
If Trim(m_Door1.SwingAlias.AliasName) = Trim(Item) Then
|
|
OptionModule.SetCurrSwing(sSwing1, Item)
|
|
Exit For
|
|
End If
|
|
Next
|
|
If Not IsNothing(m_JambL) Then
|
|
If (m_JambL.SwingAlias.Name.Contains("I") And Not sSwing1.Name.Contains("I")) OrElse
|
|
(Not m_JambL.SwingAlias.Name.Contains("I") And sSwing1.Name.Contains("I")) Then
|
|
Dim TempDoor1 As Part = Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.ShallowCopy()
|
|
Dim TempDoor2 As Part = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.ShallowCopy()
|
|
TempDoor2.IsActive = TempDoor1.IsActive
|
|
TempDoor1.IsActive = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.IsActive
|
|
TempDoor2.TypePart = "DO_1"
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door = TempDoor2
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.refPartDoor = Map.refAssemblyManagerVM.ReserchPartDoor("DO_1")
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.SwingTypeList = OptionModule.m_SwingTypeListLeftDoor
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.SetSwing(TempDoor1.Swing)
|
|
|
|
TempDoor1.TypePart = "DO_2"
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door = TempDoor1
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.refPartDoor = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2")
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.SwingTypeList = OptionModule.m_SwingTypeListRightDoor
|
|
SwingDoor(Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door, Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door)
|
|
|
|
If Not IsNothing(m_JambR) Then
|
|
Dim TempJambL As Part = Map.refAssemblyManagerVM.ReserchPartDoor("FL_").Door.ShallowCopy()
|
|
Dim TempJambR As Part = Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door.ShallowCopy()
|
|
TempJambR.IsActive = TempJambL.IsActive
|
|
TempJambL.IsActive = Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door.IsActive
|
|
TempJambR.TypePart = ConstGen.PART_FRAME_LEFT
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("FL_").Door = TempJambR
|
|
TempJambL.TypePart = ConstGen.PART_FRAME_RIGHT
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door = TempJambL
|
|
End If
|
|
' aggiorno le copie presenti nell'assemblato
|
|
SetPartDoorCurrAssembly()
|
|
End If
|
|
If Map.refPartPageVM.CurrPart.TypePart.Contains("DO_1") Then
|
|
Map.refPartPageVM.CurrPart = m_Door1
|
|
Else
|
|
Map.refPartPageVM.CurrPart = m_Door2
|
|
End If
|
|
End If
|
|
End Select
|
|
End Sub
|
|
|
|
Public Sub MaterialJamb()
|
|
If Not IsNothing(m_JambB) Then
|
|
m_JambB.SetMaterial(OptionModule.m_CurrMaterial)
|
|
'CreateNewPropertiesListJamb(m_JambB.PropertiesList, m_JambB.SelectedMaterial)
|
|
CreateNewPropertiesList(m_JambB)
|
|
End If
|
|
If Not IsNothing(m_JambT) Then
|
|
m_JambT.SetMaterial(OptionModule.m_CurrMaterial)
|
|
'CreateNewPropertiesListJamb(m_JambT.PropertiesList, m_JambT.SelectedMaterial)
|
|
CreateNewPropertiesList(m_JambT)
|
|
End If
|
|
If Not IsNothing(m_JambR) Then
|
|
m_JambR.SetMaterial(OptionModule.m_CurrMaterial)
|
|
'CreateNewPropertiesListJamb(m_JambR.PropertiesList, m_JambR.SelectedMaterial)
|
|
CreateNewPropertiesList(m_JambR)
|
|
End If
|
|
If Not IsNothing(m_JambR) Then
|
|
m_JambL.SetMaterial(OptionModule.m_CurrMaterial)
|
|
'CreateNewPropertiesListJamb(m_JambL.PropertiesList, m_JambL.SelectedMaterial)
|
|
CreateNewPropertiesList(m_JambL)
|
|
End If
|
|
End Sub
|
|
|
|
' assegna gli swing ai jamb
|
|
Public Sub SwingJamb()
|
|
' se la prima anta non esiste allora interrompo
|
|
If IsNothing(m_Door1) Then Return
|
|
Dim sSwing1 As String = String.Empty
|
|
' in AssemblyManager assegno ai Jamb la lista completa degli swing
|
|
For Each Item In OptionModule.m_SwingTypeList
|
|
If Trim(m_Door1.SwingAlias.AliasName) = Trim(Item) Then
|
|
sSwing1 = Item
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Select Case DoorNumber
|
|
Case "1"
|
|
If Not IsNothing(m_JambB) Then m_JambB.SetSwing(sSwing1)
|
|
If Not IsNothing(m_JambT) Then m_JambT.SetSwing(sSwing1)
|
|
If Not IsNothing(m_JambL) Then m_JambL.SetSwing(sSwing1)
|
|
If Not IsNothing(m_JambR) Then m_JambR.SetSwing(sSwing1)
|
|
|
|
If Exterior Then
|
|
' se di tipo LeftHand
|
|
If Not IsNothing(m_JambL) AndAlso Not IsNothing(m_JambR) AndAlso m_JambL.SwingAlias.Name.Contains("LH") Then
|
|
m_JambL.TypePart = ConstGen.PART_FRAME_LEFT & ConstGen.HINGE & ConstGen.EXTERIOR
|
|
m_JambR.TypePart = ConstGen.PART_FRAME_RIGHT & ConstGen.LOCK & ConstGen.EXTERIOR
|
|
Else
|
|
If Not IsNothing(m_JambL) Then m_JambL.TypePart = ConstGen.PART_FRAME_LEFT & ConstGen.LOCK & ConstGen.EXTERIOR
|
|
If Not IsNothing(m_JambR) Then m_JambR.TypePart = ConstGen.PART_FRAME_RIGHT & ConstGen.HINGE & ConstGen.EXTERIOR
|
|
End If
|
|
If Not IsNothing(m_JambB) Then m_JambB.TypePart = ConstGen.PART_FRAME_BOTTOM & ConstGen.BOTTOM & ConstGen.EXTERIOR
|
|
If Not IsNothing(m_JambT) Then m_JambT.TypePart = ConstGen.PART_FRAME_TOP & ConstGen.TOP & ConstGen.EXTERIOR
|
|
Else
|
|
If Not IsNothing(m_JambL) AndAlso Not IsNothing(m_JambR) AndAlso m_JambL.SwingAlias.Name.Contains("LH") Then
|
|
m_JambL.TypePart = ConstGen.PART_FRAME_LEFT & ConstGen.HINGE
|
|
m_JambR.TypePart = ConstGen.PART_FRAME_RIGHT & ConstGen.LOCK
|
|
Else
|
|
If Not IsNothing(m_JambL) Then m_JambL.TypePart = ConstGen.PART_FRAME_LEFT & ConstGen.LOCK
|
|
If Not IsNothing(m_JambR) Then m_JambR.TypePart = ConstGen.PART_FRAME_RIGHT & ConstGen.HINGE
|
|
End If
|
|
If Not IsNothing(m_JambB) Then m_JambB.TypePart = ConstGen.PART_FRAME_BOTTOM & ConstGen.BOTTOM
|
|
If Not IsNothing(m_JambT) Then m_JambT.TypePart = ConstGen.PART_FRAME_TOP & ConstGen.TOP
|
|
End If
|
|
|
|
Case "2"
|
|
If IsNothing(m_Door2) Then
|
|
' se la seconda anta non esiste allora devo ridimensionare il progetto ad una sola anta
|
|
For Each sNumber In m_DoorListNumber
|
|
If Trim(sNumber) = "1" Then
|
|
m_DoorNumber = sNumber
|
|
Return
|
|
End If
|
|
Next
|
|
Return
|
|
End If
|
|
' sicuramente la porta corrente è quella modificata
|
|
If Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso Map.refPartPageVM.CurrPart.TypePart.Contains("DO_1") Then
|
|
SwingDoor(m_Door2, m_Door1)
|
|
Else
|
|
SwingDoor(m_Door1, m_Door2)
|
|
End If
|
|
' ricerco nell'elenco degli swing
|
|
Dim sSwing2 As String = String.Empty
|
|
' in AssemblyManager assegno ai Jamb la lista completa degli swing
|
|
For Each Item In OptionModule.m_SwingTypeList
|
|
If Trim(m_Door2.SwingAlias.Name) = Trim(Item) Then
|
|
sSwing2 = Item
|
|
Exit For
|
|
End If
|
|
Next
|
|
' assegno gli swing
|
|
If Not IsNothing(m_JambB) Then m_JambB.SetSwing(sSwing2)
|
|
If Not IsNothing(m_JambT) Then m_JambT.SetSwing(sSwing1)
|
|
If Not IsNothing(m_JambL) Then m_JambL.SetSwing(sSwing1)
|
|
If Not IsNothing(m_JambR) Then m_JambR.SetSwing(sSwing2)
|
|
' assegno il nome del tipo completo
|
|
If Exterior Then
|
|
If Not IsNothing(m_JambL) Then m_JambL.TypePart = ConstGen.PART_FRAME_LEFT & ConstGen.HINGE & ConstGen.EXTERIOR
|
|
If Not IsNothing(m_JambR) Then m_JambR.TypePart = ConstGen.PART_FRAME_RIGHT & ConstGen.HINGE & ConstGen.EXTERIOR
|
|
If Not IsNothing(m_JambB) Then m_JambB.TypePart = ConstGen.PART_FRAME_BOTTOM & ConstGen.BOTTOM & ConstGen.EXTERIOR
|
|
If Not IsNothing(m_JambT) Then m_JambT.TypePart = ConstGen.PART_FRAME_TOP & ConstGen.TOP & ConstGen.EXTERIOR
|
|
Else
|
|
If Not IsNothing(m_JambL) Then m_JambL.TypePart = ConstGen.PART_FRAME_LEFT & ConstGen.HINGE
|
|
If Not IsNothing(m_JambR) Then m_JambR.TypePart = ConstGen.PART_FRAME_RIGHT & ConstGen.HINGE
|
|
If Not IsNothing(m_JambB) Then m_JambB.TypePart = ConstGen.PART_FRAME_BOTTOM & ConstGen.BOTTOM
|
|
If Not IsNothing(m_JambT) Then m_JambT.TypePart = ConstGen.PART_FRAME_TOP & ConstGen.TOP
|
|
End If
|
|
End Select
|
|
End Sub
|
|
|
|
' elimina tutti i riferimenti esistenti
|
|
Public Sub ClearRefOnAssembly()
|
|
' elimino tutti i riferimenti esistenti
|
|
If Not IsNothing(m_Door1) Then
|
|
For Each ItemCompo In m_Door1.CompoList
|
|
If Not IsNothing(ItemCompo.refJambCompo) Then
|
|
m_Door1.RemoveCompo(ItemCompo, True)
|
|
End If
|
|
Next
|
|
End If
|
|
' elimino tutti i riferimenti esistenti
|
|
If Not IsNothing(m_Door2) Then
|
|
For Each ItemCompo In m_Door2.CompoList
|
|
If Not IsNothing(ItemCompo.refJambCompo) Then
|
|
m_Door2.RemoveCompo(ItemCompo, True)
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
' costruisce i riferminti della prima anta
|
|
Public Sub ReloadAllCompoDoor1()
|
|
If IsNothing(m_Door1) Then Return
|
|
' ricalcolo tutti i riferimenti
|
|
Map.refPartPageVM.CurrPart = m_Door1
|
|
For Each ItemCompo In m_Door1.CompoList
|
|
CreateCompoOnJamb(ItemCompo, "")
|
|
Next
|
|
End Sub
|
|
|
|
' inverte la prima anta con la seconda anta
|
|
Public Sub ReverseDoor()
|
|
If IsNothing(m_Door1) OrElse IsNothing(m_Door2) Then Return
|
|
If Not m_Door1.SwingAlias.Name.Contains("I") Then Return
|
|
' copio l'anta uno al posto dell'anta due e viceversa
|
|
Dim TempDoor1 As Part = Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.ShallowCopy()
|
|
Dim TempDoor2 As Part = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.ShallowCopy()
|
|
TempDoor2.IsActive = TempDoor1.IsActive
|
|
TempDoor1.IsActive = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.IsActive
|
|
TempDoor2.TypePart = "DO_1"
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door = TempDoor2
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.refPartDoor = Map.refAssemblyManagerVM.ReserchPartDoor("DO_1")
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.SwingTypeList = OptionModule.m_SwingTypeListLeftDoor
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door.SetSwing(TempDoor1.Swing)
|
|
|
|
TempDoor1.TypePart = "DO_2"
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door = TempDoor1
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.refPartDoor = Map.refAssemblyManagerVM.ReserchPartDoor("DO_2")
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door.SwingTypeList = OptionModule.m_SwingTypeListRightDoor
|
|
SwingDoor(Map.refAssemblyManagerVM.ReserchPartDoor("DO_2").Door, Map.refAssemblyManagerVM.ReserchPartDoor("DO_1").Door)
|
|
|
|
If IsNothing(m_JambR) OrElse IsNothing(m_JambL) Then Return
|
|
Dim TempJambL As Part = Map.refAssemblyManagerVM.ReserchPartDoor("FL_").Door.ShallowCopy()
|
|
Dim TempJambR As Part = Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door.ShallowCopy()
|
|
TempJambR.IsActive = TempJambL.IsActive
|
|
TempJambL.IsActive = Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door.IsActive
|
|
TempJambR.TypePart = ConstGen.PART_FRAME_LEFT
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("FL_").Door = TempJambR
|
|
TempJambL.TypePart = ConstGen.PART_FRAME_RIGHT
|
|
Map.refAssemblyManagerVM.ReserchPartDoor("FR_").Door = TempJambL
|
|
|
|
' aggiorno le copie presenti nell'assemblato
|
|
SetPartDoorCurrAssembly()
|
|
End Sub
|
|
|
|
' permette di settare lo swing della seconda anta in funzione della selezione dello swing sulla prima anta.
|
|
' riceve l'anta da modificare (ModifySwingDoor) e l'anta che comanda la modifica (ModifiedSwingDoor)
|
|
Public Sub SwingDoor(ModifySwingDoor As Part, ModifiedSwingDoor As Part)
|
|
If Not IsNothing(ModifiedSwingDoor) AndAlso Not IsNothing(ModifiedSwingDoor) Then
|
|
For IndexSwing As Integer = 0 To ModifiedSwingDoor.SwingTypeList.Count - 1
|
|
If ModifiedSwingDoor.Swing = ModifiedSwingDoor.SwingTypeList(IndexSwing) Then
|
|
ModifySwingDoor.SetSwing(ModifySwingDoor.SwingTypeList(IndexSwing))
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' Swing
|
|
|
|
Public Sub RefreshJambCheck()
|
|
For Each Item In ListPartDoor
|
|
If Item.Door.TypePart.Contains("FL_") Then
|
|
JambLIsChecked = Item.Door.IsActive
|
|
ElseIf Item.Door.TypePart.Contains("FT_") Then
|
|
JambTIsChecked = Item.Door.IsActive
|
|
ElseIf Item.Door.TypePart.Contains("FB_") Then
|
|
JambBIsChecked = Item.Door.IsActive
|
|
ElseIf Item.Door.TypePart.Contains("FT_") Then
|
|
JambTIsChecked = Item.Door.IsActive
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
' definisc le costanti dell'assemblato
|
|
Public Sub SetVarAssembly()
|
|
Dim dHeight As Double
|
|
Dim dWidth As Double
|
|
Dim dThickness As Double
|
|
If Not IsNothing(m_Door1) Then
|
|
If Not IsNothing(m_Door1.Height) AndAlso StringToDouble(m_Door1.Height, dHeight) Then
|
|
EgtLuaSetGlobNumVar("H", dHeight)
|
|
EgtLuaSetGlobNumVar("H1", dHeight)
|
|
End If
|
|
If Not IsNothing(m_Door1.Width) AndAlso StringToDouble(m_Door1.Width, dWidth) Then
|
|
EgtLuaSetGlobNumVar("W", dWidth)
|
|
EgtLuaSetGlobNumVar("W1", dWidth)
|
|
End If
|
|
If Not IsNothing(m_Door1.Thickness) AndAlso StringToDouble(m_Door1.Thickness, dThickness) Then
|
|
EgtLuaSetGlobNumVar("T", dThickness)
|
|
EgtLuaSetGlobNumVar("T1", dThickness)
|
|
End If
|
|
End If
|
|
If Not IsNothing(m_Door2) Then
|
|
If Not IsNothing(m_Door2.Height) AndAlso StringToDouble(m_Door2.Height, dHeight) Then
|
|
EgtLuaSetGlobNumVar("H2", dHeight)
|
|
End If
|
|
If Not IsNothing(m_Door2.Width) AndAlso StringToDouble(m_Door2.Width, dWidth) Then
|
|
EgtLuaSetGlobNumVar("W2", dWidth)
|
|
End If
|
|
If Not IsNothing(m_Door2.Thickness) AndAlso StringToDouble(m_Door2.Thickness, dThickness) Then
|
|
EgtLuaSetGlobNumVar("T2", dThickness)
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
#Region "RABBET"
|
|
|
|
' restituisce l'indice della componente "rabbet"
|
|
Private Function nCompoRabbet() As Integer
|
|
Dim RabbetIndex As Integer = -1
|
|
For Index As Integer = 0 To Map.refCompoPanelVM.CompoTypeList.Count - 1
|
|
If Trim(Map.refCompoPanelVM.CompoTypeList(Index).DDFName) = "rabbet" Then
|
|
RabbetIndex = Index
|
|
Exit For
|
|
End If
|
|
Next
|
|
Return RabbetIndex
|
|
End Function
|
|
|
|
' clacola il rabbet sul profilo top dei Jamb (quindi solo su quelli laterali)
|
|
Public Sub TopRabbetJamb()
|
|
Dim sThicknessHead As String = Map.refAssemblyPageVM.CurrAssembly.ThicknessHead
|
|
Dim sOverlapHinge As String = Map.refAssemblyPageVM.CurrAssembly.OverlapHinge
|
|
Dim sOverLapLock As String = Map.refAssemblyPageVM.CurrAssembly.OverlapLock
|
|
Dim sLightUp As String = Map.refAssemblyPageVM.CurrAssembly.LightUp
|
|
Select Case DoorNumber
|
|
Case "1"
|
|
If Not m_JambL.SwingAlias.Name.Contains("L") Then
|
|
If Not IsNothing(m_JambL) Then SetTopRabbetJamb(m_JambL, sThicknessHead, sOverLapLock, sLightUp)
|
|
If Not IsNothing(m_JambR) Then SetTopRabbetJamb(m_JambR, sThicknessHead, sOverlapHinge, sLightUp)
|
|
Else
|
|
If Not IsNothing(m_JambL) Then SetTopRabbetJamb(m_JambL, sThicknessHead, sOverlapHinge, sLightUp)
|
|
If Not IsNothing(m_JambR) Then SetTopRabbetJamb(m_JambR, sThicknessHead, sOverLapLock, sLightUp)
|
|
End If
|
|
Case "2"
|
|
SetTopRabbetJamb(m_JambL, sThicknessHead, sOverlapHinge, sLightUp)
|
|
SetTopRabbetJamb(m_JambR, sThicknessHead, sOverlapHinge, sLightUp)
|
|
End Select
|
|
End Sub
|
|
|
|
' ricerca la componente Rabbet, se non esiete la aggiunge e poi la modifica, altrimenti la modifica
|
|
Private Sub SetTopRabbetJamb(ByRef Jamb As Part, sThicknessHead As String, sOverlap As String, sLightUp As String)
|
|
If IsNothing(Jamb) Then Return
|
|
Dim CurrCompo As Compo = Nothing
|
|
Dim IndexCompoPanel As Integer = -1
|
|
' ricerco la posizione del rabbet nella lista dei componenti
|
|
IndexCompoPanel = nCompoRabbet()
|
|
' se la ricerca ha dato un esito positivo allora procedo
|
|
If IndexCompoPanel = -1 Then Return
|
|
Dim bRabbet As Boolean = False
|
|
Dim IndexCompo As Integer
|
|
' se esisteno delle componenti allora cerco la componente rabbet
|
|
If Jamb.CompoList.Count > 0 Then
|
|
' inizio la ricerca della componente di tipo rabbet
|
|
For IndexCompo = 0 To Jamb.CompoList.Count - 1
|
|
If Jamb.CompoList(IndexCompo).CompoType.DDFName = OptionModule.m_CompoPaneOrder(IndexCompoPanel) Then
|
|
' controllo che il primo elemento selezionato nella ComboBox sia uguale al primo elemento della lista (questa cosa non mi convince)
|
|
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(0) Then
|
|
bRabbet = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
' se non eiste il rabbet lo aggiungo
|
|
If Not bRabbet Then
|
|
'Map.refPartPageVM.CurrPart = Jamb
|
|
CurrCompo = Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(IndexCompoPanel), True)
|
|
DirectCast(CurrCompo.CompoParamList(0), ComboBoxParam).SelItem = DirectCast(CurrCompo.CompoParamList(0), ComboBoxParam).ItemList(0)
|
|
Else
|
|
CurrCompo = Jamb.CompoList(IndexCompo)
|
|
End If
|
|
' mofico la componete rabbet
|
|
If Not IsNothing(CurrCompo) Then
|
|
Dim dVal3 As Double = 0
|
|
StringToDouble(sOverlap, dVal3)
|
|
If dVal3 <= 0 Then
|
|
Jamb.CompoList.RemoveAt(IndexCompo)
|
|
Else
|
|
SetTopRabbetParam(sThicknessHead, sOverlap, CurrCompo, sLightUp)
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
' setta i parametri della componente Rabbet sul top
|
|
Private Sub SetTopRabbetParam(sThicknessHead As String, sOverlapTop As String, CurrCompo As Compo, sLightUp As String)
|
|
Dim CurrCompoParam As CompoParam = CurrCompo.CompoParamList(1)
|
|
If TypeOf CurrCompoParam Is TextBoxParam Then
|
|
Dim TextParam As TextBoxParam = DirectCast(CurrCompoParam, TextBoxParam)
|
|
TextParam.m_Value = sThicknessHead
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
CurrCompoParam = CurrCompo.CompoParamList(2)
|
|
If TypeOf CurrCompoParam Is TextBoxParam Then
|
|
Dim TextParam As TextBoxParam = DirectCast(CurrCompoParam, TextBoxParam)
|
|
Dim sRabbetDepth As String = sOverlapTop
|
|
TextParam.m_Value = sRabbetDepth
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
CurrCompoParam = CurrCompo.CompoParamList(3)
|
|
If TypeOf CurrCompoParam Is TextBoxOnOffParam Then
|
|
Dim TextParam As TextBoxOnOffParam = DirectCast(CurrCompoParam, TextBoxOnOffParam)
|
|
TextParam.SetIsActive(False)
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
End Sub
|
|
|
|
' calcola il rabbet sul lato Bottom solo se è stata selezionata la proprietà exterior
|
|
Public Sub BottomRabbetJamb()
|
|
Dim sThicknessDoor As String
|
|
If Not IsNothing(m_Door1) Then
|
|
sThicknessDoor = m_Door1.Thickness
|
|
Else
|
|
sThicknessDoor = "0"
|
|
End If
|
|
Dim sOverLapHinge As String = Map.refAssemblyPageVM.CurrAssembly.OverlapHinge
|
|
Dim sOverLapLock As String = Map.refAssemblyPageVM.CurrAssembly.OverlapLock
|
|
Dim sOverLapTop As String = Map.refAssemblyPageVM.CurrAssembly.OverlapTop
|
|
'Dim sWidthJamb As String = Map.refAssemblyPageVM.CurrAssembly.Width
|
|
Dim sOverlapBottom As String = Map.refAssemblyPageVM.CurrAssembly.OverlapBottom
|
|
Dim sDeltaT As String = Map.refAssemblyPageVM.CurrAssembly.DeltaThickness
|
|
Dim sThicknessBottm As String = Map.refAssemblyPageVM.CurrAssembly.ThicknessBottom
|
|
Dim sDeltaBottom As String = Map.refAssemblyPageVM.CurrAssembly.DeltaBottom
|
|
Dim IndexBottom As Integer = 1
|
|
Dim IndexHinge As Integer = 2
|
|
|
|
Dim dValBottom As Double = 0
|
|
StringToDouble(sDeltaBottom, dValBottom)
|
|
Dim dValDoor As Double = 0
|
|
StringToDouble(sDeltaT, dValDoor)
|
|
Dim DeltaTotal As String = DoubleToString(dValDoor - dValBottom, 4)
|
|
|
|
Select Case DoorNumber
|
|
Case "1"
|
|
If Not m_JambL.SwingAlias.Name.Contains(ConstGen.LOCK) Then
|
|
RabbetExterior(m_JambL, sThicknessDoor, sThicknessBottm, sOverLapLock, IndexBottom)
|
|
RabbetExterior(m_JambR, sThicknessDoor, sThicknessBottm, sOverLapHinge, IndexBottom)
|
|
SetHingeRabbetJamb(m_JambB, sThicknessDoor, DeltaTotal, sOverlapBottom, IndexHinge)
|
|
Else
|
|
RabbetExterior(m_JambL, sThicknessDoor, sThicknessBottm, sOverLapHinge, IndexBottom)
|
|
RabbetExterior(m_JambR, sThicknessDoor, sThicknessBottm, sOverLapLock, IndexBottom)
|
|
SetHingeRabbetJamb(m_JambB, sThicknessDoor, DeltaTotal, sOverlapBottom, IndexHinge)
|
|
End If
|
|
Case "2"
|
|
RabbetExterior(m_JambL, sThicknessDoor, sThicknessBottm, sOverLapHinge, IndexBottom)
|
|
RabbetExterior(m_JambR, sThicknessDoor, sThicknessBottm, sOverLapHinge, IndexBottom)
|
|
SetHingeRabbetJamb(m_JambB, sThicknessDoor, DeltaTotal, sOverlapBottom, IndexHinge)
|
|
End Select
|
|
End Sub
|
|
|
|
' calcola il rabbet sul lato Hinge solo se è stata selezionata la proprietà exterior
|
|
Public Sub HingeRabbetJamb()
|
|
Dim sThicknessDoor As String
|
|
If Not IsNothing(m_Door1) Then
|
|
sThicknessDoor = m_Door1.Thickness
|
|
Else
|
|
sThicknessDoor = "0"
|
|
End If
|
|
Dim sDeltaT As String = Map.refAssemblyPageVM.CurrAssembly.DeltaThickness
|
|
Dim sOverLapHinge As String = Map.refAssemblyPageVM.CurrAssembly.OverlapHinge
|
|
Dim sOverLapLock As String = Map.refAssemblyPageVM.CurrAssembly.OverlapLock
|
|
Dim sOverLapTop As String = Map.refAssemblyPageVM.CurrAssembly.OverlapTop
|
|
Dim sOverlapBottom As String = Map.refAssemblyPageVM.CurrAssembly.OverlapBottom
|
|
' questo flag, che è poi passato alla funzione RabbetExterior, ha lo scopo di identificare chi sta esegunedo la chiamata
|
|
Dim IndexHinge As Integer = 2
|
|
Dim IndexLock As Integer = 3
|
|
Select Case DoorNumber
|
|
Case "1"
|
|
If Not m_JambL.SwingAlias.Name.Contains(ConstGen.LOCK) Then
|
|
SetHingeRabbetJamb(m_JambL, sThicknessDoor, sDeltaT, sOverLapLock, IndexLock)
|
|
SetHingeRabbetJamb(m_JambR, sThicknessDoor, sDeltaT, sOverLapHinge, IndexHinge)
|
|
SetHingeRabbetJamb(m_JambT, sThicknessDoor, sDeltaT, sOverLapTop, IndexHinge)
|
|
Else
|
|
SetHingeRabbetJamb(m_JambL, sThicknessDoor, sDeltaT, sOverLapHinge, IndexHinge)
|
|
SetHingeRabbetJamb(m_JambR, sThicknessDoor, sDeltaT, sOverLapLock, IndexLock)
|
|
SetHingeRabbetJamb(m_JambT, sThicknessDoor, sDeltaT, sOverLapTop, IndexHinge)
|
|
End If
|
|
Case "2"
|
|
SetHingeRabbetJamb(m_JambL, sThicknessDoor, sDeltaT, sOverLapHinge, IndexHinge)
|
|
SetHingeRabbetJamb(m_JambR, sThicknessDoor, sDeltaT, sOverLapHinge, IndexHinge)
|
|
SetHingeRabbetJamb(m_JambT, sThicknessDoor, sDeltaT, sOverLapTop, IndexHinge)
|
|
End Select
|
|
End Sub
|
|
|
|
Public Sub SetHingeRabbetJamb(ByRef Jamb As Part, sThicknessDoor As String, sDeltaT As String, sOverLap As String, nIndexSide As Integer)
|
|
If IsNothing(Jamb) Then Return
|
|
'Dim IndexHinge As Integer = 2
|
|
'Dim IndexBottom As Integer = 1
|
|
Dim CompoListIndex As Integer = nCompoRabbet()
|
|
If CompoListIndex = -1 Then Return
|
|
Dim Local_Compo As Compo
|
|
Dim bRabbet As Boolean = False
|
|
Dim IndexCompo As Integer
|
|
' cerco la componente
|
|
If Jamb.CompoList.Count > 0 Then
|
|
For IndexCompo = 0 To Jamb.CompoList.Count - 1
|
|
If Jamb.CompoList(IndexCompo).CompoType.DDFName = Map.refCompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
|
|
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(nIndexSide) Then
|
|
bRabbet = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
' se il rabbet non esiste
|
|
If Not bRabbet Then
|
|
' lo aggiungo
|
|
Local_Compo = Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex), True)
|
|
DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).SetSelItem(DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).ItemList(nIndexSide))
|
|
Else
|
|
Local_Compo = Jamb.CompoList(IndexCompo)
|
|
End If
|
|
If Not IsNothing(Local_Compo) Then
|
|
Dim dVal1 As Double = 0
|
|
Dim dVal2 As Double = 0
|
|
Dim dVal3 As Double = 0
|
|
StringToDouble(sThicknessDoor, dVal1)
|
|
StringToDouble(sDeltaT, dVal2)
|
|
StringToDouble(sOverLap, dVal3)
|
|
If nIndexSide = 3 Then nIndexSide = 2
|
|
If dVal1 + dVal2 <= 0 OrElse dVal3 <= 0 Then
|
|
Jamb.CompoList.RemoveAt(IndexCompo)
|
|
Else
|
|
SetHingeRabbetParam(sThicknessDoor, sDeltaT, sOverLap, Local_Compo, nIndexSide)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
' cerca la compo Rabbet sul lato indicato (Top o Bottom)
|
|
Public Sub RabbetExterior(ByRef Jamb As Part, sThicknessDoor As String, sDeltaT As String, sOverLap As String, nIndexSide As Integer)
|
|
If IsNothing(Jamb) Then Return
|
|
'Dim IndexHinge As Integer = 2
|
|
'Dim IndexBottom As Integer = 1
|
|
Dim CompoListIndex As Integer = nCompoRabbet()
|
|
If CompoListIndex = -1 Then Return
|
|
Dim Local_Compo As Compo
|
|
Dim bRabbet As Boolean = False
|
|
Dim IndexCompo As Integer
|
|
' cerco la componente
|
|
If Jamb.CompoList.Count > 0 Then
|
|
For IndexCompo = 0 To Jamb.CompoList.Count - 1
|
|
If Jamb.CompoList(IndexCompo).CompoType.DDFName = Map.refCompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
|
|
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(nIndexSide) Then
|
|
bRabbet = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If m_Exterior Then
|
|
' se il rabbet non esiste
|
|
If Not bRabbet Then
|
|
' lo aggiungo
|
|
Local_Compo = Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex), True)
|
|
DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).SetSelItem(DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).ItemList(nIndexSide))
|
|
Else
|
|
Local_Compo = Jamb.CompoList(IndexCompo)
|
|
End If
|
|
If Not IsNothing(Local_Compo) Then
|
|
Dim dVal1 As Double = 0
|
|
Dim dVal2 As Double = 0
|
|
Dim dVal3 As Double = 0
|
|
StringToDouble(sThicknessDoor, dVal1)
|
|
StringToDouble(sDeltaT, dVal2)
|
|
StringToDouble(sOverLap, dVal3)
|
|
If dVal1 + dVal2 <= 0 OrElse dVal3 <= 0 Then
|
|
Jamb.CompoList.RemoveAt(IndexCompo)
|
|
Else
|
|
SetHingeRabbetParam(sThicknessDoor, sDeltaT, sOverLap, Local_Compo, nIndexSide)
|
|
End If
|
|
End If
|
|
Else
|
|
' rimuovo dalla lista
|
|
If bRabbet Then Jamb.CompoList.RemoveAt(IndexCompo)
|
|
End If
|
|
|
|
End Sub
|
|
' assegna i valori ai parametri del rabbet
|
|
Private Sub SetHingeRabbetParam(sThicknessDoor As String, sDeltaT As String, sOverlap As String, CurrCompo As Compo, IndexSide As Integer)
|
|
Dim dThicknessDoor As Double
|
|
Dim dDeltaT As Double
|
|
StringToDouble(sThicknessDoor, dThicknessDoor)
|
|
StringToDouble(sDeltaT, dDeltaT)
|
|
|
|
Select Case IndexSide
|
|
' se è stata passata sul lato cerniera/serrattura
|
|
Case 2
|
|
Dim CurrCompoParam As CompoParam = CurrCompo.CompoParamList(0)
|
|
Dim Index As Integer = 0
|
|
' width
|
|
CurrCompoParam = CurrCompo.CompoParamList(1)
|
|
If TypeOf DirectCast(CurrCompoParam, CompoParam) Is TextBoxParam Then
|
|
Dim TextParam As TextBoxParam = DirectCast(CurrCompoParam, TextBoxParam)
|
|
' definisce l'affondamento della porta nel telaio
|
|
If dDeltaT + dThicknessDoor < 0 Then
|
|
TextParam.m_Value = "0"
|
|
Else
|
|
TextParam.m_Value = DoubleToString(dDeltaT + dThicknessDoor, 4)
|
|
End If
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
' depth
|
|
CurrCompoParam = CurrCompo.CompoParamList(2)
|
|
If TypeOf DirectCast(CurrCompoParam, CompoParam) Is TextBoxParam Then
|
|
Dim TextParam As TextBoxParam = DirectCast(CurrCompoParam, TextBoxParam)
|
|
Dim sRabbetDepth As String = sOverlap
|
|
' la profondità deve essere la stessa che è stata definita sul rabbet top
|
|
TextParam.m_Value = sRabbetDepth
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
' angle
|
|
CurrCompoParam = CurrCompo.CompoParamList(3)
|
|
If TypeOf DirectCast(CurrCompoParam, CompoParam) Is TextBoxOnOffParam Then
|
|
Dim TextOnOffParam As TextBoxOnOffParam = DirectCast(CurrCompoParam, TextBoxOnOffParam)
|
|
' disaativo il paramtro Angle
|
|
TextOnOffParam.SetIsActive(False)
|
|
TextOnOffParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
|
|
Case 1
|
|
' inseriamo i parametri per la creazione del rabbet sul fondo
|
|
Dim CurrCompoParam As CompoParam = CurrCompo.CompoParamList(0)
|
|
Dim Index As Integer = 0
|
|
' width
|
|
CurrCompoParam = CurrCompo.CompoParamList(1)
|
|
If TypeOf DirectCast(CurrCompoParam, CompoParam) Is TextBoxParam Then
|
|
Dim TextParam As TextBoxParam = DirectCast(CurrCompoParam, TextBoxParam)
|
|
TextParam.m_Value = DoubleToString(dDeltaT, 4)
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
' Depth
|
|
CurrCompoParam = CurrCompo.CompoParamList(2)
|
|
If TypeOf DirectCast(CurrCompoParam, CompoParam) Is TextBoxParam Then
|
|
Dim TextParam As TextBoxParam = DirectCast(CurrCompoParam, TextBoxParam)
|
|
Dim sRabbetDepth As String = sOverlap
|
|
TextParam.m_Value = sRabbetDepth
|
|
TextParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
' Angle
|
|
CurrCompoParam = CurrCompo.CompoParamList(3)
|
|
If TypeOf DirectCast(CurrCompoParam, CompoParam) Is TextBoxOnOffParam Then
|
|
Dim TextOnOffParam As TextBoxOnOffParam = DirectCast(CurrCompoParam, TextBoxOnOffParam)
|
|
Dim sAngle As String = "2"
|
|
TextOnOffParam.m_Value = sAngle
|
|
TextOnOffParam.SetIsActive(True)
|
|
TextOnOffParam.NotifyPropertyChanged("Value")
|
|
End If
|
|
End Select
|
|
|
|
End Sub
|
|
|
|
#End Region ' Rabbet
|
|
|
|
#End Region ' Rules Assembly
|
|
|
|
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
|
|
|
Public Sub NotifyPropertyChanged(propName As String)
|
|
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
|
|
End Sub
|
|
End Class
|