e130c52a07
- gestione testi su pezzi da colore configurato da utente.
1027 lines
44 KiB
VB.net
1027 lines
44 KiB
VB.net
Imports System.Globalization
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib
|
|
|
|
Public Class DrawPageUC
|
|
|
|
' Constants
|
|
Private Const NUM_VAR As Integer = 10
|
|
Private Const LUA_CMP_VARS As String = "CMP"
|
|
Private Const LUA_CMP_DRAW As String = "CMP_Draw"
|
|
Private Const INFO_VAR As String = "Var"
|
|
Private Const INFO_CMP As String = "CMP"
|
|
Private Const INFO_ID As String = "ID"
|
|
Friend Const LUA_CMP_INDEX As String = LUA_CMP_VARS & ".Ind"
|
|
Friend Const LUA_CMP_INTERNAL As String = LUA_CMP_VARS & ".Int"
|
|
Friend Const LUA_REMOVEHOLE As String = "RemoveHole"
|
|
' Costanti layer componenti
|
|
Friend Const COMPO_LAYER_AUX As String = "LayAux"
|
|
Friend Const COMPO_LAYER_QUOTATURE As String = "Quotature"
|
|
Friend Const COMPO_LAYER_ETICHETTE As String = "Etichette"
|
|
|
|
'Riferimento alla MainWindow
|
|
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
|
|
' Dichiarazione SceneButtons
|
|
Friend m_SceneButtons As SceneButtonsUC
|
|
|
|
' Dichiarazione delle Page UserControl
|
|
Friend m_MainComponentPage As MainComponentPageUC
|
|
Friend m_CompoDimension As CompoDimensionUC
|
|
Friend m_SideAngleUC As SideAngleUC
|
|
|
|
' Variabile che indica se componenti interni o esterni
|
|
Friend m_bInternalCompo As Boolean = False
|
|
|
|
' Properties
|
|
Private m_sCompoDir As String = String.Empty
|
|
Private m_sCompoName As String = String.Empty
|
|
Private m_CVars(NUM_VAR - 1) As CompoVar
|
|
Friend m_bDrawOk As Boolean = False
|
|
Private m_bFirst As Boolean = True
|
|
|
|
' Trf Data
|
|
Private m_bTrfData As Boolean = False
|
|
Private m_TrfOrderCode As String = ""
|
|
Private m_TrfOrderDesc As String = ""
|
|
Private m_TrfPartCode As String = ""
|
|
Private m_TrfMatCode As String = ""
|
|
Private m_TrfSurfCode As String = ""
|
|
Private m_TrfThickness As Double = 0
|
|
|
|
|
|
Friend ReadOnly Property sCompoName As String
|
|
Get
|
|
Return m_sCompoName
|
|
End Get
|
|
End Property
|
|
|
|
Friend Sub ResetCompoName()
|
|
m_sCompoName = String.Empty
|
|
End Sub
|
|
|
|
Friend Function GetParamType(nI As Integer) As Integer
|
|
If nI >= 0 And nI < NUM_VAR Then Return m_CVars(nI).m_nType
|
|
Return 0
|
|
End Function
|
|
|
|
' Dichiarazione Scene
|
|
Friend WithEvents DrawScene As New Scene
|
|
Dim DrawSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost
|
|
|
|
'Riferimento alla pagina correntemente attiva
|
|
Friend m_ActiveComponentPage As Pages
|
|
|
|
' Modalità aggiornamento variabili
|
|
Friend m_bShowVar As Boolean = False
|
|
|
|
' Pagina corrente prima di aprire SideAngle
|
|
Private m_PrevSideAnglePage As Pages
|
|
|
|
' Indentificativo del layer selezionato
|
|
Private m_nSelectedLayer As Integer = GDB_ID.NULL
|
|
Friend ReadOnly Property SelectedLayer As Integer
|
|
Get
|
|
Return m_nSelectedLayer
|
|
End Get
|
|
End Property
|
|
|
|
Enum Pages
|
|
MainComponent
|
|
SecondaryComponent
|
|
InternalComponent
|
|
Draw
|
|
CompoDimension
|
|
SideAngle
|
|
End Enum
|
|
|
|
Private Sub DrawPage_Initialized(sender As Object, e As EventArgs)
|
|
|
|
' Creazione delle Page UserControl
|
|
m_SceneButtons = New SceneButtonsUC
|
|
m_MainComponentPage = New MainComponentPageUC
|
|
m_CompoDimension = New CompoDimensionUC
|
|
m_SideAngleUC = New SideAngleUC
|
|
' Posizionemento nella griglia delle Page UserControl
|
|
m_SceneButtons.SetValue(Grid.ColumnProperty, 4)
|
|
m_MainComponentPage.SetValue(Grid.ColumnSpanProperty, 2)
|
|
m_MainComponentPage.SetValue(Grid.RowSpanProperty, 4)
|
|
m_CompoDimension.SetValue(Grid.ColumnSpanProperty, 2)
|
|
m_CompoDimension.SetValue(Grid.RowSpanProperty, 4)
|
|
m_SideAngleUC.SetValue(Grid.RowSpanProperty, 1)
|
|
UpperButtonGrid.Children.Add(m_SceneButtons)
|
|
|
|
' Assegnazione scena all'host e posizionamento nella ImportPageGrid
|
|
DrawSceneHost.Child = DrawScene
|
|
DrawSceneHost.SetValue(Grid.ColumnProperty, 1)
|
|
DrawSceneHost.SetValue(Grid.RowProperty, 1)
|
|
Me.DrawPageGrd.Children.Add(DrawSceneHost)
|
|
|
|
' Imposto i messaggi letti dal file dei messaggi
|
|
PartNameTxBl.Text = EgtMsg(MSG_DRAWPAGEUC + 8) ' Nome
|
|
PartNumTxBl.Text = EgtMsg(MSG_DRAWPAGEUC + 1) ' Part Number - Numero pezzi
|
|
DimensionBtn.Content = EgtMsg(MSG_DRAWPAGEUC + 2) ' Misure
|
|
SideAngleBtn.Content = EgtMsg(MSG_DRAWPAGEUC + 3) ' Inclina lati
|
|
DripCutBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 8) ' Incidi da sotto
|
|
TopTxBl.Text = EgtMsg(MSG_DRAWPAGEUC + 4) ' Indica Lato Sopra
|
|
TrfDataBtn.Content = EgtMsg(MSG_DRAWPAGEUC + 9) ' Dati Trf
|
|
|
|
' Abilitazione lavorazioni da sotto da chiave
|
|
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
|
|
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
|
|
|
|
' Abilitazione Nome/TrfData
|
|
m_bTrfData = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.TRF_IMPORT) And
|
|
(GetPrivateProfileInt(S_COMPO, K_TRFDATA, 0, m_MainWindow.GetIniFile()) <> 0)
|
|
If Not m_bTrfData Then
|
|
PartNameTxBl.Visibility = Windows.Visibility.Visible
|
|
PartNameTxBx.Visibility = Windows.Visibility.Visible
|
|
TrfDataBtn.Visibility = Windows.Visibility.Hidden
|
|
Else
|
|
PartNameTxBl.Visibility = Windows.Visibility.Hidden
|
|
PartNameTxBx.Visibility = Windows.Visibility.Hidden
|
|
TrfDataBtn.Visibility = Windows.Visibility.Visible
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub DrawPage_Loaded(sender As Object, e As RoutedEventArgs)
|
|
|
|
If m_bFirst Then
|
|
' imposto colore di default
|
|
Dim DefColor As New Color3d(0, 0, 0)
|
|
GetPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor, m_MainWindow.GetIniFile())
|
|
DrawScene.SetDefaultMaterial(DefColor)
|
|
' imposto colori sfondo
|
|
Dim BackTopColor As New Color3d(192, 192, 192)
|
|
GetPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor, m_MainWindow.GetIniFile())
|
|
Dim BackBotColor As New Color3d(BackTopColor)
|
|
GetPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor, m_MainWindow.GetIniFile())
|
|
DrawScene.SetViewBackground(BackTopColor, BackBotColor)
|
|
' imposto colore di evidenziazione
|
|
Dim MarkColor As New Color3d(255, 255, 0)
|
|
GetPrivateProfileColor(S_SCENE, K_MARK, MarkColor, m_MainWindow.GetIniFile())
|
|
DrawScene.SetMarkMaterial(MarkColor)
|
|
' imposto colore per superfici selezionate
|
|
Dim SelSurfColor As New Color3d(255, 255, 192)
|
|
GetPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor, m_MainWindow.GetIniFile())
|
|
DrawScene.SetSelSurfMaterial(SelSurfColor)
|
|
' imposto tipo e colore del rettangolo di zoom
|
|
Dim bOutline As Boolean = True
|
|
Dim ZwColor As New Color3d(0, 0, 0)
|
|
GetPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, bOutline, ZwColor, m_MainWindow.GetIniFile())
|
|
DrawScene.SetZoomWinAttribs(bOutline, ZwColor)
|
|
' imposto colore della linea di distanza
|
|
Dim DstLnColor As New Color3d(255, 0, 0)
|
|
GetPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor, m_MainWindow.GetIniFile())
|
|
DrawScene.SetDistLineMaterial(DstLnColor)
|
|
' imposto parametri OpenGL
|
|
Dim nDriver As Integer = GetPrivateProfileInt(S_OPENGL, K_DRIVER, 3, m_MainWindow.GetIniFile())
|
|
Dim b2Buff As Boolean = (GetPrivateProfileInt(S_OPENGL, K_DOUBLEBUFFER, 1, m_MainWindow.GetIniFile()) <> 0)
|
|
Dim nColorBits As Integer = GetPrivateProfileInt(S_OPENGL, K_COLORBITS, 32, m_MainWindow.GetIniFile())
|
|
Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile())
|
|
DrawScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
|
|
' inizializzo la scena (DB geometrico + visualizzazione)
|
|
DrawScene.Init()
|
|
' dimensione lineare max in pixel delle textures
|
|
Dim nTxrMaxLinPix As Integer = GetPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096, m_MainWindow.GetIniFile())
|
|
EgtSetTextureMaxLinPixels(nTxrMaxLinPix)
|
|
' Imposto griglia
|
|
LoadGridData()
|
|
' leggo direttorio componenti
|
|
GetPrivateProfileString(S_COMPO, K_COMPODIR, "", m_sCompoDir, m_MainWindow.GetIniFile())
|
|
' Imposto componenti esterni
|
|
m_bInternalCompo = False
|
|
m_bFirst = False
|
|
Else
|
|
' Imposto contesto
|
|
EgtSetCurrentContext(DrawScene.GetCtx())
|
|
' Imposto griglia
|
|
LoadGridData()
|
|
End If
|
|
|
|
' inibisco selezione diretta da Scene
|
|
DrawScene.SetStatusNull()
|
|
' pulisco la scena e relativo db
|
|
EgtNewFile()
|
|
EgtDraw()
|
|
|
|
' Seleziono la Tab e la Page di apertura
|
|
VariablesGrd.Children.Remove(m_CompoDimension)
|
|
LeftButtonGrd.Children.Add(m_MainComponentPage)
|
|
m_ActiveComponentPage = Pages.MainComponent
|
|
MessageGrid.Visibility = Windows.Visibility.Hidden
|
|
BackBtn.Visibility = Windows.Visibility.Hidden
|
|
TopGrd.Visibility = Windows.Visibility.Hidden
|
|
PartNameGrd.Visibility = Windows.Visibility.Hidden
|
|
PartNumberGrd.Visibility = Windows.Visibility.Hidden
|
|
|
|
' Valore di default del nome e del numero pezzi
|
|
PartNameTxBx.Text = String.Empty
|
|
PartNumTxBx.Text = "1"
|
|
|
|
' Reset dati TRF
|
|
m_TrfOrderCode = ""
|
|
m_TrfOrderDesc = ""
|
|
m_TrfPartCode = ""
|
|
m_TrfMatCode = ""
|
|
m_TrfSurfCode = ""
|
|
m_TrfThickness = 0
|
|
End Sub
|
|
|
|
Private Sub OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles DrawScene.OnMouseDownScene
|
|
' Si può selezionare solo con il tasto sinistro e se stato NULL
|
|
If e.Button <> Windows.Forms.MouseButtons.Left Or Not DrawScene.IsStatusNull() Then Return
|
|
' Si può selezionare solo se non si sta già editando un componente
|
|
If m_ActiveComponentPage = Pages.InternalComponent Then
|
|
OnMouseDownSceneInternalComponent(e)
|
|
ElseIf m_ActiveComponentPage = Pages.SideAngle Then
|
|
OnMouseDownSceneSideAngle(e)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnMouseDownSceneInternalComponent(e As System.Windows.Forms.MouseEventArgs)
|
|
' Verifico se selezionato indicativo di componente (wall, door o window)
|
|
EgtSetObjFilterForSelWin(False, False, True, False, False)
|
|
Dim nSel As Integer
|
|
EgtSelect(e.Location, 2 * Scene.DIM_SEL, 2 * Scene.DIM_SEL, nSel)
|
|
Dim sCompo As String = String.Empty
|
|
Dim nId As Integer = EgtGetFirstObjInSelWin()
|
|
While nId <> GDB_ID.NULL
|
|
If EgtGetInfo(nId, INFO_CMP, sCompo) Then
|
|
Exit While
|
|
End If
|
|
nId = EgtGetNextObjInSelWin()
|
|
End While
|
|
If String.IsNullOrWhiteSpace(sCompo) Then Return
|
|
' Salvo l'indice della superficie di selezione
|
|
Dim nSurfSelId As Integer = nId
|
|
' Recupero l'indice del componente
|
|
Dim sName As String = String.Empty
|
|
If Not EgtGetName(nId, sName) Then Return
|
|
Dim nCmp As Integer = -1
|
|
If Not StringToInt(sName, nCmp) Then Return
|
|
' Rendo corrente il componente
|
|
m_sCompoName = sCompo & ".lua"
|
|
' Pulisco l'ambiente lua
|
|
ResetLuaVariables()
|
|
' Carico il file
|
|
Dim bOk As Boolean = ExecCompoFile()
|
|
If Not bOk Then
|
|
EgtOutLog("Error in Component " & sCompo)
|
|
End If
|
|
MessageTxBl.Text = ""
|
|
MessageGrid.Background = Brushes.Transparent
|
|
' Leggo le variabili da Lua (per sapere numero, nome e tipo)
|
|
ReadAndShowVariables()
|
|
' Imposto le variabili del componente
|
|
For i As Integer = 1 To NUM_VAR
|
|
' leggo il valore della variabile
|
|
If m_CVars(i - 1) IsNot Nothing Then
|
|
Dim sVar As String = String.Empty
|
|
If EgtGetInfo(nId, "V" & i.ToString(), sVar) Then
|
|
m_CVars(i - 1).FromString(sVar, False)
|
|
' aggiorno la corrispondente variabile lua
|
|
If Not m_CVars(i - 1).ToLua() Then
|
|
Dim sErr As String = String.Empty
|
|
EgtLuaGetLastError(sErr)
|
|
EgtOutLog(sErr)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
ShowVariables()
|
|
' Imposto l'indice del componente
|
|
If Not EgtLuaSetGlobIntVar(LUA_CMP_INDEX, nCmp) Then Return
|
|
' Evidenzio la sua regione di selezione
|
|
EgtSelectObj(nSurfSelId)
|
|
' Rendo visibili le eventuali etichette del componente
|
|
Dim nHLId As Integer = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "HoleLabels")
|
|
While nHLId <> GDB_ID.NULL
|
|
Dim nCmpInfo As Integer = 0
|
|
If EgtGetInfo(nHLId, "ID", nCmpInfo) AndAlso nCmp = nCmpInfo Then
|
|
EgtSetStatus(nHLId, GDB_ST.ON_)
|
|
Exit While
|
|
End If
|
|
nHLId = EgtGetNextName(nHLId, "HoleLabels")
|
|
End While
|
|
DrawScene.ZoomAll()
|
|
' Aggiorno griglia
|
|
LeftButtonGrd.Children.Remove(m_CompoDimension.m_InternalCompoPage)
|
|
VariablesGrd.Children.Add(m_MainWindow.m_DrawPageUC.m_CompoDimension)
|
|
End Sub
|
|
|
|
Private Sub OnMouseDownSceneSideAngle(e As System.Windows.Forms.MouseEventArgs)
|
|
' Se non ci sono loop interni, selezione inutile
|
|
If EgtGetFirstNameInGroup(EgtGetFirstPart(), NAME_INLOOP) = GDB_ID.NULL Then Return
|
|
' Verifico se selezionato indicativo di pezzo
|
|
EgtSetObjFilterForSelWin(False, False, True, False, False)
|
|
Dim nSel As Integer
|
|
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel)
|
|
Dim nId As Integer = EgtGetFirstObjInSelWin()
|
|
While nId <> GDB_ID.NULL
|
|
' Recupero l'identificativo del layer e del pezzo cui appartiene
|
|
Dim nRegLayId As Integer = EgtGetParent(nId)
|
|
Dim nPartId As Integer = EgtGetParent(nRegLayId)
|
|
If EgtIsPart(nPartId) Then
|
|
Dim sRegLayName As String = String.Empty
|
|
EgtGetName(nRegLayId, sRegLayName)
|
|
If (SideAngleBtn.IsChecked And (sRegLayName = NAME_REGION Or sRegLayName = SELECT_REGION_LAYER)) Or (DripCutBtn.IsChecked And sRegLayName = NAME_REGION) Then
|
|
Dim nStat As Integer = GDB_ST.ON_
|
|
EgtGetStatus(nId, nStat)
|
|
If nStat = GDB_ST.SEL Then
|
|
EgtDeselectAll()
|
|
m_nSelectedLayer = GDB_ID.NULL
|
|
SideAngle.WriteSideAngleForNest(DrawScene.GetCtx())
|
|
' Messaggio di selezione da effettuare
|
|
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
|
|
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
|
|
Else
|
|
Dim nLayId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_OUTLOOP)
|
|
Dim nInd As Integer = 0
|
|
EgtGetInfo(nId, "ID", nInd)
|
|
If nInd <> 0 Then
|
|
Dim nInLoopId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_INLOOP)
|
|
While nInLoopId <> GDB_ID.NULL
|
|
Dim nLoopInd As Integer = 0
|
|
EgtGetInfo(nInLoopId, "ID", nLoopInd)
|
|
If nLoopInd = nInd And nInd <> 0 Then
|
|
nLayId = nInLoopId
|
|
Exit While
|
|
End If
|
|
nInLoopId = EgtGetNextName(nInLoopId, NAME_INLOOP)
|
|
End While
|
|
End If
|
|
EgtDeselectAll()
|
|
EgtSelectObj(nId)
|
|
EgtSelectObj(nLayId)
|
|
m_nSelectedLayer = nLayId
|
|
' Pulisco area messaggi
|
|
MessageTxBx.Text = ""
|
|
MessageBrd.Background = Brushes.Transparent
|
|
End If
|
|
m_SideAngleUC.ReLoadSideAnglePage()
|
|
Exit While
|
|
End If
|
|
End If
|
|
nId = EgtGetNextObjInSelWin()
|
|
End While
|
|
End Sub
|
|
|
|
Private Sub OnShowDistanceVector(sender As Object, vtDist As Vector3d) Handles DrawScene.OnShowDistanceVector
|
|
MessageTxBx.Text = DistToString(vtDist)
|
|
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
|
|
End Sub
|
|
|
|
Private Sub LoadGridData()
|
|
Dim dSnapStep As Double = If(EgtUiUnitsAreMM(),
|
|
GetPrivateProfileDouble(S_GRID, K_SNAPSTEP, 10, m_MainWindow.GetIniFile()),
|
|
GetPrivateProfileDouble(S_GRID, K_SNAPSTEPINCH, 12.7, m_MainWindow.GetIniFile()))
|
|
Dim nMinLineSStep As Integer = GetPrivateProfileInt(S_GRID, K_MINLINESSTEP, 1, m_MainWindow.GetIniFile())
|
|
Dim nMajLineSStep As Integer = GetPrivateProfileInt(S_GRID, K_MAJLINESSTEP, 10, m_MainWindow.GetIniFile())
|
|
Dim nExtSStep As Integer = GetPrivateProfileInt(S_GRID, K_EXTSSTEP, 50, m_MainWindow.GetIniFile())
|
|
Dim MinLnColor As New Color3d(160, 160, 160)
|
|
GetPrivateProfileColor(S_GRID, K_MINLNCOLOR, MinLnColor, m_MainWindow.GetIniFile())
|
|
Dim MajLnColor As New Color3d(160, 160, 160)
|
|
GetPrivateProfileColor(S_GRID, K_MAJLNCOLOR, MajLnColor, m_MainWindow.GetIniFile())
|
|
EgtSetGridFrame(Frame3d.GLOB)
|
|
EgtSetGridGeo(dSnapStep, nMinLineSStep, nMajLineSStep, nExtSStep)
|
|
EgtSetGridColor(MinLnColor, MajLnColor)
|
|
Dim bShowGrid As Boolean = (GetPrivateProfileInt(S_GRID, K_SHOWGRID, 1, m_MainWindow.GetIniFile()) <> 0)
|
|
EgtSetGridShow(bShowGrid, False)
|
|
End Sub
|
|
|
|
Public Sub SelectedComponent(sCompo As String)
|
|
' Carico componente
|
|
LoadCurrentCompo(sCompo)
|
|
End Sub
|
|
|
|
Private Sub LoadCurrentCompo(ByVal sCompo As String)
|
|
' Verifico se cambiato
|
|
If sCompo = m_sCompoName Then
|
|
Return
|
|
End If
|
|
m_sCompoName = sCompo
|
|
' Pulisco l'ambiente lua
|
|
ResetLuaVariables()
|
|
' Carico il file ed eseguo in modalità anteprima
|
|
Dim bOk As Boolean = ExecCompoFile()
|
|
Dim sMsg As String = String.Empty
|
|
' Verifico se compo interno o esterno
|
|
Dim InternalCompo As Integer = -1
|
|
EgtLuaGetGlobIntVar(LUA_CMP_INTERNAL, InternalCompo)
|
|
bOk = bOk AndAlso MakePreview(sMsg)
|
|
If Not bOk And InternalCompo <> 1 Then
|
|
EgtNewFile()
|
|
End If
|
|
MessageTxBl.Text = sMsg
|
|
MessageGrid.Background = If(m_bDrawOk, Brushes.Transparent, Application.Current.FindResource("OmagCut_Red"))
|
|
DrawScene.ZoomAll()
|
|
' leggo variabili e aggiorno griglia
|
|
ReadAndShowVariables()
|
|
' abilito bottoni Vista e Inserisci
|
|
OkBtn.IsEnabled = True
|
|
End Sub
|
|
|
|
Friend Sub BackBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackBtn.Click
|
|
m_SceneButtons.MeasureBtn.IsChecked = False
|
|
DrawPage_Unloaded(sender, e)
|
|
' Elimino nome del componente precedente
|
|
m_sCompoName = String.Empty
|
|
' Reset inclinazioni
|
|
m_SideAngleUC.DeleteSideAngle()
|
|
If String.IsNullOrEmpty(m_MainComponentPage.m_SecondaryComponentPage.m_sCurrCompo) Then
|
|
DrawPage_Loaded(sender, e)
|
|
Else
|
|
LoadSecondaryPage()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadSecondaryPage()
|
|
EgtSetCurrentContext(DrawScene.GetCtx())
|
|
|
|
' inibisco selezione diretta da Scene
|
|
DrawScene.SetStatusNull()
|
|
' pulisco la scena e relativo db
|
|
EgtNewFile()
|
|
EgtDraw()
|
|
|
|
' Seleziono la Tab e la Page di apertura
|
|
VariablesGrd.Children.Remove(m_CompoDimension)
|
|
LeftButtonGrd.Children.Add(m_MainComponentPage.m_SecondaryComponentPage)
|
|
m_ActiveComponentPage = Pages.MainComponent
|
|
MessageGrid.Visibility = Windows.Visibility.Hidden
|
|
BackBtn.Visibility = Windows.Visibility.Hidden
|
|
TopGrd.Visibility = Windows.Visibility.Hidden
|
|
PartNameGrd.Visibility = Windows.Visibility.Hidden
|
|
PartNumberGrd.Visibility = Windows.Visibility.Hidden
|
|
|
|
' Valore di default del nome e del numero pezzi
|
|
PartNameTxBx.Text = String.Empty
|
|
PartNumTxBx.Text = "1"
|
|
|
|
End Sub
|
|
|
|
Public Sub UpdateView()
|
|
' verifico ci sia un componente corrente
|
|
If String.IsNullOrWhiteSpace(m_sCompoName) Then
|
|
Return
|
|
End If
|
|
' aggiorno le variabili dalla griglia
|
|
UpdateVariables()
|
|
' ricalcolo il disegno
|
|
Dim sMsg As String = String.Empty
|
|
MakePreview(sMsg)
|
|
MessageTxBl.Text = sMsg
|
|
MessageGrid.Background = If(m_bDrawOk, Brushes.Transparent, Application.Current.FindResource("OmagCut_Red"))
|
|
' aggiorno visualizzazione
|
|
EgtSetView(VT.TOP, False)
|
|
EgtZoom(ZM.ALL)
|
|
End Sub
|
|
|
|
Private Function ExecCompoFile() As Boolean
|
|
' Costruisco path completa del componente
|
|
Dim sPath = m_sCompoDir & "\" & m_sCompoName
|
|
' Carico il file
|
|
Return EgtLuaExecFile(sPath)
|
|
End Function
|
|
|
|
Private Function ReadAndShowVariables() As Boolean
|
|
' Recupero nome, tipo e valore delle variabili globali
|
|
For i As Integer = 1 To NUM_VAR
|
|
Dim CVar = New CompoVar
|
|
CVar.m_nInd = i
|
|
If CVar.NameTypeValueFromLua() Then
|
|
m_CVars(i - 1) = CVar
|
|
Else
|
|
m_CVars(i - 1) = Nothing
|
|
End If
|
|
Next
|
|
|
|
' Aggiorno la griglia dalle variabili
|
|
m_bShowVar = True
|
|
|
|
' Conto numero variabili definite e da nascondere
|
|
Dim nShow As Integer = GetDefinedVarCount()
|
|
Dim nHide As Integer = NUM_VAR - nShow
|
|
|
|
For i As Integer = 1 To nHide
|
|
m_CompoDimension.GetNameEdit(i).Visibility = Windows.Visibility.Hidden
|
|
m_CompoDimension.GetValueEdit(i).Visibility = Windows.Visibility.Hidden
|
|
Next
|
|
For i As Integer = 1 To nShow
|
|
Dim j As Integer = nHide + i
|
|
m_CompoDimension.GetNameEdit(j).Text = m_CVars(i - 1).m_sName
|
|
m_CompoDimension.GetNameEdit(j).Visibility = Windows.Visibility.Visible
|
|
m_CompoDimension.GetValueEdit(j).Text = m_CVars(i - 1).ToString()
|
|
m_CompoDimension.GetValueEdit(j).Visibility = Windows.Visibility.Visible
|
|
If m_CVars(i - 1).m_nType = 5 Then
|
|
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).Keyboard = EgtTextBox.KeyboardType.Alphanumeric
|
|
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).KeyboardDimension = 600
|
|
Else
|
|
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).Keyboard = EgtTextBox.KeyboardType.Calculator
|
|
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).KeyboardDimension = 300
|
|
End If
|
|
Next
|
|
m_bShowVar = False
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ShowVariables() As Boolean
|
|
' Conto numero variabili definite e nascoste
|
|
Dim nShow As Integer = GetDefinedVarCount()
|
|
Dim nHide As Integer = NUM_VAR - nShow
|
|
' Aggiorno i valori visualizzati
|
|
m_bShowVar = True
|
|
For i As Integer = 1 To nShow
|
|
Dim j As Integer = nHide + i
|
|
m_CompoDimension.GetValueEdit(j).Text = m_CVars(i - 1).ToString()
|
|
Next
|
|
m_bShowVar = False
|
|
Return True
|
|
End Function
|
|
|
|
Private Function UpdateVariables() As Boolean
|
|
' Conto numero variabili definite e da nascondere
|
|
Dim nShow As Integer = GetDefinedVarCount()
|
|
Dim nHide As Integer = NUM_VAR - nShow
|
|
' aggiorno le variabili
|
|
For i As Integer = 1 To nShow
|
|
Dim j As Integer = nHide + i
|
|
' interpreto il valore, se non riesco ripristino default
|
|
If Not m_CVars(i - 1).FromString(m_CompoDimension.GetValueEdit(j).Text) Then
|
|
m_CompoDimension.GetValueEdit(j).Text = m_CVars(i - 1).ToString()
|
|
End If
|
|
' aggiorno la corrispondente variabile lua
|
|
If Not m_CVars(i - 1).ToLua() Then
|
|
Dim sErr As String = String.Empty
|
|
EgtLuaGetLastError(sErr)
|
|
EgtOutLog(sErr)
|
|
End If
|
|
Next
|
|
Return True
|
|
End Function
|
|
|
|
Friend Function GetDefinedVarCount() As Integer
|
|
Dim nCount As Integer = 0
|
|
For i As Integer = 1 To NUM_VAR
|
|
If m_CVars(i - 1) IsNot Nothing Then
|
|
nCount += 1
|
|
End If
|
|
Next
|
|
Return nCount
|
|
End Function
|
|
|
|
Private Function ResetLuaVariables() As Boolean
|
|
EgtLuaResetGlobVar(LUA_CMP_VARS)
|
|
EgtLuaResetGlobVar(LUA_CMP_DRAW)
|
|
Return False
|
|
End Function
|
|
|
|
Private Function MakePreview(ByRef sMsg As String) As Boolean
|
|
If Not EgtLuaExecLine(LUA_CMP_DRAW & "(true)") Then
|
|
sMsg = "Error in component execution"
|
|
m_bDrawOk = False
|
|
Else
|
|
EgtLuaGetGlobStringVar(LUA_CMP_VARS & ".MSG", sMsg)
|
|
Dim nErr As Integer = 0
|
|
EgtLuaGetGlobIntVar(LUA_CMP_VARS & ".ERR", nErr)
|
|
m_bDrawOk = (nErr = 0)
|
|
End If
|
|
EgtAdjustFlatPart(EgtGetFirstPart())
|
|
Return m_bDrawOk
|
|
End Function
|
|
|
|
Private Function MakeInsert(ByVal nNbr As Integer, sName As String) As Boolean
|
|
' Imposto il contesto corrente
|
|
EgtSetCurrentContext(DrawScene.GetCtx())
|
|
' Cancello layer regioni per selezione buchi
|
|
Dim Pz As Integer = EgtGetFirstGroupInGroup(GDB_ID.ROOT)
|
|
Dim SelectRegion As Integer = EgtGetFirstNameInGroup(Pz, "SelectRegion")
|
|
EgtErase(SelectRegion)
|
|
' Cancello layer etichette, quotatura,ausiliario e box
|
|
EgtErase(EgtGetFirstNameInGroup(Pz, "LayAux"))
|
|
EgtErase(EgtGetFirstNameInGroup(Pz, "Etichette"))
|
|
EgtErase(EgtGetFirstNameInGroup(Pz, "Quotature"))
|
|
EgtErase(EgtGetFirstNameInGroup(Pz, "Box"))
|
|
' Cancello layer etichette dei componenti interni (buchi)
|
|
Dim nHLId As Integer = EgtGetFirstNameInGroup(Pz, "HoleLabels")
|
|
While nHLId <> GDB_ID.NULL
|
|
EgtErase(nHLId)
|
|
nHLId = EgtGetFirstNameInGroup(Pz, "HoleLabels")
|
|
End While
|
|
' Attivo visualizzazione misura
|
|
Dim nRegLayId As Integer = EgtGetFirstNameInGroup(Pz, NAME_REGION)
|
|
Dim nId As Integer = EgtGetFirstInGroup(nRegLayId)
|
|
While nId <> GDB_ID.NULL
|
|
If EgtGetType(nId) = GDB_TY.EXT_TEXT Then
|
|
EgtSetStatus(nId, GDB_ST.ON_)
|
|
End If
|
|
nId = EgtGetNext(nId)
|
|
End While
|
|
' Calcolo dimensione ingombro Pezzo tramite OutLoop
|
|
Dim nOutLoopLayer = EgtGetFirstNameInGroup(Pz, NAME_OUTLOOP)
|
|
Dim b3Part As New BBox3d
|
|
EgtGetBBoxGlob(nOutLoopLayer, GDB_BB.STANDARD, b3Part)
|
|
' Muovo la regione in Z per evitare problemi in visualizzazione
|
|
EgtMove(nRegLayId, New Vector3d(0, 0, DELTAZ_REG), GDB_RT.GLOB)
|
|
' Se pezzo con dati normali
|
|
If Not m_bTrfData Then
|
|
' Se definito nome lo inserisco nel testo
|
|
If Not String.IsNullOrWhiteSpace(sName) Then
|
|
Dim nTextId = EgtGetFirstInGroup(nRegLayId)
|
|
While nTextId <> GDB_ID.NULL
|
|
If EgtGetType(nTextId) = GDB_TY.EXT_TEXT Then
|
|
Dim sText As String = String.Empty
|
|
EgtTextGetContent(nTextId, sText)
|
|
Dim sNewText = sName & "<br/>" & sText
|
|
EgtModifyText(nTextId, sNewText)
|
|
Exit While
|
|
End If
|
|
nTextId = EgtGetNext(nTextId)
|
|
End While
|
|
End If
|
|
' altrimenti se pezzo con dati TRF
|
|
Else
|
|
' Nome da dati Trf
|
|
Dim nTextId = EgtGetFirstInGroup(nRegLayId)
|
|
While nTextId <> GDB_ID.NULL
|
|
If EgtGetType(nTextId) = GDB_TY.EXT_TEXT Then
|
|
Dim sText As String = m_TrfOrderCode & "-" & m_TrfOrderDesc
|
|
Dim sText2 As String = m_TrfMatCode & "-" & m_TrfSurfCode
|
|
Dim sText3 As String = LenToString(b3Part.DimX(), 0) & " x " & LenToString(b3Part.DimY(), 0) & " x " & LenToString(m_TrfThickness, 0)
|
|
Dim dRatio As Double = Math.Max(b3Part.DimX(), b3Part.DimY()) / Math.Min(b3Part.DimX(), b3Part.DimY())
|
|
If dRatio < 5 Then
|
|
sText = sText & "<br/>" & sText2 & "<br/>" & sText3
|
|
Else
|
|
sText = sText & " " & sText2 & " " & sText3
|
|
End If
|
|
EgtModifyText(nTextId, sText)
|
|
Dim ptCen As Point3d
|
|
EgtCenterPoint(nTextId, ptCen)
|
|
Dim b3Text As New BBox3d
|
|
EgtGetBBoxGlob(nTextId, GDB_BB.STANDARD, b3Text)
|
|
Dim dCoeff As Double = Math.Min(b3Part.DimX() / b3Text.DimX(), b3Part.DimY() / b3Text.DimY()) / 1.25
|
|
If dCoeff < 1 Then
|
|
EgtScale(nTextId, New Frame3d(ptCen), dCoeff, dCoeff, dCoeff)
|
|
End If
|
|
Exit While
|
|
End If
|
|
nTextId = EgtGetNext(nTextId)
|
|
End While
|
|
' Info di pezzo da dati Trf
|
|
EgtSetInfo(Pz, "OC", m_TrfOrderCode)
|
|
EgtSetInfo(Pz, "OD", m_TrfOrderDesc)
|
|
EgtSetInfo(Pz, "PC", m_TrfPartCode)
|
|
EgtSetInfo(Pz, "MT", m_TrfMatCode)
|
|
EgtSetInfo(Pz, "SRF", m_TrfSurfCode)
|
|
EgtSetInfo(Pz, "L", DoubleToString(b3Part.DimX(), 1))
|
|
EgtSetInfo(Pz, "W", DoubleToString(b3Part.DimY(), 1))
|
|
EgtSetInfo(Pz, "T", m_TrfThickness)
|
|
EgtSetInfo(Pz, "V1", DoubleToString(b3Part.DimX(), 1))
|
|
EgtSetInfo(Pz, "V2", DoubleToString(b3Part.DimY(), 1))
|
|
End If
|
|
' Eventuale testo per indicare il sopra (solo nel caso di rettangolo)
|
|
If TopChBx.IsVisible() And TopChBx.IsChecked() Then
|
|
Dim dDimX As Double = b3Part.DimX()
|
|
Dim dDimY As Double = b3Part.DimY()
|
|
Dim dH As Double = Math.Min(0.1 * dDimY, 30)
|
|
Dim nText As Integer = EgtCreateTextAdv(nRegLayId, New Point3d(dDimX / 2, dDimY - 0.6 * dH, 0), 0, "*TOP*", "", 500, False, dH, 1, 0, INS_POS.MC)
|
|
EgtSetColor(nText, New Color3d())
|
|
End If
|
|
' Scrivo testi per nesting
|
|
SideAngle.WriteSideAngleForNest(DrawScene.GetCtx())
|
|
' Imposto colore testi
|
|
Utility.SetTextColor( nRegLayId)
|
|
' Esporto il pezzo in un file temporaneo
|
|
Dim sTmpFile As String = m_MainWindow.GetTempDir() & "\FlatPartCompo.Nge"
|
|
If Not EgtSaveObjToFile(1, sTmpFile, NGE.BIN) Then
|
|
Return False
|
|
End If
|
|
' Passo al contesto principale
|
|
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
' Recupero flag per inserimento diretto in grezzo (altrimenti in parcheggio)
|
|
Dim bDirect As Boolean = (GetPrivateProfileInt(S_NEST, K_DIRECT, 0, m_MainWindow.GetIniFile()) <> 0)
|
|
' Elimino eventuali precedenti pezzi vuoti
|
|
EgtEraseEmptyParts()
|
|
If My.Computer.FileSystem.FileExists(sTmpFile) Then
|
|
' eseguo inserimento
|
|
For i As Integer = 1 To nNbr
|
|
' Inserisco il pezzo
|
|
EgtInsertFile(sTmpFile)
|
|
' Ne recupero l'Id
|
|
Dim nId2 As Integer = EgtGetLastPart()
|
|
' Aggiusto per lavorazioni
|
|
EgtAdjustFlatPart(nId2)
|
|
' Se dati Trf assegno nome univoco
|
|
If m_bTrfData Then EgtSetInfo(nId2, "CsvPart", m_TrfOrderCode & "-" & nId2.ToString())
|
|
' 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)
|
|
End If
|
|
End If
|
|
Next
|
|
' Cancello il file
|
|
My.Computer.FileSystem.DeleteFile(sTmpFile)
|
|
End If
|
|
' Aggiorno ambiente principale
|
|
EgtZoom(ZM.ALL)
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
|
|
m_SceneButtons.MeasureBtn.IsChecked = False
|
|
' se sto definendo un componente interno non posso uscire
|
|
If m_ActiveComponentPage = Pages.CompoDimension And m_bInternalCompo Then Return
|
|
' Se errore esco
|
|
If Not m_bDrawOk Then Return
|
|
' Nome pezzo
|
|
Dim sPartName As String = PartNameTxBx.Text
|
|
' Leggo numero di pezzi da inserire
|
|
Dim InsNbr As Integer = Int32.Parse(PartNumTxBx.Text)
|
|
' Passo al contesto principale
|
|
MakeInsert(InsNbr, sPartName)
|
|
' Aggiorno ambiente principale
|
|
EgtZoom(ZM.ALL)
|
|
' Elimino nome del componente precedente
|
|
m_sCompoName = String.Empty
|
|
' Reset inclinazioni
|
|
m_SideAngleUC.DeleteSideAngle()
|
|
' Chiudo compo interni nel caso siano aperti
|
|
LeftButtonGrd.Children.Remove(m_CompoDimension.m_InternalCompoPage)
|
|
' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC
|
|
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC)
|
|
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
|
|
m_MainWindow.m_ActivePage = MainWindow.Pages.CadCut
|
|
|
|
End Sub
|
|
|
|
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
|
|
m_SceneButtons.MeasureBtn.IsChecked = False
|
|
' Elimino nome del componente precedente
|
|
m_sCompoName = String.Empty
|
|
' Reset inclinazioni
|
|
m_SideAngleUC.DeleteSideAngle()
|
|
' Chiudo compo secondari e interni nel caso siano aperti
|
|
LeftButtonGrd.Children.Remove(m_MainComponentPage.m_SecondaryComponentPage)
|
|
LeftButtonGrd.Children.Remove(m_CompoDimension.m_InternalCompoPage)
|
|
' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC
|
|
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC)
|
|
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
|
|
m_MainWindow.m_ActivePage = MainWindow.Pages.CadCut
|
|
End Sub
|
|
|
|
Private Sub TrfDataBtn_Click(sender As Object, e As RoutedEventArgs) Handles TrfDataBtn.Click
|
|
Dim DlgTrfData As New CompoTrfData(m_MainWindow)
|
|
DlgTrfData.SetData(m_TrfOrderCode, m_TrfOrderDesc, m_TrfPartCode, m_TrfMatCode, m_TrfSurfCode, m_TrfThickness)
|
|
If DlgTrfData.ShowDialog() Then
|
|
DlgTrfData.GetData(m_TrfOrderCode, m_TrfOrderDesc, m_TrfPartCode, m_TrfMatCode, m_TrfSurfCode, m_TrfThickness)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SideAngleBtn_Click(sender As Object, e As RoutedEventArgs) Handles SideAngleBtn.Click
|
|
m_SceneButtons.MeasureBtn.IsChecked = False
|
|
If SideAngleBtn.IsChecked Then
|
|
' Imposto modalità
|
|
m_SideAngleUC.m_Mode = SideAngleUC.ModeOpt.SIDEANGLE
|
|
If m_ActiveComponentPage = Pages.CompoDimension Then
|
|
m_PrevSideAnglePage = Pages.CompoDimension
|
|
VariablesGrd.Children.Remove(m_CompoDimension)
|
|
ElseIf m_ActiveComponentPage = Pages.InternalComponent Then
|
|
m_PrevSideAnglePage = Pages.InternalComponent
|
|
LeftButtonGrd.Children.Remove(m_CompoDimension.m_InternalCompoPage)
|
|
End If
|
|
VariablesGrd.Children.Add(m_SideAngleUC)
|
|
DripCutBtn.IsEnabled = False
|
|
MessageGrid.Visibility = Windows.Visibility.Hidden
|
|
BackBtn.Visibility = Windows.Visibility.Hidden
|
|
' Se non ci sono loop interni, imposto quello esterno
|
|
If EgtGetFirstNameInGroup(EgtGetFirstPart(), NAME_INLOOP) = GDB_ID.NULL Then
|
|
m_nSelectedLayer = EgtGetFirstNameInGroup(EgtGetFirstPart(), NAME_OUTLOOP)
|
|
Else
|
|
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
|
|
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
|
|
' Aggiungo testi su lati già inclinati
|
|
SideAngle.WriteSideAngleForNest(DrawScene.GetCtx())
|
|
End If
|
|
' In ogni caso, nascondo layer delle misure
|
|
Dim PartId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.OFF)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
|
|
Else
|
|
VariablesGrd.Children.Remove(m_SideAngleUC)
|
|
If m_PrevSideAnglePage = Pages.CompoDimension Then
|
|
VariablesGrd.Children.Add(m_CompoDimension)
|
|
ElseIf m_PrevSideAnglePage = Pages.InternalComponent Then
|
|
LeftButtonGrd.Children.Add(m_CompoDimension.m_InternalCompoPage)
|
|
End If
|
|
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
|
|
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
|
|
MessageGrid.Visibility = Windows.Visibility.Visible
|
|
BackBtn.Visibility = Windows.Visibility.Visible
|
|
' Deseleziono eventuali pezzi rimasti selezionati
|
|
m_nSelectedLayer = GDB_ID.NULL
|
|
EgtDeselectAll()
|
|
' Se non sono nei componenti interni, attivo layer delle misure
|
|
If m_PrevSideAnglePage <> Pages.InternalComponent Then
|
|
Dim PartId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
|
|
End If
|
|
' Pulisco area messaggi
|
|
MessageTxBx.Text = ""
|
|
MessageBrd.Background = Brushes.Transparent
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DripCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles DripCutBtn.Click
|
|
m_SceneButtons.MeasureBtn.IsChecked = False
|
|
If DripCutBtn.IsChecked Then
|
|
' Imposto modalità
|
|
m_SideAngleUC.m_Mode = SideAngleUC.ModeOpt.DRIP
|
|
If m_ActiveComponentPage = Pages.CompoDimension Then
|
|
m_PrevSideAnglePage = Pages.CompoDimension
|
|
VariablesGrd.Children.Remove(m_CompoDimension)
|
|
ElseIf m_ActiveComponentPage = Pages.InternalComponent Then
|
|
m_PrevSideAnglePage = Pages.InternalComponent
|
|
LeftButtonGrd.Children.Remove(m_CompoDimension.m_InternalCompoPage)
|
|
End If
|
|
VariablesGrd.Children.Add(m_SideAngleUC)
|
|
SideAngleBtn.IsEnabled = False
|
|
MessageGrid.Visibility = Windows.Visibility.Hidden
|
|
BackBtn.Visibility = Windows.Visibility.Hidden
|
|
' Se non ci sono loop interni, imposto quello esterno
|
|
If EgtGetFirstNameInGroup(EgtGetFirstPart(), NAME_INLOOP) = GDB_ID.NULL Then
|
|
m_nSelectedLayer = EgtGetFirstNameInGroup(EgtGetFirstPart(), NAME_OUTLOOP)
|
|
Else
|
|
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
|
|
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
|
|
End If
|
|
' In ogni caso, nascondo layer delle misure
|
|
Dim PartId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.OFF)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
|
|
Else
|
|
VariablesGrd.Children.Remove(m_SideAngleUC)
|
|
If m_PrevSideAnglePage = Pages.CompoDimension Then
|
|
VariablesGrd.Children.Add(m_CompoDimension)
|
|
ElseIf m_PrevSideAnglePage = Pages.InternalComponent Then
|
|
LeftButtonGrd.Children.Add(m_CompoDimension.m_InternalCompoPage)
|
|
End If
|
|
SideAngleBtn.IsEnabled = True
|
|
MessageGrid.Visibility = Windows.Visibility.Visible
|
|
BackBtn.Visibility = Windows.Visibility.Visible
|
|
' Deseleziono eventuali pezzi rimasti selezionati
|
|
m_nSelectedLayer = GDB_ID.NULL
|
|
EgtDeselectAll()
|
|
' Se non sono nei componenti interni, attivo layer delle misure
|
|
If m_PrevSideAnglePage <> Pages.InternalComponent Then
|
|
Dim PartId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
|
|
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
|
|
End If
|
|
' Pulisco area messaggi
|
|
MessageTxBx.Text = ""
|
|
MessageBrd.Background = Brushes.Transparent
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DrawPage_Unloaded(sender As Object, e As RoutedEventArgs)
|
|
' Seleziono la Tab e la Page di apertura
|
|
Select Case m_ActiveComponentPage
|
|
Case Pages.MainComponent
|
|
LeftButtonGrd.Children.Remove(m_MainComponentPage)
|
|
Case Pages.SecondaryComponent
|
|
LeftButtonGrd.Children.Remove(m_MainComponentPage.m_SecondaryComponentPage)
|
|
Case Pages.InternalComponent
|
|
LeftButtonGrd.Children.Remove(m_MainWindow.m_DrawPageUC.m_CompoDimension.m_InternalCompoPage)
|
|
Case Pages.CompoDimension
|
|
VariablesGrd.Children.Remove(m_CompoDimension)
|
|
Case Pages.SideAngle
|
|
VariablesGrd.Children.Remove(m_SideAngleUC)
|
|
End Select
|
|
|
|
' Pulisco l'ambiente lua
|
|
ResetLuaVariables()
|
|
|
|
End Sub
|
|
|
|
Private Class CompoVar
|
|
|
|
' Public Members
|
|
Public m_nInd As Integer
|
|
Public m_sName As String
|
|
Public m_nType As Integer
|
|
Public m_bVal As Boolean
|
|
Public m_nVal As Integer
|
|
Public m_dVal As Double
|
|
Public m_sVal As String
|
|
|
|
' Constants
|
|
Const LUA_NAME As String = LUA_CMP_VARS & ".N"
|
|
Const LUA_TYPE As String = LUA_CMP_VARS & ".T"
|
|
Const LUA_VALUE As String = LUA_CMP_VARS & ".V"
|
|
|
|
Public Sub New()
|
|
m_nInd = 0
|
|
m_nType = 0
|
|
End Sub
|
|
|
|
Public Overrides Function ToString() As String
|
|
Select Case m_nType
|
|
Case 1 ' booleano
|
|
Return m_bVal.ToString()
|
|
Case 2 ' intero
|
|
Return m_nVal.ToString()
|
|
Case 3 ' lunghezza
|
|
Return DoubleToString(EgtToUiUnits(m_dVal), 4)
|
|
Case 4 ' double
|
|
Return DoubleToString(m_dVal, 4)
|
|
Case 5 ' stringa
|
|
Return m_sVal
|
|
End Select
|
|
Return ""
|
|
End Function
|
|
|
|
Public Function FromString(ByVal sVal As String, Optional bConvertUnits As Boolean = True) As Boolean
|
|
Select Case m_nType
|
|
Case 1 ' booleano
|
|
Dim bVal As Boolean = False
|
|
If Boolean.TryParse(sVal, bVal) Then
|
|
m_bVal = bVal
|
|
Return True
|
|
End If
|
|
Case 2 ' intero
|
|
Dim nVal As Integer
|
|
If StringToInt(sVal, nVal) Then
|
|
m_nVal = nVal
|
|
Return True
|
|
End If
|
|
Case 3 ' lunghezza
|
|
Dim dVal As Double
|
|
If StringToDouble(sVal, dVal) Then
|
|
If bConvertUnits Then
|
|
m_dVal = EgtFromUiUnits(dVal)
|
|
Else
|
|
m_dVal = dVal
|
|
End If
|
|
Return True
|
|
End If
|
|
Case 4 ' double
|
|
Dim dVal As Double
|
|
If StringToDouble(sVal, dVal) Then
|
|
m_dVal = dVal
|
|
Return True
|
|
End If
|
|
Case 5 ' stringa
|
|
m_sVal = sVal
|
|
Return True
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
Public Function ToLua() As Boolean
|
|
Select Case m_nType
|
|
Case 1
|
|
Return EgtLuaSetGlobBoolVar(LUA_VALUE & m_nInd.ToString(), m_bVal)
|
|
Case 2
|
|
Return EgtLuaSetGlobIntVar(LUA_VALUE & m_nInd.ToString(), m_nVal)
|
|
Case 3, 4
|
|
Return EgtLuaSetGlobNumVar(LUA_VALUE & m_nInd.ToString(), m_dVal)
|
|
Case 5
|
|
Return EgtLuaSetGlobStringVar(LUA_VALUE & m_nInd.ToString(), m_sVal)
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
Public Function FromLua() As Boolean
|
|
Select Case m_nType
|
|
Case 1
|
|
Return EgtLuaGetGlobBoolVar(LUA_VALUE & m_nInd.ToString(), m_bVal)
|
|
Case 2
|
|
Return EgtLuaGetGlobIntVar(LUA_VALUE & m_nInd.ToString(), m_nVal)
|
|
Case 3, 4
|
|
Return EgtLuaGetGlobNumVar(LUA_VALUE & m_nInd.ToString(), m_dVal)
|
|
Case 5
|
|
Return EgtLuaGetGlobStringVar(LUA_VALUE & m_nInd.ToString(), m_sVal)
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
Public Function NameTypeValueFromLua() As Boolean
|
|
Dim bOk As Boolean = True
|
|
bOk = bOk AndAlso EgtLuaGetGlobStringVar(LUA_NAME & m_nInd.ToString(), m_sName)
|
|
bOk = bOk AndAlso EgtLuaGetGlobIntVar(LUA_TYPE & m_nInd.ToString(), m_nType)
|
|
Return bOk AndAlso FromLua()
|
|
End Function
|
|
|
|
End Class
|
|
|
|
End Class |