Compare commits

...

33 Commits

Author SHA1 Message Date
NicolaP 174738f252 Migliorata gestione VeinMatch per alette 2021-09-28 14:08:04 +02:00
NicolaP 9112fb5691 Merge remote-tracking branch 'origin/Features/Alzatine_e_Frontalini' into Gestione_colori_pezzi 2021-09-27 19:15:49 +02:00
NicolaP db608e6c0e Gestione dei colori regioni per importazioni e disegni 2021-09-27 19:15:28 +02:00
SaraP 5ce753e4b7 Correzione errore disegno 3D frontalini 2021-09-27 16:38:06 +02:00
SaraP d7445f828a Aggiunto disegno 3D frontalini (prima implementazione) 2021-09-27 14:54:07 +02:00
NicolaP ca4eb016a5 Disabilito la text per la gestione del DeltaAng delle alzatine 2021-09-27 14:42:43 +02:00
NicolaP ea48c05112 Merge branch 'Features/Esporta_utensile' into Features/Demo_Fiera 2021-09-27 14:24:46 +02:00
NicolaP 3f6e8fbbeb Configurato CycleStart da programma 2021-09-27 13:10:12 +02:00
SaraP e52a56a683 Merge commit 'efba122f14782d61996a2671561103ad6da1cdcf' into Features/Demo_Fiera 2021-09-24 16:13:43 +02:00
SaraP 3d44bbaa5c Disegno 3D alzatine nel VeinMatching 2021-09-24 16:08:53 +02:00
NicolaP fc68efd4f4 Correzione Merge 2021-09-23 20:20:23 +02:00
NicolaP 191a973ee3 Merge remote-tracking branch 'origin/master' into Features/Alzatine_e_Frontalini 2021-09-23 19:46:21 +02:00
NicolaP e3f628a07d Controllo e verifica nuova console 2021-09-23 19:31:07 +02:00
NicolaP 8b57174267 Merge branch 'master' into Features/Esporta_utensile 2021-09-22 10:51:59 +02:00
NicolaP 2035c83062 Correzione errore in VeinMatch 2021-09-22 10:00:14 +02:00
NicolaP 3aa9129acc Correzione spessore 3D 2021-09-22 09:31:32 +02:00
NicolaP 8ccfda96f8 Merge branch 'Features/Alzatine_e_Frontalini' of https://gitlab.steamware.net/egaltech/OmagCUT into Features/Alzatine_e_Frontalini 2021-09-22 09:24:00 +02:00
NicolaP 8a67feab0f Aggiunto spessore per generazione 3D 2021-09-22 09:20:15 +02:00
NicolaP f76d91fc20 Merge remote-tracking branch 'origin/HEAD' 2021-09-22 08:35:46 +02:00
Emmanuele Sassi 372b084d53 Aggiunta tasto volantino 2021-09-21 16:23:05 +02:00
SaraP 00f30c943c Traslazioni e rotazioni per 3D VeinMatching 2021-09-21 08:43:08 +02:00
NicolaP 4418d53557 Cambio versione ver_2.3i3 2021-09-20 18:29:03 +02:00
NicolaP 0fe95e4ccc Correzione gestione Kerf 2021-09-20 18:28:09 +02:00
NicolaP c2d150b402 Gestione oggetti per 3D VeinMatching 2021-09-20 14:57:36 +02:00
NicolaP efba122f14 Creazione pagina di ImportExport 2021-09-16 20:32:31 +02:00
NicolaP ed19ade967 Creazione dei comandi per importare ed esportare gli utensili 2021-09-16 14:36:11 +02:00
NicolaP 80857bb4e1 Inserito comando £D per gestire l'assemblato del piano cucina 2021-09-15 15:25:37 +02:00
NicolaP 584a635ff4 Merge branch 'master' into Features/Alzatine_e_Frontalini 2021-09-15 15:02:31 +02:00
NicolaP f1ddce36d8 Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagCUT 2021-09-15 15:00:11 +02:00
NicolaP 8aae4ff8d0 Gestione tempo attesa comando MDI in movimenti manuali 2021-09-15 14:58:24 +02:00
NicolaP 01e0fa3a9c Inserisco nel VienMath i disegni dei pezzi 2021-09-15 12:46:38 +02:00
DarioS 27bfef3fc1 OmagCUT :
- aggiunta implementazione cambio tavola su macchine a due tavole che abilitano l'operazione.
2021-09-13 15:53:05 +02:00
NicolaP 6db4dd995f Gestione lavorazione arco approssimato 2021-09-09 19:55:00 +02:00
29 changed files with 1153 additions and 118 deletions
+28 -14
View File
@@ -132,9 +132,6 @@ Public Class NestPageUC
Not m_CurrProjPage.m_bSelectCurv Then
Return
End If
'------------------- NUOVA DEFINIZIONE -------------------------
' provo a riconoscere il valore medio del segmento
' Verifico se selezionato indicativo di pezzo
EgtSetObjFilterForSelWin(False, True, False, False, False)
@@ -176,13 +173,9 @@ Public Class NestPageUC
End If
nIdMy = EgtGetNextObjInSelWin()
End While
Return
'------------------- NUOVA DEFINIZIONE -------------------------
End Sub
Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene
' Verifico di essere il gestore attivo e non in modalità registrazione
If Not m_bActive Or m_bRegister Then Return
@@ -219,16 +212,37 @@ Public Class NestPageUC
m_bDrag = True
Exit While
Else
' verifico che tra gli elemnti selezionati ci sia un testo
' verifico se l'elemento selezionato è il nome della tavola
If EgtGetType(nId) = GDB_TY.EXT_TEXT AndAlso (sNamePartId = MAIN_TAB Or sNamePartId = SECOND_TAB) Then
Dim nTab As Integer = m_MainWindow.m_CadCutPageUC.m_ProjectMgr.ChangeTable()
' se non è stata eseguita nessuna selezione esco dal ciclo
' se non è stata eseguita nessuna scelta esco dal ciclo
If nTab = 0 Then Exit While
'' Creo nuovo progetto
'm_CurrProjPage.NewProject(nTabInd, bRetainParkedParts)
'' Gestione stato FastGrid
'm_MainWindow.m_CadCutPageUC.m_FastGridSlabManager.OnPostNewProject()
'EgtZoom(ZM.ALL)
' imposto l'altra tavola
Dim sOtherTab = If( sNamePartId = MAIN_TAB, SECOND_TAB, MAIN_TAB)
EgtChangeTable( sOtherTab, True)
m_CurrProjPage.AdjustAdditionalTable( True)
EgtSetMachineLook(MCH_LOOK.TAB)
' aggiorno le lavorazioni
UpdateAllMachiningsToolpaths()
' aggiorno i movimenti pezzi tra disposizioni
For nI As Integer = 1 To EgtGetPhaseCount()
EgtSetCurrPhase( nI)
Dim nDispId As Integer = EgtGetPhaseDisposition(nI)
SpecialApplyDisposition(nDispId, True)
Next
' aggiorno posizionamento ventose per lavorazioni da sotto
UpdateVacuumsForDrip()
' dichiaro tutto aggiornato
m_CurrProjPage.SetOrderMachiningFlag()
EgtSetCurrPhase(1)
' aggiorno posizione pezzi in parcheggio
Dim nPPId As Integer = EgtGetFirstPart()
While nPPId <> GDB_ID.NULL
PackPartInStore(nPPId)
nPPId = EgtGetNextPart( nPPId)
End While
' visualizzazione
EgtZoom(ZM.ALL)
Exit While
End If
End If
+1
View File
@@ -107,6 +107,7 @@
Public Const K_ZBJOG As String = "ZBJog"
Public Const K_POWERON As String = "PowerON"
Public Const K_POWEROFF As String = "PowerOFF"
Public Const K_REMOTE As String = "Remote"
Public Const S_PRODUCTIONLINE As String = "ProductionLine"
Public Const K_ACTIVE As String = "Active"
+12 -6
View File
@@ -180,7 +180,8 @@
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
@@ -207,13 +208,18 @@
<!--<Image Source="{DynamicResource VacuumImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>-->
</ToggleButton>
<!--Comando asse Z-B-->
<ToggleButton Name="ZBBtn" Grid.Column="4"
<!--Comando asse Z-B-->
<ToggleButton Name="ZBBtn" Grid.Column="4"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<!--<Image Source="{DynamicResource VacuumImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>-->
</ToggleButton>
<!--<Image Source="{DynamicResource VacuumImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>-->
</ToggleButton>
<Button Name="ManualModeBtn" Grid.Column="7"
<!--Comando Remote-->
<ToggleButton Name="RemoteBtn" Grid.Column="5"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<!--<Image Source="{DynamicResource VacuumImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>-->
</ToggleButton>
<Button Name="ManualModeBtn" Grid.Column="8"
Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
<Image Source="{DynamicResource ManualImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</Button>
+123 -21
View File
@@ -77,7 +77,7 @@ Public Class DirectCutPageUC
'Posizionemento nella griglia delle Page UserControl
m_MachineButtons.SetValue(Grid.RowProperty, 2)
m_MachineButtons.SetValue(Grid.ColumnSpanProperty, 6)
m_MachineButtons.SetValue(Grid.ColumnSpanProperty, 7)
m_ManualAxesMove.SetValue(Grid.RowProperty, 1)
If m_bManulaCut Then
m_SingleCutAuto.SetValue(Grid.RowProperty, 1)
@@ -94,15 +94,14 @@ Public Class DirectCutPageUC
m_ControlsMachineButton.SetValue(Grid.RowProperty, 1)
m_VacuumMachineButton.SetValue(Grid.RowProperty, 1)
Dim bCollapsedNewBottonsConsole As Boolean = False
' verifico che sia presente almeno uno dei bottoni della nuova console (SOLO PER MACCHINA CON paragrafo [ControlMachButtons])
Dim bCollapsedNewBottonsConsole As Boolean = Not m_ControlsMachineButton.GetPrivateProfileMachineButtons("JogButtons", "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile())
m_NewMachineButtonsType = m_ControlsMachineButton.GetPrivateProfileMachineButtons(S_CONTROLMACHBUTTONS, "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile())
If Not m_NewMachineButtonsType Then
'Assegno MachineButtons alla pagina
LowerButtonGrid.Children.Add(m_MachineButtons)
ControlsMachineBtn.Visibility = Windows.Visibility.Collapsed
VacuumMachineBtn.Visibility = Windows.Visibility.Collapsed
' per le configurazioni diverse dalla Digitale5
bCollapsedNewBottonsConsole = True
End If
If GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, m_MainWindow.GetMachIniFile()) = 0 Then
@@ -129,20 +128,27 @@ Public Class DirectCutPageUC
' nuovi bottoni 20/05/2021 - modifica specifiche 04/08/2021
' leggo il numero di assi attivi nella macchina
Dim AxesNumber = GetPrivateProfileInt(S_AXES, K_AXESNUM, 5, m_MainWindow.GetMachIniFile())
Dim x As Integer = GetPrivateProfileInt(S_NCDATA, K_NEWCONSOLE, 0, m_MainWindow.GetMachIniFile())
If GetPrivateProfileInt(S_NCDATA, K_NEWCONSOLE, 0, m_MainWindow.GetMachIniFile()) = 1 And Not bCollapsedNewBottonsConsole Then
XYBtn.Content = "X - Y"
ZCBtn.Content = "Z - C"
If AxesNumber < 5 Then
ZBBtn.Visibility = Windows.Visibility.Collapsed
End If
ZBBtn.Content = "Z - B"
Else
XYBtn.Visibility = Windows.Visibility.Collapsed
ZCBtn.Visibility = Windows.Visibility.Collapsed
ZBBtn.Visibility = Windows.Visibility.Collapsed
End If
'' leggo se è stata configurata la nuova conole
'If GetPrivateProfileInt(S_NCDATA, K_NEWCONSOLE, 0, m_MainWindow.GetMachIniFile()) = 1 And Not bCollapsedNewBottonsConsole Then
' XYBtn.Content = "X - Y"
' XYBtn.Foreground = Brushes.White
' ZCBtn.Content = "Z - C"
' ZCBtn.Foreground = Brushes.White
' If AxesNumber < 5 Then
' ZBBtn.Visibility = Windows.Visibility.Collapsed
' End If
' ZBBtn.Content = "Z - B"
' ZBBtn.Foreground = Brushes.White
' RemoteBtn.Content = "Remote"
' RemoteBtn.Foreground = Brushes.White
'Else
' XYBtn.Visibility = Windows.Visibility.Collapsed
' ZCBtn.Visibility = Windows.Visibility.Collapsed
' ZBBtn.Visibility = Windows.Visibility.Collapsed
'End If
End Sub
@@ -182,6 +188,8 @@ Public Class DirectCutPageUC
End If
End If
End While
' attivo la visualizzazione dei comandi
SetVisibilityJogButtuns()
' lo stato di questi comandi vieni carico dalla lettura del PLC (refresh)
'----------- FINE NUOVI BOTTONI------------
@@ -238,6 +246,35 @@ Public Class DirectCutPageUC
End Sub
Private Sub SetVisibilityJogButtuns()
XYBtn.Visibility = Visibility.Collapsed
ZCBtn.Visibility = Visibility.Collapsed
ZBBtn.Visibility = Visibility.Collapsed
RemoteBtn.Visibility = Visibility.Collapsed
Dim Item As MachineButton = Nothing
For Each Item In m_ButtonJogList
Select Case Item.StateFlag.Trim
Case K_XYJOG
XYBtn.Visibility = Visibility.Visible
XYBtn.Foreground = Brushes.White
XYBtn.Content = "X - Y"
Case K_ZCJOG
ZCBtn.Visibility = Visibility.Visible
ZCBtn.Foreground = Brushes.White
ZCBtn.Content = "Z - C"
Case K_ZBJOG
ZBBtn.Visibility = Visibility.Visible
ZBBtn.Foreground = Brushes.White
ZBBtn.Content = "Z - B"
Case K_REMOTE
RemoteBtn.Visibility = Visibility.Visible
RemoteBtn.Foreground = Brushes.White
RemoteBtn.Content = "Remote"
End Select
Next
End Sub
Private Sub PhotoBtn_Click(sender As Object, e As RoutedEventArgs) Handles PhotoBtn.Click
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' Se macchina fotografica collegata, faccio una foto
@@ -342,7 +379,16 @@ Public Class DirectCutPageUC
'------------------NUOVI BOTTONI PER GESTIONE JOYSTICK-------------------------------------------------
Private Sub XYBtn_Click(sender As Object, e As RoutedEventArgs) Handles XYBtn.Click
Dim XYJogButton As MachineButton = m_ButtonJogList(0)
' riverco in elenco il bottone XYJog
Dim XYJogButton As MachineButton = Nothing
Dim ItemButton As MachineButton = Nothing
For Each ItemButton In m_ButtonJogList
If ItemButton.StateFlag = K_XYJOG Then
XYJogButton = ItemButton
Exit For
End If
Next
If IsNothing(XYJogButton) Then Return
' eseguo lo script lua associato
XYJogButton.ExecuteMDICommand(XYJogButton.TLuaScriptName)
' che comunica al PLC di cambiare lo stato, la modifica dello stato è intercettata dalla funzione Refresh che avvia il metodo Changed
@@ -365,7 +411,16 @@ Public Class DirectCutPageUC
End Sub
Private Sub ZCBtn_Click(sender As Object, e As RoutedEventArgs) Handles ZCBtn.Click
Dim ZJogButton As MachineButton = m_ButtonJogList(1)
' riverco in elenco il bottone ZCYJog
Dim ZJogButton As MachineButton = Nothing
Dim ItemButton As MachineButton = Nothing
For Each ItemButton In m_ButtonJogList
If ItemButton.StateFlag = K_ZCJOG Then
ZJogButton = ItemButton
Exit For
End If
Next
If IsNothing(ZJogButton) Then Return
' eseguo lo script lua associato
ZJogButton.ExecuteMDICommand(ZJogButton.TLuaScriptName)
End Sub
@@ -386,9 +441,18 @@ Public Class DirectCutPageUC
End Sub
Private Sub ZBBtn_Click(sender As Object, e As RoutedEventArgs) Handles ZBBtn.Click
Dim BCJogButton As MachineButton = m_ButtonJogList(2)
' riverco in elenco il bottone ZCYJog
Dim ZBJogButton As MachineButton = Nothing
Dim ItemButton As MachineButton = Nothing
For Each ItemButton In m_ButtonJogList
If ItemButton.StateFlag = K_ZBJOG Then
ZBJogButton = ItemButton
Exit For
End If
Next
If IsNothing(ZBJogButton) Then Return
' eseguo lo script lua associato
BCJogButton.ExecuteMDICommand(BCJogButton.TLuaScriptName)
ZBJogButton.ExecuteMDICommand(ZBJogButton.TLuaScriptName)
End Sub
Friend Sub ZBJogChanged(bBCAxes As Boolean)
@@ -405,6 +469,44 @@ Public Class DirectCutPageUC
ZBBtn.IsChecked = bBCAxes
End If
End Sub
Private Sub RemoteBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoteBtn.Click
Dim RemoteButton As MachineButton = Nothing
Dim ItemButton As MachineButton = Nothing
For Each ItemButton In m_ButtonJogList
If ItemButton.StateFlag = K_REMOTE Then
RemoteButton = ItemButton
Exit For
End If
Next
If IsNothing(RemoteButton) Then Return
' eseguo lo script lua associato
Dim CurrentBtn As Primitives.ToggleButton = e.Source
Dim sLuaFileName As String = String.Empty
' verifico lo stato del bottone per avviare il giusto script
If CurrentBtn.IsChecked() Then
sLuaFileName = RemoteButton.TLuaScriptName
Else
sLuaFileName = RemoteButton.FLuaScriptName
End If
RemoteButton.ExecuteMDICommand(sLuaFileName)
End Sub
Friend Sub RemoteChanged(bRemote As Boolean)
' devo decodificare il tipo di pulsante, quindi eseguire la conversione...
Dim RemoteButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonJogList
If MachineButton.StateFlag.Trim = K_REMOTE Then
RemoteButton = MachineButton
Exit For
End If
Next
If Not IsNothing(RemoteButton) Then
RemoteButton.SetIsChecked(bRemote)
RemoteBtn.IsChecked = bRemote
End If
End Sub
'------------------NUOVI BOTTONI PER GESTIONE JOYSTICK-------------------------------------------------
Private Sub MachViewModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles MachViewModeBtn.Click
If m_bShowMachine Then
+11
View File
@@ -121,6 +121,8 @@ Public Class MachineButtonsUC
CurrToggleBtn.Content = "Z - C"
ElseIf StateFlagArray(nIndex) = K_ZBJOG Then
CurrToggleBtn.Content = "Z - B"
ElseIf StateFlagArray(nIndex) = K_REMOTE Then
CurrToggleBtn.Content = "Remote"
End If
Catch ex As Exception
EgtOutLog("Error loading content " & StateFlagArray(nIndex))
@@ -602,6 +604,15 @@ Public Class MachineButtonsUC
' selezoiono lo stato del bottone
GetToggleButton(nIndex + 1).IsChecked = bBCAxes
End Sub
Friend Sub RemoteChanged(ByVal bRemote As Boolean)
' recupero le asscociazioni con i bottoni
Dim nIndex As Integer = Array.IndexOf(StateFlagArray, K_REMOTE)
If nIndex = -1 Then Return
' selezoiono lo stato del bottone
GetToggleButton(nIndex + 1).IsChecked = bRemote
End Sub
'-----------------------------------------------------------------------------------------------------------------
Private Function GetToggleButton(ByVal nIndex As Integer) As Primitives.ToggleButton
+3 -2
View File
@@ -201,11 +201,12 @@ Public Class ManualAxesMoveUC
EgtOutLog("CmdString=" & CmdString)
' Eseguo in MDI
m_CN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
System.Threading.Thread.Sleep(150)
m_CN.sz_ManualDataInput = CmdString
m_CN.MDI_command()
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
System.Threading.Thread.Sleep(150)
m_CN.DGeneralFunctions_CycleStart()
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale
m_MoveClicked = False
End Sub
+2
View File
@@ -192,7 +192,9 @@
Text="Offset2"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_LowerCaseCharacter}"/>
<!-- temporaneamente disabilito la definizione delta angolo per alzatine -->
<EgtWPFLib:EgtTextBox Name="Parameter2ATxBx"
IsEnabled="False"
Grid.Column="2" Grid.Row="1"
HorizontalAlignment="Right"
Width="60" Height="30" Margin="0,0,0,0"
+7
View File
@@ -157,6 +157,13 @@ Public Class AlzFrontUC
Else
AlzFrontEntityList.Add(New AlzFrontEntity(sNameCurrLine, CurrLine))
End If
' inserisco riferimento univoco al lato (solo se non esiste)
Dim sInfoRef As String = String.Empty
EgtGetInfo(CurrLine, "RefAF", sInfoRef)
If String.IsNullOrEmpty(sInfoRef) Then
Dim sRefGUID As String = System.Guid.NewGuid().ToString()
EgtSetInfo(CurrLine, "RefAF", sRefGUID)
End If
nEntityIndex += 1
Else
EgtSetName(CurrLine, "B" & nOtherIndex.ToString)
+43 -5
View File
@@ -879,6 +879,25 @@ Public Class DrawPageUC
' permette di inserire più di un part
Private Function MakeMultipleInsert(ByVal nNbr As Integer, sName As String) As Boolean
Dim InsertColor As Color3d = New Color3d(160, 160, 160)
GetPrivateProfileColor(S_GENERAL, "LastColor", InsertColor, m_MainWindow.GetIniFile())
Dim nDeltaR As Integer = GetPrivateProfileInt(S_GENERAL, "Delta_R", 25, m_MainWindow.GetIniFile())
Dim nDeltaG As Integer = GetPrivateProfileInt(S_GENERAL, "Delta_G", 25, m_MainWindow.GetIniFile())
Dim nDeltaB As Integer = GetPrivateProfileInt(S_GENERAL, "Delta_B", 25, m_MainWindow.GetIniFile())
' incremento il valore del colore usato (su tutti i fronti)
InsertColor.R += nDeltaR
If InsertColor.R > 225 Then
InsertColor.R = 50
End If
InsertColor.G += nDeltaG
If InsertColor.G > 225 Then
InsertColor.G = 50
End If
InsertColor.B += nDeltaB
If InsertColor.B > 225 Then
InsertColor.B = 50
End If
' Imposto il contesto corrente
EgtSetCurrentContext(DrawScene.GetCtx())
Dim Pz As Integer = -1
@@ -1014,6 +1033,10 @@ Public Class DrawPageUC
SideAngle.WriteSideAngleForNest(DrawScene.GetCtx())
' Imposto colore testi
Utility.SetTextColor(nRegLayId)
' Imposto il colore del pezzo inserito nel progetto
Dim nPartInRegion As Integer = EgtGetFirstInGroup(nRegLayId)
EgtSetColor(nPartInRegion, InsertColor)
' Esporto il pezzo in un file temporaneo
Dim sTmpFile As String = m_MainWindow.GetTempDir() & "\FlatPartCompo.Nge"
If Not EgtSaveObjToFile(Pz, sTmpFile, NGE.BIN) Then
@@ -1043,13 +1066,25 @@ Public Class DrawPageUC
dNewArea += GeomCalc.GetPartArea(nId2)
' Inserisco in parcheggio
m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart(nId2, True)
' Se richiesto posizionamento diretto, lo eseguo
If bDirect Then
If m_MainWindow.m_CadCutPageUC.m_NestPage.InsertOnePart(nId2) Then
' Eventuale notifica al VeinMatching
VeinMatching.OnInsertPartInRaw(nId2)
' ------------------------ AGGIUNGO PEZZO NEL VEINMATCH ----------------------------------
' verifico che il pezzo sia un Piano Cucina o un Piano Bagno o un'Aletta
Dim sCMP As String = String.Empty
EgtGetInfo(nId2, "CMP", sCMP)
If sCMP.StartsWith("PCucina") Or sCMP.StartsWith("PBagno") Or sCMP.StartsWith("AlzFront") Then
' Aggiungo riferimento e lo inserisco in VeinMatching
VeinMatching.SetRefOnPart(nId2)
VeinMatching.AddPartFromDraw(nId2, True)
' Se richiesto posizionamento diretto, lo eseguo
If bDirect Then
If m_MainWindow.m_CadCutPageUC.m_NestPage.InsertOnePart(nId2) Then
' Eventuale notifica al VeinMatching
VeinMatching.OnInsertPartInRaw(nId2)
End If
End If
End If
' ------------------------ AGGIUNGO PEZZO NEL VEINMATCH ----------------------------------
Next
' Cancello il file
My.Computer.FileSystem.DeleteFile(sTmpFile)
@@ -1064,6 +1099,9 @@ Public Class DrawPageUC
m_MainWindow.m_CurrentProjectPageUC.ShowAreas()
' Aggiorno ambiente principale
EgtZoom(ZM.ALL)
' aggiorno lo stato dell'utlimo colore inserito
Dim sColorString As String = InsertColor.R & "," & InsertColor.G & "," & InsertColor.B & "," & InsertColor.A
WritePrivateProfileString(S_GENERAL, "LastColor", sColorString, m_MainWindow.GetIniFile())
Return True
End Function
+55
View File
@@ -576,6 +576,55 @@ Public Class ImportPageUC
End If
End Sub
' metodo utilizzato per definire il colore dei pezzi DXF importati
Private Sub ColorRegion(nCtx As Integer)
' Leggo dati corrispondenza colore
Dim InsertColor As Color3d = New Color3d(160, 160, 160)
GetPrivateProfileColor(S_GENERAL, "LastColor", InsertColor, m_MainWindow.GetIniFile())
Dim nDeltaR As Integer = GetPrivateProfileInt(S_GENERAL, "Delta_R", 25, m_MainWindow.GetIniFile())
Dim nDeltaG As Integer = GetPrivateProfileInt(S_GENERAL, "Delta_G", 25, m_MainWindow.GetIniFile())
Dim nDeltaB As Integer = GetPrivateProfileInt(S_GENERAL, "Delta_B", 25, m_MainWindow.GetIniFile())
' incremento il valore del colore usato (su tutti i fronti)
InsertColor.R += nDeltaR
If InsertColor.R > 225 Then
InsertColor.R = 50
End If
InsertColor.G += nDeltaG
If InsertColor.G > 225 Then
InsertColor.G = 50
End If
InsertColor.B += nDeltaB
If InsertColor.B > 225 Then
InsertColor.B = 50
End If
' Imposto contesto corrente
EgtSetCurrentContext(nCtx)
' Ciclo sui pezzi
Dim PartId As Integer = EgtGetFirstPart()
While PartId <> GDB_ID.NULL
' Ciclo sui layer di contorno
Dim bOutLoop As Boolean = True
Dim RegionId As Integer = EgtGetFirstNameInGroup(PartId, NAME_REGION)
While RegionId <> GDB_ID.NULL
' Ciclo sulle regioni
Dim EntId As Integer = EgtGetFirstInGroup(RegionId)
While EntId <> GDB_ID.NULL
EgtSetColor(EntId, InsertColor)
EntId = EgtGetNext(EntId)
End While
RegionId = EgtGetNextName(PartId, NAME_REGION)
End While
' passo al pezzo successico
PartId = EgtGetNextPart(PartId)
End While
' Aggiorno scritte per angoli sui lati
WriteSideAngleForNest(nCtx)
' aggiorno lo stato dell'utlimo colore inserito
Dim sColorString As String = InsertColor.R & "," & InsertColor.G & "," & InsertColor.B & "," & InsertColor.A
WritePrivateProfileString(S_GENERAL, "LastColor", sColorString, m_MainWindow.GetIniFile())
End Sub
Private Sub UseLayerBtn_Click(sender As Object, e As RoutedEventArgs) Handles UseLayerBtn.Click
' Creo i pezzi
Dim nType As Integer = If(m_nFileType = FT.NGE, FPC_TYPE.NGE, FPC_TYPE.LAYER)
@@ -589,6 +638,8 @@ Public Class ImportPageUC
If GetPrivateProfileInt(S_COLORTOENGRAVE, K_CTE_ENABLE, 0, m_MainWindow.GetIniFile()) <> 0 Then
Engrave.ColorToEngrave(ImportScene.GetCtx())
End If
' gestico il colore degli elementi da importare (devono avere una regione definita!
ColorRegion(ImportScene.GetCtx())
' Eseguo zoom
ImportScene.ZoomAll()
' disabilito bottoni UseLayer e UseRegion, abilito bottoni Reset e Insert
@@ -619,6 +670,8 @@ Public Class ImportPageUC
If GetPrivateProfileInt(S_COLORTOENGRAVE, K_CTE_ENABLE, 0, m_MainWindow.GetIniFile()) <> 0 Then
Engrave.ColorToEngrave(ImportScene.GetCtx())
End If
' gestico il colore degli elementi da importare (devono avere una regione definita!
ColorRegion(ImportScene.GetCtx())
' Eseguo zoom
ImportScene.ZoomAll()
' disabilito bottoni UseLayer e UseRegion, abilito bottoni Reset e Insert
@@ -649,6 +702,8 @@ Public Class ImportPageUC
If GetPrivateProfileInt(S_COLORTOENGRAVE, K_CTE_ENABLE, 0, m_MainWindow.GetIniFile()) <> 0 Then
Engrave.ColorToEngrave(ImportScene.GetCtx())
End If
' gestico il colore degli elementi da importare (devono avere una regione definita!
ColorRegion(ImportScene.GetCtx())
' Eseguo zoom
ImportScene.ZoomAll()
' disabilito bottoni UseLayer e UseRegion, abilito bottoni Reset e Insert
+13 -13
View File
@@ -201,7 +201,7 @@ Module SideAngle
Friend Sub ColorToSideAngle(nCtx As Integer)
' Leggo dati corrispondenza colore-angolo
Dim CurrCSA As New ColorSideAngs
CurrCSA.Read( m_MainWindow.GetIniFile)
CurrCSA.Read(m_MainWindow.GetIniFile)
' Imposto contesto corrente
EgtSetCurrentContext(nCtx)
' Ciclo sui pezzi
@@ -212,27 +212,27 @@ Module SideAngle
Dim LoopId As Integer = EgtGetFirstNameInGroup(PartId, NAME_OUTLOOP)
While LoopId <> GDB_ID.NULL
' Ciclo sulle curve
Dim PrevId As Integer = EgtGetLastInGroup( LoopId)
Dim EntId As Integer = EgtGetFirstInGroup( LoopId)
Dim PrevId As Integer = EgtGetLastInGroup(LoopId)
Dim EntId As Integer = EgtGetFirstInGroup(LoopId)
While EntId <> GDB_ID.NULL
Dim NextId As Integer = EgtGetNext( EntId)
If NextId = GDB_ID.NULL Then NextId = EgtGetFirstInGroup( LoopId)
If VerifySideAnglePossible( PrevId, EntId, NextId, bOutLoop) Then
Dim NextId As Integer = EgtGetNext(EntId)
If NextId = GDB_ID.NULL Then NextId = EgtGetFirstInGroup(LoopId)
If VerifySideAnglePossible(PrevId, EntId, NextId, bOutLoop) Then
Dim colEnt As Color3d
If EgtGetColor( EntId, colEnt) Then
If EgtGetColor(EntId, colEnt) Then
Dim dAng As Double
Dim dHeel As Double
If CurrCSA.GetSideAngHeel( colEnt, dAng, dHeel) Then
EgtSetInfo( EntId, INFO_SIDE_ANGLE, dAng)
EgtSetInfo( EntId, INFO_ORIG_SIDE_ANGLE, dAng)
EgtSetInfo( EntId, INFO_HEEL, dHeel)
If CurrCSA.GetSideAngHeel(colEnt, dAng, dHeel) Then
EgtSetInfo(EntId, INFO_SIDE_ANGLE, dAng)
EgtSetInfo(EntId, INFO_ORIG_SIDE_ANGLE, dAng)
EgtSetInfo(EntId, INFO_HEEL, dHeel)
End If
End If
End If
PrevId = EntId
EntId = EgtGetNext( EntId)
EntId = EgtGetNext(EntId)
End While
If bOutLoop then
If bOutLoop Then
bOutLoop = False
LoopId = EgtGetFirstNameInGroup(PartId, NAME_INLOOP)
Else
+4 -2
View File
@@ -3,9 +3,11 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
Title="OpenFile" Height="682.6" Width="426.6" WindowStyle="None" ResizeMode="NoResize" ShowInTaskbar="False" AllowsTransparency="True" Background="Transparent">
Title="OpenFile" Height="682.6" Width="426.6" WindowStyle="None"
ResizeMode="NoResize" ShowInTaskbar="False" AllowsTransparency="True"
Background="Transparent">
<Border Style="{DynamicResource OmagCut_Border}">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
+138
View File
@@ -0,0 +1,138 @@
<Window x:Class="ImportExportToolWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
FontFamily="{DynamicResource OmagCut_Font}"
ResizeMode="NoResize" WindowStyle="None" AllowsTransparency="True" Background="Transparent"
Title="SaveNameWD" Height="350" Width="426.5" ShowInTaskbar="False">
<!--Definizione della pagina di scelta del nome con cui salvare il progetto-->
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="0" Margin="20">
<TreeView ItemsSource="{Binding FamilyList}" Background="{DynamicResource OmagCut_TreeViewBackGroundColor}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type EgtWPFLib5:ImpExpFamily}" ItemsSource="{Binding ToolList}">
<Grid Height="20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding PictureString}" Height="20" Width="20" Margin="0,0,5,0" />
<TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="0,-2,5,0" VerticalAlignment="Center" />
</Grid>
<!-- multibinding quando sono attivi.-->
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" >
<Setter Property="Foreground" Value="{DynamicResource OmagCut_TreeViewTextColor}" />
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="19" Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/>
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1"/>
<Rectangle Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Stretch" VerticalAlignment="Top" Fill="{DynamicResource OmagCut_TreeViewDelimiterColor}" Height="1" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="false">
<Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
</Trigger>
<Trigger Property="HasItems" Value="false">
<Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource OmagCut_TreeViewSelectedItemBackground}" />
<Setter Property="BorderBrush" TargetName="Bd" Value="{DynamicResource OmagCut_TreeViewSelectedItemBorder}"/>
<Setter Property="BorderThickness" TargetName="Bd" Value="1"/>
<!--<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>-->
</Trigger>
<!--<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="false"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</MultiTrigger>-->
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type EgtWPFLib5:ImpExpItem}">
<Grid Height="20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<!--<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Margin="0,8,6,4" />-->
<CheckBox Name="ActiveTxBx" Grid.Column="0" Height="15" Width="15"
Margin="-15,0,5,0" VerticalContentAlignment="Center"
IsChecked="{Binding Active}"
Visibility="{Binding Path=DataContext.Active_Visibility,
RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtCustomWindow}}}"/>
<TextBlock Grid.Column="1" Text="{Binding Name}"
Style="{StaticResource OmagCut_ListBoxTextBlock}" />
</Grid>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</ScrollViewer>
<Grid Grid.Column="1" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="OkBtn" Grid.Row="0" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}"
Margin="5,-10,5,15"
Command="{Binding OkCommand}">
<Image Source="{DynamicResource VImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ExitBtn" Grid.Row="0" Grid.Column="3" Style="{DynamicResource OmagCut_GradientBlueIconButton}"
Margin="5,-10,5,15"
IsCancel="True">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</Window>
+20
View File
@@ -0,0 +1,20 @@
Imports EgtWPFLib5
Public Class ImportExportToolWD
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_ImportExportToolWindowVM As ImportExportToolWindowVM
Sub New(Owner As Window, ImportExportToolWindowVM As ImportExportToolWindowVM)
Me.Owner = Owner
' This call is required by the designer.
InitializeComponent()
Me.DataContext = ImportExportToolWindowVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_ImportExportToolWindowVM = ImportExportToolWindowVM
End Sub
'Private Sub CloseWindow(bDialogResult As Boolean) Handles m_ImportExportToolWindowVM.m_CloseWindow
' Me.DialogResult = bDialogResult
'End Sub
End Class
+5 -1
View File
@@ -434,13 +434,17 @@
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="11*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="NewBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowGradientYellowTextButton}"/>
<Button Name="SaveBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowGradientYellowTextButton}"/>
<Button Name="RemoveBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowGradientYellowTextButton}" Padding="0"/>
<Button Name="ExportBtn" Grid.Column="3" Style="{DynamicResource OmagCut_YellowGradientYellowTextButton}" Padding="0"/>
<Button Name="ImportBtn" Grid.Column="4" Style="{DynamicResource OmagCut_YellowGradientYellowTextButton}" Padding="0"/>
</Grid>
+180 -26
View File
@@ -3,6 +3,7 @@ Imports OmagCUT.TreeViewItem
Imports System.ComponentModel
Imports EgtUILib
Imports EgtWPFLib
Imports EgtWPFLib5
Public Class ToolsDbPageUC
@@ -53,6 +54,8 @@ Public Class ToolsDbPageUC
NewBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 15)
SaveBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 17)
RemoveBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 18)
ExportBtn.Content = "Export"
ImportBtn.Content = "Import"
NameTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 1)
TCPosTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 2)
@@ -239,17 +242,17 @@ Public Class ToolsDbPageUC
Next
' Determino il tipo di utensile
Dim nType As Integer
EgtTdbGetCurrToolParam( MCH_TP.TYPE, nType)
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType)
' Imposto testa e uscita
' Sempre lame su H1.1 e utensili foretto, fresa e mola da scasso su H1.2
If ( nType And MCH_TF.WATERJET) = 0 then
If (nType And MCH_TF.WATERJET) = 0 Then
Dim bSaw As Boolean = ((nType And MCH_TF.SAWBLADE) <> 0)
EgtTdbSetCurrToolParam( MCH_TP.HEAD, "H1")
EgtTdbSetCurrToolParam( MCH_TP.EXIT_, If(bSaw, 1, 2))
' Waterjet sempre su H2.1
EgtTdbSetCurrToolParam(MCH_TP.HEAD, "H1")
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, If(bSaw, 1, 2))
' Waterjet sempre su H2.1
Else
EgtTdbSetCurrToolParam( MCH_TP.HEAD, "H2")
EgtTdbSetCurrToolParam( MCH_TP.EXIT_, 1)
EgtTdbSetCurrToolParam(MCH_TP.HEAD, "H2")
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, 1)
End If
' Per macchine senza ToolChanger, resetto la posizione su questo
If m_CurrMachine.ShowToolChanger = 0 Then
@@ -317,8 +320,8 @@ Public Class ToolsDbPageUC
EgtTdbGetCurrToolParam(MCH_TP.TYPE, CurrType)
For Each ToolFamily As CathegoryItem In ToolsList
If ToolFamily.nTType = CurrType Then
Dim NewToolItem As New CustomItem( NewName, CurrType)
ToolFamily.Items.Add( NewToolItem)
Dim NewToolItem As New CustomItem(NewName, CurrType)
ToolFamily.Items.Add(NewToolItem)
NewToolItem.IsSelected = True
GetToolParams()
m_OldItem = ToolTreeView.SelectedItem
@@ -354,15 +357,15 @@ Public Class ToolsDbPageUC
Dim sItems() As String = sUserNotes.Split(";".ToCharArray)
For i As Integer = 0 To sItems.Count() - 1
If sItems(i).Contains("CODE=") Then
CodeTxBx.Text = sItems(i).Substring( 5)
CodeTxBx.Text = sItems(i).Substring(5)
ElseIf sItems(i).Contains("SUPPL=") Then
SupplierTxBx.Text = sItems(i).Substring( 6)
SupplierTxBx.Text = sItems(i).Substring(6)
ElseIf sItems(i).Contains("S/N=") Then
SerNbrTxBx.Text = sItems(i).Substring( 4)
SerNbrTxBx.Text = sItems(i).Substring(4)
ElseIf sItems(i).Contains("END=") Then
EndLifeChBx.IsChecked = True
m_sEndLife = sItems(i).Substring( 4)
ElseIf Not String.IsNullOrWhiteSpace(sItems(i))
m_sEndLife = sItems(i).Substring(4)
ElseIf Not String.IsNullOrWhiteSpace(sItems(i)) Then
sToShow &= sItems(i) & ";"
End If
Next
@@ -383,7 +386,7 @@ Public Class ToolsDbPageUC
sUserNotes &= "SUPPL=" & SupplierTxBx.Text & ";"
sUserNotes &= "S/N=" & SerNbrTxBx.Text & ";"
If EndLifeChBx.IsChecked Then
If String.IsNullOrWhiteSpace( m_sEndLife) Then
If String.IsNullOrWhiteSpace(m_sEndLife) Then
m_sEndLife = My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH:mm:ss")
End If
sUserNotes &= "END=" & m_sEndLife & ";"
@@ -479,18 +482,169 @@ Public Class ToolsDbPageUC
End If
End Sub
Private Sub ExportBtn_Click(Sender As Object, e As RoutedEventArgs) Handles ExportBtn.Click
' contesto corrente
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' creo lista utensili per esportazione
Dim ToolToExportList = New ObservableCollection(Of ImpExpFamily)
Dim Family As CathegoryItem
Dim Tool As CustomItem
For Each Family In ToolsList
Dim ImpExpFamily As New ImpExpFamily(Family.Name, Family.nTType)
ImpExpFamily.PictureString = "/Resources/ToolsTreeviewImages/Folder.png"
For Each Tool In Family.Items
Dim CurrTool = New ImpExpItem(Tool.Name, False)
ImpExpFamily.ToolList.Add(CurrTool)
Next
ToolToExportList.Add(ImpExpFamily)
Next
Dim ExportWndVM As New ImportExportToolWindowVM(ToolToExportList)
Dim ExportWnd As New ImportExportToolWD(Application.Current.MainWindow, ExportWndVM)
ExportWnd.ShowDialog()
End Sub
Private Sub ImportBtn_Click(Sender As Object, e As RoutedEventArgs) Handles ImportBtn.Click
' contesto corrente
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' apro dialogo di scelta file
Dim ImportFileDlg As New Microsoft.Win32.OpenFileDialog() With {
.Title = EgtMsg(31161) & " " & EgtMsg(31163),
.DefaultExt = ".data",
.Filter = "Tools (.data)|*.data",
.CheckFileExists = True,
.ValidateNames = True
}
If ImportFileDlg.ShowDialog() <> True Then Return
Dim ImportFilePath As String = ImportFileDlg.FileName
' recupero liste utensili da importare
Dim ImportFileToolNameList As String() = Nothing
Dim ImportFileToolFamilyList As Integer() = Nothing
EgtTdbToBeImported(ImportFilePath, ImportFileToolNameList, ImportFileToolFamilyList)
' li inserisco in lista per finestra di scelta
Dim ToolToImportList As New ObservableCollection(Of ImpExpFamily)
' creo famiglie di utensili in base a quelle trovate in lista importata
For ToolIndex As Integer = 0 To ImportFileToolNameList.Count - 1
Dim ToolName As String = ImportFileToolNameList(ToolIndex)
Dim ToolFamily As Integer = ImportFileToolFamilyList(ToolIndex)
ToolFamily = ToolFamily And
(MCH_TF.DRILLBIT Or
MCH_TF.SAWBLADE Or
MCH_TF.MILL Or
MCH_TF.MORTISE Or
MCH_TF.CHISEL Or
MCH_TF.WATERJET Or
MCH_TF.COMPO)
Dim bFounded As Boolean = False
Dim ToolToImportFamily As ImpExpFamily
For Each ToolToImportFamily In ToolToImportList
If (ToolFamily = ToolToImportFamily.FamilyType) Then
ToolToImportFamily.ToolList.Add(New ImpExpItem(ToolName, AlreadyExist(ToolName)))
bFounded = True
Exit For
End If
Next
If Not bFounded Then
Dim NewFamily As New ImpExpFamily(GetToolFamilyName(ToolFamily), ToolFamily)
NewFamily.ToolList.Add(New ImpExpItem(ToolName, AlreadyExist(ToolName)))
ToolToImportList.Add(NewFamily)
End If
Next
Dim ImportWndVM As New ImportExportToolWindowVM(ToolToImportList, ImportFilePath, ImportFileToolNameList)
Dim ImportWnd As New ImportExportToolWD(Application.Current.MainWindow, ImportWndVM)
If ImportWnd.ShowDialog() Then
' Aggiungo all'albero visualizzato gli utensili appena importati
LoadImportedMachineTools(ImportWndVM.vsImported)
End If
End Sub
Private Function AlreadyExist(ToolName As String) As Boolean
Dim ToolFamily As CathegoryItem
For Each ToolFamily In ToolsList
Dim ToolItem As CustomItem
For Each ToolItem In ToolFamily.Items
If ToolName = ToolItem.Name Then
Return True
End If
Next
Next
Return False
End Function
Private Function GetToolFamilyName(NewToolFamily As Integer) As String
Dim ToolFamily As CathegoryItem
For Each ToolFamily In ToolsList
If NewToolFamily = ToolFamily.nTType Then
Return ToolFamily.Name
End If
Next
Return ""
End Function
Private Sub LoadImportedMachineTools(vsImportedTools As String())
' Leggo tutti gli utensili presenti nella Macchina (quindi anche quelli appena importati).
Dim ActiveToolsFamilies() As ToolsFamily = MachineUtility.ReadToolFamilies(m_CurrMachine.sMachIniFile)
Dim ToolsFamilyIndex As Integer = 0
Dim ToolsFamilyItem As ToolsFamily
For Each ToolsFamilyItem In ActiveToolsFamilies
Dim FamilyTreeView As New CathegoryItem(ToolsFamilyItem.Name, ToolsFamilyItem.Id)
Dim ToolFamilyItem = ToolsList.FirstOrDefault(Function(ToolFamily) ToolsFamilyItem.Id = FamilyTreeView.nTType)
If IsNothing(ToolFamilyItem) Then
ToolsList.Insert(ToolsFamilyIndex, FamilyTreeView)
End If
Dim nType As Integer = 0
Dim ToolName As String = String.Empty
Dim ToolIndex As Integer = 0
EgtSetCurrentContext(ToolScene.GetCtx())
If EgtTdbGetFirstTool(ToolsFamilyItem.Id, ToolName, nType) Then
Dim ToolItem = ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName)
If IsNothing(ToolItem) Then
' Se leggo un utensile non presente nella ToolsList visualizzata lo aggiungo ad essa.
Dim NewToolName As New CustomItem(ToolName, nType)
ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName)
ElseIf vsImportedTools.Contains(ToolName) Then
' Se un utensile è presente nella ToolsList visualizzata ma nel contempo è nell'array vsImported
' vuol dire che è stato sovrascritto perciò lo rimuovo e lo riaggiungo alla ToolsList.
ToolsList(ToolsFamilyIndex).Items.Remove(ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName))
Dim NewToolName As New CustomItem(ToolName, nType)
ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName)
End If
ToolIndex += 1
While EgtTdbGetNextTool(ToolsFamilyItem.Id, ToolName, nType)
ToolItem = ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName)
If IsNothing(ToolItem) Then
' Se leggo un utensile non presente nella ToolsList visualizzata lo aggiungo ad essa.
Dim NewToolName As New CustomItem(ToolName, nType)
ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName)
ElseIf vsImportedTools.Contains(ToolName) Then
' Se un utensile è presente nella ToolsList visualizzata ma nel contempo è nell'array vsImported
' vuol dire che è stato sovrascritto perciò lo rimuovo e lo riaggiungo alla ToolsList.
ToolsList(ToolsFamilyIndex).Items.Remove(ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName))
Dim NewToolName As New CustomItem(ToolName, nType)
ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName)
End If
ToolIndex += 1
End While
End If
ToolsFamilyIndex += 1
Next
End Sub
Friend Sub InitializeToolGroup(bEnabled As Boolean, nTType As Integer, sFName As String)
If Not bEnabled Then Return
' Inserisco categoria ed eventuali elementi
Dim ToolCathegory As New CathegoryItem( sFName, nTType)
Dim ToolCathegory As New CathegoryItem(sFName, nTType)
Dim nType As Integer = 0
Dim ToolName As String = String.Empty
Dim bFound As Boolean = EgtTdbGetFirstTool( nTType, ToolName, nType)
Dim bFound As Boolean = EgtTdbGetFirstTool(nTType, ToolName, nType)
While bFound
If nType = nTType Then ToolCathegory.Items.Add( New CustomItem( ToolName, nType))
bFound = EgtTdbGetNextTool( nTType, ToolName, nType)
If nType = nTType Then ToolCathegory.Items.Add(New CustomItem(ToolName, nType))
bFound = EgtTdbGetNextTool(nTType, ToolName, nType)
End While
ToolsList.Add( ToolCathegory)
ToolsList.Add(ToolCathegory)
End Sub
Private Sub GetToolParams()
@@ -545,7 +699,7 @@ Public Class ToolsDbPageUC
HeadTxBx.Text = ToolString
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, ToolInt)
ExitTxBx.Text = ToolInt.ToString()
if Not GetSpecials() Then
If Not GetSpecials() Then
EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, ToolString)
UserNotesTxBx.Text = ToolString
End If
@@ -601,7 +755,7 @@ Public Class ToolsDbPageUC
EgtTdbSetCurrToolParam(MCH_TP.HEAD, HeadTxBx.Text)
Int32.TryParse(ExitTxBx.Text, nTemp)
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nTemp)
if Not SetSpecials() Then
If Not SetSpecials() Then
EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, UserNotesTxBx.Text)
End If
End Sub
@@ -637,7 +791,7 @@ Public Class ToolsDbPageUC
Dim bShowUserNotes As Boolean = ((m_nToolType = MCH_TY.SAW_STD And m_CurrMachine.ShowUserNotes <> 0) Or m_CurrMachine.ShowUserNotes = 1)
UserNotesTxBl.Visibility = If(bShowUserNotes, Windows.Visibility.Visible, Windows.Visibility.Hidden)
UserNotesTxBx.Visibility = If(bShowUserNotes, Windows.Visibility.Visible, Windows.Visibility.Hidden)
Dim bShowSpecials As Boolean = ((m_nToolType = MCH_TY.SAW_STD And m_CurrMachine.ShowSpecials <> 0) Or m_CurrMachine.ShowSpecials = 1)
Dim bShowSpecials As Boolean = ((m_nToolType = MCH_TY.SAW_STD And m_CurrMachine.ShowSpecials <> 0) Or m_CurrMachine.ShowSpecials = 1)
SerNbrTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden)
SerNbrTxBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden)
CodeTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden)
@@ -776,7 +930,7 @@ Public Class ToolsDbPageUC
Private Sub RecreateToolDraw(ByVal dVal As Double)
' Salvo il vecchio valore
Dim dOldVal As Double
GetVariableValue( dOldVal)
GetVariableValue(dOldVal)
' Aggiorno dati utensile
SetVariableValue(dVal)
' Creo utensile
@@ -1004,7 +1158,7 @@ Public Class ToolsDbPageUC
End Function
Private Function CreateToolDraw() As Boolean
Dim nErr As Integer = EgtTdbCurrToolDraw( m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx(), ToolScene.GetCtx())
Dim nErr As Integer = EgtTdbCurrToolDraw(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx(), ToolScene.GetCtx())
EgtSetCurrentContext(ToolScene.GetCtx())
Return (nErr = 0)
End Function
@@ -1057,4 +1211,4 @@ Public Class ToolsDbPageUC
End If
End Sub
End Class
End Class
+2 -2
View File
@@ -62,5 +62,5 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.3.9.1")>
<Assembly: AssemblyFileVersion("2.3.9.1")>
<Assembly: AssemblyVersion("2.3.9.5")>
<Assembly: AssemblyFileVersion("2.3.9.5")>
+12 -7
View File
@@ -326,20 +326,23 @@ Public Class CNCommunication
m_CN.SetCnDataVar(CN_generico.CnData.BypassState, sVal)
' nuove variabili: stato dei nuovi pulsanti
m_IsNewConsole = GetPrivateProfileString(S_NCDATA, K_NEWCONSOLE, "", sVal, m_MainWindow.GetMachIniFile())
GetPrivateProfileString(S_NCDATA, K_NEWCONSOLE, "", sVal, m_MainWindow.GetMachIniFile())
m_IsNewConsole = (sVal = 1)
If m_IsNewConsole Then
GetPrivateProfileString(S_NCDATA, K_XYJOG, "", sVal, m_MainWindow.GetMachIniFile())
m_CN.SetCnDataVar(CN_generico.CnData.XYJog, sVal)
If Not String.IsNullOrEmpty(sVal) Then m_CN.SetCnDataVar(CN_generico.CnData.XYJog, sVal)
GetPrivateProfileString(S_NCDATA, K_ZCJOG, "", sVal, m_MainWindow.GetMachIniFile())
m_CN.SetCnDataVar(CN_generico.CnData.ZCJog, sVal)
If Not String.IsNullOrEmpty(sVal) Then m_CN.SetCnDataVar(CN_generico.CnData.ZCJog, sVal)
GetPrivateProfileString(S_NCDATA, K_ZBJOG, "", sVal, m_MainWindow.GetMachIniFile())
m_CN.SetCnDataVar(CN_generico.CnData.ZBJog, sVal)
If Not String.IsNullOrEmpty(sVal) Then m_CN.SetCnDataVar(CN_generico.CnData.ZBJog, sVal)
GetPrivateProfileString(S_NCDATA, K_POWERON, "", sVal, m_MainWindow.GetMachIniFile())
m_CN.SetCnDataVar(CN_generico.CnData.PowerON, sVal)
If Not String.IsNullOrEmpty(sVal) Then m_CN.SetCnDataVar(CN_generico.CnData.PowerON, sVal)
GetPrivateProfileString(S_NCDATA, K_REMOTE, "", sVal, m_MainWindow.GetMachIniFile())
If Not String.IsNullOrEmpty(sVal) Then m_CN.SetCnDataVar(CN_generico.CnData.Remote, sVal)
End If
' Inizializzo la comunicazione
m_CN.Init()
' Inizializzo la comunicazione
m_CN.Init()
Catch ex As Exception
' set status to statusbar
@@ -558,6 +561,7 @@ Public Class CNCommunication
m_MainWindow.m_DirectCutPageUC.XYJogChanged(m_CN.bXYJog)
m_MainWindow.m_DirectCutPageUC.ZCJogChanged(m_CN.bZCJog)
m_MainWindow.m_DirectCutPageUC.ZBJogChanged(m_CN.bZBCJog)
m_MainWindow.m_DirectCutPageUC.RemoteChanged(m_CN.bRemote)
End If
Else
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.SpindleStateChanged(m_CN.bSpindleState)
@@ -578,6 +582,7 @@ Public Class CNCommunication
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.XYJogChanged(m_CN.bXYJog)
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.ZJogChanged(m_CN.bZCJog)
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.BCJogChanged(m_CN.bZBCJog)
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.RemoteChanged(m_CN.bRemote)
End If
End If
+3 -1
View File
@@ -8,7 +8,7 @@ Public MustInherit Class CN_generico
Public Const MAX_VAR As Short = 100
Public Const MAX_VALUES As Short = 9 ' Max. index to read the data from the FXServer array
Public Const MAX_TOOLS As Short = 100
Public Const NUM_DATA = 51 ' Numero di dati del CN (Speed,Feed,...)
Public Const NUM_DATA = 52 ' Numero di dati del CN (Speed,Feed,...)
Public m_NewVariable As Boolean = False ' per scrittura delle vairbaili Apllication del PLC
@@ -65,6 +65,7 @@ Public MustInherit Class CN_generico
ZCJog = 48
ZBJog = 49
PowerON = 50
Remote = 51
End Enum
#End Region
@@ -205,6 +206,7 @@ Public MustInherit Class CN_generico
Public bZBCJog As Boolean
Public bPowerON As Boolean
Public bRemote As Boolean
' Nuovi di bottoni -------------------------------------------
Public nMachineMode As Integer
+3 -1
View File
@@ -236,7 +236,7 @@ Namespace Num
' Detect and identify the Flexium CNC type
sz_CncFxIdentifier = objDMainCncData.GetCncIdentifier()
' _txtGetCncIdentification.Invoke(DirectCast(Sub() _txtGetCncIdentification.Text = CncFxIdentifier, MethodInvoker))
EgtOutLog("Modello Flexium: " & sz_CncFxIdentifier)
If sz_CncFxIdentifier = "Flexium 6" OrElse sz_CncFxIdentifier = "Flexium 8" OrElse sz_CncFxIdentifier = "Flexium 68" Then
IsFlexiumPlus = False
Else
@@ -1085,6 +1085,8 @@ Namespace Num
bZBCJog = CBool(values(n))
Case CnData.PowerON ' (49)
bPowerON = CBool(values(n))
Case CnData.Remote ' (50)
bRemote = CBool(values(n))
End Select
Next
+6 -5
View File
@@ -196,6 +196,9 @@
<DependentUpon>CadCutPageUC.xaml</DependentUpon>
</Compile>
<Compile Include="CAM\CamAuto.vb" />
<Compile Include="Machine\ImportExportToolWD.xaml.vb">
<DependentUpon>ImportExportToolWD.xaml</DependentUpon>
</Compile>
<Compile Include="Project\StartLauncheWD.xaml.vb">
<DependentUpon>StartLauncheWD.xaml</DependentUpon>
</Compile>
@@ -431,6 +434,9 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Machine\ImportExportToolWD.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Project\StartLauncheWD.xaml">
</Page>
<Page Include="Project\CicloStartWD.xaml">
@@ -742,7 +748,6 @@
<ItemGroup>
<Resource Include="Resources\AvantiVeloce.png" />
<Resource Include="Resources\IndietroVeloce.png" />
<Resource Include="Resources\NewIcons\ZCJog.png" />
<Resource Include="Resources\Pause.png" />
<Resource Include="Resources\Play.png" />
</ItemGroup>
@@ -1041,10 +1046,6 @@
<ItemGroup>
<Resource Include="Resources\NewIcons\SlabId.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\XYJog.png" />
<Resource Include="Resources\NewIcons\ZBJog.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Nuovo.png" />
</ItemGroup>
+2 -2
View File
@@ -458,7 +458,7 @@ Public Class CurrentProjectPageUC
Return True
End Function
Friend Function AdjustAdditionalTable() As Boolean
Friend Function AdjustAdditionalTable( Optional bForced As Boolean = False) As Boolean
' Recupero altezza sottotavola corrente
Dim nFixtId As Integer = EgtGetFirstNameInGroup(EgtGetFirstMachGroup(), MACH_FIXT_GROUP)
Dim nAddTabId As Integer = EgtGetFirstNameInGroup(nFixtId, MACH_ADD_TABLE)
@@ -470,7 +470,7 @@ Public Class CurrentProjectPageUC
End If
' Se valore cambiato, aggiorno...
Dim dDeltaZ As Double = m_MainWindow.m_CurrentMachine.dAdditionalTable - dCurrAddTab
If Math.Abs(dDeltaZ) > EPS_SMALL Then
If Math.Abs(dDeltaZ) > EPS_SMALL Or bForced Then
AddAdditionalTable()
UpdateAllRawsZ(dDeltaZ)
If GetPhoto() <> GDB_ID.NULL Then
+5 -2
View File
@@ -479,8 +479,11 @@ Public Class ProjectMgrUC
End If
'-------------------Avvio il Ciclo-Start-------------------------
Dim MyCicloStartWD As New CicloStartWD(m_MainWindow)
MyCicloStartWD.ShowDialog()
If GetPrivateProfileInt(S_GENERAL, "StartProgram", 0, m_MainWindow.GetIniFile()) <> 0 Then
Dim MyCicloStartWD As New CicloStartWD(m_MainWindow)
MyCicloStartWD.ShowDialog()
End If
'-------------------Avvio il Ciclo-Start-------------------------
' Altrimenti linea di produzione
+2 -2
View File
@@ -1562,7 +1562,7 @@ Public Class RawPartPageUC
StringToLen(WidthTxBx.Text, m_RawWidth)
StringToLen(OffsetXTxBx.Text, m_RawOffsX)
StringToLen(OffsetYTxBx.Text, m_RawOffsY)
UpdateRawPart()
' UpdateRawPart()
UpdateRawPartKerf()
' Recupero id contorno kerf
Dim nKerfId As Integer = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_KERF)
@@ -1587,7 +1587,7 @@ Public Class RawPartPageUC
m_RawOffsX = m_RawOffsX - m_RawKerf
StringToLen(OffsetYTxBx.Text, m_RawOffsY)
m_RawOffsY = m_RawOffsY - m_RawKerf
UpdateRawPart()
' UpdateRawPart()
m_RawKerf = -m_RawKerf
UpdateRawPartKerf()
' Recupero id contorno kerf
Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

