diff --git a/AlarmsPageUC.xaml b/AlarmsPageUC.xaml
index d17d44a..b8acc3c 100644
--- a/AlarmsPageUC.xaml
+++ b/AlarmsPageUC.xaml
@@ -26,7 +26,7 @@
-
+
@@ -112,21 +112,21 @@
Style="{StaticResource OmagCut_CalculatorTextBox}" />
-
-
+
+
+ Style="{StaticResource OmagCut_ToolsDBTextBlock}"/>
-
+
@@ -135,7 +135,7 @@
-
+
diff --git a/AlarmsPageUC.xaml.vb b/AlarmsPageUC.xaml.vb
index 62d1425..64c53c8 100644
--- a/AlarmsPageUC.xaml.vb
+++ b/AlarmsPageUC.xaml.vb
@@ -1,6 +1,7 @@
Imports System.Windows.Threading
Imports System.IO
Imports EgtUILib
+Imports EgtWPFLib
Public Class AlarmsPageUC
@@ -34,6 +35,7 @@ Public Class AlarmsPageUC
SafeZTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 5)
CutExtraLenTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 6)
AngleCutExtraLenTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 7)
+ CompleteCutsTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 8)
End Sub
@@ -213,8 +215,19 @@ Public Class AlarmsPageUC
End Sub
Private Sub CompleteCutsChBx_Click(sender As Object, e As RoutedEventArgs) Handles CompleteCutsChBx.Click
+ Dim NestPage As NestPageUC = m_MainWindow.m_CadCutPageUC.m_NestPage
If CompleteCutsChBx.IsChecked() Then
- WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "0", m_MainWindow.GetMachIniFile())
+ ' Se pezzi in interferenza
+ If Not NestPage.VerifyPartsNesting(False) Then
+ ' Ci sono interferenze, alcuni pezzi saranno parcheggiati. Vuoi continuare ?
+ Dim Dlg As New EgtMsgBox(m_MainWindow, "", EgtMsg(91105), EgtMsgBox.Buttons.OK_CANCEL, EgtMsgBox.Icons.ESCLAMATION, 1)
+ If Dlg.DialogResult = 1 Then ' Ok
+ NestPage.StoreCollisionParts(False)
+ WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "0", m_MainWindow.GetMachIniFile())
+ End If
+ Else
+ WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "0", m_MainWindow.GetMachIniFile())
+ End If
Else
WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "1", m_MainWindow.GetMachIniFile())
End If
diff --git a/ConstGen.vb b/ConstGen.vb
index 99a515d..763fa9a 100644
--- a/ConstGen.vb
+++ b/ConstGen.vb
@@ -64,6 +64,8 @@ Module ConstGen
' Contrassegno di progetto OmagCut
Public Const NAME_PROJMARK As String = "OmagCut"
+ ' Info per stato flag taglio ridotto
+ Public Const INFO_REDUCEDCUT = "ReducedCut"
' Info per lavorazioni già ordinate
Public Const INFO_MACHORDER As String = "MachOrder"
diff --git a/CurrentProjectPageUC.xaml.vb b/CurrentProjectPageUC.xaml.vb
index 0c6732d..e98b4b5 100644
--- a/CurrentProjectPageUC.xaml.vb
+++ b/CurrentProjectPageUC.xaml.vb
@@ -346,6 +346,8 @@ Public Class CurrentProjectPageUC
EgtSetName(nMarkId, NAME_PROJMARK)
EgtSetLevel(nMarkId, GDB_LV.SYSTEM)
End If
+ Dim nReducedCut As Integer = GetPrivateProfileInt(S_MACH_NEST, K_MACH_REDUCEDCUT, 1, m_MainWindow.GetMachIniFile())
+ EgtSetInfo(nMarkId, INFO_REDUCEDCUT, nReducedCut)
Return nMarkId
End Function
diff --git a/NestPageUC.xaml.vb b/NestPageUC.xaml.vb
index acd3a21..e2e09dc 100644
--- a/NestPageUC.xaml.vb
+++ b/NestPageUC.xaml.vb
@@ -162,28 +162,32 @@ Public Class NestPageUC
' annullo deselezione
m_nIdToDesel = GDB_ID.NULL
' muovo il pezzo
- EgtMoveSelectedPartCluster(m_bReducedCut, vtMove, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ EgtMovePart(GDB_ID.SEL, m_bReducedCut, vtMove,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
EgtSaveCollInfo()
' se movimento risultante nullo, provo con movimento tangente
Dim bTgMoved As Boolean = False
If vtMove.IsSmall() Then
' riprovo con movimento tangente
Dim vtTgMove As Vector3d = ptCurr - m_ptPrev
- EgtTgMoveSelectedPartClusterOnCollision(m_bReducedCut, vtTgMove, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ EgtTgMovePartOnCollision(GDB_ID.SEL, m_bReducedCut, vtTgMove,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
bTgMoved = (Not vtTgMove.IsSmall())
End If
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
- EgtAlignSelectedPartClusterOnCollision(m_bReducedCut, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
+ EgtAlignPartOnCollision(GDB_ID.SEL, m_bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
- EgtMoveToSnapPointSelectedOnCollision(m_bReducedCut, m_dSnapDist, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
+ EgtMovePartToSnapPointOnCollision(GDB_ID.SEL, m_bReducedCut, m_dSnapDist,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
End If
End If
EgtDraw()
@@ -221,19 +225,22 @@ Public Class NestPageUC
Private Sub UpBtn_Click(sender As Object, e As RoutedEventArgs) Handles UpBtn.Click
Dim dStep As Double = If(m_bMaximizeMove, m_dMaxStep, m_dStep)
- EgtMoveSelectedPartCluster(m_bReducedCut, New Vector3d(0, dStep, 0), m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ EgtMovePart(GDB_ID.SEL, m_bReducedCut, New Vector3d(0, dStep, 0),
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
EgtSaveCollInfo()
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
- EgtAlignSelectedPartClusterOnCollision(m_bReducedCut, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
+ EgtAlignPartOnCollision(GDB_ID.SEL, m_bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
- EgtMoveToSnapPointSelectedOnCollision(m_bReducedCut, m_dSnapDist, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
+ EgtMovePartToSnapPointOnCollision(GDB_ID.SEL, m_bReducedCut, m_dSnapDist,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
End If
End If
m_CurrProjPage.ResetOrderMachiningFlag()
@@ -242,19 +249,22 @@ Public Class NestPageUC
Private Sub DownBtn_Click(sender As Object, e As RoutedEventArgs) Handles DownBtn.Click
Dim dStep As Double = If(m_bMaximizeMove, m_dMaxStep, m_dStep)
- EgtMoveSelectedPartCluster(m_bReducedCut, New Vector3d(0, -dStep, 0), m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ EgtMovePart(GDB_ID.SEL, m_bReducedCut, New Vector3d(0, -dStep, 0),
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
EgtSaveCollInfo()
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
- EgtAlignSelectedPartClusterOnCollision(m_bReducedCut, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
+ EgtAlignPartOnCollision(GDB_ID.SEL, m_bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
- EgtMoveToSnapPointSelectedOnCollision(m_bReducedCut, m_dSnapDist, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
+ EgtMovePartToSnapPointOnCollision(GDB_ID.SEL, m_bReducedCut, m_dSnapDist,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
End If
End If
m_CurrProjPage.ResetOrderMachiningFlag()
@@ -263,19 +273,22 @@ Public Class NestPageUC
Private Sub RightBtn_Click(sender As Object, e As RoutedEventArgs) Handles RightBtn.Click
Dim dStep As Double = If(m_bMaximizeMove, m_dMaxStep, m_dStep)
- EgtMoveSelectedPartCluster(m_bReducedCut, New Vector3d(dStep, 0, 0), m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ EgtMovePart(GDB_ID.SEL, m_bReducedCut, New Vector3d(dStep, 0, 0),
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
EgtSaveCollInfo()
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
- EgtAlignSelectedPartClusterOnCollision(m_bReducedCut, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
+ EgtAlignPartOnCollision(GDB_ID.SEL, m_bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
- EgtMoveToSnapPointSelectedOnCollision(m_bReducedCut, m_dSnapDist, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
+ EgtMovePartToSnapPointOnCollision(GDB_ID.SEL, m_bReducedCut, m_dSnapDist,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
End If
End If
m_CurrProjPage.ResetOrderMachiningFlag()
@@ -284,19 +297,22 @@ Public Class NestPageUC
Private Sub LeftBtn_Click(sender As Object, e As RoutedEventArgs) Handles LeftBtn.Click
Dim dStep As Double = If(m_bMaximizeMove, m_dMaxStep, m_dStep)
- EgtMoveSelectedPartCluster(m_bReducedCut, New Vector3d(-dStep, 0, 0), m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ EgtMovePart(GDB_ID.SEL, m_bReducedCut, New Vector3d(-dStep, 0, 0),
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
EgtSaveCollInfo()
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
- EgtAlignSelectedPartClusterOnCollision(m_bReducedCut, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
+ EgtAlignPartOnCollision(GDB_ID.SEL, m_bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bAlignMoved)
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
- EgtMoveToSnapPointSelectedOnCollision(m_bReducedCut, m_dSnapDist, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
+ EgtMovePartToSnapPointOnCollision(GDB_ID.SEL, m_bReducedCut, m_dSnapDist,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf, bSnapMoved)
End If
End If
m_CurrProjPage.ResetOrderMachiningFlag()
@@ -332,13 +348,14 @@ Public Class NestPageUC
' Rotazione dei pezzi attorno al loro centro
EgtRotate(GDB_ID.SEL, ptCen, Vector3d.Z_AX(), dAngRotDeg, GDB_RT.GLOB)
' Sistemazione nel parcheggio
- EgtPackSelectedBoxCluster(-5000, -INFINITO, 1000, -3000, 20, False)
+ EgtPackBox(GDB_ID.SEL, -5000, -INFINITO, 1000, -3000, 20, False)
Return True
' Altrimenti li ruoto tenendo conto delle collisioni
Else
- Return EgtRotateSelectedPartCluster(m_bReducedCut, ptCen, dAngRotDeg, m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
- m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
+ Return EgtRotatePart(GDB_ID.SEL, m_bReducedCut, ptCen, dAngRotDeg,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf)
End If
End Function
@@ -515,4 +532,34 @@ Public Class NestPageUC
m_bMagnetic = False
End If
End Sub
+
+ Friend Function VerifyPartsNesting(bReducedCut As Boolean) As Boolean
+ ' Ciclo su tutti i pezzi in tavola
+ Dim nPartId As Integer = EgtGetFirstGroupInGroup(m_nRawId)
+ While nPartId <> GDB_ID.NULL
+ If Not EgtVerifyPart(nPartId, bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf) Then
+ Return False
+ End If
+ nPartId = EgtGetNextGroup(nPartId)
+ End While
+ Return True
+ End Function
+
+ Friend Function StoreCollisionParts(bReducedCut As Boolean) As Boolean
+ ' Ciclo su tutti i pezzi in tavola (dall'ultimo)
+ Dim nPartId As Integer = EgtGetLastGroupInGroup(m_nRawId)
+ While nPartId <> GDB_ID.NULL
+ Dim nPrevPartId As Integer = EgtGetPrevGroup(nPartId)
+ If Not EgtVerifyPart(nPartId, bReducedCut,
+ m_ptRawMin.x + m_dKerf, m_ptRawMin.y + m_dKerf,
+ m_ptRawMax.x - m_dKerf, m_ptRawMax.y - m_dKerf) Then
+ StoreOnePart(nPartId, True)
+ End If
+ nPartId = nPrevPartId
+ End While
+ Return True
+ End Function
+
End Class
diff --git a/OpenPageUC.xaml.vb b/OpenPageUC.xaml.vb
index a268f99..7aa637a 100644
--- a/OpenPageUC.xaml.vb
+++ b/OpenPageUC.xaml.vb
@@ -3,42 +3,42 @@ Imports EgtUILib
Public Class OpenPageUC
- 'Riferimento alla MainWindow
- Private m_MainWindow As MainWindow = Application.Current.MainWindow
+ 'Riferimento alla MainWindow
+ Private m_MainWindow As MainWindow = Application.Current.MainWindow
- 'Dichiarazione dello UserControl SceneButtons
- Private m_SceneButtons As SceneButtonsUC
+ 'Dichiarazione dello UserControl SceneButtons
+ Private m_SceneButtons As SceneButtonsUC
- ' Properties
- Private m_sCurrDir As String = String.Empty
- Private m_sCurrFile As String = String.Empty
- Private m_bFirst As Boolean = True
- Private m_bFileOk As Boolean = False
+ ' Properties
+ Private m_sCurrDir As String = String.Empty
+ Private m_sCurrFile As String = String.Empty
+ Private m_bFirst As Boolean = True
+ Private m_bFileOk As Boolean = False
- ' Dichiarazione Scene
- Friend WithEvents OpenScene As New Scene
- Dim OpenSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost
+ ' Dichiarazione Scene
+ Friend WithEvents OpenScene As New Scene
+ Dim OpenSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost
- Private Sub OpenPage_Initialized(sender As Object, e As EventArgs)
+ Private Sub OpenPage_Initialized(sender As Object, e As EventArgs)
- ' Creazione dello UserControl SceneButtons
- m_SceneButtons = New SceneButtonsUC
+ ' Creazione dello UserControl SceneButtons
+ m_SceneButtons = New SceneButtonsUC
- ' Posizionemento nella griglia del UserControl SceneButtons
- m_SceneButtons.SetValue(Grid.ColumnProperty, 1)
- UpperButtonsGrid.Children.Add(m_SceneButtons)
+ ' Posizionemento nella griglia del UserControl SceneButtons
+ m_SceneButtons.SetValue(Grid.ColumnProperty, 1)
+ UpperButtonsGrid.Children.Add(m_SceneButtons)
- ' Assegnazione scena all'host e posizionamento nella OpenPageGrid
- OpenSceneHost.Child = OpenScene
- OpenSceneHost.SetValue(Grid.ColumnProperty, 1)
- OpenSceneHost.SetValue(Grid.RowProperty, 2)
- ' OpenSceneHost.SetValue(Grid.RowSpanProperty, 1)
- Me.OpenPageGrid.Children.Add(OpenSceneHost)
+ ' Assegnazione scena all'host e posizionamento nella OpenPageGrid
+ OpenSceneHost.Child = OpenScene
+ OpenSceneHost.SetValue(Grid.ColumnProperty, 1)
+ OpenSceneHost.SetValue(Grid.RowProperty, 2)
+ ' OpenSceneHost.SetValue(Grid.RowSpanProperty, 1)
+ Me.OpenPageGrid.Children.Add(OpenSceneHost)
- ' Definizione del collegamento tra ItemList e ListBox1
- FileListBox.ItemsSource = m_MainWindow.m_OpenItemList
+ ' Definizione del collegamento tra ItemList e ListBox1
+ FileListBox.ItemsSource = m_MainWindow.m_OpenItemList
- End Sub
+ End Sub
Private Sub OpenPage_Loaded(sender As Object, e As RoutedEventArgs)
@@ -95,114 +95,114 @@ Public Class OpenPageUC
End Sub
- Private Function LoadCurrDir() As Boolean
- ' se direttorio corrente non valido, carico l'elenco dei dischi
- If String.IsNullOrWhiteSpace(m_sCurrDir) OrElse Not IO.Directory.Exists(m_sCurrDir) Then
- Return LoadDisks()
- End If
- Dim TempPath As New Text.StringBuilder(260)
- PathCompactPathEx(TempPath, m_sCurrDir, 28, 0)
- ' lo visualizzo
- FilePathTxBl.Content = TempPath.ToString
- ' pulisco la lista
- m_MainWindow.m_OpenItemList.Clear()
- ' per risalire al direttorio padre
- m_MainWindow.m_OpenItemList.Add(New IconListBoxItem("..", 0))
- ' elenco dei sottodirettori
- Dim DirInfo As New DirectoryInfo(m_sCurrDir)
- Dim vDirI As DirectoryInfo() = DirInfo.GetDirectories("*")
- Dim DirI As DirectoryInfo
- For Each DirI In vDirI
- If (DirI.Attributes And FileAttributes.Hidden) <> FileAttributes.Hidden Then
- m_MainWindow.m_OpenItemList.Add(New IconListBoxItem(DirI.Name, 2))
- End If
- Next
- ' elenco dei file
- Dim vFileI As FileInfo() = DirInfo.GetFiles()
- Dim FileI As FileInfo
- For Each FileI In vFileI
- Dim sExt As String = Path.GetExtension(FileI.Name).ToUpper()
- If sExt = ".NGE" Then
- m_MainWindow.m_OpenItemList.Add(New IconListBoxItem(FileI.Name, 3))
- End If
- Next
- ' pulisco la vista
- ClearView()
- Return True
- End Function
+ Private Function LoadCurrDir() As Boolean
+ ' se direttorio corrente non valido, carico l'elenco dei dischi
+ If String.IsNullOrWhiteSpace(m_sCurrDir) OrElse Not IO.Directory.Exists(m_sCurrDir) Then
+ Return LoadDisks()
+ End If
+ Dim TempPath As New Text.StringBuilder(260)
+ PathCompactPathEx(TempPath, m_sCurrDir, 28, 0)
+ ' lo visualizzo
+ FilePathTxBl.Content = TempPath.ToString
+ ' pulisco la lista
+ m_MainWindow.m_OpenItemList.Clear()
+ ' per risalire al direttorio padre
+ m_MainWindow.m_OpenItemList.Add(New IconListBoxItem("..", 0))
+ ' elenco dei sottodirettori
+ Dim DirInfo As New DirectoryInfo(m_sCurrDir)
+ Dim vDirI As DirectoryInfo() = DirInfo.GetDirectories("*")
+ Dim DirI As DirectoryInfo
+ For Each DirI In vDirI
+ If (DirI.Attributes And FileAttributes.Hidden) <> FileAttributes.Hidden Then
+ m_MainWindow.m_OpenItemList.Add(New IconListBoxItem(DirI.Name, 2))
+ End If
+ Next
+ ' elenco dei file
+ Dim vFileI As FileInfo() = DirInfo.GetFiles()
+ Dim FileI As FileInfo
+ For Each FileI In vFileI
+ Dim sExt As String = Path.GetExtension(FileI.Name).ToUpper()
+ If sExt = ".NGE" Then
+ m_MainWindow.m_OpenItemList.Add(New IconListBoxItem(FileI.Name, 3))
+ End If
+ Next
+ ' pulisco la vista
+ ClearView()
+ Return True
+ End Function
- Private Function LoadDisks() As Boolean
- ' dir corrente vuoto
- m_sCurrDir = ""
- ' lo visualizzo
- FilePathTxBl.Content = m_sCurrDir
- ' pulisco la lista
- m_MainWindow.m_OpenItemList.Clear()
- ' elenco dei dischi
- Dim vDriI As DriveInfo() = DriveInfo.GetDrives()
- Dim DriI As DriveInfo
- For Each DriI In vDriI
- m_MainWindow.m_OpenItemList.Add(New IconListBoxItem(DriI.Name, 1))
- Next
- ' pulisco la vista
- ClearView()
- Return True
- End Function
+ Private Function LoadDisks() As Boolean
+ ' dir corrente vuoto
+ m_sCurrDir = ""
+ ' lo visualizzo
+ FilePathTxBl.Content = m_sCurrDir
+ ' pulisco la lista
+ m_MainWindow.m_OpenItemList.Clear()
+ ' elenco dei dischi
+ Dim vDriI As DriveInfo() = DriveInfo.GetDrives()
+ Dim DriI As DriveInfo
+ For Each DriI In vDriI
+ m_MainWindow.m_OpenItemList.Add(New IconListBoxItem(DriI.Name, 1))
+ Next
+ ' pulisco la vista
+ ClearView()
+ Return True
+ End Function
- Private Sub FileListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles FileListBox.PreviewMouseUp
- ' Recupero item selezionato
- If FileListBox.SelectedItems.Count() = 0 Then
- Return
- End If
- Dim vItems As IconListBoxItem = FileListBox.SelectedItems(0)
+ Private Sub FileListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles FileListBox.PreviewMouseUp
+ ' Recupero item selezionato
+ If FileListBox.SelectedItems.Count() = 0 Then
+ Return
+ End If
+ Dim vItems As IconListBoxItem = FileListBox.SelectedItems(0)
- ' A seconda del tipo
- Select Case vItems.PictureID
- Case 0 ' Vai nel direttorio padre
- m_sCurrDir = IO.Path.GetDirectoryName(m_sCurrDir)
- m_sCurrFile = ""
- LoadCurrDir()
- Case 1 ' Vai nella radice del disco
- m_sCurrDir = vItems.Name
- m_sCurrFile = ""
- LoadCurrDir()
- Case 2 ' Vai nel sottodirettorio
- m_sCurrDir = IO.Path.Combine(m_sCurrDir, vItems.Name)
- m_sCurrFile = ""
- LoadCurrDir()
- Case 3 ' File
- m_sCurrFile = vItems.Name
- LoadCurrFile()
- End Select
+ ' A seconda del tipo
+ Select Case vItems.PictureID
+ Case 0 ' Vai nel direttorio padre
+ m_sCurrDir = IO.Path.GetDirectoryName(m_sCurrDir)
+ m_sCurrFile = ""
+ LoadCurrDir()
+ Case 1 ' Vai nella radice del disco
+ m_sCurrDir = vItems.Name
+ m_sCurrFile = ""
+ LoadCurrDir()
+ Case 2 ' Vai nel sottodirettorio
+ m_sCurrDir = IO.Path.Combine(m_sCurrDir, vItems.Name)
+ m_sCurrFile = ""
+ LoadCurrDir()
+ Case 3 ' File
+ m_sCurrFile = vItems.Name
+ LoadCurrFile()
+ End Select
- End Sub
+ End Sub
- Private Sub FileListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles FileListBox.SelectionChanged
- ' Recupero item selezionato
- If FileListBox.SelectedItems.Count() = 0 Then
- Return
- End If
- Dim vItems As IconListBoxItem = FileListBox.SelectedItems(0)
+ Private Sub FileListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles FileListBox.SelectionChanged
+ ' Recupero item selezionato
+ If FileListBox.SelectedItems.Count() = 0 Then
+ Return
+ End If
+ Dim vItems As IconListBoxItem = FileListBox.SelectedItems(0)
- ' Gestisco solo aggiornamento visualizzazione file
- If vItems.PictureID = 3 Then
- m_sCurrFile = vItems.Name
- LoadCurrFile()
- End If
- End Sub
+ ' Gestisco solo aggiornamento visualizzazione file
+ If vItems.PictureID = 3 Then
+ m_sCurrFile = vItems.Name
+ LoadCurrFile()
+ End If
+ End Sub
- Private Function ClearView() As Boolean
- ' Pulisco il DB geometrico locale
- EgtNewFile()
- ' Eseguo zoom
- OpenScene.ZoomAll()
- ' Cancello messaggio
- MessageTxBx.Text = ""
- MessageBrd.Background = Brushes.Transparent
- OkBtn.IsEnabled = False
- m_bFileOk = False
- Return True
- End Function
+ Private Function ClearView() As Boolean
+ ' Pulisco il DB geometrico locale
+ EgtNewFile()
+ ' Eseguo zoom
+ OpenScene.ZoomAll()
+ ' Cancello messaggio
+ MessageTxBx.Text = ""
+ MessageBrd.Background = Brushes.Transparent
+ OkBtn.IsEnabled = False
+ m_bFileOk = False
+ Return True
+ End Function
Private Function LoadCurrFile() As Boolean
' Pulisco il DB geometrico locale
@@ -222,23 +222,49 @@ Public Class OpenPageUC
' Formato sconosciuto
bOk = False
End If
- ' Cerco contrassegno di progetto OmagCut
+ ' Cerco contrassegno di progetto OmagCut e flag di tagli ridotti
Dim nMarkId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK)
- m_bFileOk = bOk And (nMarkId <> GDB_ID.NULL)
+ Dim bMarkOk = (nMarkId <> GDB_ID.NULL)
+ Dim nFileReducedCut As Integer = 1
+ EgtGetInfo(nMarkId, INFO_REDUCEDCUT, nFileReducedCut)
+ Dim nReducedCut As Integer = GetPrivateProfileInt(S_MACH_NEST, K_MACH_REDUCEDCUT, 0, m_MainWindow.GetMachIniFile())
+ Dim bReducedCutOk = (nFileReducedCut = 0) OrElse
+ (nFileReducedCut <> 0 And nReducedCut <> 0) OrElse
+ VerifyPartsNesting(False)
+ m_bFileOk = bOk And bMarkOk And bReducedCutOk
If m_bFileOk Then
MessageTxBx.Text = ""
MessageBrd.Background = Brushes.Transparent
OkBtn.IsEnabled = True
- Else
+ ElseIf Not bMarkOk Then
MessageTxBx.Text = EgtMsg(MSG_OPENPAGEUC + 1) 'Progetto non valido
MessageBrd.Background = Brushes.Tomato
OkBtn.IsEnabled = False
+ Else
+ MessageTxBx.Text = EgtMsg(MSG_OPENPAGEUC + 2) 'Progetto con interferenze. Per caricarlo disabilita rispetto tagli completi.
+ MessageBrd.Background = Brushes.Tomato
+ OkBtn.IsEnabled = False
End If
' Eseguo zoom
OpenScene.ZoomAll()
Return bOk
End Function
+ Private Function VerifyPartsNesting(bReducedCut As Boolean) As Boolean
+ ' Recupero il grezzo
+ Dim nRawId As Integer = EgtGetFirstRawPart()
+ ' Ciclo su tutti i pezzi in tavola
+ Dim nPartId As Integer = EgtGetFirstGroupInGroup(nRawId)
+ While nPartId <> GDB_ID.NULL
+ If Not EgtVerifyPart(nPartId, bReducedCut, -10000, -10000, 10000, 10000) Then
+ Return False
+ End If
+ nPartId = EgtGetNextGroup(nPartId)
+ End While
+ Return True
+ End Function
+
+
Private Sub OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles OpenScene.OnMouseDownScene
End Sub