diff --git a/Constants/ConstEgtStone3D.vb b/Constants/ConstEgtStone3D.vb
index c9c51c7..e8c418c 100644
--- a/Constants/ConstEgtStone3D.vb
+++ b/Constants/ConstEgtStone3D.vb
@@ -117,6 +117,13 @@
ShowPreview = 2
End Enum
+ Public Enum PartType As Integer
+ Unknown = -1
+ TopKitchen = 0
+ Panel = 1
+ Sink = 2
+ End Enum
+
' Constanti ParametricCompo
Public Enum ParamType As Integer
BOOL = 1
diff --git a/Panel/EditPanelVM.vb b/Panel/EditPanelVM.vb
index 6f6b2b0..d7665b8 100644
--- a/Panel/EditPanelVM.vb
+++ b/Panel/EditPanelVM.vb
@@ -22,6 +22,16 @@ Public Class EditPanelVM
End Set
End Property
+ Private m_PartType As PartType = PartType.Unknown
+ Friend Property PartType As PartType
+ Get
+ Return m_PartType
+ End Get
+ Set(value As PartType)
+ m_PartType = value
+ End Set
+ End Property
+
' id del part selezionato per essere modificato
Private m_nIdPart As Integer = GDB_ID.NULL
Public Property nIdPart As Integer
@@ -30,6 +40,27 @@ Public Class EditPanelVM
End Get
Set(value As Integer)
m_nIdPart = value
+ If ParamList.Count > 0 Then UpdatePanelInfoFromPart(m_nIdPart)
+ AdvanceStage()
+ ' devo capire che tipo di pezzo sto modificando
+ ' se non ha info di accoppiamento è una base (piano cucina)
+ ' se ha l'info "Sink" allora è un pezzo di una buca
+ ' se ha info di accoppiamento generico è una paretina
+ Dim bIsSink As Boolean = False
+ EgtGetInfo(m_nIdPart, "Sink", bIsSink)
+ If bIsSink Then
+ PartType = PartType.Sink
+ Return
+ End If
+ Dim sPair As String = String.Empty
+ EgtGetInfo(m_nIdPart, "PairMyRef", sPair)
+ Dim bIsPanel As Boolean = sPair <> String.Empty
+ If bIsPanel Then
+ PartType = PartType.Panel
+ Return
+ End If
+ ' altrimenti è un piano cucina
+ PartType = PartType.TopKitchen
End Set
End Property
@@ -60,23 +91,41 @@ Public Class EditPanelVM
Public Sub New()
MyBase.New()
Title = "Modifica Paretina".ToUpper()
+ If Map.refSceneHostVM.m_nIdPart <> GDB_ID.NULL Then
+ nIdPart = Map.refSceneHostVM.m_nIdPart
+ Stage = EditPanelStage.InsertNewParam
+ End If
+
LoadParamList()
+ UpdatePanelInfoFromPart(m_nIdPart)
End Sub
#End Region ' Constructor
#Region "METHODS"
+ Private Sub UpdatePanelInfoFromPart(nIdPart As Integer)
+ If nIdPart = GDB_ID.NULL Then Return
+ Dim dH As Double = 100
+ EgtGetInfo(nIdPart, "H", dH)
+ DirectCast(ParamList(2), _TextBoxParam).sValue = dH.ToString()
+ Dim dTh As Double = 10
+ EgtGetInfo(nIdPart, "Th", dTh)
+ DirectCast(ParamList(3), _TextBoxParam).sValue = dTh.ToString()
+
+ End Sub
+
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam("Messaggio", MsgList(0), ParamType.STR, Visibility.Visible))
' sezione paretina
AddGenericParam(New _TextBlockParam("Messaggio", MsgList(1), ParamType.STR, Visibility.Collapsed))
- Dim dH As Double = 0
- EgtGetInfo(nIdPart, "H", dH)
+ Dim dH As Double = 200
AddGenericParam(New _TextBoxParam("Altezza", dH, ParamType.LEN, Visibility.Visible))
- Dim dTh As Double = 0
- EgtGetInfo(nIdPart, "Th", dTh)
+ Dim dTh As Double = 20
AddGenericParam(New _TextBoxParam("Spessore", dTh, ParamType.LEN, Visibility.Visible))
+ Dim nJunctionType As Integer = 0
+ Dim JunctionTypeList As New List(Of ParamCmBx)({New ParamCmBx("Trim Start"), New ParamCmBx("Trim End"), New ParamCmBx("Angle"), New ParamCmBx("Trim Both")})
+ AddGenericParam(New _ComboBoxParam("Tipo Giunzione", JunctionTypeList, nJunctionType))
' sezione fondello
AddGenericParam(New _TextBlockParam("Messaggio", MsgList(2), ParamType.STR, Visibility.Collapsed))
@@ -85,8 +134,8 @@ Public Class EditPanelVM
AddGenericParam(New _TextBoxParam("Inclinazione", 0.1, ParamType.DOUB, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Diametro foro", 30, ParamType.LEN, Visibility.Collapsed))
- '
- AddGenericParam(New _CheckBoxParam("ModificaAdiacenti", "Modifica anche paretine adiacenti", Visibility.Visible))
+ ' checkbox
+ AddGenericParam(New _CheckBoxParam("ModificaAdiacenti", "Modifica anche altre paretine dello stesso tipo", Visibility.Visible))
'' dalle info leggo se l'oggetto è una paretina o una buca
@@ -138,14 +187,16 @@ Public Class EditPanelVM
End Function
Public Overrides Sub Conferma()
- ' se sono in modalità fondello allora devo creare il pezzo
- If DirectCast(ParamList(1), _ComboBoxParam).SelParamCmBx.Name = "SplitBottom" Then
- AddSplitBottom(Map.refSceneHostVM.m_PanelPartList)
- End If
- ' resetto la lista dei part selezionati per la creazione di uno splitBottom
- Map.refSceneHostVM.m_PanelPartList.Clear()
- ' resetto il tipo di elementi da evidenziare
- Map.refSceneHostVM.m_SelType = GDB_TY.NONE
+ ' in base al tipo di pezzo che sto modificando chiamo la funzione corrispondente
+ Select Case PartType
+ Case PartType.Sink
+ 'EditSplitBottom()
+ Case PartType.Panel
+ EditPanel()
+ Case PartType.TopKitchen
+ 'EditTopKitchen()
+ End Select
+
' chiudo lo user control
Close()
@@ -161,14 +212,14 @@ Public Class EditPanelVM
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
- Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_PANEL)
+ Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_EDIT_PANEL)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
- EgtOutLog("CONFIG ERR: Il pulsante di Panel è stato definito come Button anziché ToggleButton")
+ EgtOutLog("CONFIG ERR: Il pulsante di Edit Panel è stato definito come Button anziché ToggleButton")
End If
' rimuovo lo UC dalla griglia
- Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC)
+ Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditPanelUC)
SolidManagerM.ManageUndoRedo()
End Sub
@@ -288,5 +339,85 @@ Public Class EditPanelVM
AddSplitBottom(WaterFallList)
End Sub
+ Private Sub SetVariablesAndRecreate(nEdgeId As Integer)
+ If EgtLuaSetGlobIntVar("TOOL.nEdgeId", nEdgeId) Then AssLog("TOOL.nEdgeId = " & nEdgeId.ToString())
+ Dim nJunctionType = DirectCast(ParamList(4), _ComboBoxParam).IndexSelParamCmBx + 1 ' in Lua l'enum è 1-based
+ If EgtLuaSetGlobIntVar("TOOL.nJunctionType", nJunctionType) Then AssLog("TOOL.nJunctionType = " & nJunctionType.ToString())
+ Dim dTh As Double = DirectCast(ParamList(3), _TextBoxParam).GetValue()
+ If EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Then AssLog("TOOL.dTh = " & dTh.ToString())
+ Dim dH As Double = DirectCast(ParamList(2), _TextBoxParam).GetValue()
+ If EgtLuaSetGlobNumVar("TOOL.dH", dH) Then AssLog("TOOL.dH = " & dH.ToString())
+ Dim bPrev As Boolean = True
+ If EgtLuaSetGlobBoolVar("TOOL.bPrev", bPrev) Then AssLog("TOOL.bPrev = true")
+ Dim bNext As Boolean = True
+ If EgtLuaSetGlobBoolVar("TOOL.bNext", bNext) Then AssLog("TOOL.bNext = true")
+ If EgtLuaCallFunction("TOOL.CreateParetinaFull") Then AssLog("TOOL.CreateParetinaFull()")
+ End Sub
+
+ Private Sub EditPanel()
+ ' recupero le info salvate nel Part
+ EgtLuaExecLine("TOOL.FillInfoTableFromPart(" & nIdPart.ToString() & ")")
+ ' recupero l'id dell'edge che ha generato la paretina
+ Dim nParent As Integer = GDB_ID.NULL
+ EgtGetInfo(nIdPart, "Parent", nParent)
+ Dim nIn As Integer = 0
+ EgtGetInfo(nIdPart, "nInLoop", nIn)
+ Dim sLayName As String = "OutLoop"
+ Dim nLayId As Integer = GDB_ID.NULL
+ If nIn = 0 Then
+ nLayId = EgtGetFirstNameInGroup(nParent, sLayName)
+ Else
+ sLayName = "InLoop"
+ nLayId = EgtGetFirstNameInGroup(nParent, sLayName)
+ Dim nInLays = 1
+ While nInLays <> nIn
+ nLayId = EgtGetNextName(nLayId, sLayName)
+ nInLays += 1
+ End While
+ End If
+ Dim nEdge As Integer = 0
+ EgtGetInfo(nIdPart, "ParentEdge", nEdge)
+ Dim sEdgeName As String = "A" & nEdge.ToString()
+ Dim nEdgeId As Integer = EgtGetFirstNameInGroup(nLayId, sEdgeName)
+ ' setto i parametri che ha scelto l'utente
+ SetVariablesAndRecreate(nEdgeId)
+ ' se la checkbox per la modifica delle paretine dello stesso tipo, sullo stesso loop, è checkata allora scorro il loop e continuo a chiamare la ricreazione
+ If DirectCast(ParamList(10), _CheckBoxParam).IsChecked Then
+ ' scorro i next e prev modificando anche le paretine adiacenti con le stesse modifiche
+ ' facendo attenzione a non entrare in un loop
+ Dim sCurrPartName As String = String.Empty
+ EgtGetName(nIdPart, sCurrPartName)
+ Dim sNamePrev As String = String.Empty
+ EgtGetInfo(nIdPart, "Prev", sNamePrev)
+ Dim nLastPrev As Integer = GDB_ID.NULL
+ While sNamePrev <> String.Empty And sNamePrev <> sCurrPartName
+ Dim nPrev As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sNamePrev)
+ ' recupero le info salvate nel Part
+ EgtLuaExecLine("TOOL.FillInfoTableFromPart(" & nPrev.ToString() & ")")
+ ' recupero l'edge del parent e ricreo la paretina
+ EgtGetInfo(nPrev, "ParentEdge", nEdge)
+ sEdgeName = "A" & nEdge.ToString()
+ nEdgeId = EgtGetFirstNameInGroup(nLayId, sEdgeName)
+ SetVariablesAndRecreate(nEdgeId)
+ EgtGetInfo(nPrev, "Prev", sNamePrev)
+ nLastPrev = nPrev
+ End While
+ Dim sNameNext As String = String.Empty
+ EgtGetInfo(nIdPart, "Next", sNameNext)
+ While sNameNext <> String.Empty
+ Dim nNext As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sNameNext)
+ ' recupero le info salvate nel Part
+ EgtLuaExecLine("TOOL.FillInfoTableFromPart(" & nNext.ToString() & ")")
+ ' recupero l'edge del parent e ricreo la paretina
+ If nNext = nLastPrev Then Exit While
+ EgtGetInfo(nNext, "ParentEdge", nEdge)
+ sEdgeName = "A" & nEdge.ToString()
+ nEdgeId = EgtGetFirstNameInGroup(nLayId, sEdgeName)
+ SetVariablesAndRecreate(nEdgeId)
+ EgtGetInfo(nNext, "Next", sNameNext)
+ End While
+ End If
+ End Sub
+
#End Region ' Methods
End Class
diff --git a/SVG/SVGVM.vb b/SVG/SVGVM.vb
index 57bafe5..6c8dae4 100644
--- a/SVG/SVGVM.vb
+++ b/SVG/SVGVM.vb
@@ -278,6 +278,7 @@ Public Class MyPath
' Carico colore linea
SetBrushFromRGBString(m_stroke, m_CurrPath.Stroke)
' Carico spessore linea
+ If m_stroke_width < 5 Then m_stroke_width = 10
m_CurrPath.StrokeThickness = m_stroke_width
' Applico l'opacità della superificie
m_CurrPath.Opacity = m_fill_opacity
diff --git a/SceneButton/SceneButtonVM.vb b/SceneButton/SceneButtonVM.vb
index 956cd37..b8670c8 100644
--- a/SceneButton/SceneButtonVM.vb
+++ b/SceneButton/SceneButtonVM.vb
@@ -214,6 +214,12 @@ Public Class SceneButtonVM
'''
''' User control generico
Public Sub LoadUC(SceneUC As SceneUserControlV)
+ If Not IsNothing(m_PairUC) Then RemoveUC(m_PairUC)
+ If Not IsNothing(m_RotateUC) Then RemoveUC(m_RotateUC)
+ If Not IsNothing(m_MoveUC) Then RemoveUC(m_MoveUC)
+ If Not IsNothing(m_NewPanelUC) Then RemoveUC(m_NewPanelUC)
+ If Not IsNothing(m_EditPanelUC) Then RemoveUC(m_EditPanelUC)
+ If Not IsNothing(m_ParametricCompoUC) Then RemoveUC(m_ParametricCompoUC)
Grid.SetColumn(SceneUC, 0)
Grid.SetRow(SceneUC, 0)
Grid.SetColumnSpan(SceneUC, 2)
@@ -227,6 +233,7 @@ Public Class SceneButtonVM
''' User control generico
Friend Sub RemoveUC(SceneUC As SceneUserControlV)
Map.refSceneButtonV.MainGrid.Children.Remove(SceneUC)
+ SceneUC = Nothing
End Sub
#End Region ' Methods
diff --git a/SceneHost/MySceneHostVM.vb b/SceneHost/MySceneHostVM.vb
index ae3f04a..2db8b38 100644
--- a/SceneHost/MySceneHostVM.vb
+++ b/SceneHost/MySceneHostVM.vb
@@ -983,8 +983,14 @@ Line1:
Continue While
End If
- ' selezione semplice
- If EgtIsPart(nPartId) Then
+ If Map.refSceneButtonVM.IsTgBtnChecked(EGT_EDIT_PANEL) Then
+ Dim PartSolidId As Integer = nPartId
+ If sName = "SOLID" Then EgtGetInfo(nPartId, "Parent", PartSolidId)
+ DirectCast(Map.refSceneButtonVM.m_EditPanelUC.DataContext, EditPanelVM).nIdPart = PartSolidId
+ End If
+
+ ' selezione semplice
+ If EgtIsPart(nPartId) Then
Dim nStat As Integer = GDB_ST.ON_
EgtGetStatus(nPartId, nStat)
' Se già selezionato o posizione oggetto incompatibile con flag posizione selezionati
@@ -1090,7 +1096,12 @@ Line1:
' WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
' WARNING WARNING WARNING WARNING WARNING WARNING ' questo controllo è stato tolto per poter selezionare gli oggetti importati nel vme e quindi non presenti nel nesting
'If bSelected Then
- PartSolidIdToSel.SelectPart()
+ If Map.refSceneButtonVM.IsTgBtnChecked(EGT_EDIT_PANEL) Then
+ PartSolidIdToSel.SelectSinglePart()
+ Else
+ PartSolidIdToSel.SelectPart()
+ End If
+
'End If
' Se deselezione da eseguire
ElseIf m_nIdToDesel <> GDB_ID.NULL Then
diff --git a/SceneUserControl/SceneUserControlVM.vb b/SceneUserControl/SceneUserControlVM.vb
index c700d4d..89119d2 100644
--- a/SceneUserControl/SceneUserControlVM.vb
+++ b/SceneUserControl/SceneUserControlVM.vb
@@ -354,6 +354,17 @@ Public Class _ComboBoxParam
m_SelParamCmBx = value
RaiseEvent SelectionChanged(Me, m_SelParamCmBx)
NotifyPropertyChanged(NameOf(SelParamCmBx))
+ IndexSelParamCmBx = ParamCmBxList.FindIndex(Function(x As ParamCmBx) x.Name = m_SelParamCmBx.Name)
+ End Set
+ End Property
+
+ Private m_IndexSelParamCmBx As Integer
+ Public Property IndexSelParamCmBx As Integer
+ Get
+ Return m_IndexSelParamCmBx
+ End Get
+ Set(value As Integer)
+ m_IndexSelParamCmBx = value
End Set
End Property