diff --git a/Designing/WinProject.lua b/Designing/WinProject.lua index 30dd059..dd14b5e 100644 --- a/Designing/WinProject.lua +++ b/Designing/WinProject.lua @@ -63,6 +63,33 @@ local function FillVariableList( sName, List) end end +---------------------------------------------------------------------------------- +local function GetAreaIdsFromNumbers( vAreaNbrs) + -- inizializzo la lista + local vAreaIds = {} + for i = 1, #vAreaNbrs do + vAreaIds[i] = GDB_ID.NULL + end + -- recupero le aree richieste + local vStack = { EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREA .. '*')} + local i = 1 + while vStack[i] do + local nAreaNbr = EgtGetInfo( vStack[i], WIN_AREA_NBR, 'i') or -1 + for j = 1, #vAreaNbrs do + if nAreaNbr == vAreaNbrs[j] then + vAreaIds[j] = vStack[i] + break + end + end + -- ricerco nelle sue sottoaree + local vChildren = EgtGetNameInGroup( vStack[i], WIN_AREA .. '*') + vStack = EgtJoinTables( vStack, vChildren) + i = i + 1 + end + + return vAreaIds +end + ---------------------------------------------------------------------------------- local function SetProfilePath() _G.sProfilePath = WDG.PROFILEPATH @@ -247,26 +274,15 @@ _G.WinCalculate_AddHardware = WinCalculate_AddHardware ---------------------------------------------------------------------------------- local function WinCalculate_AddHardwareByGroupId() - -- ricavo l'id geometrico dell'area a partire dal numero - local vStack = { EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREA .. '*')} - local nAreaId - local i = 1 - while vStack[i] do - local nAreaNbr = EgtGetInfo( vStack[i], WIN_AREA_NBR, 'i') or -1 - if nAreaNbr == WDG.AREANBR then - nAreaId = vStack[i] - break - else - -- ricerco nelle sue sottoaree - local vChildren = EgtGetNameInGroup( vStack[i], WIN_AREA .. '*') - vStack = EgtJoinTables( vStack, vChildren) - end - i = i + 1 - end + -- recupero gli id geometrici delle aree richieste + local vAreaNbrs = GetVariableList( 'AREANBR') + local vAreaIds = GetAreaIdsFromNumbers( vAreaNbrs) - -- se trovata calcolo la ferramenta - if nAreaId then - WDG.HARDWAREKIT_LIST, WDG.HARDWAREPOSITION_LIST, WDG.HARDWAREOPTION_LIST = WinCalculate.AddHardware( nAreaId, WDG.CALC_MACHINING, WDG.CALC_HARDWARELIST, WDG.CALC_POSITIONLIST, WDG.CALC_OPTIONLIST) + for i = 1, #vAreaIds do + if vAreaIds[i] ~= GDB_ID.NULL then + WDG['HARDWAREKIT_LIST' .. tostring(i)], WDG['HARDWAREPOSITION_LIST' .. tostring(i)], WDG['HARDWAREOPTION_LIST' .. tostring(i)] = + WinCalculate.AddHardware( vAreaIds[i], WDG.CALC_MACHINING, WDG.CALC_HARDWARELIST, WDG.CALC_POSITIONLIST, WDG.CALC_OPTIONLIST) + end end end _G.WinCalculate_AddHardwareByGroupId = WinCalculate_AddHardwareByGroupId @@ -369,36 +385,9 @@ _G.WinGetGlassesList = WinGetGlassesList ---------------------------------------------------------------------------------- local function WinGetSashShape() - -- recupero i numeri delle aree richieste + -- recupero gli id geometrici delle aree richieste local vAreaNbrs = GetVariableList( 'AREANBR') - -- inizializzo lista di aree richieste - local vAreaIds = {} - for i = 1, #vAreaNbrs do - vAreaIds[i] = GDB_ID.NULL - end - -- recupero le aree richieste - local vStack = { EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREA .. '*')} - local i = 1 - while vStack[i] do - -- se anta o french split, verifico se รจ area richiesta - local nType = EgtGetInfo( vStack[i], WIN_AREATYPE, 'i') - local nSplitType = EgtGetInfo( EgtGetFirstNameInGroup( vStack[i], WIN_BASESPLIT) or GDB_ID.NULL, WIN_SPLITTYPE, 'i') or WIN_SPLITTYPES.NULL - if nType == WIN_AREATYPES.SASH or nSplitType == WIN_SPLITTYPES.FRENCH then - local nAreaNbr = EgtGetInfo( vStack[i], WIN_AREA_NBR, 'i') or -1 - for j = 1, #vAreaNbrs do - if nAreaNbr == vAreaNbrs[j] then - vAreaIds[j] = vStack[i] - break - end - end - else - -- ricerco nelle sue sottoaree - local vChildren = EgtGetNameInGroup( vStack[i], WIN_AREA .. '*') - vStack = EgtJoinTables( vStack, vChildren) - end - i = i + 1 - end - + local vAreaIds = GetAreaIdsFromNumbers( vAreaNbrs) -- ricavo le forme for i = 1, #vAreaIds do if vAreaIds[i] ~= GDB_ID.NULL then