Imports EgtUILib.EgtInterface Public Class NewPanelVM Inherits SceneUserControlVM #Region "FIELDS & PROPERTIES" Private Enum ParamEnum MSG_ISTRUZ = 0 TY_PANEL = 1 PARAG_PANEL = 2 PANEL_H = 3 PANEL_TH = 4 PANEL_J = 5 PARAG_BOTTOM = 6 BOTTOM_H = 7 BOTTOM_TH = 8 BOTTOM_DEPTH = 9 BOTTOM_HOLE_X = 10 BOTTOM_HOLE_Y = 11 BOTTOM_HOLE_TYPE = 12 BOTTOM_DIAM = 13 BOTTOM_HOLE_DIMX = 14 BOTTOM_HOLE_DIMY = 15 BOTTOM_ALPHA = 16 End Enum Private ReadOnly m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1, TopBar_Msg_Stg2}) Public ReadOnly Property MsgList As List(Of String) Get Return m_MsgList End Get End Property Private m_Stage As NewPanelStage = NewPanelStage.InsertParam Private Property Stage As NewPanelStage Get Return m_Stage End Get Set(value As NewPanelStage) m_Stage = value DirectCast(ParamList(ParamEnum.MSG_ISTRUZ), _TextBlockParam).MsgValue = MsgList(m_Stage) End Set End Property #Region "Messages" Public ReadOnly Property TopBar_Msg_Stg0 As String Get Return EgtMsg(110030) ' Clicca sull'edge di un pezzo per aggiungere una paretina del tipo selezionato End Get End Property Public ReadOnly Property TopBar_Msg_Stg1 As String Get Return EgtMsg(110038) ' frontalino End Get End Property Public ReadOnly Property TopBar_Msg_Stg2 As String Get Return EgtMsg(110039) ' fondo End Get End Property Public ReadOnly Property TopBar_Msg_Bottom As String Get Return EgtMsg(110043) ' seleziona le paretine che fanno da contorno al fondo che vuoi creare End Get End Property #End Region ' Messages #End Region ' Fields & Properties #Region "CONSTRUCTOR" Public Sub New() MyBase.New() Title = "Aggiungi Paretina".ToUpper() DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Annulla.Visibility = Visibility.Hidden DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden LoadParamList() End Sub #End Region ' Constructor #Region "METHODS" Public Overrides Sub LoadParamList() AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(0), ParamType.STR, Visibility.Visible)) Dim PanelType As New List(Of ParamCmBx)({New ParamCmBx(EGT_SPLASHTOP), New ParamCmBx(EGT_WATERFALL), New ParamCmBx(EGT_SPLITBOTTOM), New ParamCmBx(EGT_SINK_SPLITBOTTOM), New ParamCmBx(EGT_SINK), New ParamCmBx(EGT_BOTTOM)}) AddGenericParam(New _ComboBoxParam("TipoParetina", PanelType, 0, Visibility.Visible)) ' sezione paretina AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(1), ParamType.STR, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Altezza", 100, ParamType.LEN, Visibility.Visible)) AddGenericParam(New _TextBoxParam("Spessore", 10, ParamType.LEN, Visibility.Visible)) Dim JunctionType As New List(Of ParamCmBx)({New ParamCmBx("Trim Start"), New ParamCmBx("Trim End"), New ParamCmBx("Trim Angled")}) AddGenericParam(New _ComboBoxParam("TipoGiunzione", JunctionType, 0, Visibility.Visible)) ' sezione fondello AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(2), ParamType.STR, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Altezza", 100, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Spessore", 10, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Profondità", 1, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Posizione X foro", 50, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Posizione Y foro", 50, ParamType.LEN, Visibility.Collapsed)) Dim HoleType As New List(Of ParamCmBx)({New ParamCmBx("Fessura"), New ParamCmBx("Foro")}) AddGenericParam(New _ComboBoxParam("TipoBuco", HoleType, 0, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Diametro foro", 30, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Dimensione X foro", 25, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Dimensione Y foro", 25, ParamType.LEN, Visibility.Collapsed)) AddGenericParam(New _TextBoxParam("Inclinazione", 2, ParamType.DOUB, Visibility.Collapsed)) End Sub Public Sub AdvanceStage() Stage += 1 End Sub Public Function AtStage() Return Stage End Function Public Overrides Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx) ' quando viene selezionato lo split bottom devo mostrare le opzioni per il fondello If DirectCast(sender, _ComboBoxParam).Name = "TipoParetina" Then Dim sType As String = DirectCast(Selection, ParamCmBx).Name If sType = EGT_SPLITBOTTOM Then DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 0 ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible Map.refSceneHostVM.m_SelType = GDB_TY.SRF_MESH ElseIf sType = EGT_SINK_SPLITBOTTOM Then DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2 ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 0 ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE ElseIf sType = EGT_SINK Then DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2 ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 1 ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE ElseIf sType = EGT_SPLASHTOP Or sType = EGT_WATERFALL Then DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible If DirectCast(Selection, ParamCmBx).Name = EGT_SPLASHTOP Then DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 0 ElseIf DirectCast(Selection, ParamCmBx).Name = EGT_WATERFALL Then DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2 End If ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE ElseIf sType = EGT_BOTTOM Then DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible DirectCast(ParamList(ParamEnum.MSG_ISTRUZ), _TextBlockParam).MsgValue = TopBar_Msg_Bottom ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 1 ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed Map.refSceneHostVM.m_SelType = GDB_TY.SRF_MESH End If End If If DirectCast(sender, _ComboBoxParam).Name = "TipoBuco" Then Dim sType As String = DirectCast(Selection, ParamCmBx).Name If sType = EGT_SLOT Then ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible ElseIf sType = EGT_BORE Then ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed End If End If End Sub Public Overrides Sub Conferma() ''debug 'DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2 'AddWaterfallAndSplitBottom(105) ''debug ' se sono in modalità fondello allora devo creare il pezzo Dim sType As String = DirectCast(ParamList(ParamEnum.TY_PANEL), _ComboBoxParam).SelParamCmBx.Name If sType = EGT_SPLITBOTTOM Then AddSplitBottom(Map.refSceneHostVM.m_PanelPartList) ElseIf sType = EGT_BOTTOM Then AddBottom(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 ' chiudo lo user control Close() End Sub Public Overrides Sub ShowPreview() End Sub Private Sub Close() SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart) EgtDraw() Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_ADD_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") End If ' ricostruisco l'elenco dei part solid SolidManagerM.CreatePartSolid() ' rimuovo lo UC dalla griglia Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC) ' gestisco le attivazioni di undo/redo SolidManagerM.ManageUndoRedo() End Sub Public Sub AddPanel(nId As Integer) Dim ComboBoxParam As _ComboBoxParam = DirectCast(ParamList(ParamEnum.TY_PANEL), _ComboBoxParam) If ComboBoxParam.SelParamCmBx.Name = EGT_SPLASHTOP Then AddSplashTop(nId) ElseIf ComboBoxParam.SelParamCmBx.Name = EGT_WATERFALL Then AddWaterfall(nId) ElseIf ComboBoxParam.SelParamCmBx.Name = EGT_SINK Then AddWaterfallAndBottom(nId) ElseIf ComboBoxParam.SelParamCmBx.Name = EGT_SINK_SPLITBOTTOM Then AddWaterfallAndSplitBottom(nId) End If End Sub Public Function GetPanelType() Return DirectCast(ParamList(ParamEnum.TY_PANEL), _ComboBoxParam).SelParamCmBx.Name End Function Private Sub AddSplashTop(nId As Integer) Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId)) ' setto l'indice del lato e il parent If EgtLuaSetGlobIntVar("TOOL.nEdgeId", nId) Then AssLog("TOOL.nEdgeId = " & nId.ToString()) If EgtLuaSetGlobIntVar("TOOL.nParent", nPartId) Then AssLog("TOOL.nParent = " & nPartId.ToString()) ' setto le variabili per l'alzatina Dim dAngAlzatina As Double = 90 If EgtLuaSetGlobNumVar("TOOL.dPairAng", dAngAlzatina) Then AssLog("TOOL.dPairAng = " & dAngAlzatina.ToString()) Dim nJunctionType As Integer = DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx + 1 If EgtLuaSetGlobIntVar("TOOL.nJunctionType", nJunctionType) Then AssLog("TOOL.nJunctionType = " & nJunctionType.ToString()) Dim bOnLoop As Boolean = False If EgtLuaSetGlobBoolVar("TOOL.bOnLoop", bOnLoop) Then AssLog("TOOL.bOnLoop = false") Dim bInsideLoop As Boolean = True If EgtLuaSetGlobBoolVar("TOOL.bInsideLoop", bInsideLoop) Then AssLog("TOOL.bInsideLoop = true") ' setto le varibili generiche per il pezzo Dim dTh As Double = DirectCast(ParamList(ParamEnum.PANEL_TH), _TextBoxParam).GetValue() If EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Then AssLog("TOOL.dTh = " & dTh.ToString()) Dim dH As Double = DirectCast(ParamList(3), _TextBoxParam).GetValue() If EgtLuaSetGlobNumVar("TOOL.dH", dH) Then AssLog("TOOL.dH = " & dH.ToString()) If EgtLuaSetGlobBoolVar("TOOL.bPrev", True) Then AssLog("TOOL.bPrev = true") If EgtLuaSetGlobBoolVar("TOOL.bNext", True) Then AssLog("TOOL.bNext = true") ' chiamo la funzione per la creazione If EgtLuaCallFunction("TOOL.CreateParetinaFull") Then AssLog("TOOL.CreateParetinaFull()") End Sub Private Sub AddWaterfall(nId As Integer, Optional sInfoKey As String = "", Optional sInfoValue As String = "") Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId)) ' setto l'indice del lato e il parent If EgtLuaSetGlobIntVar("TOOL.nEdgeId", nId) Then AssLog("TOOL.nEdgeId = " & nId.ToString()) If EgtLuaSetGlobIntVar("TOOL.nParent", nPartId) Then AssLog("TOOL.nParent = " & nPartId.ToString()) ' setto le variabili per il frontalino Dim dAngFrontalino As Double = -90 If EgtLuaSetGlobNumVar("TOOL.dPairAng", dAngFrontalino) Then AssLog("TOOL.dPairAng = " & dAngFrontalino.ToString()) Dim nJunctionType As Integer = DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx + 1 If EgtLuaSetGlobIntVar("TOOL.nJunctionType", nJunctionType) Then AssLog("TOOL.nJunctionType = " & nJunctionType.ToString()) Dim bOnLoop As Boolean = True If EgtLuaSetGlobBoolVar("TOOL.bOnLoop", bOnLoop) Then AssLog("TOOL.bOnLoop = false") Dim bInsideLoop As Boolean = True If EgtLuaSetGlobBoolVar("TOOL.bInsideLoop", bInsideLoop) Then AssLog("TOOL.bInsideLoop = true") ' setto le varibili generiche per il pezzo Dim dTh As Double = DirectCast(ParamList(ParamEnum.PANEL_TH), _TextBoxParam).GetValue() If EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Then AssLog("TOOL.dTh = " & dTh.ToString()) Dim dH As Double = DirectCast(ParamList(3), _TextBoxParam).GetValue() If EgtLuaSetGlobNumVar("TOOL.dH", dH) Then AssLog("TOOL.dH = " & dH.ToString()) If EgtLuaSetGlobBoolVar("TOOL.bPrev", True) Then AssLog("TOOL.bPrev = true") If EgtLuaSetGlobBoolVar("TOOL.bNext", True) Then AssLog("TOOL.bNext = true") ' se presente setto l'info addizionale If sInfoKey <> String.Empty Then If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoKey", sInfoKey) Then AssLog("TOOL.InfoKey = " & sInfoKey) If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoValue", sInfoValue) Then AssLog("TOOL.sInfoValue = " & sInfoValue) End If ' chiamo la funzione per la creazione If EgtLuaCallFunction("TOOL.CreateParetinaFull") Then AssLog("TOOL.CreateParetinaFull()") End Sub Private Sub AddSplitBottom(PartList As List(Of Integer), Optional sInfoKey As String = "", Optional sInfoValue As String = "") If PartList.Count = 0 Then Close() Return End If Dim lEdgeList As New List(Of Integer) For Each nPart As Integer In PartList Dim nOutLay As Integer = EgtGetFirstNameInGroup(nPart, "OutLoop") Dim nEdge As Integer = EgtGetFirstNameInGroup(nOutLay, "A3") lEdgeList.Add(nEdge) Next For i As Integer = 1 To lEdgeList.Count EgtLuaSetGlobIntVar("TOOL.tbIdEdges." & i.ToString(), lEdgeList(i - 1).ToString()) Next Dim dTh As Double = DirectCast(ParamList(ParamEnum.BOTTOM_TH), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Dim dDepth As Double = DirectCast(ParamList(ParamEnum.BOTTOM_DEPTH), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dDepth", dDepth) Dim dPosX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_X), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dHoleX", dPosX) Dim dPosY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_Y), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dHoleY", dPosY) Dim dDimX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMX), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dHoleDimX", dDimX) Dim dDimY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMY), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dHoleDimY", dDimY) ' se presente setto l'info addizionale If sInfoKey <> String.Empty Then If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoKey", sInfoKey) Then AssLog("TOOL.InfoKey = " & sInfoKey) If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoValue", sInfoValue) Then AssLog("TOOL.InfoValue = " & sInfoValue) End If EgtLuaCallFunction("TOOL.CreateSplitBottom") End Sub Private Sub AddBottom(PartList As List(Of Integer), Optional sInfoKey As String = "", Optional sInfoValue As String = "") If PartList.Count = 0 Then Close() Return End If Dim lEdgeList As New List(Of Integer) For Each nPart As Integer In PartList Dim nOutLay As Integer = EgtGetFirstNameInGroup(nPart, "OutLoop") Dim nEdge As Integer = EgtGetFirstNameInGroup(nOutLay, "A3") lEdgeList.Add(nEdge) Next For i As Integer = 1 To lEdgeList.Count EgtLuaSetGlobIntVar("TOOL.tbIdEdges." & i.ToString(), lEdgeList(i - 1).ToString()) Next Dim dTh As Double = DirectCast(ParamList(ParamEnum.BOTTOM_TH), _TextBoxParam).GetValue() EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Dim dDiam As Double = DirectCast(ParamList(ParamEnum.BOTTOM_DIAM), _TextBoxParam).GetValue() If dDiam < 1 Then dDiam = 30 EgtLuaSetGlobNumVar("TOOL.dDiamBore", dDiam) Dim dX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_X), _TextBoxParam).GetValue() If dX < dDiam Then dX = dDiam + 10 EgtLuaSetGlobNumVar("TOOL.dHoleX", dX) Dim dY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_Y), _TextBoxParam).GetValue() If dY < dDiam Then dY = dDiam + 10 EgtLuaSetGlobNumVar("TOOL.dHoleY", dY) ' se presente setto l'info addizionale If sInfoKey <> String.Empty Then If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoKey", sInfoKey) Then AssLog("TOOL.InfoKey = " & sInfoKey) If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoValue", sInfoValue) Then AssLog("TOOL.InfoKey = " & sInfoValue) End If EgtLuaCallFunction("TOOL.CreateBottom") End Sub Private Sub AddWaterfallAndBottom(nId) End Sub Private Sub AddWaterfallAndSplitBottom(nId As Integer) Dim nInLoopLay As Integer = EgtGetParent(nId) Dim nEdges As Integer = EgtGetGroupObjs(nInLoopLay) Dim nEdge As Integer = EgtGetFirstInGroup(nInLoopLay) While nEdge <> GDB_ID.NULL AddWaterfall(nEdge, "SinkSplitBottom", "1") nEdge = EgtGetNext(nEdge) End While ' recupero le info dei part creati come frontalini dalle info del Parent Dim nParent As Integer = EgtGetParent(nInLoopLay) ' scopro la posizione ordinale dell'inloop in questione Dim nIn As Integer = 1 Dim nInLoop As Integer = EgtGetFirstNameInGroup(nParent, "InLoop") While nInLoop <> nInLoopLay nIn += 1 nInLoop = EgtGetNextName(nInLoop, "InLoop") End While Dim WaterFallList As New List(Of Integer) For i As Integer = 1 To nEdges Dim sInfoName As String = "A" & i.ToString() & "_I" & nIn.ToString() Dim sPartName As String = String.Empty EgtGetInfo(nParent, sInfoName, sPartName) Dim PanelList As Array = sPartName.Split(","c) For Each sChild As String In PanelList Dim dPairAng As Double = 0 Dim nPartId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sChild) EgtGetInfo(nPartId, "PairAng", dPairAng) If dPairAng < 0 Then sPartName = sChild Exit For End If Next WaterFallList.Add(EgtGetFirstNameInGroup(GDB_ID.ROOT, sPartName)) Next ' ora che ho la lista dei frontalini posso creare lo split bottom AddSplitBottom(WaterFallList, "SinkSplitBottom", "1") End Sub #End Region ' Methods End Class