From 4c86c76a0824530df4ea9482e367487009defd1b Mon Sep 17 00:00:00 2001 From: Annamaria Sassi Date: Thu, 25 Sep 2025 08:55:23 +0200 Subject: [PATCH] Modificato Split a griglia --- Designing/Main.lua | 10 +++---- Designing/WinJWDConst.lua | 4 ++- Designing/WinLib/WinCreate.lua | 39 +++++++++++++-------------- Designing/WinLib/WinManageProject.lua | 25 ++++++++++++----- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/Designing/Main.lua b/Designing/Main.lua index 268fa05..d35f20c 100644 --- a/Designing/Main.lua +++ b/Designing/Main.lua @@ -65,16 +65,16 @@ local vSashJoints = { SashJointType, SashJointType, SashJointType, SashJointType -- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.RECT, vFrameJoints, WindowWidth, WindowHeight) -- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.CHAMFER_SIDE, vFrameJoints, WindowWidth, WindowHeight, WindowHeight + 500) - local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.CHAMFER_SIDE, vFrameJoints, WindowWidth, WindowHeight + 500, WindowHeight) --- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.ROUND_ARC, vFrameJoints, WindowWidth, WindowHeight) +-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.CHAMFER_SIDE, vFrameJoints, WindowWidth, WindowHeight + 500, WindowHeight) + local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.ROUND_ARC, vFrameJoints, WindowWidth, WindowHeight) -- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.SEGMENTAL_ARC, { FrameJointType, FrameJointType, FrameJointType, FrameJointType}, 1500, 1800, 2200) -- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.CHAMFER, { FrameJointType, FrameJointType, FrameJointType, FrameJointType, FrameJointType}, WindowWidth, WindowHeight, WindowHeight + 500) -- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.POINTED_ARC, { FrameJointType, FrameJointType, FrameJointType, FrameJointType, FrameJointType}, 900, 1500, 2100) ------------------------ Aggiunta split a griglia ------------------------ --- WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.ABSOLUT, {900, 900}, {500, 500, 500, 600, 150, 150}, true, 1) - WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.PERCENTAGE, {0.33, 0.33}, {0.3, 0.3}, true, 1) --- WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.PROPORTIONAL, {1, 1, 1}, {1, 1, 1}, true, 1) + WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.ABSOLUT, {350, 900, 900}, {500, 500, 500, 300, 300, 150}, true, 1) +-- WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.PERCENTAGE, {0.33, 0.33}, {0.3, 0.3}, true, 1) +-- WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.PROPORTIONAL, {2, 1, 1, 1}, {1, 2, 1, 2, 1}, true, 1) ------------------------ Cambi profilo ------------------------ -- vetro/anta diff --git a/Designing/WinJWDConst.lua b/Designing/WinJWDConst.lua index fa36e97..e2142ad 100644 --- a/Designing/WinJWDConst.lua +++ b/Designing/WinJWDConst.lua @@ -36,7 +36,9 @@ JWD_OPENING_TYPE = 'OpeningType' JWD_HARDWARE = 'Hardware' JWD_SPLIT_TYPE = 'SplitShape' -JWD_SPLIT_POS = 'SplitPositionList' +JWD_SPLIT_START_VERT = 'SplitStartVert' +JWD_SPLIT_VERT_POS = 'SplitVertList' +JWD_SPLIT_HORIZ_POS = 'SplitHorizList' JWD_FILL_TYPE = 'FillType' diff --git a/Designing/WinLib/WinCreate.lua b/Designing/WinLib/WinCreate.lua index f60feeb..025e2bc 100644 --- a/Designing/WinLib/WinCreate.lua +++ b/Designing/WinLib/WinCreate.lua @@ -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 diff --git a/Designing/WinLib/WinManageProject.lua b/Designing/WinLib/WinManageProject.lua index 5a83ad9..4a6c57c 100644 --- a/Designing/WinLib/WinManageProject.lua +++ b/Designing/WinLib/WinManageProject.lua @@ -260,14 +260,25 @@ local function ConvertTableToGeometry( AreaTable, nParentId) -- SPLIT - elseif AreaTable[JWD_AREA_TYPE] == 'SPLIT' then - local nSplitDir = EgtIf( AreaTable[JWD_SPLIT_TYPE] == 'VERTICAL', WIN_SPLITORIENTATION.VERTICAL, WIN_SPLITORIENTATION.HORIZONTAL) - local vDimensions = {} - local vSplitDimensions = AreaTable[JWD_SPLIT_POS] - for i = 1, #vSplitDimensions - 1 do - vDimensions[i] = vSplitDimensions[i][JWD_DIMENSION] / 100 +elseif AreaTable[JWD_AREA_TYPE] == 'SPLIT' then + local vVertDimensions = {} + local vSplitVertDimensions = AreaTable[JWD_SPLIT_VERT_POS] + for i = 1, #vSplitVertDimensions - 1 do + vVertDimensions[i] = vSplitVertDimensions[i][JWD_DIMENSION] / 100 + end + local vHorizDimensions = {} + local vSplitHorizDimensions = AreaTable[JWD_SPLIT_HORIZ_POS] + for i = 1, #vSplitHorizDimensions - 1 do + vHorizDimensions[i] = vSplitHorizDimensions[i][JWD_DIMENSION] / 100 + end + local vSplitAreas + if AreaTable[JWD_SPLIT_TYPE] == 'GRID' then + vSplitAreas = WinCreate.AddGridSplits( nParentId, WIN_MEASURE.PERCENTAGE, vVertDimensions, vHorizDimensions, JWD_SPLIT_START_VERT) + elseif AreaTable[JWD_SPLIT_TYPE] == 'VERTICAL' then + vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, vVertDimensions) + else + vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.PERCENTAGE, vHorizDimensions) end - local vSplitAreas = WinCreate.AddSplits( nParentId, nSplitDir, WIN_MEASURE.PERCENTAGE, vDimensions, 1) for i = 1, #vSplitAreas do ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][i], vSplitAreas[i]) end