DataWindow :

- AddHardwareByGroupId ora riceve più valori di area number.
This commit is contained in:
SaraP
2025-10-29 13:04:35 +01:00
parent cf8065e226
commit bb291d6101
+37 -48
View File
@@ -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