OmagCUT 2.1l2 :
- modifiche per Nesting Automatico.
This commit is contained in:
@@ -155,6 +155,13 @@ Public Class AlarmsPageUC
|
||||
Else
|
||||
CutFredGpBx.Visibility = Windows.Visibility.Hidden
|
||||
End If
|
||||
|
||||
' Se non previsto nesting automatico, nascondo flag relativo
|
||||
If Not m_MainWindow.GetAutoNestingOption() Then
|
||||
AutomaticTxBl.Visibility = Visibility.Hidden
|
||||
AutomaticChBx.Visibility = Visibility.Hidden
|
||||
End If
|
||||
|
||||
m_bFirst = False
|
||||
End If
|
||||
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ Public Class CSVPage
|
||||
InsertBtn.Content = EgtMsg(MSG_CSVPAGEUC + 2) ' Inserisci
|
||||
RemoveBtn.Content = EgtMsg(MSG_CSVPAGEUC + 4) ' Rimuovi
|
||||
' Determino se versione semplificata
|
||||
m_bFull = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.AUTO_NESTING) And
|
||||
m_bFull = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CSV_AUTO) And
|
||||
(GetPrivateProfileInt(S_CSV, K_FULL, 1, m_MainWindow.GetIniFile()) <> 0)
|
||||
PlusBtn.Visibility = If(m_bFull, Windows.Visibility.Visible, Windows.Visibility.Hidden)
|
||||
MinusBtn.Visibility = If(m_bFull, Windows.Visibility.Visible, Windows.Visibility.Hidden)
|
||||
|
||||
@@ -59,7 +59,7 @@ Public Class CadCutPageUC
|
||||
Private Sub CadCutPage_Loaded(sender As Object, e As RoutedEventArgs)
|
||||
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
|
||||
' Se abilitato, visualizzo bottone CSV
|
||||
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.AUTO_NESTING) Or
|
||||
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CSV_AUTO) Or
|
||||
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CSV_SIMPLE) Then
|
||||
m_ProjectMgr.CSVBtn.Visibility = Windows.Visibility.Visible
|
||||
Else
|
||||
|
||||
@@ -23,6 +23,7 @@ Module ConstGen
|
||||
Public Const LIC_FILE_NAME As String = "OmagCUT.lic"
|
||||
Public Const S_LICENCE As String = "Licence"
|
||||
Public Const K_KEY As String = "Key"
|
||||
Public Const K_NESTKEY As String = "NestKey"
|
||||
|
||||
' File di log generale
|
||||
Public Const GENLOG_FILE_NAME As String = "OmagCUTLog.txt"
|
||||
|
||||
@@ -115,6 +115,8 @@ Module ConstIni
|
||||
Public Const K_SNAPDIST As String = "SnapDist"
|
||||
Public Const K_TRFTHICKTOLERANCE As String = "TrfThickTolerance"
|
||||
Public Const K_TEXTCOLOR As String = "TextColor"
|
||||
Public Const K_AUTOMATICOPTIMIZE As String = "AutomaticOptimize"
|
||||
Public Const K_AUTOMATICMAXTIME As String = "AutomaticMaxTime"
|
||||
|
||||
Public Const S_CSV As String = "Csv"
|
||||
Public Const K_FULL As String = "Full"
|
||||
|
||||
+12
-1
@@ -78,7 +78,7 @@ Class MainWindow
|
||||
AUTO_MANIP = 4
|
||||
MAN_PHOTO = 8
|
||||
AUTO_PHOTO = 16
|
||||
AUTO_NESTING = 32
|
||||
CSV_AUTO = 32
|
||||
ENABLE_MILL = 64
|
||||
PROCUCTION_LINE = 128
|
||||
OFFICE_BASE = 256 ' Prodotto OmagOFFICE
|
||||
@@ -92,6 +92,8 @@ Class MainWindow
|
||||
CURVED_FRAME = 65536
|
||||
ENABLE_WJ = 131072
|
||||
End Enum
|
||||
' Opzione nesting automatico
|
||||
Private m_bAutoNest As Boolean = False
|
||||
|
||||
' Dichiarazione lista per ListBox della ImportPage
|
||||
Friend m_ImportItemList As New ObservableCollection(Of IconListBoxItem)
|
||||
@@ -223,6 +225,10 @@ Class MainWindow
|
||||
Return m_nKeyOptions
|
||||
End Function
|
||||
|
||||
Friend Function GetAutoNestingOption() As Boolean
|
||||
Return m_bAutoNest
|
||||
End Function
|
||||
|
||||
Friend Function GetVersion() As String
|
||||
Return m_sVersion
|
||||
End Function
|
||||
@@ -289,6 +295,11 @@ Class MainWindow
|
||||
Dim sKey As String = String.Empty
|
||||
GetPrivateProfileString(S_LICENCE, K_KEY, "", sKey, sLicFile)
|
||||
EgtSetKey(sKey)
|
||||
Dim sNestKey As String = ""
|
||||
EgtUILib.GetPrivateProfileString( S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile)
|
||||
EgtSetNestKey( sNestKey)
|
||||
' Verifico abilitazione nesting automatico
|
||||
m_bAutoNest = Not String.IsNullOrWhiteSpace( sNestKey)
|
||||
' Recupero opzioni della chiave
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(9423, 19, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(9423, 19, 1, m_nKeyOptions)
|
||||
|
||||
@@ -62,5 +62,5 @@ Imports System.Windows
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.1.11.4")>
|
||||
<Assembly: AssemblyFileVersion("2.1.11.4")>
|
||||
<Assembly: AssemblyVersion("2.1.12.2")>
|
||||
<Assembly: AssemblyFileVersion("2.1.12.2")>
|
||||
|
||||
+79
-1
@@ -760,6 +760,17 @@ Public Class NestPageUC
|
||||
End Sub
|
||||
|
||||
Private Sub InsertPartBtn_Click(sender As Object, e As RoutedEventArgs) Handles InsertPartBtn.Click
|
||||
' Se inserimento automatico
|
||||
If GetPrivateProfileInt( S_MACH_NEST, K_MACH_NEST_AUTOMATIC, 0, m_MainWindow.GetMachIniFile()) <> 0 And
|
||||
m_MainWindow.GetAutoNestingOption() Then
|
||||
AutomaticInsert()
|
||||
' altrimenti inserimento standard
|
||||
Else
|
||||
StandardInsert()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub StandardInsert()
|
||||
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
|
||||
Dim bWrongTrf As Boolean = False
|
||||
m_CurrProjPage.ClearMessage()
|
||||
@@ -799,6 +810,71 @@ Public Class NestPageUC
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub AutomaticInsert()
|
||||
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
|
||||
m_CurrProjPage.SetInfoMessage( "Nesting Automatico in corso")
|
||||
Dim bWrongTrf As Boolean = False
|
||||
Dim vParts As New List(Of Integer)
|
||||
' Ciclo di pre-inserimento in tavola dei pezzi selezionati
|
||||
Dim nId As Integer = EgtGetFirstSelectedObj()
|
||||
While nId <> GDB_ID.NULL
|
||||
' Recupero successivo selezionato
|
||||
Dim nNextId = EgtGetNextSelectedObj()
|
||||
' Se pezzo da Trf, verifico compatibilità
|
||||
If Not VerifyTrfData(nId) Then
|
||||
bWrongTrf = True
|
||||
EgtSetStatus(nId, GDB_ST.ON_)
|
||||
' Passo al successivo selezionato
|
||||
nId = nNextId
|
||||
Continue While
|
||||
End If
|
||||
' Lo preparo in tavola, se possibile
|
||||
If PreInsertOnePart(nId) Then
|
||||
vParts.Add( nId)
|
||||
Else
|
||||
EgtSetStatus(nId, GDB_ST.ON_)
|
||||
VeinMatching.OnDeselectPart(nId)
|
||||
End If
|
||||
' Costringo ad aggiornare UI
|
||||
UpdateUI()
|
||||
' Passo al successivo selezionato
|
||||
nId = nNextId
|
||||
End While
|
||||
' Aggiorno le regioni per il nesting
|
||||
UpdateNestRegions()
|
||||
Dim bAligned As Boolean = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_NEST_ALIGNED, 0, m_MainWindow.GetMachIniFile()) <> 0)
|
||||
EnableReferenceRegion(bAligned)
|
||||
' Eseguo nesting automatico
|
||||
Dim bOpimizeOnX As Boolean = ( GetPrivateProfileInt( S_NEST, K_AUTOMATICOPTIMIZE, 2, m_MainWindow.GetIniFile()) = 1)
|
||||
Dim nAutomaticMaxTime As Integer = GetPrivateProfileInt( S_NEST, K_AUTOMATICMAXTIME, 20, m_MainWindow.GetIniFile())
|
||||
Dim nMaxTime As Integer = Math.Min( 2 + 0.5 * vParts.Count(), nAutomaticMaxTime)
|
||||
EgtAutomaticPackParts( vParts, bOpimizeOnX, m_bReducedCut, nMaxTime)
|
||||
' Sistemo i pezzi
|
||||
For Each nPartId As Integer In vParts
|
||||
' se pezzo inserito
|
||||
If nPartId > 0 Then
|
||||
VeinMatching.OnInsertPartInRaw(nPartId)
|
||||
' Eventuale aggiunta solido per taglio da sotto
|
||||
UpdateSolidForDrip(nPartId)
|
||||
' altrimenti rifiutato
|
||||
else
|
||||
' Ripristino lo stato originale
|
||||
PreRemoveOnePart( Math.Abs( nPartId))
|
||||
VeinMatching.OnDeselectPart( Math.Abs( nPartId))
|
||||
End If
|
||||
Next
|
||||
' Aggiorno flag selezionati
|
||||
m_nPartPos = If(EgtGetSelectedObjCount() > 0, PART_POS.IN_TABLE, PART_POS.NONE_TABLE)
|
||||
' Aggiorno vista
|
||||
EgtZoom(ZM.ALL)
|
||||
m_CurrProjPage.ClearMessage()
|
||||
' Eventuale segnalazione di pezzi Trf non adatti
|
||||
If bWrongTrf Then
|
||||
' Pezzi con spessore, materiale o finitura non compatibili
|
||||
m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_NESTPAGEUC + 7))
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Function VerifyTrfData(nId As Integer) As Boolean
|
||||
' Verifico se pezzo da Trf
|
||||
If Not EgtExistsInfo(nId, "OC") Then Return True
|
||||
@@ -1117,6 +1193,8 @@ Public Class NestPageUC
|
||||
VeinMatching.OnSelectPart(nPartId, False)
|
||||
nPartId = EgtGetNextPart(nPartId)
|
||||
End While
|
||||
' Aggiorno flag
|
||||
m_nPartPos = If(EgtGetSelectedObjCount() > 0, PART_POS.OUT_TABLE, PART_POS.NONE_TABLE)
|
||||
End If
|
||||
' Aggiorno viste
|
||||
EgtDraw()
|
||||
@@ -1176,7 +1254,7 @@ Public Class NestPageUC
|
||||
' Se rotazione libera, applico blocco e aggiorno info
|
||||
If Not EgtExistsInfo( nId, INFO_PARTROT) Then
|
||||
' Imposto flag di rotazione bloccata
|
||||
EgtSetInfo( nId, INFO_PARTROT, 1)
|
||||
EgtSetInfo( nId, INFO_PARTROT, 0)
|
||||
' Inserisco in info sul pezzo Codice
|
||||
Dim nTextId As Integer = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nId, NAME_REGION))
|
||||
While nTextId <> GDB_ID.NULL
|
||||
|
||||
@@ -550,7 +550,7 @@ Public Class ProjectMgrUC
|
||||
LoadBtn.Visibility = Windows.Visibility.Visible
|
||||
SaveBtn.Visibility = Windows.Visibility.Visible
|
||||
SaveNameBtn.Visibility = Windows.Visibility.Visible
|
||||
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.AUTO_NESTING) Or
|
||||
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CSV_AUTO) Or
|
||||
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CSV_SIMPLE) Then
|
||||
CSVBtn.Visibility = Windows.Visibility.Visible
|
||||
End If
|
||||
|
||||
Reference in New Issue
Block a user