diff --git a/Constants/ConstGen.vb b/Constants/ConstGen.vb
index 48b33e9..b08da3d 100644
--- a/Constants/ConstGen.vb
+++ b/Constants/ConstGen.vb
@@ -214,7 +214,8 @@ Module ConstGen
Public Const INFO_DEPTH As String = "Depth"
Public Const INFO_WIDTH As String = "Width"
Public Const INFO_DEPTH2 As String = "Depth2"
- Public CONST INFO_AGG2 As String = "Agg2"
+ Public Const INFO_AGG2 As String = "Agg2"
+ Public Const INFO_ROUNDOFF As String = "RoundOff"
' Info in entità da tagliare per taglio ristretto
Public Const INFO_STRICT As String = "Strict"
' Info in entità da tagliare per angolo di lato e tallone
diff --git a/Constants/ConstIni.vb b/Constants/ConstIni.vb
index 59e27a1..ae935ea 100644
--- a/Constants/ConstIni.vb
+++ b/Constants/ConstIni.vb
@@ -142,6 +142,7 @@ Module ConstIni
Public Const K_UNDERDRILLDEPTH As String = "UnderDrillDepth"
Public Const K_FILOTOPOFFSET As String = "FiloTopOffset"
Public Const K_FILOTOPDEPTH As String = "FiloTopDepth"
+ Public Const K_ROUNDOFF As String = "RoundOff"
Public Const S_NEST As String = "Nest"
Public Const K_DIRECT As String = "Direct"
diff --git a/DrawImport/CompoDimensionUC.xaml.vb b/DrawImport/CompoDimensionUC.xaml.vb
index 95012b2..cbaf611 100644
--- a/DrawImport/CompoDimensionUC.xaml.vb
+++ b/DrawImport/CompoDimensionUC.xaml.vb
@@ -336,6 +336,7 @@ Public Class CompoDimensionUC
Dim nCmpInfo As Integer = 0
If EgtGetInfo(nId, "ID", nCmpInfo) AndAlso nCmp = nCmpInfo Then
EgtSetStatus(nId, GDB_ST.OFF)
+ UpdateInLoopReference(nCmp)
Exit While
End If
nId = EgtGetNextName(nId, "HoleLabels")
@@ -379,5 +380,42 @@ Public Class CompoDimensionUC
EgtDraw()
End Sub
+ Private Sub UpdateInLoopReference(nCmp As Integer)
+ ' aggiorno il layer "FiloTop"
+ Dim nIdInLoop As Integer = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "InLoop")
+ While nIdInLoop <> GDB_ID.NULL
+ Dim nCmpInfoIL As Integer = 0
+ If EgtGetInfo(nIdInLoop, "ID", nCmpInfoIL) AndAlso nCmp = nCmpInfoIL Then
+ Dim nLayFiloTop As Integer = GDB_ID.NULL
+ EgtGetInfo(nIdInLoop, "FiloTopRef", nLayFiloTop)
+ If nLayFiloTop <> GDB_ID.NULL Then
+ Dim LocalList As New List(Of Integer) From {nIdInLoop}
+ m_DrawPage.m_FiloTopUC.CreateFiloTopPreView(LocalList)
+ EgtSetStatus(nLayFiloTop, GDB_ST.ON_)
+ Exit While
+ End If
+ End If
+ nIdInLoop = EgtGetNextName(nIdInLoop, "InLoop")
+ End While
+ End Sub
+
+ ' riceve la info "ID" della componente
+ Public Sub SetStatusVisibilityInLoopReference(nCmp As Integer, Status As GDB_ST)
+ ' aggiorno il layer "FiloTop"
+ Dim nIdInLoop As Integer = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "InLoop")
+ While nIdInLoop <> GDB_ID.NULL
+ Dim nCmpInfoIL As Integer = 0
+ If EgtGetInfo(nIdInLoop, "ID", nCmpInfoIL) AndAlso nCmp = nCmpInfoIL Then
+ Dim nLayFiloTop As Integer = GDB_ID.NULL
+ EgtGetInfo(nIdInLoop, "FiloTopRef", nLayFiloTop)
+ If nLayFiloTop <> GDB_ID.NULL Then
+ EgtSetStatus(nLayFiloTop, Status)
+ Exit While
+ End If
+ End If
+ nIdInLoop = EgtGetNextName(nIdInLoop, "InLoop")
+ End While
+ End Sub
+
#End Region ' METHODS for InternalCompo
End Class
diff --git a/DrawImport/DrawPageUC.xaml.vb b/DrawImport/DrawPageUC.xaml.vb
index 712beab..b3bbf90 100644
--- a/DrawImport/DrawPageUC.xaml.vb
+++ b/DrawImport/DrawPageUC.xaml.vb
@@ -41,6 +41,9 @@ Public Class DrawPageUC
Friend m_bDrawOk As Boolean = False
Private m_bFirst As Boolean = True
+ Private m_SelListHole As New List(Of Integer)
+ Private m_DeselectListHole As New List(Of Integer)
+
' questa variabile serve per risalire al nome della componente che ospita i componenti interni att
Friend m_sMainCompo As String = String.Empty
@@ -360,6 +363,8 @@ Public Class DrawPageUC
Dim nCmpInfo As Integer = 0
If EgtGetInfo(nHLId, "ID", nCmpInfo) AndAlso nCmp = nCmpInfo Then
EgtSetStatus(nHLId, GDB_ST.ON_)
+ ' nascondo eventuali FiloTop
+ m_CompoDimension.SetStatusVisibilityInLoopReference(nCmp, GDB_ST.OFF)
Exit While
End If
nHLId = EgtGetNextName(nHLId, "HoleLabels")
@@ -462,21 +467,25 @@ Public Class DrawPageUC
EgtDeselectObj(nId)
EgtDeselectObj(nLayId)
Dim sLayName As String = ""
- If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo( nLayId, INFO_FILOTOP) Then
- EgtRemoveInfo( nLayId, INFO_FILOTOP)
- EgtRemoveInfo( nLayId, INFO_OFFSET)
- EgtRemoveInfo( nLayId, INFO_DEPTH)
- EgtResetColor( nLayId)
+ If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
+ EgtRemoveInfo(nLayId, INFO_FILOTOP)
+ EgtRemoveInfo(nLayId, INFO_OFFSET)
+ EgtRemoveInfo(nLayId, INFO_DEPTH)
+ EgtResetColor(nLayId)
End If
+ m_DeselectListHole.Add(nLayId)
+ m_SelListHole.Remove(nLayId)
Else
Dim sLayName As String = ""
- If EgtGetName( nLayId, sLayName) AndAlso sLayName = NAME_INLOOP Then
- EgtSelectObj( nId)
- EgtSelectObj( nLayId)
- EgtSetInfo( nLayId, INFO_FILOTOP, 1)
- EgtSetInfo( nLayId, INFO_OFFSET, m_FiloTopUC.FiloTopOffset)
- EgtSetInfo( nLayId, INFO_DEPTH, m_FiloTopUC.FiloTopDepth)
- EgtSetColor( nLayId, New Color3d(255, 255, 255))
+ If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP Then
+ EgtSelectObj(nId)
+ EgtSelectObj(nLayId)
+ EgtSetInfo(nLayId, INFO_FILOTOP, 1)
+ EgtSetInfo(nLayId, INFO_OFFSET, m_FiloTopUC.FiloTopOffset)
+ EgtSetInfo(nLayId, INFO_DEPTH, m_FiloTopUC.FiloTopDepth)
+ EgtSetColor(nLayId, New Color3d(255, 255, 255))
+ m_SelListHole.Add(nLayId)
+ m_DeselectListHole.Remove(nLayId)
End If
End If
EgtDraw()
@@ -484,6 +493,8 @@ Public Class DrawPageUC
End If
nId = EgtGetNextObjInSelWin()
End While
+ m_FiloTopUC.CreateFiloTopPreView(m_SelListHole)
+ m_FiloTopUC.EraseFiloTopPreview(m_DeselectListHole)
End Sub
Private Sub OnShowDistanceVector(sender As Object, vtDist As Vector3d) Handles DrawScene.OnShowDistanceVector
@@ -1362,6 +1373,8 @@ Public Class DrawPageUC
End Sub
Private Sub FiloTopBtn_Click(sender As Object, e As RoutedEventArgs) Handles FiloTopBtn.Click
+ m_SelListHole.Clear()
+ m_DeselectListHole.Clear()
m_SceneButtons.MeasureBtn.IsChecked = False
If FiloTopBtn.IsChecked Then
' Imposto modalità
@@ -1375,25 +1388,25 @@ Public Class DrawPageUC
m_PrevSideAnglePage = Pages.AlzFront
LeftButtonGrd.Children.Remove(m_CompoDimension.m_AlzFrontPage)
End If
- VariablesGrd.Children.Add( m_FiloTopUC)
+ VariablesGrd.Children.Add(m_FiloTopUC)
SideAngleBtn.IsEnabled = False
EngraveBtn.IsEnabled = False
DripCutBtn.IsEnabled = False
MessageGrid.Visibility = Windows.Visibility.Hidden
BackBtn.Visibility = Windows.Visibility.Hidden
- MessageTxBx.Text = EgtMsg( MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
+ MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
' In ogni caso, nascondo layer delle misure
- Dim PartId As Integer = EgtGetFirstInGroup( GDB_ID.ROOT)
- EgtSetStatus(EgtGetFirstNameInGroup( PartId, COMPO_LAYER_AUX), GDB_ST.OFF)
- EgtSetStatus(EgtGetFirstNameInGroup( PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
- EgtSetStatus(EgtGetFirstNameInGroup( PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
+ Dim PartId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
+ EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.OFF)
+ EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
+ EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
Else
- VariablesGrd.Children.Remove( m_FiloTopUC)
+ VariablesGrd.Children.Remove(m_FiloTopUC)
If m_PrevSideAnglePage = Pages.CompoDimension Then
- VariablesGrd.Children.Add( m_CompoDimension)
+ VariablesGrd.Children.Add(m_CompoDimension)
ElseIf m_PrevSideAnglePage = Pages.InternalComponent Then
- LeftButtonGrd.Children.Add( m_CompoDimension.m_InternalCompoPage)
+ LeftButtonGrd.Children.Add(m_CompoDimension.m_InternalCompoPage)
End If
SideAngleBtn.IsEnabled = m_bEnableSideAngle
EngraveBtn.IsEnabled = True
diff --git a/DrawImport/FiloTopUC.xaml b/DrawImport/FiloTopUC.xaml
index 75d6f89..cb94ae1 100644
--- a/DrawImport/FiloTopUC.xaml
+++ b/DrawImport/FiloTopUC.xaml
@@ -41,7 +41,11 @@
FontSize="{DynamicResource FontSize_LowerCaseCharacter}"/>
-
-
+
+
+
diff --git a/DrawImport/FiloTopUC.xaml.vb b/DrawImport/FiloTopUC.xaml.vb
index 58c2cba..bb4da9b 100644
--- a/DrawImport/FiloTopUC.xaml.vb
+++ b/DrawImport/FiloTopUC.xaml.vb
@@ -7,6 +7,8 @@ Public Class FiloTopUC
' Riferimento alla pagina che ha aperto SideAngleUC
Private m_CallingPage As MainWindow.Pages
+ Private m_SelList As New List(Of Integer)
+
' Offset della sfilettatura
Private m_dFiloTopOffset As Double = 0
Friend ReadOnly Property FiloTopOffset As Double
@@ -23,6 +25,13 @@ Public Class FiloTopUC
End Get
End Property
+ ' esegue l'arrotindamento sugli angoli del percorso utensile
+ Private m_bCornerradius As Boolean = False
+ Friend ReadOnly Property bCornerRadius As Boolean
+ Get
+ Return m_bCornerradius
+ End Get
+ End Property
Private Sub FiloTopUC_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Imposto riferimenti ad altre pagine
@@ -43,14 +52,18 @@ Public Class FiloTopUC
End If
' Gestisco visualizzazione dei parametri
- Parameter2TxBl.Visibility = Windows.Visibility.Visible
+ ParameterTxBl.Visibility = Windows.Visibility.Visible
Parameter2TxBx.Visibility = Windows.Visibility.Visible
+ Parameter3TxBl.Visibility = Windows.Visibility.Visible
' Aggiorno valori
m_dFiloTopOffset = GetPrivateProfileDouble( S_SIDES, K_FILOTOPOFFSET, 5, m_MainWindow.GetIniFile())
ParameterTxBx.Text = LenToString( m_dFiloTopOffset, 3)
m_dFiloTopDepth = GetPrivateProfileDouble( S_SIDES, K_FILOTOPDEPTH, 5, m_MainWindow.GetIniFile())
- Parameter2TxBx.Text = LenToString( m_dFiloTopDepth, 3)
+ Parameter2TxBx.Text = LenToString(m_dFiloTopDepth, 3)
+ m_bCornerradius = GetPrivateProfileInt(S_SIDES, K_ROUNDOFF, 0, m_MainWindow.GetIniFile()) <> 0
+ Parameter3ChBx.IsChecked = m_bCornerradius
+ m_SelList.Clear()
End Sub
Private Sub FiloTopUC_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
@@ -74,6 +87,8 @@ Public Class FiloTopUC
End While
nPartId = EgtGetNextPart(nPartId)
End While
+ ' aggiorno la preview
+ CreateFiloTopPreView(m_SelList, False)
End Sub
Private Sub Parameter2TxBx_EgtClosed(sender As Object, e As EventArgs) Handles Parameter2TxBx.EgtClosed
@@ -95,4 +110,161 @@ Public Class FiloTopUC
End While
End Sub
+ Private Sub Parameter3ChBx_Checked() Handles Parameter3ChBx.Click
+ ' Assegno il valore
+ m_bCornerradius = Parameter3ChBx.IsChecked
+ WritePrivateProfileString(S_SIDES, K_ROUNDOFF, If(m_bCornerradius, "1", "0"), m_MainWindow.GetIniFile())
+ ' Aggiorno le info del profilo
+ Dim nPartId As Integer = EgtGetFirstPart()
+ While nPartId <> GDB_ID.NULL
+ Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
+ While nLayId <> GDB_ID.NULL
+ Dim sLayName As String = ""
+ If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
+ EgtSetInfo(nLayId, INFO_ROUNDOFF, If(m_bCornerradius, 1, 0))
+ End If
+ nLayId = EgtGetNextLayer(nLayId)
+ End While
+ nPartId = EgtGetNextPart(nPartId)
+ End While
+ ' aggiorno la preview (False = blocco la lettura dei dati della componente)
+ CreateFiloTopPreView(m_SelList, False)
+ End Sub
+
+ Public Sub CreateFiloTopPreView(SelList As List(Of Integer), Optional bReadInfo As Boolean = True)
+ m_SelList = SelList
+ If m_SelList.Count < 1 Then Return
+ Dim nPartId As Integer = EgtGetFirstPart()
+ While nPartId <> GDB_ID.NULL
+ Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
+ While nLayId <> GDB_ID.NULL
+ Dim sLayName As String = ""
+ ' verifico che lemento corrente appartenga all'elenco degli elementi selezionati
+ Dim bIsSelected As Boolean = m_SelList.Find(Function(value As Integer)
+ Return value = nLayId
+ End Function) <> 0
+ If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) AndAlso bIsSelected Then
+ ' ---------------------- Inizio GESTIONE PREVIEW percorso -------------------------------
+ Dim nLayFiloTop As Integer = GDB_ID.NULL
+ Dim nInLoopRef As Integer = GDB_ID.NULL
+ nLayFiloTop = EgtGetFirstNameInGroup(nPartId, "FiloTop")
+ EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
+ ' verifico il Layer "FiloTop" sia associato all'InLoop corrente
+ While (nLayFiloTop <> GDB_ID.NULL AndAlso nInLoopRef <> nLayId)
+ nLayFiloTop = EgtGetNextName(nLayFiloTop, "FiloTop")
+ EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
+ End While
+
+ ' se non esiste il Layer "FiloTop"
+ If nLayFiloTop = GDB_ID.NULL Then
+ ' lo creo
+ nLayFiloTop = EgtCreateGroup(nPartId)
+ EgtSetName(nLayFiloTop, "FiloTop")
+ EgtSetInfo(nLayFiloTop, "InLoopRef", nLayId)
+ EgtSetInfo(nLayId, "FiloTopRef", nLayFiloTop)
+ End If
+
+ ' carico i dati del filo top selezionato
+ If bReadInfo Then
+ EgtGetInfo(nLayFiloTop, INFO_OFFSET, m_dFiloTopOffset)
+ ParameterTxBx.Text = LenToString(m_dFiloTopOffset, 3)
+ EgtGetInfo(nLayFiloTop, INFO_DEPTH, m_dFiloTopDepth)
+ Parameter2TxBx.Text = LenToString(m_dFiloTopDepth, 3)
+ Dim nVal As Integer = If(m_bCornerradius, 1, 0)
+ EgtGetInfo(nLayFiloTop, INFO_ROUNDOFF, nVal)
+ Parameter3ChBx.IsChecked = If(nVal = 1, True, False)
+ m_bCornerradius = Parameter3ChBx.IsChecked
+ End If
+
+ ' procedo alla creazione della curva
+ Dim nIdCompoCurve As Integer = GDB_ID.NULL
+ ' cancello un eventuale curva composita creata in precedenza
+ nIdCompoCurve = EgtGetFirstNameInGroup(nLayFiloTop, "OffsetPreView")
+ If nIdCompoCurve <> GDB_ID.NULL Then
+ EgtErase(nIdCompoCurve)
+ End If
+ Dim nCompoCurve As New List(Of Integer)
+ ' costruisco il percorso chiuso dati i lati di contorno
+ Dim nLine As Integer = EgtGetFirstInGroup(nLayId)
+ While nLine <> GDB_ID.NULL
+ nCompoCurve.Add(nLine)
+ nLine = EgtGetNext(nLine)
+ End While
+ Dim PtNearStart As Point3d
+ Dim nInfoRoundOff As Integer = If(m_bCornerradius, 1, 0)
+
+ nIdCompoCurve = EgtCreateCurveCompoByChain(nLayFiloTop, nCompoCurve.ToArray, PtNearStart, False)
+ EgtSetName(nIdCompoCurve, "OffsetPreView")
+
+ ' salvo i dati nel layer FiloTop
+ EgtSetInfo(nLayFiloTop, INFO_OFFSET, m_dFiloTopOffset)
+ EgtSetInfo(nLayFiloTop, INFO_DEPTH, m_dFiloTopDepth)
+ EgtSetInfo(nLayFiloTop, INFO_ROUNDOFF, nInfoRoundOff)
+
+ Dim bOk As Boolean = False
+ ' leggo che tipo di offset applicare (Round, Extend)
+ If nInfoRoundOff <> 1 Then
+ bOk = EgtOffsetCurve(nIdCompoCurve, -m_dFiloTopOffset, OFF_TYPE.EXTEND)
+ Else
+ bOk = EgtOffsetCurve(nIdCompoCurve, -m_dFiloTopOffset, OFF_TYPE.FILLET)
+ End If
+
+ ' se la generazione della curva non va a buon fine
+ If Not bOk Then
+ EgtErase(nLayFiloTop)
+ EgtRemoveInfo(nLayId, "FiloTopRef")
+ EgtOutLog("Error in generation OffsetPreView in TopEgde ")
+ End If
+ ' ---------------------- Fine GESTIONE PREVIEW percorso -------------------------------
+ End If
+ nLayId = EgtGetNextLayer(nLayId)
+ End While
+ nPartId = EgtGetNextPart(nPartId)
+ End While
+ EgtDraw()
+ End Sub
+
+ ' riceve la lista dei LayerFiloTop che devono essere eliminati
+ Public Sub EraseFiloTopPreview(EraseList As List(Of Integer))
+ Dim m_EraseList As List(Of Integer) = EraseList
+ If m_EraseList.Count < 1 Then Return
+ Dim nPartId As Integer = EgtGetFirstPart()
+ While nPartId <> GDB_ID.NULL
+ Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
+ While nLayId <> GDB_ID.NULL
+ Dim sLayName As String = ""
+ Dim bIsSelected As Boolean = m_EraseList.Find(Function(value As Integer)
+ Return value = nLayId
+ End Function) <> 0
+ If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso bIsSelected Then
+ ' ---------------------- Inizio GESTIONE PREVIEW percorso -------------------------------
+ Dim nLayFiloTop As Integer = GDB_ID.NULL
+ Dim nInLoopRef As Integer = GDB_ID.NULL
+ nLayFiloTop = EgtGetFirstNameInGroup(nPartId, "FiloTop")
+ EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
+ ' cerco il Layer associato all'InLoop corrente
+ While (nLayFiloTop <> GDB_ID.NULL AndAlso nInLoopRef <> nLayId)
+ nLayFiloTop = EgtGetNextName(nLayFiloTop, "FiloTop")
+ EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
+ End While
+
+ ' se non esiste il Layer
+ If nLayFiloTop = GDB_ID.NULL Then
+ ' esco
+ Return
+ Else
+ ' lo elimino
+ EgtErase(nLayFiloTop)
+ EraseList.Remove(nLayId)
+ End If
+ ' ---------------------- Fine GESTIONE PREVIEW percorso -------------------------------
+ End If
+ nLayId = EgtGetNextLayer(nLayId)
+ End While
+ nPartId = EgtGetNextPart(nPartId)
+ End While
+ EgtDraw()
+ End Sub
+
+
End Class
diff --git a/Machine/CurrentMachine.vb b/Machine/CurrentMachine.vb
index f61cfd3..cfad857 100644
--- a/Machine/CurrentMachine.vb
+++ b/Machine/CurrentMachine.vb
@@ -1327,7 +1327,7 @@ Public Class CurrentMachine
' Leggo valori da file Data e li carico nelle proprietà
Dim sFilePath As String = sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
- Local_MaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
+ Local_MaterialList = WaterjetDbWindowVM_OmagCUT.LoadWjMaterials(sFilePath)
' definisco la lista delle qualità (solo se è vuota)
If m_Qualities.Count < 1 Then
m_Qualities.Add("Q1")
@@ -1358,7 +1358,7 @@ Public Class CurrentMachine
' Leggo valori da file Data e li carico nelle proprietà
Dim sFilePath As String = sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
- Local_MaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
+ Local_MaterialList = WaterjetDbWindowVM_OmagCUT.LoadWjMaterials(sFilePath)
Dim sItems() As String = sCurMat.Split("."c)
If sItems.Count > 1 Then
Dim sMat As String = sItems(0)
diff --git a/Machine/MachinePageUC.xaml.vb b/Machine/MachinePageUC.xaml.vb
index 3fb1078..d725942 100644
--- a/Machine/MachinePageUC.xaml.vb
+++ b/Machine/MachinePageUC.xaml.vb
@@ -145,12 +145,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.Alarms
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
- Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
AlarmsBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -215,12 +215,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.ToolsDb
Case MachinePages.WaterJet
'Verifica ed eventuale salvataggio Db Waterjet
- Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
ToolsDBBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -285,12 +285,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.MachiningDb
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
- Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
MachiningDBBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -358,12 +358,12 @@ Public Class MachinePageUC
PolishingsBtn.IsChecked = True
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
- Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
PolishingsBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -513,12 +513,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.MachineCN
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
- Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
TestingPageBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -593,12 +593,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.Statistics
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
- Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
StatisticsBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
diff --git a/Machine/WaterJetPageUC.xaml.vb b/Machine/WaterJetPageUC.xaml.vb
index be33a3d..ea728f2 100644
--- a/Machine/WaterJetPageUC.xaml.vb
+++ b/Machine/WaterJetPageUC.xaml.vb
@@ -8,18 +8,18 @@ Public Class WaterJetPageUC
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
- Private m_refWaterjetDbWindowVM As EgtWPFLib5.WaterjetDbWindowVM
+ Private m_refWaterjetDbWindowVM As WaterjetDbWindowVM_OmagCUT
Private m_sOrigNewMaterial As String = String.Empty
Private m_sOrigNewSubMaterial As String = String.Empty
Private Sub WaterJetPage_Initialized(sender As Object, e As EventArgs)
- m_refWaterjetDbWindowVM = New EgtWPFLib5.WaterjetDbWindowVM(m_MainWindow.m_CurrentMachine.sMachDir)
+ m_refWaterjetDbWindowVM = New WaterjetDbWindowVM_OmagCUT(m_MainWindow.m_CurrentMachine.sMachDir)
Me.DataContext = m_refWaterjetDbWindowVM
EgtWPFLib.Utility.MainWindow = m_MainWindow
End Sub
Public Sub WaterJetPage_Reinitialize()
- m_refWaterjetDbWindowVM = New EgtWPFLib5.WaterjetDbWindowVM(m_MainWindow.m_CurrentMachine.sMachDir)
+ m_refWaterjetDbWindowVM = New WaterjetDbWindowVM_OmagCUT(m_MainWindow.m_CurrentMachine.sMachDir)
Me.DataContext = m_refWaterjetDbWindowVM
End Sub
diff --git a/Machine/WaterjetDbWindowVM.vb b/Machine/WaterjetDbWindowVM.vb
new file mode 100644
index 0000000..90ba80d
--- /dev/null
+++ b/Machine/WaterjetDbWindowVM.vb
@@ -0,0 +1,61 @@
+Imports System.Collections.ObjectModel
+Imports System.IO
+Imports EgtUILib
+Imports EgtWPFLib5
+Imports EgtWPFLib
+
+' nuova libreria EgtWPFLib5 ver 2.4g1
+Public Class WaterjetDbWindowVM_OmagCUT
+ Inherits EgtWPFLib5.WaterjetDbWindowVM
+
+ Public Function CloseWaterjetDb_OmagCut(MainWindow As Window) As SaveWndBtnEnum
+ If bIsModified Then
+ Dim SaveWjDbWnd As New EgtMsgBox(MainWindow, "", EgtMsg(31759), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
+ Select Case SaveWjDbWnd.m_nPressedBtn
+ Case 1 ' Yes
+ WriteWaterjetDb()
+ bIsModified = False
+ Return SaveWndBtnEnum.YES
+ Case 2 ' No
+ Return SaveWndBtnEnum.NO
+ Case Else ' Cancel
+ Return SaveWndBtnEnum.CANCEL
+ End Select
+ Else
+ Dim bExitFor As Boolean = False
+ For Each Material As EgtWPFLib5.WjMaterial In MaterialList
+ If Not IsNothing(Material.SubMaterialList) Then
+ For Each SubMaterial As EgtWPFLib5.WjSubMaterial In Material.SubMaterialList
+ If Not IsNothing(SubMaterial.ParamList) Then
+ For Each QParam As EgtWPFLib5.WjParam In SubMaterial.ParamList
+ bExitFor = QParam.IsModified()
+ If bExitFor Then Exit For
+ Next
+ End If
+ If bExitFor Then Exit For
+ Next
+ End If
+ If bExitFor Then Exit For
+ Next
+ If bExitFor Then
+ Dim SaveWjDbWnd As New EgtMsgBox(MainWindow, "", EgtMsg(31759), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
+ Select Case SaveWjDbWnd.m_nPressedBtn
+ Case 1 ' Yes
+ WriteWaterjetDb()
+ bIsModified = False
+ Return SaveWndBtnEnum.YES
+ Case 2 ' No
+ Return SaveWndBtnEnum.NO
+ Case Else ' Cancel
+ Return SaveWndBtnEnum.CANCEL
+ End Select
+ End If
+ End If
+ Return SaveWndBtnEnum.YES
+ End Function
+
+ Sub New(sMachDir As String)
+ MyBase.New(sMachDir)
+ End Sub
+
+End Class
diff --git a/MainWindow.xaml.vb b/MainWindow.xaml.vb
index d5b960c..9e76cd7 100644
--- a/MainWindow.xaml.vb
+++ b/MainWindow.xaml.vb
@@ -1092,10 +1092,10 @@ Class MainWindow
Case MachinePageUC.MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
- Dim nPressedBtn As Integer = DirectCast(m_MachinePageUC.m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
- If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
+ Dim nPressedBtn As Integer = DirectCast(m_MachinePageUC.m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
+ If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
Return False
- ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
+ ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_MachinePageUC.m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
End Select
diff --git a/OmagCUT.vbproj b/OmagCUT.vbproj
index 5589832..aa1d3ec 100644
--- a/OmagCUT.vbproj
+++ b/OmagCUT.vbproj
@@ -205,6 +205,7 @@
ImportExportToolWD.xaml
+
WaterJetPageUC.xaml
diff --git a/RawPhoto/RawPartPageUC.xaml.vb b/RawPhoto/RawPartPageUC.xaml.vb
index 37e88f4..6931b2d 100644
--- a/RawPhoto/RawPartPageUC.xaml.vb
+++ b/RawPhoto/RawPartPageUC.xaml.vb
@@ -45,9 +45,9 @@ Public Class RawPartPageUC
' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL
' Definizione lista modalità di definizione grezzo per ComboBox
- Private m_RawModeList(2) As String
- Private m_RawModeDamagedList(1) As String
- Private m_RawModeListEx(3) As String
+ Private m_RawModeList(3) As String
+ Private m_RawModeDamagedList(2) As String
+ Private m_RawModeListEx(4) As String
' Variabile che indica la zona danneggiata selezionata
Private m_nSelDmg As Integer
' Array per modalità per punti
@@ -63,6 +63,8 @@ Public Class RawPartPageUC
Private m_CurveXDamagedAreaList As New List(Of Integer)
' Flag che indica se è in corso la definizione tramite laser o se il grezzo è già chiuso
Private m_bIsRawDefiningByLaser As Boolean = False
+ ' Flag che indica se è in corso la definizione tramite lama o se il grezzo è già chiuso
+ Private m_bIsRawDefiningBySaw As Boolean = False
' Flag di tastatura in corso
Private m_bProbingOn As Boolean = False
' Flag inserimento punti laser da disegno
@@ -99,6 +101,8 @@ Public Class RawPartPageUC
FROM_PHOTO = 3
DAMAGED = 4
DAMAGED_BY_LASER = 5
+ DAMAGED_BY_SAW = 6
+ FROM_SAW = 7
End Enum
Private Sub RawPartPage_Initialized(sender As Object, e As EventArgs)
@@ -123,14 +127,32 @@ Public Class RawPartPageUC
m_RawModeList(0) = EgtMsg(MSG_RAWPARTPAGEUC + 1) 'Rettangolo
m_RawModeList(1) = EgtMsg(MSG_RAWPARTPAGEUC + 2) 'Per Punti
m_RawModeList(2) = EgtMsg(MSG_RAWPARTPAGEUC + 30) 'Da Laser
+ If m_MainWindow.m_CurrentMachine.bSaw Then
+ m_RawModeList(3) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24) 'Da Lama
+ Else
+ ' se non insrisco "Lama" allora ridimensiono il vettore
+ ReDim Preserve m_RawModeList(2)
+ End If
m_RawModeListEx(0) = EgtMsg(MSG_RAWPARTPAGEUC + 1) 'Rettangolo
m_RawModeListEx(1) = EgtMsg(MSG_RAWPARTPAGEUC + 2) 'Per Punti
m_RawModeListEx(2) = EgtMsg(MSG_RAWPARTPAGEUC + 30) 'Da Laser
- m_RawModeListEx(3) = EgtMsg(MSG_RAWPARTPAGEUC + 35) 'Da Fotografia
+ If m_MainWindow.m_CurrentMachine.bSaw Then
+ m_RawModeListEx(3) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24) 'Da Lama
+ m_RawModeListEx(4) = EgtMsg(MSG_RAWPARTPAGEUC + 35) 'Da Fotografia
+ Else
+ ' se non insrisco "Lama" allora ridimensiono il vettore
+ m_RawModeListEx(3) = EgtMsg(MSG_RAWPARTPAGEUC + 35) 'Da Fotografia
+ ReDim Preserve m_RawModeListEx(3)
+ End If
RawModeCmBx.ItemsSource = m_RawModeList
' lista per selezione RawModeDamaged
m_RawModeDamagedList(0) = EgtMsg(MSG_RAWPARTPAGEUC + 2) 'Per Punti
m_RawModeDamagedList(1) = EgtMsg(MSG_RAWPARTPAGEUC + 30) 'Da Laser
+ If m_MainWindow.m_CurrentMachine.bSaw Then
+ m_RawModeDamagedList(2) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24) 'Da Lama
+ Else
+ ReDim Preserve m_RawModeDamagedList(1)
+ End If
RawModeDamagedCmBx.ItemsSource = m_RawModeDamagedList
' Nascondo bottone tastatura lastra se disattivato da file .ini
@@ -309,9 +331,10 @@ Public Class RawPartPageUC
' Verifico cosa selezionato
Dim nSolidId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID)
Dim nKerfId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_KERF)
+
'----------------------------------------- INIZIO ------------------ se decido di inserire i punti laser manualmente --------------------------------------------------
- ' se decido di inserire i punti laser manualmente
- If m_bFromDraw And m_ActiveRawMode = RAWMODE.FROM_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Then
+ ' se decido di inserire i punti laser manualmente (in assenza di collegamento con CN)
+ If m_bFromDraw AndAlso (m_ActiveRawMode = RAWMODE.FROM_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Or m_ActiveRawMode = RAWMODE.FROM_SAW Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW) Then
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Acquisisco punto da disegno
@@ -336,6 +359,7 @@ Public Class RawPartPageUC
Return
End If
'----------------------------------------- FINE ------------------ se decido di inserire i punti laser manualmente --------------------------------------------------
+ ' recupero elemento selezionato nella scena
EgtSetObjFilterForSelWin(True, True, True, True, True)
Dim nSel As Integer
EgtSelect(e.Location, 2 * Scene.DIM_SEL, 2 * Scene.DIM_SEL, nSel)
@@ -349,8 +373,7 @@ Public Class RawPartPageUC
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
m_nDragEnt = -1
m_dDragPar = -1
- ElseIf sName = NAME_KERF And
- (m_ActiveRawMode = RAWMODE.RECTANGLE Or m_ActiveRawMode = RAWMODE.BY_POINTS) Then
+ ElseIf sName = NAME_KERF And (m_ActiveRawMode = RAWMODE.RECTANGLE Or m_ActiveRawMode = RAWMODE.BY_POINTS) Then
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
Dim dDist, dU As Double
If Not EgtPointCurveDist(m_ptPrev.Loc(nKerfId), nKerfId, nKerfId, dDist, dU) Then
@@ -360,7 +383,7 @@ Public Class RawPartPageUC
m_dDragPar = dU
' Privilegio il kerf, pertanto esco
Exit While
- ElseIf sName = NAME_DAMAGED And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER) Then
+ ElseIf sName = NAME_DAMAGED And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.BY_POINTS) Then
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
Dim dDist, dU As Double
If Not EgtPointCurveDist(m_ptPrev.Loc(nSelId), nSelId, nSelId, dDist, dU) Then
@@ -377,6 +400,7 @@ Public Class RawPartPageUC
End If
nSelId = EgtGetNextObjInSelWin()
End While
+
' se drag e modalità punti
If m_bDrag And m_ActiveRawMode = RAWMODE.BY_POINTS Then
' se aggiungi punto
@@ -413,7 +437,7 @@ Public Class RawPartPageUC
End If
End If
' se drag e modalità zona danneggiata
- ElseIf m_bDrag And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER) Then
+ ElseIf m_bDrag And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW) Then
' se aggiungi zona rovinata
If m_nPtDmgMode = DMGMODE.ADD Then
AddNewDamagedArea()
@@ -665,6 +689,8 @@ Public Class RawPartPageUC
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
' Non è possibile uscire con tastatura in corso
If m_bProbingOn Then Return
+ ' reimposto il comando OutLine
+ OutlineBtn_Click(Nothing, Nothing)
' Se confermata uscita
If ExitRawPart(True) Then
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(Me)
@@ -696,6 +722,16 @@ Public Class RawPartPageUC
CloseDamagedAreaByLaser()
End If
End If
+ If m_ActiveRawMode = RAWMODE.FROM_SAW Then
+ If m_bIsRawDefiningBySaw Then
+ CloseRawBySaw()
+ End If
+ End If
+ If m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW Then
+ If m_bIsRawDefiningBySaw Then
+ CloseDamagedAreaBySaw()
+ End If
+ End If
' Apro pagina di selezione della lavorazione prima di chiudere il grezzo
m_ChooseMachiningPage = New ChooseMachining(m_MainWindow)
'--------------------------- SELEZIONE LAVORAZIONI ---------------------------------
@@ -779,6 +815,8 @@ Public Class RawPartPageUC
Case 0 ' Rettangolo
' Se ero in modalità da laser
VerifyLaserDefining()
+ ' Se ero in modalità da Lama
+ VerifySawDefinig()
' Verificos e sto realmente cambiando modalità
Dim bChanging As Boolean = (m_ActiveRawMode <> RAWMODE.RECTANGLE)
' Imposto nuova modalità
@@ -790,6 +828,8 @@ Public Class RawPartPageUC
Case 1 ' Punti
' Se ero in modalità da laser
VerifyLaserDefining()
+ ' Se ero in modalità da Lama
+ VerifySawDefinig()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.BY_POINTS
' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
@@ -797,6 +837,8 @@ Public Class RawPartPageUC
UpdateCircles()
EgtDraw()
Case 2 ' Da laser
+ ' Se ero in modalità da Lama
+ VerifySawDefinig()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.FROM_LASER
RemoveCircles()
@@ -811,10 +853,44 @@ Public Class RawPartPageUC
' Disattivo il bottone
CloseBtn.IsEnabled = False
OkBtn.IsEnabled = False
- Case 3 ' Da fotografia
+ Case 3 ' Da Lama
+ If Not m_MainWindow.m_CurrentMachine.bSaw Then ' Da fotografia
+ ' Se ero in modalità da laser
+ VerifyLaserDefining()
+ ' Se ero in modalità da Lama
+ VerifySawDefinig()
+ ' Imposto nuova modalità
+ m_ActiveRawMode = RAWMODE.FROM_PHOTO
+ ' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
+ RawModeView()
+ RemoveCircles()
+ ' Creo il grezzo dal contorno riconosciuto nella fotografia
+ CreateRawFromPhotoContour()
+ EgtDraw()
+ Exit Select
+ End If
' Se ero in modalità da laser
VerifyLaserDefining()
' Imposto nuova modalità
+ m_ActiveRawMode = RAWMODE.FROM_SAW
+ RemoveCircles()
+ LoadFromMachine()
+ ' Azzero lista e punto di partenza
+ m_CurveXKerfList.Clear()
+ m_bptLast = False
+ ' Segno flag che indica definizione grezzo con laser in corso
+ m_bIsRawDefiningBySaw = True
+ ' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
+ RawModeView()
+ ' Disattivo il bottone
+ CloseBtn.IsEnabled = False
+ OkBtn.IsEnabled = False
+ Case 4 ' Da fotografia
+ ' Se ero in modalità da laser
+ VerifyLaserDefining()
+ ' Se ero in modalità da Lama
+ VerifySawDefinig()
+ ' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.FROM_PHOTO
' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
RawModeView()
@@ -822,6 +898,7 @@ Public Class RawPartPageUC
' Creo il grezzo dal contorno riconosciuto nella fotografia
CreateRawFromPhotoContour()
EgtDraw()
+
End Select
End Sub
@@ -831,6 +908,8 @@ Public Class RawPartPageUC
m_ActiveRawMode = RAWMODE.DAMAGED
Case 1 ' Da laser
m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER
+ Case 2 ' Da Lama
+ m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW
End Select
RawModeView()
EgtDraw()
@@ -927,11 +1006,43 @@ Public Class RawPartPageUC
' Disattivo bottoni zone rovinate e foto
DamagedAreaGpBx.Visibility = Windows.Visibility.Hidden
ConfirmPhotoBtn.Visibility = Windows.Visibility.Hidden
+ Case RAWMODE.DAMAGED_BY_SAW
+ RawModeCmBx.IsEnabled = True
+ RawModeDamagedCmBx.Visibility = Visibility.Visible
+ LengthTxBx.IsEnabled = False
+ WidthTxBx.IsEnabled = False
+ OffsetXTxBx.IsEnabled = False
+ OffsetYTxBx.IsEnabled = False
+ ' Visualizzo bottoni per laser
+ PointsGpBx.Visibility = Windows.Visibility.Visible
+ PointsGpBx.SetValue(Grid.RowSpanProperty, 2)
+ AddBtn.SetValue(Grid.RowSpanProperty, 1)
+ RemoveBtn.SetValue(Grid.RowSpanProperty, 1)
+ CloseBtn.Visibility = Windows.Visibility.Visible
+ ' Disattivo bottoni zone rovinate e foto
+ DamagedAreaGpBx.Visibility = Windows.Visibility.Hidden
+ ConfirmPhotoBtn.Visibility = Windows.Visibility.Hidden
+ Case RAWMODE.FROM_SAW
+ RawModeCmBx.IsEnabled = True
+ RawModeDamagedCmBx.Visibility = Visibility.Collapsed
+ LengthTxBx.IsEnabled = False
+ WidthTxBx.IsEnabled = False
+ OffsetXTxBx.IsEnabled = False
+ OffsetYTxBx.IsEnabled = False
+ ' Visualizzo bottoni per lama
+ PointsGpBx.Visibility = Windows.Visibility.Visible
+ PointsGpBx.SetValue(Grid.RowSpanProperty, 2)
+ AddBtn.SetValue(Grid.RowSpanProperty, 1)
+ RemoveBtn.SetValue(Grid.RowSpanProperty, 1)
+ CloseBtn.Visibility = Windows.Visibility.Visible
+ ' Disattivo bottoni zone rovinate e foto
+ DamagedAreaGpBx.Visibility = Windows.Visibility.Hidden
+ ConfirmPhotoBtn.Visibility = Windows.Visibility.Hidden
End Select
End Sub
Private Sub OutlineBtn_Click(sender As Object, e As RoutedEventArgs) Handles OutlineBtn.Click
- If m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Then
+ If m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW Then
' m_ActiveRawMode = RAWMODE.BY_POINTS
m_ActiveRawMode = m_PrecActiveRawMode
RawModeCmBx.SelectedIndex = m_ActiveRawMode
@@ -946,6 +1057,9 @@ Public Class RawPartPageUC
If m_PrecActiveRawMode = RAWMODE.FROM_LASER Then
m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER
RawModeDamagedCmBx.SelectedIndex = 1
+ ElseIf m_PrecActiveRawMode = RAWMODE.FROM_SAW Then
+ m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW
+ RawModeDamagedCmBx.SelectedIndex = 2
Else
m_ActiveRawMode = RAWMODE.DAMAGED
RawModeDamagedCmBx.SelectedIndex = 0
@@ -1010,6 +1124,54 @@ Public Class RawPartPageUC
End If
AddBtn.IsChecked = False
EgtDraw()
+ Case RAWMODE.FROM_SAW
+ Dim ptAcquired As Point3d
+ ' Se inserimento manuale dei punti laser
+ If m_bFromDraw Then
+ If Not IsNothing(m_ptPrev) Then
+ ptAcquired = m_ptPrev
+ ptAcquired.ToLoc(New Frame3d(m_ptTableMin))
+ Else
+ m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
+ Return
+ End If
+ ' altrimenti da macchina
+ Else
+ If Not AcquireSawPoint(ptAcquired) Then
+ m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
+ Return
+ End If
+ End If
+ ' Limito il punto a stare nella tavola con franco pari al kerf
+ If ptAcquired.x < m_RawKerf Then ptAcquired.x = m_RawKerf + SAFE_RAW_DIST
+ If ptAcquired.y < m_RawKerf Then ptAcquired.y = m_RawKerf + SAFE_RAW_DIST
+ If ptAcquired.x > m_dTableLength - m_RawKerf Then ptAcquired.x = m_dTableLength - m_RawKerf - SAFE_RAW_DIST
+ If ptAcquired.y > m_dTableWidth - m_RawKerf Then ptAcquired.y = m_dTableWidth - m_RawKerf - SAFE_RAW_DIST
+ ' Aggiusto Z punto movimentato (è in locale al tavolo)
+ ptAcquired.z = m_CurrentMachine.dAdditionalTable + m_RawHeight
+ 'Porto il punto nel riferimento del grezzo
+ Dim frRaw As New Frame3d
+ EgtGetGroupGlobFrame(m_CurrProjPage.m_nRawId, frRaw)
+ ptAcquired.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
+ m_ptPrev.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
+ If m_bptLast Then
+ If Point3d.SameApprox(ptAcquired, m_ptLast) Then
+ AddBtn.IsChecked = False
+ Exit Sub
+ End If
+ Dim NewLine As Integer = EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptAcquired)
+ EgtSetColor(NewLine, m_KerfCol)
+ m_CurveXKerfList.Add(NewLine)
+ Else
+ m_bptLast = True
+ End If
+ m_ptLast = ptAcquired
+ If m_CurveXKerfList.Count > 1 Then
+ OkBtn.IsEnabled = True
+ CloseBtn.IsEnabled = True
+ End If
+ AddBtn.IsChecked = False
+ EgtDraw()
Case RAWMODE.DAMAGED
' Verifico ci sia almeno una zona rovinata
If EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_DAMAGED) = GDB_ID.NULL Then
@@ -1068,6 +1230,54 @@ Public Class RawPartPageUC
End If
AddBtn.IsChecked = False
EgtDraw()
+ Case RAWMODE.DAMAGED_BY_SAW
+ Dim ptAcquired As Point3d
+ ' Se inserimento manuale dei punti laser
+ If m_bFromDraw Then
+ If Not IsNothing(m_ptPrev) Then
+ ptAcquired = m_ptPrev
+ ptAcquired.ToLoc(New Frame3d(m_ptTableMin))
+ Else
+ m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
+ Return
+ End If
+ ' altrimenti da macchina
+ Else
+ If Not AcquireSawPoint(ptAcquired) Then
+ m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
+ Return
+ End If
+ End If
+ ' Limito il punto a stare nella tavola con franco pari al kerf
+ If ptAcquired.x < m_RawKerf Then ptAcquired.x = m_RawKerf + SAFE_RAW_DIST
+ If ptAcquired.y < m_RawKerf Then ptAcquired.y = m_RawKerf + SAFE_RAW_DIST
+ If ptAcquired.x > m_dTableLength - m_RawKerf Then ptAcquired.x = m_dTableLength - m_RawKerf - SAFE_RAW_DIST
+ If ptAcquired.y > m_dTableWidth - m_RawKerf Then ptAcquired.y = m_dTableWidth - m_RawKerf - SAFE_RAW_DIST
+ ' Aggiusto Z punto movimentato (è in locale al tavolo)
+ ptAcquired.z = m_CurrentMachine.dAdditionalTable + m_RawHeight
+ 'Porto il punto nel riferimento del grezzo
+ Dim frRaw As New Frame3d
+ EgtGetGroupGlobFrame(m_CurrProjPage.m_nRawId, frRaw)
+ ptAcquired.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
+ m_ptPrev.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
+ If m_bptLast Then
+ If Point3d.SameApprox(ptAcquired, m_ptLast) Then
+ AddBtn.IsChecked = False
+ Exit Sub
+ End If
+ Dim NewLine As Integer = EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptAcquired)
+ EgtSetColor(NewLine, m_KerfCol)
+ m_CurveXDamagedAreaList.Add(NewLine)
+ Else
+ m_bptLast = True
+ End If
+ m_ptLast = ptAcquired
+ If m_CurveXDamagedAreaList.Count > 1 Then
+ OkBtn.IsEnabled = True
+ CloseBtn.IsEnabled = True
+ End If
+ AddBtn.IsChecked = False
+ EgtDraw()
End Select
End Sub
@@ -1099,6 +1309,28 @@ Public Class RawPartPageUC
Return True
End Function
+ Private Function AcquireSawPoint(ByRef ptAcquired As Point3d) As Boolean
+ Dim ptTipP1 As Point3d
+ ' Recupero la posizione macchina
+ Dim dL1, dL2, dL3, dR1, dR2 As Double
+ If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then
+ Return False
+ End If
+ ' Recupero dati utensile e testa corrente
+ Dim sTool As String = ""
+ Dim sHead As String = ""
+ Dim nExit As Integer = 0
+ EgtGetCalcTool(sTool, sHead, nExit)
+ ' Trasformo in posizione punta utensile in basso
+ If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, ptTipP1) Then
+ Return False
+ End If
+ ' Porto il tip nell'origine tavola
+ ptAcquired = ptTipP1
+ ptAcquired.ToLoc(New Frame3d(m_ptTableMin))
+ Return True
+ End Function
+
Private Sub RemoveBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveBtn.Click
Select Case m_ActiveRawMode
Case RAWMODE.RECTANGLE
@@ -1126,6 +1358,26 @@ Public Class RawPartPageUC
End If
RemoveBtn.IsChecked = False
EgtDraw()
+ Case RAWMODE.FROM_SAW
+ If m_CurveXKerfList.Count > 0 Then
+ If m_CurveXKerfList.Count = 1 Then
+ ' Aggiorno ptLast con primo punto
+ EgtStartPoint(m_CurveXKerfList(m_CurveXKerfList.Count - 1), m_ptLast)
+ ' Cancello ultima linea
+ EgtErase(m_CurveXKerfList(m_CurveXKerfList.Count - 1))
+ m_CurveXKerfList.RemoveAt(m_CurveXKerfList.Count - 1)
+ Else
+ ' Cancello ultima linea
+ EgtErase(m_CurveXKerfList(m_CurveXKerfList.Count - 1))
+ m_CurveXKerfList.RemoveAt(m_CurveXKerfList.Count - 1)
+ ' Aggiorno ptLast
+ EgtEndPoint(m_CurveXKerfList(m_CurveXKerfList.Count - 1), m_ptLast)
+ End If
+ Else
+ m_bptLast = False
+ End If
+ RemoveBtn.IsChecked = False
+ EgtDraw()
Case RAWMODE.DAMAGED
' Verifico ci sia almeno una zona rovinata
If EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_DAMAGED) = GDB_ID.NULL Then
@@ -1136,6 +1388,46 @@ Public Class RawPartPageUC
DeleteBtn.IsChecked = False
m_nPtMode = If(RemoveBtn.IsChecked(), PTMODE.REMOVE, PTMODE.MOVE)
m_nPtDmgMode = DMGMODE.NONE
+ Case RAWMODE.DAMAGED_BY_LASER
+ If m_CurveXDamagedAreaList.Count > 0 Then
+ If m_CurveXDamagedAreaList.Count = 1 Then
+ ' Aggiorno ptLast con primo punto
+ EgtStartPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
+ ' Cancello ultima linea
+ EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
+ m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
+ Else
+ ' Cancello ultima linea
+ EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
+ m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
+ ' Aggiorno ptLast
+ EgtEndPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
+ End If
+ Else
+ m_bptLast = False
+ End If
+ RemoveBtn.IsChecked = False
+ EgtDraw()
+ Case RAWMODE.DAMAGED_BY_SAW
+ If m_CurveXDamagedAreaList.Count > 0 Then
+ If m_CurveXDamagedAreaList.Count = 1 Then
+ ' Aggiorno ptLast con primo punto
+ EgtStartPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
+ ' Cancello ultima linea
+ EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
+ m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
+ Else
+ ' Cancello ultima linea
+ EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
+ m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
+ ' Aggiorno ptLast
+ EgtEndPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
+ End If
+ Else
+ m_bptLast = False
+ End If
+ RemoveBtn.IsChecked = False
+ EgtDraw()
End Select
End Sub
@@ -1976,6 +2268,26 @@ Public Class RawPartPageUC
End If
End Sub
+ Private Sub VerifySawDefinig()
+ If m_bIsRawDefiningBySaw Then
+ If m_CurveXKerfList.Count > 1 Then
+ CloseRawBySaw()
+ Else
+ ' Elimino tutti i segmenti disegnati
+ For Each nEntityId As Integer In m_CurveXKerfList
+ If EgtGetType(nEntityId) = GDB_TY.CRV_LINE Then
+ EgtErase(nEntityId)
+ End If
+ Next
+ ' Azzero lista e punto di partenza
+ m_CurveXKerfList.Clear()
+ ' Creo rettangolo
+ UpdateRawPart()
+ End If
+ m_bIsRawDefiningBySaw = False
+ End If
+ End Sub
+
Private Sub LoadFromMachine()
' Elimino grezzo già presente
EgtErase(EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID))
@@ -1993,6 +2305,10 @@ Public Class RawPartPageUC
Select Case m_ActiveRawMode
Case RAWMODE.DAMAGED_BY_LASER
CloseDamagedAreaByLaser()
+ Case RAWMODE.DAMAGED_BY_SAW
+ CloseDamagedAreaBySaw()
+ Case RAWMODE.FROM_SAW
+ CloseRawBySaw()
Case Else
CloseRawByLaser()
End Select
@@ -2036,6 +2352,42 @@ Public Class RawPartPageUC
CloseBtn.IsEnabled = False
End Sub
+ Private Sub CloseRawBySaw()
+ ' Verifico ci siano punti
+ If m_CurveXKerfList.Count() = 0 Then Return
+ ' Recupero punto iniziale prima linea del grezzo
+ Dim ptStart As Point3d
+ EgtStartPoint(m_CurveXKerfList(0), ptStart)
+ m_CurveXKerfList.Add(EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptStart))
+ ' Trasformo lista di curve in un array
+ Dim CurveXKerfArray As Integer() = m_CurveXKerfList.ToArray
+ ' Creo contorno kerf
+ Dim nKerfId As Integer = EgtCreateCurveCompoByChain(m_CurrProjPage.m_nRawId, m_CurveXKerfList.Count, CurveXKerfArray, ptStart, True)
+ EgtSetName(nKerfId, NAME_KERF)
+ EgtSetColor(nKerfId, m_KerfCol)
+ ' Pulisco lista entità del grezzo
+ m_CurveXKerfList.Clear()
+ ' Aggiorno il grezzo comprese dimensioni e posizione
+ UpdateRawPartKerf()
+ ' Salvo il valore del kerf (sempre in mm)
+ Dim dKerf As Double = 0
+ StringToLen(KerfTxBx.Text, dKerf)
+ If dKerf < 0 Then
+ EgtSetInfo(m_CurrProjPage.m_nRawId, KEY_INVERT_KERF, -1)
+ Else
+ EgtSetInfo(m_CurrProjPage.m_nRawId, KEY_INVERT_KERF, 1)
+ End If
+ EgtSetInfo(m_CurrProjPage.m_nRawId, KEY_KERF, m_RawKerf)
+ ' Segno flag che indica fine della definizione
+ m_bIsRawDefiningBySaw = False
+ ' Elimino primo punto per prossimo grezzo
+ m_bptLast = False
+ ' Aggiorno visualizzazione
+ EgtDraw()
+ ' Disattivo il bottone chiudi grezzo
+ CloseBtn.IsEnabled = False
+ End Sub
+
#Region "Damaged Area"
Private Sub AddNewDamagedArea()
@@ -2092,6 +2444,32 @@ Public Class RawPartPageUC
CloseBtn.IsEnabled = False
End Sub
+ Private Sub CloseDamagedAreaBySaw()
+ ' Verifico ci siano punti
+ If m_CurveXDamagedAreaList.Count() = 0 Then Return
+ ' Recupero punto iniziale prima linea del grezzo
+ Dim ptStart As Point3d
+ EgtStartPoint(m_CurveXDamagedAreaList(0), ptStart)
+ ' creao la linea che va dal primo punto all'ultimo
+ m_CurveXDamagedAreaList.Add(EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptStart))
+ ' Trasformo lista di curve in un array
+ Dim CurveXDamagedAreaArray As Integer() = m_CurveXDamagedAreaList.ToArray
+ ' Creo contorno kerf
+ Dim nDmgId As Integer = EgtCreateCurveCompoByChain(m_CurrProjPage.m_nRawId, m_CurveXDamagedAreaList.Count, CurveXDamagedAreaArray, ptStart, True)
+ EgtSetName(nDmgId, NAME_DAMAGED)
+ EgtSetColor(nDmgId, m_KerfCol)
+ ' Pulisco lista entità del grezzo
+ m_CurveXDamagedAreaList.Clear()
+ ' Segno flag che indica fine della definizione
+ m_bIsRawDefiningBySaw = False
+ ' Elimino primo punto per prossimo grezzo
+ m_bptLast = False
+ ' Aggiorno visualizzazione
+ EgtDraw()
+ ' Disattivo il bottone chiudi grezzo
+ CloseBtn.IsEnabled = False
+ End Sub
+
Private Sub RemoveDamagedArea()
' Elimino area rovinata selezionata
EgtErase(m_nSelDmg)