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
+5 -5
View File
@@ -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
+3 -1
View File
@@ -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'
+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
+18 -7
View File
@@ -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