diff --git a/LuaLibs/ProcessMortise.lua b/LuaLibs/ProcessMortise.lua index 52edc08..a524dd4 100644 --- a/LuaLibs/ProcessMortise.lua +++ b/LuaLibs/ProcessMortise.lua @@ -10,6 +10,7 @@ -- 2023/01/31 Aggiunta gestione lavorazione in doppio. -- 2023/01/31 Creata la funzione ConvertToClosedCurve (parte della ProcessMortise.Make) e spostata in BeamLib. -- 2023/05/11 Se lavorazione in doppio e precedente no oppure di tipo diverso, forzo risalita a Zmax. +-- 2023/06/27 Esclusa la ricerca lati aperti per le mortase passanti, per le quali il contorno finisce sulla faccia e il riconoscimento sbaglia. -- Tabella per definizione modulo local ProcessMortise = {} @@ -294,13 +295,6 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtOutLog( sErr) return false, sErr end - -- recupero versore estrusione della curva supplementare - local vtExtr = EgtCurveExtrusion( AuxId, GDB_ID.ROOT) - -- se curva di contorno aperta la rendo chiusa - 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 @@ -311,8 +305,16 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ptC = frMor:getOrigin() vtN = frMor:getVersZ() end + -- recupero versore estrusione della curva supplementare + local vtExtr = EgtCurveExtrusion( AuxId, GDB_ID.ROOT) -- Confronto le direzioni dei 2 versori : se diverse la faccia 0 non è il fondo => mortasa passante local bOpenBtm = not AreSameVectorApprox( vtExtr, vtN) + -- se curva di contorno aperta la rendo chiusa + local _, bModif = BL.ConvertToClosedCurve( Proc, AuxId) + -- se la mortasa passante il contorno è sulla faccia della trave e il riconoscimento lati aperti non è corretto + if not bModif and not bOpenBtm then + BL.SetOpenSide( AuxId, b3Solid) + end if bOpenBtm then -- creo superficie chiusa local nFlat = EgtSurfTmByFlatContour( EgtGetParent( AuxId), AuxId, 0.05) @@ -530,7 +532,7 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) return false, sErr end -- faccio la copia e la metto nel layer dedicato alle geometrie aggiunte - local AuxId_oppo = EgtCopyGlob( AuxId, BL.GetAddGroup(nPartId)) + local AuxId_oppo = EgtCopyGlob( AuxId, BL.GetAddGroup(nPartId)) -- inverto la direzione estrusione di questa EgtModifyCurveExtrusion( AuxId_oppo, - vtExtr, GDB_ID.ROOT) -- aggiungo geometria