From 33668827f7d771b268182fb1312bb69df66b20db Mon Sep 17 00:00:00 2001 From: DarioS Date: Wed, 22 Mar 2023 17:32:37 +0100 Subject: [PATCH] DataBeam 2.5c6 : - migliorato riconoscimento e gestione lati aperti --- LuaLibs/BeamLib.lua | 251 +++++++++++++---------------------- LuaLibs/ProcessDoubleCut.lua | 40 +----- LuaLibs/ProcessLapJoint.lua | 17 +-- LuaLibs/ProcessMortise.lua | 5 +- Version.lua | 4 +- 5 files changed, 112 insertions(+), 205 deletions(-) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index aa34f22..f96b9f6 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -1,4 +1,4 @@ --- BeamLib.lua by Egaltech s.r.l. 2023/03/06 +-- BeamLib.lua by Egaltech s.r.l. 2023/03/22 -- Libreria globale per Travi -- 2020/07/28 Corretto calcolo attacchi e uscite di lame per non uscire dalla faccia sotto. -- 2020/08/18 Aggiunto a GetNearestParalOpposite e GetNearestOrthoOpposite parametro opzionale vtNorm. @@ -20,6 +20,7 @@ -- 2023/01/10 In GetFaceWithMostAdj aggiunta verifica che la feature abbia almeno una faccia aperta. -- 2023/01/20 Modificata PutStartNearestToEdge per gestire lato preferito come Y+, Y-, z*, Z-. Aggiunta funzione GetDistanceToNextPart. -- 2023/01/31 Aggiunta funzione ConvertToClosedCurve, precedentemente parte di ProcessMortise.Make +-- 2023/02/22 Modifiche a SetOpenSide, aggiunte ChangeOrOpenStart e CurveWithOnlyStraightLines. -- Tabella per definizione modulo local BeamLib = {} @@ -924,162 +925,82 @@ function BeamLib.CalcCollisionSafety( vtDir) end --------------------------------------------------------------------- -function BeamLib.SetOpenSide( nPathInt, vtOrtho, b3Solid, nAddGrpId, nStartPoint) - +function BeamLib.SetOpenSide( nPathInt, b3Solid) -- fondo tra loro le curve compatibili EgtMergeCurvesInCurveCompo( nPathInt) - local nStartIdEnt, nNumEnt = EgtCurveDomain( nPathInt) - local pLastPIni, pLastPEnd - - -- faccio una copia della curva e la esplodo - if nStartIdEnt then - -- prendo i punti - for i = 1, nNumEnt do - local pPini = EgtUP( nPathInt, (i-1), GDB_RT.GLOB) - local pPend = EgtUP( nPathInt, EgtIf( i == nNumEnt, 0, i), GDB_RT.GLOB) - -- Se normale lungo la Z considero il box in X e Y - if abs(vtOrtho:getZ()) > 0.999 then - -- se corrisponde a X - if ( abs( pPini:getX() - b3Solid:getMax():getX()) < 10 * GEO.EPS_SMALL and abs( pPend:getX() - b3Solid:getMax():getX()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getX() - b3Solid:getMin():getX()) < 10 * GEO.EPS_SMALL and abs( pPend:getX() - b3Solid:getMin():getX()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - -- altrimenti se corrisponde a Y - elseif ( abs( pPini:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - end - -- altrimenti se normale lungo la Y considero il box in X e Z - elseif abs(vtOrtho:getZ()) < 0.001 and abs(vtOrtho:getY()) > 0.999 then - -- se corrisponde a X - if ( abs( pPini:getX() - b3Solid:getMax():getX()) < 10 * GEO.EPS_SMALL and abs( pPend:getX() - b3Solid:getMax():getX()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getX() - b3Solid:getMin():getX()) < 10 * GEO.EPS_SMALL and abs( pPend:getX() - b3Solid:getMin():getX()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - -- altrimenti se corrisponde a Z - elseif ( abs( pPini:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - end - -- caso che non dovrebbe mai capitare ma gestito per completezza - -- altrimenti se normale lungo la X considero il box in Y e Z - elseif abs(vtOrtho:getZ()) < 0.001 and abs(vtOrtho:getX()) > 0.999 then - -- se corrisponde a Y - if ( abs( pPini:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - -- altrimenti se corrisponde a Z - elseif ( abs( pPini:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - end - -- se asse Z orizzontale verifico se si avvicina piú a Y - elseif abs(vtOrtho:getZ()) < 0.001 then - if abs(vtOrtho:getY()) > 0.75 then - -- se corrisponde a Z - if ( abs( pPini:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - end - end - -- se asse Y a 0 (fresa ne davanti ne dietro) verifico se si avvicina piú a Z+ - elseif abs(vtOrtho:getY()) < 0.001 then - if abs(vtOrtho:getZ()) > 0.75 then - -- se corrisponde a Y - if ( abs( pPini:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL) then - -- setto l'entità open - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - -- prendo i punti per eventuale modifica del punto di inizio percorso - pLastPIni = pPini - pLastPEnd = pPend - end - end - end - end - -- se devo cambiare il punto di partenza - if nStartPoint then - if pLastPIni and pLastPEnd then - -- calcolo il punto medio con gli ultimi punti utilizzati - local ptPs = ( pLastPIni + pLastPEnd) / 2 - EgtChangeClosedCurveStartPoint( nPathInt, ptPs, GDB_RT.GLOB) - -- se devo eliminare la parte open - if nStartPoint == 2 then - EgtRemoveCurveCompoCurve( nPathInt, true) - EgtRemoveCurveCompoCurve( nPathInt, false) - return true - end + -- vettore indici lati aperti + local vOpen = {} + -- ciclo sulle curve elementari della composita + local _, nNumEnt = EgtCurveDomain( nPathInt) + for i = 0, nNumEnt - 1 do + -- se segmento di retta + if EgtCurveCompoRadius( nPathInt, i) == -1 then + -- verifico se giace in uno dei piani limite del pezzo quindi se è un lato aperto + local ptIni = EgtUP( nPathInt, i, GDB_RT.GLOB) + local ptFin = EgtUP( nPathInt, i + 1, GDB_RT.GLOB) + if ( abs( ptIni:getX() - b3Solid:getMax():getX()) < 100 * GEO.EPS_SMALL and abs( ptFin:getX() - b3Solid:getMax():getX()) < 100 * GEO.EPS_SMALL) or + ( abs( ptIni:getX() - b3Solid:getMin():getX()) < 100 * GEO.EPS_SMALL and abs( ptFin:getX() - b3Solid:getMin():getX()) < 100 * GEO.EPS_SMALL) or + ( abs( ptIni:getY() - b3Solid:getMax():getY()) < 100 * GEO.EPS_SMALL and abs( ptFin:getY() - b3Solid:getMax():getY()) < 100 * GEO.EPS_SMALL) or + ( abs( ptIni:getY() - b3Solid:getMin():getY()) < 100 * GEO.EPS_SMALL and abs( ptFin:getY() - b3Solid:getMin():getY()) < 100 * GEO.EPS_SMALL) or + ( abs( ptIni:getZ() - b3Solid:getMax():getZ()) < 100 * GEO.EPS_SMALL and abs( ptFin:getZ() - b3Solid:getMax():getZ()) < 100 * GEO.EPS_SMALL) or + ( abs( ptIni:getZ() - b3Solid:getMin():getZ()) < 100 * GEO.EPS_SMALL and abs( ptFin:getZ() - b3Solid:getMin():getZ()) < 100 * GEO.EPS_SMALL) then + -- aggiorno il vettore dei lati aperti + table.insert( vOpen, i) end end end + -- assegno gli indici dei lati aperti + EgtSetInfo( nPathInt, 'OPEN', vOpen) + return true +end - return false +--------------------------------------------------------------------- +function BeamLib.ChangeOrOpenStart( nPathInt, nStartPoint) + -- verifico richiesta + if nStartPoint ~= 1 and nStartPoint ~= 2 then + return false + end + -- verifico che la curva sia chiusa + if not EgtCurveIsClosed( nPathInt) then + return true + end + -- recupero l'indice del segmento aperto più lungo + local nMaxOpen, dMaxLen + local vOpen = EgtGetInfo( nPathInt or GDB_ID.NULL, 'OPEN') + for i = 0, #( vOpen or {}) do + -- se primo o più lungo, lo salvo + local dLen = EgtCurveCompoLength( nPathInt, vOpen[i]) + if not dMaxLen or dLen > dMaxLen then + dMaxLen = dLen + nMaxOpen = vOpen[i] + end + end + -- se esiste tratto aperto + if nMaxOpen then + -- sposto il punto di inizio a metà del tratto aperto più lungo (la curva deve essere chiusa) + EgtChangeClosedCurveStart( nPathInt, nMaxOpen + 0.5) + -- aggiorno il vettore dei lati aperti + for i = 1, #vOpen do + vOpen[i] = vOpen[i] - nMaxOpen + end + table.insert( vOpen, #vOpen) + -- se devo eliminare gli estremi aperti + if nStartPoint == 2 then + -- elimino gli estremi + EgtRemoveCurveCompoCurve( nPathInt, true) + EgtRemoveCurveCompoCurve( nPathInt, false) + -- aggiorno il vettore dei lati aperti + table.remove( vOpen, 1) + table.remove( vOpen) + for i = 1, #vOpen do + vOpen[i] = vOpen[i] - 1 + end + end + end + -- assegno gli indici modificati dei lati aperti + EgtSetInfo( nPathInt, 'OPEN', vOpen) + -- restituisco flag percorso aperto + return ( not EgtCurveIsClosed( nPathInt)) end ------------------------------------------------------------------------------------------------------------- @@ -1102,15 +1023,13 @@ function BeamLib.ConvertToClosedCurve( Proc, AuxId) -- sistemo i lati aperti local vFacAdj = EgtSurfTmFacetAdjacencies( Proc.Id, 0)[1] if vFacAdj then - local sOpen = '' + local vOpen = {} for i = 1, #vFacAdj do if vFacAdj[i] < 0 then - sOpen = sOpen .. EgtIf( #sOpen > 0, ',', '') .. tostring( i - 1) + table.insert( vOpen, i - 1) end end - if #sOpen > 0 then - EgtSetInfo( AuxId, 'OPEN', sOpen) - end + EgtSetInfo( AuxId, 'OPEN', vOpen) end end end @@ -1118,5 +1037,25 @@ function BeamLib.ConvertToClosedCurve( Proc, AuxId) return true, bCurveModified end +--------------------------------------------------------------------- +function BeamLib.CurveWithOnlyStraightLines( nPathInt) + -- verifico sia una retta oppure una curva composita + local nType = EgtGetType( nPathInt) + if nType == GDB_TY.CRV_LINE then + return true + elseif nType~= GDB_TY.CRV_COMPO then + return false + end + -- ciclo sulle curve elementari della composita + local _, nNumEnt = EgtCurveDomain( nPathInt) + for i = 0, nNumEnt - 1 do + -- se segmento di retta + if EgtCurveCompoRadius( nPathInt, i) ~= -1 then + return false + end + end + return true +end + ------------------------------------------------------------------------------------------------------------- return BeamLib diff --git a/LuaLibs/ProcessDoubleCut.lua b/LuaLibs/ProcessDoubleCut.lua index d75805a..d5289c7 100644 --- a/LuaLibs/ProcessDoubleCut.lua +++ b/LuaLibs/ProcessDoubleCut.lua @@ -1,6 +1,7 @@ --- ProcessDoubleCut.lua by Egaltech s.r.l. 2022/07/11 +-- ProcessDoubleCut.lua by Egaltech s.r.l. 2023/03/22 -- Gestione calcolo doppi tagli di lama per Travi --- 2022/08/29 Implementata la fresatura dal lato per tagli problematici per PF1250 +-- 2022/08/29 Implementata la fresatura dal lato per tagli problematici per PF1250. +-- 2023/03/22 Eliminata SetOpenSide locale, si usa quella di libreria. -- Tabella per definizione modulo local ProcessDoubleCut = {} @@ -222,39 +223,6 @@ local function VerifyPocket( Proc, dDiam, dDepth, dMaxTotLen, sMchFindMaster, bP return bUsePocketing, sPocketing, dMaxDepth, dToolDiam end ---------------------------------------------------------------------- -local function SetOpenSide( nPathInt, vtOrtho, b3Solid, nAddGrpId) - -- fondo tra loro le curve compatibili - EgtMergeCurvesInCurveCompo( nPathInt) - local nStartIdEnt, nNumEnt = EgtCurveDomain( nPathInt) - local pLastPIni, pLastPEnd - -- faccio una copia della curva e la esplodo - if nStartIdEnt then - -- ciclo i lati della curva e controllo per ognuno se giace in uno dei piani limite del pezzo: se sì allora il lato è aperto - for i = 1, nNumEnt do - local pPini = EgtUP( nPathInt, (i-1), GDB_RT.GLOB) - local pPend = EgtUP( nPathInt, EgtIf( i == nNumEnt, 0, i), GDB_RT.GLOB) - if ( abs( pPini:getX() - b3Solid:getMax():getX()) < 10 * GEO.EPS_SMALL and abs( pPend:getX() - b3Solid:getMax():getX()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getX() - b3Solid:getMin():getX()) < 10 * GEO.EPS_SMALL and abs( pPend:getX() - b3Solid:getMin():getX()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMax():getY()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL and abs( pPend:getY() - b3Solid:getMin():getY()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMax():getZ()) < 10 * GEO.EPS_SMALL) or - ( abs( pPini:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL and abs( pPend:getZ() - b3Solid:getMin():getZ()) < 10 * GEO.EPS_SMALL) then - -- scrivo nelle proprietà della curva quali sono i lati aperti - local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or '' - if #sActInfo > 0 then - -- se ci sono già altri lati aperti - EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i-1)) - else - -- se è l'unico - EgtSetInfo( nPathInt, 'OPEN', (i-1)) - end - end - end - end - return false -end - --------------------------------------------------------------------- local function MakeBySidePocket( Proc, nPhase, nRawId, nPartId, nAddGrpId, b3Solid) local nFirstMachId @@ -287,7 +255,7 @@ local function MakeBySidePocket( Proc, nPhase, nRawId, nPartId, nAddGrpId, b3Sol -- e assegno l'estrusione nPathInt = EgtExtractSurfTmLoops( nSurfInt, nAddGrpId) EgtModifyCurveExtrusion( nPathInt, vtOrtho, GDB_RT.GLOB) - SetOpenSide( nPathInt, vtOrtho, b3Solid, nAddGrpId) + BL.SetOpenSide( nPathInt, b3Solid) -- variabili per parametri lavorazione local dMachDepth local dElev = 0 diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index e2a2996..cdd8172 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2022/12/21 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2022/12/22 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -1652,7 +1652,8 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw, -- normale alla faccia aggiunta vtN1 = Vector3d( vtOrtho) -- imposto i lati aperti - BL.SetOpenSide( nFirstId, vtOrtho, b3Solid, nAddGrpId, 2) + BL.SetOpenSide( nFirstId, b3Solid) + BL.ChangeOrOpenStart( nFirstId, 2) end -- se non trovato il percorso, esco @@ -2407,11 +2408,6 @@ local function MakeChamfer( Proc, bIs3Faces, nAddGrpId, vtOrtho, b3Solid, nSurfI -- ottengo le curve di contorno libero local nAuxId1, nAuxId2, nNumIdAux if bIs3Faces then --- nAuxId1, _ = EgtExtractSurfTmLoops( nSurfInt, nAddGrpId) --- EgtModifyCurveExtrusion( nAuxId1, vtOrtho, GDB_RT.GLOB) --- BL.SetOpenSide( nAuxId1, vtOrtho, b3Solid, nAddGrpId, 1) --- nNumIdAux = 2 - -- estraggo i percorsi nAuxId1, nNumIdAux = EgtExtractSurfTmLoops( Proc.Id, nAddGrpId) -- se percorso creato estraggo solo i percorsi delle facce interessate, non di testa @@ -3530,7 +3526,7 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha EgtModifyCurveExtrusion( nPathInt, vtOrtho, GDB_RT.GLOB) -- se ho 3 facce oppure se forzato, ciclo sulle entià del percorso per segnare quelle che sono aperte. if bIs3Faces or bSetOpenBorders then - BL.SetOpenSide( nPathInt, vtOrtho, b3Solid, nAddGrpId) + BL.SetOpenSide( nPathInt, b3Solid) end -- variabili per parametri lavorazione local dMachDepth @@ -4349,9 +4345,10 @@ local function ManageAntiSplintByMill( Proc, nPhase, nRawId, nPartId, b3Raw, end end vtN1 = Vector3d(vtOrtho) - local bOkPath = BL.SetOpenSide( nFirstId, vtOrtho, b3Solid, nAddGrpId, 2) + BL.SetOpenSide( nFirstId, b3Solid) + local bOpenPath = BL.ChangeOrOpenStart( nFirstId, 2) -- se non ho un percorso chiuso estraggo i percorsi - if bOkPath then + if bOpenPath then -- creo percorsi antisplint dagli estremi dei percorsi di contorno trovati pPaths = MakePathsOnExtremPoints( nAddGrpId, nFirstId, pPaths, dTDiam) end diff --git a/LuaLibs/ProcessMortise.lua b/LuaLibs/ProcessMortise.lua index e757b5a..5309722 100644 --- a/LuaLibs/ProcessMortise.lua +++ b/LuaLibs/ProcessMortise.lua @@ -296,7 +296,10 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- recupero versore estrusione della curva supplementare local vtExtr = EgtCurveExtrusion( AuxId, GDB_ID.ROOT) -- se curva di contorno aperta la rendo chiusa - BL.ConvertToClosedCurve( Proc, AuxId) + local _, bModif = BL.ConvertToClosedCurve( Proc, AuxId) + if not bModif then + BL.SetOpenSide( AuxId, b3Solid) + end -- verifico se frontale local bFront = ( Proc.Prc == 51) -- recupero i dati della faccia di fondo diff --git a/Version.lua b/Version.lua index 4b0c473..4fb77b0 100644 --- a/Version.lua +++ b/Version.lua @@ -1,6 +1,6 @@ --- Version.lua by Egaltech s.r.l. 2023/03/20 +-- Version.lua by Egaltech s.r.l. 2023/03/22 -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.5c5' +VERSION = '2.5c6' MIN_EXE = '2.5b3'