DataWindow :
- correzione errore split a griglia che scompaiono.
This commit is contained in:
@@ -515,7 +515,7 @@ local function CalcSplitDimensions( vMeasureTypes, vValues, dDim, dDimMax)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function CalcSplitCurves( nLayerId, b3OutlineLayer, dDimMax, nSplitType, vMeasureTypes, vValues)
|
||||
local function CalcSplitCurves( nLayerId, b3OutlineLayer, dDimMax, dRefCoord, nSplitType, vMeasureTypes, vValues)
|
||||
|
||||
-- calcolo le dimensioni assolute di tutti gli split
|
||||
local dDim = EgtIf( nSplitType == WIN_SPLITORIENTATION.VERTICAL, b3OutlineLayer:getDimX(), b3OutlineLayer:getDimY())
|
||||
@@ -525,12 +525,12 @@ local function CalcSplitCurves( nLayerId, b3OutlineLayer, dDimMax, nSplitType, v
|
||||
local vDimensions = CalcSplitDimensions( vMeasureTypes, vValues, dDim, dDimMax)
|
||||
|
||||
local vSplitCurves = {}
|
||||
local dPosition = 0
|
||||
local dPosition = dRefCoord
|
||||
for i = 1, #vDimensions - 1 do
|
||||
-- calcolo la posizione cumulata
|
||||
dPosition = dPosition + vDimensions[i]
|
||||
-- creo la curva se rientra nelle dimensione limite
|
||||
if dPosition < dDimMax - GEO.EPS_SMALL then
|
||||
if dPosition < dRefCoord + dDimMax - GEO.EPS_SMALL then
|
||||
local nSplitCrv
|
||||
if nSplitType == WIN_SPLITORIENTATION.VERTICAL then
|
||||
-- aree ordinate da sx a dx
|
||||
@@ -586,7 +586,7 @@ function WinCreate.AddSplits( nParentAreaId, nSplitType, vMeasureTypes, vValues,
|
||||
EgtSetName( nSplitLayerId, WIN_BASESPLIT)
|
||||
|
||||
-- creo le curve di split
|
||||
local vSplitCurves = CalcSplitCurves( nSplitLayerId, b3OutlineLayer, nil, nSplitType, vMeasureTypes, vValues)
|
||||
local vSplitCurves = CalcSplitCurves( nSplitLayerId, b3OutlineLayer, nil, 0, nSplitType, vMeasureTypes, vValues)
|
||||
if #vSplitCurves == 0 then
|
||||
-- se non ci sono curve valide cancello tutto ed esco
|
||||
EgtErase( nAreaId)
|
||||
@@ -655,7 +655,7 @@ function WinCreate.AddGridSplits( nParentAreaId, vVertMeasureTypes, vVertValues,
|
||||
EgtSetInfo( nAreaId, WIN_PART_DIM, vMainDim)
|
||||
|
||||
-- calcolo la suddivisione nella direzione principale
|
||||
local vMainSplit = CalcSplitCurves( nSplitLayerId, b3OutlineLayer, nil, nMainSplitOrientation, vMainTypes, vMainValues)
|
||||
local vMainSplit = CalcSplitCurves( nSplitLayerId, b3OutlineLayer, nil, 0, nMainSplitOrientation, vMainTypes, vMainValues)
|
||||
for i = 1, #vMainSplit do
|
||||
EgtSetInfo( vMainSplit[i], WIN_GRIDSPLIT_ORDER, 0)
|
||||
end
|
||||
@@ -664,15 +664,18 @@ function WinCreate.AddGridSplits( nParentAreaId, vVertMeasureTypes, vVertValues,
|
||||
-- calcolo gli split nella direzione secondaria. Per non far sparire split nelle sottoregioni più piccole tengo come misura di riferimento per scalare tutte le dimensioni quella
|
||||
-- della sottoregione più piccola
|
||||
local dMinDim = GEO.INFINITO
|
||||
local dMinCoord = 0
|
||||
for i = 1, #vMainAreas do
|
||||
local nAreaOutlineLayerId = EgtGetFirstNameInGroup( vMainAreas[i], WIN_AREAOUTLINE)
|
||||
local b3Curr = EgtGetBBox( nAreaOutlineLayerId, GDB_BB.STANDARD)
|
||||
local dDim = EgtIf( nOtherSplitOrientation == WIN_SPLITORIENTATION.VERTICAL, b3Curr:getDimX(), b3Curr:getDimY())
|
||||
if dDim < dMinDim - GEO.EPS_SMALL then
|
||||
dMinDim = dDim
|
||||
local ptMin = b3Curr:getMin()
|
||||
dMinCoord = EgtIf( nOtherSplitOrientation == WIN_SPLITORIENTATION.VERTICAL, ptMin:getX(), ptMin:getY())
|
||||
end
|
||||
end
|
||||
local vOtherSplitOrig = CalcSplitCurves( nSplitLayerId, b3OutlineLayer, dMinDim, nOtherSplitOrientation, vOtherTypes, vOtherValues)
|
||||
local vOtherSplitOrig = CalcSplitCurves( nSplitLayerId, b3OutlineLayer, dMinDim, dMinCoord, nOtherSplitOrientation, vOtherTypes, vOtherValues)
|
||||
|
||||
for i = 1, #vMainAreas do
|
||||
|
||||
|
||||
Reference in New Issue
Block a user