Compare commits

...
10 Commits
14 changed files with 270 additions and 13 deletions
+8 -3
View File
@@ -9,10 +9,15 @@ Class Application
MyBase.OnStartup(e)
ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose
' Creo la View principale
Me.MainWindow = New MainWindowV
Me.MainWindow = New MainWindowV(e.Args)
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(Me.MainWindow)
' Mostro la View principale
Me.MainWindow.Show()
If OptionModule.AdjustDDT Then
Me.MainWindow.Hide()
Else
Me.MainWindow.Show()
End If
'' Mostro la View principale
'Me.MainWindow.Show()
End Sub
End Class
+5 -2
View File
@@ -1058,6 +1058,8 @@ Public Class Assembly
If Not File.Exists(sPathDDF) Then
Return
End If
' verifico se il file è un template
Dim bIsTemplate As Boolean = (Path.GetExtension(sPathDDF).ToLower = ".ddt")
ReadAssembly.FileContent = File.ReadAllLines(sPathDDF)
' se il file esiste ma è vuoto
If ReadAssembly.FileContent.Count = 0 Then
@@ -1080,7 +1082,7 @@ Public Class Assembly
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
Else
Map.refSceneManagerVM.EnableRefresh = False
If ReadAssembly.GetDDFDoor(IndexLine, sErrorInfo) = -1 Then
If ReadAssembly.GetDDFDoor(IndexLine, sErrorInfo, bIsTemplate) = -1 Then
' errore nella lettura di un part: blocco tutto
ReadAssembly = Nothing
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
@@ -1468,10 +1470,11 @@ Public Class Assembly
End Function
' dopo la lettura delle informazioni dell'assemblato
Private Function GetDDFDoor(IndexLine As Integer, ByRef sErrorInfo As String) As Integer
Private Function GetDDFDoor(IndexLine As Integer, ByRef sErrorInfo As String, Optional ByVal bIsTemplate As Boolean = False) As Integer
Dim Line As Integer = IndexLine
While Line < FileContent.Count - 1 AndAlso Not Search3Dots(FileContent(Line))
Dim Local_PartDoor As New PartDoor
Local_PartDoor.IsTemplate = bIsTemplate
Dim Local_Door As New Part(Local_PartDoor)
' carcio la liste delle propiretà
'CreateNewPropertiesList(Local_Door.PropertiesList, Local_Door.SelectedMaterial)
+10
View File
@@ -7,6 +7,16 @@ Imports EgtWPFLib5
Public Class PartDoor
Inherits VMBase
Private m_IsTemplate As Boolean = False
Public Property IsTemplate As Boolean
Get
Return m_IsTemplate
End Get
Set(value As Boolean)
m_IsTemplate = value
End Set
End Property
Private m_Door As Part
Public Property Door As Part
Get
+6
View File
@@ -981,6 +981,12 @@ Public Class AssemblyManagerVM
OpenedAssName.IsModified = Part.FirstReadingEdge
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then
DdfFile.WriteDDFPart(OpenedAssName.SelAssembly.ListPartDoor(0).Door, sTempFile, True, False)
If OptionModule.AdjustDDT Then
DdfFile.WriteDDFPart(OpenedAssName.SelAssembly.ListPartDoor(0).Door, OptionModule.SaveFileNameFromArgs, True, False)
' TERMINO TUTTO SUBITO
BlindProgLog("Scrittura file '.ddf' terminata")
End
End If
' aggiorno elenco quotature
Map.refDimensioningPanelVM.LoadHardwareDimList()
ExecDoors(Map.refSceneManagerVM.ProjectScene, sTempFile, False)
+26
View File
@@ -111,6 +111,32 @@ Public Class Compo
End Set
End Property
Public Sub ResetMark()
m_BorderColor = DirectCast(New BrushConverter().ConvertFrom("#DCDCDC"), SolidColorBrush)
m_BackGroundColor = Brushes.White
m_Foreground = Brushes.Black
m_BorderThickness = 1
m_FontBold = FontWeights.Normal
NotifyPropertyChanged("BorderColor")
NotifyPropertyChanged("BackGroundColor")
NotifyPropertyChanged("Foreground")
NotifyPropertyChanged("BorderThickness")
NotifyPropertyChanged("FontBold")
End Sub
Public Sub SetMark()
m_BorderColor = Brushes.DeepPink
m_BackGroundColor = Brushes.White
m_Foreground = Brushes.Gold
m_BorderThickness = 2
m_FontBold = FontWeights.Bold
NotifyPropertyChanged("BorderColor")
NotifyPropertyChanged("BackGroundColor")
NotifyPropertyChanged("Foreground")
NotifyPropertyChanged("BorderThickness")
NotifyPropertyChanged("FontBold")
End Sub
#End Region ' Colori GroupBox
#Region "CompoRef"
+14 -1
View File
@@ -1509,7 +1509,7 @@ Public Class Part
#Region "Selection compo"
Private Sub ResetAllMark()
Public Sub ResetAllMark()
Dim nIdFirstPart As Integer = EgtGetFirstPart()
Dim nIdLay As Integer = EgtGetFirstLayer(nIdFirstPart)
While nIdLay <> GDB_ID.NULL
@@ -1517,6 +1517,9 @@ Public Class Part
nIdLay = EgtGetNextLayer(nIdLay)
End While
EgtDraw()
For Each ItemCompo As Compo In CompoList
ItemCompo.ResetMark()
Next
End Sub
Private Sub MarkCompoInScena()
@@ -1543,6 +1546,7 @@ Public Class Part
Dim sNamePath As String = Path.GetFileNameWithoutExtension(sInfoPath)
If sNamePath = sCompoName And IndexLay = IndexInList Then
EgtSetMark(nIdLay)
m_SelCompo.SetMark()
Exit While
ElseIf sNamePath = sCompoName And IndexLay < IndexInList Then
IndexLay = IndexLay + 1
@@ -2034,6 +2038,9 @@ Public Class Part
If Index > FileContent.Count() - 1 Then Return -1
Dim sLine As String = RemoveComment(FileContent(Index))
Dim Width As String = GetValueWithKey(sLine, K_WIDTH)
If m_refPartDoor.IsTemplate And OptionModule.AdjustDDT Then
Width = OptionModule.m_Width
End If
If String.IsNullOrWhiteSpace(Width) Then
If Not SearchKey(sLine, K_WIDTH) Then Return -1
' altrimenti
@@ -2051,6 +2058,9 @@ Public Class Part
If Index > FileContent.Count() - 1 Then Return -1
sLine = RemoveComment(FileContent(Index))
Dim Height As String = GetValueWithKey(sLine, K_HEIGHT)
If m_refPartDoor.IsTemplate And OptionModule.AdjustDDT Then
Height = OptionModule.m_Height
End If
If String.IsNullOrWhiteSpace(Height) Then
If Not SearchKey(sLine, K_HEIGHT) Then Return -1
' altrimenti
@@ -2068,6 +2078,9 @@ Public Class Part
If Index > FileContent.Count() - 1 Then Return -1
sLine = RemoveComment(FileContent(Index))
Dim Thickness As String = GetValueWithKey(sLine, K_THICKNESS)
If m_refPartDoor.IsTemplate And OptionModule.AdjustDDT Then
Thickness = OptionModule.m_Thickness
End If
If String.IsNullOrWhiteSpace(Thickness) Then
If Not SearchKey(sLine, K_THICKNESS) Then Return -1
' altrimenti
+2 -2
View File
@@ -76,8 +76,8 @@ Friend Class MainWindowModel
m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey)
' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(3279, 2609, 1, IniFile.m_nKeyLevel) And
EgtGetKeyOptions(3279, 2609, 1, IniFile.m_nKeyOptions)
Dim bKey As Boolean = EgtGetKeyLevel(3279, 2611, 1, IniFile.m_nKeyLevel) And
EgtGetKeyOptions(3279, 2611, 1, IniFile.m_nKeyOptions)
'Inizializzazione generale di EgtInterface
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
Dim sLogFile As String = IniFile.m_sTempDir & "\" & GENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
+75
View File
@@ -2,8 +2,24 @@
Class MainWindowV
Private m_args() As String = Nothing
#Region "EVENTS"
Public Sub New(args As String())
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Per leggere più argomenti devono essere scritti ognuno tra doppi apici e separati da spazio
' Esempio:"Argomento 1 di prova" "Argomento 2 di prova"
If args.Length > 0 Then
m_args = args
RunBlindCode()
End If
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
End Sub
Private Sub MainWindowV_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Carico e imposto posizione finestra
WinPosFromIniToWindow(S_GENERAL, K_WINPLACE, Me)
@@ -12,6 +28,29 @@ Class MainWindowV
Private Sub MainWindowV_ContentRendered(sender As Object, e As EventArgs) Handles Me.ContentRendered
' se è assente la chiave di protezione non mostro la finestra Launcher
If Map.refSceneManagerVM.bProtectKey Then
If Not IsNothing(m_args) Then
' leggo gli argomenti: Il programma si chiude appena termina la scrittura del file DDF
Dim Items() As String = m_args(0).Split(";"c)
If Items.Length = 5 Then
' Avvio progetto - LauncherOpt.Open_last_project (1)
OptionModule.m_bLauncherOpenOnce = True
' Indico il percorso del file
OptionModule.FileNameFromArgs = Items(0)
' Assegno i valore Width, Height, Thickness
OptionModule.m_Width = Items(1)
OptionModule.m_Height = Items(2)
OptionModule.m_Thickness = Items(3)
' Indico il percoso di salvataggio file DDF
OptionModule.SaveFileNameFromArgs = Items(4)
' abilito lettura dati
OptionModule.AdjustDDT = True
Else
' blocco lettura dati
OptionModule.AdjustDDT = False
' TERMINO TUTTO SUBITO!
End
End If
End If
Map.refMainWindowVM.SetLauncher()
Map.refMainWindowVM.ShowErrorCompoLoad()
End If
@@ -26,4 +65,40 @@ Class MainWindowV
#End Region ' EVENTS
Private Sub RunBlindCode()
If Map.refSceneManagerVM.bProtectKey Then
If Not IsNothing(m_args) Then
StartBlinProgdLog(IniFile.m_sTempDir & "\BlindProgLog.txt")
' leggo gli argomenti: Il programma si chiude appena termina la scrittura del file DDF
Dim Items() As String = m_args(0).Split(";"c)
If Items.Length = 5 Then
' Avvio progetto - LauncherOpt.Open_last_project (1)
OptionModule.m_bLauncherOpenOnce = True
' Indico il percorso del file
OptionModule.FileNameFromArgs = Items(0)
BlindProgLog(" File '.ddt' input : " & OptionModule.FileNameFromArgs)
' Assegno i valore Width, Height, Thickness
OptionModule.m_Width = Items(1)
BlindProgLog(" width : " & OptionModule.m_Width)
OptionModule.m_Height = Items(2)
BlindProgLog(" height : " & OptionModule.m_Height)
OptionModule.m_Thickness = Items(3)
BlindProgLog(" thickness : " & OptionModule.m_Thickness)
' Indico il percoso di salvataggio file DDF
OptionModule.SaveFileNameFromArgs = Items(4)
BlindProgLog(" File '.ddf' output : " & OptionModule.SaveFileNameFromArgs)
' abilito lettura dati
OptionModule.AdjustDDT = True
Else
' blocco lettura dati
OptionModule.AdjustDDT = False
' TERMINO TUTTO SUBITO!
End
End If
End If
Map.refMainWindowVM.SetLauncher()
Map.refMainWindowVM.ShowErrorCompoLoad()
End If
End Sub
End Class
+7 -1
View File
@@ -67,7 +67,9 @@ Public Class MainWindowVM
Set(value As ListPageEnum)
m_SelectedPage = value
NotifyPropertyChanged("PageControl")
Map.refInstrumentPanelVM.NotifyPropertyChanged("DimensionVisibility")
If Not IsNothing(Map.refInstrumentPanelVM) Then
Map.refInstrumentPanelVM.NotifyPropertyChanged("DimensionVisibility")
End If
End Set
End Property
@@ -366,6 +368,10 @@ Public Class MainWindowVM
Case LauncherOpt.Open_last_project
' se definito ultimo progetto, lo apro
If GetMainPrivateProfileString(S_LAUNCHERWINDOW, K_LASTPROJECT, "", m_sLastProject) > 0 Then
' se caricato il nome in avvio del programma allora sovrascrivo
If OptionModule.AdjustDDT Then
m_sLastProject = OptionModule.FileNameFromArgs
End If
Map.refProjectManagerVM.OpenLastProject()
End If
Case Else
+2 -2
View File
@@ -72,5 +72,5 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.6.9.1")>
<Assembly: AssemblyFileVersion("2.6.9.1")>
<Assembly: AssemblyVersion("2.6.11.2")>
<Assembly: AssemblyFileVersion("2.6.11.2")>
+5
View File
@@ -7,6 +7,11 @@ Friend Module OptionModule
' flag per modalità di visualizzazione file (solo lettura)
Friend ReadOnlyDDF As Boolean = False
' flag per forzare l'aggiornamento delle dimensioni anta dei file DDT
Friend AdjustDDT As Boolean = False
Friend FileNameFromArgs As String = String.Empty
Friend SaveFileNameFromArgs As String = String.Empty
' Parametri che contengono lista delle lingue disponibili e lingua selezionata
Friend m_LanguageList As New ObservableCollection(Of Language)
Friend m_SelectedLanguage As Language
+19 -2
View File
@@ -687,8 +687,8 @@ Public Class ProjectManagerVM
fd.InitialDirectory = IniFile.m_MyProjectDir
End If
' seleziono il filtro di apertura
fd.Filter = "(*.ddt) |*.ddt|(*.ddf) |*.ddf"
fd.FilterIndex = 2
fd.Filter = "(*.ddf) |*.ddf|(*.ddt) |*.ddt"
fd.FilterIndex = GetCurrentFilter()
fd.RestoreDirectory = True
' apro la finestra di dialogo
If fd.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then
@@ -703,6 +703,8 @@ Public Class ProjectManagerVM
sFilePath = Path.GetDirectoryName(fd.FileName)
' salvo il nome completo del file
sFilePathComplete = fd.FileName
' salvo l'estensione dell'ultimo progetto aperto
WriteMainPrivateProfileString("General", "LastExtensionOpened", Path.GetExtension(fd.FileName))
' se esiste un file in lettura con questo nome allora blocco tutto
If Utility.IsFileLocked(sFilePath, Path.GetFileNameWithoutExtension(sFilePathComplete)) Then
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
@@ -846,6 +848,21 @@ Public Class ProjectManagerVM
End If
End Sub
Private Function GetCurrentFilter() As Integer
Dim nFilter As Integer = 1
Dim sExt As String = String.Empty
GetMainPrivateProfileString("General", "LastExtensionOpened", "ddf", sExt)
sExt = sExt.Replace("."c, "")
sExt = sExt.Trim
Select Case sExt
Case = "ddf"
nFilter = 1
Case = "ddt"
nFilter = 2
End Select
Return nFilter
End Function
#End Region ' OpenCommand
#Region "OpenMruFileCommand"
+71
View File
@@ -435,6 +435,77 @@ Public Class SceneManagerVM
#End Region ' Command
#Region "EVENT Scene"
Private Sub MouseMoveOverScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_ProjectScene.OnMouseMoveScene
' Se non abilitata l'evidenziazione dei compo allora esco
If GetMainPrivateProfileInt(S_GENERAL, "MarkCompo", 0) = 0 Then Return
' se non esiste una porta corrente allora esco
If IsNothing(Map.refPartPageVM) OrElse IsNothing(Map.refPartPageVM.CurrPart) Then
Return
End If
Dim LocalCompoList As ObservableCollection(Of Compo) = Map.refPartPageVM.CurrPart.CompoList
Map.refPartPageVM.CurrPart.ResetAllMark()
' Se la lista dei componenti è vuota allora esco
If Map.refPartPageVM.CurrPart.CompoList.Count < 1 Then Return
' Ricavo il punto corrente in coordinate mondo
Dim ptCurr As Point3d
EgtUnProjectPoint(e.Location, ptCurr)
' Verifico se selezionato curva
EgtSetObjFilterForSelWin(False, True, False, 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
If EgtGetType(nId) = GDB_TY.CRV_COMPO Or EgtGetType(nId) = GDB_TY.CRV_ARC Or EgtGetType(nId) = GDB_TY.CRV_LINE Then
Dim nIdParent As Integer = EgtGetParent(nId)
Dim sNameLayer As String = String.Empty
EgtGetName(nIdParent, sNameLayer)
If Not sNameLayer.StartsWith("AUX") Or Not sNameLayer.StartsWith("SOLID") Or Not sNameLayer.StartsWith("DIM") Then
' scorro l'elenco dei componenti fino a trovare un riscontro tra i nomi e i parametri
For Each ItemCompo As Compo In LocalCompoList
MatchCompoFromScena(nIdParent, ItemCompo, LocalCompoList)
Next
End If
End If
' Passo al successivo
nId = EgtGetNextObjInSelWin()
End While
End Sub
Private Sub MatchCompoFromScena(nIdLay As Integer, CurrCompo As Compo, CompoList As ObservableCollection(Of Compo))
If IsNothing(CurrCompo) Then Return
'ResetAllMark()
' recupero la lista dei compo dello stesso tipo
Dim TempList As ObservableCollection(Of Compo) = DdfFile.GetCurrentListSameCompoType(CompoList, CurrCompo.CompoType.DDFName)
' recupero la lista dei compo con lo stesso nome
TempList = DdfFile.GetCurrentListSameCompoDDFName(TempList, CurrCompo.SelFile, CurrCompo.SelBrandPart)
' riordino la lista appena trovata secondo le regole di stampa DDF
DdfFile.GetOrderedListSameCompo(TempList)
' ontengo la posizione prevista nella grafica
Dim IndexInList As Integer = DdfFile.GetIndexInList(TempList, CurrCompo)
' recupero la lista ordinata
Dim sCompoName As String = CurrCompo.SelFile
' recupero il primo part disponibile
Dim IndexLay As Integer = 0
If nIdLay <> GDB_ID.NULL Then
Dim sInfoPath As String = String.Empty
If EgtGetInfo(nIdLay, "Path", sInfoPath) Then
Dim sNamePath As String = Path.GetFileNameWithoutExtension(sInfoPath)
If sNamePath = sCompoName And IndexLay = IndexInList Then
EgtSetMark(nIdLay)
' evidenzio la compo corrente
CurrCompo.SetMark()
ElseIf sNamePath = sCompoName And IndexLay < IndexInList Then
IndexLay = IndexLay + 1
End If
End If
End If
EgtDraw()
End Sub
#End Region ' Event scene
Public Sub ComposeAssembly(nAssembl As Integer)
If Not File.Exists(IniFile.m_sDoorsDirPath & "\" & "Main_Assemb.lua") Then
EgtOutLog("SetUp error: SetUp configuration file (" & IniFile.m_sDoorsDirPath & "\" & "Main_Assemb.lua)" & " doesn't exist ")
+20
View File
@@ -703,6 +703,26 @@ Public Module Utility
Next
End Sub
#Region "Create Log"
Private sFileBlindProgLog As System.IO.StreamWriter
Private sFilePath As String = String.Empty
Public Sub StartBlinProgdLog(sPath As String)
sFilePath = sPath
sFileBlindProgLog = New System.IO.StreamWriter(sPath, True)
Dim sInfoStart As String = Date.Now.ToString & " Avvio programma in cieco"
sFileBlindProgLog.WriteLine(sInfoStart)
sFileBlindProgLog.Close()
End Sub
Public Sub BlindProgLog(sMsg As String)
sFileBlindProgLog = File.AppendText(sFilePath)
sFileBlindProgLog.WriteLine(sMsg)
sFileBlindProgLog.Close()
End Sub
#End Region
End Module
Public Class CompoBrandDir