diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml index 5c4e040b..d1f8505c 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml +++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml @@ -58,7 +58,6 @@ --> diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb index 8b779b64..91018fd1 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb @@ -801,52 +801,54 @@ Public Class ProjManagerVM bOk = bOk AndAlso EgtInsertFile("C:\EgtData\EgtBEAMWALL\Temp\Prova.nge") ' deseleziono tutto EgtDeselectAll() - ' ciclo sui pezzi + ' ciclo sui pezzi aggiunti Dim nAddedPartId As Integer = EgtGetNextPart(nLastProjPartId) - Dim arrPartId As New ArrayList() - Dim b3LaterParts As BBox3d = b3Parts Dim bFirstLoop As Boolean = True + Dim LastPartMaxY As Double While nAddedPartId <> GDB_ID.NULL - ''' se arrivano dal nuovo progetto - ''Dim nCurrProjId As Integer - ''EgtGetInfo(nPartId, PROJ, nCurrProjId) - ''If nCurrProjId = Map.refProjManagerVM.CurrProj.nProjId Then - ' sposto i pezzi per non averli sovrapposti - Dim b3LaterPart As New BBox3d - EgtGetBBoxGlob(nAddedPartId, GDB_BB.ONLY_VISIBLE, b3LaterPart) - b3LaterParts.Add(b3LaterPart) - bOk = bOk AndAlso EgtMove(nAddedPartId, New Vector3d(0, b3Parts.DimY() + If(bFirstLoop, 500, 0), 0)) ' EgtMove(nAddedPartId, New Vector3d(0, b3Parts.DimY() + 500, 0)) - bFirstLoop = False ' 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) - '' se invertito lo reinverto - 'Dim bFliped As Boolean = bFLIP - 'If bFliped Then EgtRotate(nPartId, b3Box.Center, Vector3d.X_AX, 180) - 'Dim dAng As Double = If(IsPositive, 90, -90) - ' eseguo rotazione - bOk = bOk AndAlso EgtRotate(nAddedPartId, b3Box.Center, -Vector3d.X_AX, -90) - ' aggiungiamo il part appena aggiunto, mosso e ruotato al BBox globale + ' 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 - ' salvo il file con i part importati - bOk = bOk AndAlso EgtSaveFile(Map.refProjManagerVM.CurrProj.sProjPath, NGE.CMPTEXT) + ' 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) + End If + nNewPartId = EgtGetNextPart(nNewPartId) + End While WriteMainPrivateProfileString(S_GENERAL, K_LASTUPDATEDIR, Path.GetDirectoryName(sFile)) - ' riapro progetto - 'Map.refProjManagerVM.OpenProject(Map.refProjManagerVM.CurrProj) - Map.refSceneHostVM.MainController.OpenProject(Map.refProjManagerVM.CurrProj.sProjPath, False) - 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 + '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 #End Region ' UpdateBTL