diff --git a/Designing/WinLib/WinCreate.lua b/Designing/WinLib/WinCreate.lua index fe7e73f..8c72117 100644 --- a/Designing/WinLib/WinCreate.lua +++ b/Designing/WinLib/WinCreate.lua @@ -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