Compare commits

...

63 Commits

Author SHA1 Message Date
RenzoL 0a45d1af95 - Sistemati FeatureManager e Parametri P/Q visualizzati a seconda del Layer o Part selezionato 2022-04-08 17:39:09 +02:00
RenzoL b41454183f - Sistemati visibilità e bDO/bDOALL di FeatureListV per Layer e Part
- Nascosto (commentato) il filtro ricerca Part
2022-04-07 16:34:36 +02:00
RenzoL 7e7258dd7c - Parziale pulizia codice
- Disabilitati bottoni apertura e salvataggio in LayersWallProjManager
2022-04-07 09:45:15 +02:00
RenzoL 19a8ca1267 - Correzioni su Selezioni/Deselezioni/Riselezioni dei Part nella DG e dei Layer nel TreeView
- Inserite 2 FeatureListV separate (e parte di 2 diverse Tab) per Layer e Part selezionati
2022-04-07 08:59:16 +02:00
RenzoL e88c603fca - Corretta property sNAMplus per Element e Layer 2022-04-01 12:53:03 +02:00
RenzoL a62f0ca724 LayersWall WIP : - Aggiunta nuova pagina LayersWall per aprire progetti di tipo Pareti Layer
- Creati nuovi Panel e Manager dedicati nella pagina LayersWall (simili ai già esistenti in Visualizzatore ma preceduti da "LayersWall")
- Aggiunto ElementLayerTreeView come albero per i Composite di tipo Element e Layer
- Aggiunti BTLElement e BTLLayer che ereditano da BTLPart (Element contiene Layer, Layer contiene Part e Feature)
2022-04-01 09:56:04 +02:00
Emmanuele Sassi 370b270d95 - Aggiunto filtro macchina su finestra apertura progetto
- Correzione uscita da pagina Configurazione che bloccava il programma
- Creazione path DataDir per funzionamento in rete
2022-04-01 09:14:53 +02:00
Emmanuele Sassi 2d1de6ccf3 - Aggiornamento costanti 2022-03-30 13:42:19 +02:00
Emmanuele Sassi 527a3bc3b9 update init DbController del supervisor 2022-03-30 13:12:09 +02:00
Emmanuele Sassi 77f225f866 - Modifica init DbConfig 2022-03-30 13:09:37 +02:00
Emmanuele Sassi 0e662a8799 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2022-03-22 11:55:21 +01:00
Samuele Locatelli ca2828958d Fix dominio parametrico x creazione utente in rete 2022-03-22 11:54:22 +01:00
Emmanuele Sassi 97d6b26df5 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2022-03-22 11:48:56 +01:00
Samuele Locatelli e01104dba3 Fix init DB senza overload 2022-03-22 11:47:41 +01:00
Samuele Locatelli 443f72d86a Aggiunto init x chiavi di rete 2022-03-22 11:44:34 +01:00
Samuele Locatelli 794b45e4f3 Merge remote-tracking branch 'origin/develop' into DataLayer 2022-03-22 11:33:10 +01:00
Emmanuele Sassi 52b111aff3 Merge commit 'cc04872cc1a5df9f94710b8c8d5fcf75eac4bb2f' into develop 2022-03-16 14:42:10 +01:00
Emmanuele Sassi e3a436ff4d - Permessa selezione feature in grafica 2022-03-16 14:39:59 +01:00
RenzoL cc04872cc1 - VerifyAll non eseguito se non ci sono MachGroup
- Correzione all'Update di OriginType
2022-03-16 12:54:24 +01:00
Emmanuele Sassi 4075563e9f - Migliorata visibilita' lista tipi di nesting 2022-03-16 12:15:05 +01:00
RenzoL c68efe69be - Correzione Resize colonne FeatureInPartInRawPartList in Supervisor
- Correzione visibilità colonna DO PartInRawPartList in Supervisor
- Altre piccole correzioni in Supervisor
2022-03-16 11:25:15 +01:00
RenzoL bb0a838d91 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-16 11:14:19 +01:00
Emmanuele Sassi 217a3b6fcc - Nascosti bottoni cambia materiale e muovi pezzi in grezzo
- Aggiunto minimo e massimo da walldata a spessore grezzo in warehouse
- Nascosto bottone modifica freecontour
2022-03-16 09:53:56 +01:00
RenzoL a7de0d3b1e Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-15 17:16:51 +01:00
Emmanuele Sassi 77be897037 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-03-15 17:05:11 +01:00
DarioS 2ef75b21d0 EgtBEAMWALL :
- correzioni per posizioni di nesting problematiche con separatore decimale virgola settato nel SO
- modifiche per nesting da BTL.
2022-03-15 15:17:38 +01:00
Emmanuele Sassi b5066816e1 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2022-03-15 15:05:20 +01:00
RenzoL 34e5b6ec55 - Correzione MaxThickness e Parametri S in Warehouse per Pareti 2022-03-15 14:50:01 +01:00
RenzoL 14e3fa908a - Correzione Muovi pezzi in Ottimizzatore
- Bottone Muovi pezzi reso visibile solo se progetto aperto di tipo Pareti
2022-03-15 12:29:11 +01:00
RenzoL 81427b38b3 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-15 10:11:30 +01:00
DarioS d95bd48d9e EgtBEAMWALL :
- correzioni per decimali nelle sezioni in nesting travi e pareti.
2022-03-15 10:04:52 +01:00
Emmanuele Sassi 342472c625 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2022-03-15 09:19:36 +01:00
Emmanuele Sassi 694feab56e - Eliminata TopBar da finestra di caricamento
- Corretto colore testo selzionato in RawPart e PartinRawPart
- Gestita visibilita' nesting da Btl solo quando presente nel file
- Gestito offset variabile su spessore parete
2022-03-15 09:19:04 +01:00
RenzoL d7262bfbb6 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-15 09:09:31 +01:00
DarioS 1f510bfae8 EgtBEAMWALL :
- nascosto bottone per nesting da BTL.
2022-03-15 07:51:22 +01:00
RenzoL a054c472cf - Correzione a Offset e MinThickness in Warehouse per Pareti 2022-03-14 16:14:32 +01:00
Emmanuele Sassi 24827b336a Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2022-03-14 10:33:16 +01:00
RenzoL d9681dbcb5 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-11 15:24:37 +01:00
Emmanuele Sassi dd9ff98329 - migliorata gestione traduzioni messaggi Lua ed estensione a tutti i tipi di messaggio
- Correzione aggiornamento quote Duplo quando selezionato BtlPart in ottimizzatore
- Correzione su update messaggi di errore da verifica (CALC)
- Aggiunta indicazione dei duplo e MachGroup che contengono il BTLPart selezionato
- Ridotto lista feature in CambiaParametro a solo quelle presenti nel progetto
- disattivato caricamento iniziale su datagrid MachGroup e Part per evitare eccezione di modifica lista durante caricamento
- Estesa lettura dei progetti in finestra da 50 a 5000
- Nascosti bottoni Produci se modalita' senza supervisore
2022-03-11 15:12:03 +01:00
RenzoL 3fe0400219 - Piccole correzioni a visualizzazione statistiche 2022-03-10 16:46:40 +01:00
RenzoL 5cf6343518 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-09 17:13:32 +01:00
Emmanuele Sassi 69a2905d9b - Aggiunto caricamento su creazione Pdf statistiche
- Fix del copia grezzo per le pareti
- Fix del bottone CopyToClipboard
- Aggiunta immagine grezzo nel pdf delle statistiche
2022-03-09 16:41:46 +01:00
Emmanuele Sassi b1254c3247 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-03-08 11:14:45 +01:00
RenzoL fd92dbbe23 - Piccole correzioni a ColumnVisibility e ToolTip 2022-03-08 10:22:27 +01:00
RenzoL 057d31ab49 - Ritorno al Resize standard delle colonne
- Corretta la colonna "fantasma" che appariva con l'allargamento della EgtDataGrid (ora la larghezza dell'ultima colonna visibile diventa di tipo Star)
2022-03-07 16:03:35 +01:00
RenzoL 1ec1e4539f - Aggiunti bottone e finestrella per cambio materiale (simile a cambio parametro) 2022-03-04 15:23:43 +01:00
RenzoL 1c2f87d79f - Piccole correzioni a SParam aggiunti e salvati in Warehouse 2022-03-04 12:13:06 +01:00
RenzoL 5d0a7705d5 - Definizione ordine parametri da considerare per Sort di SectionXMaterial degli SParam in finestra Warehouse 2022-03-03 17:35:15 +01:00
RenzoL e357e54152 - Piccola correzione al commit precedente 2022-03-03 12:11:25 +01:00
RenzoL e598c7af90 - Correzione al Sort delle colonne di EgtDataGrid 2022-03-03 11:47:31 +01:00
RenzoL ab930e2e90 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-03-03 09:41:06 +01:00
RenzoL 7deafdde51 - Copia del file originale scelto nel dialog di UpdateBTL nella cartella Proj del progetto corrente 2022-02-24 15:11:07 +01:00
RenzoL 145ba2afda Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-24 11:49:27 +01:00
RenzoL 9e7be2740e - Piccole correzioni a ultime modifiche Warehouse 2022-02-23 10:32:30 +01:00
RenzoL 5f6572d0ef - Aggiunta lista di Offset e Spessori minimi e massimi alla Warehouse nel caso Medium e Pareti 2022-02-22 17:07:17 +01:00
RenzoL ce794f55dc Merge remote-tracking branch 'origin/develop' into Renzo 2022-02-22 08:55:14 +01:00
RenzoL 76bdc0bb19 - Aggiunta finestra di selezione per UpdateBTL per aggiornare il progetto corrrente con i pezzi del progetto importato o accodare quest'ultimi
- Aggiunta finestra per checkare i pezzi che si desidera aggiungere nel caso "Aggiorna" di UpdateBTL
2022-02-21 16:41:40 +01:00
RenzoL cd940ccf7e Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-18 11:17:05 +01:00
RenzoL 3ddc441674 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-16 15:12:39 +01:00
RenzoL 7642884442 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-09 09:48:30 +01:00
RenzoL cefff881f5 - Stato e direzione del Sort delle colonne della EgtDataGrid viene ora salvato alla modifica e caricato all'avvio del programma
- Aggiunto "Reset Sort" al ContextMenu degli header della EgtDataGrid per resettare il Sort
2022-02-04 17:02:18 +01:00
RenzoL 923f1ab7ff Aggiunto bottone e finestra per muovere i pezzi nel grezzo nell'Ottimizzatore 2022-02-04 14:54:01 +01:00
RenzoL f1b2e66b97 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-04 08:52:38 +01:00
119 changed files with 13573 additions and 582 deletions
+1
View File
@@ -327,3 +327,4 @@ _UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
.ionide/symbolCache.db
+577
View File
@@ -0,0 +1,577 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Public Class BTLElementM
Inherits BTLPartM
' lista delle feature del pezzo
Public m_BTLLayerMList As List(Of BTLLayerM)
Public Property BTLLayerMList As List(Of BTLLayerM)
Get
Return m_BTLLayerMList
End Get
Set(value As List(Of BTLLayerM))
m_BTLLayerMList = value
End Set
End Property
Public ReadOnly Property sName As String
Get
Return "Prova"
End Get
End Property
#Region "CONSTRUCTOR"
Protected Sub New()
End Sub
Public Shared Function CreateNewBTLElement() As BTLElementM
Return New BTLPartM
End Function
Public Shared Function CreateBTLElement(nGroupId As Integer) As BTLElementM
Dim NewBTLElement As New BTLElementM
NewBTLElement = CreateBTLElementAsPart(nGroupId)
Return NewBTLElement
End Function
Public Overloads Shared Function CreateBTLElementAsPart(nPartId As Integer) As BTLElementM
Dim NewBTLPart As New BTLElementM
NewBTLPart.m_nPartId = nPartId
' leggo info pezzo
Dim sValArray() As String
Dim sValue As String = String.Empty
Dim nValue As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PDN, NewBTLPart.m_nPDN)
Dim nDO As Integer = 1
If EgtGetInfo(nPartId, BTL_PRT_DO, nDO) Then
NewBTLPart.m_bDO = (nDO <> 0)
Else
NewBTLPart.m_bDO = True
End If
EgtGetInfo(nPartId, BTL_PRT_NAM, NewBTLPart.m_sNAM)
EgtGetInfo(nPartId, BTL_PRT_L, NewBTLPart.m_dBtlL)
EgtGetInfo(nPartId, BTL_PRT_W, NewBTLPart.m_dBtlW)
EgtGetInfo(nPartId, BTL_PRT_H, NewBTLPart.m_dBtlH)
EgtGetInfo(nPartId, BTL_PRT_CNT, NewBTLPart.m_nCNT)
EgtGetInfo(nPartId, BTL_PRT_ADDED, NewBTLPart.m_nADDED)
EgtGetInfo(nPartId, BTL_PRT_ASSEMBLYNUM, NewBTLPart.m_sASSEMBLYNUM)
EgtGetInfo(nPartId, BTL_PRT_ORDERNUM, NewBTLPart.m_nORDERNUM)
EgtGetInfo(nPartId, BTL_PRT_DESIGNATION, NewBTLPart.m_sDESIGN)
EgtGetInfo(nPartId, BTL_PRT_ANNOTATION, NewBTLPart.m_sANNOT)
EgtGetInfo(nPartId, BTL_PRT_STOREY, NewBTLPart.m_sSTOREY)
EgtGetInfo(nPartId, BTL_PRT_GROUP, NewBTLPart.m_sGROUP)
EgtGetInfo(nPartId, BTL_PRT_PACKAGE, NewBTLPart.m_sPACKAGE)
EgtGetInfo(nPartId, BTL_PRT_TIMBERGRADE, NewBTLPart.m_sTIMBERGRADE)
EgtGetInfo(nPartId, BTL_PRT_QUALITYGRADE, NewBTLPart.m_sQUALITYGRADE)
EgtGetInfo(nPartId, BTL_PRT_COLOUR, sValue)
NewBTLPart.m_colCOLOR.FromString(sValue)
EgtGetInfo(nPartId, BTL_PRT_PLANINGLENGTH, NewBTLPart.m_dPLANINGLEN)
EgtGetInfo(nPartId, BTL_PRT_STARTOFFSET, NewBTLPart.m_dSTARTOFFSET)
EgtGetInfo(nPartId, BTL_PRT_ENDOFFSET, NewBTLPart.m_dENDOFFSET)
Dim ind As Integer = 1
While EgtGetInfo(nPartId, BTL_PRT_UID & ind, nValue)
NewBTLPart.ocUID.Add(nValue)
EgtGetInfo(nPartId, BTL_PRT_TRANSFORMATION & ind, sValue)
NewBTLPart.m_refTransf = New Frame3d
Dim ptOri As New Point3d
Dim vtVersX As New Vector3d
Dim vtVersY As New Vector3d
sValArray = sValue.Split({","}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 9 Then
StringToLen(sValArray(0), ptOri.x)
StringToLen(sValArray(1), ptOri.y)
StringToLen(sValArray(2), ptOri.z)
StringToDouble(sValArray(3), vtVersX.x)
StringToDouble(sValArray(4), vtVersX.y)
StringToDouble(sValArray(5), vtVersX.z)
StringToDouble(sValArray(6), vtVersY.x)
StringToDouble(sValArray(7), vtVersY.y)
StringToDouble(sValArray(8), vtVersY.z)
NewBTLPart.m_refTransf.ChangeOrigin(ptOri)
NewBTLPart.m_refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY)
End If
NewBTLPart.refTransfList.Add(NewBTLPart.m_refTransf)
ind = ind + 1
End While
EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 5 Then
StringToLen(sValArray(3), NewBTLPart.m_dCamberLen1)
StringToLen(sValArray(5), NewBTLPart.m_dCamberLen2)
StringToLen(sValArray(7), NewBTLPart.m_dCamberLen3)
StringToLen(sValArray(9), NewBTLPart.m_dCamberCross3)
End If
Dim pFrom As Integer = sValue.IndexOf("SIDE: ") + "SIDE: ".Length
Dim pTo As Integer = sValue.LastIndexOf(" P01")
If pTo >= 0 Then
nValue = CInt(sValue.Substring(pFrom, pTo - pFrom))
NewBTLPart.m_SelCAMBERSIDE = NewBTLPart.ocCAMBERSIDE.IndexOf(CInt(sValue.Substring(pFrom, pTo - pFrom)))
End If
EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 5 Then
StringToLen(sValArray(3), NewBTLPart.m_dPartOffsetSide1)
StringToLen(sValArray(5), NewBTLPart.m_dPartOffsetSide2)
StringToLen(sValArray(7), NewBTLPart.m_dPartOffsetSide3)
StringToLen(sValArray(9), NewBTLPart.m_dPartOffsetSide4)
End If
pFrom = sValue.IndexOf("P04: ") + "P04: ".Length
pTo = sValue.LastIndexOf(" P11")
If pTo >= 0 Then
NewBTLPart.m_SelREFSIDEFIXCLAMP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue.Substring(pFrom, pTo - pFrom),
NewBTLPart.ocREFSIDEFIXCLAMP),
NewBTLPart.ocREFSIDEFIXCLAMP)
End If
Dim EnumIndex As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
For ind = 1 To NewBTLPart.ocPROCESSINGQUALITY.Count
Dim sEnumName = [Enum].GetName(GetType(ProcessingQuality), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelPROCESSINGQUALITY = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
EnumIndex = 0
For ind = 1 To NewBTLPart.ocRECESS.Count
Dim sEnumName = [Enum].GetName(GetType(Recess), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelRECESS = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
EnumIndex = 0
For ind = 1 To NewBTLPart.ocSTOREYTYPE.Count
Dim sEnumName = [Enum].GetName(GetType(StoreyType), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelSTOREYTYPE = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, NewBTLPart.m_sELEMENTNUM)
EgtGetInfo(nPartId, BTL_PRT_LAYER, NewBTLPart.m_nLAYER)
EgtGetInfo(nPartId, BTL_PRT_MODULENUM, NewBTLPart.m_sMODULENUM)
'EgtGetInfo(nPartId, BTL_PRT_USERATTRIBUTE, m_sUSERATTRIBUTE)
EgtGetInfo(nPartId, BTL_PRT_COMMENT, NewBTLPart.m_sCOMMENT)
EgtGetInfo(nPartId, BTL_PRT_GRAINDIR, sValue)
NewBTLPart.m_refGrainDir = New Vector3d
sValArray = sValue.Split(New String() {",", ";"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 4 Then
StringToDouble(sValArray(0), NewBTLPart.m_refGrainDir.x)
StringToDouble(sValArray(1), NewBTLPart.m_refGrainDir.y)
StringToDouble(sValArray(2), NewBTLPart.m_refGrainDir.z)
NewBTLPart.m_bGRAINDIRALIGN = (CInt(sValArray(3)) = 1)
End If
EgtGetInfo(nPartId, BTL_PRT_REFSIDE, sValue)
sValArray = sValue.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 2 Then
NewBTLPart.m_SelREFSIDE = NewBTLPart.ocREFSIDE.IndexOf(CInt(sValArray(0)))
NewBTLPart.m_bREFSIDEALIGN = (CInt(sValArray(1)) = 1)
End If
EgtGetInfo(nPartId, BTL_PRT_ALIGNMENT, sValue)
sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 2 Then
NewBTLPart.m_SelALIGNLOCATION = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), NewBTLPart.ocALIGNLOCATION),
NewBTLPart.ocALIGNLOCATION)
NewBTLPart.m_SelALIGNENDTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(1).Trim(),
NewBTLPart.ocALIGNENDTYPE),
NewBTLPart.ocALIGNENDTYPE)
End If
EgtGetInfo(nPartId, BTL_PRT_MATERIALTYPE, sValue)
sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 1 Then
NewBTLPart.m_SelMATERIALTYPEGRP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0),
NewBTLPart.ocMATERIALTYPEGRP),
NewBTLPart.ocMATERIALTYPEGRP)
If sValArray.Count() >= 2 Then NewBTLPart.m_sMATERIALTYPESPEC = sValArray(1).Trim()
End If
If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, NewBTLPart.nROTATED) Then
NewBTLPart.nROTATED = 0
End If
If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, NewBTLPart.nINVERTED) Then
NewBTLPart.nINVERTED = 0
End If
EgtGetInfo(nPartId, BTL_PRT_MATERIAL, NewBTLPart.m_sMATERIAL)
If Not EgtGetInfo(nPartId, LOCK_ROT, NewBTLPart.bLockRotation) Then
NewBTLPart.bLockRotation = False
End If
If Not EgtGetInfo(nPartId, LOCK_FLIP, NewBTLPart.bLockInversion) Then
NewBTLPart.bLockInversion = False
End If
EgtGetInfo(nPartId, BTL_PRT_VOLUME, NewBTLPart.dVolume)
'' Leggo outline e features
'NewBTLPart.m_BTLFeatureMList = LoadFeatures(nPartId, NewBTLPart)
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim nFall As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
bCalc = EgtGetInfo(nPartId, ITG_PROJ_ERR, nErr)
EgtGetInfo(nPartId, ITG_PROJ_ROT, nRot)
EgtGetInfo(nPartId, ITG_PROJ_FALL, nFall)
EgtGetInfo(nPartId, ITG_PROJ_MSG, sMsg)
If Not bCalc Then
NewBTLPart.m_nState = CalcStates.NOTCALCULATED
NewBTLPart.nCALC_ERR = 0
NewBTLPart.m_nCALC_ROT = 0
NewBTLPart.nCALC_FALL = 0
NewBTLPart.sCALC_MSG = ""
Else
NewBTLPart.nCALC_ERR = nErr
NewBTLPart.nCALC_ROT = nRot
NewBTLPart.nCALC_FALL = nFall
NewBTLPart.sCALC_MSG = sMsg
Select Case nErr
Case 0
NewBTLPart.nState = CalcStates.OK
Case 22
NewBTLPart.nState = CalcStates.COLLISION
Case 17, 19
NewBTLPart.nState = CalcStates.WARNING
Case < 0
NewBTLPart.nState = CalcStates.INFO
Case > 0
NewBTLPart.nState = CalcStates.ERROR_
End Select
End If
EgtGetInfo(nPartId, ITG_PROJ_TIME, NewBTLPart.m_nCALC_TIME)
Return NewBTLPart
End Function
' Private Shared Function LoadFeatures(nPartId As Integer, NewBTLPart As BTLPartM) As List(Of BTLFeatureM)
' Dim TempList As New List(Of BTLFeatureM)
' ' Leggo outline
' Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
' Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayerId)
' While nOutlineId <> GDB_ID.NULL
' ' verifico che sia una feature
' Dim nGRP As Integer
' If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then
' ' creo la feature
' TempList.Add(BTLFeatureM.CreateBTLFeature(NewBTLPart, nOutlineId))
' End If
' nOutlineId = EgtGetNext(nOutlineId)
' End While
' ' Leggo feature
' Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
' Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
' While nFeatureId <> GDB_ID.NULL
' ' verifico che sia una feature
' Dim nGRP As Integer
' If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nFeatureId, BTL_FTR_MAINID) Then
' ' creo la feature
' Dim NewFeature As BTLFeatureM = BTLFeatureM.CreateBTLFeature(NewBTLPart, nFeatureId)
' TempList.Add(NewFeature)
' ' aggiorno Id feature perchè potrebbe essere stata ricalcolata
' nFeatureId = NewFeature.nFeatureId
' End If
' nFeatureId = EgtGetNext(nFeatureId)
' End While
' Return TempList
' End Function
' 'Sub New(ParentStructure As BTLStructureVM, nPartId As Integer)
' ' MyBase.New(ParentStructure, nPartId)
' ' ' leggo info pezzo
' ' Dim sValArray() As String
' ' Dim sValue As String = String.Empty
' ' Dim nValue As Integer = 0
' ' EgtGetInfo(nPartId, BTL_PRT_PDN, nPDN)
' ' Dim nDO As Integer = 1
' ' If EgtGetInfo(nPartId, BTL_PRT_DO, nDO) Then
' ' m_bDO = (nDO <> 0)
' ' Else
' ' m_bDO = True
' ' End If
' ' EgtGetInfo(nPartId, BTL_PRT_NAM, m_sNAM)
' ' EgtGetInfo(nPartId, BTL_PRT_L, m_dL)
' ' EgtGetInfo(nPartId, BTL_PRT_W, m_dW)
' ' EgtGetInfo(nPartId, BTL_PRT_H, m_dH)
' ' EgtGetInfo(nPartId, BTL_PRT_CNT, m_nCNT)
' ' EgtGetInfo(nPartId, BTL_PRT_ASSEMBLYNUM, m_sASSEMBLYNUM)
' ' EgtGetInfo(nPartId, BTL_PRT_ORDERNUM, m_nORDERNUM)
' ' EgtGetInfo(nPartId, BTL_PRT_DESIGNATION, m_sDESIGN)
' ' EgtGetInfo(nPartId, BTL_PRT_ANNOTATION, m_sANNOT)
' ' EgtGetInfo(nPartId, BTL_PRT_STOREY, m_sSTOREY)
' ' EgtGetInfo(nPartId, BTL_PRT_GROUP, m_sGROUP)
' ' EgtGetInfo(nPartId, BTL_PRT_PACKAGE, m_sPACKAGE)
' ' EgtGetInfo(nPartId, BTL_PRT_TIMBERGRADE, m_sTIMBERGRADE)
' ' EgtGetInfo(nPartId, BTL_PRT_QUALITYGRADE, m_sQUALITYGRADE)
' ' EgtGetInfo(nPartId, BTL_PRT_COLOUR, sValue)
' ' m_colCOLOR.FromString(sValue)
' ' EgtGetInfo(nPartId, BTL_PRT_PLANINGLENGTH, m_dPLANINGLEN)
' ' EgtGetInfo(nPartId, BTL_PRT_STARTOFFSET, m_dSTARTOFFSET)
' ' EgtGetInfo(nPartId, BTL_PRT_ENDOFFSET, m_dENDOFFSET)
' ' Dim ind As Integer = 1
' ' While EgtGetInfo(nPartId, BTL_PRT_UID & ind, nValue)
' ' ocUID.Add(nValue)
' ' EgtGetInfo(nPartId, BTL_PRT_TRANSFORMATION & ind, sValue)
' ' m_refTransf = New Frame3d
' ' Dim ptOri As New Point3d
' ' Dim vtVersX As New Vector3d
' ' Dim vtVersY As New Vector3d
' ' sValArray = sValue.Split({","}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 9 Then
' ' StringToLen(sValArray(0), ptOri.x)
' ' StringToLen(sValArray(1), ptOri.y)
' ' StringToLen(sValArray(2), ptOri.z)
' ' StringToDouble(sValArray(3), vtVersX.x)
' ' StringToDouble(sValArray(4), vtVersX.y)
' ' StringToDouble(sValArray(5), vtVersX.z)
' ' StringToDouble(sValArray(6), vtVersY.x)
' ' StringToDouble(sValArray(7), vtVersY.y)
' ' StringToDouble(sValArray(8), vtVersY.z)
' ' m_refTransf.ChangeOrigin(ptOri)
' ' m_refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY)
' ' End If
' ' refTransfList.Add(m_refTransf)
' ' ind = ind + 1
' ' End While
' ' EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
' ' sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 5 Then
' ' StringToLen(sValArray(3), m_dCamberLen1)
' ' StringToLen(sValArray(5), m_dCamberLen2)
' ' StringToLen(sValArray(7), m_dCamberLen3)
' ' StringToLen(sValArray(9), m_dCamberCross3)
' ' End If
' ' Dim pFrom As Integer = sValue.IndexOf("SIDE: ") + "SIDE: ".Length
' ' Dim pTo As Integer = sValue.LastIndexOf(" P01")
' ' If pTo >= 0 Then
' ' nValue = CInt(sValue.Substring(pFrom, pTo - pFrom))
' ' m_SelCAMBERSIDE = ocCAMBERSIDE.IndexOf(CInt(sValue.Substring(pFrom, pTo - pFrom)))
' ' End If
' ' EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
' ' sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 5 Then
' ' StringToLen(sValArray(3), m_dPartOffsetSide1)
' ' StringToLen(sValArray(5), m_dPartOffsetSide2)
' ' StringToLen(sValArray(7), m_dPartOffsetSide3)
' ' StringToLen(sValArray(9), m_dPartOffsetSide4)
' ' End If
' ' pFrom = sValue.IndexOf("P04: ") + "P04: ".Length
' ' pTo = sValue.LastIndexOf(" P11")
' ' If pTo >= 0 Then
' ' m_SelREFSIDEFIXCLAMP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue.Substring(pFrom, pTo - pFrom), ocREFSIDEFIXCLAMP), ocREFSIDEFIXCLAMP)
' ' End If
' ' EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
' ' m_SelPROCESSINGQUALITY = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocPROCESSINGQUALITY), ocPROCESSINGQUALITY)
' ' EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
' ' m_SelRECESS = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocRECESS), ocRECESS)
' ' EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
' ' m_SelSTOREYTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocSTOREYTYPE), ocSTOREYTYPE)
' ' EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, m_sELEMENTNUM)
' ' EgtGetInfo(nPartId, BTL_PRT_LAYER, m_nLAYER)
' ' EgtGetInfo(nPartId, BTL_PRT_MODULENUM, m_sMODULENUM)
' ' 'EgtGetInfo(nPartId, BTL_PRT_USERATTRIBUTE, m_sUSERATTRIBUTE)
' ' EgtGetInfo(nPartId, BTL_PRT_COMMENT, m_sCOMMENT)
' ' EgtGetInfo(nPartId, BTL_PRT_GRAINDIR, sValue)
' ' m_refGrainDir = New Vector3d
' ' sValArray = sValue.Split(New String() {",", ";"}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 4 Then
' ' StringToDouble(sValArray(0), m_refGrainDir.x)
' ' StringToDouble(sValArray(1), m_refGrainDir.y)
' ' StringToDouble(sValArray(2), m_refGrainDir.z)
' ' m_bGRAINDIRALIGN = (CInt(sValArray(3)) = 1)
' ' End If
' ' EgtGetInfo(nPartId, BTL_PRT_REFSIDE, sValue)
' ' sValArray = sValue.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 2 Then
' ' m_SelREFSIDE = ocREFSIDE.IndexOf(CInt(sValArray(0)))
' ' m_bREFSIDEALIGN = (CInt(sValArray(1)) = 1)
' ' End If
' ' EgtGetInfo(nPartId, BTL_PRT_ALIGNMENT, sValue)
' ' sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 2 Then
' ' m_SelALIGNLOCATION = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), ocALIGNLOCATION), ocALIGNLOCATION)
' ' m_SelALIGNENDTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(1).Trim(), ocALIGNENDTYPE), ocALIGNENDTYPE)
' ' End If
' ' EgtGetInfo(nPartId, BTL_PRT_MATERIALTYPE, sValue)
' ' sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
' ' If sValArray.Count() >= 1 Then
' ' m_SelMATERIALTYPEGRP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), ocMATERIALTYPEGRP), ocMATERIALTYPEGRP)
' ' If sValArray.Count() >= 2 Then m_sMATERIALTYPESPEC = sValArray(1).Trim()
' ' End If
' ' If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, m_nROTATED) Then
' ' m_nROTATED = 0
' ' End If
' ' If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, m_nINVERTED) Then
' ' m_nINVERTED = 0
' ' End If
' ' If EgtGetInfo(nPartId, BTL_PRT_MATERIAL, m_sMATERIAL) Then
' ' If Not ParentStructure.MaterialList.Contains(m_sMATERIAL) Then
' ' ParentStructure.MaterialList.Add(m_sMATERIAL)
' ' End If
' ' End If
' ' If Not ParentStructure.SectionList.Contains(Section) Then
' ' ParentStructure.SectionList.Add(Section)
' ' End If
' ' ' Leggo outline
' ' Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
' ' Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayerId)
' ' While nOutlineId <> GDB_ID.NULL
' ' ' verifico che sia una feature
' ' Dim nGRP As Integer
' ' If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then
' ' ' creo la feature
' ' m_FeatureList.Add(New BTLFeatureVM(Me, nOutlineId))
' ' End If
' ' nOutlineId = EgtGetNext(nOutlineId)
' ' End While
' ' ' Leggo feature
' ' Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
' ' Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
' ' While nFeatureId <> GDB_ID.NULL
' ' ' verifico che sia una feature
' ' Dim nGRP As Integer
' ' If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) Then
' ' ' creo la feature
' ' m_FeatureList.Add(New BTLFeatureVM(Me, nFeatureId))
' ' End If
' ' nFeatureId = EgtGetNext(nFeatureId)
' ' End While
' ' ' Aggiorno check DOALL
' ' NotifyPropertyChanged("bDOALL")
' ' ' leggo calc error
' ' Dim nErr As Integer = 0
' ' Dim nRot As Integer = 0
' ' Dim nFall As Integer = 0
' ' Dim sMsg As String = ""
' ' Dim bCalc As Boolean = False
' ' bCalc = EgtGetInfo(nPartId, ITG_PROJ_ERR, nErr)
' ' EgtGetInfo(nPartId, ITG_PROJ_ROT, nRot)
' ' EgtGetInfo(nPartId, ITG_PROJ_FALL, sMsg)
' ' EgtGetInfo(nPartId, ITG_PROJ_MSG, sMsg)
' ' CalcPartUpdate(bCalc, nErr, nRot, nFall, sMsg)
' ' CalcFeatureUpdate()
' 'End Sub
' 'Sub New(ParentStructure As BTLStructure, nPartId As Integer)
' ' m_BTLStructureM = ParentStructure
' ' Me.SetPartId = nPartId
' ' m_FeatureList = New ObservableCollection(Of BTLFeature)
' 'End Sub
'#End Region ' CONSTRUCTOR
'#Region "METHODS"
' Public Event BTLFeatureAdded As EventHandler(Of BTLFeatureAddedEventArgs)
' Public Sub AddBTLFeature(BTLFeatureM As BTLFeatureM)
' If IsNothing(BTLFeatureM) Then Return
' If Not m_BTLFeatureMList.Contains(BTLFeatureM) Then
' m_BTLFeatureMList.Add(BTLFeatureM)
' RaiseEvent BTLFeatureAdded(Me, New BTLFeatureAddedEventArgs(BTLFeatureM))
' End If
' End Sub
' Public Function GetBTLFeatures() As List(Of BTLFeatureM)
' Return New List(Of BTLFeatureM)(m_BTLFeatureMList)
' End Function
' Public Function Rotation(IsPositive As Boolean, SelectedMachineType As MachineType, Optional dAng As Double = 90) As Boolean
' ' recupero il box del pezzo
' Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' Dim b3Solid As New BBox3d
' EgtGetBBoxGlob(nLs, GDB_BB.STANDARD, b3Solid)
' If b3Solid.IsEmpty() Then
' EgtOutLog("ERROR: Box non definito per la trave " & sNAM)
' Return False
' End If
' ' eseguo rotazione di 90 gradi attorno asse X
' Dim dRot = If(IsPositive, 1, -1) * Math.Abs(dAng)
' Dim vtAxes As Vector3d
' ' se travi ruoto attorno all'asse X
' If SelectedMachineType = MachineType.BEAM Then
' vtAxes = Vector3d.X_AX
' ' se pareti ruoto attorno all'asse Z
' ElseIf SelectedMachineType = MachineType.WALL Then
' vtAxes = -Vector3d.Z_AX
' End If
' ' se invertito
' Dim bInverted As Boolean = nINVERTED <> 0
' If bInverted Then
' ' annullo inversione
' Inversion(SelectedMachineType)
' End If
' ' eseguo rotazione
' Dim bOk As Boolean = EgtRotate(nPartId, b3Solid.Center, vtAxes, dRot, GDB_RT.GLOB)
' If bOk Then
' Dim dNewRotation As Double = (nROTATED + dRot) Mod 360
' nROTATED = If(dNewRotation >= 0, dNewRotation, 360 + dNewRotation)
' EgtSetInfo(nPartId, BTL_PRT_ROTATED, nROTATED)
' ' imposto modificato per copie
' EgtDuploSetModified(nPartId)
' End If
' ' se era invertito
' If bInverted Then
' ' ripristino inversione
' Inversion(SelectedMachineType)
' End If
' EgtDraw()
' Return bOk
' End Function
' Public Sub Inversion(SelectedMachineType As MachineType)
' ' recupero il box del pezzo
' Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' Dim b3Solid As New BBox3d
' EgtGetBBoxGlob(nLs, GDB_BB.STANDARD, b3Solid)
' If b3Solid.IsEmpty() Then
' EgtOutLog("ERROR: Box non definito per la trave " & sNAM)
' Return
' End If
' Dim vtAxes As Vector3d
' ' se travi ruoto attorno all'asse Z
' If SelectedMachineType = MachineType.BEAM Then
' vtAxes = Vector3d.Z_AX
' ' se pareti ruoto attorno all'asse X
' ElseIf SelectedMachineType = MachineType.WALL Then
' vtAxes = Vector3d.X_AX
' End If
' ' eseguo rotazione di 180 gradi
' If EgtRotate(nPartId, b3Solid.Center, vtAxes, 180, GDB_RT.GLOB) Then
' nINVERTED = If(nINVERTED = 0, 180, 0)
' EgtSetInfo(nPartId, BTL_PRT_INVERTED, nINVERTED)
' ' imposto modificato per copie
' EgtDuploSetModified(nPartId)
' End If
' End Sub
' Public Function NewProcId() As Integer
' Dim nMaxProcId As Integer = 0
' If Not IsNothing(BTLFeatureMList) AndAlso BTLFeatureMList.Count > 0 Then
' nMaxProcId = BTLFeatureMList.Max(Function(x) x.nPRID)
' End If
' Return nMaxProcId + 1
' End Function
#End Region ' METHODS
End Class
+1 -1
View File
@@ -174,7 +174,7 @@ Public Class BTLFeatureM
Protected m_sCALC_MSG As String
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
Return MessageFromLuaMsg(m_sCALC_MSG)
End Get
Set(value As String)
m_sCALC_MSG = value
+570
View File
@@ -0,0 +1,570 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Public Class BTLLayerM
Inherits BTLPartM
Public m_BTLPartMList As List(Of BTLPartM)
Public Property BTLPartMList As List(Of BTLPartM)
Get
Return m_BTLPartMList
End Get
Set(value As List(Of BTLPartM))
m_BTLPartMList = value
End Set
End Property
#Region "CONSTRUCTOR"
Protected Sub New()
End Sub
Public Shared Function CreateNewBTLLayer() As BTLLayerM
Return New BTLPartM
End Function
Public Shared Function CreateBTLLayer(nGroupId As Integer) As BTLLayerM
Dim NewBTLLayer As New BTLLayerM
NewBTLLayer = CreateBTLLayerAsPart(nGroupId)
Return NewBTLLayer
End Function
Public Overloads Shared Function CreateBTLLayerAsPart(nPartId As Integer) As BTLLayerM
Dim NewBTLPart As New BTLLayerM
NewBTLPart.m_nPartId = nPartId
' leggo info pezzo
Dim sValArray() As String
Dim sValue As String = String.Empty
Dim nValue As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PDN, NewBTLPart.m_nPDN)
Dim nDO As Integer = 1
If EgtGetInfo(nPartId, BTL_PRT_DO, nDO) Then
NewBTLPart.m_bDO = (nDO <> 0)
Else
NewBTLPart.m_bDO = True
End If
EgtGetInfo(nPartId, BTL_PRT_NAM, NewBTLPart.m_sNAM)
EgtGetInfo(nPartId, BTL_PRT_L, NewBTLPart.m_dBtlL)
EgtGetInfo(nPartId, BTL_PRT_W, NewBTLPart.m_dBtlW)
EgtGetInfo(nPartId, BTL_PRT_H, NewBTLPart.m_dBtlH)
EgtGetInfo(nPartId, BTL_PRT_CNT, NewBTLPart.m_nCNT)
EgtGetInfo(nPartId, BTL_PRT_ADDED, NewBTLPart.m_nADDED)
EgtGetInfo(nPartId, BTL_PRT_ASSEMBLYNUM, NewBTLPart.m_sASSEMBLYNUM)
EgtGetInfo(nPartId, BTL_PRT_ORDERNUM, NewBTLPart.m_nORDERNUM)
EgtGetInfo(nPartId, BTL_PRT_DESIGNATION, NewBTLPart.m_sDESIGN)
EgtGetInfo(nPartId, BTL_PRT_ANNOTATION, NewBTLPart.m_sANNOT)
EgtGetInfo(nPartId, BTL_PRT_STOREY, NewBTLPart.m_sSTOREY)
EgtGetInfo(nPartId, BTL_PRT_GROUP, NewBTLPart.m_sGROUP)
EgtGetInfo(nPartId, BTL_PRT_PACKAGE, NewBTLPart.m_sPACKAGE)
EgtGetInfo(nPartId, BTL_PRT_TIMBERGRADE, NewBTLPart.m_sTIMBERGRADE)
EgtGetInfo(nPartId, BTL_PRT_QUALITYGRADE, NewBTLPart.m_sQUALITYGRADE)
EgtGetInfo(nPartId, BTL_PRT_COLOUR, sValue)
NewBTLPart.m_colCOLOR.FromString(sValue)
EgtGetInfo(nPartId, BTL_PRT_PLANINGLENGTH, NewBTLPart.m_dPLANINGLEN)
EgtGetInfo(nPartId, BTL_PRT_STARTOFFSET, NewBTLPart.m_dSTARTOFFSET)
EgtGetInfo(nPartId, BTL_PRT_ENDOFFSET, NewBTLPart.m_dENDOFFSET)
Dim ind As Integer = 1
While EgtGetInfo(nPartId, BTL_PRT_UID & ind, nValue)
NewBTLPart.ocUID.Add(nValue)
EgtGetInfo(nPartId, BTL_PRT_TRANSFORMATION & ind, sValue)
NewBTLPart.m_refTransf = New Frame3d
Dim ptOri As New Point3d
Dim vtVersX As New Vector3d
Dim vtVersY As New Vector3d
sValArray = sValue.Split({","}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 9 Then
StringToLen(sValArray(0), ptOri.x)
StringToLen(sValArray(1), ptOri.y)
StringToLen(sValArray(2), ptOri.z)
StringToDouble(sValArray(3), vtVersX.x)
StringToDouble(sValArray(4), vtVersX.y)
StringToDouble(sValArray(5), vtVersX.z)
StringToDouble(sValArray(6), vtVersY.x)
StringToDouble(sValArray(7), vtVersY.y)
StringToDouble(sValArray(8), vtVersY.z)
NewBTLPart.m_refTransf.ChangeOrigin(ptOri)
NewBTLPart.m_refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY)
End If
NewBTLPart.refTransfList.Add(NewBTLPart.m_refTransf)
ind = ind + 1
End While
EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 5 Then
StringToLen(sValArray(3), NewBTLPart.m_dCamberLen1)
StringToLen(sValArray(5), NewBTLPart.m_dCamberLen2)
StringToLen(sValArray(7), NewBTLPart.m_dCamberLen3)
StringToLen(sValArray(9), NewBTLPart.m_dCamberCross3)
End If
Dim pFrom As Integer = sValue.IndexOf("SIDE: ") + "SIDE: ".Length
Dim pTo As Integer = sValue.LastIndexOf(" P01")
If pTo >= 0 Then
nValue = CInt(sValue.Substring(pFrom, pTo - pFrom))
NewBTLPart.m_SelCAMBERSIDE = NewBTLPart.ocCAMBERSIDE.IndexOf(CInt(sValue.Substring(pFrom, pTo - pFrom)))
End If
EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 5 Then
StringToLen(sValArray(3), NewBTLPart.m_dPartOffsetSide1)
StringToLen(sValArray(5), NewBTLPart.m_dPartOffsetSide2)
StringToLen(sValArray(7), NewBTLPart.m_dPartOffsetSide3)
StringToLen(sValArray(9), NewBTLPart.m_dPartOffsetSide4)
End If
pFrom = sValue.IndexOf("P04: ") + "P04: ".Length
pTo = sValue.LastIndexOf(" P11")
If pTo >= 0 Then
NewBTLPart.m_SelREFSIDEFIXCLAMP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue.Substring(pFrom, pTo - pFrom),
NewBTLPart.ocREFSIDEFIXCLAMP),
NewBTLPart.ocREFSIDEFIXCLAMP)
End If
Dim EnumIndex As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
For ind = 1 To NewBTLPart.ocPROCESSINGQUALITY.Count
Dim sEnumName = [Enum].GetName(GetType(ProcessingQuality), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelPROCESSINGQUALITY = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
EnumIndex = 0
For ind = 1 To NewBTLPart.ocRECESS.Count
Dim sEnumName = [Enum].GetName(GetType(Recess), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelRECESS = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
EnumIndex = 0
For ind = 1 To NewBTLPart.ocSTOREYTYPE.Count
Dim sEnumName = [Enum].GetName(GetType(StoreyType), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelSTOREYTYPE = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, NewBTLPart.m_sELEMENTNUM)
EgtGetInfo(nPartId, BTL_PRT_LAYER, NewBTLPart.m_nLAYER)
EgtGetInfo(nPartId, BTL_PRT_MODULENUM, NewBTLPart.m_sMODULENUM)
'EgtGetInfo(nPartId, BTL_PRT_USERATTRIBUTE, m_sUSERATTRIBUTE)
EgtGetInfo(nPartId, BTL_PRT_COMMENT, NewBTLPart.m_sCOMMENT)
EgtGetInfo(nPartId, BTL_PRT_GRAINDIR, sValue)
NewBTLPart.m_refGrainDir = New Vector3d
sValArray = sValue.Split(New String() {",", ";"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 4 Then
StringToDouble(sValArray(0), NewBTLPart.m_refGrainDir.x)
StringToDouble(sValArray(1), NewBTLPart.m_refGrainDir.y)
StringToDouble(sValArray(2), NewBTLPart.m_refGrainDir.z)
NewBTLPart.m_bGRAINDIRALIGN = (CInt(sValArray(3)) = 1)
End If
EgtGetInfo(nPartId, BTL_PRT_REFSIDE, sValue)
sValArray = sValue.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 2 Then
NewBTLPart.m_SelREFSIDE = NewBTLPart.ocREFSIDE.IndexOf(CInt(sValArray(0)))
NewBTLPart.m_bREFSIDEALIGN = (CInt(sValArray(1)) = 1)
End If
EgtGetInfo(nPartId, BTL_PRT_ALIGNMENT, sValue)
sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 2 Then
NewBTLPart.m_SelALIGNLOCATION = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), NewBTLPart.ocALIGNLOCATION),
NewBTLPart.ocALIGNLOCATION)
NewBTLPart.m_SelALIGNENDTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(1).Trim(),
NewBTLPart.ocALIGNENDTYPE),
NewBTLPart.ocALIGNENDTYPE)
End If
EgtGetInfo(nPartId, BTL_PRT_MATERIALTYPE, sValue)
sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
If sValArray.Count() >= 1 Then
NewBTLPart.m_SelMATERIALTYPEGRP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0),
NewBTLPart.ocMATERIALTYPEGRP),
NewBTLPart.ocMATERIALTYPEGRP)
If sValArray.Count() >= 2 Then NewBTLPart.m_sMATERIALTYPESPEC = sValArray(1).Trim()
End If
If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, NewBTLPart.nROTATED) Then
NewBTLPart.nROTATED = 0
End If
If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, NewBTLPart.nINVERTED) Then
NewBTLPart.nINVERTED = 0
End If
EgtGetInfo(nPartId, BTL_PRT_MATERIAL, NewBTLPart.m_sMATERIAL)
If Not EgtGetInfo(nPartId, LOCK_ROT, NewBTLPart.bLockRotation) Then
NewBTLPart.bLockRotation = False
End If
If Not EgtGetInfo(nPartId, LOCK_FLIP, NewBTLPart.bLockInversion) Then
NewBTLPart.bLockInversion = False
End If
EgtGetInfo(nPartId, BTL_PRT_VOLUME, NewBTLPart.dVolume)
' Leggo outline e features
NewBTLPart.m_BTLFeatureMList = LoadFeatures(nPartId, NewBTLPart)
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim nFall As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
bCalc = EgtGetInfo(nPartId, ITG_PROJ_ERR, nErr)
EgtGetInfo(nPartId, ITG_PROJ_ROT, nRot)
EgtGetInfo(nPartId, ITG_PROJ_FALL, nFall)
EgtGetInfo(nPartId, ITG_PROJ_MSG, sMsg)
If Not bCalc Then
NewBTLPart.m_nState = CalcStates.NOTCALCULATED
NewBTLPart.nCALC_ERR = 0
NewBTLPart.m_nCALC_ROT = 0
NewBTLPart.nCALC_FALL = 0
NewBTLPart.sCALC_MSG = ""
Else
NewBTLPart.nCALC_ERR = nErr
NewBTLPart.nCALC_ROT = nRot
NewBTLPart.nCALC_FALL = nFall
NewBTLPart.sCALC_MSG = sMsg
Select Case nErr
Case 0
NewBTLPart.nState = CalcStates.OK
Case 22
NewBTLPart.nState = CalcStates.COLLISION
Case 17, 19
NewBTLPart.nState = CalcStates.WARNING
Case < 0
NewBTLPart.nState = CalcStates.INFO
Case > 0
NewBTLPart.nState = CalcStates.ERROR_
End Select
End If
EgtGetInfo(nPartId, ITG_PROJ_TIME, NewBTLPart.m_nCALC_TIME)
Return NewBTLPart
End Function
Private Shared Function LoadFeatures(nPartId As Integer, NewBTLPart As BTLLayerM) As List(Of BTLFeatureM)
Dim TempList As New List(Of BTLFeatureM)
' Leggo outline
Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayerId)
While nOutlineId <> GDB_ID.NULL
' verifico che sia una feature
Dim nGRP As Integer
If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then
' creo la feature
TempList.Add(BTLFeatureM.CreateBTLFeature(NewBTLPart, nOutlineId))
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
' Leggo feature
Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
While nFeatureId <> GDB_ID.NULL
' verifico che sia una feature
Dim nGRP As Integer
If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nFeatureId, BTL_FTR_MAINID) Then
' creo la feature
Dim NewFeature As BTLFeatureM = BTLFeatureM.CreateBTLFeature(NewBTLPart, nFeatureId)
TempList.Add(NewFeature)
' aggiorno Id feature perchè potrebbe essere stata ricalcolata
nFeatureId = NewFeature.nFeatureId
End If
nFeatureId = EgtGetNext(nFeatureId)
End While
Return TempList
End Function
'Sub New(ParentStructure As BTLStructureVM, nPartId As Integer)
' MyBase.New(ParentStructure, nPartId)
' ' leggo info pezzo
' Dim sValArray() As String
' Dim sValue As String = String.Empty
' Dim nValue As Integer = 0
' EgtGetInfo(nPartId, BTL_PRT_PDN, nPDN)
' Dim nDO As Integer = 1
' If EgtGetInfo(nPartId, BTL_PRT_DO, nDO) Then
' m_bDO = (nDO <> 0)
' Else
' m_bDO = True
' End If
' EgtGetInfo(nPartId, BTL_PRT_NAM, m_sNAM)
' EgtGetInfo(nPartId, BTL_PRT_L, m_dL)
' EgtGetInfo(nPartId, BTL_PRT_W, m_dW)
' EgtGetInfo(nPartId, BTL_PRT_H, m_dH)
' EgtGetInfo(nPartId, BTL_PRT_CNT, m_nCNT)
' EgtGetInfo(nPartId, BTL_PRT_ASSEMBLYNUM, m_sASSEMBLYNUM)
' EgtGetInfo(nPartId, BTL_PRT_ORDERNUM, m_nORDERNUM)
' EgtGetInfo(nPartId, BTL_PRT_DESIGNATION, m_sDESIGN)
' EgtGetInfo(nPartId, BTL_PRT_ANNOTATION, m_sANNOT)
' EgtGetInfo(nPartId, BTL_PRT_STOREY, m_sSTOREY)
' EgtGetInfo(nPartId, BTL_PRT_GROUP, m_sGROUP)
' EgtGetInfo(nPartId, BTL_PRT_PACKAGE, m_sPACKAGE)
' EgtGetInfo(nPartId, BTL_PRT_TIMBERGRADE, m_sTIMBERGRADE)
' EgtGetInfo(nPartId, BTL_PRT_QUALITYGRADE, m_sQUALITYGRADE)
' EgtGetInfo(nPartId, BTL_PRT_COLOUR, sValue)
' m_colCOLOR.FromString(sValue)
' EgtGetInfo(nPartId, BTL_PRT_PLANINGLENGTH, m_dPLANINGLEN)
' EgtGetInfo(nPartId, BTL_PRT_STARTOFFSET, m_dSTARTOFFSET)
' EgtGetInfo(nPartId, BTL_PRT_ENDOFFSET, m_dENDOFFSET)
' Dim ind As Integer = 1
' While EgtGetInfo(nPartId, BTL_PRT_UID & ind, nValue)
' ocUID.Add(nValue)
' EgtGetInfo(nPartId, BTL_PRT_TRANSFORMATION & ind, sValue)
' m_refTransf = New Frame3d
' Dim ptOri As New Point3d
' Dim vtVersX As New Vector3d
' Dim vtVersY As New Vector3d
' sValArray = sValue.Split({","}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 9 Then
' StringToLen(sValArray(0), ptOri.x)
' StringToLen(sValArray(1), ptOri.y)
' StringToLen(sValArray(2), ptOri.z)
' StringToDouble(sValArray(3), vtVersX.x)
' StringToDouble(sValArray(4), vtVersX.y)
' StringToDouble(sValArray(5), vtVersX.z)
' StringToDouble(sValArray(6), vtVersY.x)
' StringToDouble(sValArray(7), vtVersY.y)
' StringToDouble(sValArray(8), vtVersY.z)
' m_refTransf.ChangeOrigin(ptOri)
' m_refTransf.Setup(ptOri, ptOri + vtVersX, ptOri + vtVersY)
' End If
' refTransfList.Add(m_refTransf)
' ind = ind + 1
' End While
' EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
' sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 5 Then
' StringToLen(sValArray(3), m_dCamberLen1)
' StringToLen(sValArray(5), m_dCamberLen2)
' StringToLen(sValArray(7), m_dCamberLen3)
' StringToLen(sValArray(9), m_dCamberCross3)
' End If
' Dim pFrom As Integer = sValue.IndexOf("SIDE: ") + "SIDE: ".Length
' Dim pTo As Integer = sValue.LastIndexOf(" P01")
' If pTo >= 0 Then
' nValue = CInt(sValue.Substring(pFrom, pTo - pFrom))
' m_SelCAMBERSIDE = ocCAMBERSIDE.IndexOf(CInt(sValue.Substring(pFrom, pTo - pFrom)))
' End If
' EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
' sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 5 Then
' StringToLen(sValArray(3), m_dPartOffsetSide1)
' StringToLen(sValArray(5), m_dPartOffsetSide2)
' StringToLen(sValArray(7), m_dPartOffsetSide3)
' StringToLen(sValArray(9), m_dPartOffsetSide4)
' End If
' pFrom = sValue.IndexOf("P04: ") + "P04: ".Length
' pTo = sValue.LastIndexOf(" P11")
' If pTo >= 0 Then
' m_SelREFSIDEFIXCLAMP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue.Substring(pFrom, pTo - pFrom), ocREFSIDEFIXCLAMP), ocREFSIDEFIXCLAMP)
' End If
' EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
' m_SelPROCESSINGQUALITY = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocPROCESSINGQUALITY), ocPROCESSINGQUALITY)
' EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
' m_SelRECESS = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocRECESS), ocRECESS)
' EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
' m_SelSTOREYTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, ocSTOREYTYPE), ocSTOREYTYPE)
' EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, m_sELEMENTNUM)
' EgtGetInfo(nPartId, BTL_PRT_LAYER, m_nLAYER)
' EgtGetInfo(nPartId, BTL_PRT_MODULENUM, m_sMODULENUM)
' 'EgtGetInfo(nPartId, BTL_PRT_USERATTRIBUTE, m_sUSERATTRIBUTE)
' EgtGetInfo(nPartId, BTL_PRT_COMMENT, m_sCOMMENT)
' EgtGetInfo(nPartId, BTL_PRT_GRAINDIR, sValue)
' m_refGrainDir = New Vector3d
' sValArray = sValue.Split(New String() {",", ";"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 4 Then
' StringToDouble(sValArray(0), m_refGrainDir.x)
' StringToDouble(sValArray(1), m_refGrainDir.y)
' StringToDouble(sValArray(2), m_refGrainDir.z)
' m_bGRAINDIRALIGN = (CInt(sValArray(3)) = 1)
' End If
' EgtGetInfo(nPartId, BTL_PRT_REFSIDE, sValue)
' sValArray = sValue.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 2 Then
' m_SelREFSIDE = ocREFSIDE.IndexOf(CInt(sValArray(0)))
' m_bREFSIDEALIGN = (CInt(sValArray(1)) = 1)
' End If
' EgtGetInfo(nPartId, BTL_PRT_ALIGNMENT, sValue)
' sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 2 Then
' m_SelALIGNLOCATION = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), ocALIGNLOCATION), ocALIGNLOCATION)
' m_SelALIGNENDTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(1).Trim(), ocALIGNENDTYPE), ocALIGNENDTYPE)
' End If
' EgtGetInfo(nPartId, BTL_PRT_MATERIALTYPE, sValue)
' sValArray = sValue.Split({":"}, StringSplitOptions.RemoveEmptyEntries)
' If sValArray.Count() >= 1 Then
' m_SelMATERIALTYPEGRP = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValArray(0), ocMATERIALTYPEGRP), ocMATERIALTYPEGRP)
' If sValArray.Count() >= 2 Then m_sMATERIALTYPESPEC = sValArray(1).Trim()
' End If
' If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, m_nROTATED) Then
' m_nROTATED = 0
' End If
' If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, m_nINVERTED) Then
' m_nINVERTED = 0
' End If
' If EgtGetInfo(nPartId, BTL_PRT_MATERIAL, m_sMATERIAL) Then
' If Not ParentStructure.MaterialList.Contains(m_sMATERIAL) Then
' ParentStructure.MaterialList.Add(m_sMATERIAL)
' End If
' End If
' If Not ParentStructure.SectionList.Contains(Section) Then
' ParentStructure.SectionList.Add(Section)
' End If
' ' Leggo outline
' Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
' Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayerId)
' While nOutlineId <> GDB_ID.NULL
' ' verifico che sia una feature
' Dim nGRP As Integer
' If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then
' ' creo la feature
' m_FeatureList.Add(New BTLFeatureVM(Me, nOutlineId))
' End If
' nOutlineId = EgtGetNext(nOutlineId)
' End While
' ' Leggo feature
' Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
' Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
' While nFeatureId <> GDB_ID.NULL
' ' verifico che sia una feature
' Dim nGRP As Integer
' If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) Then
' ' creo la feature
' m_FeatureList.Add(New BTLFeatureVM(Me, nFeatureId))
' End If
' nFeatureId = EgtGetNext(nFeatureId)
' End While
' ' Aggiorno check DOALL
' NotifyPropertyChanged("bDOALL")
' ' leggo calc error
' Dim nErr As Integer = 0
' Dim nRot As Integer = 0
' Dim nFall As Integer = 0
' Dim sMsg As String = ""
' Dim bCalc As Boolean = False
' bCalc = EgtGetInfo(nPartId, ITG_PROJ_ERR, nErr)
' EgtGetInfo(nPartId, ITG_PROJ_ROT, nRot)
' EgtGetInfo(nPartId, ITG_PROJ_FALL, sMsg)
' EgtGetInfo(nPartId, ITG_PROJ_MSG, sMsg)
' CalcPartUpdate(bCalc, nErr, nRot, nFall, sMsg)
' CalcFeatureUpdate()
'End Sub
'Sub New(ParentStructure As BTLStructure, nPartId As Integer)
' m_BTLStructureM = ParentStructure
' Me.SetPartId = nPartId
' m_FeatureList = New ObservableCollection(Of BTLFeature)
'End Sub
'#End Region ' CONSTRUCTOR
'#Region "METHODS"
' Public Event BTLFeatureAdded As EventHandler(Of BTLFeatureAddedEventArgs)
' Public Sub AddBTLFeature(BTLFeatureM As BTLFeatureM)
' If IsNothing(BTLFeatureM) Then Return
' If Not m_BTLFeatureMList.Contains(BTLFeatureM) Then
' m_BTLFeatureMList.Add(BTLFeatureM)
' RaiseEvent BTLFeatureAdded(Me, New BTLFeatureAddedEventArgs(BTLFeatureM))
' End If
' End Sub
' Public Function GetBTLFeatures() As List(Of BTLFeatureM)
' Return New List(Of BTLFeatureM)(m_BTLFeatureMList)
' End Function
' Public Function Rotation(IsPositive As Boolean, SelectedMachineType As MachineType, Optional dAng As Double = 90) As Boolean
' ' recupero il box del pezzo
' Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' Dim b3Solid As New BBox3d
' EgtGetBBoxGlob(nLs, GDB_BB.STANDARD, b3Solid)
' If b3Solid.IsEmpty() Then
' EgtOutLog("ERROR: Box non definito per la trave " & sNAM)
' Return False
' End If
' ' eseguo rotazione di 90 gradi attorno asse X
' Dim dRot = If(IsPositive, 1, -1) * Math.Abs(dAng)
' Dim vtAxes As Vector3d
' ' se travi ruoto attorno all'asse X
' If SelectedMachineType = MachineType.BEAM Then
' vtAxes = Vector3d.X_AX
' ' se pareti ruoto attorno all'asse Z
' ElseIf SelectedMachineType = MachineType.WALL Then
' vtAxes = -Vector3d.Z_AX
' End If
' ' se invertito
' Dim bInverted As Boolean = nINVERTED <> 0
' If bInverted Then
' ' annullo inversione
' Inversion(SelectedMachineType)
' End If
' ' eseguo rotazione
' Dim bOk As Boolean = EgtRotate(nPartId, b3Solid.Center, vtAxes, dRot, GDB_RT.GLOB)
' If bOk Then
' Dim dNewRotation As Double = (nROTATED + dRot) Mod 360
' nROTATED = If(dNewRotation >= 0, dNewRotation, 360 + dNewRotation)
' EgtSetInfo(nPartId, BTL_PRT_ROTATED, nROTATED)
' ' imposto modificato per copie
' EgtDuploSetModified(nPartId)
' End If
' ' se era invertito
' If bInverted Then
' ' ripristino inversione
' Inversion(SelectedMachineType)
' End If
' EgtDraw()
' Return bOk
' End Function
' Public Sub Inversion(SelectedMachineType As MachineType)
' ' recupero il box del pezzo
' Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' Dim b3Solid As New BBox3d
' EgtGetBBoxGlob(nLs, GDB_BB.STANDARD, b3Solid)
' If b3Solid.IsEmpty() Then
' EgtOutLog("ERROR: Box non definito per la trave " & sNAM)
' Return
' End If
' Dim vtAxes As Vector3d
' ' se travi ruoto attorno all'asse Z
' If SelectedMachineType = MachineType.BEAM Then
' vtAxes = Vector3d.Z_AX
' ' se pareti ruoto attorno all'asse X
' ElseIf SelectedMachineType = MachineType.WALL Then
' vtAxes = Vector3d.X_AX
' End If
' ' eseguo rotazione di 180 gradi
' If EgtRotate(nPartId, b3Solid.Center, vtAxes, 180, GDB_RT.GLOB) Then
' nINVERTED = If(nINVERTED = 0, 180, 0)
' EgtSetInfo(nPartId, BTL_PRT_INVERTED, nINVERTED)
' ' imposto modificato per copie
' EgtDuploSetModified(nPartId)
' End If
' End Sub
' Public Function NewProcId() As Integer
' Dim nMaxProcId As Integer = 0
' If Not IsNothing(BTLFeatureMList) AndAlso BTLFeatureMList.Count > 0 Then
' nMaxProcId = BTLFeatureMList.Max(Function(x) x.nPRID)
' End If
' Return nMaxProcId + 1
' End Function
#End Region ' METHODS
End Class
-10
View File
@@ -1001,16 +1001,6 @@ Public Class BTLPartM
Return TempList
End Function
Private Function MessageFromLuaMsg(LuaMsg As String) As String
Dim sSplit() As String = LuaMsg.Split("$$")
Dim nMsg As Integer = -1
If sSplit.Count > 1 AndAlso Integer.TryParse(sSplit(0), nMsg) Then
Return EgtMsg(65000 + nMsg)
Else
Return LuaMsg
End If
End Function
'Sub New(ParentStructure As BTLStructureVM, nPartId As Integer)
' MyBase.New(ParentStructure, nPartId)
' ' leggo info pezzo
+123
View File
@@ -18,6 +18,35 @@ Public Class BTLStructureM
End Get
End Property
Private m_nCompositesId As Integer = GDB_ID.NULL
Public ReadOnly Property nCompositesId As Integer
Get
Return m_nCompositesId
End Get
End Property
' composite di tipo Element da BTL
Public m_BTLElementMList As List(Of BTLElementM)
Public Property BTLElementMList As List(Of BTLElementM)
Get
Return m_BTLElementMList
End Get
Set(value As List(Of BTLElementM))
m_BTLElementMList = value
End Set
End Property
' composite di tipo Layer da BTL
Public m_BTLLayerMList As List(Of BTLLayerM)
Public Property BTLLayerMList As List(Of BTLLayerM)
Get
Return m_BTLLayerMList
End Get
Set(value As List(Of BTLLayerM))
m_BTLLayerMList = value
End Set
End Property
' pezzi da BTL
Public m_BTLPartMList As List(Of BTLPartM)
Public Property BTLPartMList As List(Of BTLPartM)
@@ -406,7 +435,35 @@ Public Class BTLStructureM
Else
NewBTLStructure.m_nAsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
NewBTLStructure.m_nBTLInfoId = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
NewBTLStructure.m_nCompositesId = EgtGetFirstNameInGroup(GDB_ID.ROOT, COMPOSITES)
End If
' cerco tra i Composites se ci sono Element o Layer per vedere se è un progetto Pareti Layer
Dim nCompositesId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, COMPOSITES)
While nCompositesId <> GDB_ID.NULL
' verifico se il layer appartiene al ProjId
Dim nCompositesProjId As Integer
EgtGetInfo(nCompositesId, BTL_PRT_PROJ, nCompositesProjId)
If nCompositesProjId = ProjId Then
NewBTLStructure.m_nCompositesId = nCompositesProjId
Dim nCompositesSubNodeId As Integer = EgtGetFirstInGroup(nCompositesId)
' se Composites presente recupero i Composites di tipo Element e Layer
NewBTLStructure.m_BTLElementMList = LoadElements(nCompositesSubNodeId)
NewBTLStructure.m_BTLLayerMList = LoadLayers(nCompositesSubNodeId)
' aggiungo i Layer già caricati al BTLElement a seconda del GROUP
For Each BTLElementItem In NewBTLStructure.BTLElementMList
BTLElementItem.BTLLayerMList = New List(Of BTLLayerM)
For Each BTLLayerItem In NewBTLStructure.BTLLayerMList
If BTLLayerItem.sGROUP = BTLElementItem.sGROUP Then
' recupero i pezzi associati al Layer
BTLLayerItem.BTLPartMList = LoadLayerParts(BTLLayerItem.nPartId)
BTLElementItem.BTLLayerMList.Add(BTLLayerItem)
End If
Next
Next
Exit While
End If
nCompositesId = EgtGetNextName(nCompositesId, COMPOSITES)
End While
EgtGetInfo(NewBTLStructure.m_nBTLInfoId, BTL_GEN_PROJNUM, NewBTLStructure.m_sPROJNUM)
EgtGetInfo(NewBTLStructure.m_nBTLInfoId, BTL_GEN_PROJNAME, NewBTLStructure.m_sPROJNAME)
EgtGetInfo(NewBTLStructure.m_nBTLInfoId, BTL_GEN_PROJPART, NewBTLStructure.m_sPROJPART)
@@ -465,6 +522,56 @@ Public Class BTLStructureM
Return TempList
End Function
Private Shared Function LoadLayerParts(nLayerId As Integer) As List(Of BTLPartM)
Dim TempList As New List(Of BTLPartM)
Dim nSubLayerId As Integer = EgtGetFirstInGroup(nLayerId)
' devo far passare i vari SubLayerId finchè non trovo quelli di UID.
' dentro questi devo trovare !SOU, il valore di questo è il PartId che ci interessa caricare
While nSubLayerId <> GDB_ID.NULL
Dim sSubLayerName As String = ""
Dim nPartId As Integer
EgtGetName(nSubLayerId, sSubLayerName)
If sSubLayerName.Length > 3 AndAlso sSubLayerName.Substring(0, 4) = "UID-" Then
EgtGetInfo(nSubLayerId, "!SOU", nPartId)
If nPartId <> GDB_ID.NULL Then
TempList.Add(BTLPartM.CreateBTLPart(nPartId))
End If
End If
nSubLayerId = EgtGetNext(nSubLayerId)
End While
Return TempList
End Function
Private Shared Function LoadElements(CompositesSubNodeId As Integer) As List(Of BTLElementM)
Dim TempList As New List(Of BTLElementM)
Dim nCompositesSubNodeId As Integer = CompositesSubNodeId
While nCompositesSubNodeId <> GDB_ID.NULL
Dim sCompositeType As String = ""
Dim nTest As Integer = 0
EgtGetInfo(nCompositesSubNodeId, BTL_PRT_TYPE, sCompositeType)
If sCompositeType = "ELEMENT" Then
TempList.Add(BTLElementM.CreateBTLElement(nCompositesSubNodeId))
End If
nCompositesSubNodeId = EgtGetNextGroup(nCompositesSubNodeId)
End While
Return TempList
End Function
Private Shared Function LoadLayers(CompositesSubNodeId As Integer) As List(Of BTLLayerM)
Dim TempList As New List(Of BTLLayerM)
Dim nCompositesSubNodeId As Integer = CompositesSubNodeId
While nCompositesSubNodeId <> GDB_ID.NULL
Dim sCompositeType As String = ""
Dim nTest As Integer = 0
EgtGetInfo(nCompositesSubNodeId, BTL_PRT_TYPE, sCompositeType)
If sCompositeType = "LAYER" Then
TempList.Add(BTLLayerM.CreateBTLLayer(nCompositesSubNodeId))
End If
nCompositesSubNodeId = EgtGetNextGroup(nCompositesSubNodeId)
End While
Return TempList
End Function
#End Region ' CONSTRUCTOR
#Region "METHODS"
@@ -486,6 +593,22 @@ Public Class BTLStructureM
'RaiseEvent BTLPartAdded(Me, New BTLPartAddedEventArgs(BTLPartM))
End Sub
Public Function GetBTLElements() As List(Of BTLElementM)
If Not IsNothing(m_BTLElementMList) Then
Return New List(Of BTLElementM)(m_BTLElementMList)
Else
Return Nothing
End If
End Function
Public Function GetBTLLayers() As List(Of BTLLayerM)
If Not IsNothing(m_BTLLayerMList) Then
Return New List(Of BTLLayerM)(m_BTLLayerMList)
Else
Return Nothing
End If
End Function
Public Function GetBTLParts() As List(Of BTLPartM)
Return New List(Of BTLPartM)(m_BTLPartMList)
End Function
+20 -5
View File
@@ -113,11 +113,18 @@
PROD = 2
End Enum
' Tipo di progetto (Beam o Wall)
Public Enum BWType As Integer
NULL = 0
BEAM = 1
WALL = 2
' Tipo di progetto (Beam o Wall)
Public Enum BWType As Integer
NULL = 0
BEAM = 1
WALL = 2
End Enum
' Tipo di Composite (Element o Layer)
Public Enum CompositeType As Integer
NULL = 0
ELEMENT = 1
LAYER = 2
End Enum
Public Const PROJ As String = "PROJ"
@@ -126,9 +133,16 @@
' layer per assemblato
Public Const ASSEBASE As String = "AsseBase"
' info parametri assemblato
Public Const BTL_ASSEBASE_N As String = "N"
Public Const COMPOSITES As String = "Composites"
Public Const ELEMENT As String = "Element"
Public Const LAYER As String = "Layer"
' info parametri BTL
Public Const BTL_PRT_PROJ As String = "PROJ"
Public Const BTL_PRT_TYPE As String = "TYPE"
Public Const BTL_PRT_PDN As String = "PDN"
Public Const BTL_PRT_DO As String = "DO"
Public Const BTL_PRT_NAM As String = "NAM"
@@ -284,6 +298,7 @@
Public Const WRH_CURRENT As String = "Current"
Public Const WRH_STARTOFFSET As String = "StartOffset"
Public Const WRH_OFFSET As String = "Offset"
Public Const WRH_RANGE As String = "Range"
Public Const WRH_QUANTITY As String = "Quantity"
Public Const WRH_L As String = "L"
Public Const WRH_KERF As String = "Kerf"
@@ -27,6 +27,7 @@
Public Const S_SECTXMATLIST_WALL As String = "DG_SectXMatList_WALL"
Public Const S_VARIABLESLIST As String = "DG_VariablesList"
Public Const S_MDICOMMANDS As String = "DG_MDICommands"
Public Const S_UPDATEBTLPARTLIST As String = "DG_UpdateBTLPartList"
Public Const K_LOCKTABLE As String = "LockTable"
+1
View File
@@ -6,6 +6,7 @@
Public Const PROJECT_OPTIMIZER As String = "Project_Optimizer"
Public Const LEFTPANEL_VIEW As String = "LeftPanel_View"
Public Const LEFTPANEL_OPTIMIZER As String = "LeftPanel_Optimizer"
Public Const LEFTPANEL_LAYERSWALL As String = "LeftPanel_LayersWall"
Public Const TOPPANEL_OPTIMIZER As String = "TopPanel_Optimizer"
Public Const LEFTPANEL_SUPERVISOR As String = "LeftPanel_Supervisor"
Public Const PROJECT_SUPERVISOR As String = "Project_Supervisor"
+1
View File
@@ -32,6 +32,7 @@ Public Module ConstGen
CONFIG = 3
INPUTS = 4
OUTPUTS = 5
LAYERSWALL = 6
End Enum
' Abilitazioni licenza
+2
View File
@@ -37,7 +37,9 @@ Public Module ConstIni
'Public Const K_SUPPORT As String = "Support"
Public Const K_WAREHOUSE As String = "Warehouse"
Public Const K_DBADDRESS As String = "DbAddress"
Public Const K_DBMASTERKEY As String = "DbMasterKey"
Public Const K_UPDATEBTL As String = "UpdateBtl"
Public Const K_DATADIR As String = "DataDir"
'Public Const S_LANGUAGES As String = "Languages"
'Public Const K_LANGUAGE As String = "Language"
+3
View File
@@ -79,6 +79,8 @@
<Import Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="BTLModel\BTLLayerM.vb" />
<Compile Include="BTLModel\BTLElementM.vb" />
<Compile Include="BTLViewModel\BTLFeatureVM.vb" />
<Compile Include="CALCPanel\CalcEditEndEventArgs.vb" />
<Compile Include="Constants\ConstColumns.vb" />
@@ -120,6 +122,7 @@
<Compile Include="MachGroupPanel\MyMachGroupVM.vb" />
<Compile Include="MachGroupPanel\PartVM.vb" />
<Compile Include="Utility\GridDimension.vb" />
<Compile Include="Utility\LuaMsgManager.vb" />
<Compile Include="Utility\MachLog.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
@@ -1,5 +1,6 @@
Imports System.Collections.ObjectModel
Imports System.Windows.Controls
Imports System.Windows.Forms
Imports EgtUILib
Imports EgtWPFLib5
@@ -31,7 +32,8 @@ Public Module DataGridColumnsIniFile
Integer.TryParse(sColumnParams(6), WidthType)
Dim bVisible As Boolean = sColumnParams(7).Equals("1")
Dim bCanUserEditVisible As Boolean = sColumnParams(8).Equals("1")
ocColumns.Add(New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType), bVisible, bCanUserEditVisible))
Dim nSortDirection As SortOrder = If(sColumnParams.Count >= 10, CInt(sColumnParams(9)), 0)
ocColumns.Add(New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType), bVisible, bCanUserEditVisible, nSortDirection))
End If
colIndex += 1
End While
@@ -67,7 +69,8 @@ Public Module DataGridColumnsIniFile
Integer.TryParse(sColumnParams(6), WidthType)
Dim bVisible As Boolean = sColumnParams(7).Equals("1")
Dim bCanUserEditVisible As Boolean = sColumnParams(8).Equals("1")
Column = New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType), bVisible, bCanUserEditVisible)
Dim nSortDirection As SortOrder = If(sColumnParams.Count >= 10, CInt(sColumnParams(9)), 0)
Column = New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType), bVisible, bCanUserEditVisible, nSortDirection)
Exit While
End If
End If
@@ -10,8 +10,6 @@
Handler="Cell_SizedChanged" />
<EventSetter Event="MouseRightButtonDown"
Handler="Cell_MouseRightButtonDown" />
<EventSetter Event="FrameworkElement.Loaded"
Handler="DataGridColumnHeader_Loaded"/>
</Style>
</DataGrid.ColumnHeaderStyle>
+149 -94
View File
@@ -1,5 +1,6 @@
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
@@ -13,20 +14,13 @@ Public Class EgtDataGrid
' vecchio indice da salvare per il Reorder delle colonne
Public OldIndex As Integer = 0
' variabili e costanti per il Resize delle colonne adiacenti
Private Const LEFT As String = "PART_LeftHeaderGripper"
Private Const RIGHT As String = "PART_RightHeaderGripper"
Private startPoint As Point
Private startWidth As Double
Private adjacentStartWidth As Double
'Private startUnitType As DataGridLengthUnitType
'Private adjacentUnitType As DataGridLengthUnitType
Private targetColumn As DataGridColumn
Private adjacentColumn As DataGridColumn
' indice header su cui è aperto il ContextMenu per gestione check/uncheck LockTable
Private HeaderDispIndex As Integer = 0
' somma delle larghezze delle colonne di EgtDataGrid
Private columnsWidth As Double = 0
' larghezza minima dell'ultima colonna per attivare/disattivare ScrollBar orizzontale
Private Const LASTCOLUMN_MINWIDTH As Double = 40
Sub New()
InitializeComponent()
@@ -137,6 +131,44 @@ Public Class EgtDataGrid
End If
End Sub
Private Sub DataGrid_SizedChanged(sender As Object, e As SizeChangedEventArgs) Handles CurrDataGrid.SizeChanged
' confronto la larghezza effettiva della EgtDataGrid con la somma delle larghezze delle colonne
UpdateColumnsWidth()
If BindingColumns.Count > 0 Then
If CurrDataGrid.ActualWidth - LASTCOLUMN_MINWIDTH > columnsWidth Then
' nascondo la ScrollBar orizzontale e setto lo UnitType dell'ultima colonna visibile a Star
ScrollViewer.SetHorizontalScrollBarVisibility(CurrDataGrid, ScrollBarVisibility.Hidden)
BindingColumns.Last(Function(x) x.Visible = True).Width = New DataGridLength(1, DataGridLengthUnitType.Star)
Else
' mostro la ScrollBar orizzontale e se UnitType delle colonne è Star lo setto a Pixel
ScrollViewer.SetHorizontalScrollBarVisibility(CurrDataGrid, ScrollBarVisibility.Visible)
For Each bc In BindingColumns
If bc.Width.IsStar Then
bc.Width = New DataGridLength(bc.ActualWidth, DataGridLengthUnitType.Pixel)
End If
Next
End If
' scrivo nell'INI la Width dell'ultima colonna visibile
BindingColumns.Last(Function(x) x.Visible = True).SaveDataGridColumn()
End If
End Sub
Public Sub UpdateColumnsWidth()
' ricalcolo la somma delle larghezze delle colonne visibili
columnsWidth = 0
For Each col In BindingColumns
If col.ColumnVisibility = Visibility.Visible Then
columnsWidth += col.ActualWidth
End If
Next
' alla somma calcolata tolgo la larghezza dell'ultima colonna visibile e aggiungo LASTCOLUMN_MINWIDTH
' (in questo modo si attiva/disattiva la ScrollBar orizzontale non appena l'ultima colonna viene ristretta/estesa a LASTCOLUMN_MINWIDTH px)
If BindingColumns.Count > 0 AndAlso
BindingColumns.Any(Function(x) x.Visible = True) Then
columnsWidth = columnsWidth - BindingColumns.Last(Function(x) x.Visible = True).ActualWidth + LASTCOLUMN_MINWIDTH
End If
End Sub
Private Sub Cell_MouseRightButtonDown(sender As Object, e As RoutedEventArgs)
Dim nDispIndex As Integer = sender.DisplayIndex
' creo il ContextMenu con gli item checkabili
@@ -148,19 +180,23 @@ Public Class EgtDataGrid
Dim miVis As MenuItem = New MenuItem()
Dim sep2 As Separator = New Separator()
Dim miLock As MenuItem = New MenuItem()
Dim miResetSort As MenuItem = New MenuItem()
miReorder.Header = NameOf(EgtDataGridColumn.CanUserReorder)
miResize.Header = NameOf(EgtDataGridColumn.CanUserResize)
miSort.Header = NameOf(EgtDataGridColumn.CanUserSort)
miVis.Header = "Columns Visibility"
miLock.Header = "Lock Table"
miResetSort.Header = "Reset Sort"
miReorder.IsCheckable = True
miResize.IsCheckable = True
miSort.IsCheckable = True
miLock.IsCheckable = True
miResetSort.IsCheckable = False
miReorder.StaysOpenOnClick = True
miResize.StaysOpenOnClick = True
miSort.StaysOpenOnClick = True
miLock.StaysOpenOnClick = True
miResetSort.StaysOpenOnClick = True
' setto il binding
Dim miReorderBinding As Binding = New Binding(NameOf(EgtDataGridColumn.CanUserReorder))
Dim miResizeBinding As Binding = New Binding(NameOf(EgtDataGridColumn.CanUserResize))
@@ -183,6 +219,7 @@ Public Class EgtDataGrid
HeaderDispIndex = nDispIndex
AddHandler miLock.Checked, AddressOf miLock_Checked
AddHandler miLock.Unchecked, AddressOf miLock_Unchecked
AddHandler miResetSort.Click, AddressOf miResetSort_Click
' aggiungo i MenuItem al ContextMenu
cm.Items.Add(miReorder)
cm.Items.Add(miResize)
@@ -191,6 +228,7 @@ Public Class EgtDataGrid
cm.Items.Add(miVis)
cm.Items.Add(sep2)
cm.Items.Add(miLock)
cm.Items.Add(miResetSort)
' creo e aggiungo gli item figli di Columns Visibility
For Each Column In BindingColumns
Dim mi As MenuItem = New MenuItem()
@@ -233,86 +271,6 @@ Public Class EgtDataGrid
Next
End Sub
Private Sub DataGridColumnHeader_Loaded(sender As Object, e As RoutedEventArgs)
Dim header = DirectCast(sender, DataGridColumnHeader)
Dim thumbLeft As Thumb = header.Template.FindName(LEFT, header)
thumbLeft.AddHandler(Thumb.DragStartedEvent, CType(AddressOf Thumb_DragStarted, DragStartedEventHandler), True)
thumbLeft.AddHandler(Thumb.DragCompletedEvent, CType(AddressOf Thumb_DragCompleted, DragCompletedEventHandler), True)
Dim thumbRight As Thumb = header.Template.FindName(RIGHT, header)
thumbRight.AddHandler(Thumb.DragStartedEvent, CType(AddressOf Thumb_DragStarted, DragStartedEventHandler), True)
thumbRight.AddHandler(Thumb.DragCompletedEvent, CType(AddressOf Thumb_DragCompleted, DragCompletedEventHandler), True)
End Sub
Private Sub Thumb_DragStarted(sender As Object, e As DragStartedEventArgs)
Dim thumb = CType(sender, Thumb)
Dim dg As DataGrid = GetParent(Of DataGrid)(thumb)
startPoint = Mouse.GetPosition(dg)
Dim header As DataGridColumnHeader = GetParent(Of DataGridColumnHeader)(thumb)
If thumb.Name = RIGHT Then
targetColumn = header.Column
Dim Index As Integer = header.Column.DisplayIndex + 1
If (Index < BindingColumns.Count) Then
adjacentColumn = dg.Columns.FirstOrDefault(Function(x) x.DisplayIndex = Index)
End If
Else
Dim Index As Integer = header.Column.DisplayIndex - 1
If (Index >= 0) Then
adjacentColumn = dg.Columns.FirstOrDefault(Function(x) x.DisplayIndex = Index + 1)
End If
targetColumn = dg.Columns.FirstOrDefault(Function(x) x.DisplayIndex = Index)
End If
startWidth = targetColumn.ActualWidth
'startUnitType = targetColumn.Width.UnitType
If Not IsNothing(adjacentColumn) Then
adjacentStartWidth = adjacentColumn.ActualWidth
'adjacentUnitType = adjacentColumn.Width.UnitType
End If
AddHandler thumb.PreviewMouseMove, AddressOf Thumb_PreviewMouseMove
End Sub
Private Sub Thumb_PreviewMouseMove(sender As Object, e As MouseEventArgs)
Dim thumb = CType(sender, Thumb)
If (Not thumb.IsDragging Or IsNothing(targetColumn)) Then Return
e.Handled = True
Dim dg As DataGrid = GetParent(Of DataGrid)(thumb)
Dim currentPoint As Point = Mouse.GetPosition(dg)
Dim diffX As Double = (currentPoint - startPoint).X
Dim newWidth As Double = Math.Max(targetColumn.MinWidth, Math.Min(startWidth + diffX, targetColumn.MaxWidth))
Dim length = New DataGridLength(newWidth)
targetColumn.SetValue(DataGridColumn.WidthProperty, length)
If Not IsNothing(adjacentColumn) Then
newWidth = Math.Max(adjacentColumn.MinWidth, Math.Min(adjacentStartWidth - diffX, adjacentColumn.MaxWidth))
length = New DataGridLength(newWidth)
adjacentColumn.SetValue(DataGridColumn.WidthProperty, length)
End If
End Sub
Private Sub Thumb_DragCompleted(sender As Object, e As DragCompletedEventArgs)
RemoveHandler CType(sender, Thumb).PreviewMouseMove, AddressOf Thumb_PreviewMouseMove
targetColumn = Nothing
adjacentColumn = Nothing
End Sub
Private Function GetParent(Of T As DependencyObject)(d As DependencyObject) As T
Dim tObj As T = Nothing
While IsNothing(tObj)
tObj = TryCast(d, T)
d = VisualTreeHelper.GetParent(d)
End While
Return tObj
End Function
Private Sub miLock_Checked(sender As Object, e As RoutedEventArgs)
Dim miLock = DirectCast(sender, MenuItem)
' disabilito Reorder e Resize di tutte le colonne salvandone prima il valore
@@ -351,6 +309,61 @@ Public Class EgtDataGrid
WritePrivateProfileString(BindingColumns(HeaderDispIndex).ParentDataGridName, K_LOCKTABLE, 0, m_sDataGridColumnsIniFile)
End Sub
Private Sub miResetSort_Click(sender As Object, e As RoutedEventArgs)
' resetto le SortDirection di tutte le colonne della datagrid
ResetSortDirections()
End Sub
Private Sub CurrDataGrid_Loaded(sender As Object, e As RoutedEventArgs) Handles CurrDataGrid.Loaded
' setto la SortDirection, se attiva, sulla colonna su cui è attiva
Dim colIndex As Integer = 0
For Each col In BindingColumns
If col.SortDirection > 0 Then
CurrDataGrid.Items.SortDescriptions.Add(New SortDescription(CurrDataGrid.Columns(colIndex).SortMemberPath, col.SortDirection - 1))
Exit For
End If
colIndex += 1
Next
' calcolo la somma delle larghezze delle colonne visibili
For Each col In BindingColumns
If col.ColumnVisibility = Visibility.Visible Then
columnsWidth += col.ActualWidth
End If
Next
End Sub
Private Sub CurrDataGrid_Sorting(sender As Object, e As DataGridSortingEventArgs) Handles CurrDataGrid.Sorting
' salvo la SortDirection corrente della colonna prima di resettarla per tutte le colonne
Dim CurrSortDirection As ListSortDirection? = e.Column.SortDirection
ResetSortDirections(True)
' ora applico la SortDirection corretta
Select Case CurrSortDirection
Case ListSortDirection.Ascending
BindingColumns(e.Column.DisplayIndex).SortDirection = 2 ' la setto a Descending
Case ListSortDirection.Descending
BindingColumns(e.Column.DisplayIndex).SortDirection = 1 ' la setto a Ascending
Case Else
BindingColumns(e.Column.DisplayIndex).SortDirection = 1 ' la setto a Ascending
End Select
End Sub
Private Sub ResetSortDirections(Optional bUserClick As Boolean = False)
If bUserClick Then
' nel caso di click dell'utente sulla colonna da sortare occorre solamente settare a 0 la SortDirection di tutte le colonne
For Each column In BindingColumns
column.SortDirection = 0
Next
Else
' altrimenti (caso ResetSort da ContextMenu) è necessatio un Clear più ampio e anche grafico
CurrDataGrid.Items.SortDescriptions.Clear()
For Each column In BindingColumns
column.SortDirection = 0
' resetto graficamente anche l'header della colonna
CurrDataGrid.Columns(column.DisplayIndex).SortDirection = Nothing
Next
End If
End Sub
End Class
Public Class EgtDataGridColumn
@@ -391,6 +404,12 @@ Public Class EgtDataGridColumn
End Set
End Property
Public ReadOnly Property ActualWidth As Double
Get
Return m_dgColumn.ActualWidth
End Get
End Property
Private Property m_DisplayIndex As Integer
Public Property DisplayIndex As Integer
Get
@@ -487,6 +506,17 @@ Public Class EgtDataGridColumn
m_ColumnVisibility = value
If Not IsNothing(m_dgColumn) Then
m_dgColumn.Visibility = value
' ricavo la EgtDataGrid a cui appartiene la DataGridColumn
Dim propertyInfo As Reflection.PropertyInfo = m_dgColumn.GetType().GetProperty("DataGridOwner",
Reflection.BindingFlags.Instance Or
Reflection.BindingFlags.NonPublic)
Dim dg As EgtDataGrid = propertyInfo.GetValue(m_dgColumn, Nothing)
' ogni colonna visibile con UnitType a Star tranne l'ultima verrà settata a Pixel
For Each bc In dg.BindingColumns
If bc.Width.IsStar And Not bc.Name = dg.BindingColumns.Last(Function(x) x.Visible = True).Name Then
bc.Width = New DataGridLength(bc.ActualWidth, DataGridLengthUnitType.Pixel)
End If
Next
End If
End Set
End Property
@@ -502,11 +532,30 @@ Public Class EgtDataGridColumn
End Set
End Property
Private m_SortDirection As Forms.SortOrder = Forms.SortOrder.None
Public Property SortDirection As Forms.SortOrder
Get
Return m_SortDirection 'If(IsNothing(m_dgColumn.SortDirection), 0, m_dgColumn.SortDirection + 1)
End Get
Set(value As Forms.SortOrder)
'If Not IsNothing(m_dgColumn) Then
' If value = 0 Then
' m_dgColumn.SortDirection = Nothing
' Else
' m_dgColumn.SortDirection = value - 1
' End If
'Else
m_SortDirection = value
'End If
SaveDataGridColumn()
End Set
End Property
Sub New(sName As String)
m_Name = sName
End Sub
Sub New(sParentDG As String, sName As String, bCanUserReorder As Boolean, bCanUserResize As Boolean, bCanUserSort As Boolean, bIsReadOnly As Boolean, Width As DataGridLength, bVisible As Boolean, bCanUserEditVisible As Boolean)
Sub New(sParentDG As String, sName As String, bCanUserReorder As Boolean, bCanUserResize As Boolean, bCanUserSort As Boolean, bIsReadOnly As Boolean, Width As DataGridLength, bVisible As Boolean, bCanUserEditVisible As Boolean, nSortDirection As Integer)
m_ParentDataGridName = sParentDG
m_Name = sName
m_CanUserReorder = bCanUserReorder
@@ -516,6 +565,7 @@ Public Class EgtDataGridColumn
m_Width = Width
m_Visible = bVisible
m_CanUserEditVisible = bCanUserEditVisible
m_SortDirection = nSortDirection
End Sub
Friend Sub InitColumn(dgColumn As DataGridColumn)
@@ -527,13 +577,18 @@ Public Class EgtDataGridColumn
'm_dgColumn.DisplayIndex = m_DisplayIndex
m_dgColumn.Width = m_Width
m_dgColumn.Visibility = m_ColumnVisibility
If CInt(m_SortDirection) > 0 Then
m_dgColumn.SortDirection = m_SortDirection - 1 'If(CInt(m_SortDirection) = 0, Nothing, m_SortDirection - 1)
Else
m_dgColumn.SortDirection = Nothing
End If
End Sub
' funzione per calcolare e scrivere la stringa dei parametri della colonna nell'INI
Public Function SaveDataGridColumn() As Boolean
Dim bOk As Boolean
Dim sColumnParams = String.Empty
sColumnParams = Name & "," & If(CanUserReorder, 1, 0) & "," & If(CanUserResize, 1, 0) & "," & If(CanUserSort, 1, 0) & "," & If(IsReadOnly, 1, 0) & "," & DoubleToString(Width.Value, 6) & "," & Width.UnitType & "," & If(Visible, 1, 0) & "," & If(CanUserEditVisible, 1, 0)
sColumnParams = Name & "," & If(CanUserReorder, 1, 0) & "," & If(CanUserResize, 1, 0) & "," & If(CanUserSort, 1, 0) & "," & If(IsReadOnly, 1, 0) & "," & DoubleToString(Width.Value, 6) & "," & Width.UnitType & "," & If(Visible, 1, 0) & "," & If(CanUserEditVisible, 1, 0) & "," & CInt(SortDirection)
bOk = WriteColumnPrivateProfileParam(ParentDataGridName, DisplayIndex, sColumnParams)
Return bOk
End Function
@@ -14,6 +14,8 @@ Public Module LoadingWndHelper
EXPORTPROJECT = 8
IMPORTPROJECT = 9
CHANGEPARAM = 10
CREATINGPDF = 11
CHANGEMATERIAL = 12
End Enum
Dim m_MainWindow As Windows.Window
@@ -4,6 +4,8 @@
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
Height="200" Width="300"
TitleBarHeight="0"
ResizeMode="NoResize" WindowStyle="None"
IsClosable="False" IsMinimizable="False"
WindowStartupLocation="Manual" ShowInTaskbar="False">
@@ -176,7 +176,7 @@ Public Class MyMachGroupM
Private m_sCALC_MSG As String
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
Return MessageFromLuaMsg(m_sCALC_MSG)
End Get
Set(value As String)
m_sCALC_MSG = value
+45 -31
View File
@@ -139,21 +139,28 @@ Public Class PartM
Public Property dPOSX As Double
Get
If nType = BWType.WALL Then
' recupero box pezzo
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nPartId, GDB_BB.ONLY_VISIBLE + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, b3Part)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' recupero origine grezzo
Dim nrawPartId As Integer = EgtGetRawPartFromPart(nPartId)
Dim b3Raw As New BBox3d
EgtGetRawPartBBox(nrawPartId, b3Raw)
' calcolo distanza tra origine pezzo e tavolo
Dim vtPartRef As New Vector3d(b3Box.Min() - b3Raw.Min())
Return vtPartRef.x
' verifico che sia attivo MachGroup di questo pezzo
If EgtGetCurrMachGroup() = ParentMachGroup.Id Then
' recupero box pezzo
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nPartId, GDB_BB.ONLY_VISIBLE + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, b3Part)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' recupero origine grezzo
Dim nrawPartId As Integer = EgtGetRawPartFromPart(nPartId)
Dim b3Raw As New BBox3d
EgtGetRawPartBBox(nrawPartId, b3Raw)
' calcolo distanza tra origine pezzo e tavolo
Dim vtPartRef As New Vector3d(b3Box.Min() - b3Raw.Min())
m_dPOSX = vtPartRef.x
Return vtPartRef.x
' altrimenti restituisco valore salvato (per quando viene clickato un BTLPart)
Else
Return m_dPOSX
End If
Else ' nType = BWType.BEAM
Return m_dPOSX
End If
@@ -270,21 +277,28 @@ Public Class PartM
Protected m_dPOSY As Double
Public Property dPOSY As Double
Get
' recupero box pezzo
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nPartId, GDB_BB.ONLY_VISIBLE + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, b3Part)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' recupero origine grezzo
Dim nrawPartId As Integer = EgtGetRawPartFromPart(nPartId)
Dim b3Raw As New BBox3d
EgtGetRawPartBBox(nrawPartId, b3Raw)
' calcolo distanza tra origine pezzo e tavolo
Dim vtPartRef As New Vector3d(b3Box.Min() - b3Raw.Min())
Return vtPartRef.y
' verifico che sia attivo MachGroup di questo pezzo
If EgtGetCurrMachGroup() = ParentMachGroup.Id Then
' recupero box pezzo
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nPartId, GDB_BB.ONLY_VISIBLE + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, b3Part)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' recupero origine grezzo
Dim nrawPartId As Integer = EgtGetRawPartFromPart(nPartId)
Dim b3Raw As New BBox3d
EgtGetRawPartBBox(nrawPartId, b3Raw)
' calcolo distanza tra origine pezzo e tavolo
Dim vtPartRef As New Vector3d(b3Box.Min() - b3Raw.Min())
m_dPOSY = vtPartRef.y
Return vtPartRef.y
' altrimenti restituisco valore salvato (per quando viene clickato un BTLPart)
Else
Return m_dPOSY
End If
'Return m_dPOSY
End Get
Set(value As Double)
@@ -369,7 +383,7 @@ Public Class PartM
Protected m_sCALC_MSG As String = String.Empty
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
Return MessageFromLuaMsg(m_sCALC_MSG)
End Get
Set(value As String)
m_sCALC_MSG = value
+2 -2
View File
@@ -35,5 +35,5 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.4.3.1")>
<Assembly: AssemblyFileVersion("2.4.3.1")>
<Assembly: AssemblyVersion("2.4.3.2")>
<Assembly: AssemblyFileVersion("2.4.3.2")>
@@ -108,7 +108,7 @@ Public MustInherit Class OpenProjectFileDialogVM
' ora setto il valore scelto come Tipo Filtro
m_SelSearchColumn = value
Select Case m_SelSearchColumn.Id
Case OpenProjFileColumn.ID, OpenProjFileColumn.BTLFILENAME, OpenProjFileColumn.LISTNAME
Case OpenProjFileColumn.ID, OpenProjFileColumn.BTLFILENAME, OpenProjFileColumn.LISTNAME, OpenProjFileColumn.MACHINE
SearchText_Visibility = Visibility.Visible
SearchDate_Visibility = Visibility.Collapsed
Case OpenProjFileColumn.EXPORTDATE, OpenProjFileColumn.CREATEDATE
@@ -168,6 +168,7 @@ Public MustInherit Class OpenProjectFileDialogVM
LISTNAME = 3
EXPORTDATE = 4
CREATEDATE = 5
MACHINE = 6
End Enum
#Region "Messages"
@@ -257,7 +258,8 @@ Public MustInherit Class OpenProjectFileDialogVM
New IdNameStruct(OpenProjFileColumn.BTLFILENAME, BTLFileName_Msg),
New IdNameStruct(OpenProjFileColumn.LISTNAME, ListName_Msg),
New IdNameStruct(OpenProjFileColumn.EXPORTDATE, ExportDate_Msg),
New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg)})
New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg),
New IdNameStruct(OpenProjFileColumn.MACHINE, Machine_Msg)})
ElseIf ProjectType = ProjectType.PROD Then
' carico le colonne della datagrid
GetPrivateProfileColumns(S_OPENPROJFILEDLG_PROD, ProjectColumns)
@@ -265,7 +267,8 @@ Public MustInherit Class OpenProjectFileDialogVM
m_SearchColumnList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(OpenProjFileColumn.NULL, ""),
New IdNameStruct(OpenProjFileColumn.ID, Id_Msg),
New IdNameStruct(OpenProjFileColumn.BTLFILENAME, BTLFileName_Msg),
New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg)})
New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg),
New IdNameStruct(OpenProjFileColumn.MACHINE, Machine_Msg)})
End If
' setto la visibilità delle colonne delle EgtDataGrid
For Each col In ProjectColumns
@@ -300,14 +303,16 @@ Public MustInherit Class OpenProjectFileDialogVM
If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso m_SearchText <> String.Empty AndAlso (
(m_SelSearchColumn.Id = OpenProjFileColumn.ID AndAlso CurrProj.sProjId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
(m_SelSearchColumn.Id = OpenProjFileColumn.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
(m_SelSearchColumn.Id = OpenProjFileColumn.LISTNAME AndAlso CurrProj.sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
(m_SelSearchColumn.Id = OpenProjFileColumn.LISTNAME AndAlso CurrProj.sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
(m_SelSearchColumn.Id = OpenProjFileColumn.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
ElseIf m_ProjectType = ProjectType.PROD Then
Dim CurrProj As ProdFileVM = DirectCast(Proj, ProdFileVM)
If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso (
(m_SelSearchColumn.Id = OpenProjFileColumn.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso m_SearchText <> String.Empty AndAlso (
(m_SelSearchColumn.Id = OpenProjFileColumn.ID AndAlso CurrProj.sProdId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
(m_SelSearchColumn.Id = OpenProjFileColumn.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
(m_SelSearchColumn.Id = OpenProjFileColumn.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
(m_SelSearchColumn.Id = OpenProjFileColumn.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
End If
Return bProjectOk
End Function
+30
View File
@@ -0,0 +1,30 @@
Imports EgtUILib
Public Module LuaMsgManager
Public Function MessageFromLuaMsg(LuaMsg As String) As String
' verifico se inizia con $$
If Not String.IsNullOrWhiteSpace(LuaMsg) AndAlso LuaMsg.Length >= 2 AndAlso LuaMsg.Substring(0, 2) = "$$" Then
Dim sMsgArgs() As String = LuaMsg.Substring(2).Split(",")
Dim nMsg As Integer = -1
If sMsgArgs.Count > 1 AndAlso Integer.TryParse(sMsgArgs(0), nMsg) AndAlso nMsg > 0 Then
If sMsgArgs.Count > 1 Then
Dim sArgs() As String = sMsgArgs.Skip(1).ToArray()
Dim sMsg As String = String.Format(EgtMsg(65000 + nMsg), sArgs)
If Not String.IsNullOrWhiteSpace(sMsg) Then
Return sMsg
Else
EgtMsg(65000 + nMsg)
End If
Else
Return EgtMsg(65000 + nMsg)
End If
Else
Return LuaMsg
End If
Else
Return LuaMsg
End If
End Function
End Module
@@ -6,92 +6,100 @@ using EgtBEAMWALL.DataLayer.DatabaseModels;
namespace EgtBEAMWALL.DataLayer.Controllers
{
public class DbController : IDisposable
{
#region Private Fields
public class DbController : IDisposable
{
#region Private Fields
private AdminContext adbCtx;
private AdminContext adbCtx;
#endregion Private Fields
#endregion Private Fields
#region Public Fields
#region Public Fields
/// <summary>
/// Singleton gestione
/// </summary>
public static DbController man = new DbController();
/// <summary>
/// Singleton gestione
/// </summary>
public static DbController man = new DbController();
#endregion Public Fields
#endregion Public Fields
#region Public Constructors
#region Public Constructors
public DbController()
{
// Initialize database context for ADMIN
adbCtx = new AdminContext(DbConfig.ADMIN_CONNECTION_STRING);
}
public DbController()
{
// Initialize database context for ADMIN
adbCtx = new AdminContext(DbConfig.ADMIN_CONNECTION_STRING);
}
#endregion Public Constructors
#endregion Public Constructors
#region Public Methods
#region Public Methods
public bool checkCreateUser(string username, string pwd)
{
bool answ = false;
// ricerca utente...
var numUser = adbCtx
.UserList
.Where(x => x.User == username)
.ToList()
.Count;
if (numUser > 0)
{
answ = true;
}
if (!answ)
{
// creo utente
string sqlCommand = "FLUSH PRIVILEGES;";
//string sqlCommand = $"CREATE USER '{username}'@'localhost' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
//string sqlCommand = $"CREATE USER '{username}'@'localhost' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
sqlCommand = $"CREATE USER '{username}'@'localhost' IDENTIFIED BY '{pwd}';";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
sqlCommand = $"GRANT ALL ON *.* TO '{username}'@'localhost';";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
sqlCommand = "FLUSH PRIVILEGES;";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
}
return answ;
}
/// <summary>
/// Verifica necessità creazione utente (locale o in rete)
/// </summary>
/// <param name="username"></param>
/// <param name="pwd"></param>
/// <param name="isNetwork"></param>
/// <returns></returns>
public bool checkCreateUser(string username, string pwd, bool isNetwork)
{
bool answ = false;
string domain = isNetwork ? "%" : "localhost";
// ricerca utente...
var numUser = adbCtx
.UserList
.Where(x => x.User == username)
.ToList()
.Count;
if (numUser > 0)
{
answ = true;
}
if (!answ)
{
// creo utente
string sqlCommand = "FLUSH PRIVILEGES;";
//string sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
//string sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}';";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
sqlCommand = $"GRANT ALL ON *.* TO '{username}'@'{domain}';";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
sqlCommand = "FLUSH PRIVILEGES;";
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
}
return answ;
}
public void Dispose()
{
// Clear database context
adbCtx.Dispose();
}
public void Dispose()
{
// Clear database context
adbCtx.Dispose();
}
public bool ResetDb()
{
bool answ = false;
public bool ResetDb()
{
bool answ = false;
try
{
adbCtx
.Database
.SqlQuery<int>("CALL stp_ResetDb()");
answ = true;
try
{
adbCtx
.Database
.SqlQuery<int>("CALL stp_ResetDb()");
answ = true;
adbCtx.SaveChanges();
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on ResetDb: {exc}");
}
adbCtx.SaveChanges();
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on ResetDb: {exc}");
}
return answ;
}
return answ;
}
#endregion Public Methods
}
#endregion Public Methods
}
}
+35 -7
View File
@@ -37,6 +37,13 @@ namespace EgtBEAMWALL.DataLayer
#region Public Methods
#if false
/// <summary>
/// Metodo di init standard per DB locale
/// </summary>
/// <param name="server">Indirizzo del server (tipicamente localhost/127.0.0.1)</param>
/// <param name="nKey">Numero chiave</param>
/// <param name="sKey">Codice/pwd associato a chaive</param>
public static void InitDb(string server, string nKey, string sKey)
{
DATABASE_SERV = server;
@@ -46,14 +53,35 @@ namespace EgtBEAMWALL.DataLayer
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None";
// stringa admin con utente root egalware...
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;sslmode=None;CHARSET=utf8";
}
#endif
/// <summary>
/// Metodo di init standard per DB in rete con Master_Key
/// </summary>
/// <param name="server">Indirizzo del server (tipicamente indirizzo di rete)</param>
/// <param name="nKey">Numero chiave</param>
/// <param name="sKey">Codice/pwd associato a chaive</param>
/// <param name="masterKey">Numero di chiave master con cui è creato il DB</param>
public static void InitDb(string server, string nKey, string sKey, string masterKey = "")
{
// se nulla metto amster come nKey...
masterKey = string.IsNullOrEmpty(masterKey) ? nKey : masterKey;
DATABASE_SERV = server;
DATABASE_NAME = $"EgtBwDb_{masterKey}";
DATABASE_USER = $"user_{nKey}";
DATABASE_PWD = $"pwd_{sKey}";
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None";
// stringa admin con utente root egalware...
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;sslmode=None;CHARSET=utf8";
}
public static bool CheckUser(string nKey, string sKey)
{
// esecuzione script di install locale
return Controllers.DbController.man.checkCreateUser(DATABASE_USER, DATABASE_PWD);
}
public static bool CheckUser(string nKey, string sKey, bool isNetwork)
{
// esecuzione script di install locale
return Controllers.DbController.man.checkCreateUser(DATABASE_USER, DATABASE_PWD, isNetwork);
}
#endregion Public Methods
}
#endregion Public Methods
}
}
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.4.3.1")]
[assembly: AssemblyFileVersion("2.4.3.1")]
[assembly: AssemblyVersion("2.4.3.2")]
[assembly: AssemblyFileVersion("2.4.3.2")]
@@ -553,6 +553,9 @@
<ItemGroup>
<Resource Include="Resources\ProjectManager\Open.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ProjectManager\Save.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
@@ -16,7 +16,6 @@
CanUserAddRows="False"
AutoGenerateColumns="False"
CanUserSortColumns="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserReorderColumns="False"
SelectionMode="Single"
@@ -163,6 +163,9 @@ Public Class PartInRawPartListVM
For Each col In PartInRawPartColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
If Not IsNothing(colPartInRawPart_Redo) Then
colPartInRawPart_Redo.ColumnVisibility = Visibility.Collapsed
End If
If Not IsNothing(m_colPartInRawPart_Rot) Then
m_colPartInRawPart_Rot.ColumnVisibility = Visibility.Collapsed
End If
@@ -194,6 +197,9 @@ Public Class PartInRawPartListVM
For Each col In PartInRawPartColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
If Not IsNothing(colPartInRawPart_Redo) Then
colPartInRawPart_Redo.ColumnVisibility = Visibility.Collapsed
End If
If Not IsNothing(m_colPartInRawPart_Offset) Then
m_colPartInRawPart_Offset.ColumnVisibility = Visibility.Collapsed
End If
@@ -368,7 +368,7 @@ Public Class MyMachGroupVM
EgtBeamEnableProcess(Feature.nFeatureId, bOk)
Next
' scrivo dati costruzione grezzo in gruppo di lavorazione
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & nDone, nPartDuploId & "," & CurrPart.sPOSX - dInitialCutOut)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & nDone, nPartDuploId & "," & DoubleToString(CurrPart.dPOSX - dInitialCutOut, 3))
Else
dInitialCutOut += CurrPart.dOffset + CurrPart.dL
End If
@@ -55,5 +55,5 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.4.3.1")>
<Assembly: AssemblyFileVersion("2.4.3.1")>
<Assembly: AssemblyVersion("2.4.3.2")>
<Assembly: AssemblyFileVersion("2.4.3.2")>
@@ -25,7 +25,7 @@ Public Class OutputsPageVM
Sub New()
'' imposto riferimento in Map
'Map.SetRefOutputsPageVM(Me)
m_OutputVariableListVM = New VariablesListVM(S_outPUTVARIABLES)
m_OutputVariableListVM = New VariablesListVM(S_OUTPUTVARIABLES)
End Sub
#End Region ' Constructor
Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

@@ -27,18 +27,32 @@ Module DbControllers
End If
Try
Dim DbAddress As String = "127.0.0.1"
Dim DbMasterKey As Integer = 0
Dim sDbMasterKey As String = ""
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
GetMainPrivateProfileString(S_GENERAL, K_DBADDRESS, "127.0.0.1", DbAddress)
DbMasterKey = GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0)
If DbMasterKey > 0 Then
sDbMasterKey = DbMasterKey.ToString("000000")
End If
If String.IsNullOrWhiteSpace(DbAddress) OrElse DbMasterKey <= 0 Then
DbAddress = "127.0.0.1"
DbMasterKey = 0
End If
End If
DataLayer.DbConfig.InitDb(DbAddress, sUser, sPwd)
DataLayer.DbConfig.CheckUser(sUser, sPwd)
DataLayer.DbConfig.InitDb(DbAddress, sUser, sPwd, sDbMasterKey)
DataLayer.DbConfig.CheckUser(sUser, sPwd, Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK))
Catch ex As Exception
EgtOutLog("InitDb error: " & ex.ToString())
MessageBox.Show(Application.Current.MainWindow, "Db connection error!!", "Error")
End
End Try
DataLayer.DbConfig.InitDb("127.0.0.1", sUser, sPwd)
DataLayer.DbConfig.CheckUser(sUser, sPwd)
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
Dim sSupervisorMachName As String = ""
GetMainPrivateProfileString(S_MACH, K_SUPERVISORMACH, "", sSupervisorMachName)
If Not String.IsNullOrWhiteSpace(sSupervisorMachName) Then m_SupervisorId = sSupervisorMachName
End If
m_ProjController = New DataLayer.Controllers.ProjController
m_ProdController = New DataLayer.Controllers.ProdController
File diff suppressed because it is too large Load Diff
@@ -175,7 +175,7 @@ Public Class BTLFeatureVM
Public ReadOnly Property Edit_Visibility As Visibility
Get
Return If(BTLFeatureM.IsFreeContour AndAlso Not Map.refFreeContourManagerVM.bIsActive, Visibility.Visible, Visibility.Collapsed)
Return If(Map.refMainWindowVM.MainWindowM.nUserLevel > 5 AndAlso BTLFeatureM.IsFreeContour AndAlso Not Map.refFreeContourManagerVM.bIsActive, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Public ReadOnly Property SaveCancel_Visibility As Visibility
@@ -282,6 +282,7 @@ Public Class BTLFeatureVM
End Select
NotifyPropertyChanged(NameOf(Calc_Background))
NotifyPropertyChanged(NameOf(CALC_ROT_Visibility))
NotifyPropertyChanged(NameOf(sCALC_MSG))
NotifyPropertyChanged(NameOf(CALC_ERR_Letter))
NotifyPropertyChanged(NameOf(CALC_ERR_Foreground))
End Sub
@@ -296,6 +297,7 @@ Public Class BTLFeatureVM
m_BTLFeatureM.sCALC_MSG = ""
NotifyPropertyChanged(NameOf(Calc_Background))
NotifyPropertyChanged(NameOf(CALC_ROT_Visibility))
NotifyPropertyChanged(NameOf(sCALC_MSG))
NotifyPropertyChanged(NameOf(CALC_ERR_Letter))
NotifyPropertyChanged(NameOf(CALC_ERR_Foreground))
End Sub
File diff suppressed because it is too large Load Diff
@@ -1500,6 +1500,21 @@ Public Class BTLPartVM
EgtDeselectAll()
End If
Map.refLeftPanelVM.FeatureSelectionChanged()
ElseIf Map.refMainMenuVM.SelPage = Pages.LAYERSWALL Then
If Not IsNothing(m_SelBTLFeatureVM) Then
DirectCast(m_SelBTLFeatureVM, BTLFeatureVM).SelGeomFeature()
' imposto path disegno da mostrare in BottomPanel
Map.refLayersWallBottomPanelVM.SetCurrDraw(DirectCast(m_SelBTLFeatureVM, BTLFeatureVM).sDrawPath)
' seleziono pagina BottomPanel
Map.refLayersWallBottomPanelVM.SetSelPartFeatureTab(LayersWallBottomPanelVM.PartFeatureTab.FEATURE)
' deseleziono i parametri
If Not IsNothing(SelBTLFeatureVM.SelPBTLParam) Then SelBTLFeatureVM.SelPBTLParam = Nothing
' rinfresco bottoni freecontour
m_SelBTLFeatureVM.RefreshFCMBtnVisibility()
Else
EgtDeselectAll()
End If
Map.refLayersWallLeftPanelVM.FeatureSelectionChanged()
End If
EgtDraw()
NotifyPropertyChanged(NameOf(SelBTLFeatureVM))
@@ -1548,8 +1563,10 @@ Public Class BTLPartVM
CreateBTLFeatureVMList()
m_BTLFeatureVMList_ViewSource = New CollectionViewSource With {.Source = m_BTLFeatureVMList}
m_BTLFeatureVMList_View = m_BTLFeatureVMList_ViewSource.View
m_BTLFeatureVMList_View.CustomSort = New FeatureSorter
m_BTLFeatureVMList_View.Filter = AddressOf FeatureFilter
If Not IsNothing(m_BTLFeatureVMList_View) Then
m_BTLFeatureVMList_View.CustomSort = New FeatureSorter
m_BTLFeatureVMList_View.Filter = AddressOf FeatureFilter
End If
' Aggiorno check DOALL
NotifyPropertyChanged(NameOf(bDOALL))
' Aggiorno stato da stati feature
@@ -1576,7 +1593,7 @@ Public Class BTLPartVM
#Region "METHODS"
Private Sub CreateBTLFeatureVMList()
Protected Overridable Sub CreateBTLFeatureVMList()
Dim all As List(Of BTLFeatureVM) = (From BTLFeatureM In m_BTLPartM.GetBTLFeatures()
Select New BTLFeatureVM(BTLFeatureM, m_BTLPartM)).ToList()
@@ -2071,12 +2088,12 @@ Public Class BTLPartVM
#Region "EVENTS"
Private Sub OnBTLFeatureAdded(sender As Object, e As BTLFeatureAddedEventArgs)
Protected Sub OnBTLFeatureAdded(sender As Object, e As BTLFeatureAddedEventArgs)
Dim BTLFeatureVM As BTLFeatureVM = New BTLFeatureVM(e.NewBTLFeature, m_BTLPartM)
BTLFeatureVMList.Add(BTLFeatureVM)
End Sub
Private Sub OnBTLFeatureVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
Protected Sub OnBTLFeatureVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If Not IsNothing(e.NewItems) AndAlso e.NewItems.Count > 0 Then
For Each BTLFeatureVM As BTLFeatureVM In e.NewItems
AddHandler BTLFeatureVM.PropertyChanged, AddressOf OnBTLFeatureVMPropertyChanged
@@ -20,6 +20,136 @@ Public Class BTLStructureVM
End Get
End Property
' pezzi da BTL
Private m_BTLElementVMList_View As CollectionView = Nothing
Private m_BTLElementVMList As ObservableCollection(Of BTLElementVM)
Public Property BTLElementVMList As ObservableCollection(Of BTLElementVM)
Get
Return m_BTLElementVMList
End Get
Set(value As ObservableCollection(Of BTLElementVM))
m_BTLElementVMList = value
End Set
End Property
' pezzi da BTL
Private m_BTLLayerVMList_View As CollectionView = Nothing
Private m_BTLLayerVMList As ObservableCollection(Of BTLLayerVM)
Public Property BTLLayerVMList As ObservableCollection(Of BTLLayerVM)
Get
Return m_BTLLayerVMList
End Get
Set(value As ObservableCollection(Of BTLLayerVM))
m_BTLLayerVMList = value
End Set
End Property
Private m_SelBTLLayer As BTLLayerVM = Nothing
Public Property SelBTLLayer As BTLLayerVM
Get
Return m_SelBTLLayer
End Get
Set(value As BTLLayerVM)
If Not IsNothing(m_SelBTLLayer) Then
' se necessario tolgo solido dal precedentemente selezionato
If Map.refShowBeamPanelVM.ShowSolid_IsChecked Then
Map.refShowBeamPanelVM.SetShowSolid(False)
End If
' disabilito eventuale feature selezionata
If Not IsNothing(m_SelBTLLayer.m_SelBTLFeatureVM) Then m_SelBTLLayer.SelBTLFeatureVM = Nothing
End If
m_SelBTLLayer = value
' se seleziono un layer
If Not IsNothing(m_SelBTLLayer) Then
If Map.refMainMenuVM.SelPage = Pages.VIEW Then
' se modalità building, la tolgo
If Map.refShowBeamPanelVM.ShowBuilding_IsChecked Then
ShowBuilding(False, False)
End If
' seleziono pezzo nella scena
SceneSelPartSelection()
' seleziono pezzo in Db geometrico
EgtBeamSetPart(m_SelBTLLayer.nPartId)
' seleziono pagina BottomPanel
Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.PART)
' mostro barra di gestione pezzo
Map.refProjectVM.SetPartManager_Visibility(True)
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProjectVM.PartManager_Visibility))
' deseleziono le feature
If Not IsNothing(m_SelBTLLayer.SelBTLFeatureVM) Then SelBTLLayer.SelBTLFeatureVM = Nothing
' aggiorno stato selezionato tutto
Map.refShowBeamPanelVM.bShowAll = False
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
' resetto gruppo di lavorazione corrente
EgtResetCurrMachGroup()
' trovo ed evidenzio MachGroup e Duplo di questo pezzo
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM) Then
Dim MachGroupList As New List(Of MyMachGroupVM)
For Each Machgroup As MyMachGroupVM In Map.refProjectVM.MachGroupPanelVM.MachGroupVMList
Dim bFound As Boolean = False
For Each Layer As PartVM In Machgroup.PartVMList
If EgtDuploGetOriginal(Layer.nPartId) = m_SelBTLLayer.nPartId Then
Layer.SetSearchFound()
bFound = True
Else
Layer.ResetSearchFound()
End If
Next
If bFound Then
Machgroup.SetSearchFound()
Else
Machgroup.ResetSearchFound()
End If
Next
End If
' seleziono pezzo nella scena
SceneSelPartSelection()
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
ElseIf Map.refMainMenuVM.SelPage = Pages.LAYERSWALL Then
' se c'era un Part selezionato lo deseleziono
SelBTLLayer.SelBTLPart = Nothing
' se modalità building, la tolgo
If Map.refShowBeamPanelVM.ShowBuilding_IsChecked Then
ShowBuilding(False, False)
End If
' seleziono pezzo nella scena
SceneSelPartSelection()
' seleziono pezzo in Db geometrico
EgtBeamSetPart(m_SelBTLLayer.nPartId)
' mostro tutti i pezzi
Map.refShowBeamPanelVM.ShowAll(True)
' seleziono pagina LayersWallBottomPanel
Map.refLayersWallBottomPanelVM.SetSelPartFeatureTab(LayersWallBottomPanelVM.PartFeatureTab.LAYER)
' mostro barra di gestione pezzo
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(True)
' deseleziono le feature
If Not IsNothing(m_SelBTLLayer.SelBTLFeatureVM) Then SelBTLLayer.SelBTLFeatureVM = Nothing
If Not IsNothing(m_SelBTLLayer.SelBTLPart) AndAlso Not IsNothing(m_SelBTLLayer.SelBTLPart.SelBTLFeatureVM) Then SelBTLLayer.SelBTLPart.SelBTLFeatureVM = Nothing
' aggiorno FeatureList, FeatureManager e Parametri P e Q da far vedere
Map.refFeatureListVM.SetLayerFeatureList_Visibility(True)
Map.refFeatureListVM.SetPartFeatureList_Visibility(False)
Map.refFeatureManagerVM.SetLayerFeature_Visibility(True)
Map.refFeatureManagerVM.SetPartFeature_Visibility(False)
Map.refLayersWallBottomPanelVM.SetLayerFeature_Visibility(True)
Map.refLayersWallBottomPanelVM.SetPartFeature_Visibility(False)
' aggiorno stato selezionato tutto
Map.refShowBeamPanelVM.bShowAll = False
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
End If
End If
NotifyPropertyChanged(NameOf(SelBTLLayer))
End Set
End Property
' funzione che imposta layer BTL selezionato senza aggiornare nulla
Friend Sub SetSelBTLLayer(BTLLayer As BTLLayerVM)
m_SelBTLLayer = BTLLayer
NotifyPropertyChanged(NameOf(SelBTLLayer))
End Sub
' pezzi da BTL
Private m_BTLPartVMList_View As CollectionView = Nothing
Private m_BTLPartVMList As ObservableCollection(Of BTLPartVM)
@@ -60,9 +190,9 @@ Public Class BTLStructureVM
EgtBeamSetPart(m_SelBTLPart.nPartId)
' seleziono pagina BottomPanel
Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.PART)
' mostro barra di gestione pezzo
Map.refProjectVM.SetPartManager_Visibility(True)
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProjectVM.PartManager_Visibility))
'' mostro barra di gestione pezzo
'Map.refProjectVM.SetPartManager_Visibility(True)
'Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProjectVM.PartManager_Visibility))
' deseleziono le feature
If Not IsNothing(m_SelBTLPart.SelBTLFeatureVM) Then SelBTLPart.SelBTLFeatureVM = Nothing
' aggiorno stato selezionato tutto
@@ -72,10 +202,50 @@ Public Class BTLStructureVM
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
' resetto gruppo di lavorazione corrente
EgtResetCurrMachGroup()
' trovo ed evidenzio MachGroup e Duplo di questo pezzo
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM) Then
Dim MachGroupList As New List(Of MyMachGroupVM)
For Each Machgroup As MyMachGroupVM In Map.refProjectVM.MachGroupPanelVM.MachGroupVMList
Dim bFound As Boolean = False
For Each Part As PartVM In Machgroup.PartVMList
If EgtDuploGetOriginal(Part.nPartId) = m_SelBTLPart.nPartId Then
Part.SetSearchFound()
bFound = True
Else
Part.ResetSearchFound()
End If
Next
If bFound Then
Machgroup.SetSearchFound()
Else
Machgroup.ResetSearchFound()
End If
Next
End If
' seleziono pezzo nella scena
SceneSelPartSelection()
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
ElseIf Map.refMainMenuVM.SelPage = Pages.LAYERSWALL Then
' se modalità building, la tolgo
If Map.refShowBeamPanelVM.ShowBuilding_IsChecked Then
ShowBuilding(False, False)
End If
' seleziono pezzo nella scena
SceneSelPartSelection()
' seleziono pezzo in Db geometrico
EgtBeamSetPart(m_SelBTLPart.nPartId)
' seleziono pagina BottomPanel
Map.refBottomPanelVM.SetSelPartFeatureTab(BottomPanelVM.PartFeatureTab.PART)
' mostro barra di gestione pezzo
Map.refProjectVM.SetPartManager_Visibility(True)
Map.refProjectVM.NotifyPropertyChanged(NameOf(Map.refProjectVM.PartManager_Visibility))
' deseleziono le feature
If Not IsNothing(m_SelBTLPart.SelBTLFeatureVM) Then SelBTLPart.SelBTLFeatureVM = Nothing
' aggiorno stato selezionato tutto
Map.refShowBeamPanelVM.bShowAll = False
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
End If
End If
NotifyPropertyChanged(NameOf(SelBTLPart))
@@ -291,6 +461,8 @@ Public Class BTLStructureVM
Return Map.refProjManagerVM.nProjType
Case Pages.MACHINING
Return Map.refProdManagerVM.nProdType
Case Pages.LAYERSWALL
Return Map.refProjManagerVM.nProjType
Case Else
Return BWType.NULL
End Select
@@ -621,8 +793,24 @@ Public Class BTLStructureVM
Sub New(BTLStructureM As BTLStructureM)
m_BTLStructureM = BTLStructureM
AddHandler m_BTLStructureM.BTLPartAdded, AddressOf OnBTLPartAdded
CreateBTLElementVMList()
' creo lista di BTLLayerVM
CreateBTLLayerVMList()
If Not IsNothing(BTLElementVMList) Then
For Each BTLElementVMItem In BTLElementVMList
BTLElementVMItem.m_BTLLayerVMList = New ObservableCollection(Of BTLLayerVM)
For Each BTLLayerVMItem In BTLLayerVMList
If Not IsNothing(BTLElementVMItem.BTLElementM.sGROUP) AndAlso
Not IsNothing(BTLLayerVMItem.BTLLayerM.sGROUP) AndAlso
BTLElementVMItem.BTLElementM.sGROUP = BTLLayerVMItem.BTLLayerM.sGROUP Then
BTLElementVMItem.m_BTLLayerVMList.Add(BTLLayerVMItem)
End If
Next
Next
End If
' creo lista di BTLPartVM
CreateBTLPartVMList()
m_BTLPartVMList = Me.m_BTLPartVMList
m_BTLPartVMList_View = CollectionViewSource.GetDefaultView(m_BTLPartVMList)
m_GroupList_View = CollectionViewSource.GetDefaultView(m_GroupList)
m_SubGroupList_View = CollectionViewSource.GetDefaultView(m_SubGroupList)
@@ -644,6 +832,32 @@ Public Class BTLStructureVM
#Region "METHODS"
Private Sub CreateBTLElementVMList()
If IsNothing(m_BTLStructureM.GetBTLElements()) Then Return
Dim all As List(Of BTLElementVM) = (From BTLElementM In m_BTLStructureM.GetBTLElements()
Select New BTLElementVM(BTLElementM, m_BTLStructureM)).ToList()
'For Each BTLElementVM As BTLElementVM In all
' AddHandler BTLElementVM.PropertyChanged, AddressOf OnBTLElementVMPropertyChanged
'Next
m_BTLElementVMList = New ObservableCollection(Of BTLElementVM)(all)
'AddHandler m_BTLElementVMList.CollectionChanged, AddressOf OnBTLElementVMListChanged
End Sub
Private Sub CreateBTLLayerVMList()
If IsNothing(m_BTLStructureM.GetBTLLayers()) Then Return
Dim all As List(Of BTLLayerVM) = (From BTLLayerM In m_BTLStructureM.GetBTLLayers()
Select New BTLLayerVM(BTLLayerM, m_BTLStructureM)).ToList()
'For Each BTLLayerVM As BTLLayerVM In all
' AddHandler BTLLayerVM.PropertyChanged, AddressOf OnBTLLayerVMPropertyChanged
'Next
m_BTLLayerVMList = New ObservableCollection(Of BTLLayerVM)(all)
'AddHandler m_BTLLayerVMList.CollectionChanged, AddressOf OnBTLLayerVMListChanged
End Sub
Private Sub CreateBTLPartVMList()
Dim all As List(Of BTLPartVM) = (From BTLPartM In m_BTLStructureM.GetBTLParts()
Select New BTLPartVM(BTLPartM, m_BTLStructureM)).ToList()
@@ -683,14 +897,14 @@ Public Class BTLStructureVM
Next
End Sub
Private Sub SceneSelPartSelection()
Friend Sub SceneSelPartSelection()
' deseleziono tutto
EgtDeselectAll()
' disabilito impostazione modificato
Dim DisableMgr As New DisableModifiedMgr
' ciclo sui pezzi
For Each Part As BTLPartVM In m_BTLPartVMList
' se non è quello selezionato, lo nasondo
' se non è quello selezionato, lo nascondo
If Part IsNot m_SelBTLPart Then
EgtSetMode(Part.nPartId, GDB_MD.HIDDEN)
Else
@@ -701,6 +915,26 @@ Public Class BTLStructureVM
DisableMgr.ReEnable()
End Sub
Friend Sub SceneSelPartInLayerSelection()
' deseleziono tutto
EgtDeselectAll()
' disabilito impostazione modificato
Dim DisableMgr As New DisableModifiedMgr
' ciclo sui pezzi
If Not IsNothing(m_SelBTLLayer.SelBTLPart) Then
For Each Part As BTLPartVM In m_SelBTLLayer.BTLPartVMList
' se non è quello selezionato, lo nascondo
If Not Part.nPartId = m_SelBTLLayer.SelBTLPart.nPartId Then
EgtSetMode(Part.nPartId, GDB_MD.HIDDEN)
Else
EgtSetMode(Part.nPartId, GDB_MD.STD)
End If
Next
End If
' ripristino precedente impostazione modificato
DisableMgr.ReEnable()
End Sub
Friend Sub ShowAll(Optional bRedraw As Boolean = True)
' disabilito impostazione modificato
Dim DisableMgr As New DisableModifiedMgr
@@ -721,7 +955,7 @@ Public Class BTLStructureVM
BTLPartIdList.Sort()
Dim nGeomPartId As Integer = EgtGetFirstPart()
While nGeomPartId <> GDB_ID.NULL
Dim CurrPart As BTLPartVM = BTLPartVMList.FirstOrDefault(Function(x) x.nPartId = nGeomPartId)
Dim CurrPart As BTLPartVM = If(Not IsNothing(SelBTLLayer), SelBTLLayer.BTLPartVMList.FirstOrDefault(Function(x) x.nPartId = nGeomPartId), BTLPartVMList.FirstOrDefault(Function(x) x.nPartId = nGeomPartId))
If Not IsNothing(CurrPart) Then
Dim nMode As Integer
EgtGetMode(CurrPart.nPartId, nMode)
@@ -148,7 +148,7 @@ Public Class CALCPanelVM
End Get
End Property
Public ReadOnly Property ResetCalc_ToopTip As String
Public ReadOnly Property ResetCalc_ToolTip As String
Get
Return EgtMsg(61940)
End Get
@@ -779,6 +779,7 @@ Public Class CALCPanelVM
End Select
TempBarList.Add(Bar)
Next
If TempBarList.Count = 0 Then Return
BarList = TempBarList.ToArray()
' disabilito interfaccia
Map.refProjectVM.SetCalcRunning(True)
@@ -22,7 +22,7 @@
<Image Source="/Resources/CALCPanel/VerifyAll.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding ResetCalc_Command}"
ToolTip="{Binding ResetCalc_ToopTip}"
ToolTip="{Binding ResetCalc_ToolTip}"
IsEnabled="{Binding CALCPanel_IsEnabled}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/CALCPanel/ResetCalc.png" Stretch="Uniform"/>
@@ -0,0 +1,77 @@
<EgtWPFLib5:EgtCustomWindow x:Class="ChangeMaterialWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterOwner"
IsClosable="False"
IsMinimizable="False"
IsResizable="False"
Title="ChangeMaterialWnd">
<Grid Margin="5,5,5,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid HorizontalAlignment="Center"
Grid.Row="0"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding ProjMaterial_Msg}"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox ItemsSource="{Binding ProjMaterialList}"
SelectedItem="{Binding SelProjMaterial}"
Grid.Column="1"
Width="150"
Style="{StaticResource FeatureComboBox}"/>
</Grid>
<Grid HorizontalAlignment="Center"
Grid.Row="1"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding WjMaterial_Msg}"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox ItemsSource="{Binding WhMaterialList}"
SelectedItem="{Binding SelWhMaterial}"
Grid.Column="1"
Width="150"
Style="{StaticResource FeatureComboBox}"/>
</Grid>
<Grid Grid.Row="2"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Content="{Binding Ok_Msg}"
Command="{Binding Ok_Command}"
IsDefault="True"
Grid.Column="1"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
<Button Content="{Binding Cancel_Msg}"
IsCancel="True"
Grid.Column="3"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
</Grid>
</Grid>
</EgtWPFLib5:EgtCustomWindow>
@@ -0,0 +1,18 @@
Public Class ChangeMaterialWndV
Private WithEvents m_ChangeMaterialWndVM As ChangeMaterialWndVM
Sub New(Owner As Window, ChangeMaterialWndVM As ChangeMaterialWndVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = ChangeMaterialWndVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_ChangeMaterialWndVM = ChangeMaterialWndVM
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_ChangeMaterialWndVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
@@ -0,0 +1,140 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Public Class ChangeMaterialWndVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend Event m_CloseWindow(bDialogResult As Boolean)
Private m_ProjMaterialList As New ObservableCollection(Of String)
Public Property ProjMaterialList As ObservableCollection(Of String)
Get
Return m_ProjMaterialList
End Get
Set(value As ObservableCollection(Of String))
m_ProjMaterialList = value
End Set
End Property
Private m_SelProjMaterial As String
Public Property SelProjMaterial As String
Get
Return m_SelProjMaterial
End Get
Set(value As String)
m_SelProjMaterial = value
NotifyPropertyChanged(NameOf(SelProjMaterial))
End Set
End Property
Private m_WhMaterialList As New ObservableCollection(Of String)
Public Property WhMaterialList As ObservableCollection(Of String)
Get
Return m_WhMaterialList
End Get
Set(value As ObservableCollection(Of String))
m_WhMaterialList = value
End Set
End Property
Private m_SelWhMaterial As String
Public Property SelWhMaterial As String
Get
Return m_SelWhMaterial
End Get
Set(value As String)
m_SelWhMaterial = value
NotifyPropertyChanged(NameOf(SelWhMaterial))
End Set
End Property
' Definizione comandi
Private m_cmdOk As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "MESSAGES"
Public ReadOnly Property ProjMaterial_Msg As String
Get
Return EgtMsg(61962)
End Get
End Property
Public ReadOnly Property WjMaterial_Msg As String
Get
Return EgtMsg(61963)
End Get
End Property
Public ReadOnly Property Ok_Msg As String
Get
Return EgtMsg(61761)
End Get
End Property
Public ReadOnly Property Cancel_Msg As String
Get
Return EgtMsg(61763)
End Get
End Property
#End Region ' MESSAGES
#Region "CONSTRUCTOR"
Sub New()
' recupero i materiali del progetto
m_ProjMaterialList.Clear()
For Each BTLPart In Map.refProjectVM.BTLStructureVM.BTLPartVMList
If Not m_ProjMaterialList.Contains(BTLPart.sMATERIAL) Then
m_ProjMaterialList.Add(BTLPart.sMATERIAL)
End If
Next
' recupero la lista dei SectionXMaterial presenti in Warehouse
Dim WhSectXMatList As List(Of SectionXMaterial) = WarehouseWndVM.GetSectionXMaterialsFromWarehouse()
' ricavo la lista dei materiali presenti in Warehouse
m_WhMaterialList.Clear()
For Each WhSectXMat In WhSectXMatList
For Each sMatItem In WhSectXMat.sMaterial
If Not m_WhMaterialList.Contains(sMatItem) Then
m_WhMaterialList.Add(sMatItem)
End If
Next
Next
End Sub
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "Ok"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
Public Sub Ok()
'verifico che tutti i campi contengano un valore valido
If Not IsNothing(m_SelProjMaterial) AndAlso m_SelProjMaterial <> "" AndAlso
Not IsNothing(m_SelWhMaterial) AndAlso m_SelWhMaterial <> "" Then
RaiseEvent m_CloseWindow(True)
Else
MessageBox.Show(EgtMsg(61858), EgtMsg(30007))
End If
End Sub
#End Region ' Ok
#End Region ' COMMANDS
End Class
@@ -1,105 +1,78 @@
<EgtWPFLib5:EgtCustomWindow x:Class="ChangeParameterWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterOwner"
IsClosable="False"
IsMinimizable="False"
IsResizable="False"
Title="ChangeParameterWnd">
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize"
SizeToContent="Height"
Width="300"
WindowStartupLocation="CenterOwner"
IsClosable="False"
IsMinimizable="False"
IsResizable="False"
Title="ChangeParameterWnd">
<Grid Margin="5,5,5,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid HorizontalAlignment="Center"
Grid.Row="0"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Process"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox ItemsSource="{Binding PRCList}"
SelectedItem="{Binding SelPRC}"
DisplayMemberPath="ghDesc"
Width="150"
Grid.Column="1"
Style="{StaticResource FeatureComboBox}"/>
</Grid>
<Grid HorizontalAlignment="Center"
Grid.Row="1"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Parameter"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox ItemsSource="{Binding ParamList}"
SelectedItem="{Binding SelParam}"
DisplayMemberPath="sNameAndDescription"
Grid.Column="1"
Width="100"
Style="{StaticResource FeatureComboBox}"/>
</Grid>
<Grid HorizontalAlignment="Center"
Grid.Row="2"
Height="22"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Actual value"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding SelParam.sActualValue}"
Grid.Column="1"
Width="45"
Visibility="{Binding SelParam.IsTextBox_Visibility}"/>
<CheckBox IsChecked="{Binding SelParam.bActualValue}"
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding SelParam.IsCheckBox_Visibility}"/>
</Grid>
<TextBlock Text="Process"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox Grid.Column="1"
ItemsSource="{Binding PRCList}"
SelectedItem="{Binding SelPRC}"
DisplayMemberPath="ghDesc"
HorizontalAlignment="Stretch"
Style="{StaticResource FeatureComboBox}"/>
<Grid HorizontalAlignment="Center"
Grid.Row="3"
Height="22"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="New Value"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding SelParam.sNewValue}"
Grid.Column="1"
Width="45"
Visibility="{Binding SelParam.IsTextBox_Visibility}"/>
<CheckBox IsChecked="{Binding SelParam.bNewValue}"
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding SelParam.IsCheckBox_Visibility}"/>
</Grid>
<TextBlock Grid.Row="2"
Text="Parameter"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox Grid.Row="2" Grid.Column="1"
ItemsSource="{Binding ParamList}"
SelectedItem="{Binding SelParam}"
DisplayMemberPath="sNameAndDescription"
HorizontalAlignment="Stretch"
Style="{StaticResource FeatureComboBox}"/>
<Grid Grid.Row="4"
<TextBlock Grid.Row="4"
Text="Actual value"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Grid.Row="4" Grid.Column="1"
Text="{Binding SelParam.sActualValue}"
Visibility="{Binding SelParam.IsTextBox_Visibility}"/>
<CheckBox Grid.Row="4" Grid.Column="1"
IsChecked="{Binding SelParam.bActualValue}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding SelParam.IsCheckBox_Visibility}"/>
<TextBlock Grid.Row="6" Text="New Value"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Grid.Row="6" Grid.Column="1"
Text="{Binding SelParam.sNewValue}"
Visibility="{Binding SelParam.IsTextBox_Visibility}"/>
<CheckBox Grid.Row="6" Grid.Column="1"
IsChecked="{Binding SelParam.bNewValue}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding SelParam.IsCheckBox_Visibility}"/>
<Grid Grid.Row="8" Grid.ColumnSpan="2"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
@@ -42,6 +42,9 @@ Public Class ChangeParameterWndVM
'End While
' aggiungo bDO come parametro
m_ParamList.Add(New Parameters(NewBTLParam, True))
' seleziono parametro vuoto per dargli un valore iniziale ed evitare che visualizzi sia text che check
m_SelParam = New Parameters(BTLParamM.CreateNewBTLParam())
NotifyPropertyChanged(NameOf(SelParam))
End If
End Set
End Property
@@ -78,11 +81,15 @@ Public Class ChangeParameterWndVM
GetBeamPrivateProfileProcessList(GRPType.T, TempPRCList)
m_PRCList.Clear()
For Each PRC In TempPRCList
m_PRCList.Add(New PRC(GRPType.T, PRC, GetBeamPrivateProfileName(GRPType.T, PRC)))
If Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.BTLPartVMList.Any(Function(x) x.BTLFeatureVMList.Any(Function(y) y.nPRC = PRC AndAlso CalcBeamPrivateProfileGRP(y.nSelGRP) = 1)) Then
m_PRCList.Add(New PRC(GRPType.T, PRC, GetBeamPrivateProfileName(GRPType.T, PRC)))
End If
Next
GetBeamPrivateProfileProcessList(GRPType.L, TempPRCList)
For Each PRC In TempPRCList
m_PRCList.Add(New PRC(GRPType.L, PRC, GetBeamPrivateProfileName(GRPType.L, PRC)))
If Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.BTLPartVMList.Any(Function(x) x.BTLFeatureVMList.Any(Function(y) y.nPRC = PRC AndAlso CalcBeamPrivateProfileGRP(y.nSelGRP) = 0)) Then
m_PRCList.Add(New PRC(GRPType.L, PRC, GetBeamPrivateProfileName(GRPType.L, PRC)))
End If
Next
End Sub
@@ -13,5 +13,6 @@
Public Const K_QUANTITY As String = "Quantity"
Public Const K_L As String = "L"
Public Const K_S As String = "S"
Public Const K_RANGE As String = "Range"
End Module
@@ -165,6 +165,32 @@
<Compile Include="AboutBoxWindow\AboutBoxV.xaml.vb">
<DependentUpon>AboutBoxV.xaml</DependentUpon>
</Compile>
<Compile Include="LayersWallBottomPanel\LayersWallBottomPanelV.xaml.vb">
<DependentUpon>LayersWallBottomPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="LayersWallBottomPanel\LayersWallBottomPanelVM.vb" />
<Compile Include="BTLViewModel\BTLLayerVM.vb" />
<Compile Include="BTLViewModel\BTLElementVM.vb" />
<Compile Include="ChangeMaterialWnd\ChangeMaterialWndV.xaml.vb">
<DependentUpon>ChangeMaterialWndV.xaml</DependentUpon>
</Compile>
<Compile Include="ChangeMaterialWnd\ChangeMaterialWndVM.vb" />
<Compile Include="ElementLayerTreeView\ElementLayerTreeView.vb" />
<Compile Include="ElementLayerTreeView\ElementLayerTreeViewV.xaml.vb">
<DependentUpon>ElementLayerTreeViewV.xaml</DependentUpon>
</Compile>
<Compile Include="ElementLayerTreeView\ElementLayerTreeViewVM.vb" />
<Compile Include="LayersWallFeatureList\LayersWallFeatureListV.xaml.vb">
<DependentUpon>LayersWallFeatureListV.xaml</DependentUpon>
</Compile>
<Compile Include="LayersWallLeftPanel\LayersWallLeftPanelV.xaml.vb">
<DependentUpon>LayersWallLeftPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="LayersWallLeftPanel\LayersWallLeftPanelVM.vb" />
<Compile Include="MovePartInRawPartWnd\MovePartInRawPartWndV.xaml.vb">
<DependentUpon>MovePartInRawPartWndV.xaml</DependentUpon>
</Compile>
<Compile Include="MovePartInRawPartWnd\MovePartInRawPartWndVM.vb" />
<Compile Include="InputPwdWnd\InputPwdWndV.xaml.vb">
<DependentUpon>InputPwdWndV.xaml</DependentUpon>
</Compile>
@@ -225,11 +251,19 @@
<DependentUpon>NestingRunningWndV.xaml</DependentUpon>
</Compile>
<Compile Include="NestingRunningWnd\NestingRunningWndVM.vb" />
<Compile Include="LayersWallPartManager\LayersWallPartManagerV.xaml.vb">
<DependentUpon>LayersWallPartManagerV.xaml</DependentUpon>
</Compile>
<Compile Include="LayersWallPartManager\LayersWallPartManagerVM.vb" />
<Compile Include="ProjectTypeWnd\ProjectTypeWndV.xaml.vb">
<DependentUpon>ProjectTypeWndV.xaml</DependentUpon>
</Compile>
<Compile Include="ProjectTypeWnd\ProjectTypeWndVM.vb" />
<Compile Include="ProjectFileVM\ProdFileVM.vb" />
<Compile Include="LayersWallProjManager\LayersWallProjManagerV.xaml.vb">
<DependentUpon>LayersWallProjManagerV.xaml</DependentUpon>
</Compile>
<Compile Include="LayersWallProjManager\LayersWallProjManagerVM.vb" />
<Compile Include="SetUp\SetUpSupportClass.vb" />
<Compile Include="SetUp\SetUpV.xaml.vb">
<DependentUpon>SetUpV.xaml</DependentUpon>
@@ -248,6 +282,14 @@
<Compile Include="SupervisorCommThread\SupervisorCommThread.vb" />
<Compile Include="ToolsDbWindow\MyToolDbWindowVM.vb" />
<Compile Include="ToolsDbWindow\ToolsUpdate.vb" />
<Compile Include="UpdateBTLWnd\UpdateOrAppendWndVM.vb" />
<Compile Include="UpdateBTLWnd\UpdateBTLWndV.xaml.vb">
<DependentUpon>UpdateBTLWndV.xaml</DependentUpon>
</Compile>
<Compile Include="UpdateBTLWnd\UpdateBTLWndVM.vb" />
<Compile Include="UpdateBTLWnd\UpdateOrAppendWndV.xaml.vb">
<DependentUpon>UpdateOrAppendWndV.xaml</DependentUpon>
</Compile>
<Compile Include="Utility\DbControllers.vb" />
<Compile Include="Utility\DisableModifiedMgr.vb" />
<Compile Include="Utility\LuaExec.vb" />
@@ -352,6 +394,30 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="LayersWallBottomPanel\LayersWallBottomPanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ChangeMaterialWnd\ChangeMaterialWndV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ElementLayerTreeView\ElementLayerTreeViewV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="LayersWallFeatureList\LayersWallFeatureListV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="LayersWallLeftPanel\LayersWallLeftPanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="MovePartInRawPartWnd\MovePartInRawPartWndV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="InputPwdWnd\InputPwdWndV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -412,10 +478,18 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="LayersWallPartManager\LayersWallPartManagerV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ProjectTypeWnd\ProjectTypeWndV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="LayersWallProjManager\LayersWallProjManagerV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="SetUp\SetUpV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -428,6 +502,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UpdateBTLWnd\UpdateBTLWndV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UpdateBTLWnd\UpdateOrAppendWndV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="WarehouseWnd\WarehouseWndV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -840,6 +922,15 @@
<ItemGroup>
<Resource Include="Resources\OptimizePanel\UnlockRotation.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\MovePartInRawPart\MoveLeftParts.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\MovePartInRawPart\MoveRightParts.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopPanel\MovePartInRawPart.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtBEAMWALL\EgtBEAMWALL.ViewerOptimizerR32.exe
@@ -0,0 +1,123 @@
Imports EgtUILib
''' <summary>
''' Class that represent a Machining in the treeview.
''' It's an element in the treeview that represent the child of familymachiningtreeviewitem, but also the class that read and write in the machining's database
''' </summary>
Public Class ElementLayerTreeViewItem
Inherits ChildItem
#Region "Machining Property"
Private m_Type As MCH_MY
Public ReadOnly Property Type As Integer
Get
Return m_Type
End Get
End Property
''' <summary>
''' Property that determines if the Machining is selected or not
''' </summary>
Public Overrides Property IsSelected As Boolean
Get
Return m_isSelected
End Get
Set(value As Boolean)
If (value <> m_isSelected) Then
m_isSelected = value
' If Machining is selected, set it as current and notify all machining's property
' to refresh them values with those of the new selected machining
If value Then
EgtMdbSetCurrMachining(Me.Name)
Else
End If
End If
End Set
End Property
Private m_Tool As String
Public Property Tool As String
Get
Return m_Tool
End Get
Set(value As String)
m_Tool = value
End Set
End Property
#End Region ' Machining Property
#Region "Constructors"
Sub New(Name As String, Tool As String)
MyBase.New(Name)
Me.Tool = If(Not String.IsNullOrEmpty(Tool), "(" & Tool & ")", String.Empty)
End Sub
#End Region ' Constructors
End Class
''' <summary>
''' Class that represent a FamilyMachining in the treeview.
''' It's an element in the treeview that represent a folder, but also a machining family
''' </summary>
Public Class FamilyElementLayerTreeViewItem
Inherits ParentItem
Private m_MachiningType As MCH_MY
''' <summary>
''' Property that determines the machining type of the family
''' </summary>
Public Property MachiningType As MCH_MY
Get
Return m_MachiningType
End Get
Set(value As MCH_MY)
m_MachiningType = value
End Set
End Property
''' <summary>
''' Property that determines if the Machining is selected or not
''' </summary>
Public Overrides Property IsSelected As Boolean
Get
Return m_isSelected
End Get
Set(value As Boolean)
If (value <> m_isSelected) Then
m_isSelected = value
End If
End Set
End Property
Public ReadOnly Property sName As String
Get
Return "Prova"
End Get
End Property
''' <summary>
''' Constructor that receive the name of the FamilyMachiningTreeViewItem, the MachiningType, and set
''' the picture(Folder.png)
''' </summary>
Sub New(Name As String)
MyBase.New(Name)
Me.PictureString = "/Resources/TreeView/Folder.png"
End Sub
End Class
Public Class Element
End Class
Public Class Layer
End Class
@@ -0,0 +1,78 @@
<UserControl x:Class="ElementLayerTreeViewV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:local="clr-namespace:EgtBEAMWALL.ViewerOptimizer">
<UniformGrid MaxHeight="300">
<TreeView Name="ElementLayersTreeView" Grid.Row="1"
ItemsSource="{Binding Tag.BTLElementVMList,
RelativeSource={RelativeSource AncestorType={x:Type local:ElementLayerTreeViewV}}}">
<!--ItemsSource="{Binding Path=ElementLayersList}">-->
<!--<interactivity:Interaction.Triggers>
<interactivity:EventTrigger EventName="MouseDoubleClick">
<interactivity:InvokeCommandAction Command="{Binding TreeViewDoubleClickCommand}" CommandParameter="{Binding ElementName=MachiningsTreeView,Path=SelectedItem}"/>
</interactivity:EventTrigger>
</interactivity:Interaction.Triggers>-->
<!--<TreeView.InputBindings>
<KeyBinding Key="Escape" Command="{Binding CancelNewCommand}" CommandParameter="Escape"/>
</TreeView.InputBindings>-->
<TreeView.Resources>
<!--Modifico HierarchicalDataTemplate del CathegoryItem per poter inserire immagine e testo e per -->
<!--renderlo apribile con un solo click -->
<HierarchicalDataTemplate DataType="{x:Type local:BTLElementVM}" ItemsSource="{Binding BTLLayerVMList}">
<!--<HierarchicalDataTemplate DataType="{x:Type local:FamilyElementLayerTreeViewItem}" ItemsSource="{Binding Items}">-->
<!--<HierarchicalDataTemplate DataType="{x:Type local:FamilyElementLayerTreeViewItem}" ItemsSource="{Binding ElementLayersList}">-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding PictureString}" Height="15" Margin="0,0,5,0"/>
<TextBlock Grid.Column="1" Text="{Binding sNAMplus}"/>
</Grid>
<!--Assegna ai nodi ToolItem lo Style normale dei TreeViewItem, eliminando l'ombra, data dal
multibinding quando sono attivi.-->
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" >
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
<!--Modifico DataTemplate del ToolItem per poter inserire immagine e testo-->
<DataTemplate DataType="{x:Type local:BTLLayerVM}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding sNAMplus}" Margin="0,0,5,0"/>
<!--<TextBlock Grid.Column="1" Text="{Binding Tool}"/>-->
</Grid>
</DataTemplate>
</TreeView.Resources>
<!--Style dei nodi CathegoryItem che li riquadra di azzurro quando clicckati ed elimina l'ombra grigia -->
<!--che si presenta quando la categoria rimane vuota (ombra causata dal multibinding). -->
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<EventSetter Event="PreviewMouseDown" Handler="ElementLayerTreeView_PreviewMouseDown"/>
<EventSetter Event="PreviewMouseUp" Handler="ElementLayerTreeView_PreviewMouseUp"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</UniformGrid>
</UserControl>
@@ -0,0 +1,28 @@
Public Class ElementLayerTreeViewV
Dim nPrevPartId As Integer = 0
Private Sub ElementLayerTreeView_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
' se ci troviamo nella pagina LayersWall e un Layer è già selezionato
If Map.refMainMenuVM.SelPage = EgtBEAMWALL.Core.ConstGen.Pages.LAYERSWALL AndAlso
Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLLayer) AndAlso
Map.refProjectVM.BTLStructureVM.SelBTLLayer.IsSelected Then
' salvo il PartId dell'elemento che era già selezionato
nPrevPartId = Map.refProjectVM.BTLStructureVM.SelBTLLayer.nPartId
End If
End Sub
Private Sub ElementLayerTreeView_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs)
' se ci troviamo nella pagina LayersWall e un Layer è già selezionato
If Map.refMainMenuVM.SelPage = EgtBEAMWALL.Core.ConstGen.Pages.LAYERSWALL AndAlso
Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLLayer) AndAlso
Map.refProjectVM.BTLStructureVM.SelBTLLayer.IsSelected Then
' se l'elemento su cui ho clickato è lo stesso che era selezionato
If Map.refProjectVM.BTLStructureVM.SelBTLLayer.nPartId = nPrevPartId Then
' riassegno SelBTLLayer a se stesso per eseguire la riselezione di se stesso
Map.refProjectVM.BTLStructureVM.SelBTLLayer = Map.refProjectVM.BTLStructureVM.SelBTLLayer
End If
End If
End Sub
End Class
@@ -0,0 +1,156 @@
Imports System.Collections.ObjectModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class ElementLayerTreeViewVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend CodeCommand As Boolean = False
Private m_IsEnabled As Boolean
Public Property IsEnabled As Boolean
Get
Return m_IsEnabled
End Get
Set(value As Boolean)
If value <> m_IsEnabled Then
'Map.refMachiningOptionPanelVM.Set_IsExpanded(MachiningOptionPanelVM.MachiningOptionPanelExpander.NEWMACHININGS, value)
End If
End Set
End Property
' Lista delle lavorazioni
Private m_ElementLayersList As New ObservableCollection(Of FamilyElementLayerTreeViewItem)
Public Property ElementLayersList As ObservableCollection(Of FamilyElementLayerTreeViewItem)
Get
Return m_ElementLayersList
End Get
Set(value As ObservableCollection(Of FamilyElementLayerTreeViewItem))
m_ElementLayersList = value
End Set
End Property
Public ReadOnly Property LayersWallPage_Visibility As Visibility
Get
Return If(Map.refMainMenuVM.SelPage = Pages.LAYERSWALL, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
' Operazione correntemente selezionata, che permette di aggiungere al posto giusto quella nuova
Friend nSelectedOperationId As Integer = GDB_ID.NULL
'Public ReadOnly Property MachListHdr As String
' Get
' Return EgtMsg(MSG_OPERATION + 12) ' Nuove Lavorazioni
' End Get
'End Property
' Definizione comandi
Private m_cmdTreeViewDoubleClick As ICommand
Private m_cmdCancelNew As ICommand
#End Region
#Region "CONSTRUCTOR"
Sub New()
Map.SetRefElementLayerTreeViewVM(Me)
' Per caricare l'albero la prima volta che viene aperto
IsEnabled = False
'LoadSelectedMachineMachinings()
End Sub
#End Region
#Region "COMMANDS"
#End Region ' Commands
#Region "METHODS"
Friend Function InitMachiningTreeExpander() As Boolean
'm_IsEnabled = True
'Map.refOperationParametersExpanderVM.OperParamsViewIsEnabled = False
'Map.refSimulationExpanderVM.Simulation_IsEnabled = False
'Map.refEstimationsExpanderVM.Estimation_IsEnabled = False
'' Abilito la selezione delle geometrie di lavorazione
'Map.refProjectVM.SceneSelType = SceneSelTypeOpt.MACHINING
'' Abilito la selezione di curve e superfici del pezzo
'Map.refProjectVM.SceneSelMode = SceneSelModeOpt.ALL
'CodeCommand = False
'OnPropertyChanged("IsEnabled")
Return True
End Function
Friend Function ExitMachiningTreeExpander() As Boolean
'm_IsEnabled = False
'Map.refOperationParametersExpanderVM.OperParamsViewIsEnabled = True
'Map.refSimulationExpanderVM.Simulation_IsEnabled = True
'Map.refEstimationsExpanderVM.Estimation_IsEnabled = True
'If Not CodeCommand Then
' Map.refOperationsListExpanderVM.CancelOperationCmd()
' CodeCommand = False
' OnPropertyChanged("IsEnabled")
' Return False
'End If
'CodeCommand = False
'OnPropertyChanged("IsEnabled")
Return True
End Function
''' <summary>
''' Method that search the machines in the correct folder and add to the MachinesList those valid.
''' </summary>
Private Sub LoadSelectedMachineMachinings()
'Dim ActiveMachiningsTypes() As MachiningsType = MachineModel.ReadActiveMachiningsFamilies()
'For Each MachiningsType In ActiveMachiningsTypes
' Dim FamilyTreeView As New FamilyMachiningTreeViewExpanderItem(MachiningsType.TypeName, MachiningsType.TypeId)
' MachiningsList.Add(FamilyTreeView)
' Dim MachiningName As String = String.Empty
' Dim MachiningToolName As String = String.Empty
' EgtMdbGetFirstMachining(MachiningsType.TypeId, MachiningName)
' While Not String.IsNullOrEmpty(MachiningName)
' EgtMdbSetCurrMachining(MachiningName)
' EgtMdbGetCurrMachiningParam(MCH_MP.TOOL, MachiningToolName)
' FamilyTreeView.Items.Add(New MachiningTreeViewExpanderItem(MachiningName, MachiningsType.TypeId, MachiningToolName))
' EgtMdbGetNextMachining(MachiningsType.TypeId, MachiningName)
' End While
'Next
'' Se esiste almeno una famiglia di lavorazioni, la seleziono
'If MachiningsList.Count > 0 Then
' MachiningsList(0).IsSelected = True
' MachiningsList(0).NotifyPropertyChanged("IsSelected")
'End If
Dim ActiveMachiningsTypes() As String = {"A", "B", "C"}
For Each MachiningsType In ActiveMachiningsTypes
Dim FamilyTreeView As New FamilyElementLayerTreeViewItem(MachiningsType)
ElementLayersList.Add(FamilyTreeView)
Dim MachiningName As String = "1"
FamilyTreeView.Items.Add(New ElementLayerTreeViewItem(MachiningName, MachiningsType))
Next
' Se esiste almeno una famiglia di lavorazioni, la seleziono
If ElementLayersList.Count > 0 Then
ElementLayersList(0).IsSelected = True
ElementLayersList(0).NotifyPropertyChanged("IsSelected")
End If
End Sub
Friend Sub UpdateOperationMachiningList()
m_ElementLayersList.Clear()
LoadSelectedMachineMachinings()
End Sub
#End Region
End Class
@@ -16,6 +16,34 @@ Public Class FeatureManagerVM
End Set
End Property
Private m_LayerFeature_Visibility As Boolean = False
Public Property LayerFeature_Visibility As Visibility
Get
Return If(m_LayerFeature_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayerFeature_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayerFeature_Visibility(IsVisible As Boolean)
m_LayerFeature_Visibility = IsVisible
NotifyPropertyChanged(NameOf(LayerFeature_Visibility))
End Sub
Private m_PartFeature_Visibility As Boolean = False
Public Property PartFeature_Visibility As Visibility
Get
Return If(m_PartFeature_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_PartFeature_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetPartFeature_Visibility(IsVisible As Boolean)
m_PartFeature_Visibility = IsVisible
NotifyPropertyChanged(NameOf(PartFeature_Visibility))
End Sub
#Region "Messages"
Public ReadOnly Property Face_Msg As String
@@ -28,6 +28,15 @@
<Image Source="/Resources/InstrumentPanel/ChangeParam.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding ChangeMaterial_ToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding ChangeMaterial_Command}"
Visibility="{Binding ChangeMaterial_Visibility}"
IsEnabled="{Binding InstrumentPanel_IsEnabled}"
Content="MAT">
<!--<Image Source="/Resources/CALCPanel/ChooseMachine.png" Stretch="Uniform"/>-->
</Button>
<ToggleButton ToolTip="{Binding Statistics_Msg}"
Style="{StaticResource ToolBar_ToggleButton}"
IsChecked="{Binding Statistics_IsChecked}">
@@ -13,6 +13,12 @@ Public Class MyInstrumentPanelVM
End Get
End Property
Public ReadOnly Property ChangeMaterial_Visibility As Visibility
Get
Return If(Map.refMainWindowVM.MainWindowM.nUserLevel > 5 AndAlso Map.refMainMenuVM.SelPage = Pages.VIEW, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Private m_InstrumentPanel_IsEnabled As Boolean = True
Public Property InstrumentPanel_IsEnabled As Boolean
Get
@@ -48,7 +54,7 @@ Public Class MyInstrumentPanelVM
' aggiorno valori totali
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM) Then Map.refProjectVM.MachGroupPanelVM.CalcGlobalUpdate()
' aggiorno conto materiali usati
Map.refStatisticsVM.LoadRawPart()
If Not IsNothing(Map.refProdManagerVM.CurrProd) Then Map.refStatisticsVM.LoadRawPart()
' seleziono pagina Statistics
Map.refTopPanelVM.SetSelTab(TopPanelVM.Tabs.STATISTICS)
Else
@@ -66,6 +72,7 @@ Public Class MyInstrumentPanelVM
' Definizione comandi
Private m_cmdData As ICommand
Private m_cmdChangeParameter As ICommand
Private m_cmdChangeMaterial As ICommand
Private m_cmdStatistics As ICommand
#Region "Messages"
@@ -76,6 +83,12 @@ Public Class MyInstrumentPanelVM
End Get
End Property
Public ReadOnly Property ChangeMaterial_ToolTip As String
Get
Return EgtMsg(61961)
End Get
End Property
Public ReadOnly Property Statistics_Msg As String
Get
Return EgtMsg(61923)
@@ -235,6 +248,42 @@ Public Class MyInstrumentPanelVM
#End Region ' ChangeParameter
#Region "ChangeMaterial"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property ChangeMaterial_Command As ICommand
Get
If m_cmdChangeMaterial Is Nothing Then
m_cmdChangeMaterial = New Command(AddressOf ChangeMaterial)
End If
Return m_cmdChangeMaterial
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub ChangeMaterial()
If (Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso (IsNothing(Map.refProjManagerVM.CurrProj) OrElse IsNothing(Map.refProjectVM.BTLStructureVM)) OrElse
(Map.refMainMenuVM.SelPage = Pages.MACHINING AndAlso (IsNothing(Map.refProdManagerVM.CurrProd) OrElse IsNothing(Map.refProjectVM.MachGroupPanelVM)))) Then Return
Dim ChangeMaterialWndVM As New ChangeMaterialWndVM
Dim ChangeMaterialWnd As New ChangeMaterialWndV(Application.Current.MainWindow, ChangeMaterialWndVM)
If ChangeMaterialWnd.ShowDialog() Then
LoadingWndHelper.OpenLoadingWnd(ActiveIds.CHANGEMATERIAL, 1, EgtMsg(63021), "", 100) ' Modifying materials
' faccio passare pezzi
If Not IsNothing(ChangeMaterialWndVM.SelProjMaterial) AndAlso Not IsNothing(ChangeMaterialWndVM.SelWhMaterial) Then
For Each Part In Map.refProjectVM.BTLStructureVM.BTLPartVMList.Where(Function(x) x.sMATERIAL = ChangeMaterialWndVM.SelProjMaterial)
Part.sMATERIAL = ChangeMaterialWndVM.SelWhMaterial
Next
End If
LoadingWndHelper.CloseLoadingWnd(ActiveIds.CHANGEMATERIAL)
End If
End Sub
#End Region ' ChangeMaterial
#End Region ' COMMANDS
End Class
@@ -4,7 +4,11 @@
If TypeOf sender Is DataGridRow Then
Dim Row As DataGridRow = DirectCast(sender, DataGridRow)
If Not IsNothing(Row) AndAlso Row.IsSelected Then
Map.refProjectVM.BTLStructureVM.SelBTLPart = Map.refProjectVM.BTLStructureVM.SelBTLPart
If Map.refMainMenuVM.SelPage = EgtBEAMWALL.Core.ConstGen.Pages.LAYERSWALL Then
Map.refProjectVM.BTLStructureVM.SelBTLLayer.SelBTLPart = Map.refProjectVM.BTLStructureVM.SelBTLLayer.SelBTLPart
Else
Map.refProjectVM.BTLStructureVM.SelBTLPart = Map.refProjectVM.BTLStructureVM.SelBTLPart
End If
End If
End If
End Sub
@@ -1,8 +1,10 @@
Imports System.Collections.ObjectModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class BTLPartListVM
Inherits VMBase
Private m_colPart_Do As EgtDataGridColumn
Public ReadOnly Property colPart_Do As EgtDataGridColumn
@@ -21,6 +23,18 @@ Public Class BTLPartListVM
End Set
End Property
Public ReadOnly Property ViewMachiningPage_Visibility As Visibility
Get
Return If(Map.refMainMenuVM.SelPage = Pages.VIEW Or Map.refMainMenuVM.SelPage = Pages.MACHINING, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Public ReadOnly Property LayersWallPage_Visibility As Visibility
Get
Return If(Map.refMainMenuVM.SelPage = Pages.LAYERSWALL, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
#Region "Messages"
Public ReadOnly Property PDN_Msg As String
@@ -4,6 +4,7 @@ Imports EgtUILib
Imports EgtWPFLib5
Public Class FeatureListVM
Inherits VMBase
Private m_colFeature_Do As EgtDataGridColumn
Public ReadOnly Property colFeature_Do As EgtDataGridColumn
@@ -22,6 +23,34 @@ Public Class FeatureListVM
End Set
End Property
Private m_LayerFeatureList_Visibility As Boolean = True
Public Property LayerFeatureList_Visibility As Visibility
Get
Return If(m_LayerFeatureList_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayerFeatureList_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayerFeatureList_Visibility(IsVisible As Boolean)
m_LayerFeatureList_Visibility = IsVisible
NotifyPropertyChanged(NameOf(LayerFeatureList_Visibility))
End Sub
Private m_PartFeatureList_Visibility As Boolean = True
Public Property PartFeatureList_Visibility As Visibility
Get
Return If(m_PartFeatureList_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_PartFeatureList_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetPartFeatureList_Visibility(IsVisible As Boolean)
m_PartFeatureList_Visibility = IsVisible
NotifyPropertyChanged(NameOf(PartFeatureList_Visibility))
End Sub
#Region "Messages"
Public ReadOnly Property Description_Msg As String
@@ -26,6 +26,17 @@
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.PDN_Msg,RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:PartInRawPartListV}}}"/>
</DataGridTextColumn.Header>
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderBrush" Value="{Binding Search_Background}"/>
<Setter Property="BorderThickness" Value="2"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<!--Validità pezzo-->
<DataGridTemplateColumn x:Key="colCALC">
@@ -143,7 +154,7 @@
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--PosX - Posizione-->
<DataGridTextColumn x:Key="colPOSX" Binding="{Binding sPOSX, UpdateSourceTrigger=PropertyChanged}" SortMemberPath="dPOSX">
<DataGridTextColumn x:Key="colPOSX" Binding="{Binding sPOSX}" SortMemberPath="dPOSX">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.PosX_Msg,RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:PartInRawPartListV}}}"/>
@@ -156,7 +167,7 @@
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<!--PosY - Posizione-->
<DataGridTextColumn x:Key="colPOSY" Binding="{Binding sPOSY, UpdateSourceTrigger=PropertyChanged}" SortMemberPath="dPOSY">
<DataGridTextColumn x:Key="colPOSY" Binding="{Binding sPOSY}" SortMemberPath="dPOSY">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.PosY_Msg,RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:PartInRawPartListV}}}"/>
@@ -122,7 +122,7 @@ Public Class PartInRawPartListVM
' aggiungo riferimento a map
Map.SetRefPartInRawPartListVM(Me)
' carico le colonne della datagrid
GetPrivateProfileColumns(S_PARTINRAWPARTLIST_BEAM, PartInRawPartColumns)
'GetPrivateProfileColumns(S_PARTINRAWPARTLIST_BEAM, PartInRawPartColumns)
End Sub
#End Region ' CONSTRUCTOR
@@ -26,6 +26,17 @@
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.ID_Msg, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:RawPartListV}}}"/>
</DataGridTextColumn.Header>
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderBrush" Value="{Binding Search_Background}"/>
<Setter Property="BorderThickness" Value="2"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<!--Validità pezzo-->
<DataGridTemplateColumn x:Key="colCALC">
@@ -88,7 +99,7 @@
<DataGridTextColumn x:Key="colW" Binding="{Binding sW}">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.W_Msg,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:RawPartListV}}}"/>
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:RawPartListV}}}"/>
</DataGridTextColumn.Header>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="{x:Type TextBox}">
@@ -97,7 +97,7 @@ Public Class RawPartListVM
' Aggiungo riferimento a Map
Map.SetRefRawPartListVM(Me)
' carico le colonne della datagrid
GetPrivateProfileColumns(S_RAWPARTLIST_BEAM, RawPartColumns)
'GetPrivateProfileColumns(S_RAWPARTLIST_BEAM, RawPartColumns)
End Sub
#End Region ' CONSTRUCTOR
@@ -0,0 +1,170 @@
<Grid x:Class="LayersWallBottomPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
Height="350"
Visibility="{Binding LayersWallBottomPanel_Visibility}">
<!--<EgtWPFLib5:EgtScrollViewer Focusable="False">-->
<TabControl SelectedIndex="{Binding SelPartFeatureTab}"
TabStripPlacement="Right"
Margin="5">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem Header="STRUCTURE">
<TabItem.Content>
<EgtWPFLib5:EgtScrollViewer Focusable="False">
<EgtBEAMWALL:BTLDataV DataContext="{StaticResource BTLDataWndVM}"
Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</EgtWPFLib5:EgtScrollViewer>
</TabItem.Content>
</TabItem>
<TabItem Header="LAYER">
<TabItem.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<EgtWPFLib5:EgtScrollViewer Focusable="False">
<EgtBEAMWALL:PartParametersV DataContext="{StaticResource PartParametersVM}"
Tag="{Binding Tag.SelBTLLayer, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</EgtWPFLib5:EgtScrollViewer>
<TextBlock Grid.Row="1"
Text="{Binding Tag.SelBTLLayer.sCALC_MSG, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Foreground="{Binding Tag.SelBTLLayer.CALC_ERR_Foreground, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5,0,5,0"
Visibility="{Binding Tag.SelBTLLayer.CALC_MSG_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"/>
</Grid>
</TabItem.Content>
</TabItem>
<TabItem Header="PART">
<TabItem.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<EgtWPFLib5:EgtScrollViewer Focusable="False">
<EgtBEAMWALL:PartParametersV DataContext="{StaticResource PartParametersVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLPart, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</EgtWPFLib5:EgtScrollViewer>
<TextBlock Grid.Row="1"
Text="{Binding Tag.SelBTLLayer.SelBTLPart.sCALC_MSG, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Foreground="{Binding Tag.SelBTLLayer.SelBTLPart.CALC_ERR_Foreground, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5,0,5,0"
Visibility="{Binding Tag.SelBTLLayer.SelBTLPart.CALC_MSG_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"/>
</Grid>
</TabItem.Content>
</TabItem>
<TabItem Header="FEATURE">
<TabItem.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="300"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="Text" Value="">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<!--Viste per Feature del Part del Layer-->
<EgtBEAMWALL:FeatureManagerV DataContext="{StaticResource FeatureManagerVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLPart.SelBTLFeatureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Visibility="{Binding PartFeature_Visibility}"/>
<TabControl Grid.Row="1"
TabStripPlacement="Left"
Margin="5,5,2.5,5"
Visibility="{Binding PartFeature_Visibility}">
<TabItem Header="P">
<TabItem.Content>
<EgtBEAMWALL:PParameterListV DataContext="{StaticResource PParameterListVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLPart.SelBTLFeatureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</TabItem.Content>
</TabItem>
<TabItem Header="Q">
<TabItem.Content>
<EgtBEAMWALL:QParameterListV DataContext="{StaticResource QParameterListVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLPart.SelBTLFeatureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</TabItem.Content>
</TabItem>
</TabControl>
<!--Viste per Feature del Layer-->
<EgtBEAMWALL:FeatureManagerV DataContext="{StaticResource FeatureManagerVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLFeatureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Visibility="{Binding LayerFeature_Visibility}"/>
<TabControl Grid.Row="1"
TabStripPlacement="Left"
Margin="5,5,2.5,5"
Visibility="{Binding LayerFeature_Visibility}">
<TabItem Header="P">
<TabItem.Content>
<EgtBEAMWALL:PParameterListV DataContext="{StaticResource PParameterListVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLFeatureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</TabItem.Content>
</TabItem>
<TabItem Header="Q">
<TabItem.Content>
<EgtBEAMWALL:QParameterListV DataContext="{StaticResource QParameterListVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLFeatureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</TabItem.Content>
</TabItem>
</TabControl>
<!--<TabControl Grid.Column="1"
Grid.Row="1"
TabStripPlacement="Bottom"
Margin="2.5,5,5,5">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem Header="Parameter">
<TabItem.Content>-->
<Image Grid.Column="1"
Grid.Row="1"
Source="{Binding sCurrDraw}"
Margin="5"/>
<!--</TabItem.Content>
</TabItem>
</TabControl>-->
<TextBlock Grid.Row="2" Grid.ColumnSpan="2"
Text="{Binding Tag.SelBTLLayer.SelBTLPart.SelBTLFeatureVM.sCALC_MSG, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Foreground="{Binding Tag.SelBTLPart.SelBTLFeatureVM.Calc_Background, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5,0,5,0"/>
</Grid>
</TabItem.Content>
</TabItem>
<TabItem Header="STATISTICS">
<TabItem.Content>
<EgtBEAMWALL:StatisticsV DataContext="{StaticResource StatisticsVM}"
Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallBottomPanelV}}}"
Margin="5"/>
</TabItem.Content>
</TabItem>
</TabControl>
<!--</EgtWPFLib5:EgtScrollViewer>-->
</Grid>
@@ -0,0 +1,3 @@
Public Class LayersWallBottomPanelV
End Class
@@ -0,0 +1,79 @@
Imports EgtWPFLib5
Public Class LayersWallBottomPanelVM
Inherits VMBase
Friend Enum PartFeatureTab As Integer
STRUCTURE_ = 0
LAYER = 1
PART = 2
FEATURE = 3
STATISTICS = 4
End Enum
Private m_SelPartFeatureTab As PartFeatureTab
Public Property SelPartFeatureTab As Integer
Get
Return m_SelPartFeatureTab
End Get
Set(value As Integer)
m_SelPartFeatureTab = value
End Set
End Property
Friend Sub SetSelPartFeatureTab(SelPartFeatureTab As PartFeatureTab)
If m_SelPartFeatureTab = PartFeatureTab.STATISTICS Then
Map.refInstrumentPanelVM.SetStatisticsIsChecked(False)
End If
m_SelPartFeatureTab = SelPartFeatureTab
NotifyPropertyChanged(NameOf(SelPartFeatureTab))
End Sub
Private m_sCurrDraw As String
Public ReadOnly Property sCurrDraw As String
Get
Return m_sCurrDraw
End Get
End Property
Friend Sub SetCurrDraw(sCurrDraw As String)
m_sCurrDraw = sCurrDraw
NotifyPropertyChanged(NameOf(sCurrDraw))
End Sub
Private m_LayerFeature_Visibility As Boolean = False
Public Property LayerFeature_Visibility As Visibility
Get
Return If(m_LayerFeature_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayerFeature_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayerFeature_Visibility(IsVisible As Boolean)
m_LayerFeature_Visibility = IsVisible
NotifyPropertyChanged(NameOf(LayerFeature_Visibility))
End Sub
Private m_PartFeature_Visibility As Boolean = False
Public Property PartFeature_Visibility As Visibility
Get
Return If(m_PartFeature_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_PartFeature_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetPartFeature_Visibility(IsVisible As Boolean)
m_PartFeature_Visibility = IsVisible
NotifyPropertyChanged(NameOf(PartFeature_Visibility))
End Sub
#Region "CONSTRUCTOR"
Sub New()
' Creo riferimento a questa classe in EgtCAM5Map
Map.SetRefLayersWallBottomPanelVM(Me)
End Sub
#End Region ' CONSTRUCTOR
End Class
@@ -0,0 +1,103 @@
<UserControl x:Class="LayersWallFeatureListV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
xmlns:EgtBEAMWALLCORE="clr-namespace:EgtBEAMWALL.Core;assembly=EgtBEAMWALL.Core">
<EgtBEAMWALLCORE:EgtDataGrid ItemsSource="{Binding Tag.BTLFeatureVMList,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallFeatureListV}}}"
SelectedItem="{Binding Tag.SelBTLFeatureVM,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallFeatureListV}}}"
CanUserAddRows="False"
AutoGenerateColumns="False"
CanUserResizeRows="False"
SelectionMode="Single"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
Margin="0,0,0,5"
BindingColumns="{Binding FeatureColumns}"
Style="{StaticResource DataGrid_CustomHighLight}">
<DataGrid.Resources>
<!--DO - Abilitazione-->
<DataGridCheckBoxColumn x:Key="colDO" Binding="{Binding bDO, UpdateSourceTrigger=PropertyChanged}"
MinWidth="28">
<DataGridCheckBoxColumn.Header>
<CheckBox IsChecked="{Binding Path=Tag.bFeatureDOALL, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallFeatureListV}}}"/>
</DataGridCheckBoxColumn.Header>
</DataGridCheckBoxColumn>
<!--Validità feature-->
<DataGridTemplateColumn x:Key="colCALC">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="10"/>
</Grid.ColumnDefinitions>
<Border Width="{Binding ActualHeight, RelativeSource={RelativeSource self}}"
Background="{Binding Calc_Background}"/>
<!--Width="{Binding ActualHeigth, Source=Self}"/>-->
<Grid Grid.Column="1"
HorizontalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Ellipse Width="5"
Height="5"
Fill="Red"
Visibility="{Binding CALC_ROT_Visibility}"
HorizontalAlignment="Center"/>
<TextBlock Grid.Row="1"
Text="{Binding CALC_ERR_Letter}"
Foreground="{Binding CALC_ERR_Foreground}"
TextAlignment="Center"
FontWeight="Bold"
FontSize="12"
Margin="0,-6,0,-2"/>
<!--<Ellipse Width="5"
Height="5"
Fill="Red"
Visibility="{Binding CALC_ROT_Visibility}"/>
<TextBlock Text="{Binding CALC_ERR_Letter}"
Foreground="{Binding CALC_ERR_Foreground}"
FontWeight="Bold"
FontSize="10"/>-->
<!--<TextBlock Text="&#x2794;"
Visibility="{Binding CALC_FALL_Visibility}"/>-->
</Grid>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--Descrizione-->
<DataGridTextColumn x:Key="colDESC" Binding="{Binding sDesc}">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.Description_Msg, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallFeatureListV}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!-- Menu' tasto destro -->
<ContextMenu x:Key="RowMenu" ItemsSource="{Binding MenuList}" >
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding MenuItem_Command}"/>
<Setter Property="Header" Value="{Binding sMsg}"/>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
</DataGrid.Resources>
<DataGrid.InputBindings>
<KeyBinding Key="Delete" Command="{Binding Tag.SelBTLFeatureVM.DeleteFeature_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallFeatureListV}}}" />
</DataGrid.InputBindings>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource RowDataGrid_CustomHighLight}">
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
<EventSetter Event="PreviewMouseDown" Handler="LayersWallFeatureList_PreviewMouseDown"/>
</Style>
</DataGrid.RowStyle>
</EgtBEAMWALLCORE:EgtDataGrid>
</UserControl>
@@ -0,0 +1,12 @@
Public Class LayersWallFeatureListV
Private Sub LayersWallFeatureList_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
If TypeOf sender Is DataGridRow Then
Dim Row As DataGridRow = DirectCast(sender, DataGridRow)
If Not IsNothing(Row) AndAlso Row.IsSelected AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) Then
Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM = Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM
End If
End If
End Sub
End Class
@@ -0,0 +1,186 @@
<Grid x:Class="LayersWallLeftPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="{Binding GridDims[0].GridLen, Mode=TwoWay}"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="{Binding GridDims[1].GridLen, Mode=TwoWay}"/>
</Grid.RowDefinitions>
<!--<GroupBox Header="{Binding SearchFilter_Msg}"
Margin="3,1,3,3">
<Expander>
<Expander.Header>
<Grid HorizontalAlignment="{Binding HorizontalAlignment, RelativeSource={RelativeSource AncestorType=ContentPresenter}, Mode=OneWayToSource}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*" x:Name="ComboColumn"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Section_Msg}"
VerticalAlignment="Center"/>
<ComboBox ItemsSource="{Binding Tag.SectionList, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
SelectedItem="{Binding Tag.SelSection, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
DisplayMemberPath="sSectionXMaterial"
Grid.Column="1"/>
</Grid>
</Expander.Header>
<Grid Margin="1,0,1,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Group_Msg}"
Grid.ColumnSpan="2"
VerticalAlignment="Center"/>
<ComboBox ItemsSource="{Binding Tag.GroupList, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
SelectedItem="{Binding Tag.SelGroup, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Grid.Column="2"
Margin="0,2,0,2"/>
<TextBlock Text="{Binding SubGroup_Msg}"
Grid.Row="1"
Grid.ColumnSpan="2"
VerticalAlignment="Center"/>
<ComboBox ItemsSource="{Binding Tag.SubGroupList, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
SelectedItem="{Binding Tag.SelSubGroup, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Grid.Column="2"
Grid.Row="1"
Margin="0,2,0,2"/>
<TextBlock Text="{Binding ParType_Msg}"
Grid.Row="2"
Grid.ColumnSpan="2"
VerticalAlignment="Center"/>
<ComboBox ItemsSource="{Binding Tag.SearchParamList, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
SelectedItem="{Binding Tag.SelSearchParam, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Grid.Column="2"
Grid.Row="2"
Margin="0,2,0,2"/>
<TextBlock Text="{Binding ParValue_Msg}"
Grid.Row="3"
Grid.ColumnSpan="2"
VerticalAlignment="Center"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Tag.SearchText, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Grid.Column="2"
Grid.Row="3"
Margin="0,2,0,0"/>
</Grid>
</Expander>
</GroupBox>-->
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<EgtBEAMWALL:ElementLayerTreeViewV DataContext="{StaticResource ElementLayerTreeViewVM}"
Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Grid.Row="0"
MaxHeight="100"/>
<StackPanel Orientation="Horizontal"
Grid.Row="1"
HorizontalAlignment="Right">
<Button Command="{Binding NewRawPart_Command}"
Visibility="{Binding MachiningPage_Visibility}"
ToolTip="{Binding NewRawPart_ToolTip}"
IsEnabled="{Binding LayersWallLeftPanel_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/NewRawPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding AddToRawPart_Command}"
Visibility="{Binding MachiningPage_Visibility}"
ToolTip="{Binding AddToRawPart_ToolTip}"
IsEnabled="{Binding LayersWallLeftPanel_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/AddToRawPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding CopyPart_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding CopyPart_ToolTip}"
IsEnabled="{Binding CopyPart_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/CopyPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding AddPart_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding AddPart_ToolTip}"
IsEnabled="{Binding LayersWallLeftPanel_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/AddPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding RemovePart_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding RemovePart_ToolTip}"
IsEnabled="{Binding RemovePart_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/RemovePart.png" Stretch="Uniform"/>
</Button>
</StackPanel>
<EgtBEAMWALL:BTLPartListV DataContext="{StaticResource PartListVM}"
Tag="{Binding Tag.SelBTLLayer, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Grid.Row="2"/>
</Grid>
<GridSplitter Height="3" HorizontalAlignment="Stretch" Grid.Row="2"/>
<Grid Grid.Row="3">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right">
<Button Command="{Binding CopyFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding CopyFeature_ToolTip}"
IsEnabled="{Binding CopyFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/CopyFeature.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding MacroFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding MacroFeature_ToolTip}"
IsEnabled="{Binding MacroFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/MacroFeature.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding AddFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding AddFeature_ToolTip}"
IsEnabled="{Binding AddFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/AddFeature.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding RemoveFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding RemoveFeature_ToolTip}"
IsEnabled="{Binding RemoveFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/RemoveFeature.png" Stretch="Uniform"/>
</Button>
</StackPanel>
<!--Lista feature per Layer-->
<EgtBEAMWALL:LayersWallFeatureListV DataContext="{ StaticResource FeatureListVM}"
Tag="{Binding Tag.SelBTLLayer, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Visibility="{Binding LayerFeatureList_Visibility}"
Grid.Row="1"/>
<!--Lista feature per Part-->
<EgtBEAMWALL:FeatureListV DataContext="{ StaticResource FeatureListVM}"
Tag="{Binding Tag.SelBTLLayer.SelBTLPart, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallLeftPanelV}}}"
Visibility="{Binding PartFeatureList_Visibility}"
Grid.Row="1"/>
</Grid>
</Grid>
@@ -0,0 +1,3 @@
Public Class LayersWallLeftPanelV
End Class
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,104 @@
<StackPanel x:Class="LayersWallPartManagerV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
Orientation="Horizontal"
Height="28"
IsEnabled="{Binding LayersWallPartManager_IsEnabled}">
<TextBlock Text="BTL Qty"
Style="{StaticResource OptionTextBlock}"/>
<TextBlock Text="{Binding Tag.sCNT,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}},
UpdateSourceTrigger=Explicit}"
Width="25"
Style="{StaticResource OptionTextBlock}"/>
<TextBlock Text="Added Qty"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Tag.sADDED,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}},
UpdateSourceTrigger=Explicit}"
Width="25"/>
<TextBlock Text="W"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Tag.sW,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}},
UpdateSourceTrigger=Explicit}" Width="45"/>
<TextBlock Text="H"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Tag.sH,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}},
UpdateSourceTrigger=Explicit}" Width="45"/>
<TextBlock Text="L"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Tag.sL,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}},
UpdateSourceTrigger=Explicit}" Width="65"/>
<TextBlock Text="Inverti"
Style="{StaticResource OptionTextBlock}"
Margin="10,0,0,0"/>
<Image IsEnabled="{Binding Tag.bLockInversion,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
Height="15"
Stretch="Uniform"
Visibility="{Binding Lock_Visibility}"
Style="{StaticResource LockImage}"/>
<Button Command="{Binding Tag.Invert_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
Style="{StaticResource ToolBar_SmallButton}"
Margin="5,0,0,0">
<Image Source="/Resources/PartManager/LeftInvert.png" Stretch="Uniform"/>
</Button>
<TextBlock Text="{Binding Tag.sINVERTED,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
TextAlignment="Center"
Width="25"
Style="{StaticResource OptionTextBlock}"/>
<Button Command="{Binding Tag.Invert_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
Style="{StaticResource ToolBar_SmallButton}"
Margin="0,0,5,0">
<Image Source="/Resources/PartManager/RightInvert.png" Stretch="Uniform"/>
</Button>
<TextBlock Text="Ruota"
Style="{StaticResource OptionTextBlock}"
Margin="10,0,0,0"/>
<Image IsEnabled="{Binding Tag.bLockRotation,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
Height="15"
Stretch="Uniform"
Visibility="{Binding Lock_Visibility}"
Style="{StaticResource LockImage}"/>
<Button Command="{Binding Tag.BackRotation_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
Style="{StaticResource ToolBar_SmallButton}"
Margin="5,0,0,0">
<Image Source="/Resources/PartManager/LeftRotate.png" Stretch="Uniform"/>
</Button>
<TextBlock Text="{Binding Tag.sROTATED,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
TextAlignment="Center"
Width="25"
Style="{StaticResource OptionTextBlock}"/>
<Button Command="{Binding Tag.ForwardRotation_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LayersWallPartManagerV}}}"
Style="{StaticResource ToolBar_SmallButton}"
Margin="0,0,10,0">
<Image Source="/Resources/PartManager/RightRotate.png" Stretch="Uniform"/>
</Button>
<!--Comando inutilizzato ma conservato per eventuale rotazione a causa di importazione con rotazione sbagliata-->
<!--<Button Command="{Binding Tag.XRotation_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:PartManagerV}}}"
Style="{StaticResource ToolBar_SmallButton}"
Margin="0,0,10,0">
<Image Source="/Resources/PartManager/RightRotate.png" Stretch="Uniform"/>
</Button>-->
<TextBlock Text="{Binding Tag.sNAM,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:PartManagerV}}}"
Style="{StaticResource OptionTextBlock}"/>
</StackPanel>
@@ -0,0 +1,3 @@
Public Class LayersWallPartManagerV
End Class
@@ -0,0 +1,38 @@
Imports EgtBEAMWALL.Core.ConstGen
Imports EgtWPFLib5
Public Class LayersWallPartManagerVM
Inherits VMBase
Private m_LayersWallPartManager_IsEnabled As Boolean = True
Public ReadOnly Property LayersWallPartManager_IsEnabled As Boolean
Get
Return m_LayersWallPartManager_IsEnabled
End Get
End Property
Private m_Lock_Visibility As Visibility
Public ReadOnly Property Lock_Visibility As Visibility
Get
'Return Visibility.Collapsed
Return If(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso
Map.refProjectVM.BTLStructureVM.nPROJTYPE = Core.ConstBeam.BWType.WALL AndAlso
Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO), Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Sub New()
' salvo riferimento in Map
Map.SetRefLayersWallPartManagerVM(Me)
End Sub
Friend Sub SetLayersWallPartManagerIsEnabled(bIsEnabled As Boolean)
m_LayersWallPartManager_IsEnabled = bIsEnabled
NotifyPropertyChanged(NameOf(LayersWallPartManager_IsEnabled))
End Sub
Friend Sub LockVisibilityUpdate()
NotifyPropertyChanged(NameOf(Lock_Visibility))
End Sub
End Class
@@ -0,0 +1,83 @@
<EgtFloating:EgtFloatingPanel x:Class="LayersWallProjManagerV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
IsTopDockable="True" IsBottomDockable="False" IsLeftDockable="False"
IsRightDockable="False"
IsEnabled="{Binding LayersWallProjManager_IsEnabled}"
Style="{StaticResource ToolBar_EgtFloatingPanel}">
<!--Barra superiore dei comandi-->
<Button Command="{Binding New_Command}"
ToolTip="{Binding NewToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/New.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding OpenCommand}"
ToolTip="{Binding OpenToolTip}"
ContextMenuService.Placement="Bottom"
Tag="{Binding}"
IsEnabled="False"
Style="{StaticResource ToolBar_Button}">
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding MruFileNames}">
<ContextMenu.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command"
Value="{Binding PlacementTarget.Tag.OpenMruFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}" />
<Setter Property="CommandParameter" Value="{Binding}" />
</Style>
</ContextMenu.Resources>
</ContextMenu>
</Button.ContextMenu>
<Image Source="/Resources/ProjectManager/Open.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding SaveCommand}"
ToolTip="{Binding SaveToolTip}"
IsEnabled="False"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/Save.png" Stretch="Uniform"/>
</Button>
<!--<Button Command="{Binding SaveAsCommand}"
ToolTip="{Binding SaveAsToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/SaveAs.png" Stretch="Uniform"/>
</Button>-->
<Button Command="{Binding ImportBTL_Command}"
ToolTip="{Binding ImportBTL_ToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/ImportBTL.png" Stretch="Uniform"/>
</Button>
<!--<Button Command="{Binding OptionsCommand}"
ToolTip="{Binding OptionsToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/Options.png" Height="22"/>
</Button>-->
<!--<Button Command="{Binding SendFeedbackCommand}"
ToolTip="{Binding SendFeedbackToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/Send.png" Height="22" Margin="3,0,3,0" />
</Button>-->
<!--<Button Command="{Binding UpdateBTL_Command}"
ToolTip="{Binding UpdateBTL_ToolTip}"
Visibility="{Binding UpdateBTL_Visibility}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/UpdateBTL.png" Stretch="Uniform"/>
</Button>-->
<!--<Button Command="{Binding ExportProject_Command}"
ToolTip="{Binding ExportProject_ToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/ExportProject.png" Stretch="Uniform"/>
</Button>-->
<!--<Button Command="{Binding ImportProject_Command}"
ToolTip="{Binding ImportProject_ToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/ImportProject.png" Stretch="Uniform"/>
</Button>-->
<!--<Button Command="{Binding GoToProd_Command}"
ToolTip="{Binding GoToProd_ToolTip}"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/GoToprod.png" Stretch="Uniform"/>
</Button>-->
</EgtFloating:EgtFloatingPanel>
@@ -0,0 +1,3 @@
Public Class LayersWallProjManagerV
End Class
File diff suppressed because it is too large Load Diff
@@ -84,35 +84,35 @@
HorizontalAlignment="Right">
<Button Command="{Binding NewRawPart_Command}"
Visibility="{Binding MachiningPage_Visibility}"
ToolTip="{Binding NewRawPart_ToopTip}"
ToolTip="{Binding NewRawPart_ToolTip}"
IsEnabled="{Binding LeftPanel_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/NewRawPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding AddToRawPart_Command}"
Visibility="{Binding MachiningPage_Visibility}"
ToolTip="{Binding AddToRawPart_ToopTip}"
ToolTip="{Binding AddToRawPart_ToolTip}"
IsEnabled="{Binding LeftPanel_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/AddToRawPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding CopyPart_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding CopyPart_ToopTip}"
ToolTip="{Binding CopyPart_ToolTip}"
IsEnabled="{Binding CopyPart_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/CopyPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding AddPart_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding AddPart_ToopTip}"
ToolTip="{Binding AddPart_ToolTip}"
IsEnabled="{Binding LeftPanel_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/AddPart.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding RemovePart_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding RemovePart_ToopTip}"
ToolTip="{Binding RemovePart_ToolTip}"
IsEnabled="{Binding RemovePart_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/RemovePart.png" Stretch="Uniform"/>
@@ -132,28 +132,28 @@
HorizontalAlignment="Right">
<Button Command="{Binding CopyFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding CopyFeature_ToopTip}"
ToolTip="{Binding CopyFeature_ToolTip}"
IsEnabled="{Binding CopyFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/CopyFeature.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding MacroFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding MacroFeature_ToopTip}"
ToolTip="{Binding MacroFeature_ToolTip}"
IsEnabled="{Binding MacroFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/MacroFeature.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding AddFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding AddFeature_ToopTip}"
ToolTip="{Binding AddFeature_ToolTip}"
IsEnabled="{Binding AddFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/AddFeature.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding RemoveFeature_Command}"
Visibility="{Binding ViewPage_Visibility}"
ToolTip="{Binding RemoveFeature_ToopTip}"
ToolTip="{Binding RemoveFeature_ToolTip}"
IsEnabled="{Binding RemoveFeature_IsEnabled}"
Style="{StaticResource LeftPanel_Button}">
<Image Source="/Resources/LeftPanel/RemoveFeature.png" Stretch="Uniform"/>
@@ -133,55 +133,55 @@ Public Class LeftPanelVM
End Get
End Property
Public ReadOnly Property NewRawPart_Msg As String
Public ReadOnly Property NewRawPart_ToolTip As String
Get
Return EgtMsg(61903)
End Get
End Property
Public ReadOnly Property AddToRawPart_ToopTip As String
Public ReadOnly Property AddToRawPart_ToolTip As String
Get
Return EgtMsg(61904)
End Get
End Property
Public ReadOnly Property CopyPart_ToopTip As String
Public ReadOnly Property CopyPart_ToolTip As String
Get
Return EgtMsg(61905)
End Get
End Property
Public ReadOnly Property AddPart_ToopTip As String
Public ReadOnly Property AddPart_ToolTip As String
Get
Return EgtMsg(61906)
End Get
End Property
Public ReadOnly Property RemovePart_ToopTip As String
Public ReadOnly Property RemovePart_ToolTip As String
Get
Return EgtMsg(61907)
End Get
End Property
Public ReadOnly Property CopyFeature_ToopTip As String
Public ReadOnly Property CopyFeature_ToolTip As String
Get
Return EgtMsg(61908)
End Get
End Property
Public ReadOnly Property MacroFeature_ToopTip As String
Public ReadOnly Property MacroFeature_ToolTip As String
Get
Return EgtMsg(61909)
End Get
End Property
Public ReadOnly Property AddFeature_ToopTip As String
Public ReadOnly Property AddFeature_ToolTip As String
Get
Return EgtMsg(61910)
End Get
End Property
Public ReadOnly Property RemoveFeature_ToopTip As String
Public ReadOnly Property RemoveFeature_ToolTip As String
Get
Return EgtMsg(61911)
End Get
@@ -364,7 +364,7 @@ Public Class LeftPanelVM
' scrivo dati costruzione grezzo in gruppo di lavorazione
EgtSetInfo(nCurrMachGroup, MGR_RPT_BARLEN, dRawL)
EgtSetInfo(nCurrMachGroup, MGR_RPT_MATERIAL, SelPart.sMATERIAL)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & 1, nPartDuploId & "," & dStartOffset)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & 1, nPartDuploId & "," & DoubleToString(dStartOffset, 3))
Dim BeamMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.GetLastMachGroup()
' eseguo script creazione grezzo
Dim nERR As Integer = 0
@@ -403,10 +403,11 @@ Public Class LeftPanelVM
EgtSetInfo(nCurrMachGroup, MGR_RPT_PANELLEN, dRawL)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PANELWIDTH, dRawW)
EgtSetInfo(nCurrMachGroup, MGR_RPT_MATERIAL, SelPart.sMATERIAL)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & 1, nPartDuploId & "," & dPosX & "," & dPosY & "," & 0 & "," & 0)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & 1,
nPartDuploId & "," & DoubleToString(dPosX, 3) & "," & DoubleToString(dPosY, 3) & ",0,0")
Dim WallMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.MachGroupVMList(Map.refMachGroupPanelVM.MachGroupVMList.Count - 1)
' eseguo script creazione grezzo
If Not ExecWall(sLogPath, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdTypes.RAWPART, False) Then
If Not ExecWall(sLogPath, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdTypes.RAWPART, False, False) Then
' elimino duplo e gruppo di lavorazione
EgtErase(nPartDuploId)
WallMachGroup.DeleteMachGroup()
@@ -40,11 +40,11 @@ Public Class MyMachGroupVM
NotifyPropertyChanged(NameOf(SelPart))
End Sub
Public Property sL As Double
Public Property sL As String
Get
Return LenToString(MyMachGroupM.dL, 3)
End Get
Set(value As Double)
Set(value As String)
Dim dValue As Double
If StringToLen(value, dValue) Then
Dim nRawPartId As Integer = EgtGetFirstRawPart()
@@ -134,11 +134,11 @@ Public Class MyMachGroupVM
End Set
End Property
Public Property sW As Double
Public Property sW As String
Get
Return LenToString(MyMachGroupM.dW, 3)
End Get
Set(value As Double)
Set(value As String)
Dim dValue As Double
If StringToLen(value, dValue) Then
If nType = BWType.WALL Then
@@ -205,11 +205,11 @@ Public Class MyMachGroupVM
End Set
End Property
Public Property sH As Double
Public Property sH As String
Get
Return LenToString(MyMachGroupM.dH, 3)
End Get
Set(value As Double)
Set(value As String)
Dim dValue As Double
If StringToLen(value, dValue) Then
MyMachGroupM.dH = value
@@ -217,6 +217,27 @@ Public Class MyMachGroupVM
End Set
End Property
Private m_bSearchFound As Boolean
Public ReadOnly Property bSearchFound As Boolean
Get
Return m_bSearchFound
End Get
End Property
Friend Sub SetSearchFound()
m_bSearchFound = True
NotifyPropertyChanged(NameOf(Search_Background))
End Sub
Friend Sub ResetSearchFound()
m_bSearchFound = False
NotifyPropertyChanged(NameOf(Search_Background))
End Sub
Public ReadOnly Property Search_Background As SolidColorBrush
Get
Return If(m_bSearchFound, Brushes.Gold, Brushes.Transparent)
End Get
End Property
#End Region ' General
#Region "Beam"
@@ -338,20 +359,30 @@ Public Class MyMachGroupVM
BeamWallMachGroup.UpdateUsage()
Core.ViewPanelVM.BWSetView(VT.ISO_SW, False)
Next
' se pareti
Else
Dim sPartArray(m_PartVMList.Count - 1) As String
' ciclo per salvare in un array di stringhe i valori di POSX e POSY prima di resettare
Dim ind As Integer = 0
For Each Part In m_PartVMList
sPartArray(ind) = Part.sPOSX & "," & Part.sPOSY & "," & 0 & "," & 0
ind += 1
Next
EgtResetCurrMachGroup()
' recupero lista dei pezzi BTL originali
Dim CopyPartList As New List(Of CopyPart)
Dim PartList As New List(Of BTLPartVM)
For Each Part In m_PartVMList
PartList.Add(BTLPartVM.RetrieveBTLPartFromPart(Part.nPartId))
For Each Part As PartVM In m_PartVMList
Dim BTLPartVM As BTLPartVM = BTLPartVM.RetrieveBTLPartFromPart(Part.nPartId)
CopyPartList.Add(New CopyPart(BTLPartVM, Part.sPOSX, Part.sPOSY, Part.dROT, Part.nFLIP))
PartList.Add(BTLPartVM)
Next
'Dim sPartArray(m_PartVMList.Count - 1) As String
'' ciclo per salvare in un array di stringhe i valori di POSX e POSY prima di resettare
'Dim ind As Integer = 0
'For Each Part In m_PartVMList
' sPartArray(ind) = Part.sPOSX & "," & Part.sPOSY & "," & 0 & "," & 0
' ind += 1
'Next
EgtResetCurrMachGroup()
'' recupero lista dei pezzi BTL originali
'Dim PartList As New List(Of BTLPartVM)
'For Each Part In m_PartVMList
' PartList.Add(BTLPartVM.RetrieveBTLPartFromPart(Part.nPartId))
'Next
' verifico che nessun pezzo da copiare abbia raggiunto il numero massimo
If Not VerifyPartCount(PartList, Qty) Then Return Nothing
' creo nuovi gruppi di lavorazione
@@ -367,20 +398,38 @@ Public Class MyMachGroupVM
' scrivo dati costruzione grezzo in gruppo di lavorazione
EgtSetInfo(nCurrMachGroup, MGR_RPT_PANELLEN, dL)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PANELWIDTH, dW)
For Index = 0 To m_PartVMList.Count - 1
For Index = 0 To CopyPartList.Count - 1
Dim CopyPart As CopyPart = CopyPartList(Index)
' creo copia del pezzo
Dim nPartDuploId As Integer = EgtDuploNew(PartList(Index).nPartId)
Dim nPartDuploId As Integer = EgtDuploNew(CopyPart.BTLPart.nPartId)
' elimino valori calcolo dell'originale
MyMachGroupPanelVM.DuploRemoveProjCalc(nPartDuploId)
' lo rendo std
EgtSetMode(nPartDuploId, GDB_MD.STD)
' annullo eventuale inversione del pezzo originale
Dim b3Duplo As New BBox3d
EgtGetBBoxGlob(nPartDuploId, GDB_BB.STANDARD, b3Duplo)
If CopyPart.BTLPart.nINVERTED > 0 Then
EgtRotate(nPartDuploId, b3Duplo.Center(), Vector3d.X_AX, 180, GDB_RT.GLOB)
End If
' calcolo rotazione
Dim dRot As Double = CopyPart.dRot - CopyPart.BTLPart.nROTATED
If dRot <> 0 Then
EgtRotate(nPartDuploId, b3Duplo.Center(), -Vector3d.Z_AX, dRot, GDB_RT.GLOB)
End If
' effettuo eventuale flip
If CopyPart.nFlip > 0 Then
EgtRotate(nPartDuploId, b3Duplo.Center(), Vector3d.X_AX, 180, GDB_RT.GLOB)
End If
EgtSetInfo(nPartDuploId, MGR_PRT_ROT, CopyPart.dRot)
EgtSetInfo(nPartDuploId, MGR_PRT_FLIP, CopyPart.nFlip)
' scrivo dati costruzione grezzo in gruppo di lavorazione
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & (Index + 1), nPartDuploId & "," & sPartArray(Index))
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & (Index + 1), nPartDuploId & "," & CopyPart.sPosX & "," & CopyPart.sPosY & ",0,0")
Next
BeamWallMachGroup = Map.refMachGroupPanelVM.GetLastMachGroup()
' eseguo script creazione grezzo
Dim sLogPath As String = Map.refMainWindowVM.MainWindowM.sTempDir & "\RawPartLog.txt"
If Not ExecWall(sLogPath, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdTypes.RAWPART, False) Then
If Not ExecWall(sLogPath, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdTypes.RAWPART, False, False) Then
BeamWallMachGroup.DeleteMachGroup()
Dim LogFile As String() = File.ReadAllLines(sLogPath)
If LogFile.Count >= 2 AndAlso Not IsNothing(LogFile(1)) Then
@@ -792,3 +841,46 @@ Public Class MyMachGroupVM
#End Region ' EVENTS
End Class
Class CopyPart
Private m_BTLPart As BTLPartVM
Public ReadOnly Property BTLPart As BTLPartVM
Get
Return m_BTLPart
End Get
End Property
Private m_sPosX As Double
Public ReadOnly Property sPosX As Double
Get
Return m_sPosX
End Get
End Property
Private m_sPosY As Double
Public ReadOnly Property sPosY As Double
Get
Return m_sPosY
End Get
End Property
Private m_dRot As Double
Public ReadOnly Property dRot As Double
Get
Return m_dRot
End Get
End Property
Private m_nFlip As Integer
Public ReadOnly Property nFlip As Integer
Get
Return m_nFlip
End Get
End Property
Sub New(BTLPart As BTLPartVM, sPosX As Double, sPosY As Double, dRot As Double, nFlip As Integer)
m_BTLPart = BTLPart
m_sPosX = sPosX
m_sPosY = sPosY
m_dRot = dRot
m_nFlip = nFlip
End Sub
End Class
@@ -23,6 +23,27 @@ Public Class PartVM
End Get
End Property
Private m_bSearchFound As Boolean
Public ReadOnly Property bSearchFound As Boolean
Get
Return m_bSearchFound
End Get
End Property
Friend Sub SetSearchFound()
m_bSearchFound = True
NotifyPropertyChanged(NameOf(Search_Background))
End Sub
Friend Sub ResetSearchFound()
m_bSearchFound = False
NotifyPropertyChanged(NameOf(Search_Background))
End Sub
Public ReadOnly Property Search_Background As SolidColorBrush
Get
Return If(m_bSearchFound, Brushes.Gold, Brushes.Transparent)
End Get
End Property
#End Region ' General
#Region "Beam"
@@ -12,6 +12,10 @@
<RadioButton Content="{Binding Optimizer_Msg}"
IsChecked="{Binding Machining_IsChecked}"
Style="{StaticResource MainMenu_ToggleButton}"/>
<RadioButton Content="{Binding LayersWall_Msg}"
IsChecked="{Binding LayersWall_IsChecked}"
Style="{StaticResource MainMenu_ToggleButton}"
Visibility="{Binding LayersWall_Visibility}"/>
<Button Content="{Binding Supervisor_Msg}"
Command="{Binding Supervisor_Command}"
Visibility="{Binding Supervisor_Visibility}"
@@ -61,6 +61,21 @@ Public Class MainMenuVM
End Set
End Property
Public Property LayersWall_IsChecked As Boolean
Get
Return m_SelPage = Pages.LAYERSWALL
End Get
Set(value As Boolean)
If value Then
'If Not IsNothing(Map.refProjManagerVM.CurrProj) AndAlso Not IsNothing(Map.refProdManagerVM.CurrProd) AndAlso
' Map.refProjManagerVM.CurrProj.nProdId = Map.refProdManagerVM.CurrProd.nProdId Then
' Map.refProdManagerVM.CurrProd.SetReloadProject(False)
'End If
SelPage = Pages.LAYERSWALL
End If
End Set
End Property
Public Property Supervisor_IsChecked As Boolean
Get
Return m_SelPage = Pages.SUPERVISOR
@@ -79,6 +94,13 @@ Public Class MainMenuVM
End Set
End Property
'Private m_LayersWall_Visibility As Visibility
Public ReadOnly Property LayersWall_Visibility As Visibility
Get
Return Map.refMainWindowVM.MainWindowM.nUserLevel > 5 ' m_LayersWall_Visibility
End Get
End Property
Private m_Supervisor_Visibility As Visibility
Public ReadOnly Property Supervisor_Visibility As Visibility
Get
@@ -106,6 +128,8 @@ Public Class MainMenuVM
bOk = ExitVIEW(bVerifyModification)
Case Pages.MACHINING
bOk = ExitMACHINING(bVerifyModification)
Case Pages.LAYERSWALL
bOk = ExitLAYERSWALL(bVerifyModification)
Case Pages.CONFIG
bOk = ExitCONFIG()
End Select
@@ -121,6 +145,10 @@ Public Class MainMenuVM
' Map.refMachGroupPanelVM.SetMachGroupState(True)
InitMACHINING()
'Map.refTopCommandBarVM.IsEnabled = True
Case Pages.LAYERSWALL
' Map.refMachGroupPanelVM.SetMachGroupState(True)
InitLAYERSWALL()
'Map.refTopCommandBarVM.IsEnabled = True
Case Pages.CONFIG
InitCONFIG()
'Map.refMachGroupPanelVM.SetMachGroupState(False)
@@ -131,6 +159,7 @@ Public Class MainMenuVM
' aggiorno visualizzazione RadioButton
NotifyPropertyChanged("View_IsChecked")
NotifyPropertyChanged("Machining_IsChecked")
NotifyPropertyChanged("LayersWall_IsChecked")
NotifyPropertyChanged("Supervisor_IsChecked")
NotifyPropertyChanged("Config_IsChecked")
Map.refProjectVM.NotifyPropertyChanged("SelItem")
@@ -150,6 +179,12 @@ Public Class MainMenuVM
End Get
End Property
Public ReadOnly Property LayersWall_Msg As String
Get
Return "LayersWall" 'EgtMsg(61831)
End Get
End Property
Public ReadOnly Property Configuration_Msg As String
Get
Return EgtMsg(61832)
@@ -210,14 +245,19 @@ Public Class MainMenuVM
Private Function InitVIEW() As Boolean
Map.refProjectVM.SetBottomPanel_Visibility(True)
Map.refProjectVM.SetLeftPanel_Visibility(True)
Map.refProjectVM.SetLayersWallLeftPanel_Visibility(False)
Map.refProjectVM.SetLayersWallBottomPanel_Visibility(False)
Map.refLeftPanelVM.UpdateView()
Map.refProjectVM.SetPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallPartPartManager_Visibility(False)
Map.refProjectVM.SetFeatureManager_Visibility(True)
Map.refProjectVM.SetTopPanel_Visibility(False)
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
Map.refProjectVM.SetProjManager_Visibility(True)
Map.refProjectVM.SetProdManager_Visibility(False)
Map.refProjectVM.SetOptimizePanel_Visibility(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO))
Map.refProjectVM.SetLayersWallProjManager_Visibility(False)
Map.refProjectVM.NotifyAllPanelVisibility()
Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(True)
If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
@@ -283,6 +323,7 @@ Public Class MainMenuVM
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeParam_Visibility))
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeMaterial_Visibility))
Return True
End Function
@@ -297,13 +338,18 @@ Public Class MainMenuVM
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
Map.refProjectVM.SetBottomPanel_Visibility(False)
Map.refProjectVM.SetLeftPanel_Visibility(True)
Map.refProjectVM.SetLayersWallLeftPanel_Visibility(False)
Map.refProjectVM.SetLayersWallBottomPanel_Visibility(False)
Map.refProjectVM.SetPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallPartPartManager_Visibility(False)
Map.refProjectVM.SetFeatureManager_Visibility(False)
Map.refProjectVM.SetTopPanel_Visibility(True)
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
Map.refProjectVM.SetProjManager_Visibility(False)
Map.refProjectVM.SetProdManager_Visibility(True)
Map.refProjectVM.SetOptimizePanel_Visibility(True)
Map.refProjectVM.SetLayersWallProjManager_Visibility(False)
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
Return True
End Function
@@ -369,23 +415,32 @@ Public Class MainMenuVM
Map.refProjectVM.BTLStructureVM = Nothing
Map.refProjectVM.MachGroupPanelVM = Nothing
End If
' aggiorno lista possibili nesting
Map.refOptimizePanelVM.UpdateOriginTypeList(EgtGetFirstNameInGroup(GDB_ID.ROOT, "RawParts") <> GDB_ID.NULL)
' aggiorno visibilita' degli elementi grafici
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeParam_Visibility))
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeMaterial_Visibility))
Map.refTopPanelVM.NotifyPropertyChanged(NameOf(Map.refTopPanelVM.MovePart_Visibility))
' aggiorno visibilita' degli elementi grafici
Map.refProjectVM.SetBottomPanel_Visibility(False)
Map.refProjectVM.SetLeftPanel_Visibility(True)
Map.refProjectVM.SetLayersWallLeftPanel_Visibility(False)
Map.refProjectVM.SetLayersWallBottomPanel_Visibility(False)
Map.refLeftPanelVM.UpdateView()
Map.refProjectVM.SetPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallPartPartManager_Visibility(False)
Map.refProjectVM.SetFeatureManager_Visibility(False)
Map.refProjectVM.SetTopPanel_Visibility(True)
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
Map.refProjectVM.SetProjManager_Visibility(False)
Map.refProjectVM.SetProdManager_Visibility(True)
Map.refProjectVM.SetLayersWallProjManager_Visibility(False)
Map.refProjectVM.NotifyAllPanelVisibility()
Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(False)
Map.refTopPanelVM.UpdateQParameterVisibility()
Map.refTopPanelVM.UpdateMovePartInRawPartVisibility()
' aggiorno la visibilità delle colonne
For Each col In Map.refFeatureListVM.FeatureColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
@@ -420,18 +475,135 @@ Public Class MainMenuVM
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
Map.refProjectVM.SetBottomPanel_Visibility(True)
Map.refProjectVM.SetLeftPanel_Visibility(False)
Map.refProjectVM.SetLayersWallLeftPanel_Visibility(False)
Map.refProjectVM.SetLayersWallBottomPanel_Visibility(False)
Map.refProjectVM.SetPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallPartPartManager_Visibility(False)
Map.refProjectVM.SetFeatureManager_Visibility(True)
Map.refProjectVM.SetTopPanel_Visibility(False)
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
Map.refProjectVM.SetProjManager_Visibility(True)
Map.refProjectVM.SetProdManager_Visibility(False)
Map.refProjectVM.SetLayersWallProjManager_Visibility(False)
Map.refProjectVM.SetOptimizePanel_Visibility(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO))
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
EgtResetCurrMachGroup()
Return True
End Function
Private Function InitLAYERSWALL() As Boolean
Map.refProjectVM.SetBottomPanel_Visibility(False)
Map.refProjectVM.SetLeftPanel_Visibility(False)
Map.refProjectVM.SetLayersWallLeftPanel_Visibility(True)
Map.refProjectVM.SetLayersWallBottomPanel_Visibility(True)
Map.refLeftPanelVM.UpdateView()
Map.refProjectVM.SetPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallPartPartManager_Visibility(False)
Map.refProjectVM.SetFeatureManager_Visibility(True)
Map.refProjectVM.SetTopPanel_Visibility(False)
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
Map.refProjectVM.SetProjManager_Visibility(False)
Map.refProjectVM.SetProdManager_Visibility(False)
Map.refProjectVM.SetOptimizePanel_Visibility(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO))
Map.refProjectVM.SetLayersWallProjManager_Visibility(True)
Map.refProjectVM.NotifyAllPanelVisibility()
Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(True)
If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Visible
End If
' aggiorno la visibilità delle colonne
For Each col In Map.refFeatureListVM.FeatureColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
For Each col In Map.refPartListVM.PartColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
For Each col In Map.refStatisticsVM.StatisticsColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
For Each col In Map.refPParameterListVM.PParameterListColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
For Each col In Map.refQParameterListVM.QParameterListColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
' imposto dimensioni colonne/righe della Grid
DimensionsIniFile.ReadGridDimensions(ConstDims.PROJECT_VIEW, Map.refProjectVM.GridDims)
DimensionsIniFile.ReadGridDimensions(ConstDims.LEFTPANEL_VIEW, Map.refLeftPanelVM.GridDims)
'' apro progetto proj
'If Not IsNothing(Map.refProjManagerVM.CurrProj) Then
' If Map.refProjManagerVM.CurrProj.bReloadProject Then
' LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROJ, 2, EgtMsg(63005), 10, 100) ' Loading parts
' Map.refProjManagerVM.OpenProject(Map.refProjManagerVM.CurrProj)
' ' aggiorno le colonne in base al tipo progetto
' If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
' Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
' Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE <> BWType.BEAM)
' Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
' Else
' Map.refRawPartListVM.UpdateColumns(BWType.BEAM)
' Map.refTopPanelVM.ManageQParamsRowVisibility(BWType.BEAM)
' Map.refPartInRawPartListVM.UpdateColumns(BWType.BEAM)
' End If
' DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True)
' Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
' Else
' LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROJ, 2, EgtMsg(63005), 10, 100) ' Loading parts
' ' verifico se il prod di provenienza ha piu' proj
' If Not IsNothing(Map.refProdManagerVM.CurrProd) AndAlso Map.refProdManagerVM.CurrProd.nProjIdList.Count > 1 Then
' ' se si rigenero BTLStructure
' Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(Map.refProjManagerVM.CurrProj.nProjId))
' ' carico filtri di ricerca
' Map.refProjectVM.BTLStructureVM.LoadFilters()
' End If
' ' mostro tutti i pezzi
' Map.refShowBeamPanelVM.ShowAll(True)
' Map.refProjManagerVM.CurrProj.SetReloadProject(True)
' End If
' ' aggiorno titolo
' Map.refMainWindowVM.UpdateTitle()
' DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True)
'Else
Map.refSceneHostVM.MainController.NewProject()
Map.refProjectVM.BTLStructureVM = Nothing
Map.refProjectVM.MachGroupPanelVM = Nothing
'End If
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeParam_Visibility))
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeMaterial_Visibility))
Return True
End Function
Private Function ExitLAYERSWALL(bVerifyModification As Boolean) As Boolean
' verifico se progetto modificato, e chiedo se salvare
If bVerifyModification Then
If Not ProjFileVM.VerifyProjectModification(Map.refProjManagerVM.CurrProj, ProjectType.PROJ) Then
Return False
End If
End If
' resetto eventuale visualizzazione statistiche
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
Map.refProjectVM.SetBottomPanel_Visibility(True)
Map.refProjectVM.SetLeftPanel_Visibility(True)
Map.refProjectVM.SetLayersWallLeftPanel_Visibility(True)
Map.refProjectVM.SetLayersWallBottomPanel_Visibility(True)
Map.refProjectVM.SetPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallLayerPartManager_Visibility(False)
Map.refProjectVM.SetLayersWallPartPartManager_Visibility(False)
Map.refProjectVM.SetFeatureManager_Visibility(False)
Map.refProjectVM.SetTopPanel_Visibility(True)
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
Map.refProjectVM.SetProjManager_Visibility(False)
Map.refProjectVM.SetProdManager_Visibility(True)
Map.refProjectVM.SetOptimizePanel_Visibility(True)
Map.refProjectVM.SetLayersWallProjManager_Visibility(False)
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
Return True
End Function
Private Function InitCONFIG() As Boolean
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
@@ -448,7 +620,7 @@ Public Class MainMenuVM
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Else
Map.refRawPartListVM.UpdateColumns(BWType.BEAM)
Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE <> BWType.BEAM)
Map.refTopPanelVM.ManageQParamsRowVisibility(BWType.BEAM)
Map.refPartInRawPartListVM.UpdateColumns(BWType.BEAM)
End If
Return True
@@ -18,6 +18,13 @@ Public Class MainWindowM
End Get
End Property
Private m_sDataDir As String = String.Empty
Friend ReadOnly Property sDataDir As String
Get
Return m_sDataDir
End Get
End Property
Private m_sConfigDir As String = String.Empty
Public ReadOnly Property sConfigDir As String
Get
@@ -131,24 +138,24 @@ Public Class MainWindowM
Friend ReadOnly Property sProjsDir As String
Get
Return m_sDataRoot & "\" & PROJS_DIR
Return m_sDataDir & "\" & PROJS_DIR
End Get
End Property
Friend ReadOnly Property sProdsDir As String
Get
Return m_sDataRoot & "\" & PRODS_DIR
Return m_sDataDir & "\" & PRODS_DIR
End Get
End Property
Friend ReadOnly Property sMacroDir As String
Get
Return m_sDataRoot & "\" & MACRO_DIR
Return m_sDataDir & "\" & MACRO_DIR
End Get
End Property
Friend ReadOnly Property sWarehouseDir As String
Get
Return m_sDataRoot & "\" & WAREHOUSE_DIR
Return m_sDataDir & "\" & WAREHOUSE_DIR
End Get
End Property
@@ -201,7 +208,10 @@ Public Class MainWindowM
If GetMainPrivateProfileString(S_WALL, K_WALLBASEDIR, "", m_sWallRoot) = 0 Then
m_sWallRoot = m_sDataRoot & "\" & WALL_DIR
End If
m_sWarehouseRoot = m_sDataRoot & "\" & WAREHOUSE_DIR
If GetMainPrivateProfileString(S_GENERAL, K_DATADIR, "", m_sDataDir) = 0 Then
m_sDataDir = m_sDataRoot
End If
m_sWarehouseRoot = m_sDataDir & "\" & WAREHOUSE_DIR
' imposto cartelle dei progetti
Core.ProjectFileVM.Init(sProjsDir, sProdsDir)
' Verifico indice di istanza
@@ -41,7 +41,7 @@ Public Class MainWindowVM
' proprietà che seleziona la giusta pagina del TabControl
Public Property nSelTabPage As Integer
Get
Return If(IsNothing(Map.refMainMenuVM.SelPage) OrElse Map.refMainMenuVM.SelPage = -1 OrElse Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.MACHINING, 0, 1)
Return If(IsNothing(Map.refMainMenuVM.SelPage) OrElse Map.refMainMenuVM.SelPage = -1 OrElse Map.refMainMenuVM.SelPage = Pages.VIEW OrElse Map.refMainMenuVM.SelPage = Pages.MACHINING OrElse Map.refMainMenuVM.SelPage = Pages.LAYERSWALL, 0, 1)
End Get
Set(value As Integer)
End Set
@@ -0,0 +1,87 @@
<EgtWPFLib5:EgtCustomWindow x:Class="MovePartInRawPartWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.ViewerOptimizer"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterOwner"
IsClosable="False"
IsMinimizable="False"
IsResizable="False"
Title="MovePartInRawPartWndV">
<Grid Margin="5,5,5,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid HorizontalAlignment="Center"
Margin="0,0,0,5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding MoveDirMsg}"
Style="{StaticResource OptionTextBlock}"
Grid.ColumnSpan="2"
Margin="0,5"/>
<RadioButton IsChecked="{Binding LeftIsChecked}"
Style="{StaticResource ToolBar_ToggleButton}"
Grid.Row="1" Grid.Column="0">
<Image Source="/Resources/MovePartInRawPart/MoveLeftParts.png" Stretch="Uniform"/>
</RadioButton>
<RadioButton IsChecked="{Binding RightIsChecked}"
Style="{StaticResource ToolBar_ToggleButton}"
Grid.Row="1" Grid.Column="1">
<Image Source="/Resources/MovePartInRawPart/MoveRightParts.png" Stretch="Uniform"/>
</RadioButton>
</Grid>
<Grid Grid.Row="1"
Margin="0,0,0,5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding MoveLenMsg}"
Style="{StaticResource OptionTextBlock}"
HorizontalAlignment="Center"
Margin="0,5"/>
<EgtWPFLib5:EgtTextBox Text="{Binding sMoveLen}"
Grid.Row="1"
Width="200"/>
</Grid>
<Grid Grid.Row="3"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Content="Ok"
Command="{Binding Ok_Command}"
IsDefault="True"
Grid.Column="1"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
<Button Content="Cancel"
IsCancel="True"
Grid.Column="3"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
</Grid>
</Grid>
</EgtWPFLib5:EgtCustomWindow>
@@ -0,0 +1,18 @@
Public Class MovePartInRawPartWndV
Private WithEvents m_MovePartInRawPartWndVM As MovePartInRawPartWndVM
Sub New(Owner As Window, MovePartInRawPartWndVM As MovePartInRawPartWndVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = MovePartInRawPartWndVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_MovePartInRawPartWndVM = MovePartInRawPartWndVM
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_MovePartInRawPartWndVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
@@ -0,0 +1,159 @@
Imports EgtWPFLib5
Imports EgtUILib
Public Class MovePartInRawPartWndVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend Event m_CloseWindow(bDialogResult As Boolean)
Private m_dMoveLen As Double
Public ReadOnly Property dMoveLen As Double
Get
Return m_dMoveLen
End Get
End Property
Public Property sMoveLen As String
Get
Return LenToString(m_dMoveLen, 3)
End Get
Set(value As String)
Dim dTempMoveLen As Double
If StringToLen(value, dTempMoveLen) AndAlso dTempMoveLen > 0 Then
m_dMoveLen = dTempMoveLen
Else
m_dMoveLen = 0
NotifyPropertyChanged(NameOf(sMoveLen))
End If
End Set
End Property
Private m_LeftIsChecked As Boolean
Public Property LeftIsChecked As Boolean
Get
Return m_LeftIsChecked
End Get
Set(value As Boolean)
If value <> m_LeftIsChecked Then
m_LeftIsChecked = value
End If
End Set
End Property
Private m_RightIsChecked As Boolean
Public Property RightIsChecked As Boolean
Get
Return m_RightIsChecked
End Get
Set(value As Boolean)
If value <> m_RightIsChecked Then
m_RightIsChecked = value
End If
End Set
End Property
' Definizione comandi
Private m_cmdOk As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "MESSAGES"
Public ReadOnly Property MoveDirMsg As String
Get
Return EgtMsg(61945)
End Get
End Property
Public ReadOnly Property MoveLenMsg As String
Get
Return EgtMsg(61946)
End Get
End Property
#End Region ' MESSAGES
#Region "CONSTRUCTOR"
Sub New()
' setto il bottone Left a premuto
LeftIsChecked = True
End Sub
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "Ok"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
Public Sub Ok()
' verifico che il campo dello spostamento abbia un valore valido
If Not IsNothing(m_dMoveLen) AndAlso m_dMoveLen > 0 Then
' calcolo BBox dell'outline del grezzo
Dim b3RawPart As New BBox3d
Dim nRawId As Integer = Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.MyMachGroupM.nRawPartId
Dim nRawOutlineId As Integer = EgtGetFirstNameInGroup(nRawId, RAWOUTLINE)
EgtGetBBoxGlob(nRawOutlineId, GDB_BB.STANDARD, b3RawPart)
' calcolo BBox globale dei pezzi aggiunti al grezzo
Dim b3Parts As New BBox3d
For Each Part In Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.PartVMList
Dim b3Part As New BBox3d
' leggo outline del pezzo
Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(Part.nPartId, Core.ConstBeam.OUTLINE)
Dim nOutlineId As Integer = EgtGetFirstNameInGroup(nOutlineLayerId, "ON_TMP")
' se ON_TMP è stato trovato (il primo trovato equivale al percorso più grande) ricavo BBox di quello altrimenti ricavo BBox del pezzo
Dim nId As Integer = 0
If nOutlineId <> GDB_ID.NULL Then
nId = nOutlineId
Else
nId = Part.nPartId
End If
EgtGetBBoxGlob(nId, GDB_BB.STANDARD, b3Part)
b3Parts.Add(b3Part)
Next
' ricavo coordinate minime e massime sull'asse X dei BBox del grezzo e dei pezzi
Dim dRawPartMinL As Double = b3RawPart.Min.x
Dim dRawPartMaxL As Double = b3RawPart.Max.x
Dim dPartsMinL As Double = b3Parts.Min.x
Dim dPartsMaxL As Double = b3Parts.Max.x
' ricavo il vettore di spostamento
Dim vtMove As Vector3d = New Vector3d(If(LeftIsChecked, dMoveLen, -dMoveLen), 0, 0)
' verifico che i pezzi venendo mossi non escano dal box
If dPartsMinL + vtMove.x > dRawPartMinL And dPartsMaxL + vtMove.x < dRawPartMaxL Then
' muovo i pezzi di quanto possibile
If vtMove.SqLen() > EPS_SMALL * EPS_SMALL Then
' muovo tutti i pezzi della lista
For Each Part In Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.PartVMList
EgtMovePartInRawPart(Part.nPartId, vtMove)
' aggiorno valori nella tabella
Part.NotifyPropertyChanged(NameOf(PartVM.dPOSX))
Part.NotifyPropertyChanged(NameOf(PartVM.sPOSX))
Part.NotifyPropertyChanged(NameOf(PartVM.dPOSY))
Part.NotifyPropertyChanged(NameOf(PartVM.sPOSY))
EgtZoom(ZM.ALL)
Next
End If
RaiseEvent m_CloseWindow(True)
Else
MessageBox.Show(EgtMsg(61947), EgtMsg(30007))
End If
Else
MessageBox.Show(EgtMsg(61948), EgtMsg(30007))
End If
End Sub
#End Region ' Ok
#End Region ' COMMANDS
End Class
@@ -70,5 +70,5 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.4.3.1")>
<Assembly: AssemblyFileVersion("2.4.3.1")>
<Assembly: AssemblyVersion("2.4.3.2")>
<Assembly: AssemblyFileVersion("2.4.3.2")>
@@ -309,6 +309,9 @@ Public Class NestingRunningWndVM
' calcolo nesting
For m_SectionIndex = 0 To m_SectionProgressList.Count - 1
Dim SectionProgress As SectionProgress = m_SectionProgressList(m_SectionIndex)
If Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL Then
dOffset = WarehouseHelper.GetWallOffsetByWidth(SectionProgress.Section.dH)
End If
' passo a lua lista id pezzi da nestare
If SectionProgress.SectionPartList.Count > 0 AndAlso SectionProgress.SParamList.Count > 0 AndAlso
Not ExecNesting(sLogPath, CurrentMachine.sMachineName, SectionProgress.SectionPartList, SectionProgress.SParamList, dStartOffset, dOffset, dKerf, m_bLDIntersOther, m_nMinScore, SectionProgress.dCalcNestTime) Then
@@ -371,14 +374,9 @@ Public Class NestingRunningWndVM
nPartPlaceHolderId = EgtGetNext(nPartPlaceHolderId)
Continue While
End If
Dim frPlaceHolderGlob As New Frame3d
EgtGetGroupGlobFrame(nPartPlaceHolderId, frPlaceHolderGlob)
Dim p3Origin As Point3d = frPlaceHolderGlob.Orig - frRawFrame.Orig + Point3d.ORIG
Dim frPart As New Frame3d
Dim frPlaceHolder As New Frame3d
EgtFrame(nPartPlaceHolderId, nRawPartId, frPlaceHolder)
EgtGetGroupGlobFrame(nSourceId, frPart)
'frPlaceHolderGlob.ToLoc(frPart)
Dim p3Origin As Point3d = New Point3d( frPlaceHolder.Orig.x, frPlaceHolder.Orig.z, 0)
' creo duplo del pezzo
Dim nPartDuploId As Integer = EgtDuploNew(nSourceId)
' elimino valori calcolo dell'originale
@@ -413,6 +411,8 @@ Public Class NestingRunningWndVM
Dim dFlip As Double = 0
Dim dPosX As Double = NestPart.p3Orig.x
Dim dPosY As Double = NestPart.p3Orig.y
Dim b3Duplo As New BBox3d
EgtGetBBoxGlob(NestPart.nPartDuploId, GDB_BB.STANDARD, b3Duplo)
' calcolo rot ed invert da frame
If Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM Then
If AreSameVectorApprox(NestPart.frFrame.VersX, Vector3d.X_AX) Then
@@ -427,30 +427,30 @@ Public Class NestingRunningWndVM
Continue For
End If
' faccio rotazioni
Dim b3Duplo As New BBox3d
EgtGetBBoxGlob(NestPart.nPartDuploId, GDB_BB.STANDARD, b3Duplo)
EgtRotate(NestPart.nPartDuploId, b3Duplo.Center, Vector3d.X_AX, dRot)
EgtRotate(NestPart.nPartDuploId, b3Duplo.Center, Vector3d.Z_AX, dFlip)
ElseIf Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL Then
If AreSameVectorApprox(NestPart.frFrame.VersZ, Vector3d.Z_AX) Then
dFlip = 0
dRot = GetAngle(NestPart.frFrame.VersX, Vector3d.X_AX)
ElseIf AreSameVectorApprox(NestPart.frFrame.VersZ, -Vector3d.Z_AX) Then
If NestPart.frFrame.GetEgtType() = Frame3d.TYPE.TOP Then
dFlip = 180
dRot = -GetAngle(NestPart.frFrame.VersX, Vector3d.X_AX)
dRot = 180
dPosX = b3Box.DimX() - b3Duplo.DimX() - dPosX
ElseIf AreSameVectorApprox(NestPart.frFrame.VersX, -Vector3d.X_AX) AndAlso AreSameVectorApprox(NestPart.frFrame.VersY, Vector3d.Y_AX) Then
dFlip = 180
dRot = 0
dPosX = b3Box.DimX() - dPosX
dPosY -= b3Duplo.DimY()
Else
' errore, la parete deve stare nel piano del grezzo
EgtOutLog(String.Format("Errore in BTL nesting, pezzo {0} non giace nel piano XY ({1})", NestPart.nPartDuploId, NestPart.frFrame.VersZ))
Continue For
End If
' faccio rotazioni
Dim b3Duplo As New BBox3d
EgtGetBBoxGlob(NestPart.nPartDuploId, GDB_BB.STANDARD, b3Duplo)
EgtRotate(NestPart.nPartDuploId, b3Duplo.Center, -Vector3d.Z_AX, dRot)
EgtRotate(NestPart.nPartDuploId, b3Duplo.Center, Vector3d.X_AX, dFlip)
End If
nPartIndex += 1
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & nPartIndex, NestPart.nPartDuploId & "," & dPosX & "," & dPosY & "," & 0 & "," & 0)
EgtSetInfo(nCurrMachGroup, MGR_RPT_PART & nPartIndex,
NestPart.nPartDuploId & "," & DoubleToString(dPosX, 3) & "," & DoubleToString(dPosY,3) & ",0,0")
' scrivo dati pezzo
EgtSetInfo(NestPart.nPartDuploId, MGR_PRT_POSX, dPosX)
EgtSetInfo(NestPart.nPartDuploId, MGR_PRT_POSY, dPosY)
@@ -460,7 +460,7 @@ Public Class NestingRunningWndVM
' scrivo info per segnalare gruppo nestato e quindi da caricare in grafica
EgtSetInfo(nCurrMachGroup, "UPDATEUI", 1)
' eseguo script creazione grezzo
If Not ExecWall(sLogPath, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdTypes.RAWPART, False) Then
If Not ExecWall(sLogPath, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdTypes.RAWPART, False, True) Then
' elimino duplo e gruppo di lavorazione
For Each Duplo In PartList
EgtErase(Duplo.nPartDuploId)
@@ -21,13 +21,13 @@ Public Class OpenProjectFileDialogVM
' leggo da db
If ProjectType = ProjectType.PROJ Then
Dim DbProjectList As New List(Of ProjFileM)
DbProjectList = DbControllers.m_ProjController.GetLastDesc(50)
DbProjectList = DbControllers.m_ProjController.GetLastDesc(5000)
For Each Project In DbProjectList
m_ProjectList.Add(New ProjFileVM(Project))
Next
ElseIf ProjectType = ProjectType.PROD Then
Dim DbProjectList As New List(Of ProdFileM)
DbProjectList = DbControllers.m_ProdController.GetLastDesc(50)
DbProjectList = DbControllers.m_ProdController.GetLastDesc(5000)
If GoToProd Then
For Each Project In DbProjectList
If Project.sMachine = Map.refProjManagerVM.CurrProj.sMachine AndAlso
@@ -17,7 +17,7 @@
Height="22"
Width="85"
Margin="2.5,0,5,0"
Visibility="{Binding Optimize_Visibility}"/>
Visibility="{Binding OriginType_Visibility}"/>
<CheckBox Content="{Binding LongDrillArea_Msg}"
IsChecked="{Binding bLDIntersOther}"
FlowDirection="RightToLeft"
@@ -119,6 +119,12 @@ Public Class OptimizePanelVM
End Get
End Property
Public ReadOnly Property OriginType_Visibility As Visibility
Get
Return If(Optimize_Visibility = Visibility.Visible AndAlso OriginTypeList.Count > 1, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Public ReadOnly Property ViewPage_Visibility As Visibility
Get
Return If(Map.refMainMenuVM.SelPage = Pages.VIEW, Visibility.Visible, Visibility.Collapsed)
@@ -256,6 +262,20 @@ Public Class OptimizePanelVM
m_bNestingRunning = False
End Sub
Friend Sub UpdateOriginTypeList(bFromBtl As Boolean)
m_OriginTypeList = New List(Of IdNameStruct)
If Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso
(Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM OrElse (Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL And Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO))) Then
m_OriginTypeList.Add(New IdNameStruct(OriginType.STANDARD, EgtMsg(61964)))
End If
If bFromBtl Then
m_OriginTypeList.Add(New IdNameStruct(OriginType.FROM_BTL, EgtMsg(61965)))
End If
NotifyPropertyChanged(NameOf(OriginTypeList))
NotifyPropertyChanged(NameOf(OriginType_Visibility))
NotifyPropertyChanged(NameOf(SelOriginType))
End Sub
#End Region ' METHODS
#Region "COMMANDS"
@@ -301,6 +301,12 @@ Public Class ProdManagerVM
Map.refSceneHostVM.MainController.NewProject()
Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL")
End If
' aggiorno lista possibili nesting
Map.refOptimizePanelVM.UpdateOriginTypeList(EgtGetFirstNameInGroup(GDB_ID.ROOT, "RawParts") <> GDB_ID.NULL)
' aggiorno visibilità bottone Muovi pezzi
Map.refTopPanelVM.UpdateMovePartInRawPartVisibility()
' resetto eventuale visualizzazione statistiche
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
' aggiorno titolo
Map.refMainWindowVM.UpdateTitle()
NotifyPropertyChanged(NameOf(MruFileNames))
@@ -10,6 +10,9 @@ Public Class ProjManagerVM
#Region "FIELDS & PROPERTIES"
' Nome file NGE con i pezzi selezionati per effettuare UpdateBTL
Friend Const UPDATEBTL_NGE As String = "UpdateBTL.nge"
Private m_ProjManager_IsEnabled As Boolean = True
Public ReadOnly Property ProjManager_IsEnabled As Boolean
Get
@@ -288,6 +291,22 @@ Public Class ProjManagerVM
NotifyPropertyChanged(NameOf(ProjManager_IsEnabled))
End Sub
Private Sub ReloadBTLStructure()
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(Map.refProjManagerVM.CurrProj.nProjId))
' verifico se volume pezzi calcolato
Dim bIsCalculated As Boolean = False
For Each BTLPart In Map.refProjectVM.BTLStructureVM.BTLPartVMList
If BTLPart.BTLPartM.dVolume > 0 Then Continue For
bIsCalculated = True
BTLPart.CalcBTLPartVolume()
Next
If bIsCalculated Then
Dim CurrProject As String = ""
EgtGetCurrFilePath(CurrProject)
EgtSaveFile(CurrProject, NGE.CMPTEXT)
End If
End Sub
#End Region ' METHODS
#Region "COMMANDS"
@@ -317,7 +336,7 @@ Public Class ProjManagerVM
Dim Machine As Machine = Nothing
Dim nType As BWType = BWType.NULL
Dim ProjectTypeWndVM As New ProjectTypeWndVM()
If ProjectTypeWndVM.MachineList.Count = 1 And DirectCast(ProjectTypeWndVM.SelMachine, MyMachine).nType <> MachineType.BOTH Then
If ProjectTypeWndVM.MachineList.Count = 1 AndAlso DirectCast(ProjectTypeWndVM.SelMachine, MyMachine).nType <> MachineType.BOTH Then
Machine = ProjectTypeWndVM.SelMachine
nType = DirectCast(Machine, MyMachine).nType
Else
@@ -805,81 +824,402 @@ Public Class ProjManagerVM
' creo un nuovo contesto su cui aprire il file BTL
Dim nCurrCtx As Integer = EgtGetCurrentContext()
Dim nTempCtx As Integer = EgtInitContext()
' setto il flag per inizializzazione gestore travi e pareti per importare progetto
Dim nFlag As Integer
Dim sBTLFlag As String
If Map.refProjManagerVM.nProjType = Core.ConstBeam.BWType.BEAM Then
sBTLFlag = K_BTLFLAG
Else
sBTLFlag = K_WALLBTLFLAG
End If
nFlag = GetMainPrivateProfileInt(S_IMPORT, sBTLFlag, EIB_FL.TS3_POS + EIB_FL.SORT + EIB_FL.USEUATTR)
' inizializzo gestore travi e pareti
EgtInitBeamMgr(nFlag)
Dim bOk As Boolean = nTempCtx <> 0
If bOk Then
' importo il file BTL
bOk = bOk AndAlso EgtImportBtl(sFile)
' rimuovo i parametri generali e salvo come file NGE
bOk = bOk AndAlso Map.refSceneHostVM.MainController.ImportProject(sFile, False)
' carico la lista dei Part importati e rimuovo i parametri generali del BTL
Dim AsseBaseId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
Dim BtlInfoId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
EgtErase(AsseBaseId)
EgtErase(BtlInfoId)
EgtSaveFile("C:\EgtData\EgtBEAMWALL\Temp\Prova.nge", NGE.CMPTEXT)
' torno sul contesto corrente
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nTempCtx)
' calcolo BBox globale del progetto iniziale
Dim b3Parts As New BBox3d
Dim nProjPartId As Integer = EgtGetFirstPart()
Dim nLastProjPartId As Integer = 0
While nProjPartId <> GDB_ID.NULL
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nProjPartId, GDB_BB.ONLY_VISIBLE, b3Part)
b3Parts.Add(b3Part)
nLastProjPartId = nProjPartId
nProjPartId = EgtGetNextPart(nProjPartId)
Dim PartToUpdateList As New List(Of BTLPartToUpdate)
' cerco tra i layer BTLInfo
While BtlInfoId <> GDB_ID.NULL
' verifico se il layer appartiene al ProjId
Dim nBTLInfoLayerProjId As Integer
EgtGetInfo(BtlInfoId, BTL_PRT_PROJ, nBTLInfoLayerProjId)
' carico la lista con i PDN dei pezzi del BTL importato
Dim nPDN As Integer = 0
Dim sNAM As String = String.Empty
Dim nUID As Integer = 0
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim UIDList As New List(Of Integer)
Dim nIndUID As Integer = 1
' se devo filtrare un progetto
If nBTLInfoLayerProjId > 0 Then
' verifico se il pezzo appartiene al ProjId
Dim nPartProjId As Integer
EgtGetInfo(nPartId, BTL_PRT_PROJ, nPartProjId)
If nPartProjId = nBTLInfoLayerProjId Then
EgtGetInfo(nPartId, BTL_PRT_PDN, nPDN)
EgtGetInfo(nPartId, BTL_PRT_NAM, sNAM)
While EgtGetInfo(nPartId, BTL_PRT_UID & nIndUID, nUID)
UIDList.Add(nUID)
nIndUID += 1
End While
PartToUpdateList.Add(New BTLPartToUpdate(nPartId, nPDN, sNAM, UIDList))
End If
Else
' altrimenti carico tutti
EgtGetInfo(nPartId, BTL_PRT_PDN, nPDN)
EgtGetInfo(nPartId, BTL_PRT_NAM, sNAM)
While EgtGetInfo(nPartId, BTL_PRT_UID & nUID, nUID)
UIDList.Add(nUID)
nIndUID += 1
End While
PartToUpdateList.Add(New BTLPartToUpdate(nPartId, nPDN, sNAM, UIDList))
End If
nPartId = EgtGetNextPart(nPartId)
End While
EgtErase(BtlInfoId)
BtlInfoId = EgtGetNextName(BtlInfoId, BTLINFO)
End While
' inserisco il file importato nel progetto corrente
bOk = bOk AndAlso EgtInsertFile("C:\EgtData\EgtBEAMWALL\Temp\Prova.nge")
' deseleziono tutto
EgtDeselectAll()
' ciclo sui pezzi aggiunti
Dim nAddedPartId As Integer = EgtGetNextPart(nLastProjPartId)
Dim bFirstLoop As Boolean = True
Dim LastPartMaxY As Double
While nAddedPartId <> GDB_ID.NULL
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nAddedPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' eseguo rotazione del pezzo
Dim ptRot = b3Box.Min() + New Vector3d(0, b3Box.DimZ() / 2, b3Box.DimZ() / 2)
bOk = bOk AndAlso EgtRotate(nAddedPartId, ptRot, -Vector3d.X_AX, -90)
' ricaviamo il box globale del part appena aggiunto e ruotato
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
' sposto il pezzo per distanziarlo dall'ultimo di un offset pari a 500
bOk = bOk AndAlso EgtMove(nAddedPartId, New Vector3d(0, If(bFirstLoop, b3Parts.DimY(), LastPartMaxY - b3Part.Min.y) + 500, 0))
bFirstLoop = False
' ricaviamo il box globale del part appena spostato, salviamo la sua Y massima e lo aggiungiamo al box globale di tutti i part
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
LastPartMaxY = b3Part.Max.y
b3Parts.Add(b3Part)
nAddedPartId = EgtGetNextPart(nAddedPartId)
End While
' aggiungo i part inseriti alla lista
Dim nNewPartId As Integer = EgtGetNextPart(nLastProjPartId)
While nNewPartId <> GDB_ID.NULL
' aggiungo dati pezzo
Dim NewPart As BTLPartM = BTLPartM.CreateBTLPart(nNewPartId)
' aggiungo pezzo alla lista
Map.refProjectVM.BTLStructureVM.BTLStructureM.AddBTLPart(NewPart)
Dim AddedBTLPart As BTLPartVM = Map.refProjectVM.BTLStructureVM.BTLPartVMList.FirstOrDefault(Function(x) x.BTLPartM Is NewPart) 'Map.refProjectVM.BTLStructureVM.SelBTLPart = Map.refProjectVM.BTLStructureVM.BTLPartVMList.FirstOrDefault(Function(x) x.BTLPartM Is NewPart)
' verifico se aggiungere sezione alla lista
If Not Map.refProjectVM.BTLStructureVM.SectionList.Contains(AddedBTLPart.Section) Then
Map.refProjectVM.BTLStructureVM.SectionList.Add(AddedBTLPart.Section)
' costruisco un dizionario con gli id dei sottonodi di AsseBase del BTL importato e il valore dell'Info N degli stessi
Dim AsseBaseSubNodeDict As New Dictionary(Of Integer, Integer)
Dim nAsseBaseSubNodeId As Integer = EgtGetFirstInGroup(AsseBaseId)
Dim sAsseBaseUID As String = String.Empty
Dim nAsseBaseUID As Integer = 0
While nAsseBaseSubNodeId <> GDB_ID.NULL
If EgtGetInfo(nAsseBaseSubNodeId, BTL_ASSEBASE_N, sAsseBaseUID) Then
sAsseBaseUID = sAsseBaseUID.Remove(0, 4)
Integer.TryParse(sAsseBaseUID, nAsseBaseUID)
AsseBaseSubNodeDict.Add(nAsseBaseSubNodeId, sAsseBaseUID)
End If
nNewPartId = EgtGetNextPart(nNewPartId)
nAsseBaseSubNodeId = EgtGetNext(nAsseBaseSubNodeId)
End While
WriteMainPrivateProfileString(S_GENERAL, K_LASTUPDATEDIR, Path.GetDirectoryName(sFile))
' salvo il file BTL da cui abbiamo rimosso BtlInfo come file NGE
EgtSaveFile(Map.refMainWindowVM.MainWindowM.sTempDir & "\" & UPDATEBTL_NGE, NGE.CMPTEXT)
Dim bAppend As Boolean = False
' se UserLevel > 5 e fra i Part importati ce ne sta almeno 1 con PDN uguale ai Part già presenti
' apro la finestra per chiedere se si vuole aggiornare o accodare
If Map.refMainWindowVM.MainWindowM.nUserLevel > 5 Then
For Each PartToUpdate In PartToUpdateList
Dim bExitFor As Boolean = False
For Each BTLPart In Map.refProjectVM.BTLStructureVM.BTLStructureM.BTLPartMList
If PartToUpdate.nPDN = BTLPart.nPDN Then
Dim UpdateOrAppendWndVM As New UpdateOrAppendWndVM()
Dim UpdateOrAppendWnd As New UpdateOrAppendWndV(Application.Current.MainWindow, UpdateOrAppendWndVM)
If Not UpdateOrAppendWnd.ShowDialog() Then
' torno sul contesto corrente
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nTempCtx)
' rileggo la struttura BTL
ReloadBTLStructure()
Return
End If
' salvo lo stato del bottone per accodare
bAppend = UpdateOrAppendWndVM.AppendIsChecked
bExitFor = True
Exit For
End If
Next
If bExitFor Then Exit For
Next
End If
' se selezionato Append li accodo tutti
If bAppend Then
' torno sul contesto corrente
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nTempCtx)
' rileggo la struttura BTL del progetto corrente per non avere quella del contesto temporaneo ancora presente
ReloadBTLStructure()
' salvo gli id degli AsseBase presenti nel progetto corrente
Dim AsseBaseIdList As New List(Of Integer)
AsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
While AsseBaseId <> GDB_ID.NULL
AsseBaseIdList.Add(AsseBaseId)
AsseBaseId = EgtGetNextName(AsseBaseId, ASSEBASE)
End While
' calcolo BBox globale del progetto iniziale
Dim b3Parts As New BBox3d
Dim nProjPartId As Integer = EgtGetFirstPart()
Dim nLastProjPartId As Integer = 0
While nProjPartId <> GDB_ID.NULL
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nProjPartId, GDB_BB.ONLY_VISIBLE, b3Part)
b3Parts.Add(b3Part)
nLastProjPartId = nProjPartId
nProjPartId = EgtGetNextPart(nProjPartId)
End While
' inserisco il file importato nel progetto corrente
bOk = bOk AndAlso EgtInsertFile(Map.refMainWindowVM.MainWindowM.sTempDir & "\" & UPDATEBTL_NGE)
' deseleziono tutto
EgtDeselectAll()
' ciclo sui pezzi aggiunti
Dim nAddedPartId As Integer = EgtGetNextPart(nLastProjPartId)
Dim bFirstLoop As Boolean = True
Dim LastPartMaxY As Double
Dim nIncrPDN As Integer = 0
While nAddedPartId <> GDB_ID.NULL
' incremento il PDN del Part aggiunto rispetto al PDN maggiore attualmente presente
EgtSetInfo(nAddedPartId, BTL_PRT_PDN, Map.refProjectVM.BTLStructureVM.BTLStructureM.NewPDN() + nIncrPDN)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nAddedPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' ricaviamo il box globale del part appena aggiunto
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
' sposto il pezzo per distanziarlo dall'ultimo di un offset pari a 500
bOk = bOk AndAlso EgtMove(nAddedPartId, New Vector3d(0, If(bFirstLoop, b3Parts.DimY(), LastPartMaxY - b3Part.Min.y) + 500, 0))
bFirstLoop = False
' ricaviamo il box globale del part appena spostato, salviamo la sua Y massima e lo aggiungiamo al box globale di tutti i part
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
LastPartMaxY = b3Part.Max.y
b3Parts.Add(b3Part)
nAddedPartId = EgtGetNextPart(nAddedPartId)
nIncrPDN += 1
End While
' aggiungo i part inseriti alla lista
Dim nNewPartId As Integer = EgtGetNextPart(nLastProjPartId)
While nNewPartId <> GDB_ID.NULL
' aggiungo dati pezzo
Dim NewPart As BTLPartM = BTLPartM.CreateBTLPart(nNewPartId)
' aggiungo pezzo alla lista
Map.refProjectVM.BTLStructureVM.BTLStructureM.AddBTLPart(NewPart)
Dim AddedBTLPart As BTLPartVM = Map.refProjectVM.BTLStructureVM.BTLPartVMList.FirstOrDefault(Function(x) x.BTLPartM Is NewPart)
' verifico se aggiungere sezione alla lista
If Not Map.refProjectVM.BTLStructureVM.SectionList.Contains(AddedBTLPart.Section) Then
Map.refProjectVM.BTLStructureVM.SectionList.Add(AddedBTLPart.Section)
End If
nNewPartId = EgtGetNextPart(nNewPartId)
End While
' elimino gli AsseBase del progetto importato
AsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
While AsseBaseId <> GDB_ID.NULL
Dim CurrAsseBaseId = AsseBaseId
AsseBaseId = EgtGetNextName(AsseBaseId, ASSEBASE)
If Not AsseBaseIdList.Contains(CurrAsseBaseId) Then EgtErase(CurrAsseBaseId)
End While
WriteMainPrivateProfileString(S_GENERAL, K_LASTUPDATEDIR, Path.GetDirectoryName(sFile))
Else
' altrimenti apro la finestra con l'elenco dei Part da checkare per l'inserimento nel progetto (unica strada se UserLevel <= 5),
' che prevederà la sovrascrittura di quelli già presenti e l'aggiunta di quelli nuovi
Dim UpdateBTLWndVM As New UpdateBTLWndVM(PartToUpdateList)
Dim UpdateBTLWnd As New UpdateBTLWndV(Application.Current.MainWindow, UpdateBTLWndVM)
If Not UpdateBTLWnd.ShowDialog() Then
' torno sul contesto corrente
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nTempCtx)
' rileggo la struttura BTL
ReloadBTLStructure()
Return
End If
If UpdateBTLWndVM.BTLPartList.Count > 0 Then
' sovrascrivo i Part nel progetto aperto con i Part checkati nella lista
Dim BTLPartToOverwriteWithList As New ObservableCollection(Of BTLPartToUpdate)
' Elimino dal TempCtx i Part non checkati
For Each BTLPartToOverwriteWith In UpdateBTLWndVM.BTLPartList
If BTLPartToOverwriteWith.bInsert Then
BTLPartToOverwriteWithList.Add(BTLPartToOverwriteWith)
Else
' elimino pezzo copia
Dim nCurrPartId = EgtGetCurrPart()
EgtErase(BTLPartToOverwriteWith.nPartId)
nCurrPartId = EgtGetCurrPart()
End If
Next
' costruisco un nuovo dizionario dei sottonodi di AsseBase contenente solo quelli corrispondenti agli UID contenuti
' nei soli Part checkati del BTL nella finestra UpdateBTLWnd
Dim NewAsseBaseSubNodeDict As New Dictionary(Of Integer, Integer)
For Each AsseBaseSubNodeItem In AsseBaseSubNodeDict
For Each BTLPartToOverwriteWithItem In BTLPartToOverwriteWithList
Dim bExitFor As Boolean = False
For Each UIDItem In BTLPartToOverwriteWithItem.UIDList
If AsseBaseSubNodeItem.Value = UIDItem Then
NewAsseBaseSubNodeDict.Add(AsseBaseSubNodeItem.Key, AsseBaseSubNodeItem.Value)
bExitFor = True
Exit For
End If
Next
If bExitFor Then Exit For
Next
Next
' confronto la lista appena costruita con quella originale ed elimino dal contesto i sottonodi con i valori non più presenti
For Each AsseBaseSubNodeItem In AsseBaseSubNodeDict
If Not NewAsseBaseSubNodeDict.ContainsValue(AsseBaseSubNodeItem.Value) Then
EgtErase(AsseBaseSubNodeItem.Key)
End If
Next
' salvo il file NGE inserito a cui abbiamo rimosso i Part non checkati e gli AsseBase non più associati
EgtSaveFile(Map.refMainWindowVM.MainWindowM.sTempDir & "\" & UPDATEBTL_NGE, NGE.CMPTEXT)
' torno sul contesto corrente
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nTempCtx)
' rileggo la struttura BTL del progetto corrente per non avere quella del contesto temporaneo ancora presente
ReloadBTLStructure()
' elimino i pezzi da sovrascrivere nel progetto corrente
For Each BTLPartToOverwriteWith In UpdateBTLWndVM.BTLPartList
If BTLPartToOverwriteWith.bInsert Then
Dim BTLPartToUpdate As BTLPartVM = Map.refProjectVM.BTLStructureVM.BTLPartVMList.FirstOrDefault(Function(x) x.nPDN = BTLPartToOverwriteWith.nPDN)
' se BTLPartToUpdate è Nothing significa che il pezzo è nuovo e quindi basta accodarlo senza eliminare nulla
If Not IsNothing(BTLPartToUpdate) Then
Dim nPartToDeleteId As Integer = BTLPartToUpdate.nPartId
Dim nCurrPartId = EgtGetCurrPart()
EgtErase(nPartToDeleteId)
nCurrPartId = EgtGetCurrPart()
' verifico se rimuovere sezione dalla lista
If Not Map.refProjectVM.BTLStructureVM.BTLPartVMList.Any(Function(x) x IsNot BTLPartToUpdate AndAlso x.Section = BTLPartToUpdate.Section) Then
Map.refProjectVM.BTLStructureVM.SectionList.Remove(BTLPartToUpdate.Section)
End If
' rimuovo dalla lista pezzi
Dim Index As Integer = Map.refProjectVM.BTLStructureVM.BTLPartVMList.IndexOf(BTLPartToUpdate)
Map.refProjectVM.BTLStructureVM.SelBTLPart = Nothing
Map.refProjectVM.BTLStructureVM.BTLPartVMList.RemoveAt(Index)
End If
End If
Next
' salvo gli id degli AsseBase presenti nel progetto corrente
Dim AsseBaseIdList As New List(Of Integer)
AsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
While AsseBaseId <> GDB_ID.NULL
AsseBaseIdList.Add(AsseBaseId)
' elimino i sottonodi di AsseBase da sovrascrivere
AsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
nAsseBaseSubNodeId = EgtGetFirstInGroup(AsseBaseId)
While nAsseBaseSubNodeId <> GDB_ID.NULL
If NewAsseBaseSubNodeDict.ContainsKey(nAsseBaseSubNodeId) Then
' se sottonodo da cancellare salvo il suo id e ricavo il seguente prima di cancellarlo
Dim nCurrAsseBaseSubNodeId = nAsseBaseSubNodeId
nAsseBaseSubNodeId = EgtGetNext(nCurrAsseBaseSubNodeId)
bOk = EgtErase(nCurrAsseBaseSubNodeId)
Else
' altrimenti ricavo il seguente e basta
nAsseBaseSubNodeId = EgtGetNext(nAsseBaseSubNodeId)
End If
End While
AsseBaseId = EgtGetNextName(AsseBaseId, ASSEBASE)
End While
' calcolo BBox globale del progetto corrente
Dim b3Parts As New BBox3d
Dim nProjPartId As Integer = EgtGetFirstPart()
Dim nLastProjPartId As Integer = 0
While nProjPartId <> GDB_ID.NULL
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nProjPartId, GDB_BB.ONLY_VISIBLE, b3Part)
b3Parts.Add(b3Part)
nLastProjPartId = nProjPartId
nProjPartId = EgtGetNextPart(nProjPartId)
End While
' inserisco il file NGE (ricavato dal BTL importato) nel progetto corrente
bOk = bOk AndAlso EgtInsertFile(Map.refMainWindowVM.MainWindowM.sTempDir & "\" & UPDATEBTL_NGE)
' ciclo su tutti gli AsseBase del progetto corrente
Dim nAsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
While nAsseBaseId <> GDB_ID.NULL
Dim nAsseBaseProjId As Integer
Dim nAsseBaseToEraseId As Integer = 0
EgtGetInfo(nAsseBaseId, BTL_PRT_PROJ, nAsseBaseProjId)
' se AsseBase di questo step del ciclo è nuovo e suo ProjId uguale a quello del progetto corrente
If Not AsseBaseIdList.Contains(nAsseBaseId) AndAlso nAsseBaseProjId = Map.refProjManagerVM.CurrProj.nProjId Then
' riloco i sottonodi del nuovo AsseBase nell'AsseBase del progetto aperto col medesimo ProjId
Dim AsseBaseSubNodeId As Integer = EgtGetFirstInGroup(nAsseBaseId)
While AsseBaseSubNodeId <> GDB_ID.NULL
' ciclo su tutti gli AsseBase per trovare l'id di quello con ProjId uguale al progetto corrente
Dim FindAsseBaseId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
While FindAsseBaseId <> GDB_ID.NULL
Dim SameAsseBaseProjId As Integer
EgtGetInfo(FindAsseBaseId, BTL_PRT_PROJ, SameAsseBaseProjId)
' se l'ho trovato esco dal While (FindAsseBaseId è l'id dell'AsseBase in cui vogliamo rilocare i sottonodi)
If SameAsseBaseProjId = Map.refProjManagerVM.CurrProj.nProjId Then Exit While
FindAsseBaseId = EgtGetNextName(FindAsseBaseId, ASSEBASE)
End While
' salvo id dell'AsseBase corrente per ottenere il seguente prima di rilocarlo
Dim CurrAsseBaseSubNodeId = AsseBaseSubNodeId
AsseBaseSubNodeId = EgtGetNext(CurrAsseBaseSubNodeId)
bOk = bOk AndAlso EgtRelocate(CurrAsseBaseSubNodeId, FindAsseBaseId, GDB_POS.LAST_SON)
End While
' salvo id dell'AsseBase per cancellarlo
nAsseBaseToEraseId = nAsseBaseId
End If
' ricavo id del prossimo AsseBase
nAsseBaseId = EgtGetNextName(nAsseBaseId, ASSEBASE)
' se salvato id dell'AsseBase per cancellarlo lo cancello
If nAsseBaseToEraseId <> 0 Then bOk = bOk AndAlso EgtErase(nAsseBaseToEraseId)
End While
' deseleziono tutto
EgtDeselectAll()
' ciclo sui pezzi aggiunti
Dim nAddedPartId As Integer = EgtGetNextPart(nLastProjPartId)
Dim LastPartMaxY As Double
While nAddedPartId <> GDB_ID.NULL
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nAddedPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' ricaviamo il box globale del part appena aggiunto e ruotato
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
' salviamo la Y massima del box globale di tutti i part
LastPartMaxY = b3Parts.Max.y
' sposto il pezzo per distanziarlo dall'ultimo di un offset pari a 500
bOk = bOk AndAlso EgtMove(nAddedPartId, New Vector3d(0, LastPartMaxY - b3Part.Min.y + 500, 0))
' ricaviamo il box globale del part appena spostato e lo aggiungiamo al box globale di tutti i part
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
b3Parts.Add(b3Part)
nAddedPartId = EgtGetNextPart(nAddedPartId)
End While
' aggiungo i part inseriti alla lista
Dim nNewPartId As Integer = EgtGetNextPart(nLastProjPartId)
While nNewPartId <> GDB_ID.NULL
' aggiungo dati pezzo
Dim NewPart As BTLPartM = BTLPartM.CreateBTLPart(nNewPartId)
' aggiungo pezzo alla lista
Map.refProjectVM.BTLStructureVM.BTLStructureM.AddBTLPart(NewPart)
Dim AddedBTLPart As BTLPartVM = Map.refProjectVM.BTLStructureVM.BTLPartVMList.FirstOrDefault(Function(x) x.BTLPartM Is NewPart)
' verifico se aggiungere sezione alla lista
If Not Map.refProjectVM.BTLStructureVM.SectionList.Contains(AddedBTLPart.Section) Then
Map.refProjectVM.BTLStructureVM.SectionList.Add(AddedBTLPart.Section)
End If
nNewPartId = EgtGetNextPart(nNewPartId)
End While
WriteMainPrivateProfileString(S_GENERAL, K_LASTUPDATEDIR, Path.GetDirectoryName(sFile))
End If
End If
' copio il file originale scelto nel dialog per l'Update nella cartella Proj del progetto corrente
If File.Exists(sFile) Then
Dim sDestPath As String = Map.refProjManagerVM.CurrProj.sProjDirPath & "\" & Path.GetFileNameWithoutExtension(sFile)
While File.Exists(sDestPath & ".btl")
sDestPath = sDestPath & "_1"
End While
File.Copy(sFile, sDestPath & ".btl", False)
End If
End If
'If bOk Then
' ' riporto aggiunta proj a prod su Db
' DbControllers.m_ProdController.AddProj(OpenProjectFileDialogVM.SelProject.nProdId, Map.refProjManagerVM.CurrProj.nProjId)
' ' imposto currprod
' Map.refProdManagerVM.SetCurrProd(OpenProjectFileDialogVM.SelProject.nProdId)
'End If
EgtZoom(ZM.ALL)
End Sub
@@ -1186,7 +1526,7 @@ Public Class ProjManagerVM
EgtSetInfo(nDuploId, BTL_PRT_PROJ, NewProjIdList(nOldProjIndex))
nDuploId = EgtGetNext(nDuploId)
End While
' resetto CurrProd per evitare di leggero valori produzione dal Db di quel progetto
' resetto CurrProd per evitare di leggere valori produzione dal Db di quel progetto
Map.refProdManagerVM.CurrProd = Nothing
' carico Machgroup che non verrebbero altrimenti importati
Map.refProjectVM.MachGroupPanelVM = New MyMachGroupPanelVM(MyMachGroupPanelM.CreateMyMachGroupPanel(Map.refMachinePanelVM.MachineList.ToList()))
@@ -11,6 +11,8 @@
Visibility="{Binding DataContext.ProdManager_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<EgtBEAMWALL:OptimizePanelV DataContext="{StaticResource OptimizePanelVM}"
Visibility="{Binding DataContext.OptimizePanel_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<EgtBEAMWALL:LayersWallProjManagerV DataContext="{StaticResource LayersWallProjManagerVM}"
Visibility="{Binding DataContext.LayersWallProjManager_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
</EgtFloating:EgtFloatingTray>
<EgtBEAMWALL:FreeContourInputV DockPanel.Dock="Right"
@@ -34,6 +36,11 @@
DataContext="{StaticResource LeftPanelVM}"
Tag="{Binding DataContext.BTLStructureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.LeftPanel_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<EgtBEAMWALL:LayersWallLeftPanelV Grid.Column="0"
Grid.RowSpan="4"
DataContext="{StaticResource LayersWallLeftPanelVM}"
Tag="{Binding DataContext.BTLStructureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.LayersWallLeftPanel_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<GridSplitter Grid.Column="1"
Grid.RowSpan="4"
Width="3"
@@ -79,6 +86,18 @@
DataContext="{StaticResource PartManagerVM}"
Tag="{Binding DataContext.BTLStructureVM.SelBTLPart, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.PartManager_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<!--PartManager per Layer nella pagina LayersWall-->
<EgtBEAMWALL:LayersWallPartManagerV Grid.Row="0"
DataContext="{StaticResource PartManagerVM}"
Tag="{Binding DataContext.BTLStructureVM.SelBTLLayer, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.LayersWallLayerPartManager_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<!--PartManager per Part nel Layer nella pagina LayersWall-->
<EgtBEAMWALL:LayersWallPartManagerV Grid.Row="0"
DataContext="{StaticResource PartManagerVM}"
Tag="{Binding DataContext.BTLStructureVM.SelBTLLayer.SelBTLPart, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.LayersWallPartPartManager_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<Grid Grid.Column="2" Grid.Row="1">
<EgtBEAMWALL:TopPanelV
DataContext="{StaticResource TopPanelVM}"
@@ -90,6 +109,11 @@
Tag="{Binding DataContext.BTLStructureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.BottomPanel_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Height="Auto"/>
<EgtBEAMWALL:LayersWallBottomPanelV
DataContext="{StaticResource LayersWallBottomPanelVM}"
Tag="{Binding DataContext.BTLStructureVM, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Visibility="{Binding DataContext.LayersWallBottomPanel_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"
Height="Auto"/>
</Grid>
</Grid>
@@ -65,6 +65,19 @@ Public Class ProjectVM
m_LeftPanel_Visibility = IsVisible
End Sub
Private m_LayersWallLeftPanel_Visibility As Boolean = False
Public Property LayersWallLeftPanel_Visibility As Visibility
Get
Return If(m_LayersWallLeftPanel_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayersWallLeftPanel_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayersWallLeftPanel_Visibility(IsVisible As Boolean)
m_LayersWallLeftPanel_Visibility = IsVisible
End Sub
Private m_TopPanel_Visibility As Boolean = False
Public Property TopPanel_Visibility As Visibility
Get
@@ -91,6 +104,19 @@ Public Class ProjectVM
m_BottomPanel_Visibility = IsVisible
End Sub
Private m_LayersWallBottomPanel_Visibility As Boolean = False
Public Property LayersWallBottomPanel_Visibility As Visibility
Get
Return If(m_LayersWallBottomPanel_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayersWallBottomPanel_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayersWallBottomPanel_Visibility(IsVisible As Boolean)
m_LayersWallBottomPanel_Visibility = IsVisible
End Sub
Private m_PartManager_Visibility As Boolean = True
Public Property PartManager_Visibility As Visibility
Get
@@ -104,6 +130,34 @@ Public Class ProjectVM
m_PartManager_Visibility = IsVisible
End Sub
Private m_LayersWallLayerPartManager_Visibility As Boolean = True
Public Property LayersWallLayerPartManager_Visibility As Visibility
Get
Return If(m_LayersWallLayerPartManager_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayersWallLayerPartManager_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayersWallLayerPartManager_Visibility(IsVisible As Boolean)
m_LayersWallLayerPartManager_Visibility = IsVisible
NotifyPropertyChanged(NameOf(LayersWallLayerPartManager_Visibility))
End Sub
Private m_LayersWallPartPartManager_Visibility As Boolean = True
Public Property LayersWallPartPartManager_Visibility As Visibility
Get
Return If(m_LayersWallPartPartManager_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayersWallPartPartManager_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayersWallPartPartManager_Visibility(IsVisible As Boolean)
m_LayersWallPartPartManager_Visibility = IsVisible
NotifyPropertyChanged(NameOf(LayersWallPartPartManager_Visibility))
End Sub
Private m_FeatureManager_Visibility As Boolean = True
Public Property FeatureManager_Visibility As Visibility
Get
@@ -170,11 +224,25 @@ Public Class ProjectVM
NotifyPropertyChanged(NameOf(OptimizePanel_Visibility))
Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.CalcRotFlip_Visibility))
Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.Optimize_Visibility))
Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.OriginType_Visibility))
Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.ViewPage_Visibility))
Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.MachiningPage_Visibility))
Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.NestingOption_Visibility))
End Sub
Private m_LayersWallProjManager_Visibility As Boolean = True
Public Property LayersWallProjManager_Visibility As Visibility
Get
Return If(m_LayersWallProjManager_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_LayersWallProjManager_Visibility = (value = Visibility.Visible)
End Set
End Property
Friend Sub SetLayersWallProjManager_Visibility(IsVisible As Boolean)
m_LayersWallProjManager_Visibility = IsVisible
End Sub
Friend Sub NotifyCalcPanel_Visibility()
Map.refCALCPanelVM.NotifyPropertyChanged(NameOf(Map.refCALCPanelVM.ViewPage_Visibility))
End Sub
@@ -195,13 +263,17 @@ Public Class ProjectVM
Friend Sub NotifyAllPanelVisibility()
NotifyPropertyChanged("LeftPanel_Visibility")
NotifyPropertyChanged("LayersWallLeftPanel_Visibility")
NotifyPropertyChanged("TopPanel_Visibility")
NotifyPropertyChanged("BottomPanel_Visibility")
NotifyPropertyChanged("LayersWallBottomPanel_Visibility")
NotifyPropertyChanged("PartManager_Visibility")
NotifyPropertyChanged("LayersWallPartManager_Visibility")
NotifyPropertyChanged("FeatureManager_Visibility")
NotifyPropertyChanged("ShowBeamPanel_Visibility")
NotifyPropertyChanged("ProjManager_Visibility")
NotifyPropertyChanged("ProdManager_Visibility")
NotifyPropertyChanged("LayersWallProjManager_Visibility")
NotifyCalcPanel_Visibility()
End Sub
@@ -233,7 +305,9 @@ Public Class ProjectVM
Map.refCALCPanelVM.SetCalcPanelIsEnabled(bIsEnabled)
Map.refMainMenuVM.SetMainMenuIsEnabled(bIsEnabled)
Map.refPartManagerVM.SetPartManagerIsEnabled(bIsEnabled)
Map.refLayersWallPartManagerVM.SetLayersWallPartManagerIsEnabled(bIsEnabled)
Map.refLeftPanelVM.SetLeftPanelIsEnabled(bIsEnabled)
Map.refLayersWallLeftPanelVM.SetLayersWallLeftPanelIsEnabled(bIsEnabled)
Map.refProjManagerVM.SetProjManagerIsEnabled(bIsEnabled)
Map.refProdManagerVM.SetProdManagerIsEnabled(bIsEnabled)
Map.refTopPanelVM.SetTopPanelIsEnabled(bIsEnabled)
Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

@@ -664,41 +664,80 @@ Public Class MySceneHostVM
Private Sub OnImportedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean)
WriteMainPrivateProfileString(S_GENERAL, K_LASTIMPDIR, Path.GetDirectoryName(sFile))
Dim bFirstPart As Boolean = EgtGetFirstPart() <> GDB_ID.NULL
If bOk OrElse bFirstPart Then
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.IMPORTBTL, 2, EgtMsg(63005), 50, 70) ' Loading parts
' leggo struttura BTL
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(0))
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
' scrivo in ogni pezzo ProjId
EgtSetInfo(nPartId, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId)
nPartId = EgtGetNextPart(nPartId)
' scrivo Id negli outline
Dim nPRId As Integer = 1
Dim nOutlineLayer As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
If nOutlineLayer <> GDB_ID.NULL Then
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayer)
While nOutlineId <> GDB_ID.NULL
' verifico che sia feature
If EgtExistsInfo(nOutlineId, MGR_FTR_PRC) Then
EgtSetInfo(nOutlineId, MGR_FTR_PRID, nPRId)
nPRId += 1
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
End If
End While
' scrivo info proj e type su layer BtlInfo
Dim nBTLInfoLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
EgtSetInfo(nBTLInfoLayer, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId)
EgtSetInfo(nBTLInfoLayer, BTL_GEN_PROJTYPE, Map.refProjManagerVM.CurrProj.nType)
' scrivo info proj su layer AsseBase
Dim nAsseBaseLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
EgtSetInfo(nAsseBaseLayer, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId)
If Map.refMainMenuVM.SelPage = Pages.LAYERSWALL Then
If bOk OrElse bFirstPart Then
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.IMPORTBTL, 2, EgtMsg(63005), 50, 70) ' Loading parts
' leggo struttura BTL
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(0))
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
' scrivo in ogni pezzo ProjId
EgtSetInfo(nPartId, BTL_PRT_PROJ, Map.refLayersWallProjManagerVM.nLoadingProjId)
nPartId = EgtGetNextPart(nPartId)
' scrivo Id negli outline
Dim nPRId As Integer = 1
Dim nOutlineLayer As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
If nOutlineLayer <> GDB_ID.NULL Then
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayer)
While nOutlineId <> GDB_ID.NULL
' verifico che sia feature
If EgtExistsInfo(nOutlineId, MGR_FTR_PRC) Then
EgtSetInfo(nOutlineId, MGR_FTR_PRID, nPRId)
nPRId += 1
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
End If
End While
' scrivo info proj e type su layer BtlInfo
Dim nBTLInfoLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
EgtSetInfo(nBTLInfoLayer, BTL_PRT_PROJ, Map.refLayersWallProjManagerVM.nLoadingProjId)
EgtSetInfo(nBTLInfoLayer, BTL_GEN_PROJTYPE, Map.refLayersWallProjManagerVM.CurrProj.nType)
' scrivo info proj su layer AsseBase
Dim nAsseBaseLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
EgtSetInfo(nAsseBaseLayer, BTL_PRT_PROJ, Map.refLayersWallProjManagerVM.nLoadingProjId)
Else
Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file
MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
Map.refLayersWallProjManagerVM.NewProject()
End If
Else
Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file
MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
Map.refProjManagerVM.NewProject()
If bOk OrElse bFirstPart Then
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.IMPORTBTL, 2, EgtMsg(63005), 50, 70) ' Loading parts
' leggo struttura BTL
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(0))
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
' scrivo in ogni pezzo ProjId
EgtSetInfo(nPartId, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId)
nPartId = EgtGetNextPart(nPartId)
' scrivo Id negli outline
Dim nPRId As Integer = 1
Dim nOutlineLayer As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
If nOutlineLayer <> GDB_ID.NULL Then
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayer)
While nOutlineId <> GDB_ID.NULL
' verifico che sia feature
If EgtExistsInfo(nOutlineId, MGR_FTR_PRC) Then
EgtSetInfo(nOutlineId, MGR_FTR_PRID, nPRId)
nPRId += 1
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
End If
End While
' scrivo info proj e type su layer BtlInfo
Dim nBTLInfoLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
EgtSetInfo(nBTLInfoLayer, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId)
EgtSetInfo(nBTLInfoLayer, BTL_GEN_PROJTYPE, Map.refProjManagerVM.CurrProj.nType)
' scrivo info proj su layer AsseBase
Dim nAsseBaseLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
EgtSetInfo(nAsseBaseLayer, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId)
Else
Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file
MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
Map.refProjManagerVM.NewProject()
End If
End If
MainScene.SetStatusNull()
@@ -1107,7 +1146,7 @@ Public Class MySceneHostVM
Dim nFeatureLayer As Integer = EgtGetParent(nId)
Dim sFeatureLayerName As String = ""
EgtGetName(nFeatureLayer, sFeatureLayerName)
If Not sFeatureLayerName = PROCESSINGS OrElse Not EgtGetType(nId) = GDB_TY.SRF_MESH Then
If (sFeatureLayerName <> PROCESSINGS AndAlso sFeatureLayerName <> OUTLINE) OrElse EgtGetType(nId) <> GDB_TY.SRF_MESH Then
nId = EgtGetNextObjInSelWin()
Continue While
End If
@@ -10,7 +10,7 @@
Private Sub PrintBtn_Click(sender As Object, e As RoutedEventArgs) Handles CopyToClipboardBtn.Click
m_StatisticsVM = Me.DataContext()
ExportToExcelAndCsv(dgOptimizerStatistics, m_StatisticsVM)
CopyToClipboard(dgOptimizerStatistics, dgRawPartStatistics, m_StatisticsVM)
End Sub
End Class

Some files were not shown because too many files have changed in this diff Show More