From e720c129bfcfb73f474685eb9d3e64990cfce843 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sun, 7 Jun 2026 19:16:58 +0200 Subject: [PATCH] OmagCUT : - aggiustamento automatico tagli inclinati con talloni e regioni pezzi al cambio spessore grezzo (#2990). --- CadCuts/NestPageUC.xaml.vb | 6 +++--- RawPhoto/RawPartPageUC.xaml.vb | 23 ++++++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CadCuts/NestPageUC.xaml.vb b/CadCuts/NestPageUC.xaml.vb index 69093be..42bdc11 100644 --- a/CadCuts/NestPageUC.xaml.vb +++ b/CadCuts/NestPageUC.xaml.vb @@ -1862,7 +1862,7 @@ Public Class NestPageUC End If End Function - Private Function AdjustPartSideAngleHeel(nPartId As Integer, dTh As Double) As Boolean + Friend Function AdjustPartSideAngleHeel(nPartId As Integer, dTh As Double) As Boolean ' Recupero entità del layer esterno e di quelli interni Dim vEnt As New List(Of Integer) Dim nEntId As Integer = EgtGetFirstInGroup(EgtGetFirstNameInGroup(nPartId, NAME_OUTLOOP)) @@ -1915,7 +1915,7 @@ Public Class NestPageUC EgtRemoveInfo(nEnt, INFO_DEPTH2) EgtRemoveInfo(nEnt, INFO_AGG2) End If - ' Inclinazione interna + ' Inclinazione interna Else ' Se tallone inferiore a spessore If dHeel < dTh - 10 * EPS_SMALL Then @@ -1932,7 +1932,7 @@ Public Class NestPageUC EgtRemoveInfo(nEnt, INFO_AGG2) End If End If - ' Se altrimenti inclinazione esterna + ' Se altrimenti inclinazione esterna ElseIf dSideAng > EPS_ANG_SMALL Then If Not bSizeOnTop Then EgtSetInfo(nEnt, INFO_OFFSET, -dTh * Math.Tan(dSideAng * Math.PI / 180)) diff --git a/RawPhoto/RawPartPageUC.xaml.vb b/RawPhoto/RawPartPageUC.xaml.vb index bf0382a..ab18d6d 100644 --- a/RawPhoto/RawPartPageUC.xaml.vb +++ b/RawPhoto/RawPartPageUC.xaml.vb @@ -1,5 +1,6 @@ Imports System.IO Imports System.Runtime.Remoting.Metadata.W3cXsd2001 +Imports System.Security.Cryptography Imports EgtUILib Imports EgtWPFLib @@ -1808,11 +1809,11 @@ Public Class RawPartPageUC If nRawId = GDB_ID.NULL And m_RawHeight > EPS_SMALL Then m_CurrProjPage.m_nRawId = EgtAddRawPart(Point3d.ORIG(), m_RawLength + 2 * m_RawKerf, m_RawWidth + 2 * m_RawKerf, m_RawHeight, Col) - ' se esiste e da cancellare + ' se esiste e da cancellare ElseIf m_RawHeight < EPS_SMALL Then EgtRemoveRawPart(nRawId) m_CurrProjPage.m_nRawId = GDB_ID.NULL - ' Altrimenti lo modifico + ' Altrimenti lo modifico Else m_CurrProjPage.m_nRawId = nRawId EgtModifyRawPart(nRawId, Point3d.ORIG(), m_RawLength + 2 * m_RawKerf, @@ -1905,7 +1906,7 @@ Public Class RawPartPageUC If m_CurrProjPage.m_nRawId = GDB_ID.NULL Then UpdateRawPart(True) Return - ' se da cancellare + ' se da cancellare ElseIf m_RawHeight < EPS_SMALL Then ' Se ci sono pezzi If EgtGetFirstPartInRawPart(m_CurrProjPage.m_nRawId) <> GDB_ID.NULL Then @@ -1930,7 +1931,7 @@ Public Class RawPartPageUC ' Imposto modalità rettangolo RawModeCmBx.SelectedIndex = RAWMODE.RECTANGLE PointsGpBx.Visibility = Windows.Visibility.Hidden - ' altrimenti da aggiornare + ' altrimenti da aggiornare Else ' Salvo vecchia altezza Dim dOldHeight As Double = GetRawHeight() @@ -1943,10 +1944,22 @@ Public Class RawPartPageUC If nKerfId <> GDB_ID.NULL Then EgtMove(nKerfId, vtMove) End If - ' Se ci sono pezzi ne aggiorno la quota + ' Recupero il tipo di progetto (pezzi piani o cornici) + Dim nPrjType As Integer = m_CurrProjPage.GetCurrentProjectType() + ' Se ci sono pezzi Dim nPartId As Integer = EgtGetFirstPartInRawPart(m_CurrProjPage.m_nRawId) While nPartId <> GDB_ID.NULL + ' Aggiorno la quota EgtMovePartInRawPart(nPartId, vtMove) + ' Se pezzi piani, aggiorno lati inclinati e regioni + If nPrjType = CurrentProjectPageUC.PRJ_TYPE.FLATS Then + ' Sistemazioni per eventuali lati inclinati con tallone + m_MainWindow.m_CadCutPageUC.m_NestPage.AdjustPartSideAngleHeel(nPartId, m_RawHeight) + ' Sistemazioni per eventuali lati esterni inclinati e/o offsettati + EgtCalcFlatPartUpRegion(nPartId, True) + EgtCalcFlatPartDownRegion(nPartId, m_RawHeight) + End If + ' Passo al successivo nPartId = EgtGetNextPartInRawPart(nPartId) End While End If