Modificato Split a griglia

This commit is contained in:
Annamaria Sassi
2025-09-25 08:55:23 +02:00
parent 93b8f140c2
commit 4c86c76a08
4 changed files with 44 additions and 34 deletions
+18 -21
View File
@@ -323,7 +323,7 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
local nResArea1
local nResArea2 = nAreaLayerId
local dAddPosition = 0
for nIndex = 1, #PositionList do
for nIndex = 1, #PositionList - 1 do
if nIndex > 1 then
EgtSetInfo( nResArea2, WIN_PRJ_ORIGSPLIT, nAreaLayerId)
end
@@ -332,7 +332,7 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
return
end
table.insert( AreaList, nResArea1)
if nIndex == #PositionList then
if nIndex == #PositionList -1 then
table.insert( AreaList, nResArea2)
end
dAddPosition = dAddPosition + PositionList[nIndex]
@@ -366,47 +366,44 @@ end
-- funzione che crea tagli split grid
function WinCreate.AddGridSplits( nAreaLayerId, MeasureType, PositionListVert, PositionListHoriz, bStartVertical, nSplitType)
local AreaResult = {}
if bStartVertical then
local nProportionVert = 0
if MeasureType == WIN_MEASURE.PROPORTIONAL then
for i = 1, # PositionListVert do
nProportionVert = nProportionVert + PositionListVert[i]
end
local nProportionVert = 0
local nProportionHoriz = 0
if MeasureType == WIN_MEASURE.PROPORTIONAL then
for i = 1, #PositionListVert do
nProportionVert = nProportionVert + PositionListVert[i]
end
for i = 1, #PositionListHoriz do
nProportionHoriz = nProportionHoriz + PositionListHoriz[i]
end
end
if bStartVertical then
local AreaList = WinCreate.AddSplits( nAreaLayerId, WIN_SPLITORIENTATION.VERTICAL, MeasureType, PositionListVert, nProportionVert, nSplitType)
-- recupero contorno area precedente
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
local HorizAbs = {}
local dPositionCum = 0
local nProportionHoriz = 0
if MeasureType == WIN_MEASURE.PROPORTIONAL then
for i = 1, # PositionListHoriz do
nProportionHoriz = nProportionHoriz + PositionListHoriz[i]
end
end
for i = 1, #PositionListHoriz do
if MeasureType == WIN_MEASURE.ABSOLUT then
HorizAbs[i] = PositionListHoriz[i]
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
HorizAbs[i] = b3OutlineLayer:getDimY() / ( nProportion - dPositionCum) * PositionListHoriz[i]
dPositionCum = dPositionCum + PositionListHoriz[i]
--HorizAbs[i] = b3OutlineLayer:getDimY() / ( nProportionHoriz - dPositionCum) * PositionListHoriz[i]
HorizAbs[i] = b3OutlineLayer:getDimY() / nProportionHoriz * PositionListHoriz[i]
--dPositionCum = dPositionCum + PositionListHoriz[i]
elseif MeasureType == WIN_MEASURE.PERCENTAGE then
-- PositionCum = dPositionCum + PositionListHoriz[i]
-- HorizAbs[i] = b3OutlineLayer:getDimY() * dPositionCum
HorizAbs[i] = b3OutlineLayer:getDimY() * PositionListHoriz[i]
end
end
for i = 1, #AreaList do
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, HorizAbs, nProportion, nSplitType) or {}
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, HorizAbs, nProportionHoriz, nSplitType) or {}
for j = 1, #AreaTemp do
table.insert( AreaResult, AreaTemp[j])
end
end
else
local AreaList = WinCreate.AddSplits( nAreaLayerId, WIN_SPLITORIENTATION.HORIZONTAL, MeasureType, PositionListHoriz, nProportion, nSplitType)
local AreaList = WinCreate.AddSplits( nAreaLayerId, WIN_SPLITORIENTATION.HORIZONTAL, MeasureType, PositionListHoriz, nProportionHoriz, nSplitType)
for i = 1, #AreaList do
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.VERTICAL, MeasureType, PositionListVert, nProportion, nSplitType) or {}
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.VERTICAL, MeasureType, PositionListVert, nProportionVert, nSplitType) or {}
for j = 1, #AreaTemp do
table.insert( AreaResult, AreaTemp[j])
end