OmagCUT 2.1l2 :

- modifiche per Nesting Automatico.
This commit is contained in:
Dario Sassi
2019-12-04 19:51:43 +00:00
parent 5a9e9e5036
commit 46dcdd446c
9 changed files with 106 additions and 7 deletions
+7
View File
@@ -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
View File
@@ -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)
+1 -1
View File
@@ -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
+1
View File
@@ -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"
+2
View File
@@ -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
View File
@@ -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)
+2 -2
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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