diff --git a/Profiles/WinLib/WinCalculate.lua b/Profiles/WinLib/WinCalculate.lua index 0562310..8f51db7 100644 --- a/Profiles/WinLib/WinCalculate.lua +++ b/Profiles/WinLib/WinCalculate.lua @@ -2291,12 +2291,12 @@ local function SearchSash( nAreaId, SashList) local nSouId = EgtGetInfo( nBaseOutlineId, WIN_SOU, 'i') local nSouAreaId = EgtGetParent( EgtGetParent( nSouId)) local nSouAreaType = EgtGetInfo( nSouAreaId, WIN_AREATYPE, 'i') - while nSouAreaType ~= WIN_AREATYPES.FRAME do + while nSouId and nSouAreaType ~= WIN_AREATYPES.FRAME do nSouId = EgtGetInfo( nSouId, WIN_SOU, 'i') - nSouAreaId = EgtGetParent( EgtGetParent( nSouId)) - nSouAreaType = EgtGetInfo( nSouAreaId, WIN_AREATYPE, 'i') + nSouAreaId = EgtGetParent( EgtGetParent( nSouId or GDB_ID.NULL)) + nSouAreaType = EgtGetInfo( nSouAreaId or GDB_ID.NULL, WIN_AREATYPE, 'i') end - if EgtGetName( nSouId) ~= WIN_SPLIT then + if nSouId and EgtGetName( nSouId) ~= WIN_SPLIT then local nFrameFrameLayerId = EgtGetFirstNameInGroup( nSouAreaId, WIN_HDW_FRAME) if not nFrameFrameLayerId then nFrameFrameLayerId = EgtGroup( nSouAreaId) @@ -2355,7 +2355,7 @@ local function SearchSash( nAreaId, SashList) end -- funzione che aggiunge l'hardware -function WinCalculate.AddHardware( nFrameId) +function WinCalculate.AddHardwareForSash( nFrameId) -- cerco ed indicizzo ante del serramento local SashList = {} SearchSash( nFrameId, SashList) @@ -2576,16 +2576,17 @@ function WinCalculate.AddHardware( nFrameId) dDepth = tonumber( vMacro[3]) end EgtModifyCurveThickness( nHoleId, - dDepth) - EgtTransform( nHoleId, frHdwFrame) EgtSetColor( nHoleId, EgtStdColor( 'GRAY')) EgtSetInfo( nHoleId, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.HOLE) -- per solido if bCalcSolid then local nSolidHoleId = EgtSurfTmByRegionExtrusion( nProcLayerId, nHoleId, - ( dDepth + 1) * Z_AX()) EgtMove( nSolidHoleId, Z_AX()) + EgtTransform( nSolidHoleId, frHdwFrame) EgtSurfTmSubtract( nMainExtrusionId, nSolidHoleId) EgtErase( nSolidHoleId) end + EgtTransform( nHoleId, frHdwFrame) end end @@ -2594,5 +2595,29 @@ function WinCalculate.AddHardware( nFrameId) end +-- funzione che aggiunge l'hardware +function WinCalculate.AddHardware( nAreaId) + -- verifico il tipo + local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i') + local nSplitLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_SPLIT) + local nSplitType = WIN_SPLITTYPES.NULL + if nSplitLayerId then + nSplitType = EgtGetInfo( nSplitLayerId, WIN_SPLITTYPE, 'i') + end + if nAreaType == WIN_AREATYPES.SASH or ( nSplitLayerId and nSplitType == WIN_SPLITTYPES.FRENCH) then + -- lancio calcolo sash + WinCalculate.AddHardwareForSash( nAreaId) + return + else + -- verifico se ci sono sotto-aree + local nChildAreaId = EgtGetFirstNameInGroup( nAreaId, WIN_AREA .. '*') + while nChildAreaId do + -- lancio verifica di quell'area + WinCalculate.AddHardware( nChildAreaId) + nChildAreaId = EgtGetNextName( nChildAreaId, WIN_AREA .. '*') + end + end +end + --------------------------------------------------------------------- return WinCalculate diff --git a/Profiles/WinProject.lua b/Profiles/WinProject.lua index f8d1cea..2481338 100644 --- a/Profiles/WinProject.lua +++ b/Profiles/WinProject.lua @@ -52,6 +52,11 @@ local function WinCreate_AddSash() end _G.WinCreate_AddSash = WinCreate_AddSash +local function WinCreate_AddHardware() + WinCreate.AddHardware(WDG.AREAID, WDG.FAVOURITE) +end +_G.WinCreate_AddHardware = WinCreate_AddHardware + local function WinCreate_AddFill() WDG.AREAID = WinCreate.AddFill(WDG.AREAID, WDG.FILLTYPE) end @@ -96,4 +101,9 @@ local function WinCalculate_CreatePartFromArea() end _G.WinCalculate_CreatePartFromArea = WinCalculate_CreatePartFromArea +local function WinCalculate_AddHardware() + WinCalculate.AddHardware(WDG.FRAMEID) +end +_G.WinCalculate_AddHardware = WinCalculate_AddHardware + ---------------------------------------------------------------------