Compare commits

...

2 Commits

Author SHA1 Message Date
NicolaP 6a894e9d33 Gestione lavorazione diretta con foretto 2021-09-16 11:42:23 +02:00
NicolaP 97b78f584a Creazione pagina per lavorazione diretta con Foretto 2021-09-15 19:38:56 +02:00
8 changed files with 729 additions and 18 deletions
+33 -17
View File
@@ -60,7 +60,8 @@
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Button Name="ManualBtn" Grid.Column="2" Grid.Row="0"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
@@ -113,7 +114,21 @@
</Grid>
</Button>
<Button Name="FlatteningCutBtn" Grid.Row="4"
<Button Name="SingleDrillBtn" Grid.Row="4"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Foro-singoloImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SingleDrillTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="FlatteningCutBtn" Grid.Row="5"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
@@ -126,25 +141,26 @@
</Grid>
</Button>
<Button Name="PolishingBtn" Grid.Row="5"
<Button Name="PolishingBtn" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Button Name="CopyTemplateBtn" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="CopyTemplateTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="CopyTemplateBtn" Grid.Row="7"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="CopyTemplateTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="SawTestBtn" Grid.Row="7"
<Button Name="SawTestBtn" Grid.Row="8"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
</Grid>
</Grid>
</Grid>
+138
View File
@@ -8,6 +8,7 @@ Public Class DirectCutPageUC
Friend m_MachineButtons As MachineButtonsUC
Friend m_ManualAxesMove As ManualAxesMoveUC
Friend m_SingleCut As SingleCutUC
Friend m_SingleDrill As SingleDrillUC
' nuova finestra per i comandi per il taglio manuale nuovo
Friend m_SingleCutAuto As SingleCutAuto
Friend m_MultipleCut As MultipleCut
@@ -18,6 +19,7 @@ Public Class DirectCutPageUC
Friend m_SawTest As SawTestUC
Friend m_ControlsMachineButton As ControlsMachineButtonUC
Friend m_VacuumMachineButton As VacuumMachineButtonUC
' Stato di visualizzazione della macchina
Friend m_bShowMachine As Boolean = False
Friend m_nMachLook As Integer = MCH_LOOK.ALL
@@ -50,6 +52,7 @@ Public Class DirectCutPageUC
CopyTemplate
SawTest
SingleCutAuto
SingleDrill
End Enum
Private Sub DirectCutPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
@@ -60,6 +63,7 @@ Public Class DirectCutPageUC
m_MachineButtons = New MachineButtonsUC
m_ManualAxesMove = New ManualAxesMoveUC
m_SingleCut = New SingleCutUC
m_SingleDrill = New SingleDrillUC
m_MultipleCut = New MultipleCut
m_GridCut = New GridCut
m_FlatteningCut = New FlatteningCut
@@ -80,6 +84,7 @@ Public Class DirectCutPageUC
Else
m_SingleCut.SetValue(Grid.RowProperty, 1)
End If
m_SingleDrill.SetValue(Grid.RowProperty, 1)
m_MultipleCut.SetValue(Grid.RowProperty, 1)
m_GridCut.SetValue(Grid.RowProperty, 1)
m_FlatteningCut.SetValue(Grid.RowProperty, 1)
@@ -109,6 +114,8 @@ Public Class DirectCutPageUC
ManualTxt.Text = EgtMsg(90201)
'SingleCutBtn.Content = EgtMsg(90202)
SingleCutTxt.Text = EgtMsg(90202)
'SingleDrillBtn.Content = "Foro singolo"
SingleDrillTxt.Text = EgtMsg(90258)
'MultipleCutBtn.Content = EgtMsg(90203)
MultipleCutTxt.Text = EgtMsg(90203)
'GridCutBtn.Content = EgtMsg(90204)
@@ -120,6 +127,7 @@ Public Class DirectCutPageUC
CopyTemplateTxt.Text = EgtMsg(90209)
SawTestBtn.Content = EgtMsg(90207)
' nuovi bottoni 20/05/2021 - modifica specifiche 04/08/2021
Dim AxesNumber = GetPrivateProfileInt(S_AXES, K_AXESNUM, 5, m_MainWindow.GetMachIniFile())
Dim x As Integer = GetPrivateProfileInt(S_NCDATA, K_NEWCONSOLE, 0, m_MainWindow.GetMachIniFile())
@@ -199,6 +207,9 @@ Public Class DirectCutPageUC
ElseIf m_ActiveDirectCutPage = DirectCutPages.SawTest Then
LeftButtonGrid.Children.Add(m_SawTest)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.SingleDrill Then
LeftButtonGrid.Children.Add(m_SingleDrill)
Return
End If
' Caso standard
@@ -297,6 +308,11 @@ Public Class DirectCutPageUC
m_ActiveDirectCutPage = DirectCutPages.SawTest
End Sub
Private Sub SingleDrillBtn_Click(sender As Object, e As RoutedEventArgs) Handles SingleDrillBtn.Click
LeftButtonGrid.Children.Add(m_SingleDrill)
m_ActiveDirectCutPage = DirectCutPages.SingleDrill
End Sub
Private Sub ControlsMachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles ControlsMachineBtn.Click
If ControlsMachineBtn.IsChecked Then
m_ControlsMachineButton = New ControlsMachineButtonUC
@@ -427,6 +443,8 @@ Public Class DirectCutPageUC
LeftButtonGrid.Children.Remove(m_CopyTemplate)
Case DirectCutPages.SawTest
LeftButtonGrid.Children.Remove(m_SawTest)
Case DirectCutPages.SingleDrill
LeftButtonGrid.Children.Remove(m_SingleDrill)
End Select
If ControlsMachineBtn.IsChecked Then
MachineButtonGrid.Children.Remove(m_ControlsMachineButton)
@@ -444,4 +462,124 @@ Public Class DirectCutPageUC
End Sub
'' ------------------------ GESTIONE SECONDA PAGINA ------------------------
'Private Sub ClearButton(nCount As Integer)
' Dim nEndIndex As Integer
' If m_bIsFirstPage Then
' nEndIndex = If(nCount < 8, nCount, 8)
' Else
' nEndIndex = If(nCount < 16, nCount - 8, 8)
' End If
' For index As Integer = 1 To nEndIndex
' GetLabel(index).Text = String.Empty
' GetImage(index).Source = Nothing
' GetButton(index).Visibility = Windows.Visibility.Visible
' Next
' For index As Integer = nEndIndex + 1 To 8
' GetLabel(index).Text = String.Empty
' GetImage(index).Source = Nothing
' GetButton(index).Visibility = Windows.Visibility.Hidden
' Next
'End Sub
'Private Sub LoadPage()
' Dim nDeltaSecondPage As Integer = 8
' ' Leggo numero di componenti presenti
' Dim nCompoNumber As Integer = GetPrivateProfileInt("Compo", "Count", 0, m_MainWindow.GetIniFile())
' ' Calcolo indici a seconda della pagina in cui sono
' If m_bIsFirstPage Then
' ClearButton(nCompoNumber)
' nDeltaSecondPage = 0
' Else
' ClearButton(nCompoNumber)
' nDeltaSecondPage = 8
' End If
' ' Creazione converter da String a ImageSource
' Dim ImageConverter As New ImageSourceConverter
' Dim ThicknessConverter As New ThicknessConverter
' 'Assegnazione immagine e testo ai Button
' For index As Integer = 1 To 8
' Dim CustomThickness As New Thickness(0)
' Dim nCompoName As Integer = GetPrivateProfileInt("Compo" & index + nDeltaSecondPage, "Name", 0, m_MainWindow.GetIniFile())
' Dim sCompoImage As String = ""
' Dim sCompoImageSource As ImageSource
' 'verifico presenza immagine e la aggiungo
' If GetPrivateProfileString("Compo" & index + nDeltaSecondPage, "Image", "", sCompoImage, m_MainWindow.GetIniFile()) <> 0 Then
' Try
' sCompoImageSource = ImageConverter.ConvertFromString(m_MainWindow.GetResourcesDir() & "\" & sCompoImage)
' GetImage(index).Height = 65
' GetImage(index).Width = 65
' GetImage(index).Source = sCompoImageSource
' Catch ex As Exception
' EgtOutLog("Error loading image " & sCompoImage)
' sCompoImage = String.Empty
' GetImage(index).Height = 0
' GetImage(index).Width = 0
' CustomThickness.Right = 0
' GetImage(index).Margin = CustomThickness
' End Try
' Else
' 'Se non c'è l'immagine azzero la distanza tra testo e immagine
' CustomThickness.Right = 0
' GetImage(index).Margin = CustomThickness
' End If
' 'verifico presenza testo
' If nCompoName > 0 Then
' Dim sCompoName As String = EgtMsg(MSG_COMPONENTPAGEUC + nCompoName)
' 'verifico presenza immagine
' If sCompoImage.Length > 0 Then
' 'se la lunghezza del testo è maggiore di 15 lo taglio
' If sCompoName.Length > 15 Then
' sCompoName = sCompoName.Substring(0, 15)
' End If
' GetLabel(index).Text = sCompoName
' 'Se ci sono sia testo che immagine imposto un margine di 10
' CustomThickness.Right = 10
' GetImage(index).Margin = CustomThickness
' Else
' 'se l'immagine non c'è e il testo è maggiore di 20 lo taglio
' If sCompoName.Length > 20 Then
' sCompoName = sCompoName.Substring(0, 20)
' End If
' GetLabel(index).Text = sCompoName
' End If
' Else
' 'Se non c'è testo azzero la distanza tra testo e immagine
' CustomThickness.Right = 0
' GetImage(index).Margin = CustomThickness
' End If
' Next
'End Sub
'' Gestione bottone altri componenti
'Private Sub Compo9_Click(sender As Object, e As RoutedEventArgs) Handles Compo9.Click
' If m_bIsFirstPage Then
' m_bIsFirstPage = False
' LoadPage()
' 'Compo9.SetValue(Grid.ColumnProperty, 1)
' 'Compo9.SetValue(Grid.ColumnSpanProperty, 1)
' 'ImageCompo9.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NumericKeyboardArrow.png", UriKind.Relative))
' 'ImageCompo9.Visibility = Windows.Visibility.Visible
' 'LabelCompo9.Visibility = Windows.Visibility.Hidden
' Compo9.SetValue(Grid.ColumnProperty, 0)
' Compo9.SetValue(Grid.ColumnSpanProperty, 2)
' ImageCompo9.Visibility = Windows.Visibility.Hidden
' LabelCompo9.Visibility = Windows.Visibility.Visible
' Else
' m_bIsFirstPage = True
' LoadPage()
' Compo9.SetValue(Grid.ColumnProperty, 0)
' Compo9.SetValue(Grid.ColumnSpanProperty, 2)
' ImageCompo9.Visibility = Windows.Visibility.Hidden
' LabelCompo9.Visibility = Windows.Visibility.Visible
' End If
'End Sub
End Class
+91
View File
@@ -0,0 +1,91 @@
<UserControl x:Class="SingleDrillUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
mc:Ignorable="d"
d:DesignHeight="597.3" d:DesignWidth="256">
<!--<Border CornerRadius="{StaticResource Page_CornerRadius}" Background="{DynamicResource OmagCut_LightGray}">-->
<Border Style="{DynamicResource OmagCut_DirectCutPageBorder}">
<!-- Definizione della Grid SingleCut -->
<Grid Name="SingleCutGrid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ToggleButton Name="Point1Btn" Grid.Column="0"
Style="{DynamicResource OmagCut_YellowToggleButton}"/>
</Grid>
<ComboBox Name="PointModeCmBx" Grid.Row="1" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_ComboBox}" Margin="6,0,6,0">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Grid Grid.Row="9" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Name="XcoordTxBl" Grid.Column="0" Text="X"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="XcoordTxBx" Grid.Column="1" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="YcoordTxBl" Grid.Column="2" Text="Y"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="YcoordTxBx" Grid.Column="3" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
</Grid>
<Grid Grid.Row="11" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="SimulBtn" Grid.Column="0" Style="{DynamicResource OmagCut_GradientBlueTextButton}"/>
<Button Name="OkBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueTextButton}"/>
<Button Name="ExitBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</UserControl>
+452
View File
@@ -0,0 +1,452 @@
Imports EgtUILib
Public Class SingleDrillUC
' Riferimenti a pagine
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Flag di simulazione in corso
Private m_bSimul As Boolean = False
' riferimento alla macchina corrente
Private m_CurrentMachine As CurrentMachine
' --------------------- VARIABILI PRESENTI NEL TAGLIO SINGOLO ---------------------
' Origine tavola e dati grezzo
Private m_bRawOk As Boolean = False
Private m_ptTabOri As Point3d
Private m_ptRawMin As Point3d
Private m_ptRawMax As Point3d
' Parametri P1 acquisito
Private m_bPointP1Ok As Boolean = False
Private m_ptTipP1 As Point3d
Private m_vtToolP1 As Vector3d
' Parametri P2 acquisito
Private m_bPointP2Ok As Boolean = False
Private m_ptTipP2 As Point3d
Private m_vtToolP2 As Vector3d
' Parametri della lavorazione
Private m_bCutOk As Boolean = False
' Array delle modalità di acquisizione dei punti
Private m_PointsModeArray(2) As String
' Punto selezionato nel disegno
Private m_ptPrev As Point3d
' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL
Private m_dDiameter As Double = 0
' Costanti
Private Const MAX_TAB_DEPTH As Double = 10.0
Private Const MIN_CUT_LEN As Double = 10.0
Private Const MAX_SIDE_ANG As Double = 60.0
' Costanti che indicano la modalità di acquisizione dei punti
Private Enum PT_MODE As Integer
DRILL = 0
LASER = 1
DRAW = 2
End Enum
Private Sub SingleCut_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' Variabile che accorcia il riferimento alla macchina corrente
m_CurrentMachine = m_MainWindow.m_CurrentMachine
' Creo lista modalità di acquisizione punto
m_PointsModeArray(PT_MODE.DRILL) = EgtMsg(90752)
m_PointsModeArray(PT_MODE.LASER) = EgtMsg(MSG_DIRECTCUTPAGEUC + 12)
m_PointsModeArray(PT_MODE.DRAW) = EgtMsg(MSG_DIRECTCUTPAGEUC + 25)
' la associo alla combobox
PointModeCmBx.ItemsSource = m_PointsModeArray
' Assegno messaggi
Point1Btn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 10)
SimulBtn.Content = EgtMsg(MSG_CADCUTPAGEUC + 1)
OkBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 30)
End Sub
Private Sub SingleDrill_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' recupero informazioni del foretto usato
EgtTdbSetCurrTool(m_CurrentMachine.sCurrDrill)
EgtTdbGetCurrToolParam(MCH_TP.DIAM, m_dDiameter)
' Attivo la pagina
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_bActive = True
' Se rientro da simulazione
If m_bSimul Then
m_bSimul = False
' Disabilito registrazione progetto modificato
EgtDisableModified()
' Aggiorno visualizzazione
SetMachineInCurrPos()
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook)
EgtDraw()
Return
End If
' Disabilito registrazione progetto modificato
EgtDisableModified()
' Creo layer temporaneo per crocette
m_nTempLay = EgtCreateGroup(GDB_ID.ROOT)
EgtSetLevel(m_nTempLay, GDB_LV.TEMP)
' Origine tavola
m_bRawOk = True
If Not EgtGetTableRef(1, m_ptTabOri) Then
m_bRawOk = False
EgtOutLog("Error on TableRef1")
End If
' Dati del grezzo
If Not GetRawBox(m_ptRawMin, m_ptRawMax) Then
m_bRawOk = False
EgtOutLog("Error on RawBox")
End If
' Reset punto acquisito
m_bPointP1Ok = False
m_bPointP2Ok = False
' Inizializzo primo punto acquisito dal disegno
m_ptPrev = m_ptTipP1 + (m_ptTabOri - Point3d.ORIG())
m_ptPrev.z = m_ptRawMax.z
' Disegno crocetta che indica il punto acquisito
CreateCross(m_nTempLay, m_ptPrev)
' Imposto modalità di acquisizione punti
PointModeCmBx.SelectedIndex = PT_MODE.DRAW
SetCoordVisibility(True)
ShowCoord()
' Reset taglio e disabilito bottone esecuzione
m_bCutOk = False
UpdateSimulOkBtn()
' Deseleziono bottone primo punto
Point1Btn.IsChecked = False
' Aggiorno visualizzazione
EgtDraw()
End Sub
' esco dalla pagina di foro diretto
Friend Sub SingleCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSX, DoubleToString(m_ptTipP1.x, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSY, DoubleToString(m_ptTipP1.y, 2), m_MainWindow.GetIniFile())
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
EraseDirectCutPart()
' Riattivo eventuali lavorazioni presenti
ActivateAllMachinings()
' Abilito registrazione progetto modificato
EgtEnableModified()
' Nascondo la macchina
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = False
EgtSetMachineLook(MCH_LOOK.TAB)
EgtDraw()
End If
' Dichiaro pagina non attiva
m_bActive = False
End Sub
Private Sub UpdateSimulOkBtn()
If m_bCutOk Then
SimulBtn.IsEnabled = True
SimulBtn.Foreground = Brushes.Black
OkBtn.IsEnabled = True
OkBtn.Foreground = Brushes.Black
Else
SimulBtn.IsEnabled = False
SimulBtn.Foreground = Brushes.DarkGray
OkBtn.IsEnabled = False
OkBtn.Foreground = Brushes.DarkGray
End If
End Sub
Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene
' deselezione il bottone per acquisizione
Point1Btn.IsChecked = False
' Verifico di essere il gestore attivo
If Not m_bActive Then Return
' Si può selezionare solo con il tasto sinistro e se stato NULL
If e.Button <> Windows.Forms.MouseButtons.Left Or
Not m_CurrProjPage.CurrentProjectScene.IsStatusNull() Then
Return
End If
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Acquisisco punto da disegno
EgtUnProjectPoint(e.Location, m_ptPrev)
' Aggiusto Z punto acquisito (è in globale)
Dim dPtPrevZ As Double = m_ptPrev.z
m_ptPrev.z = m_ptRawMax.z
' Se direzione di vista calcolabile e da sopra posso aggiustare anche XY
Dim dAngVertDeg, dAngHorizDeg As Double
If EgtGetGenericView(dAngVertDeg, dAngHorizDeg) Then
Dim vtDir As Vector3d = Vector3d.FromSpherical(1, dAngVertDeg, dAngHorizDeg)
If vtDir.z > EPS_SMALL Then
m_ptPrev.z = dPtPrevZ
m_ptPrev += vtDir * (m_ptRawMax.z - m_ptPrev.z) / vtDir.z
End If
End If
' Visualizzo coordinate (rispetto a 0 tavola)
ShowCoord()
' Disegno crocetta che indica il punto acquisito
CreateCross(m_nTempLay, m_ptPrev)
EgtDraw()
End Sub
Private Sub PointModeCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles PointModeCmBx.SelectionChanged
SetCoordVisibility(PointModeCmBx.SelectedIndex = PT_MODE.DRAW)
End Sub
Private Sub Point1Btn_Click(sender As Object, e As RoutedEventArgs) Handles Point1Btn.Click
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Reset punto non acquisito
m_bPointP1Ok = False
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Se acquisizione lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.DRILL Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Ricavo dati Foretto corrente
Dim sDrill As String = m_MainWindow.m_CurrentMachine.sCurrDrill
' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente)
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(sDrill, "H1", 2) Then Return
' Altrimenti da lama
Else
' Imposto la lama corrente
If Not EgtSetCalcTool(sDrill, "H1", 2) Then Return
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return
End If
' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True
' Altrimenti punto da click di mouse
Else
' Assegno punto selezionato nel disegno a m_ptTipP1
m_ptTipP1 = m_ptPrev
' 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.sCurrDrill
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
End If
' Disegno il taglio
CreateSingleDrill()
' Disegno la macchina nella sua posizione reale
SetMachineInCurrPos()
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook)
EgtDraw()
' Seleziono il bottone per indicare che il primo punto è stato acquisito
Point1Btn.IsChecked = True
End Sub
Private Sub XcoordTxBx_EgtClosed(sender As Object, e As EventArgs) Handles XcoordTxBx.EgtClosed
' Recupero il valore della coordinata (in 0 Tab)
Dim dXcoord As Double = 0
StringToLen(XcoordTxBx.Text, dXcoord)
XcoordTxBx.Text = LenToString(dXcoord, 2)
' lo assegno al punto corrente (in 0 Macc)
m_ptPrev.x = dXcoord + m_ptTabOri.x
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Disegno crocetta che indica il punto acquisito
CreateCross(m_nTempLay, m_ptPrev)
EgtDraw()
End Sub
Private Sub YcoordTxBx_EgtClosed(sender As Object, e As EventArgs) Handles YcoordTxBx.EgtClosed
' Recupero il valore della coordinata (in 0 Tab)
Dim dYcoord As Double = 0
StringToLen(YcoordTxBx.Text, dYcoord)
YcoordTxBx.Text = LenToString(dYcoord, 2)
' lo assegno al punto corrente (in 0 Macc)
m_ptPrev.y = dYcoord + m_ptTabOri.y
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Disegno crocetta che indica il punto acquisito
CreateCross(m_nTempLay, m_ptPrev)
EgtDraw()
End Sub
Private Sub SimulBtn_Click(sender As Object, e As RoutedEventArgs) Handles SimulBtn.Click
' Verifico ci sia un taglio valido
If Not m_bCutOk Then Return
' Salvo il progetto con le lavorazioni
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "DirectProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath, False)
' Predispongo passaggio a simulazione
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
m_MainWindow.m_ActivePage = MainWindow.Pages.Simulation
End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
#If TRIAL Then
m_CurrProjPage.SetWarningMessage( "Trial Version")
#Else
' Verifico non sia versione Ufficio
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then
m_CurrProjPage.SetWarningMessage("Office Version")
Return
End If
' Verifico ci sia un taglio valido
If Not m_bCutOk Then Return
' Salvo il progetto con le lavorazioni
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "DirectProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath, False)
' Genero file CNC (lancio anche se errore in precedenza)
Dim sCncPath As String = m_MainWindow.GetCncDir() & "\DirectCut" & m_MainWindow.m_CurrentMachine.sIsoFileExt
Dim bOk As Boolean = EgtGenerate(sCncPath, "OmagCut ver." & m_MainWindow.GetVersion())
' Se errore in generazione, segnalo l'errore ed esco
If Not bOk Then
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return
End If
' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then
' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript(True)
End If
#End If
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateSingleDrill() As Boolean
' Verifico sia definito il punto iniziale e il grezzo
If Not m_bPointP1Ok Or Not m_bRawOk Then
m_bCutOk = False
Return False
End If
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Spessore grezzo
Dim dRawHeight As Double = m_ptRawMax.z - m_ptRawMin.z
' Recupero spessore lama corrente
Dim sDrill As String = m_MainWindow.m_CurrentMachine.sCurrDrill
EgtTdbSetCurrTool(sDrill)
Dim dThick As Double = 0
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
' Rimuovo eventuale vecchio pezzo per taglio diretto
EraseDirectCutPart()
' Disattivo eventuali lavorazioni presenti
DeactivateAllMachinings()
' Creo nuovo pezzo per il taglio diretto
Dim nPartId = CreateDirectCutPart()
Dim nLayerId = EgtCreateGroup(nPartId)
EgtSetName(nLayerId, NAME_INLOOP)
' Creo il Drill
Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0
' Creo layer per crocetta di riferimento
Dim nCrossLayerId = EgtCreateGroup(nPartId)
' Aggiungo crocetta/e
If m_bPointP1Ok Then
CreateCross(nCrossLayerId, ptStart)
End If
Dim nCutId = EgtCreateCircle(nLayerId, ptStart, m_dDiameter / 2)
' Calcolo punto di inserimento nel grezzo
Dim ptMin, ptMax As Point3d
EgtGetBBoxGlob(nPartId, GDB_BB.STANDARD, ptMin, ptMax)
Dim ptIns As Point3d = ptMin + (m_ptTabOri - m_ptRawMin)
ptIns.z = dRawHeight
' Inserisco il pezzo nel grezzo
EgtAddPartToRawPart(nPartId, ptIns, m_MainWindow.m_CurrentProjectPageUC.m_nRawId)
' Inserisco la lavorazione
m_bCutOk = AddMachinings(nPartId) AndAlso UpdateAllMachiningsToolpaths()
EgtSetCurrPhase(1)
' Eventuale eliminazione Home finale
If Not m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome Then
RemoveFinalHome()
End If
UpdateSimulOkBtn()
Return m_bCutOk
End Function
' crea una croce nel punto indicato e rappresenta il diametro dell'utensile corrente
Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean
' Aggiungo crocette
ptP += New Vector3d(0, 0, 0.15)
Dim vtCrossX As New Vector3d(20, 0, 0)
Dim vtCrossY As New Vector3d(0, 20, 0)
Dim nCrossId1 = EgtCreateLine(nLayerId, ptP + (-vtCrossX), ptP + vtCrossX)
EgtSetColor(nCrossId1, New Color3d(255, 0, 0))
Dim nCrossId2 = EgtCreateLine(nLayerId, ptP + (-vtCrossY), ptP + vtCrossY)
EgtSetColor(nCrossId2, New Color3d(255, 0, 0))
Dim nPntId = EgtCreateGeoPoint(nLayerId, ptP)
EgtSetColor(nPntId, New Color3d(255, 0, 0))
Dim nCirleId = EgtCreateCircle(nLayerId, ptP, m_dDiameter / 2)
EgtSetColor(nCirleId, New Color3d(0, 255, 0))
Return True
End Function
Private Sub SetCoordVisibility(bShow As Boolean)
XcoordTxBl.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
XcoordTxBx.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
YcoordTxBl.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
YcoordTxBx.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
End Sub
Private Sub ShowCoord()
Dim ptText As Point3d = m_ptPrev
ptText.ToLoc(New Frame3d(m_ptTabOri))
XcoordTxBx.Text = LenToString(ptText.x, 2)
YcoordTxBx.Text = LenToString(ptText.y, 2)
End Sub
Private Function SetMachineInCurrPos() As Boolean
' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return False
' Recupero il nome degli assi macchina
Dim sL1 As String = String.Empty
Dim sL2 As String = String.Empty
Dim sL3 As String = String.Empty
Dim sR1 As String = String.Empty
Dim sR2 As String = String.Empty
If Not m_MainWindow.m_CNCommunication.GetAxesNames(sL1, sL2, sL3, sR1, sR2) Then Return False
' Visualizzo macchina in posizione
EgtSetAxisPos(sL1, dL1)
EgtSetAxisPos(sL2, dL2)
EgtSetAxisPos(sL3, dL3)
EgtSetAxisPos(sR1, dR1)
EgtSetAxisPos(sR2, dR2)
Return True
End Function
End Class
+10
View File
@@ -173,6 +173,9 @@
<Compile Include="DirectCuts\SingleCutAuto.xaml.vb">
<DependentUpon>SingleCutAuto.xaml</DependentUpon>
</Compile>
<Compile Include="DirectCuts\SingleDrillUC.xaml.vb">
<DependentUpon>SingleDrillUC.xaml</DependentUpon>
</Compile>
<Compile Include="DrawImport\AlzFrontUC.xaml.vb">
<DependentUpon>AlzFrontUC.xaml</DependentUpon>
</Compile>
@@ -400,6 +403,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DirectCuts\SingleDrillUC.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DrawImport\AlzFrontUC.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -1089,6 +1096,9 @@
<ItemGroup>
<Resource Include="Resources\NewIcons\Sezione-cornice.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Foro-singolo.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
@@ -172,6 +172,7 @@
<BitmapImage x:Key="Taglio-grigliaImg" UriSource="Resources/NewIcons/Taglio-griglia.png"></BitmapImage>
<BitmapImage x:Key="Taglio-multiploImg" UriSource="Resources/NewIcons/Taglio-multiplo.png"></BitmapImage>
<BitmapImage x:Key="Taglio-singoloImg" UriSource="Resources/NewIcons/Taglio-singolo.png"></BitmapImage>
<BitmapImage x:Key="Foro-singoloImg" UriSource="Resources/NewIcons/Foro-singolo.png"></BitmapImage>
<BitmapImage x:Key="SpianaturaImg" UriSource="Resources/NewIcons/Spianatura.png"></BitmapImage>
<BitmapImage x:Key="Movimento-manualeImg" UriSource="Resources/NewIcons/Movimento-manuale.png"></BitmapImage>
<BitmapImage x:Key="Copia-dimaImg" UriSource="Resources/NewIcons/Copia-dima.png"></BitmapImage>
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

+4 -1
View File
@@ -73,6 +73,9 @@ Public Class VeinMatchingWindow
Dim nTxrMaxLinPix As Integer = GetPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096, m_MainWindow.GetIniFile())
EgtSetTextureMaxLinPixels(nTxrMaxLinPix)
m_bFirst = False
' --------------- ASSEMBLY 3D ----------------
' disabilito il bottone per il disegno dell'assemblato
End If
' inibisco selezione diretta da Scene
VeinMatchingScene.SetStatusNull()
@@ -164,7 +167,7 @@ Public Class VeinMatchingWindow
EgtSetCurrentContext(VeinMatchingScene.GetCtx())
' Se selezione riuscita, la eseguo anche in VME
If bSelected Then EgtSelectObj(m_nIdToSel)
' Se deselezione da eseguire
' Se deselezione da eseguire
ElseIf m_nIdToDesel <> GDB_ID.NULL Then
' Eseguo la deselezione in Nesting
Dim bDeselected As Boolean = False