Aggiunto gestione Split Grid
This commit is contained in:
@@ -287,6 +287,10 @@ function WinCreate.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nP
|
||||
elseif MeasureType == WIN_MEASURE.PERCENTAGE then
|
||||
nCalcPosition = b3OutlineLayer:getDimY() * nPosition
|
||||
end
|
||||
if nCalcPosition > b3OutlineLayer:getDimY() - GEO.EPS_SMALL then
|
||||
EgtErase( nTempSplitLayerId)
|
||||
return
|
||||
end
|
||||
nTotSplitId = EgtLine( nTempSplitLayerId, b3OutlineLayer:getMin() + Y_AX() * nCalcPosition, b3OutlineLayer:getMin() + Y_AX() * nCalcPosition + X_AX() * b3OutlineLayer:getDimX())
|
||||
end
|
||||
-- calcolo split
|
||||
@@ -307,6 +311,9 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
|
||||
EgtSetInfo( nResArea2, WIN_PRJ_ORIGSPLIT, nAreaLayerId)
|
||||
end
|
||||
nResArea1, nResArea2 = WinCreate.AddSplit( nResArea2, SplitType, MeasureType, PositionList[nIndex], nProportion, nSplitType)
|
||||
if not nResArea2 then
|
||||
return
|
||||
end
|
||||
table.insert( AreaList, nResArea1)
|
||||
if nIndex == #PositionList then
|
||||
table.insert( AreaList, nResArea2)
|
||||
@@ -321,6 +328,9 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
|
||||
EgtSetInfo( nResArea2, WIN_PRJ_ORIGSPLIT, nAreaLayerId)
|
||||
end
|
||||
nResArea1, nResArea2 = WinCreate.AddSplit( nResArea2, SplitType, MeasureType, PositionList[nIndex], nProportion - dAddPosition, nSplitType)
|
||||
if not nResArea2 then
|
||||
return
|
||||
end
|
||||
table.insert( AreaList, nResArea1)
|
||||
if nIndex == #PositionList then
|
||||
table.insert( AreaList, nResArea2)
|
||||
@@ -338,6 +348,9 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
|
||||
sChildAreas = sChildAreas .. nResArea2 .. EgtIf( nIndex < #PositionList, ',', '')
|
||||
end
|
||||
nResArea1, nResArea2 = WinCreate.AddSplit( nResArea2, SplitType, MeasureType, EgtIf( nIndex == 1, PositionList[nIndex], PositionList[nIndex] / ( 1 - dAddPosition)), nProportion, nSplitType)
|
||||
if not nResArea2 then
|
||||
return
|
||||
end
|
||||
table.insert( AreaList, nResArea1)
|
||||
if nIndex == #PositionList then
|
||||
table.insert( AreaList, nResArea2)
|
||||
@@ -349,6 +362,59 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
|
||||
return AreaList
|
||||
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
|
||||
end
|
||||
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]
|
||||
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 {}
|
||||
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)
|
||||
for i = 1, #AreaList do
|
||||
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.VERTICAL, MeasureType, PositionListVert, nProportion, nSplitType) or {}
|
||||
for j = 1, #AreaTemp do
|
||||
table.insert( AreaResult, AreaTemp[j])
|
||||
end
|
||||
end
|
||||
end
|
||||
return AreaResult
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che assegna il nome alla curva di split nella sottoarea in base alla sua direzione
|
||||
local function SetSplitName( nSplitId)
|
||||
|
||||
Reference in New Issue
Block a user