Compare commits

...

12 Commits

Author SHA1 Message Date
NicolaP 4ac0507050 Migliorata la scrittura del codice 2022-02-03 11:37:33 +01:00
NicolaP a6a4f29bba Gestione delle interferenze in fase di Drag 2022-02-02 18:12:24 +01:00
NicolaP 0c9b37742a Inizio Drag rettangoli (ogni lato selezionato senza limiti) manca la gestione dell'uscita dal comando 2022-01-31 20:54:08 +01:00
NicolaP ef5c98020e Cambio versione 2.4a3 2022-01-27 19:38:30 +01:00
NicolaP c2a1fa3fdc Merge branch 'Features/Tagli_Diretti_WaterJet' 2022-01-27 19:36:57 +01:00
NicolaP 319275f43c Gestione TagioGrglio con macchina WaterJet 2022-01-27 19:01:08 +01:00
NicolaP 61d238e196 Gestione TaglioMultiplo con macchina WaterJet 2022-01-27 17:01:07 +01:00
NicolaP 0900728bbf Gestione TaglioSIngolo con macchina solo WaterJet 2022-01-27 13:03:23 +01:00
NicolaP ee83a453e7 Eliminato il campo qualità "" 2022-01-20 19:30:30 +01:00
NicolaP 7596849254 Migliorato codice 2022-01-19 20:21:30 +01:00
NicolaP e12eb2599e Correzione e miglioramento selezione tagli per Test 2022-01-19 16:14:44 +01:00
NicolaP a0754265ac Correzioni Modifica Inizio/Fine, definizione lista LeadIn, messaggio Cycle-Start 2022-01-17 18:42:29 +01:00
21 changed files with 579 additions and 133 deletions
+9 -4
View File
@@ -107,6 +107,7 @@ Public Class CadCutPageUC
Private Sub PhotoBtn_Click(sender As Object, e As RoutedEventArgs) Handles PhotoBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' Se macchina fotografica collegata, faccio una foto
@@ -140,6 +141,7 @@ Public Class CadCutPageUC
Private Sub RawPartBtn_Click(sender As Object, e As RoutedEventArgs) Handles RawPartBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_RawPartPage)
@@ -165,6 +167,7 @@ Public Class CadCutPageUC
Private Sub DrawBtn_Click(sender As Object, e As RoutedEventArgs) Handles DrawBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_DrawPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Draw
@@ -172,6 +175,7 @@ Public Class CadCutPageUC
Private Sub ImportBtn_Click(sender As Object, e As RoutedEventArgs) Handles ImportBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_ImportPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Import
@@ -193,10 +197,11 @@ Public Class CadCutPageUC
End Sub
Private Sub SplitBtn_Click(sender As Object, e As RoutedEventArgs) Handles SplitBtn.Click
m_MainWindow.DragRettangleOff()
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
EgtDeselectObj(m_NestPage.m_CurrSelectedCurv)
m_ProjectMgr.TestBtn.IsChecked = False
m_CurrProjPage.m_bSelectCurv = False
m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
Select Case m_CadCutMode
Case CadCutModes.Nest, CadCutModes.FastGrid
' Passo alla pagina Split
@@ -206,9 +211,9 @@ Public Class CadCutPageUC
SplitImage.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NewIcons/Nest.png", UriKind.Relative))
End If
If m_CadCutMode = CadCutModes.Nest Then
CadCutPageGrid.Children.Remove(m_NestPage)
Else
CadCutPageGrid.Children.Remove(m_FastGridSlabManager)
CadCutPageGrid.Children.Remove(m_NestPage)
Else
CadCutPageGrid.Children.Remove(m_FastGridSlabManager)
End If
CadCutPageGrid.Children.Add(m_SplitPage)
m_CadCutMode = CadCutModes.Split
+8 -3
View File
@@ -109,9 +109,14 @@
</Button>
</UniformGrid>
<Button Name="RemovePartBtn" Grid.ColumnSpan="3" Grid.Row="6" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Elimina-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<UniformGrid Name ="UG1" Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="3" Columns="2" >
<Button Name="RemovePartBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Elimina-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<ToggleButton Name="DragRettanleBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource Drag_RettangleImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</UniformGrid>
<UniformGrid Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Columns="2" >
<Button Name="SelectAllBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
+387 -26
View File
@@ -12,10 +12,27 @@ Public Class NestPageUC
Friend m_bRegister As Boolean = False
' Flag per pezzi selezionati in tavola o fuori
Private m_nPartPos As Integer = PART_POS.NONE_TABLE
' Flag per impostata per selezionare di una curva
Friend m_bSelectCurv As Boolean = False
' dati per DragRettangoli (estensio/accorciamento dei rettangoli trascinando un lato)
Private m_bIsVisibleDragRettangle As Boolean = False
Friend m_bIsCheckedDragRettangle As Boolean = False
' Id della curva e del taglio selezionati per eseguire il test
Friend m_CurrSelectedCurv As Integer = GDB_ID.NULL
Friend m_CurrSelectedSawCurv As Integer = GDB_ID.NULL
' Id del rettangolo, del traglio e della curva da modificare tramite Drag
Private m_nIdSelectedOutLoopRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedRegionRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedSawRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedCurvRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedTextRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedTextTopRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedFlatSurfRettangle As Integer = GDB_ID.NULL
Private m_SideListRettangle(4) As Integer
Private m_sTextContent As String = String.Empty
Enum PART_POS As Integer
IN_TABLE = -1
NONE_TABLE = 0
@@ -61,6 +78,14 @@ Public Class NestPageUC
RemovePartBtn.ToolTip = EgtMsg(MSG_NESTPAGEUC + 3) 'Remove part - Elimina pezzo
SelectAllBtn.ToolTip = EgtMsg(MSG_NESTPAGEUC + 4) 'Select All - Seleziona Tutto
DeselectAllBtn.ToolTip = EgtMsg(MSG_NESTPAGEUC + 5) 'Deselect All - Deseleziona Tutto
' gestisco la visualizzazione del comando PAN (per il drag dei rettangoli)
m_bIsVisibleDragRettangle = (GetPrivateProfileInt(S_NEST, K_DRAG_RETTANGLE, 0, m_MainWindow.GetIniFile()) <> 0)
If Not m_bIsVisibleDragRettangle Then
UG1.Columns = 1
DragRettanleBtn.Visibility = Visibility.Collapsed
End If
End Sub
Private Sub NestPage_Loaded(sender As Object, e As RoutedEventArgs)
@@ -108,6 +133,7 @@ Public Class NestPageUC
m_dRegStep = GetPrivateProfileDouble(S_REG, K_REGSTEP, 10, m_MainWindow.GetIniFile())
m_dRegAngStep = GetPrivateProfileDouble(S_REG, K_REGANGSTEP, 1, m_MainWindow.GetIniFile())
m_dMaxRegAng = GetPrivateProfileDouble(S_MACH_REG, K_MACH_MAX_ROT_ANG, 10, m_MainWindow.GetMachIniFile())
' Garantisco visibilità pezzi parcheggiati
ShowParkedParts()
' Garantisco visibilità eventuale contorno da foto
@@ -124,14 +150,17 @@ Public Class NestPageUC
End If
End Sub
Private Sub OnMyMouseDownSceneSelCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownSceneSelCurv
' funzione utilizzata per la selezione dei tagli quando il comando TEST è attivo
Private Sub OnMyMouseDownSceneSelCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Verifico di essere il gestore attivo e non in modalità registrazione
If Not m_bActive Or m_bRegister Then Return
' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo
If e.Button <> Windows.Forms.MouseButtons.Left Or
Not m_CurrProjPage.m_bSelectCurv Then
Not m_bSelectCurv Then
Return
End If
' Se esiste un elemento selezionato
EgtResetMark(m_CurrSelectedSawCurv)
' provo a riconoscere il valore medio del segmento
' Verifico se selezionato indicativo di pezzo
EgtSetObjFilterForSelWin(False, True, False, False, False)
@@ -152,7 +181,6 @@ Public Class NestPageUC
Dim ptE As Point3d
EgtEndPoint(nIdMy, ptE)
If m_CurrSelectedCurv <> GDB_ID.NULL Or m_CurrSelectedCurv = nIdMy Then
EgtDeselectObj(m_CurrSelectedSawCurv)
EgtDeselectObj(m_CurrSelectedCurv)
End If
' recupero il gruppo della lavorazione associata
@@ -160,10 +188,9 @@ Public Class NestPageUC
Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, "PV")
Dim nIdSaw As Integer = EgtGetFirstNameInGroup(nIdPV, "Saw" & nIdMy.ToString)
If Not EgtGetGroupObjs(nIdSaw) Then
EgtSelectObj(nIdSaw)
m_CurrSelectedSawCurv = nIdSaw
m_CurrSelectedCurv = nIdMy
EgtSelectObj(nIdSaw)
EgtSetMark(nIdSaw)
EgtSelectObj(nIdMy)
EgtDraw()
Exit While
@@ -176,6 +203,293 @@ Public Class NestPageUC
Return
End Sub
#Region "DRAG RETTANGLE"
' funzione chiamata da OnMyMouseMoveScene: verifica che la selezione sia corretta (deve essere il lato di una figura rettangolare)
Private Sub OnMyMouseDownSceneSelSideRettangle(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Verifico di essere il gestore attivo e non in modalità registrazione
If Not m_bActive Or m_bRegister Then Return
' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo
If e.Button <> Windows.Forms.MouseButtons.Left then
Return
End If
' Verifico se selezionato indicativo di pezzo
EgtSetObjFilterForSelWin(False, True, False, False, False)
Dim nSelMy As Integer
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSelMy)
Dim nIdMy As Integer = EgtGetFirstObjInSelWin()
While nIdMy <> GDB_ID.NULL
Dim sLayer As String = String.Empty
' layer di origine
Dim nIdParent As Integer = EgtGetParent(nIdMy)
' recupero il nome del Layer
EgtGetName(nIdParent, sLayer)
' solo se il nome del layer è quello associato ad un lato esterno allora procedo con l'evidenziazione
If sLayer = NAME_OUTLOOP Then
If EgtGetType(nIdMy) = GDB_TY.CRV_LINE Then
' -------------------------------- INIZIO VERIFICHE --------------------------------
m_nIdSelectedOutLoopRettangle = nIdParent
If Not IsRettangle(m_SideListRettangle) Then
m_CurrProjPage.ClearMessage()
m_CurrProjPage.SetWarningMessage("Non è un rettangolo (0)")
Return
End If
' recupero il gruppo della lavorazione associata
Dim nIdParentPart As Integer = EgtGetParent(nIdParent)
Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, "PV")
' se non esiste un gruppo di lavorazione associato allora esco
If nIdPV = GDB_ID.NULL Then
m_CurrProjPage.ClearMessage()
m_CurrProjPage.SetWarningMessage("Pezzo in parcheggio (1)")
Return
End If
' se esiste ma è vuoto (pezzo scaricato da tavola)
If EgtGetFirstInGroup(nIdPV) = GDB_ID.NULL Then
m_CurrProjPage.ClearMessage()
m_CurrProjPage.SetWarningMessage("Pezzo in parcheggio (2)")
Return
End If
' Devo verificare che sia una lavorazione solo di lama?
Dim nIdSaw As Integer = EgtGetFirstNameInGroup(nIdPV, "Saw" & nIdMy.ToString)
' -------------------------------- FINE VERIFICHE --------------------------------
If Not EgtGetGroupObjs(nIdSaw) Then
m_nIdSelectedSawRettangle = nIdSaw
m_nIdSelectedCurvRettangle = nIdMy
m_nIdSelectedRegionRettangle = EgtGetFirstNameInGroup(nIdParentPart, NAME_REGION)
' recupero i testi cintenuti nel layer Region
If m_nIdSelectedRegionRettangle <> GDB_ID.NULL Then
Dim nCurrId As Integer = EgtGetFirstInGroup(m_nIdSelectedRegionRettangle)
While nCurrId <> GDB_ID.NULL
If EgtGetType(nCurrId) = GDB_TY.EXT_TEXT Then
Dim sVal As String = String.Empty
EgtTextGetContent(nCurrId, sVal)
If sVal = "*TOP*" Then
m_nIdSelectedTextTopRettangle = nCurrId
Else
m_nIdSelectedTextRettangle = nCurrId
m_sTextContent = GetMyRettangleText(sVal)
End If
ElseIf EgtGetType(nCurrId) = GDB_TY.SRF_FRGN Then
m_nIdSelectedFlatSurfRettangle = nCurrId
End If
nCurrId = EgtGetNext(nCurrId)
End While
End If
' seleziono ed evidenzio il lato selezionato
EgtSelectObj(nIdSaw)
EgtSetMark(nIdSaw)
EgtSelectObj(nIdMy)
EgtDraw()
Exit While
End If
End If
' se le'elemto corrente non è una linea
End If
' se le'elemto corrente non appartiene al layer OutLoop passo al prossimo elemento dell'elenco
nIdMy = EgtGetNextObjInSelWin()
End While
End Sub
' restituisce il valore del Text ripulito dalle dimensioni
Private Function GetMyRettangleText(sTextPz As String) As String
' da DrawPageUC.xaml.vb/MultipleInsert
Dim sText As String = String.Empty
If sTextPz.Contains("<br/>") Then
Dim nLastIndex As Integer = sTextPz.LastIndexOf(">")
sText = sTextPz.Remove(nLastIndex + 1)
Return sText
End If
If sTextPz.Contains(" ") Then
Dim sInfo() As String = sTextPz.Split(" ")
If sInfo.Count > 3 Then
Return sText = sInfo(0) & " " & sInfo(1) & " "
End If
End If
Return sText
End Function
' verifico che la figura selezionata sia realmente un rettangolo
Private Function IsRettangle(ByRef IdSideList() As Integer) As Boolean
' creo una lista con i lati del rettangolo
Dim nCounter As Integer = 0
' recupero i lati dal leyer "OutLoop"
Dim IdSideRettangle As Integer = EgtGetFirstInGroup(m_nIdSelectedOutLoopRettangle)
While IdSideRettangle <> GDB_ID.NULL And nCounter < 4
Dim sVal As String = String.Empty
Dim dPrevAng As Double = 0
EgtGetInfo(IdSideRettangle, "PrevAng", sVal)
StringToDouble(sVal, dPrevAng)
Dim dNextAng As Double = 0
EgtGetInfo(IdSideRettangle, "NextAng", sVal)
StringToDouble(sVal, dNextAng)
' se gli angoli non sono retti allora esco senza caricare il lato corrente
If Math.Abs(dPrevAng - 90) > EPS_ANG_SMALL OrElse Math.Abs(dNextAng - 90) > EPS_ANG_SMALL Then
Exit While
End If
IdSideList(nCounter) = IdSideRettangle
nCounter += 1
IdSideRettangle = EgtGetNext(IdSideRettangle)
End While
' verifico che siano solo quattro lati
If IdSideRettangle = GDB_ID.NULL And nCounter = 4 Then
' solo se la figura ha 4 lati ortogonali
Return True
End If
m_nIdSelectedOutLoopRettangle = GDB_ID.NULL
' la figura presenta più/meno di 4 lati
Return False
End Function
' recupero le informazioni correnti per sapere se la figura è mdificabile
Private Function GetRettangleInfoScale(ByRef frFixed As Frame3d, ByRef MaxLen As Double, ByRef MinLen As Double) As Vector3d
' determino la direzione del lato selezionato
Dim vtDirSelectedCurv As New Vector3d
EgtStartVector(m_nIdSelectedCurvRettangle, GDB_ID.ROOT, vtDirSelectedCurv)
' recupero il lato successivo a quello selezionato
Dim Index As Integer = 0
Dim Len As Double = 0
For Ind As Integer = 0 To 3
If m_SideListRettangle(Ind) = m_nIdSelectedCurvRettangle Then
' verifico se esiste un lato Precedente altrimenti recupero l'ultimo della lista
If Ind = 0 Then
Index = 3
Else
Index = Ind - 1
End If
End If
Next
' recupero la dimensione del lato
EgtCurveLength(m_SideListRettangle(Index), MaxLen)
EgtCurveLength(m_nIdSelectedCurvRettangle, MinLen)
' verifico che il lato selezionato sia il maggiore
If MinLen > MaxLen Then Return Nothing
' determimo il versore dal lato appena calcolato
Dim vtDir As New Vector3d
EgtStartVector(m_SideListRettangle(Index), GDB_ID.ROOT, vtDir)
vtDir.Normalize()
Dim dProjectionBaseX As Double = vtDir * Vector3d.X_AX
Dim ptFixed As New Point3d
EgtStartPoint(m_SideListRettangle(Index), GDB_ID.ROOT, ptFixed)
Dim vtPerp As New Vector3d(vtDir.x, vtDir.y, vtDir.z)
vtPerp.Rotate(Vector3d.Z_AX, 90)
' determino il Frame corrente
frFixed = New Frame3d(ptFixed, vtDir, vtPerp, Vector3d.Z_AX)
Return vtDir
End Function
' funzione chiamata da OnMyMouseMoveScene: gestisce la modifica lungo una dimensione del rettangolo selezionato
Private Sub OnMyMouseMoveSawRettangle(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Verifico di essere il gestore attivo
If Not m_bActive Then Return
' Se drag non abilitato o già in esecuzione, esco
If Not m_bDrag Or m_bDragging Then Return
' Se primo movimento di drag, verifico di aver superato la soglia di movimento in pixel
If m_bDragToStart Then
If Math.Abs(e.Location.X - m_locPrev.X) < m_nRestRadius And
Math.Abs(e.Location.Y - m_locPrev.Y) < m_nRestRadius Then
Return
End If
m_bDragToStart = False
End If
' riferiemento che deve rimanere fisso del rettangolo
Dim frFixed As Frame3d = Nothing
' lunghezza del lato da modificare
Dim MaxLen As Double = 0
Dim MinLen As Double = 0
' recupero info sul rettangolo selezionato
Dim vtDir As Vector3d = GetRettangleInfoScale(frFixed, MaxLen, MinLen)
If vtDir.Equals(Vector3d.NULL) Then
Return
End If
' Inizio esecuzione di drag
m_bDragging = True
' Ricavo il punto corrente in coordinate mondo
Dim ptCurr As Point3d
EgtUnProjectPoint(e.Location, ptCurr)
' Ricavo il vettore di movimento
Dim vtMove As Vector3d = ptCurr - m_ptPrev
' ricavo il valore efficace di allungamento (la proiezione)
Dim dProjection As Double = vtMove * vtDir
vtMove = vtDir * dProjection
' recupero il valore di scalatura
Dim dScalefactor = dProjection / MaxLen + 1
' Modifico dimensione figura
If Math.Abs(dScalefactor) > EPS_SMALL * EPS_SMALL Then
EgtScale(m_nIdSelectedOutLoopRettangle, frFixed, dScalefactor, 1, 1, GDB_ID.ROOT)
EgtScale(m_nIdSelectedFlatSurfRettangle, frFixed, dScalefactor, 1, 1, GDB_ID.ROOT)
Dim ptCen As Point3d
EgtCenterPoint(m_nIdSelectedTextRettangle, ptCen)
EgtModifyText(m_nIdSelectedTextRettangle, m_sTextContent & LenToString(MaxLen + dProjection, 2) & " x " & LenToString(MinLen, 2))
EgtMove(m_nIdSelectedTextRettangle, vtMove * 0.5)
If m_nIdSelectedTextTopRettangle <> GDB_ID.NULL Then
EgtMove(m_nIdSelectedTextTopRettangle, vtMove * 0.5)
End If
End If
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
EnableReferenceRegion(False)
' se la modifica genera un errore allora ripristino la figura prima della defomrazione
If Not EgtVerifyPart(EgtGetParent(m_nIdSelectedOutLoopRettangle), True) Then
EgtScale(m_nIdSelectedOutLoopRettangle, frFixed, 1 / dScalefactor, 1, 1, GDB_ID.ROOT)
EgtScale(m_nIdSelectedFlatSurfRettangle, frFixed, 1 / dScalefactor, 1, 1, GDB_ID.ROOT)
Dim ptCen As Point3d
EgtCenterPoint(m_nIdSelectedTextRettangle, ptCen)
EgtModifyText(m_nIdSelectedTextRettangle, m_sTextContent & LenToString(MaxLen, 2) & " x " & LenToString(MinLen, 2))
EgtMove(m_nIdSelectedTextRettangle, -vtMove * 0.5)
If m_nIdSelectedTextTopRettangle <> GDB_ID.NULL Then
EgtMove(m_nIdSelectedTextTopRettangle, -vtMove * 0.5)
End If
End If
EgtDraw()
' Aggiorno il punto precedente
m_ptPrev = ptCurr
' Terminata esecuzione di drag
m_bDragging = False
End Sub
' funzione chiamata da OnMyMouseUp: gestisce il reset di tutti gli indici in uso
Public Sub ResetDragRettangleParam()
' deseleziono l'elemento corrente
EgtDeselectObj(m_nIdSelectedSawRettangle)
EgtDeselectObj(m_nIdSelectedCurvRettangle)
EgtResetMark(m_nIdSelectedSawRettangle)
' resetto gli indici
m_nIdSelectedOutLoopRettangle = GDB_ID.NULL
m_nIdSelectedRegionRettangle = GDB_ID.NULL
m_nIdSelectedSawRettangle = GDB_ID.NULL
m_nIdSelectedCurvRettangle = GDB_ID.NULL
m_nIdSelectedTextRettangle = GDB_ID.NULL
m_nIdSelectedTextTopRettangle = GDB_ID.NULL
m_nIdSelectedFlatSurfRettangle = GDB_ID.NULL
m_SideListRettangle = {GDB_ID.NULL, GDB_ID.NULL, GDB_ID.NULL, GDB_ID.NULL}
m_sTextContent = String.Empty
' disattivo il drag
m_bDrag = False
' aggiorno le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
EgtDraw()
End Sub
#End Region ' Drag Rettangolo
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
@@ -184,6 +498,25 @@ Public Class NestPageUC
Not m_CurrProjPage.CurrentProjectScene.IsStatusNull() Then
Return
End If
' se in modalità slezione tagli
If m_bSelectCurv Then
OnMyMouseDownSceneSelCurv(sender, e)
Return
End If
' se in modalità DragRettangle (deformazione delle componenti rettangolari)
If m_bIsCheckedDragRettangle Then
OnMyMouseDownSceneSelSideRettangle(sender, e)
' Dati per drag (abilito il Drag)
m_locPrev = e.Location
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev) And m_nIdSelectedCurvRettangle <> GDB_ID.NULL
m_bDragToStart = m_bDrag
m_bVerify = m_bDrag AndAlso (Keyboard.Modifiers And ModifierKeys.Shift) > 0
m_vtTotMove = Vector3d.NULL()
Return
End If
' Per default no drag
m_bDrag = False
' Verifico se selezionato indicativo di pezzo
@@ -218,15 +551,15 @@ Public Class NestPageUC
' se non è stata eseguita nessuna scelta esco dal ciclo
If nRes = 0 Then Exit While
' imposto l'altra tavola
Dim sOtherTab = If( sNamePartId = MAIN_TAB, SECOND_TAB, MAIN_TAB)
EgtChangeTable( sOtherTab, True)
m_CurrProjPage.AdjustAdditionalTable( True)
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)
For nI As Integer = 1 To EgtGetPhaseCount()
EgtSetCurrPhase(nI)
Dim nDispId As Integer = EgtGetPhaseDisposition(nI)
SpecialApplyDisposition(nDispId, True)
Next
@@ -239,31 +572,31 @@ Public Class NestPageUC
Dim nPPId As Integer = EgtGetFirstPart()
While nPPId <> GDB_ID.NULL
PackPartInStore(nPPId)
nPPId = EgtGetNextPart( nPPId)
nPPId = EgtGetNextPart(nPPId)
End While
' se prevista rotazione
If GetPrivateProfileInt(S_TABLE, K_CHANGETABWD, 0, m_MainWindow.GetMachIniFile()) = 2 Then
' Dati tavola
Dim b3Tab As New BBox3d
EgtGetTableArea( 1, b3Tab)
EgtGetTableArea(1, b3Tab)
' Box lastra
Dim b3OrigRaw As New BBox3d
GetRawBox( b3OrigRaw)
GetRawBox(b3OrigRaw)
' Allargo i limiti della tavola in tutte le fasi
Const TAB_OFFS As Double = 3000
For nI As Integer = 1 To EgtGetPhaseCount()
EgtSetCurrPhase(nI)
EgtSetTableAreaOffset( TAB_OFFS, TAB_OFFS, TAB_OFFS, TAB_OFFS)
EgtSetTableAreaOffset(TAB_OFFS, TAB_OFFS, TAB_OFFS, TAB_OFFS)
Next
EgtSetCurrPhase(1)
' Rotazione
Dim dAngRot As Double = If(sOtherTab = SECOND_TAB, 180, -180)
if Not RotateAllRawParts(dAngRot, False) Then
If Not RotateAllRawParts(dAngRot, False) Then
m_CurrProjPage.SetWarningMessage(EgtMsg(90339)) 'Rotazione impossibile
End If
' Traslazione per riportare la lastra nella stessa posizione rispetto all'angolo BL che diveta TR e viceversa
Dim b3Raw As New BBox3d
GetRawBox( b3Raw)
GetRawBox(b3Raw)
Dim vtMove As Vector3d
If sOtherTab = SECOND_TAB Then
Dim vtDiffIni As Vector3d = b3OrigRaw.Min() - b3Tab.Min()
@@ -272,14 +605,14 @@ Public Class NestPageUC
Else
Dim vtDiffIni As Vector3d = b3Tab.Max() - b3OrigRaw.Max()
Dim vtDiffFin As Vector3d = b3Raw.Min() - b3Tab.Min()
vtMove = -( vtDiffFin - vtDiffIni)
vtMove = -(vtDiffFin - vtDiffIni)
End If
vtMove.z = 0
MoveAllRawParts(vtMove)
' Ripristino i limiti della tavola in tutte le fasi
For nI As Integer = 1 To EgtGetPhaseCount()
EgtSetCurrPhase(nI)
EgtSetTableAreaOffset( 0, 0, 0, 0)
EgtSetTableAreaOffset(0, 0, 0, 0)
Next
EgtSetCurrPhase(1)
HideAllMachinings()
@@ -312,6 +645,13 @@ Public Class NestPageUC
End If
m_bDragToStart = False
End If
' se devo muovere un lato del rettangolo
If m_bIsCheckedDragRettangle Then
OnMyMouseMoveSawRettangle(sender, e)
Return
End If
' Determino cosa muovere
Dim nMoveId = If(m_nIdToSel <> GDB_ID.NULL, m_nIdToSel, GDB_ID.SEL)
' Verifico se in tavola o in parcheggio
@@ -402,6 +742,15 @@ Public Class NestPageUC
Private Sub OnMyMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseUpScene
' Verifico di essere il gestore attivo
If Not m_bActive Then Return
' verifico che non sia attivo il comando Test
If m_bSelectCurv Then Return
' verifico che non sia attivo il comando di Drag dei rettangoli
If m_bIsCheckedDragRettangle Then
' deseleziono gli oggeti, resetto le variabili usate, aggiorno il disegno
ResetDragRettangleParam()
Return
End If
' Se eseguito drag
If Not m_bDragToStart Then
' Se movimento con sola verifica finale
@@ -412,16 +761,16 @@ Public Class NestPageUC
UpdateNestRegions()
EnableReferenceRegion(False)
' Eseguo verifica
If VerifyTrfData( nMoveId) And EgtVerifyPart( nMoveId, m_bReducedCut) Then
If VerifyTrfData(nMoveId) And EgtVerifyPart(nMoveId, m_bReducedCut) Then
m_CurrProjPage.ResetOrderMachiningFlag()
' Non superata riporto alla posizione iniziale
' Non superata riporto alla posizione iniziale
Else
If m_bFromParking Then
m_CurrProjPage.ClearMessage()
PreRemoveOnePart( nMoveId)
VeinMatching.OnRemovePartFromRaw( nMoveId)
PreRemoveOnePart(nMoveId)
VeinMatching.OnRemovePartFromRaw(nMoveId)
Else
EgtMove( nMoveId, -m_vtTotMove)
EgtMove(nMoveId, -m_vtTotMove)
' Eventuale notifica al VeinMatching
If nMoveId = GDB_ID.SEL Then
Dim nId As Integer = EgtGetFirstSelectedObj()
@@ -435,11 +784,11 @@ Public Class NestPageUC
End If
End If
m_bFromParking = False
' altrimenti caso con verifica durante il movimento
' altrimenti caso con verifica durante il movimento
Else
' Basta reset alla fine
End If
' Se selezione da eseguire
' Se selezione da eseguire
ElseIf m_nIdToSel <> GDB_ID.NULL Then
' Determino se pezzo in tavola o in parcheggio
Dim bPartInTable As Boolean = (EgtGetParent(m_nIdToSel) = m_nRawId)
@@ -456,7 +805,7 @@ Public Class NestPageUC
VeinMatching.OnSelectPart(m_nIdToSel)
' Set flag posizione selezionati
m_nPartPos = If(bPartInTable, PART_POS.IN_TABLE, PART_POS.OUT_TABLE)
' Se deselezione da eseguire
' Se deselezione da eseguire
ElseIf m_nIdToDesel <> GDB_ID.NULL Then
EgtDeselectObj(m_nIdToDesel)
' Eventuale aggiornamento VeinMatching
@@ -1232,6 +1581,18 @@ Public Class NestPageUC
Return True
End Function
Private Sub DragRettangle_Click() Handles DragRettanleBtn.Click
If DragRettanleBtn.IsChecked Then
m_bIsCheckedDragRettangle = True
Else
m_bIsCheckedDragRettangle = False
ResetDragRettangleParam()
m_CurrProjPage.ClearMessage()
ShowParkedParts()
End If
EgtDraw()
End Sub
Private Sub StorePartBtn_Click(sender As Object, e As RoutedEventArgs) Handles StorePartBtn.Click
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
' Ciclo di parcheggio dei pezzi selezionati
+2 -2
View File
@@ -1191,8 +1191,8 @@ Public Class SplitPageUC
UpdateMachiningPreview(m_MachiningList(nI).m_nId, True)
bRepeat = Not UpdateMachiningPreview(m_MachiningList(nI).m_nId, True)
If bRepeat Then
EgtSetMachiningParam(MCH_MP.STARTADDLEN, dOrigUeal)
EgtSetInfo(nOperId, INFO_MCH_USER_SAL, dOrigUeal)
EgtSetMachiningParam(MCH_MP.ENDADDLEN, dOrigUeal)
EgtSetInfo(nOperId, INFO_MCH_USER_EAL, dOrigUeal)
dUeal = dOrigUeal
End If
Loop Until Not bRepeat
+1
View File
@@ -148,6 +148,7 @@ Module ConstIni
Public Const K_TEXTCOLOR As String = "TextColor"
Public Const K_AUTOMATICOPTIMIZE As String = "AutomaticOptimize"
Public Const K_AUTOMATICMAXTIME As String = "AutomaticMaxTime"
Public Const K_DRAG_RETTANGLE As String = "DragRettangle"
Public Const S_SPLIT As String = "Split"
Public Const K_MOVE_LEV As String = "MoveLevel"
+26 -23
View File
@@ -133,25 +133,6 @@ Public Class DirectCutPageUC
' leggo il numero di assi attivi nella macchina
Dim AxesNumber = GetPrivateProfileInt(S_AXES, K_AXESNUM, 5, m_MainWindow.GetMachIniFile())
'' 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
Private Sub DirectCutPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
@@ -228,8 +209,12 @@ Public Class DirectCutPageUC
' Se macchina fotografica abilitata
PhotoBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.MAN_PHOTO)
' Attivo le lavorazioni solo se esiste il grezzo
' Attivo le lavorazioni solo se esiste il grezzo e se presente testa H1
Dim bRawOk As Boolean = (GetRawHeight() > EPS_SMALL)
Dim bH1Exists As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
ManualBtn.IsEnabled = bH1Exists
' sviluppo rimasto in sospeso
If m_bManulaCut Then
' anche se non è presente un grezzo mantengo abilitato il bottone
SingleCutBtn.IsEnabled = True
@@ -238,10 +223,14 @@ Public Class DirectCutPageUC
End If
MultipleCutBtn.IsEnabled = bRawOk
GridCutBtn.IsEnabled = bRawOk
SingleDrillBtn.IsEnabled = bRawOk
FlatteningCutBtn.IsEnabled = bRawOk
SingleDrillBtn.IsEnabled = (bRawOk And bH1Exists)
FlatteningCutBtn.IsEnabled = (bRawOk And bH1Exists)
PolishingBtn.IsEnabled = (bRawOk And m_MainWindow.m_CurrentMachine.bPolishing)
SawTestBtn.IsEnabled = bRawOk
SawTestBtn.IsEnabled = (bRawOk And bH1Exists)
CopyTemplateBtn.IsEnabled = bH1Exists
' aggiorno la visualizzazione dei parametri
ReloadParam()
' Nascondo i pezzi in parcheggio
HideParkedParts()
@@ -249,6 +238,20 @@ Public Class DirectCutPageUC
End Sub
Public Sub ReloadParam()
Dim sCurrSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
Dim sCurrSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
Dim bSaw As Boolean = False
' se esiste una lavorazione di lama corrente vuol dire che deve essere preferita
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If
m_SingleCut.SetEnableParam(bSaw)
m_MultipleCut.SetEnableParam(bSaw)
m_GridCut.SetEnableParam(bSaw)
End Sub
Private Sub SetVisibilityJogButtuns()
XYBtn.Visibility = Visibility.Collapsed
ZCBtn.Visibility = Visibility.Collapsed
+30 -16
View File
@@ -152,6 +152,7 @@ Public Class GridCut
EgtDraw()
End Sub
Friend Sub GridCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
' Salvo i dati correnti
WritePrivateProfileString( S_DIRECTCUTS, K_DC_GRID_DEPTH, DoubleToString( m_dDepth, 2), m_MainWindow.GetIniFile())
@@ -185,6 +186,11 @@ Public Class GridCut
m_bActive = False
End Sub
Public Sub SetEnableParam(ByVal bIsSaw As Boolean)
' se macchina solo WaterJet Disabilito/Nascondo parametri della lama
DepthTxBx.IsEnabled = bIsSaw
End Sub
Private Sub UpdateSimulOkBtn()
If m_bCutOk Then
SimulBtn.IsEnabled = True
@@ -242,6 +248,12 @@ Public Class GridCut
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
@@ -256,12 +268,12 @@ Public Class GridCut
If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
End If
@@ -285,10 +297,8 @@ Public Class GridCut
' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
End If
' Disegno il taglio
@@ -317,6 +327,12 @@ Public Class GridCut
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
@@ -331,12 +347,12 @@ Public Class GridCut
If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return
' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return
End If
@@ -358,10 +374,8 @@ Public Class GridCut
' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
End If
' Se il secondo punto non coincide con il primo, disegno il taglio
+34 -18
View File
@@ -213,6 +213,10 @@ Public Class MultipleCut
m_bActive = False
End Sub
Public Sub SetEnableParam(ByVal bIsSaw As Boolean)
DepthTxBx.IsEnabled = bIsSaw
End Sub
Private Sub UpdateSimulOkBtn()
If m_bCutOk Then
SimulBtn.IsEnabled = True
@@ -270,6 +274,12 @@ Public Class MultipleCut
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
@@ -284,12 +294,14 @@ Public Class MultipleCut
If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
End If
@@ -312,10 +324,9 @@ Public Class MultipleCut
' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
End If
' Disegno il taglio
CreateMultipleCut()
@@ -343,6 +354,12 @@ Public Class MultipleCut
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
@@ -357,12 +374,12 @@ Public Class MultipleCut
If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return
' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return
End If
@@ -383,10 +400,9 @@ Public Class MultipleCut
' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
End If
' Se il secondo punto non coincide con il primo, disegno il taglio
+43 -19
View File
@@ -137,6 +137,9 @@ Public Class SingleCutUC
Point2Btn.IsEnabled = False
' Deseleziono bottone primo punto
Point1Btn.IsChecked = False
' la visualizzazione dei comandi è gestira dalla DirectCutPageUC richiamando la funzione ReloadParam
' Aggiorno visualizzazione
EgtDraw()
End Sub
@@ -172,6 +175,12 @@ Public Class SingleCutUC
m_bActive = False
End Sub
Public Sub SetEnableParam(ByVal bIsSaw As Boolean)
' se macchina solo WaterJet Disabilito/Nascondo parametri della lama
DepthTxBx.IsEnabled = bIsSaw
SawThChBx.IsEnabled = bIsSaw
End Sub
Private Sub UpdateSimulOkBtn()
If m_bCutOk Then
SimulBtn.IsEnabled = True
@@ -229,6 +238,12 @@ Public Class SingleCutUC
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Se acquisizione lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina
@@ -242,12 +257,12 @@ Public Class SingleCutUC
If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
End If
@@ -271,10 +286,9 @@ Public Class SingleCutUC
' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
End If
' Disegno il taglio
@@ -303,6 +317,12 @@ Public Class SingleCutUC
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina
@@ -316,12 +336,14 @@ Public Class SingleCutUC
If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return
' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return
End If
@@ -343,10 +365,8 @@ Public Class SingleCutUC
' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
End If
' Se il secondo punto non coincide con il primo, disegno il taglio
@@ -559,9 +579,13 @@ Public Class SingleCutUC
Dim dRawHeight As Double = m_ptRawMax.z - m_ptRawMin.z
' Recupero spessore lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
Dim sSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
EgtTdbSetCurrTool(sSaw)
Dim dThick As Double = 0
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
' se è impostata una lavorazione di lama
If Not String.IsNullOrEmpty(sSawing) Then
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
End If
' Rimuovo eventuale vecchio pezzo per taglio diretto
EraseDirectCutPart()
' Disattivo eventuali lavorazioni presenti
-1
View File
@@ -1314,7 +1314,6 @@ Public Class CurrentMachine
Local_MaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
' definisco la lista delle qualità (solo se è vuota)
If m_Qualities.Count < 1 Then
m_Qualities.Add("")
m_Qualities.Add("Q1")
m_Qualities.Add("Q2")
m_Qualities.Add("Q3")
-1
View File
@@ -2375,7 +2375,6 @@ Public Class MachiningDbPageUC
Case MCH_MY.POCKETING
LeadInTypeCmBx.ItemsSource = New ObservableCollection(Of IdNameStruct)(
{New IdNameStruct(MCH_POCK_LI.NONE, EgtMsg(MSG_COMBOBOXPARAM + 42)),
New IdNameStruct(MCH_POCK_LI.GLIDE, EgtMsg(MSG_COMBOBOXPARAM + 48)),
New IdNameStruct(MCH_POCK_LI.ZIGZAG, EgtMsg(MSG_COMBOBOXPARAM + 38)),
New IdNameStruct(MCH_POCK_LI.HELIX, EgtMsg(MSG_COMBOBOXPARAM + 49))})
LeadOutTypeCmBx.ItemsSource = New ObservableCollection(Of IdNameStruct)(
+20 -4
View File
@@ -323,8 +323,8 @@ Class MainWindow
' Verifico abilitazione nesting automatico
m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey)
' Recupero opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2312, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2312, 1, m_nKeyOptions)
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2401, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2401, 1, m_nKeyOptions)
' Verifico abilitazione prodotto
Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE)
' Inizializzazione generale di EgtInterface
@@ -569,6 +569,8 @@ Class MainWindow
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
' disbilito Test
TestOff()
' disabilito DragRettangle
DragRettangleOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = True
@@ -625,6 +627,7 @@ Class MainWindow
EgtMdbGetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -678,6 +681,7 @@ Class MainWindow
Private Sub CadCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles CadCutBtn.Click
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -730,6 +734,7 @@ Class MainWindow
Private Sub FrameCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles FrameCutBtn.Click
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -783,6 +788,7 @@ Class MainWindow
Private Sub MachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles MachineBtn.Click
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -831,6 +837,7 @@ Class MainWindow
Private Sub OptionsBtn_Click(sender As Object, e As RoutedEventArgs) Handles OptionsBtn.Click
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -1140,7 +1147,7 @@ Class MainWindow
' Aggiorno interfaccia
CadCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FRAMES)
FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS) AndAlso (EgtGetHeadId("H1") <> GDB_ID.NULL)
DirectCutBtn.IsEnabled = (EgtGetHeadId("H1") <> GDB_ID.NULL)
' DirectCutBtn.IsEnabled = (EgtGetHeadId("H1") <> GDB_ID.NULL)
End Sub
' Nomi dei file per OmagVIEW
@@ -1885,8 +1892,17 @@ Class MainWindow
' deseleziono gli oggetti e spengo il bottone
EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv)
EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
EgtResetMark(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
m_CadCutPageUC.m_ProjectMgr.TestBtn.IsChecked = False
m_CurrentProjectPageUC.m_bSelectCurv = False
Me.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
End Sub
' spegne il comando per la mofica dei rettangoli
Public Sub DragRettangleOff()
m_CadCutPageUC.m_NestPage.DragRettanleBtn.IsChecked = False
Me.m_CadCutPageUC.m_NestPage.m_bIsCheckedDragRettangle = False
ShowParkedParts()
End Sub
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.4.1.2")>
<Assembly: AssemblyFileVersion("2.4.1.2")>
<Assembly: AssemblyVersion("2.4.1.3")>
<Assembly: AssemblyFileVersion("2.4.1.3")>
+3
View File
@@ -1238,6 +1238,9 @@
<ItemGroup>
<Resource Include="Resources\NewIcons\Acquisisci-P.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Drag_Rettangle.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagCUT\OmagCUTR32.exe
+1
View File
@@ -105,6 +105,7 @@
<BitmapImage x:Key="Elimina-pezzoImg" UriSource="Resources/NewIcons/Elimina-pezzo.png"></BitmapImage>
<BitmapImage x:Key="Seleziona-tuttoImg" UriSource="Resources/NewIcons/Seleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Deseleziona-tuttoImg" UriSource="Resources/NewIcons/Deseleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Drag_RettangleImg" UriSource="Resources/NewIcons/Drag_Rettangle.png"></BitmapImage>
<!--Machine-->
<BitmapImage x:Key="DatiMacchinaImg" UriSource="Resources/NewIcons/DatiMacchina.png"></BitmapImage>
+1
View File
@@ -173,6 +173,7 @@
<BitmapImage x:Key="Elimina-pezzoImg" UriSource="Resources/NewIcons/Elimina-pezzo.png"></BitmapImage>
<BitmapImage x:Key="Seleziona-tuttoImg" UriSource="Resources/NewIcons/Seleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Deseleziona-tuttoImg" UriSource="Resources/NewIcons/Deseleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Drag_RettangleImg" UriSource="Resources/NewIcons/Drag_Rettangle.png"></BitmapImage>
<!--Machine-->
<BitmapImage x:Key="DatiMacchinaImg" UriSource="Resources/NewIcons/DatiMacchina.png"></BitmapImage>
+1 -1
View File
@@ -18,7 +18,7 @@ Class CicloStartWD
Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2
Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2
' imopposto il messaggio di avvio
CicloStartTxbl.Text = "Avvio Ciclo-Start"
CicloStartTxbl.Text = EgtMsg(91130) ' Esegui programma?
End Sub
' creo un progetto nuovo
+3 -9
View File
@@ -6,7 +6,6 @@ Imports EgtWPFLib5
Public Class CurrentProjectPageUC
' Dichiarazione eventi
Friend Event OnMouseDownSceneSelCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
@@ -24,8 +23,8 @@ Public Class CurrentProjectPageUC
' Dati del grezzo
Friend m_nRawId As Integer = GDB_ID.NULL
Friend m_dRawHeight As Double
' pagina impostata per selezionare una lavorazione
Friend m_bSelectCurv As Boolean = False
'' Flag per impostata per selezionare di una curva
'Friend m_bSelectCurv As Boolean = False
' Costanti tipo progetto
Friend Enum PRJ_TYPE As Integer
EMPTY = 0
@@ -328,12 +327,7 @@ Public Class CurrentProjectPageUC
End Sub
Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles CurrentProjectScene.OnMouseDownScene
If m_bSelectCurv Then
RaiseEvent OnMouseDownSceneSelCurv(sender, e)
Else
RaiseEvent OnMouseDownScene(sender, e)
End If
RaiseEvent OnMouseDownScene(sender, e)
End Sub
Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles CurrentProjectScene.OnMouseMoveScene
+4 -4
View File
@@ -276,7 +276,7 @@ Public Class ProjectMgrUC
m_CurrProjPage.SetWarningMessage("Trial Version")
#Else
' se sono in modalità Test allora eseguo solo il posizionamento della lama
If m_CurrProjPage.m_bSelectCurv Then
If m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv Then
' Verifico non sia versione Ufficio
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then
m_CurrProjPage.SetWarningMessage("Office Version")
@@ -336,7 +336,7 @@ Public Class ProjectMgrUC
' verifica assi lineari
EgtVerifyOutstroke(dX, dY, dZ, dC1, dB1, nStat)
If nStat <> 0 Then
vtDirT = - vtDirT
vtDirT = -vtDirT
ptMid -= vtDirT * dThick
EgtGetCalcAngles(vtDirT, Vector3d.Z_AX(), nStat, dC1, dB1, dC2, dB2)
' calcolo la posizione degli assi lineari X, Y, Z ( correggere il punto ptMid.z sommando il raggio utensile)
@@ -736,11 +736,11 @@ Public Class ProjectMgrUC
Private Sub TestBtn_Click(sender As Object, e As RoutedEventArgs) Handles TestBtn.Click
If TestBtn.IsChecked Then
m_CurrProjPage.m_bSelectCurv = True
m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv = True
' deseleziono tutto
EgtDeselectAll()
Else
m_CurrProjPage.m_bSelectCurv = False
m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
EgtDeselectObj(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv)
EgtDeselectObj(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
End If
+4
View File
@@ -639,10 +639,14 @@ Public Class ChooseMachining
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
DialogResult = True
' Aggiorno i parametri dei tagli diretti
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
DialogResult = False
' Aggiorno i parametri dei tagli diretti
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End Sub
End Class
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB