- Correzione UpdateBTL per avere i part aggiunti distanziati sempre di un offset fisso pari a 500

- Correzione UpdateBTL per avere lista part e disegno aggiornati senza riaprire il progetto ogni volta
- Reso visibile il bottone UpdateBTL
This commit is contained in:
RenzoL
2022-02-02 10:09:06 +01:00
parent 5385547af6
commit a6b9fcd2ba
2 changed files with 33 additions and 32 deletions
@@ -58,7 +58,6 @@
</Button>-->
<Button Command="{Binding UpdateBTL_Command}"
ToolTip="{Binding UpdateBTL_ToolTip}"
Visibility="Collapsed"
Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/ProjectManager/UpdateBTL.png" Stretch="Uniform"/>
</Button>
@@ -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