DataWindow :

- lettura da jwd pezzi con dimensioni variabili.
This commit is contained in:
Annamaria Sassi
2026-01-29 14:56:44 +01:00
parent d8d34552e9
commit f04a6f72c5
2 changed files with 39 additions and 6 deletions
+35 -6
View File
@@ -47,6 +47,19 @@ local function GetDimensions( tDimensions)
return vDims
end
---------------------------------------------------------------------
local function GetSplitDimensions( tDimensions)
local vDims = {}
for i = 1, #tDimensions do
local nIndex = tDimensions[i][JWD_INDEX]
local nArea = tDimensions[i][JWD_SPLIT_AREA]
if not vDims[nArea] then
vDims[nArea] = {}
end
vDims[nArea][nIndex] = tDimensions[i][JWD_VALUE]
end
return vDims
end
---------------------------------------------------------------------
local function GetFrameShape( sShape)
@@ -192,9 +205,10 @@ local function ConvertTableToGeometry( AreaTable, nParentId)
local nType = GetFrameShape( AreaTable[JWD_FRAME_SHAPE])
local vJoints = GetJoints( AreaTable[JWD_JOINTS])
local vDim = GetDimensions( AreaTable[JWD_DIMENSION_LIST])
local vElementDim = GetDimensions( AreaTable[JWD_ELEMENT_DIMENSION])
-- creo il telaio
local nAreaId = WinCreate.CreateFrame( nType, vDim, vJoints, {}, nAreaNbr)
local nAreaId = WinCreate.CreateFrame( nType, vDim, vJoints, vElementDim, nAreaNbr)
if not nAreaId then
return
end
@@ -239,7 +253,8 @@ local function ConvertTableToGeometry( AreaTable, nParentId)
if #tSashes == 1 then
local vJoints = GetJoints( tSashes[1][JWD_JOINTS])
local nOpeningType = GetOpeningType( tSashes[1][JWD_OPENING_TYPE])
local nAreaId = WinCreate.AddSash( nParentId, vJoints, {}, nOpeningType, nAreaNbr)
local vElementDim = GetDimensions( tSashes[1][JWD_ELEMENT_DIMENSION])
local nAreaId = WinCreate.AddSash( nParentId, vJoints, vElementDim, nOpeningType, nAreaNbr)
-- aggiungo ferramenta sull'anta
local sHandleSide
if nOpeningType == WIN_OPENING_TYPES.TURNONLY_LEFT or
@@ -277,7 +292,7 @@ local function ConvertTableToGeometry( AreaTable, nParentId)
vOpeningTypes[i] = GetOpeningType( tSashes[i][JWD_OPENING_TYPE])
vSashNbrs[i] = tSashes[i][JWD_ID_SASH]
vJoints[i] = GetJoints( tSashes[i][JWD_JOINTS])
vPartsDim[i] = {}
vPartsDim[i] = GetDimensions( tSashes[i][JWD_ELEMENT_DIMENSION])
end
local vSashTypes, sHandleSide = GetSashTypes( tSashes, vOpeningTypes)
@@ -308,6 +323,7 @@ local function ConvertTableToGeometry( AreaTable, nParentId)
elseif AreaTable[JWD_AREA_TYPE] == 'SPLIT' then
local vVertDimensions = {}
local vVertMeasureType = {}
local vVertElementDimension = GetSplitDimensions(AreaTable[JWD_ELEMENT_VERT_DIMENSION])
local vSplitVertDimensions = AreaTable[JWD_SPLIT_VERT_POS]
for i = 1, #vSplitVertDimensions do
vVertMeasureType[i] = GetMeasureType( vSplitVertDimensions[i][JWD_MEASURE_TYPE])
@@ -315,6 +331,7 @@ local function ConvertTableToGeometry( AreaTable, nParentId)
end
local vHorizDimensions = {}
local vHorizMeasureType = {}
local vHorizElementDimension = GetSplitDimensions(AreaTable[JWD_ELEMENT_HORIZ_DIMENSION])
local vSplitHorizDimensions = AreaTable[JWD_SPLIT_HORIZ_POS]
for i = 1, #vSplitHorizDimensions do
vHorizMeasureType[i] = GetMeasureType( vSplitHorizDimensions[i][JWD_MEASURE_TYPE])
@@ -322,11 +339,23 @@ local function ConvertTableToGeometry( AreaTable, nParentId)
end
local vSplitAreas
if AreaTable[JWD_SPLIT_TYPE] == 'GRID' then
vSplitAreas = WinCreate.AddGridSplits( nParentId, vVertMeasureType, vVertDimensions, vHorizMeasureType, vHorizDimensions, AreaTable[JWD_SPLIT_START_VERT], {}, nAreaNbr)
local vElementDimension = {}
if AreaTable[JWD_SPLIT_START_VERT] then
vElementDimension = vVertElementDimension[0]
for i = 1, #vHorizElementDimension do
EgtJoinTables( vElementDimension, vHorizElementDimension[i])
end
else
vElementDimension = vHorizElementDimension[0]
for i = 1, #vVertElementDimension do
EgtJoinTables( vElementDimension, vVertElementDimension[i])
end
end
vSplitAreas = WinCreate.AddGridSplits( nParentId, vVertMeasureType, vVertDimensions, vHorizMeasureType, vHorizDimensions, AreaTable[JWD_SPLIT_START_VERT], vElementDimension, nAreaNbr)
elseif AreaTable[JWD_SPLIT_TYPE] == 'VERTICAL' then
vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.VERTICAL, vVertMeasureType, vVertDimensions, {}, false, nAreaNbr)
vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.VERTICAL, vVertMeasureType, vVertDimensions, vVertElementDimension[0], false, nAreaNbr)
else
vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.HORIZONTAL, vHorizMeasureType, vHorizDimensions, {}, false, nAreaNbr)
vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.HORIZONTAL, vHorizMeasureType, vHorizDimensions, vHorizElementDimension[0], false, nAreaNbr)
end
for i = 1, #vSplitAreas do
ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][i], vSplitAreas[i])