+11 -5
View File
@@ -10,15 +10,21 @@
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical">
<Button Name="NewBtn" Height="64"
<StackPanel Orientation="Vertical">
<Button Name="NewBtn" Height="64"
Style="{DynamicResource OmagCut_YellowTextButton}"
Content="New"/>
<Button Name="ExportBtn" Height="64"
<Button Name="ExportBtn" Height="64"
Style="{DynamicResource OmagCut_YellowTextButton}"
Content="Export"/>
</StackPanel>
<Button Name="AssemblyBtn" Height="64"
Style="{DynamicResource OmagCut_YellowTextButton}"
Content="3D"/>
<Button Name="ImportCurrProjBtn" Height="64"
Style="{DynamicResource OmagCut_YellowTextButton}"
Content="Import"/>
</StackPanel>
</Grid>
</Grid>
</Window>
+462 -1
View File
@@ -1,5 +1,6 @@
Imports System.IO
Imports System.Windows.Interop
Imports System.Collections.ObjectModel
Imports System.Runtime.InteropServices
Imports EgtUILib
Imports EgtWPFLib
@@ -89,6 +90,7 @@ Public Class VeinMatchingWindow
End If
End Sub
' imposto le dimensioni e la posizione della pagina corrente
Friend Sub AdjustPosition()
' Se già pozizionata, esco subito
If m_bPositioned Then Return
@@ -196,9 +198,20 @@ Public Class VeinMatchingWindow
VeinMatching.Export(m_MainWindow.GetVeinMatchingDir() & "\Image.jpg")
End Sub
Private Sub AssemblyBtn_Click(sender As Object, e As RoutedEventArgs) Handles AssemblyBtn.Click
Dim ThicknessRaw As Double = m_MainWindow.m_CurrentProjectPageUC.m_dRawHeight
VeinMatching.AssemblyParts(ThicknessRAw)
End Sub
Private Sub ImportCurrProjBtn_Click(sender As Object, e As RoutedEventArgs) Handles ImportCurrProjBtn.Click
VeinMatching.LoadCurrPartFromProj()
End Sub
End Class
Friend Module VeinMatching
' creo la lista delle alzatine, ad ogni alzatina associo anche il lato del piano cucina (e non solo) a cui si riferisce
Private m_ListALZFront As New ObservableCollection(Of Aletta)
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
@@ -246,6 +259,124 @@ Friend Module VeinMatching
Return True
End Function
' aggiungo il disegno nel VeinMatch
Friend Function SetRefOnPart(nId As Integer) As Boolean
' Si opera nel contesto corrente (CurrentProjectScene.GetCtx())
' Verifico validità identificativo oggetto
If nId = GDB_ID.NULL Then Return False
' Recupero gruppo regione
Dim nRegLayId As Integer = EgtGetFirstNameInGroup(nId, NAME_REGION)
' Se c'è già il riferimento, esco
If EgtGetFirstNameInGroup(nRegLayId, REF_NAME) <> GDB_ID.NULL Then Return True
' Entità superficie regione piatta
Dim nRegId As Integer = EgtGetFirstInGroup(nRegLayId)
While nRegId <> GDB_ID.NULL
If EgtGetType(nRegId) = GDB_TY.SRF_FRGN Then
Exit While
End If
nRegId = EgtGetNext(nRegId)
End While
' Ne recupero il centroide
Dim ptCen As Point3d
EgtCentroid(nRegId, GDB_ID.ROOT, ptCen)
' Inserisco il riferimento
Dim frRef As New Frame3d(ptCen)
Dim nRefId As Integer = EgtCreateGeoFrame(nRegLayId, frRef, GDB_RT.GLOB)
EgtSetName(nRefId, REF_NAME)
' salvo nelle info il riferimento originale
EgtSetInfo(nRefId, KEY_ORI_REF, frRef)
' nascondo l'oggetto appena inserito
EgtSetMode(nRefId, GDB_MD.HIDDEN)
Return True
End Function
' ------------------- ELENCO FUNZIONI PER GESTIONE ALZATINE E FRONTALINI -------------------
' genero la lista delle alzatine dei frontalini
Friend Function CreateListAlzAndFront() As Boolean
EgtSetCurrentContext(m_nVeinCtx)
Dim nId As Integer = EgtGetFirstPart()
While nId <> GDB_ID.NULL
' verifico che il pezzo sia una alzatina
Dim sInfoName As String = String.Empty
EgtGetInfo(nId, "CMP", sInfoName)
If sInfoName = "AlzFront" Then
Dim AlzFront As New Aletta(nId)
m_ListALZFront.Add(AlzFront)
End If
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
Return True
End Function
' genero la lista dei piani cucina
Friend Function LinkReferencesOnAlette() As Boolean
Dim nId As Integer = EgtGetFirstPart()
While nId <> GDB_ID.NULL
' escludo dalla ricerca le alette
Dim sCMP As String = String.Empty
EgtGetInfo(nId, "CMP", sCMP)
If sCMP = "AlzFront" Then
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
Continue While
End If
' Recupero gruppo regione
Dim nOutLoopLayId As Integer = EgtGetFirstNameInGroup(nId, NAME_OUTLOOP)
' Entità lato
Dim nSideId As Integer = EgtGetFirstInGroup(nOutLoopLayId)
While nSideId <> GDB_ID.NULL
Dim sInfoGUID As String = String.Empty
EgtGetInfo(nSideId, "RefAF", sInfoGUID)
If Not String.IsNullOrEmpty(sInfoGUID) Then
Dim Item As Aletta
For Each Item In m_ListALZFront
If Item.RefGUID = sInfoGUID Then
Item.IdSideRef = nSideId
End If
Next
' ricerco nella lista delle alette il suo
End If
nSideId = EgtGetNext(nSideId)
End While
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
Return True
End Function
' ------------------- ELENCO FUNZIONI PER GESTIONE ALZATINE E FRONTALINI -------------------
' ------------------- CARICO I PEZZI PRESENTI NEL PROGETTO CORRENTE -------------------
' carico tutti i pezzi del progetto corrente che sonon di tipo PCucina, PBagno, AlzFront
Friend Function LoadCurrPartFromProj() As Boolean
' Recupero flag per inserimento diretto in grezzo (altrimenti in parcheggio)
Dim bDirect As Boolean = (GetPrivateProfileInt(S_NEST, K_DIRECT, 0, m_MainWindow.GetIniFile()) <> 0)
Dim nId As Integer = EgtGetFirstPart()
While nId <> GDB_ID.NULL
Dim sCMP As String = String.Empty
EgtGetInfo(nId, "CMP", sCMP)
If sCMP.StartsWith("PCucina") Or sCMP.StartsWith("PBagno") Or sCMP.StartsWith("AlzFront") Then
' lo inserisco nel VienMatch
' Aggiungo riferimento e lo inserisco in VeinMatching
VeinMatching.SetRefOnPart(nId)
VeinMatching.AddPartFromDraw(nId, True)
' Se richiesto posizionamento diretto, lo eseguo
If bDirect Then
If m_MainWindow.m_CadCutPageUC.m_NestPage.InsertOnePart(nId) Then
' Eventuale notifica al VeinMatching
VeinMatching.OnInsertPartInRaw(nId)
End If
End If
End If
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
Return True
End Function
' ------------------- CARICO I PEZZI PRESENTI NEL PROGETTO CORRENTE -------------------
Friend Function Clear() As Boolean
' Verifico esista il contesto del VeinMatching
If m_nVeinCtx = 0 Then Return True
@@ -322,6 +453,31 @@ Friend Module VeinMatching
Return True
End Function
' Questa funzione gestisce l'insermento dei pezzi disgenatoi direttamente in DrawPage
Friend Function AddPartFromDraw(nPartId As Integer, Optional bPack As Boolean = False) As Boolean
' Verifico esista il contesto del VeinMatching
If m_nVeinCtx = 0 Then Return True
' Se esiste già il pezzo nel VM, esco
If GetVeinPartId(nPartId) <> GDB_ID.NULL Then Return True
' Verifico validità pezzo
If nPartId = GDB_ID.NULL Then Return False
' Salvo il pezzo su file temporaneo
Dim sTmpDir As String = String.Empty
If Not EgtGetTempDir(sTmpDir) Then Return False
Dim sTmpFile As String = sTmpDir & "\FlatPartVme.Nge"
EgtSaveObjToFile(nPartId, sTmpFile, NGE.BIN)
' Carico il file nel VM
Dim bOk As Boolean = My.Computer.FileSystem.FileExists(sTmpFile)
If bOk Then
bOk = AddPart(sTmpFile, nPartId)
' Ne aggiorno la visualizzazione
ZoomAll()
' Cancello il file
My.Computer.FileSystem.DeleteFile(sTmpFile)
End If
Return bOk
End Function
Friend Function UpdatePart(nPartId As Integer) As Boolean
' Verifico esista il contesto del VeinMatching
If m_nVeinCtx = 0 Then Return True
@@ -481,7 +637,257 @@ Friend Module VeinMatching
Return bFound
End Function
Friend Function OnSelectAll() As Boolean
Friend Function AssemblyParts(ByVal ThicknessRaw As Double) As Boolean
CreateListAlzAndFront()
LinkReferencesOnAlette()
EgtSetCurrentContext(m_nVeinCtx)
Dim Item As Aletta
For Each Item In m_ListALZFront
Dim nType As Integer
EgtGetInfo(Item.IdSideRef, "AF", nType)
If nType = 1 Then
If Not CreateAlzatina(Item, ThicknessRaw) Then Return False
ElseIf nType = 2 Then
If Not CreateFrontalino(Item, ThicknessRaw) Then Return False
Else
Return False
End If
Next
Draw()
Return True
End Function
Friend Function CreateAlzatina(ByRef Item As Aletta, ByRef ThicknessRaw As Double) As Boolean
' inizio a posizionare i pezzi nel piano nella posizione corretta pronti per essere ruotati
Dim ptSRef As Point3d
Dim ptERef As Point3d
Dim ptE As Point3d
If Not EgtStartPoint(Item.IdSideRef, GDB_ID.ROOT, ptSRef) Then Return False
If Not EgtEndPoint(Item.IdSideRef, GDB_ID.ROOT, ptERef) Then Return False
If Not EgtEndPoint(Item.SideId, GDB_ID.ROOT, ptE) Then Return False
Dim vtMove As Vector3d = ptSRef - ptE
EgtMove(Item.PartId, vtMove, GDB_RT.GLOB)
' ruoto i pezzi
Dim vtRot As Vector3d = ptERef - ptSRef
EgtRotate(Item.PartId, ptSRef, vtRot, -90, GDB_RT.GLOB)
' costruisco il solido
Dim ptForPos As Point3d
If Not CreateSolid(Item, ThicknessRaw, ptForPos) Then Return False
' posiziono il solido
Dim vtMove2 As Vector3d = ptERef - ptForPos
EgtMove(Item.PartId, vtMove2, GDB_RT.GLOB)
Return True
End Function
Friend Function CreateFrontalino(ByRef Item As Aletta, ByRef ThicknessRaw As Double) As Boolean
' inizio a posizionare i pezzi nel piano nella posizione corretta pronti per essere ruotati
Dim ptSRef As Point3d
Dim ptERef As Point3d
Dim ptE As Point3d
If Not EgtStartPoint(Item.IdSideRef, GDB_ID.ROOT, ptSRef) Then Return False
If Not EgtEndPoint(Item.IdSideRef, GDB_ID.ROOT, ptERef) Then Return False
If Not EgtEndPoint(Item.SideId, GDB_ID.ROOT, ptE) Then Return False
Dim vtMove As Vector3d = ptSRef - ptE
EgtMove(Item.PartId, vtMove, GDB_RT.GLOB)
' ruoto i pezzi
Dim vtRot As Vector3d = ptERef - ptSRef
EgtRotate(Item.PartId, ptSRef, vtRot, 90, GDB_RT.GLOB)
' costruisco il solido
Dim ptForPos As Point3d
If Not CreateSolid2(Item, ThicknessRaw, ptForPos) Then Return False
Return True
End Function
Friend Function CreateSolid(ByRef Item As Aletta, ByRef ThicknessRaw As Double, ByRef ptForPos As Point3d) As Boolean
Dim bInvertAngle As Boolean = False
' punti che delimitano front face
Dim pt1, pt2, pt3, pt4 As Point3d
EgtStartPoint(Item.SideId + 2, pt4)
EgtEndPoint(Item.SideId + 2, pt3)
pt2 = pt3 - ThicknessRaw * Vector3d.Z_AX()
pt1 = pt4 - ThicknessRaw * Vector3d.Z_AX()
Dim dAngL, dAngR As Double
EgtGetInfo(Item.SideId + 1, "SideAng", dAngL)
EgtGetInfo(Item.SideId + 3, "SideAng", dAngR)
If bInvertAngle Then
dAngL *= -1
dAngR *= -1
End If
If Math.Abs(dAngL - 90) < EPS_SMALL Or Math.Abs(dAngL + 90) < EPS_SMALL Then dAngL = 0
If Math.Abs(dAngR - 90) < EPS_SMALL Or Math.Abs(dAngR + 90) < EPS_SMALL Then dAngR = 0
' aggiungo tagli inclinati
pt3 = pt3 + ThicknessRaw * Math.Tan(dAngR * Math.PI / 180) * Vector3d.X_AX()
pt4 = pt4 - ThicknessRaw * Math.Tan(dAngL * Math.PI / 180) * Vector3d.X_AX()
' punti che delimitano back face
Dim HeightRaw As Double
EgtCurveLength(Item.SideId + 1, HeightRaw)
Dim ptB1 As Point3d = pt1 - HeightRaw * Vector3d.Y_AX()
Dim ptB2 As Point3d = pt2 - HeightRaw * Vector3d.Y_AX()
Dim ptB3 As Point3d = pt3 - HeightRaw * Vector3d.Y_AX()
Dim ptB4 As Point3d = pt4 - HeightRaw * Vector3d.Y_AX()
' info aux per disegnare solido
Dim nOutloopGrp As Integer = EgtGetFirstGroupInGroup(Item.PartId)
Dim nRegionGrp As Integer = EgtGetNextGroup(nOutloopGrp)
Dim cCol As New Color3d
EgtGetColor(EgtGetFirstInGroup(nRegionGrp), cCol)
EgtSetColor(nRegionGrp, cCol)
'nascondo oggetti dalla visualizzazione
EgtSetStatus(Item.SideId, 0)
EgtSetStatus(Item.SideId + 1, 0)
EgtSetStatus(Item.SideId + 2, 0)
EgtSetStatus(Item.SideId + 3, 0)
EgtSetStatus(EgtGetFirstInGroup(nRegionGrp), 0)
' Front Face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {pt1, pt2, pt3, pt4}) Then Return False
' Back Face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB1, ptB4, ptB3, ptB2}) Then Return False
'Front face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB1, ptB2, pt2, pt1}) Then Return False
'Bottom face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB3, ptB4, pt4, pt3}) Then Return False
' Right face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB1, pt1, pt4, ptB4}) Then Return False
' Left face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB2, ptB3, pt3, pt2}) Then Return False
' punto da utilizzare come riferimento per posizionare il solido ( espresso nel sistema di riferimento globale)
ptForPos = ptB2
Dim ItemFrame As New Frame3d
If Not EgtGetGroupGlobFrame(nOutloopGrp, ItemFrame) Then Return False
ptForPos.ToGlob(ItemFrame)
Return True
End Function
Friend Function CreateSolid2(ByRef Item As Aletta, ByRef ThicknessRaw As Double, ByRef ptForPos As Point3d) As Boolean
Dim bInvertAngle As Boolean = False
' punti che delimitano front face
Dim pt1, pt2, pt3, pt4 As Point3d
EgtStartPoint(Item.SideId, pt4)
EgtEndPoint(Item.SideId, pt3)
pt2 = pt3 - ThicknessRaw * Vector3d.Z_AX()
pt1 = pt4 - ThicknessRaw * Vector3d.Z_AX()
Dim dAngL, dAngR, dAng As Double
EgtGetInfo(Item.SideId + 1, "SideAng", dAngR)
EgtGetInfo(Item.SideId + 3, "SideAng", dAngL)
EgtGetInfo(Item.SideId, "SideAng", dAng)
If bInvertAngle Then
dAngL *= -1
dAngR *= -1
End If
If Math.Abs(dAngL - 90) < EPS_SMALL Or Math.Abs(dAngL + 90) < EPS_SMALL Then dAngL = 0
If Math.Abs(dAngR - 90) < EPS_SMALL Or Math.Abs(dAngR + 90) < EPS_SMALL Then dAngR = 0
' aggiungo tagli inclinati
pt2 = pt2 + ThicknessRaw * Math.Tan(dAngR * Math.PI / 180) * Vector3d.X_AX()
pt1 = pt1 - ThicknessRaw * Math.Tan(dAngL * Math.PI / 180) * Vector3d.X_AX()
' aggiungo taglio
pt2 = pt2 - ThicknessRaw * Math.Tan(dAng * Math.PI / 180) * Vector3d.Y_AX()
pt1 = pt1 - ThicknessRaw * Math.Tan(dAng * Math.PI / 180) * Vector3d.Y_AX()
' punti che delimitano back face
Dim HeightRaw As Double
EgtCurveLength(Item.SideId + 1, HeightRaw)
Dim ptB3 As Point3d = pt3 + HeightRaw * Vector3d.Y_AX()
Dim ptB4 As Point3d = pt4 + HeightRaw * Vector3d.Y_AX()
Dim ptB1 As Point3d = pt1 + HeightRaw * Vector3d.Y_AX()
Dim ptB2 As Point3d = pt2 + HeightRaw * Vector3d.Y_AX()
ptB1.y = ptB4.y
ptB2.y = ptB4.y
' info aux per disegnare solido
Dim nOutloopGrp As Integer = EgtGetFirstGroupInGroup(Item.PartId)
Dim nRegionGrp As Integer = EgtGetNextGroup(nOutloopGrp)
Dim cCol As New Color3d
EgtGetColor(EgtGetFirstInGroup(nRegionGrp), cCol)
EgtSetColor(nRegionGrp, cCol)
'nascondo oggetti dalla visualizzazione
EgtSetStatus(Item.SideId, 0)
EgtSetStatus(Item.SideId + 1, 0)
EgtSetStatus(Item.SideId + 2, 0)
EgtSetStatus(Item.SideId + 3, 0)
EgtSetStatus(EgtGetFirstInGroup(nRegionGrp), 0)
' Front Face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {pt1, pt2, pt3, pt4}) Then Return False
' Back Face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB1, ptB4, ptB3, ptB2}) Then Return False
'Front face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB1, ptB2, pt2, pt1}) Then Return False
'Bottom face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB3, ptB4, pt4, pt3}) Then Return False
' Right face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB1, pt1, pt4, ptB4}) Then Return False
' Left face
If Not CreateSolidFace(nOutloopGrp, nRegionGrp, {ptB2, ptB3, pt3, pt2}) Then Return False
' punto da utilizzare come riferimento per posizionare il solido ( espresso nel sistema di riferimento globale)
ptForPos = ptB2
Dim ItemFrame As New Frame3d
If Not EgtGetGroupGlobFrame(nOutloopGrp, ItemFrame) Then Return False
ptForPos.ToGlob(ItemFrame)
Return True
End Function
Friend Function CreateSolidFace(ByRef nCrvGrp As Integer, ByRef nSrfGrp As Integer, ByRef Points As Point3d()) As Boolean
If Points.Count() <> 4 Then Return False
Dim nCrvId As Integer = EgtCreateCurveCompo(nCrvGrp, {EgtCreateLine(nCrvGrp, Points(0), Points(1)),
EgtCreateLine(nCrvGrp, Points(1), Points(2)),
EgtCreateLine(nCrvGrp, Points(2), Points(3)),
EgtCreateLine(nCrvGrp, Points(3), Points(0))}, True)
If nCrvId = GDB_ID.NULL Then Return False
Dim nSrfId As Integer = EgtCreateSurfFlatRegion(nSrfGrp, nCrvId)
Return nSrfId <> GDB_ID.NULL
End Function
Friend Function OnSelectAll() As Boolean
' Verifico esista il contesto del VeinMatching
If m_nVeinCtx = 0 Then Return True
' Imposto VeinMatching context
@@ -726,3 +1132,58 @@ Friend Module VeinMatching
End Function
End Module
Public Class Aletta
Private m_PartId As Integer = -1
Public ReadOnly Property PartId As Integer
Get
Return m_PartId
End Get
End Property
Private m_SideId As Integer = -1
Public ReadOnly Property SideId As Integer
Get
Return m_SideId
End Get
End Property
Private m_RefGUID As String = String.Empty
Public ReadOnly Property RefGUID As String
Get
Return m_RefGUID
End Get
End Property
Private m_IdSideRef As Integer = -1
Public Property IdSideRef As Integer
Get
Return m_IdSideRef
End Get
Set(value As Integer)
m_IdSideRef = value
End Set
End Property
Sub New(nId As Integer)
m_PartId = nId
' Recupero l'info legata al lato che contiene iil riferiemnto
Dim nOutLoopLayId As Integer = EgtGetFirstNameInGroup(nId, NAME_OUTLOOP)
' Entità lato
Dim nSideId As Integer = EgtGetFirstInGroup(nOutLoopLayId)
While nSideId <> GDB_ID.NULL
Dim sInfoGUID As String = String.Empty
EgtGetInfo(nSideId, "RefAF", sInfoGUID)
If Not String.IsNullOrEmpty(sInfoGUID) Then
m_RefGUID = sInfoGUID
m_SideId = nSideId
Exit While
End If
nSideId = EgtGetNext(nSideId)
End While
End Sub
End Class