Compare commits
61 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5fad7487e0 | |||
| bec9c29b2d | |||
| bec8487ef4 | |||
| 4c86c76a08 | |||
| 93b8f140c2 | |||
| ba95833e1f | |||
| 638fd85216 | |||
| 2547bd507b | |||
| 269cf703dd | |||
| 199a6e30a5 | |||
| 97dd2074df | |||
| 275dd114c9 | |||
| a5d68b69f9 | |||
| 12d533288e | |||
| 157107f805 | |||
| 7239313342 | |||
| 71eb7b36e9 | |||
| 08c732c571 | |||
| 083a2832d6 | |||
| 9ebc7755c7 | |||
| 9e2c46108d | |||
| e75cc0733c | |||
| 3e13958d8a | |||
| bca16579ea | |||
| 708f0454ba | |||
| 85964d5525 | |||
| 0ea1f00076 | |||
| a9f7404634 | |||
| 398b52cbae | |||
| a2c1032e81 | |||
| 5b7258aaf8 | |||
| 7c859b000b | |||
| bcbb7e2e5f | |||
| 2216c7fdec | |||
| ea8395a7ca | |||
| 32b9e4b347 | |||
| 4762dee48c | |||
| 8efe55e669 | |||
| 66fa9a9e19 | |||
| f3fbb4ad17 | |||
| e1440b9400 | |||
| fea1cc0a9e | |||
| 4c895d4d5c | |||
| 19255f12bc | |||
| 5f423dc6cd | |||
| b1fa2e6bcb | |||
| db3661842a | |||
| a2927c3e21 | |||
| e7a0f8df67 | |||
| 75ea9604df | |||
| 1798f6541f | |||
| 3b379c4ddb | |||
| d5d9c05223 | |||
| f5e2faef7f | |||
| ba392fa99f | |||
| 8d874e6899 | |||
| fb8abd9ef5 | |||
| d9e44a3b75 | |||
| 09fb1e6fdb | |||
| bfab9c4990 | |||
| d0bc9e4c89 |
+12
-12
@@ -208,21 +208,21 @@ local function AlignRawsToTable( PARTS)
|
||||
for i = 1, #PARTS do
|
||||
-- allineo il pezzo all'interno del grezzo
|
||||
local dRotX, dRotY, dRotZ = GetFixedAxesRotABCFromFrame( PARTS[i].frame)
|
||||
|
||||
-- se devo ruotare
|
||||
if abs( dRotZ) > GEO.EPS_ANG_SMALL then
|
||||
EgtRotatePartInRawPart( PARTS[i].id, Z_AX(), -dRotZ)
|
||||
-- sposto punto in basso a sinistra del pezzo sul punto in basso a sinistra del grezzo
|
||||
local b3Part = EgtGetBBoxGlob( PARTS[i].id, GDB_BB.ONLY_VISIBLE)
|
||||
local dPartPosX = b3Part:getMin():getX()
|
||||
local dPartPosY = b3Part:getMin():getY()
|
||||
local b3Raw = EgtGetRawPartBBox( PARTS[i].idRaw)
|
||||
local dRawPosX = b3Raw:getMin():getX()
|
||||
local dRawPosY = b3Raw:getMin():getY()
|
||||
local vtMove = Vector3d( dRawPosX - dPartPosX, dRawPosY - dPartPosY, 0)
|
||||
EgtMovePartInRawPart( PARTS[i].id, vtMove)
|
||||
end
|
||||
|
||||
-- sposto punto in basso a sinistra del pezzo sul punto in basso a sinistra del grezzo
|
||||
local b3Part = EgtGetBBoxGlob( PARTS[i].id, GDB_BB.ONLY_VISIBLE)
|
||||
local dPartPosX = b3Part:getMin():getX()
|
||||
local dPartPosY = b3Part:getMin():getY()
|
||||
local dPartPosZ = b3Part:getMin():getZ()
|
||||
local b3Raw = EgtGetRawPartBBox( PARTS[i].idRaw)
|
||||
local dRawPosX = b3Raw:getMin():getX()
|
||||
local dRawPosY = b3Raw:getMin():getY()
|
||||
local dRawPosZ = b3Raw:getMin():getZ()
|
||||
local vtMove = Vector3d( dRawPosX - dPartPosX, dRawPosY - dPartPosY, dRawPosZ - dPartPosZ)
|
||||
EgtMovePartInRawPart( PARTS[i].id, vtMove)
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -313,7 +313,7 @@ end
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- nascondo geometrie varie
|
||||
local vAuxId = { EgtGetFirstNameInGroup( GDB_ID.ROOT, 'Profile'), EgtGetFirstNameInGroup( GDB_ID.ROOT, 'Area*')}
|
||||
local vAuxId = { EgtGetFirstNameInGroup( GDB_ID.ROOT, 'Profile'), EgtGetFirstNameInGroup( GDB_ID.ROOT, 'Area*'), EgtGetFirstNameInGroup( GDB_ID.ROOT, 'Aux')}
|
||||
EgtSetStatus( vAuxId, GDB_ST.OFF)
|
||||
|
||||
if not MyProcessInputData() then return end
|
||||
|
||||
@@ -26,19 +26,15 @@ end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
function Drilling.Make( Proc, Part)
|
||||
local ToolInfo = {}
|
||||
|
||||
local Machining = {}
|
||||
local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}}
|
||||
local AuxiliaryData = {}
|
||||
Machining.LeadIn = {}
|
||||
Machining.LeadOut = {}
|
||||
Machining.Steps = {}
|
||||
local ToolSearchParameters = {}
|
||||
|
||||
-- cerco utensile punta a forare
|
||||
ToolSearchParameters.dDiameter = Proc.dDiameter
|
||||
ToolSearchParameters.dLength = Proc.dLength
|
||||
ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters)
|
||||
local ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters)
|
||||
|
||||
-- se trovato utensile
|
||||
if ToolInfo.nToolIndex then
|
||||
|
||||
@@ -17,21 +17,18 @@ EgtMdbSave()
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
function Profiling.Make( Proc, Part)
|
||||
-- definizione liste
|
||||
local ToolInfo = {}
|
||||
local Machining = {}
|
||||
Machining.LeadIn = {}
|
||||
Machining.LeadOut = {}
|
||||
Machining.Steps = {}
|
||||
local AuxiliaryData = {}
|
||||
local ToolSearchParameters = {}
|
||||
|
||||
-- se so che utensili utilizzare, associazione diretta
|
||||
if Proc.nToolsToUse > 0 then
|
||||
for i = 1, Proc.nToolsToUse do
|
||||
-- definizione liste
|
||||
local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}}
|
||||
local AuxiliaryData = {}
|
||||
local ToolSearchParameters = {}
|
||||
-- ricerca utensile
|
||||
ToolSearchParameters.sName = Proc.Tools[i].sName
|
||||
ToolSearchParameters.dElevation = 0
|
||||
ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
|
||||
local ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
|
||||
-- se trovato utensile
|
||||
if ToolInfo.nToolIndex then
|
||||
Machining.nType = MCH_MY.MILLING
|
||||
@@ -67,12 +64,16 @@ function Profiling.Make( Proc, Part)
|
||||
end
|
||||
-- altrimenti cerco tra quelli disponibili
|
||||
else
|
||||
-- definizione liste
|
||||
local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}}
|
||||
local AuxiliaryData = {}
|
||||
local ToolSearchParameters = {}
|
||||
-- se profilatura generica, cerco fresa che possa lavorare la geometria considerando spessore e raggio
|
||||
if Proc.sProfileInfo == 'Generic' then
|
||||
ToolSearchParameters.dElevation = abs( EgtCurveThickness( Proc.id))
|
||||
ToolSearchParameters.dMaxToolDiameter = WinLib.GetPathMinRadius( Proc.id) * 2
|
||||
ToolSearchParameters.sType = 'MILL_STD'
|
||||
ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
|
||||
local ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
|
||||
-- se trovato utensile
|
||||
if ToolInfo.nToolIndex then
|
||||
Machining.nType = MCH_MY.MILLING
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
EgtEnableDebug( false)
|
||||
-- EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
@@ -39,12 +39,12 @@ local DebugCode = false
|
||||
local HoleWidth = 1835
|
||||
local HoleHeight = 1516
|
||||
|
||||
local WindowWidth = 900
|
||||
local WindowHeight = 1500
|
||||
local WindowWidth = 2500
|
||||
local WindowHeight = 2000
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge'
|
||||
local sProfilePath = 'C:\\EgtData\\EgtWindowMaker\\Profiles\\Profilo78.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
@@ -63,30 +63,147 @@ local vFrameJoints = { FrameJointType, FrameJointType, FrameJointType, FrameJoin
|
||||
local SashJointType = WIN_JNT.FULL_V
|
||||
local vSashJoints = { SashJointType, SashJointType, SashJointType, SashJointType}
|
||||
|
||||
local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.RECT, vFrameJoints, WindowWidth, WindowHeight)
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.CHAMFER_SIDE, vFrameJoints, WindowWidth, WindowHeight, WindowHeight + 500)
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.CHAMFER_SIDE, vFrameJoints, WindowWidth, WindowHeight + 500, WindowHeight)
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.ROUND_ARC, vFrameJoints, WindowWidth, WindowHeight)
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.SEGMENTAL_ARC, vFrameJoints, WindowWidth, WindowHeight, WindowHeight + 100)
|
||||
-- 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.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)
|
||||
local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPES.POINTED_ARC, { FrameJointType, FrameJointType, FrameJointType, FrameJointType, FrameJointType}, 1500, 1500, 2400)
|
||||
|
||||
-- vSashJoints = { SashJointType, SashJointType, SashJointType, SashJointType, SashJointType}
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.CHAMFER, { FrameJointType, FrameJointType, FrameJointType, FrameJointType, FrameJointType}, WindowWidth, WindowHeight, WindowHeight + 500)
|
||||
------------------------ Aggiunta split a griglia ------------------------
|
||||
-- WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.ABSOLUT, {100, 300, 100, 300}, {500, 600, 850}, false)
|
||||
-- WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.PERCENTAGE, {0.15}, {0.5, 0.45}, false)
|
||||
WinCreate.AddGridSplits( nFrameId, WIN_MEASURE.PROPORTIONAL, {1, 4, 1, 2, 1}, {1, 2, 1, 2, 1}, false)
|
||||
|
||||
-- vSashJoints = { SashJointType, SashJointType, SashJointType, SashJointType, SashJointType}
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.POINTED_ARC, { FrameJointType, FrameJointType, FrameJointType, FrameJointType, FrameJointType}, WindowWidth, WindowHeight, WindowHeight + 600)
|
||||
------------------------ Cambi profilo ------------------------
|
||||
-- vetro/anta
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddFill( vAreas[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSash( vAreas[2], vSashJoints)
|
||||
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.TRG, {WIN_JNT.FULL_H, WIN_JNT.FULL_H, WIN_JNT.FULL_V}, WindowWidth, WindowHeight, WindowWidth)
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.TRG, {WIN_JNT.FULL_V, WIN_JNT.FULL_V, WIN_JNT.FULL_V}, WindowWidth, WindowHeight, 0)
|
||||
-- local nFrameId = WinCreate.CreateFrame( WIN_FRAME_TYPE.TRG, {WIN_JNT.FULL_V, WIN_JNT.FULL_H, WIN_JNT.FULL_V}, WindowWidth, WindowHeight, WindowWidth - 100)
|
||||
-- vetro/anta orizzontale
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddFill( vAreas[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSash( vAreas[2], vSashJoints)
|
||||
|
||||
-- anta/vetro
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddFill( vAreas[2], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSash( vAreas[1], vSashJoints)
|
||||
|
||||
-- vetro/anta/vetro
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.33, 0.33}, 1)
|
||||
-- WinCreate.AddFill( vAreas[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSash( vAreas[2], vSashJoints)
|
||||
-- WinCreate.AddFill( vAreas[3], WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- vetro/anta/anta
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.33, 0.33}, 1)
|
||||
-- WinCreate.AddFill( vAreas[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSash( vAreas[2], vSashJoints)
|
||||
-- WinCreate.AddSash( vAreas[3], vSashJoints)
|
||||
|
||||
-- anta battente/anta ricevente/vetro
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.66}, 1)
|
||||
-- local vAreas2 = WinCreate.AddSplits( vAreas[1], WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- WinCreate.AddSash( vAreas2[1], vSashJoints, WIN_SASHTYPES.ACTIVE)
|
||||
-- WinCreate.AddSash( vAreas2[2], vSashJoints, WIN_SASHTYPES.INACTIVE)
|
||||
-- WinCreate.AddFill( vAreas[2], WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- vetro/anta/vetro/anta
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- local vAreas2 = WinCreate.AddSplits( vAreas[1], WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- local vAreas3 = WinCreate.AddSplits( vAreas[2], WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddFill( vAreas2[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( vAreas3[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSash( vAreas2[2], vSashJoints)
|
||||
-- WinCreate.AddSash( vAreas3[2], vSashJoints)
|
||||
|
||||
-- vetro/anta/vetro/anta
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.25}, 1)
|
||||
-- WinCreate.AddFill( vAreas[1], WIN_FILLTYPES.GLASS)
|
||||
-- local vAreas2 = WinCreate.AddSplits( vAreas[2], WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.75}, 1)
|
||||
-- WinCreate.AddSash( vAreas2[2], vSashJoints)
|
||||
-- local vAreas3 = WinCreate.AddSplits( vAreas2[1], WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddSash( vAreas3[1], vSashJoints)
|
||||
-- WinCreate.AddFill( vAreas3[2], WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- con split
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddSash( vAreas[1], vSashJoints)
|
||||
-- local vAreas2 = WinCreate.AddSplits( vAreas[2], WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- WinCreate.AddFill( vAreas2[1], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( vAreas2[2], WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- con split nell'anta
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
-- local nSash = WinCreate.AddSash( vAreas[1], vSashJoints)
|
||||
-- WinCreate.AddFill( vAreas[2], WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddSplits( nSash, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1)
|
||||
|
||||
|
||||
|
||||
------------------------ Alzante Scorrevole ------------------------
|
||||
|
||||
-- anta mobile a sx
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nSash1 = WinCreate.AddSash( vAreas[1], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- local nSash2 = WinCreate.AddSash( vAreas[2], vSashJoints, WIN_SASHTYPES.SLIDE_FIXED)
|
||||
-- WinCreate.AddFill( nSash1, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash2, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- anta mobile a dx
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nSash1 = WinCreate.AddSash( vAreas[1], vSashJoints, WIN_SASHTYPES.SLIDE_FIXED)
|
||||
-- local nSash2 = WinCreate.AddSash( vAreas[2], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- WinCreate.AddFill( nSash1, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash2, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- 2 ante mobili, sx davanti
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nSash1 = WinCreate.AddSash( vAreas[1], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- local nSash2 = WinCreate.AddSash( vAreas[2], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE_BACK)
|
||||
-- WinCreate.AddFill( nSash1, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash2, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- 2 ante mobili, dx davanti
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.5}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nSash1 = WinCreate.AddSash( vAreas[1], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE_BACK)
|
||||
-- local nSash2 = WinCreate.AddSash( vAreas[2], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- WinCreate.AddFill( nSash1, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash2, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- 4 ante, le centrali sono mobili
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.25, 0.25, 0.25}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nSash1 = WinCreate.AddSash( vAreas[1], vSashJoints, WIN_SASHTYPES.SLIDE_FIXED)
|
||||
-- local nSash2 = WinCreate.AddSash( vAreas[2], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- local nSash3 = WinCreate.AddSash( vAreas[3], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- local nSash4 = WinCreate.AddSash( vAreas[4], vSashJoints, WIN_SASHTYPES.SLIDE_FIXED)
|
||||
-- WinCreate.AddFill( nSash1, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash2, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash3, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash4, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- 4 ante mobili
|
||||
-- local vAreas = WinCreate.AddSplits( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, { 0.25, 0.25, 0.25}, 1, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nSash1 = WinCreate.AddSash( vAreas[1], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE_BACK)
|
||||
-- local nSash2 = WinCreate.AddSash( vAreas[2], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- local nSash3 = WinCreate.AddSash( vAreas[3], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE)
|
||||
-- local nSash4 = WinCreate.AddSash( vAreas[4], vSashJoints, WIN_SASHTYPES.SLIDE_MOVABLE_BACK)
|
||||
-- WinCreate.AddFill( nSash1, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash2, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash3, WIN_FILLTYPES.GLASS)
|
||||
-- WinCreate.AddFill( nSash4, WIN_FILLTYPES.GLASS)
|
||||
|
||||
|
||||
------------------------ Finestra vetro fisso ------------------------
|
||||
|
||||
-- aggiungo zoccolo
|
||||
WinCreate.AddBottomRail( nFrameId)
|
||||
-- aggiungo vetro
|
||||
local nFillId = WinCreate.AddFill( nFrameId, WIN_FILLTYPES.GLASS)
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFillId = WinCreate.AddFill( nFrameId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale ------------------------
|
||||
|
||||
@@ -569,20 +686,46 @@ local nFillId = WinCreate.AddFill( nFrameId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
|
||||
-- aggiungo ferramenta
|
||||
WinCreate.AddHardware( nFrameId, '000545')
|
||||
-- WinCreate.AddHardware( nFrameId, '000545')
|
||||
|
||||
-- imposto se calcolare i solidi o meno
|
||||
WinCalculate.SetCalcSolid( true)
|
||||
-- WinCalculate.SetCalcSolid( true)
|
||||
|
||||
-- creo i pezzi
|
||||
WinCalculate.CreatePartFromArea( nFrameId)
|
||||
WinCalculate.AddHardware( nFrameId)
|
||||
|
||||
-- WinCalculate.CreatePartFromArea( nFrameId)
|
||||
-- WinCalculate.AddHardware( nFrameId)
|
||||
|
||||
-- tronchetti
|
||||
-- local nLogsNbr = 4 -- 0 per numero minimo
|
||||
-- local vSections = { 100, 150, 80, 130, 120, 180}
|
||||
-- local bAlign = false
|
||||
-- local dOverMatOut = 10
|
||||
-- local dOverMatIn = 7
|
||||
-- local dOverMatExt = 5
|
||||
-- local dOverMatInt = 3
|
||||
-- local bCutExtremities = true
|
||||
-- -- cero i pezzi top ad arco
|
||||
-- local vTops = EgtGetNameInGroup( 0, WIN_TOP)
|
||||
-- for i = 1, #vTops do
|
||||
-- local nOutline = EgtGetInfo( vTops[i], WIN_REF_OUTLINE, 'i')
|
||||
-- if EgtGetType( nOutline) == GDB_TY.CRV_ARC then
|
||||
-- -- se anta richiedo allineamento con telaio
|
||||
-- local nAreaId = EgtGetParent( EgtGetParent( nOutline))
|
||||
-- local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i')
|
||||
-- if nAreaType == WIN_AREATYPES.SASH then
|
||||
-- bAlign = true
|
||||
-- nLogsNbr = 0
|
||||
-- end
|
||||
-- WinCalculate.CreateArcLogs( vTops[i], nLogsNbr, vSections, bAlign, dOverMatOut, dOverMatIn, dOverMatExt, dOverMatInt, bCutExtremities)
|
||||
-- end
|
||||
-- end
|
||||
|
||||
|
||||
-- preparo per automatismo lavorazioni
|
||||
-- WinCalculate.PrepareProject()
|
||||
|
||||
|
||||
-- -- creo tabella per salvataggio
|
||||
-- local sSaveFilePath = 'c:\\Temp\\WindowTest1.txt'
|
||||
-- local WinTable = WinManageProject.WriteToFile( nFrameId, sSaveFilePath)
|
||||
@@ -19,7 +19,7 @@ local WinConst = {}
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
|
||||
-- tipi di telaio
|
||||
WIN_FRAME_TYPE = {
|
||||
WIN_FRAME_TYPES = {
|
||||
RECT = 1,
|
||||
CHAMFER_SIDE = 2,
|
||||
CHAMFER = 3,
|
||||
@@ -29,47 +29,49 @@ WIN_FRAME_TYPE = {
|
||||
TRG = 7,
|
||||
}
|
||||
|
||||
-- Tipi di giunzioni (joint)
|
||||
WIN_JNT = {
|
||||
ANGLED = 1,
|
||||
FULL_H = 2,
|
||||
FULL_V = 3,
|
||||
}
|
||||
|
||||
-- tipo di giunzione pezzo
|
||||
WIN_PART_JNT = {
|
||||
ANGLED = 1,
|
||||
FULL = 2,
|
||||
SHORT = 3,
|
||||
}
|
||||
|
||||
-- Tipi di profilo
|
||||
WIN_PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
VERTICAL = 5,
|
||||
HORIZONTAL = 6,
|
||||
SPLIT = 7,
|
||||
BOTTOMRAIL = 8,
|
||||
}
|
||||
|
||||
-- Tipi di split
|
||||
-- direzioni di split
|
||||
WIN_SPLITORIENTATION = {
|
||||
VERTICAL = 1,
|
||||
HORIZONTAL = 2,
|
||||
}
|
||||
|
||||
-- Tipi di misure
|
||||
-- tipi di misure
|
||||
WIN_MEASURE = {
|
||||
ABSOLUT = 1,
|
||||
PROPORTIONAL = 2,
|
||||
PERCENTAGE = 3,
|
||||
}
|
||||
|
||||
-- tipologia di figli
|
||||
WIN_CHILDREN_TYPES = {
|
||||
NULL = 0,
|
||||
SASH = 1,
|
||||
FILL = 2,
|
||||
MIXED = 3,
|
||||
}
|
||||
|
||||
WIN_THRESHOLD_TYPES = {
|
||||
NULL = 0,
|
||||
ALU = 1, -- soglia
|
||||
WOOD = 2, -- legno
|
||||
WOOD_ALU = 3, -- gocciolatoio in alluminio
|
||||
}
|
||||
|
||||
WIN_SURF_APPROX = 0.05
|
||||
|
||||
|
||||
|
||||
-- AREE
|
||||
WIN_AREA = 'Area'
|
||||
WIN_AREA_NAME = 'AreaName'
|
||||
WIN_FRAME = 'Frame'
|
||||
WIN_SASH = 'Sash'
|
||||
WIN_FILL = 'Fill'
|
||||
WIN_SPLIT = 'Split'
|
||||
WIN_FRAME_TYPE = 'FrameType'
|
||||
|
||||
-- tipo di Area
|
||||
WIN_AREATYPE = 'AreaType'
|
||||
WIN_AREATYPES = {
|
||||
NULL = 0,
|
||||
FRAME = 1,
|
||||
@@ -78,168 +80,195 @@ WIN_AREATYPES = {
|
||||
SPLIT = 4,
|
||||
}
|
||||
|
||||
-- tipo di split:
|
||||
-- mullion = montante
|
||||
-- french = battente / ricevente
|
||||
-- mixed = cambio profilo
|
||||
-- tipi di split
|
||||
WIN_SPLITTYPE = 'SplitType'
|
||||
WIN_SPLITTYPES = {
|
||||
NULL = 0,
|
||||
MULLION = 1,
|
||||
FRENCH = 2,
|
||||
MIXED = 3,
|
||||
MULLION = 1, -- montante
|
||||
FRENCH = 2, -- battente / ricevente
|
||||
MIXED = 3, -- cambio profilo
|
||||
}
|
||||
|
||||
-- tipi di riempimento interno
|
||||
WIN_FILLTYPE = 'FillType'
|
||||
WIN_FILLTYPES = {
|
||||
NULL = 0,
|
||||
GLASS = 1,
|
||||
WOOD = 2,
|
||||
}
|
||||
WIN_GLASS = 'GLASS'
|
||||
WIN_WOOD = 'WOOD'
|
||||
|
||||
-- tipi di sash battente e ricevente
|
||||
-- tipi di anta
|
||||
WIN_SASHTYPE = 'SashType'
|
||||
WIN_SASHTYPES = {
|
||||
NULL = 0,
|
||||
ACTIVE = 1,
|
||||
INACTIVE = 2,
|
||||
ACTIVE_IN = 3,
|
||||
ACTIVE_OUT = 4,
|
||||
INACTIVE_IN = 5,
|
||||
INACTIVE_OUT = 6,
|
||||
ACTIVE = 1, -- battente
|
||||
INACTIVE = 2, -- ricevente
|
||||
ACTIVE_IN = 3, -- battente contro ricevente ( nel caso di più ante battenti)
|
||||
ACTIVE_OUT = 4, -- battente contro battente ( nel caso di più ante battenti)
|
||||
INACTIVE_IN = 5, -- ricevente contro battente ( nel caso di più ante riceventi)
|
||||
INACTIVE_OUT = 6, -- ricevente contro ricevente ( nel caso di più ante riceventi)
|
||||
SLIDE_MOVABLE = 7, -- mobile in alzante scorrevole
|
||||
SLIDE_FIXED = 8, -- fissa in alzante scorrevole
|
||||
SLIDE_MOVABLE_BACK = 9, -- mobile più esterna in alzante scorrevole con tutte ante mobili
|
||||
}
|
||||
WIN_INACTIVE = 'INACTIVE'
|
||||
|
||||
WIN_CHILDREN_TYPES = {
|
||||
-- tipi di apertura ante
|
||||
WIN_OPENING_TYPE = 'OpeningType'
|
||||
WIN_OPENING_TYPES = {
|
||||
NULL = 0,
|
||||
SASH = 1,
|
||||
FILL = 2,
|
||||
MIXED = 3,
|
||||
TURNONLY_LEFT = 1,
|
||||
TURNONLY_RIGHT = 2,
|
||||
TILTTURN_LEFT = 3,
|
||||
TILTTURN_RIGHT = 4,
|
||||
TILTONLY_TOP = 5,
|
||||
TILTONLY_BOTTOM = 6,
|
||||
PIVOT = 7,
|
||||
FIXED = 8,
|
||||
COPLANARSLIDE_LEFT = 9,
|
||||
COPLANARSLIDE_RIGHT = 10,
|
||||
LIFTSLIDE_LEFT = 11,
|
||||
LIFTSLIDE_RIGHT = 12,
|
||||
}
|
||||
|
||||
WIN_SURF_APPROX = 0.05
|
||||
-- tipi di pezzo
|
||||
WIN_PART_TYPE = 'PartType'
|
||||
WIN_PART_TYPES = {
|
||||
NULL = 0,
|
||||
FILL = 1,
|
||||
BOTTOMRAIL = 2,
|
||||
}
|
||||
|
||||
WIN_PROFILE = 'Profile'
|
||||
WIN_PROFILEPATH = 'ProfilePath'
|
||||
|
||||
WIN_FRAME = 'Frame'
|
||||
WIN_AREAOUTLINE = 'BaseOutline'
|
||||
WIN_OUTLINE = 'Outline'
|
||||
WIN_BASESPLIT = 'BaseSplit'
|
||||
WIN_SELECTION = 'Selection'
|
||||
WIN_SPLITSELECTION = 'SplitSelection'
|
||||
WIN_ORIGOUTLINE = 'OrigOutline'
|
||||
WIN_GEO = 'Geo'
|
||||
WIN_SOLID = 'Solid'
|
||||
WIN_SASH_OPENING = 'Opening'
|
||||
WIN_AUX = 'Aux'
|
||||
WIN_PREVIEW = 'Preview'
|
||||
|
||||
WIN_BOTTOM = 'Bottom'
|
||||
WIN_BOTTOMRAIL = 'BottomRail'
|
||||
WIN_RIGHT = 'Right'
|
||||
WIN_TOP = 'Top'
|
||||
WIN_LEFT = 'Left'
|
||||
WIN_HORIZONTAL = 'Horizontal'
|
||||
WIN_VERTICAL = 'Vertical'
|
||||
WIN_BASESPLIT = 'BaseSplit'
|
||||
WIN_TEMPSPLIT = 'TempSplit'
|
||||
WIN_SPLIT = 'Split'
|
||||
WIN_AREA = 'Area'
|
||||
WIN_AREAASTERISK = 'Area*'
|
||||
WIN_AREA1 = 'Area1'
|
||||
WIN_AREA2 = 'Area2'
|
||||
WIN_AREATYPE = 'AreaType'
|
||||
WIN_SASH = 'Sash'
|
||||
WIN_FILL = 'Fill'
|
||||
WIN_FILLTYPE = 'FillType'
|
||||
WIN_SPLITTYPE = 'SplitType'
|
||||
WIN_STARTJOINT = 'StartJoint'
|
||||
WIN_SASHTYPE = 'SashType'
|
||||
|
||||
-- info varie su aree e curve
|
||||
WIN_SOU = 'SOU'
|
||||
WIN_CHILD = 'CHILD'
|
||||
WIN_COPY = 'COPY'
|
||||
WIN_REF_OUTLINE = 'OutlineRef'
|
||||
WIN_REF_PART = 'PartRef'
|
||||
WIN_REF_BOTTOMRAIL_PART = 'BottomRailPartRef'
|
||||
WIN_PREV_OUTLINES = 'PrevOutlines'
|
||||
WIN_NEXT_OUTLINES = 'NextOutlines'
|
||||
WIN_REF_SPLIT = 'RefSplit'
|
||||
WIN_PRJ_ORIGSPLIT = 'OrigSplit'
|
||||
WIN_CRV_ON_FRENCH_SPLIT = 'OutlineOnFrenchSplit'
|
||||
WIN_SPLIT_STARTINTERS = 'SplitStartInters'
|
||||
WIN_SPLIT_ENDINTERS = 'SplitEndInters'
|
||||
WIN_SASH_CHILDREN = 'SashChildren'
|
||||
WIN_FILL_CHILDREN = 'FillChildren'
|
||||
WIN_THRESHOLD_PROFILE = 'ThresholdProfile'
|
||||
WIN_SLIDE_WINDOW = 'SlideWindow'
|
||||
|
||||
|
||||
-- PROFILI
|
||||
WIN_PROFILE = 'Profile'
|
||||
WIN_PROFILEPATH = 'ProfilePath'
|
||||
WIN_INFO_GRP = 'Info'
|
||||
|
||||
-- nomi dei profili
|
||||
WIN_SASH_TOP = 'Sash_Top'
|
||||
WIN_SASH_BOTTOM = 'Sash_Bottom'
|
||||
WIN_SASH_VERTICAL = 'Sash_Vertical'
|
||||
WIN_SASH_HORIZONTAL = 'Sash_Horizontal'
|
||||
WIN_RAIL_BOTTOM = 'Rail_Bottom'
|
||||
WIN_FRAME_TOP = 'Frame_Top'
|
||||
WIN_FRAME_BOTTOM = 'Frame_Bottom'
|
||||
WIN_FIXED = 'Fixed'
|
||||
WIN_FIXED_TOP = 'Fixed_Top'
|
||||
WIN_FIXED_BOTTOM = 'Fixed_Bottom'
|
||||
WIN_RAIL_BOTTOM = 'Rail_Bottom'
|
||||
WIN_RAIL = 'Rail'
|
||||
WIN_FILL_RAIL = 'Fill_Rail'
|
||||
WIN_FRAME_SPLIT = 'Frame_Split'
|
||||
WIN_SASH_VERTICAL = 'Sash_Vertical'
|
||||
WIN_SASH_HORIZONTAL = 'Sash_Horizontal'
|
||||
WIN_MIXED_BOTTOM = 'Mixed_Bottom'
|
||||
WIN_MIXED_TOP = 'Mixed_Top'
|
||||
WIN_MIXED_SPLIT = 'Mixed_Split'
|
||||
WIN_SASH_THRESHOLD = 'Sash_Threshold'
|
||||
|
||||
WIN_FRAME_TOP = 'Frame_Top'
|
||||
WIN_FRAME_BOTTOM = 'Frame_Bottom'
|
||||
WIN_SASH_ACTIVE = 'Sash_Active'
|
||||
WIN_SASH_INACTIVE = 'Sash_Inactive'
|
||||
WIN_FRENCH_IN = 'French_In'
|
||||
WIN_FRENCH_OUT = 'French_Out'
|
||||
WIN_SASH_SPLIT = 'Sash_Split'
|
||||
WIN_FRAME_SPLIT = 'Frame_Split'
|
||||
WIN_MIXED_BOTTOM = 'Mixed_Bottom'
|
||||
WIN_MIXED_TOP = 'Mixed_Top'
|
||||
WIN_MIXED_SPLIT = 'Mixed_Split'
|
||||
|
||||
WIN_SLIDE = 'Slide'
|
||||
WIN_MOVABLE = 'Movable'
|
||||
WIN_SLIDE_MOVABLEBACK = 'Slide_MovableBack'
|
||||
WIN_SLIDE_TOP = 'Slide_Top'
|
||||
WIN_SLIDE_BOTTOM = 'Slide_Bottom'
|
||||
WIN_SLIDE_MOVABLE = 'Slide_Movable'
|
||||
WIN_SLIDE_FIXED = 'Slide_Fixed'
|
||||
WIN_SLIDE_MOVABLE_TOP = 'Slide_Movable_Top'
|
||||
WIN_SLIDE_MOVABLE_BOTTOM = 'Slide_Movable_Bottom'
|
||||
WIN_SLIDE_MOVABLE_SIDE = 'Slide_Movable_Side'
|
||||
WIN_SLIDE_MOVABLEBACK_TOP = 'Slide_MovableBack_Top'
|
||||
WIN_SLIDE_MOVABLEBACK_BOTTOM = 'Slide_MovableBack_Bottom'
|
||||
WIN_SLIDE_MOVABLEBACK_SIDE = 'Slide_MovableBack_Side'
|
||||
WIN_SLIDE_FIXED_BOTTOM = 'Slide_Fixed_Bottom'
|
||||
WIN_SLIDE_FIXED_TOP = 'Slide_Fixed_Top'
|
||||
WIN_SLIDE_FIXED_SIDE = 'Slide_Fixed_Side'
|
||||
WIN_SLIDE_ACTIVE = 'Slide_Active'
|
||||
WIN_SLIDE_ACTIVE_IN = 'Slide_Active_In'
|
||||
WIN_SLIDE_INACTIVE = 'Slide_Inactive'
|
||||
|
||||
-- elementi dei profili
|
||||
WIN_REF = 'Ref'
|
||||
WIN_SECTIONFRAME = 'SectionFrame'
|
||||
WIN_SECTION = 'Section'
|
||||
WIN_STRIP = 'Strip'
|
||||
WIN_ALU = 'Alu'
|
||||
WIN_IN = 'In'
|
||||
WIN_CTRIN = 'CtrIn'
|
||||
WIN_OUT = 'Out'
|
||||
WIN_IN = 'In'
|
||||
WIN_OUTOFST = 'OfstOut'
|
||||
WIN_CTRINOFST = 'OfstCtrIn'
|
||||
WIN_OFST = 'Ofst'
|
||||
WIN_SECTIONFRAME = 'SectionFrame'
|
||||
WIN_CTRINOFST = 'OfstCtrIn'
|
||||
WIN_OUTOFST = 'OfstOut'
|
||||
WIN_MIXED_COMMON = 'Common'
|
||||
WIN_SIMPLIFIED = 'Simplified'
|
||||
WIN_STRIP = 'Strip'
|
||||
WIN_WATERDRIP = 'Waterdrip'
|
||||
WIN_GASKET = 'Gasket'
|
||||
WIN_THRESHOLD = 'Threshold'
|
||||
|
||||
WIN_MINIZINKEN = 'MiniZinken'
|
||||
|
||||
-- WIN_STARTCPDELTA = 'StartCPDelta'
|
||||
-- WIN_ENDCPDELTA = 'EndCPDelta'
|
||||
WIN_GEOWIDTH = 'GeoWidth'
|
||||
WIN_GLASSTHICKNESS = 'GlassThickness'
|
||||
WIN_SEMI_PROFILE = 'SemiProfileId'
|
||||
|
||||
WIN_GEOOUTLINEBOTTOM = 'GeoOutlineBottom'
|
||||
|
||||
WIN_JOINT_BL = 'JointBL'
|
||||
WIN_JOINT_BR = 'JointBR'
|
||||
WIN_JOINT_BDIV = 'JointBDiv'
|
||||
WIN_JOINT_TL = 'JointTL'
|
||||
WIN_JOINT_TR = 'JointTR'
|
||||
WIN_JOINT_TDIV = 'JointTDiv'
|
||||
WIN_JOINTS = 'Joints'
|
||||
|
||||
|
||||
WIN_GEO_IN = 'In'
|
||||
WIN_GEO_OUT = 'Out'
|
||||
WIN_GEO_LEFT = 'Left'
|
||||
WIN_GEO_RIGHT = 'Right'
|
||||
|
||||
WIN_PRF_TYPE = 'Type'
|
||||
WIN_PRF_MAIN = 'Main'
|
||||
WIN_PRF_START = 'Start'
|
||||
WIN_PRF_END = 'End'
|
||||
WIN_PRF_SPLIT = 'Split'
|
||||
|
||||
WIN_PROFILETYPE = 'ProfileType'
|
||||
WIN_SEPARATIONTYPE = 'SeparationType'
|
||||
|
||||
WIN_SPLIT_STARTINTERS = 'SplitStartInters'
|
||||
WIN_SPLIT_ENDINTERS = 'SplitEndInters'
|
||||
|
||||
WIN_SOU = 'SOU'
|
||||
WIN_CHILD = 'CHILD'
|
||||
WIN_COPY = 'COPY'
|
||||
|
||||
-- info sui profili
|
||||
WIN_SASH_TOP_OVERLAP = 'SashTopOverlap'
|
||||
WIN_SASH_BOTTOM_OVERLAP = 'SashBottomOverlap'
|
||||
WIN_DELTA = 'Delta'
|
||||
WIN_FILLOVERLAP = 'FillOverlap'
|
||||
WIN_FILLDELTA = 'FillDelta'
|
||||
WIN_GLASSTHICKNESS = 'GlassThickness'
|
||||
WIN_RAILDELTA = 'RailDelta'
|
||||
-- per ferramenta
|
||||
WIN_GAPDELTA = 'GapDelta'
|
||||
WIN_GAPDELTAZ = 'GapDeltaZ'
|
||||
WIN_GAPDELTAIN = 'GapDeltaIn'
|
||||
WIN_GAPDELTAOUT = 'GapDeltaOut'
|
||||
-- per accessori
|
||||
WIN_STRIP_DIST = 'StripDistance'
|
||||
WIN_TRIM = 'Trim'
|
||||
-- per cambio profilo
|
||||
WIN_FIXED_REF = 'FixedRef'
|
||||
WIN_SASH_REF = 'SashRef'
|
||||
WIN_SASH_DEPTH = 'SashDepth'
|
||||
WIN_RAD_REF = 'RefRad'
|
||||
WIN_EXTRA_DIST = 'ExtraDist'
|
||||
-- per lavorazioni
|
||||
WIN_PRC_OVERMAT_IN = 'OVERMAT_IN'
|
||||
WIN_PRC_OVERMAT_OUT = 'OVERMAT_OUT'
|
||||
WIN_PRC_OVERMAT_LEFT = 'OVERMAT_LEFT'
|
||||
WIN_PRC_OVERMAT_RIGHT = 'OVERMAT_RIGHT'
|
||||
WIN_PRC_PHASE = 'PHASE'
|
||||
WIN_PRC_PROFILE_INFO = 'PROFILE_INFO'
|
||||
WIN_PRC_NTOOLS = 'NTOOLS'
|
||||
WIN_PRC_TOOL_NAME = 'TOOL_NAME'
|
||||
WIN_PRC_OFFL = 'OFFL'
|
||||
@@ -250,23 +279,90 @@ WIN_PRC_OFFY_2 = 'OFFY_2'
|
||||
WIN_PRC_OFFZ_2 = 'OFFZ_2'
|
||||
WIN_PRC_CLAMPV_1 = 'CLAMPV_1'
|
||||
WIN_PRC_CLAMPV_2 = 'CLAMPV_2'
|
||||
WIN_STRIP_DIST = 'StripDistance'
|
||||
|
||||
WIN_REF_SPLIT = 'RefSplit'
|
||||
WIN_CRV_ON_FRENCH_SPLIT = 'OutlineOnFrenchSplit'
|
||||
WIN_PREV_OUTLINES = 'PrevOutlines'
|
||||
WIN_NEXT_OUTLINES = 'NextOutlines'
|
||||
-- codici
|
||||
WIN_PROFILE_CODES = {
|
||||
SASH = 1,
|
||||
FIXED_GLASS = 2,
|
||||
MIXED = 4,
|
||||
FRAME_RAIL = 8,
|
||||
SASH_RAIL = 16,
|
||||
SLIDE = 32,
|
||||
}
|
||||
|
||||
|
||||
-- Profili pezzo
|
||||
WIN_PRF_MAIN = 'Main'
|
||||
WIN_PRF_START = 'Start'
|
||||
WIN_PRF_END = 'End'
|
||||
WIN_PRF_SPLIT = 'Split'
|
||||
WIN_PRF_TYPE = 'Type'
|
||||
WIN_PROFILETYPE = 'ProfileType'
|
||||
|
||||
-- tipi di profilo
|
||||
WIN_PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
SPLIT = 5,
|
||||
BOTTOMRAIL = 6,
|
||||
BOTTOMRAIL_FINAL = 7,
|
||||
}
|
||||
|
||||
|
||||
-- GIUNZIONI
|
||||
WIN_JOINTS = 'Joints'
|
||||
WIN_JOINT_BL = 'JointBL'
|
||||
WIN_JOINT_BR = 'JointBR'
|
||||
WIN_JOINT_TL = 'JointTL'
|
||||
WIN_JOINT_TR = 'JointTR'
|
||||
WIN_STARTJOINT = 'StartJoint'
|
||||
WIN_ENDJOINT = 'EndJoint'
|
||||
|
||||
-- tipi di giunzioni
|
||||
WIN_JNT = {
|
||||
ANGLED = 1,
|
||||
FULL_H = 2,
|
||||
FULL_V = 3,
|
||||
}
|
||||
|
||||
-- tipi di giunzione pezzo
|
||||
WIN_PART_JNT = {
|
||||
ANGLED = 1,
|
||||
FULL = 2,
|
||||
SHORT = 3,
|
||||
}
|
||||
|
||||
|
||||
-- GEO
|
||||
WIN_GEO = 'Geo'
|
||||
WIN_GEO_RAW = 'GeoRaw'
|
||||
WIN_GEO_IN = 'In'
|
||||
WIN_GEO_OUT = 'Out'
|
||||
WIN_GEO_LEFT = 'Left'
|
||||
WIN_GEO_RIGHT = 'Right'
|
||||
WIN_PRC_FRAME = 'AuxFrame'
|
||||
WIN_GEOWIDTH = 'GeoWidth'
|
||||
WIN_GEOHEIGHT = 'GeoHeight'
|
||||
WIN_GEOLEN = 'GeoLen'
|
||||
WIN_SEMI_PROFILE = 'SemiProfileId'
|
||||
WIN_GLASS_RECT = 'GlassRectangle'
|
||||
|
||||
|
||||
-- CAMBIO PROFILO
|
||||
WIN_PRF_CHANGE = 'ProfileChange'
|
||||
WIN_MIXED_OUTLINES = 'ProfileChangeOutlines'
|
||||
WIN_MIXED_INTERSECTIONS = 'ProfileChangeIntersections'
|
||||
WIN_SASH_CHILDREN = 'SashChildren'
|
||||
WIN_FILL_CHILDREN = 'FillChildren'
|
||||
WIN_MIXED_SPLIT_REF = 'MixedSplitRef'
|
||||
WIN_MIXED_INTERS_REF = 'MixedIntersRef'
|
||||
WIN_MIXED_REF_START = 'MixedRefEnd'
|
||||
WIN_MIXED_REF_END = 'MixedRefStart'
|
||||
|
||||
|
||||
-- SOLIDI
|
||||
WIN_SOLID = 'Solid'
|
||||
WIN_MAINGUIDE = 'MainGuide'
|
||||
WIN_SRF_MAIN = 'MainSurface'
|
||||
WIN_SRF_ORIGMAIN = 'OrigMainSurface'
|
||||
@@ -274,10 +370,9 @@ WIN_SRF_START = 'StartSurface'
|
||||
WIN_SRF_END = 'EndSurface'
|
||||
WIN_SRF_STRIP = 'StripSurface'
|
||||
|
||||
WIN_BOTTOMRAIL = 'BottomRail'
|
||||
|
||||
-- LAVORAZIONI
|
||||
WIN_PRC = 'Processings'
|
||||
WIN_PRC_FRAME = 'AuxFrame'
|
||||
WIN_PRC_FEATURE_TYPE = 'FEATURE_TYPE'
|
||||
WIN_PRC_TYPE = {
|
||||
HOLE = 'Hole',
|
||||
@@ -286,16 +381,13 @@ WIN_PRC_TYPE = {
|
||||
CUT = 'Cut',
|
||||
STRIP_CUT = 'StripCut'
|
||||
}
|
||||
WIN_PRC_PROFILE_INFO = 'PROFILE_INFO'
|
||||
WIN_PRC_PROFILE_TYPE = {
|
||||
HEAD = 'Head',
|
||||
LONGITUDINAL = 'Longitudinal',
|
||||
MIXED = 'Mixed',
|
||||
GENERIC = 'Generic'
|
||||
}
|
||||
WIN_PRC_OVERMAT_IN = 'OVERMAT_IN'
|
||||
WIN_PRC_OVERMAT_OUT = 'OVERMAT_OUT'
|
||||
WIN_PRC_OVERMAT_LEFT = 'OVERMAT_LEFT'
|
||||
WIN_PRC_OVERMAT_RIGHT = 'OVERMAT_RIGHT'
|
||||
WIN_PRC_SIDE = 'REFERENCE_SIDE'
|
||||
WIN_PRC_SIDETYPE = {
|
||||
OUT = 'Out',
|
||||
@@ -304,22 +396,41 @@ WIN_PRC_SIDETYPE = {
|
||||
RIGHT = 'Right'
|
||||
}
|
||||
|
||||
|
||||
-- SPINE
|
||||
WIN_DOWEL = 'Dowel'
|
||||
WIN_DWL_DIAM = 'DowelsDiam'
|
||||
WIN_DWL_TOP_PERP_LEN = 'TopPerpLen'
|
||||
WIN_DWL_TOP_PARA_LEN = 'TopParaLen'
|
||||
WIN_DWL_INACTIVE_PERP_LEN = 'InactivePerpLen'
|
||||
WIN_DWL_INACTIVE_PARA_LEN = 'InactiveParaLen'
|
||||
WIN_DWL_BOTTOM_PERP_LEN = 'BottomPerpLen'
|
||||
WIN_DWL_BOTTOM_PARA_LEN = 'BottomParaLen'
|
||||
WIN_DWL_RAILBOTTOM_PERP_LEN = 'RailBottomPerpLen'
|
||||
WIN_DWL_RAILBOTTOM_PARA_LEN = 'RailBottomParaLen'
|
||||
WIN_DWL_SPLIT_PERP_LEN = 'SplitPerpLen'
|
||||
WIN_DWL_SPLIT_PARA_LEN = 'SplitParaLen'
|
||||
WIN_DWL_LOG_LEN = 'DowelsLogLen'
|
||||
|
||||
|
||||
WIN_PRJ_ORIGSPLIT = 'OrigSplit'
|
||||
-- TRONCHETTI
|
||||
WIN_LOGS = 'Log'
|
||||
|
||||
WIN_HARDWARE = 'Hardware'
|
||||
|
||||
-- ACCESSORI
|
||||
WIN_GASKET_LEN = 'GasketLen'
|
||||
WIN_WATERDRIP = 'Waterdrip'
|
||||
WIN_WATERDRIP_LEN = 'WaterdripLen'
|
||||
WIN_THRESHOLD_LEN = 'ThresholdLen'
|
||||
|
||||
|
||||
-- FERRAMENTA
|
||||
WIN_HDW_FAVOURITE = 'HdwFavourite'
|
||||
WIN_HDW_NULL = '000000'
|
||||
WIN_HDW_HANDLE = 'HdwHandle'
|
||||
WIN_HDW_FRAME = 'HdwFrame'
|
||||
WIN_HDW_HANDLE_HEIGHT = 'HMan'
|
||||
WIN_HDW_OPTIONS = 'HdwOptions'
|
||||
WIN_HDW_HINGES = 'HdwHinges'
|
||||
---------------------------------------------------------------------
|
||||
return WinConst
|
||||
@@ -17,37 +17,29 @@
|
||||
local WinJWDConst = {}
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
|
||||
|
||||
-- tipi di sash battente e ricevente
|
||||
-- WIN_SASHTYPES = {
|
||||
-- NULL = 0,
|
||||
-- ACTIVE = 1,
|
||||
-- INACTIVE = 2,
|
||||
-- }
|
||||
|
||||
JWD_EXT = '.jwd'
|
||||
|
||||
JWD_PROFILE_PATH = 'ProfilePath'
|
||||
|
||||
JWD_AREA = 'Area'
|
||||
JWD_AREA_LIST = 'AreaList'
|
||||
JWD_AREA_TYPE = 'AreaType'
|
||||
JWD_JOINTS = 'JointList'
|
||||
JWD_JOINT_TYPE = 'JointType'
|
||||
JWD_BOTTOMRAIL = 'BottomRail'
|
||||
JWD_BOTTOMRAIL_QTY = 'BottomRailQty'
|
||||
JWD_DIMENSION = 'dDimension'
|
||||
JWD_VALUE = 'dValue'
|
||||
|
||||
JWD_JOINT_BL = 'JointBL'
|
||||
JWD_JOINT_BR = 'JointBR'
|
||||
JWD_JOINT_TL = 'JointTL'
|
||||
JWD_JOINT_TR = 'JointTR'
|
||||
JWD_FRAME_SHAPE = 'Shape'
|
||||
JWD_DIMENSION_LIST = 'DimensionList'
|
||||
|
||||
JWD_OUTLINE = 'Outline'
|
||||
JWD_JOINT = 'Joint'
|
||||
JWD_SPLIT = 'Split'
|
||||
JWD_CRV_TYPE = 'CurveType'
|
||||
JWD_POINT_START = 'ptStart'
|
||||
JWD_POINT_END = 'ptEnd'
|
||||
JWD_POINT_MID = 'ptMid'
|
||||
JWD_BOTTOM_RAIL = 'BottomRail'
|
||||
JWD_SASH_LIST = 'SashList'
|
||||
JWD_HAS_HANDLE = 'bHasHandle'
|
||||
JWD_OPENING_TYPE = 'OpeningType'
|
||||
JWD_HARDWARE = 'Hardware'
|
||||
|
||||
JWD_SPLIT_TYPE = 'SplitShape'
|
||||
JWD_SPLIT_START_VERT = 'SplitStartVert'
|
||||
JWD_SPLIT_VERT_POS = 'SplitVertList'
|
||||
JWD_SPLIT_HORIZ_POS = 'SplitHorizList'
|
||||
|
||||
JWD_SASH_TYPE = 'SashType'
|
||||
JWD_FILL_TYPE = 'FillType'
|
||||
|
||||
---------------------------------------------------------------------
|
||||
File diff suppressed because it is too large
Load Diff
@@ -21,13 +21,14 @@ require( 'EgtBase')
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function AddInfo( nId, sInfo, nVal)
|
||||
local vInfo = EgtGetInfo( nId, sInfo, 'vi') or {}
|
||||
table.insert( vInfo, nVal)
|
||||
EgtSetInfo( nId, sInfo, vInfo)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che importa il profilo
|
||||
function WinCreate.ImportProfile( sProfilePath)
|
||||
-- verifico esistenza file
|
||||
@@ -40,6 +41,7 @@ function WinCreate.ImportProfile( sProfilePath)
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, WIN_PROFILE)
|
||||
EgtSetLevel( nProfileId, GDB_LV.SYSTEM)
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
-- recupero gruppi importati e li sposto nel gruppo profilo
|
||||
@@ -61,32 +63,12 @@ end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
------------------------------------- TELAIO -------------------------------------
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che crea il buco per la finestra a partire da curve generiche
|
||||
function WinCreate.CreateGenFrame( vFrameCrvs, vJoints)
|
||||
-- creo gruppo per telaio
|
||||
local nFrameAreaId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameAreaId, WIN_AREA .. '(' .. WIN_FRAME .. ')')
|
||||
-- imposto il tipo
|
||||
EgtSetInfo( nFrameAreaId, WIN_AREATYPE, WIN_AREATYPES.FRAME)
|
||||
-- creo il gruppo con le curve di outline
|
||||
local nAreaOutlineLayerId = EgtGroup( nFrameAreaId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
for i = 1, #vFrameCrvs do
|
||||
EgtRelocateGlob( vFrameCrvs[i], nAreaOutlineLayerId)
|
||||
end
|
||||
-- imposto tipo giunzioni
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINTS, vJoints)
|
||||
|
||||
return nFrameAreaId
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che crea le curve che definiscono il telaio in base alla geometria richiesta
|
||||
local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
|
||||
|
||||
-- rettangolo
|
||||
if nType == WIN_FRAME_TYPE.RECT then
|
||||
if nType == WIN_FRAME_TYPES.RECT then
|
||||
-- telaio rettangolare
|
||||
local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nBottomId, WIN_BOTTOM)
|
||||
@@ -97,8 +79,8 @@ local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
local nLeftId = EgtLine( nLayerId, Point3d( 0, dHeight, 0), ORIG())
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
|
||||
-- lato top inclinato
|
||||
elseif nType == WIN_FRAME_TYPE.CHAMFER_SIDE then
|
||||
-- lato top inclinato
|
||||
elseif nType == WIN_FRAME_TYPES.CHAMFER_SIDE then
|
||||
-- dHeight è l'altezza del lato sx, dVal è l'altezza del lato dx
|
||||
local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nBottomId, WIN_BOTTOM)
|
||||
@@ -108,9 +90,9 @@ local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
EgtSetName( nTopId, WIN_TOP)
|
||||
local nLeftId = EgtLine( nLayerId, Point3d( 0, dHeight, 0), ORIG())
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
|
||||
-- triangular arch
|
||||
elseif nType == WIN_FRAME_TYPE.CHAMFER then
|
||||
|
||||
-- triangular arch
|
||||
elseif nType == WIN_FRAME_TYPES.CHAMFER then
|
||||
-- dHeight è l'altezza dei lati verticali, dVal è l'altezza complessiva della finestra
|
||||
local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nBottomId, WIN_BOTTOM)
|
||||
@@ -122,9 +104,9 @@ local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
EgtSetName( nTop2Id, WIN_TOP)
|
||||
local nLeftId = EgtLine( nLayerId, Point3d( 0, dHeight, 0), ORIG())
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
|
||||
-- arco a tutto sesto
|
||||
elseif nType == WIN_FRAME_TYPE.ROUND_ARC then
|
||||
|
||||
-- arco a tutto sesto
|
||||
elseif nType == WIN_FRAME_TYPES.ROUND_ARC then
|
||||
local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nBottomId, WIN_BOTTOM)
|
||||
local nRightId = EgtLine( nLayerId, Point3d( dWidth, 0, 0), Point3d( dWidth, dHeight - 0.5 * dWidth, 0))
|
||||
@@ -133,9 +115,9 @@ local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
EgtSetName( nTopId, WIN_TOP)
|
||||
local nLeftId = EgtLine( nLayerId, Point3d( 0, dHeight - 0.5 * dWidth, 0), ORIG())
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
|
||||
-- arco ribassato
|
||||
elseif nType == WIN_FRAME_TYPE.SEGMENTAL_ARC then
|
||||
|
||||
-- arco ribassato
|
||||
elseif nType == WIN_FRAME_TYPES.SEGMENTAL_ARC then
|
||||
-- dHeight è l'altezza dei lati verticali, dVal è l'altezza complessiva della finestra
|
||||
local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nBottomId, WIN_BOTTOM)
|
||||
@@ -145,9 +127,9 @@ local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
EgtSetName( nTopId, WIN_TOP)
|
||||
local nLeftId = EgtLine( nLayerId, Point3d( 0, dHeight, 0), ORIG())
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
|
||||
-- arco a tutto sesto
|
||||
elseif nType == WIN_FRAME_TYPE.POINTED_ARC then
|
||||
|
||||
-- arco a tutto sesto
|
||||
elseif nType == WIN_FRAME_TYPES.POINTED_ARC then
|
||||
-- dHeight è l'altezza dei lati verticali, dVal è l'altezza complessiva della finestra
|
||||
-- verifico che le due altezze abbiano valori sensati per realizzare i due archi
|
||||
if dVal - dHeight < 0.5 * dWidth then
|
||||
@@ -164,9 +146,9 @@ local function CreateFrameCurves( nLayerId, nType, dWidth, dHeight, dVal)
|
||||
EgtSetName( nTop2Id, WIN_TOP)
|
||||
local nLeftId = EgtLine( nLayerId, Point3d( 0, dHeight, 0), ORIG())
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
|
||||
-- triangolo
|
||||
elseif nType == WIN_FRAME_TYPE.TRG then
|
||||
|
||||
-- triangolo
|
||||
elseif nType == WIN_FRAME_TYPES.TRG then
|
||||
local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nBottomId, WIN_BOTTOM)
|
||||
local nEdge1Id = EgtLine( nLayerId, Point3d( dWidth, 0, 0), Point3d( dVal, dHeight, 0))
|
||||
@@ -188,22 +170,30 @@ end
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che crea il telaio a partire da una specifica geometria ( rettangolo, chamfer...)
|
||||
function WinCreate.CreateFrame( nType, vJoints, dWidth, dHeight, dHeight2)
|
||||
|
||||
-- creo un gruppo temporaneo per le curve di outline
|
||||
local nTmpLay = EgtGroup( GDB_ID.ROOT)
|
||||
-- disegno outline
|
||||
CreateFrameCurves( nTmpLay, nType, dWidth, dHeight, dHeight2)
|
||||
local nFrameAreaId = WinCreate.CreateGenFrame( EgtGetAllInGroup( nTmpLay), vJoints)
|
||||
EgtErase( nTmpLay)
|
||||
|
||||
return nFrameAreaId
|
||||
|
||||
-- creo gruppo per telaio
|
||||
local nAreaId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nAreaId, WIN_AREA .. '(' .. WIN_FRAME .. ')')
|
||||
EgtSetLevel( nAreaId, GDB_LV.SYSTEM)
|
||||
-- imposto il tipo
|
||||
EgtSetInfo( nAreaId, WIN_AREATYPE, WIN_AREATYPES.FRAME)
|
||||
|
||||
-- costruisco le curve di outline
|
||||
local nOutlineLayerId = EgtGroup( nAreaId)
|
||||
EgtSetName( nOutlineLayerId, WIN_AREAOUTLINE)
|
||||
CreateFrameCurves( nOutlineLayerId, nType, dWidth, dHeight, dHeight2)
|
||||
EgtSetInfo( nAreaId, WIN_FRAME_TYPE, nType)
|
||||
-- imposto tipo giunzioni
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINTS, vJoints)
|
||||
|
||||
return nAreaId
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
-------------------------------------- ANTA --------------------------------------
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che aggiunge una anta
|
||||
function WinCreate.AddSash( nAreaId, vJoints, nSashType)
|
||||
function WinCreate.AddSash( nAreaId, vJoints, nSashType, nOpeningType)
|
||||
-- creo nuova area
|
||||
local nSashAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nSashAreaId, WIN_AREA .. '(' .. WIN_SASH .. ')')
|
||||
@@ -224,10 +214,13 @@ function WinCreate.AddSash( nAreaId, vJoints, nSashType)
|
||||
end
|
||||
-- imposto tipo giunzioni
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINTS, vJoints)
|
||||
-- imposto tipo di anta se presente
|
||||
-- imposto tipo di anta e di apertura se presente
|
||||
if nSashType then
|
||||
EgtSetInfo( nSashAreaId, WIN_SASHTYPE, nSashType)
|
||||
end
|
||||
if nOpeningType then
|
||||
EgtSetInfo( nSashAreaId, WIN_OPENING_TYPE, nOpeningType)
|
||||
end
|
||||
return nSashAreaId
|
||||
end
|
||||
|
||||
@@ -269,7 +262,6 @@ end
|
||||
function WinCreate.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nProportion, nSplitType)
|
||||
-- creo layer temporaneo per split
|
||||
local nTempSplitLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nTempSplitLayerId, WIN_TEMPSPLIT)
|
||||
-- recupero contorno area precedente
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
@@ -284,6 +276,10 @@ function WinCreate.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nP
|
||||
elseif MeasureType == WIN_MEASURE.PERCENTAGE then
|
||||
nCalcPosition = b3OutlineLayer:getDimX() * nPosition
|
||||
end
|
||||
if nCalcPosition > b3OutlineLayer:getDimX() - GEO.EPS_SMALL then
|
||||
EgtErase( nTempSplitLayerId)
|
||||
return
|
||||
end
|
||||
nTotSplitId = EgtLine( nTempSplitLayerId, b3OutlineLayer:getMin() + X_AX() * nCalcPosition, b3OutlineLayer:getMin() + X_AX() * nCalcPosition + Y_AX() * b3OutlineLayer:getDimY())
|
||||
elseif SplitType == WIN_SPLITORIENTATION.HORIZONTAL then
|
||||
-- creo linea
|
||||
@@ -295,6 +291,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
|
||||
@@ -314,7 +314,12 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
|
||||
if nIndex > 1 then
|
||||
EgtSetInfo( nResArea2, WIN_PRJ_ORIGSPLIT, nAreaLayerId)
|
||||
end
|
||||
local nCurrentResArea2 = nResArea2
|
||||
nResArea1, nResArea2 = WinCreate.AddSplit( nResArea2, SplitType, MeasureType, PositionList[nIndex], nProportion, nSplitType)
|
||||
if not nResArea2 then
|
||||
table.insert( AreaList, nCurrentResArea2)
|
||||
break
|
||||
end
|
||||
table.insert( AreaList, nResArea1)
|
||||
if nIndex == #PositionList then
|
||||
table.insert( AreaList, nResArea2)
|
||||
@@ -324,13 +329,18 @@ 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
|
||||
local nCurrentResArea2 = nResArea2
|
||||
nResArea1, nResArea2 = WinCreate.AddSplit( nResArea2, SplitType, MeasureType, PositionList[nIndex], nProportion - dAddPosition, nSplitType)
|
||||
if not nResArea2 then
|
||||
table.insert( AreaList, nCurrentResArea2)
|
||||
break
|
||||
end
|
||||
table.insert( AreaList, nResArea1)
|
||||
if nIndex == #PositionList then
|
||||
if nIndex == #PositionList -1 then
|
||||
table.insert( AreaList, nResArea2)
|
||||
end
|
||||
dAddPosition = dAddPosition + PositionList[nIndex]
|
||||
@@ -345,7 +355,12 @@ function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList
|
||||
EgtSetInfo( nResArea2, WIN_PRJ_ORIGSPLIT, nAreaLayerId)
|
||||
sChildAreas = sChildAreas .. nResArea2 .. EgtIf( nIndex < #PositionList, ',', '')
|
||||
end
|
||||
local nCurrentResArea2 = nResArea2
|
||||
nResArea1, nResArea2 = WinCreate.AddSplit( nResArea2, SplitType, MeasureType, EgtIf( nIndex == 1, PositionList[nIndex], PositionList[nIndex] / ( 1 - dAddPosition)), nProportion, nSplitType)
|
||||
if not nResArea2 then
|
||||
table.insert( AreaList, nCurrentResArea2)
|
||||
break
|
||||
end
|
||||
table.insert( AreaList, nResArea1)
|
||||
if nIndex == #PositionList then
|
||||
table.insert( AreaList, nResArea2)
|
||||
@@ -357,10 +372,81 @@ 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 = {}
|
||||
-- recupero contorno area precedente
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
-- calcolo numero parti totali nel caso di misura proporzionale
|
||||
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
|
||||
-- calcolo gli split nella direzione secondaria
|
||||
local PositionAbs = {}
|
||||
local PositionList = EgtIf( bStartVertical, PositionListHoriz, PositionListVert)
|
||||
local nProportion = EgtIf( bStartVertical, nProportionHoriz, nProportionVert)
|
||||
local dDim = EgtIf( bStartVertical, b3OutlineLayer:getDimY(), b3OutlineLayer:getDimX())
|
||||
for i = 1, #PositionList do
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
PositionAbs[i] = PositionList[i]
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
PositionAbs[i] = dDim / nProportion * PositionList[i]
|
||||
elseif MeasureType == WIN_MEASURE.PERCENTAGE then
|
||||
PositionAbs[i] = dDim * PositionList[i]
|
||||
end
|
||||
end
|
||||
if bStartVertical then
|
||||
local AreaList = WinCreate.AddSplits( nAreaLayerId, WIN_SPLITORIENTATION.VERTICAL, MeasureType, PositionListVert, nProportionVert, nSplitType)
|
||||
for i = 1, #AreaList do
|
||||
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, PositionAbs, 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, nProportionHoriz, nSplitType)
|
||||
for i = 1, #AreaList do
|
||||
-- recupero contorno area corrente
|
||||
local nCurrentOutlineLayerId = EgtGetFirstNameInGroup( AreaList[i], WIN_AREAOUTLINE)
|
||||
local b3CurrentOutlineLayer = EgtGetBBox( nCurrentOutlineLayerId, GDB_BB.STANDARD)
|
||||
local dDiff = b3OutlineLayer:getMin():getX() - b3CurrentOutlineLayer:getMin():getX()
|
||||
if dDiff < - GEO.EPS_SMALL then
|
||||
local nFirstIndex = #PositionAbs + 1
|
||||
for k = 1, #PositionAbs do
|
||||
if PositionAbs[k] + dDiff > GEO.EPS_SMALL then
|
||||
PositionAbs[k] = PositionAbs[k] + dDiff
|
||||
nFirstIndex = k
|
||||
break
|
||||
elseif k ~= #PositionAbs then
|
||||
PositionAbs[k + 1] = PositionAbs[k] + PositionAbs[k + 1]
|
||||
end
|
||||
end
|
||||
for k = 1, nFirstIndex - 1 do
|
||||
table.remove( PositionAbs, 1)
|
||||
end
|
||||
end
|
||||
local AreaTemp = WinCreate.AddSplits( AreaList[i], WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, PositionAbs, nProportionVert, 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)
|
||||
|
||||
|
||||
local vtMedia = ( ( EgtEV( nSplitId) - EgtSV( nSplitId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtSV( nSplitId)
|
||||
@@ -383,25 +469,25 @@ end
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che crea le aree da un taglio split
|
||||
local function CreateAreaFromSplit( nAreaLayerId, nCompo, nSplitId, dPar1, dPar2, vOutlineCrvs)
|
||||
|
||||
|
||||
-- creo layer per le due sottoaree
|
||||
local nArea1Id = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nArea1Id , WIN_AREA1)
|
||||
EgtSetName( nArea1Id , WIN_AREA .. '1')
|
||||
EgtSetInfo( nArea1Id, WIN_AREATYPE, WIN_AREATYPES.NULL)
|
||||
local nArea1OutlineLayerId = EgtGroup( nArea1Id)
|
||||
EgtSetName( nArea1OutlineLayerId , WIN_AREAOUTLINE)
|
||||
local nArea2Id = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nArea2Id , WIN_AREA2)
|
||||
EgtSetName( nArea2Id , WIN_AREA .. '2')
|
||||
EgtSetInfo( nArea2Id, WIN_AREATYPE, WIN_AREATYPES.NULL)
|
||||
local nArea2OutlineLayerId = EgtGroup( nArea2Id)
|
||||
EgtSetName( nArea2OutlineLayerId , WIN_AREAOUTLINE)
|
||||
|
||||
|
||||
-- ad ogni sottoarea associo la porzione di curva composita corrispondente
|
||||
local nCrv1 = EgtCopyGlob( nCompo, nArea1OutlineLayerId)
|
||||
local nCrv2 = EgtCopyGlob( nCompo, nArea2OutlineLayerId)
|
||||
EgtTrimCurveStartEndAtParam( nCrv1, dPar2, dPar1)
|
||||
EgtTrimCurveStartEndAtParam( nCrv2, dPar1, dPar2)
|
||||
|
||||
|
||||
-- copio curva di split
|
||||
local nSplitId1 = EgtCopyGlob( nSplitId, nArea1OutlineLayerId)
|
||||
local nSplitId2 = EgtCopyGlob( nSplitId, nArea2OutlineLayerId)
|
||||
@@ -456,7 +542,7 @@ local function CreateAreaFromSplit( nAreaLayerId, nCompo, nSplitId, dPar1, dPar2
|
||||
nFirstInAreaId = EgtGetFirstInGroup( nArea2OutlineLayerId)
|
||||
sFirstInAreaName = EgtGetName( nFirstInAreaId)
|
||||
end
|
||||
|
||||
|
||||
return nArea1Id, nArea2Id
|
||||
end
|
||||
|
||||
@@ -475,7 +561,7 @@ function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
EgtRelocateGlob( nSplitId, nSplitLayerId)
|
||||
-- assegno nome profilo
|
||||
EgtSetName( nSplitId, WIN_SPLIT)
|
||||
|
||||
|
||||
-- verifico se devo impostare tipo di split ( solo se deriva da tipo frame)
|
||||
if nSplitType then
|
||||
local nParentAreaId = nAreaLayerId
|
||||
@@ -490,7 +576,7 @@ function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
EgtSetInfo( nSplitLayerId, WIN_SPLITTYPE, nSplitType)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Ricerca delle intersezioni :
|
||||
-- creo una curva composita a partire da tutte le curve di outline
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
@@ -509,14 +595,14 @@ function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
local pt1 = EgtSP( nFirst)
|
||||
local pt2 = EgtSP( nFirst + 1)
|
||||
EgtErase( { nFirst, nFirst + 1})
|
||||
|
||||
|
||||
-- recupero i parametri di intersezione sulla curva di split
|
||||
local dSplitParS = EgtCurveParamAtPoint( nSplitId, pt1, 100 * GEO.EPS_SMALL)
|
||||
local dSplitParE = EgtCurveParamAtPoint( nSplitId, pt2, 100 * GEO.EPS_SMALL)
|
||||
-- recupero i parametri di intersezione sulla curva composita
|
||||
local dPar1 = EgtCurveParamAtPoint( nCompo, pt1, 100 * GEO.EPS_SMALL)
|
||||
local dPar2 = EgtCurveParamAtPoint( nCompo, pt2, 100 * GEO.EPS_SMALL)
|
||||
|
||||
|
||||
-- ricavo i parametri di intersezione legati a start ed end dello split
|
||||
local dParCrvS = dPar1
|
||||
local dParCrvE = dPar2
|
||||
@@ -524,10 +610,10 @@ function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
dSplitParS, dSplitParE = dSplitParE, dSplitParS
|
||||
dParCrvS, dParCrvE = dParCrvE, dParCrvS
|
||||
end
|
||||
|
||||
|
||||
-- taglio la curva di split nei punti di intersezione
|
||||
EgtTrimCurveStartEndAtParam( nSplitId, dSplitParS, dSplitParE)
|
||||
|
||||
|
||||
-- setto info per intersezione start
|
||||
-- se il parametro è intero allora l'intersezione coinvolge due curve successive
|
||||
if abs( dParCrvS - ceil( dParCrvS)) < GEO.EPS_SMALL then
|
||||
@@ -543,7 +629,7 @@ function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
local nCrv = vOutlineCrvs[ floor( dParCrvS) + 1]
|
||||
EgtSetInfo( nSplitId, WIN_SPLIT_STARTINTERS, { nCrv})
|
||||
end
|
||||
|
||||
|
||||
-- setto info per intersezione end
|
||||
if abs( dParCrvE - ceil( dParCrvE)) < GEO.EPS_SMALL then
|
||||
local nCrv = vOutlineCrvs[ ceil( dParCrvE) + 1]
|
||||
@@ -560,11 +646,11 @@ function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
|
||||
-- creo sottoaree
|
||||
local nArea1, nArea2 = CreateAreaFromSplit( nAreaLayerId, nCompo, nSplitId, dPar1, dPar2, vOutlineCrvs)
|
||||
|
||||
|
||||
EgtErase( nCompo)
|
||||
|
||||
|
||||
return nArea1, nArea2
|
||||
|
||||
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
@@ -579,12 +665,21 @@ end
|
||||
---------------------------------- BOTTOMRAIL ------------------------------------
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che aggiunge uno zoccolo
|
||||
function WinCreate.AddBottomRail( nAreaId)
|
||||
function WinCreate.AddBottomRail( nAreaId, nNbr)
|
||||
local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i')
|
||||
if nAreaType == WIN_AREATYPES.FRAME or nAreaType == WIN_AREATYPES.SASH then
|
||||
EgtSetInfo( nAreaId, WIN_BOTTOMRAIL, nNbr)
|
||||
end
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
---------------------------------- SOGLIA ------------------------------------
|
||||
----------------------------------------------------------------------------------
|
||||
-- funzione che aggiunge la soglia
|
||||
function WinCreate.AddThreshold( nAreaId, sThresholdProfile)
|
||||
local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i')
|
||||
if nAreaType == WIN_AREATYPES.FRAME then
|
||||
-- recupero l'outline bottom
|
||||
local nBaseOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
EgtSetInfo( nBaseOutlineLayerId, WIN_BOTTOMRAIL, 1)
|
||||
EgtSetInfo( nAreaId, WIN_THRESHOLD_PROFILE, sThresholdProfile)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,336 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinManageProject = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinJWDConst = nil
|
||||
require( 'WinJWDConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.JSON = nil
|
||||
local JSON = require( 'JSON')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetJoints( tJoints)
|
||||
local vJoints = {}
|
||||
for i = 1, #tJoints do
|
||||
if tJoints[i][JWD_JOINT_TYPE] == 'FULL_H' then
|
||||
vJoints[i] = WIN_JNT.FULL_H
|
||||
elseif tJoints[i][JWD_JOINT_TYPE] == 'FULL_V' then
|
||||
vJoints[i] = WIN_JNT.FULL_V
|
||||
elseif tJoints[i][JWD_JOINT_TYPE] == 'ANGLED' then
|
||||
vJoints[i] = WIN_JNT.ANGLED
|
||||
end
|
||||
end
|
||||
return vJoints
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetFrameShape( sShape)
|
||||
|
||||
if sShape == 'RECTANGLE' then
|
||||
return WIN_FRAME_TYPES.RECT
|
||||
elseif sShape == 'RIGHTCHAMFER' or sShape == 'LEFTCHAMFER' then
|
||||
return WIN_FRAME_TYPES.CHAMFER_SIDE
|
||||
elseif sShape == 'DOUBLECHAMFER' then
|
||||
return WIN_FRAME_TYPES.CHAMFER
|
||||
elseif sShape == 'ARC_FULL' then
|
||||
return WIN_FRAME_TYPES.ROUND_ARC
|
||||
elseif sShape == 'ARC' then
|
||||
return WIN_FRAME_TYPES.SEGMENTAL_ARC
|
||||
elseif sShape == 'DOUBLEARC' then
|
||||
return WIN_FRAME_TYPES.POINTED_ARC
|
||||
elseif sShape == 'TRIANGLE' then
|
||||
return WIN_FRAME_TYPES.TRG
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetOpeningType( sOpeningType)
|
||||
|
||||
if sOpeningType == 'NULL' then
|
||||
return WIN_OPENING_TYPES.NULL
|
||||
elseif sOpeningType == 'TURNONLY_LEFT' then
|
||||
return WIN_OPENING_TYPES.TURNONLY_LEFT
|
||||
elseif sOpeningType == 'TURNONLY_RIGHT' then
|
||||
return WIN_OPENING_TYPES.TURNONLY_RIGHT
|
||||
elseif sOpeningType == 'TILTTURN_LEFT' then
|
||||
return WIN_OPENING_TYPES.TILTTURN_LEFT
|
||||
elseif sOpeningType == 'TILTTURN_RIGHT' then
|
||||
return WIN_OPENING_TYPES.TILTTURN_RIGHT
|
||||
elseif sOpeningType == 'TILTONLY_TOP' then
|
||||
return WIN_OPENING_TYPES.TILTONLY_TOP
|
||||
elseif sOpeningType == 'TILTONLY_BOTTOM' then
|
||||
return WIN_OPENING_TYPES.TILTONLY_BOTTOM
|
||||
elseif sOpeningType == 'PIVOT' then
|
||||
return WIN_OPENING_TYPES.PIVOT
|
||||
elseif sOpeningType == 'FIXED' then
|
||||
return WIN_OPENING_TYPES.FIXED
|
||||
elseif sOpeningType == 'COPLANARSLIDE_LEFT' then
|
||||
return WIN_OPENING_TYPES.COPLANARSLIDE_LEFT
|
||||
elseif sOpeningType == 'COPLANARSLIDE_RIGHT' then
|
||||
return WIN_OPENING_TYPES.COPLANARSLIDE_RIGHT
|
||||
elseif sOpeningType == 'LIFTSLIDE_LEFT' then
|
||||
return WIN_OPENING_TYPES.LIFTSLIDE_LEFT
|
||||
elseif sOpeningType == 'LIFTSLIDE_RIGHT' then
|
||||
return WIN_OPENING_TYPES.LIFTSLIDE_RIGHT
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che ricava la tipologia dell'anta in base al tipo di apertura e alla struttura
|
||||
local function GetSashTypes( tSashes, vOpeningTypes)
|
||||
|
||||
-- alzante scorrevole
|
||||
local bSlideWindow = ( vOpeningTypes[1] == WIN_OPENING_TYPES.FIXED or vOpeningTypes[1] == WIN_OPENING_TYPES.COPLANARSLIDE_RIGHT or vOpeningTypes[1] == WIN_OPENING_TYPES.LIFTSLIDE_RIGHT)
|
||||
if bSlideWindow then
|
||||
if #tSashes == 2 then
|
||||
if vOpeningTypes[1] == WIN_OPENING_TYPES.FIXED then
|
||||
return { WIN_SASHTYPES.SLIDE_FIXED, WIN_SASHTYPES.SLIDE_MOVABLE}, 'Dx'
|
||||
elseif vOpeningTypes[2] == WIN_OPENING_TYPES.FIXED then
|
||||
return { WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_FIXED}, 'Sx'
|
||||
else
|
||||
-- TODO individuare parametro per disinguerle
|
||||
return { WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_MOVABLE_BACK}, 'Sx'
|
||||
end
|
||||
else
|
||||
if vOpeningTypes[1] == WIN_OPENING_TYPES.FIXED then
|
||||
return { WIN_SASHTYPES.SLIDE_FIXED, WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_FIXED}, 'Sx'
|
||||
elseif vOpeningTypes[2] == WIN_OPENING_TYPES.FIXED then
|
||||
return { WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_FIXED, WIN_SASHTYPES.SLIDE_MOVABLE}, 'Sx'
|
||||
else
|
||||
return { WIN_SASHTYPES.SLIDE_MOVABLE_BACK, WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_MOVABLE, WIN_SASHTYPES.SLIDE_MOVABLE_BACK}, 'Sx'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- casi standard
|
||||
if #tSashes == 2 then
|
||||
if tSashes[1][JWD_HAS_HANDLE] then
|
||||
return { WIN_SASHTYPES.ACTIVE, WIN_SASHTYPES.INACTIVE}, 'Sx'
|
||||
else
|
||||
return { WIN_SASHTYPES.INACTIVE, WIN_SASHTYPES.ACTIVE}, 'Dx'
|
||||
end
|
||||
|
||||
elseif #tSashes == 3 then
|
||||
if tSashes[1][JWD_HAS_HANDLE] then
|
||||
return { WIN_SASHTYPES.ACTIVE, WIN_SASHTYPES.INACTIVE_IN, WIN_SASHTYPES.INACTIVE_OUT}, 'Sx'
|
||||
elseif tSashes[2][JWD_HAS_HANDLE] then
|
||||
if vOpeningTypes[2] == WIN_OPENING_TYPES.TURNONLY_LEFT or vOpeningTypes[2] == WIN_OPENING_TYPES.TILTTURN_LEFT then
|
||||
return { WIN_SASHTYPES.ACTIVE_OUT, WIN_SASHTYPES.ACTIVE_IN, WIN_SASHTYPES.INACTIVE}, 'Sx'
|
||||
else
|
||||
return { WIN_SASHTYPES.INACTIVE, WIN_SASHTYPES.ACTIVE_IN, WIN_SASHTYPES.ACTIVE_OUT}, 'Dx'
|
||||
end
|
||||
else
|
||||
return { WIN_SASHTYPES.INACTIVE_OUT, WIN_SASHTYPES.INACTIVE_IN, WIN_SASHTYPES.ACTIVE}, 'Dx'
|
||||
end
|
||||
|
||||
else
|
||||
if tSashes[2][JWD_HAS_HANDLE] then
|
||||
return { WIN_SASHTYPES.ACTIVE_OUT, WIN_SASHTYPES.ACTIVE_IN, WIN_SASHTYPES.INACTIVE_IN, WIN_SASHTYPES.INACTIVE_OUT}, 'Sx'
|
||||
else
|
||||
return { WIN_SASHTYPES.INACTIVE_OUT, WIN_SASHTYPES.INACTIVE_IN, WIN_SASHTYPES.ACTIVE_IN, WIN_SASHTYPES.ACTIVE_OUT}, 'Dx'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione ricorsiva che legge le aree in tabella e crea le geometrie
|
||||
local function ConvertTableToGeometry( AreaTable, nParentId)
|
||||
|
||||
if not AreaTable then
|
||||
return
|
||||
end
|
||||
|
||||
-- TELAIO
|
||||
if AreaTable[JWD_AREA_TYPE] == 'FRAME' then
|
||||
|
||||
-- recupero i dati del telaio ( forma, giunzioni, dimensioni)
|
||||
local nType = GetFrameShape( AreaTable[JWD_FRAME_SHAPE])
|
||||
local vJoints = GetJoints( AreaTable[JWD_JOINTS])
|
||||
local vDim = {}
|
||||
local tDimensions = AreaTable[JWD_DIMENSION_LIST]
|
||||
for i = 1, #tDimensions do
|
||||
vDim[i] = tDimensions[i][JWD_VALUE]
|
||||
end
|
||||
|
||||
-- creo il telaio
|
||||
local nAreaId = WinCreate.CreateFrame( nType, vJoints, vDim[1], vDim[2], vDim[3])
|
||||
|
||||
-- verifico presenza bottomrail
|
||||
if AreaTable[JWD_BOTTOMRAIL] then
|
||||
WinCreate.AddBottomRail( nAreaId, AreaTable[JWD_BOTTOMRAIL_QTY])
|
||||
end
|
||||
|
||||
-- analizzo sottoaree
|
||||
if AreaTable[JWD_AREA_LIST] then
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][1], nAreaId)
|
||||
end
|
||||
|
||||
return nAreaId
|
||||
|
||||
-- ANTA
|
||||
elseif AreaTable[JWD_AREA_TYPE] == 'SASH' then
|
||||
|
||||
-- recupero dati
|
||||
local tSashes = AreaTable[JWD_SASH_LIST]
|
||||
local vJoints = GetJoints( AreaTable[JWD_JOINTS])
|
||||
local nBottomRailNbr = 0
|
||||
if AreaTable[JWD_BOTTOMRAIL] then
|
||||
nBottomRailNbr = AreaTable[JWD_BOTTOMRAIL_QTY]
|
||||
end
|
||||
|
||||
-- anta singola
|
||||
if #tSashes == 1 then
|
||||
local nOpeningType = GetOpeningType( tSashes[1][JWD_OPENING_TYPE])
|
||||
local nAreaId = WinCreate.AddSash( nParentId, vJoints, WIN_SASHTYPES.NULL, nOpeningType)
|
||||
-- aggiungo ferramenta sull'anta
|
||||
if nOpeningType == WIN_OPENING_TYPES.TURNONLY_LEFT or
|
||||
nOpeningType == WIN_OPENING_TYPES.TILTTURN_LEFT or
|
||||
nOpeningType == WIN_OPENING_TYPES.TILTONLY_TOP or
|
||||
nOpeningType == WIN_OPENING_TYPES.COPLANARSLIDE_LEFT or
|
||||
nOpeningType == WIN_OPENING_TYPES.LIFTSLIDE_LEFT then
|
||||
EgtSetInfo( nAreaId, WIN_HDW_HANDLE, 'Sx')
|
||||
elseif nOpeningType == WIN_OPENING_TYPES.TURNONLY_RIGHT or
|
||||
nOpeningType == WIN_OPENING_TYPES.TILTTURN_RIGHT or
|
||||
nOpeningType == WIN_OPENING_TYPES.TILTONLY_BOTTOM or
|
||||
nOpeningType == WIN_OPENING_TYPES.COPLANARSLIDE_RIGHT or
|
||||
nOpeningType == WIN_OPENING_TYPES.LIFTSLIDE_RIGHT then
|
||||
EgtSetInfo( nAreaId, WIN_HDW_HANDLE, 'Dx')
|
||||
end
|
||||
WinCreate.AddHardware( nAreaId, AreaTable[JWD_HARDWARE])
|
||||
-- bottomrail
|
||||
WinCreate.AddBottomRail( nAreaId, nBottomRailNbr)
|
||||
-- analizzo sottaree
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][1], nAreaId)
|
||||
|
||||
-- ante multiple
|
||||
else
|
||||
-- aggiungo la ferramenta sull'area parent
|
||||
WinCreate.AddHardware( nParentId, AreaTable[JWD_HARDWARE])
|
||||
|
||||
-- recupero dati delle ante
|
||||
local vDimensions = {}
|
||||
local vOpeningTypes = {}
|
||||
for i = 1, #tSashes do
|
||||
vDimensions[i] = tSashes[i][JWD_DIMENSION] / 100
|
||||
vOpeningTypes[i] = GetOpeningType( tSashes[i][JWD_OPENING_TYPE])
|
||||
end
|
||||
table.remove( vDimensions)
|
||||
local vSashTypes, sHandleSide = GetSashTypes( tSashes, vOpeningTypes)
|
||||
EgtSetInfo( nParentId, WIN_HDW_HANDLE, sHandleSide)
|
||||
|
||||
-- aggiungo gli split
|
||||
local vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.PERCENTAGE, vDimensions, 1, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- aggiungo le ante
|
||||
for i = 1, #vSplitAreas do
|
||||
local nAreaId = WinCreate.AddSash( vSplitAreas[i], vJoints, vSashTypes[i], vOpeningTypes[i])
|
||||
-- bottomrail
|
||||
WinCreate.AddBottomRail( nAreaId, nBottomRailNbr)
|
||||
-- analizzo sottaree
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][i], nAreaId)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- FILL
|
||||
elseif AreaTable[JWD_AREA_TYPE] == 'FILL' then
|
||||
local nFillType = EgtIf( AreaTable[JWD_FILL_TYPE] == 'GLASS', WIN_FILLTYPES.GLASS, WIN_FILLTYPES.WOOD)
|
||||
WinCreate.AddFill( nParentId, nFillType)
|
||||
|
||||
|
||||
-- SPLIT
|
||||
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, AreaTable[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
|
||||
for i = 1, #vSplitAreas do
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][i], vSplitAreas[i])
|
||||
end
|
||||
|
||||
|
||||
-- NULL
|
||||
elseif AreaTable[JWD_AREA_TYPE] == 'SPLITTED' then
|
||||
if AreaTable[JWD_AREA_LIST] then
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][1], nParentId)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che dato un file in json ne crea il progetto gerarchico
|
||||
function WinManageProject.ReadFromFile( sFilePath, sProfileDir)
|
||||
-- leggo il file
|
||||
local SouFh = io.open( sFilePath, "rb")
|
||||
if not SouFh then
|
||||
EgtOutBox( 'Error opening ' .. sFilePath, 'ReadFromFile', 'ERROR')
|
||||
return false
|
||||
end
|
||||
local content = SouFh:read( "*all")
|
||||
SouFh:close()
|
||||
local tData = JSON:decode( content)
|
||||
|
||||
-- importo il profilo
|
||||
local sProfilePath = sProfileDir .. '\\' .. tData[JWD_PROFILE_PATH] .. '.nge'
|
||||
if not WinCreate.ImportProfile( sProfilePath) then
|
||||
return false
|
||||
end
|
||||
|
||||
-- creo le aree
|
||||
ConvertTableToGeometry( tData[JWD_AREA_LIST][1], GDB_ID.ROOT)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
-- funzione che apre un file jwd
|
||||
function WinManageProject.ReadFromJwd( sJwd)
|
||||
local tData = JSON:decode( sJwd)
|
||||
|
||||
-- importo il profilo
|
||||
local sProfilePath = _G.sProfilePath .. '\\' .. tData[JWD_PROFILE_PATH] .. '.nge'
|
||||
if not WinCreate.ImportProfile( sProfilePath) then
|
||||
return false
|
||||
end
|
||||
|
||||
-- creo le aree
|
||||
return ConvertTableToGeometry( tData[JWD_AREA_LIST][1], GDB_ID.ROOT)
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinManageProject
|
||||
@@ -15,8 +15,7 @@
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
--EgtEnableDebug( false)
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
@@ -24,10 +23,6 @@ EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
@@ -39,7 +34,7 @@ if WINDOW and WINDOW.FILE then
|
||||
sOpenFilePath = WINDOW.FILE
|
||||
else
|
||||
-- altrimenti apro dialogo di scelta file
|
||||
local sOpenDirPath = 'c:\\EgtData\\EgwWindowLua\\Projects'
|
||||
local sOpenDirPath = 'c:\\EgtData\\EgtWindowMaker\\Projects'
|
||||
local FilePathList = EgtFindAllFiles( sOpenDirPath .. '\\*.jwd')
|
||||
local sDialogFile = 'CB:'
|
||||
for FilePathIndex = 1, #FilePathList do
|
||||
@@ -58,8 +53,8 @@ EgtNewFile()
|
||||
|
||||
EgtStartCounter()
|
||||
|
||||
--local sFileName = 'RoundArc_FixedGlass_Vertical&HorizontalSplit.jwd'
|
||||
if not WinManageProject.ReadFromFile( sOpenFilePath) then
|
||||
local sProfileDir = 'C:\\EgtData\\EgtWindowMaker\\Profiles'
|
||||
if not WinManageProject.ReadFromFile( sOpenFilePath, sProfileDir) then
|
||||
return
|
||||
end
|
||||
|
||||
@@ -67,11 +62,11 @@ end
|
||||
WinCalculate.SetCalcSolid( true)
|
||||
|
||||
-- creo i pezzi
|
||||
local nFrameId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREAASTERISK)
|
||||
local nFrameId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREA .. '*')
|
||||
WinCalculate.CreatePartFromArea( nFrameId)
|
||||
-- WinCalculate.AddHardware( nFrameId)
|
||||
-- WinCalculate.AddAccessories( nFrameId, true)
|
||||
|
||||
-- preparo per automatismo lavorazioni
|
||||
-- WinCalculate.PrepareProject()
|
||||
|
||||
-- elimino profilo se in batch per test
|
||||
if WINDOW and WINDOW.TEST and WINDOW.TEST == 1 then
|
||||
@@ -0,0 +1,379 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
local WinManageProject = require( 'WinManageProject')
|
||||
|
||||
-- WDG
|
||||
|
||||
-- funzioni
|
||||
----------------------------------------------------------------------------------
|
||||
local function GetVariableList( sName)
|
||||
local List = {}
|
||||
local nIndex = 1
|
||||
while WDG[sName .. nIndex] do
|
||||
table.insert(List, WDG['JOINT' .. nIndex])
|
||||
nIndex = nIndex + 1
|
||||
end
|
||||
return List
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function CleanVariableList( sName)
|
||||
local nIndex = 1
|
||||
while WDG[sName .. nIndex] do
|
||||
WDG[sName .. nIndex] = nil
|
||||
nIndex = nIndex + 1
|
||||
end
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function SetProfilePath()
|
||||
_G.sProfilePath = WDG.PROFILEPATH
|
||||
end
|
||||
_G.SetProfilePath = SetProfilePath
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_ImportProfile()
|
||||
_G.sProfile = WDG.PROFILE
|
||||
if _G.sProfilePath then
|
||||
WinCreate.ImportProfile( _G.sProfilePath .. '\\' .. WDG.PROFILE .. '.nge')
|
||||
end
|
||||
end
|
||||
_G.WinCreate_ImportProfile = WinCreate_ImportProfile
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function FindThresholds( nGrpId)
|
||||
local tThresholds = {} -- array delle soglie
|
||||
-- ogni soglia è una tabella con due chiavi : nType = intero che indica la tipologia ( cfr. WIN_THRESHOLD_TYPES), sName = nome della soglia nel file dei profili
|
||||
local tHash = {}
|
||||
-- scorro tutti i profili del telaio
|
||||
local nCurrId = EgtGetFirstInGroup( nGrpId)
|
||||
while nCurrId do
|
||||
-- verifico se di tipo bottom
|
||||
local nBottomType = EgtGetInfo( nCurrId, WIN_BOTTOM, 'i') or WIN_THRESHOLD_TYPES.NULL
|
||||
if nBottomType ~= WIN_THRESHOLD_TYPES.NULL then
|
||||
-- recupero il nome
|
||||
local vNames = EgtSplitString( EgtGetName( nCurrId), '_')
|
||||
local sName = vNames[#vNames]
|
||||
if not tHash[sName] then
|
||||
table.insert( tThresholds, { nType = nBottomType, sName = sName})
|
||||
tHash[sName] = 1
|
||||
end
|
||||
end
|
||||
nCurrId = EgtGetNext( nCurrId)
|
||||
end
|
||||
return tThresholds
|
||||
end
|
||||
|
||||
local function GetProfileThresholdsList()
|
||||
local tThresholds = {}
|
||||
if _G.sProfile == WDG.PROFILE then
|
||||
-- se profilo corrente
|
||||
local nProfileGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nFrameGrp = EgtGetFirstNameInGroup( nProfileGrp, WIN_FRAME)
|
||||
tThresholds = FindThresholds( nFrameGrp)
|
||||
else
|
||||
-- importo temporaneamente il profilo
|
||||
local nLastId = EgtGetLastInGroup( GDB_ID.ROOT)
|
||||
local bOk = EgtInsertFile( _G.sProfilePath .. '\\' .. WDG.PROFILE .. '.nge')
|
||||
local nCurrId = EgtGetNext( nLastId or GDB_ID.NULL) or EgtGetFirstInGroup( GDB_ID.ROOT)
|
||||
while nCurrId do
|
||||
if EgtGetName( nCurrId) == WIN_FRAME then
|
||||
tThresholds = FindThresholds( nCurrId)
|
||||
end
|
||||
-- passo al successivo e cancello il corrente
|
||||
local nOldId = nCurrId
|
||||
nCurrId = EgtGetNext( nCurrId)
|
||||
EgtErase( nOldId)
|
||||
end
|
||||
end
|
||||
WDG.THRESHOLDSLIST = tThresholds
|
||||
end
|
||||
_G.GetProfileThresholdsList = GetProfileThresholdsList
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_CreateFrame()
|
||||
local JointList = GetVariableList( 'JOINT')
|
||||
WDG.AREAID = WinCreate.CreateFrame( WDG.FRAMETYPE, JointList, WDG.WIDTH, WDG.HEIGHT, WDG.HEIGHT2)
|
||||
CleanVariableList('JOINT')
|
||||
end
|
||||
_G.WinCreate_CreateFrame = WinCreate_CreateFrame
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddSash()
|
||||
local JointList = GetVariableList( 'JOINT')
|
||||
WDG.AREAID = WinCreate.AddSash( WDG.AREAID, JointList, WDG.SASHTYPE, WDG.OPENINGTYPE)
|
||||
CleanVariableList( 'JOINT')
|
||||
end
|
||||
_G.WinCreate_AddSash = WinCreate_AddSash
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddHardware()
|
||||
WinCreate.AddHardware( WDG.AREAID, WDG.FAVOURITE, WDG.HANDLE)
|
||||
end
|
||||
_G.WinCreate_AddHardware = WinCreate_AddHardware
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddFill()
|
||||
WDG.AREAID = WinCreate.AddFill( WDG.AREAID, WDG.FILLTYPE)
|
||||
end
|
||||
_G.WinCreate_AddFill = WinCreate_AddFill
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddBottomRail()
|
||||
WinCreate.AddBottomRail( WDG.AREAID, WDG.NBR)
|
||||
end
|
||||
_G.WinCreate_AddBottomRail = WinCreate_AddBottomRail
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddThreshold()
|
||||
WinCreate.AddThreshold( WDG.AREAID, WDG.THRESHOLDPROFILE)
|
||||
end
|
||||
_G.WinCreate_AddThreshold = WinCreate_AddThreshold
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddSplits()
|
||||
local AreaIndex = 1
|
||||
while WDG['AREAID' .. AreaIndex] do
|
||||
WDG['AREAID' .. AreaIndex] = nil
|
||||
AreaIndex = AreaIndex + 1
|
||||
end
|
||||
local PositionList = {}
|
||||
local PositionIndex = 1
|
||||
while WDG['POSITION' .. PositionIndex] do
|
||||
table.insert( PositionList, WDG['POSITION' .. PositionIndex])
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
local AreaList = WinCreate.AddSplits(WDG.AREAID, WDG.SPLITORIENTATION, WDG.MEASURETYPE, PositionList, WDG.PROPORTION, WDG.SPLITTYPE)
|
||||
for AreaIndex = 1, #AreaList do
|
||||
WDG['AREAID' .. AreaIndex] = AreaList[ AreaIndex]
|
||||
end
|
||||
PositionIndex = 1
|
||||
while WDG['POSITION' .. PositionIndex] do
|
||||
WDG['POSITION' .. PositionIndex] = nil
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
end
|
||||
_G.WinCreate_AddSplits = WinCreate_AddSplits
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_AddGridSplits()
|
||||
local AreaIndex = 1
|
||||
while WDG['AREAID' .. AreaIndex] do
|
||||
WDG['AREAID' .. AreaIndex] = nil
|
||||
AreaIndex = AreaIndex + 1
|
||||
end
|
||||
local PositionListVert = {}
|
||||
local PositionIndex = 1
|
||||
while WDG['POSITION_VERT' .. PositionIndex] do
|
||||
table.insert( PositionListVert, WDG['POSITION' .. PositionIndex])
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
local PositionListHoriz = {}
|
||||
PositionIndex = 1
|
||||
while WDG['POSITION_HORIZ' .. PositionIndex] do
|
||||
table.insert( PositionListHoriz, WDG['POSITION' .. PositionIndex])
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
local AreaList = WinCreate.AddGridSplits(WDG.AREAID, WDG.MEASURETYPE, PositionListVert, PositionListHoriz, WDG.STARTVERTICAL, WDG.SPLITTYPE)
|
||||
for AreaIndex = 1, #AreaList do
|
||||
WDG['AREAID' .. AreaIndex] = AreaList[ AreaIndex]
|
||||
end
|
||||
PositionIndex = 1
|
||||
while WDG['POSITION_VERT' .. PositionIndex] do
|
||||
WDG['POSITION_VERT' .. PositionIndex] = nil
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
PositionIndex = 1
|
||||
while WDG['POSITION_HORIZ' .. PositionIndex] do
|
||||
WDG['POSITION_HORIZ' .. PositionIndex] = nil
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
end
|
||||
_G.WinCreate_AddGridSplits = WinCreate_AddGridSplits
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_SetCalcSolid()
|
||||
WinCalculate.SetCalcSolid( WDG.VALUE)
|
||||
end
|
||||
_G.WinCalculate_SetCalcSolid = WinCalculate_SetCalcSolid
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_SetSimplifiedSolid()
|
||||
WinCalculate.SetSimplifiedSolid( WDG.VALUE)
|
||||
end
|
||||
_G.WinCalculate_SetSimplifiedSolid = WinCalculate_SetSimplifiedSolid
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_SetCalcPreview()
|
||||
WinCalculate.SetCalcPreview( WDG.VALUE)
|
||||
end
|
||||
_G.WinCalculate_SetCalcPreview = WinCalculate_SetCalcPreview
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_CreatePartFromArea()
|
||||
WinCalculate.CreatePartFromArea( WDG.FRAMEID)
|
||||
end
|
||||
_G.WinCalculate_CreatePartFromArea = WinCalculate_CreatePartFromArea
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_RecalcSolids()
|
||||
WinCalculate.RecalcSolids( WDG.FRAMEID)
|
||||
end
|
||||
_G.WinCalculate_RecalcSolids = WinCalculate_RecalcSolids
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_AddHardware()
|
||||
WDG.HARDWAREKIT_LIST, WDG.HARDWAREPOSITION_LIST = WinCalculate.AddHardware( WDG.FRAMEID)
|
||||
end
|
||||
_G.WinCalculate_AddHardware = WinCalculate_AddHardware
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCreate_GetHardwareOptionPath()
|
||||
WDG.HWDOPTPATH = WinCalculate.AddHardwareForSash( WDG.AREAID, true)
|
||||
end
|
||||
_G.WinCreate_GetHardwareOptionPath = WinCreate_GetHardwareOptionPath
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_AddAccessories()
|
||||
WinCalculate.AddAccessories( WDG.FRAMEID, WDG.DRAW)
|
||||
end
|
||||
_G.WinCalculate_AddAccessories = WinCalculate_AddAccessories
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinManage_LoadJwd()
|
||||
WDG.AREAID = WinManageProject.ReadFromJwd( WDG.JWD)
|
||||
end
|
||||
_G.WinManage_LoadJwd = WinManage_LoadJwd
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinGetImage()
|
||||
-- sistemo la vista
|
||||
EgtSetView( SCE_VD.TOP, false)
|
||||
EgtZoom( SCE_ZM.ALL, false)
|
||||
-- salvo immagine
|
||||
EgtGetImage( SCE_SM.SH, EgtStdColor('WHITE'), EgtStdColor('WHITE'), 1920, 1080, WDG.FILE)
|
||||
end
|
||||
_G.WinGetImage = WinGetImage
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinGetSvg()
|
||||
-- sistemo la vista
|
||||
EgtSetView( SCE_VD.TOP, false)
|
||||
EgtZoom( SCE_ZM.ALL, false)
|
||||
-- salvo immagine
|
||||
EgtExportSvg( WDG.GROUPID, WDG.FILE, EEX_FLT.LEV_SYSTEM + EEX_FLT.MODE_STD + EEX_FLT.STAT_OFF)
|
||||
end
|
||||
_G.WinGetSvg = WinGetSvg
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinSetAuxGrpStatus()
|
||||
-- recupero il gruppo aux della ferramenta e accessori e assegno stato
|
||||
local nAuxGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AUX) or GDB_ID.NULL
|
||||
EgtSetStatus( nAuxGrp, EgtIf( WDG.AUXSTATUS, GDB_ST.ON, GDB_ST.OFF))
|
||||
end
|
||||
_G.WinSetAuxGrpStatus = WinSetAuxGrpStatus
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinGetSectionsTotalLenghts()
|
||||
WDG.SECTIONS_LENGTHS = {} -- array con le sezioni
|
||||
-- ogni sezione è una tabella con le seguenti chiavi : w = spessore, h = altezza, l = array con le lunghezze dei pezzi di tale sezione
|
||||
-- scorro tutti i pezzi
|
||||
local nPartId = EgtGetFirstPart()
|
||||
while nPartId do
|
||||
local nPartType = EgtGetInfo( nPartId, WIN_PART_TYPE, 'i') or WIN_PART_TYPES.NULL
|
||||
if nPartType ~= WIN_PART_TYPES.FILL then
|
||||
-- recupero il gruppo logs ( per archi) o geo dove sono salvate le dimensioni del pezzo
|
||||
local nLayerId = EgtGetFirstNameInGroup( nPartId, WIN_LOGS) or EgtGetFirstNameInGroup( nPartId, WIN_GEO) or GDB_ID.NULL
|
||||
if nLayerId ~= GDB_ID.NULL then
|
||||
local dWidth = EgtGetInfo( nLayerId, WIN_GEOWIDTH, 'd')
|
||||
local dHeight = EgtGetInfo( nLayerId, WIN_GEOHEIGHT, 'd')
|
||||
local dLen = EgtGetInfo( nLayerId, WIN_GEOLEN, 'd')
|
||||
if dLen then
|
||||
-- verfico se devo aggiornare sezione già presente o se devo aggiungerla
|
||||
local bFound = false
|
||||
for i = 1, #WDG.SECTIONS_LENGTHS do
|
||||
if ( abs( WDG.SECTIONS_LENGTHS[i].W - dWidth) < GEO.EPS_SMALL and abs( WDG.SECTIONS_LENGTHS[i].H - dHeight) < GEO.EPS_SMALL) then
|
||||
bFound = true
|
||||
table.insert( WDG.SECTIONS_LENGTHS[i].L, dLen)
|
||||
WDG.SECTIONS_LENGTHS[i].TotL = WDG.SECTIONS_LENGTHS[i].TotL + dLen
|
||||
end
|
||||
end
|
||||
if not bFound then
|
||||
table.insert( WDG.SECTIONS_LENGTHS, { W = dWidth, H = dHeight, L = {dLen}, TotL = dLen})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
nPartId = EgtGetNextPart( nPartId)
|
||||
end
|
||||
end
|
||||
_G.WinGetSectionsTotalLenghts = WinGetSectionsTotalLenghts
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinGetGlassesList()
|
||||
WDG.GLASSES_LIST = {} -- array dei vetri
|
||||
-- ogni vetro è una tabella con le seguenti chiavi : bRect = true se rettangolo/false altrimenti, w/l/t sono le tre dimensioni
|
||||
local nPartId = EgtGetFirstPart()
|
||||
while nPartId do
|
||||
local nFillType = EgtGetInfo( nPartId, WIN_FILLTYPE)
|
||||
if nFillType == WIN_GLASS then
|
||||
local nLayerId = EgtGetFirstNameInGroup( nPartId, WIN_GEO)
|
||||
local bShapeRect = EgtGetInfo( nLayerId, WIN_GLASS_RECT, 'b') or false
|
||||
local dW = EgtGetInfo( nLayerId, WIN_GEOWIDTH, 'd') or 0
|
||||
local dL = EgtGetInfo( nLayerId, WIN_GEOHEIGHT, 'd') or 0
|
||||
local dT = EgtGetInfo( nLayerId, WIN_GLASSTHICKNESS, 'd') or 0
|
||||
table.insert( WDG.GLASSES_LIST, { Rect = bShapeRect, W = dW, L = dL, T = dT})
|
||||
end
|
||||
nPartId = EgtGetNextPart( nPartId)
|
||||
end
|
||||
end
|
||||
_G.WinGetGlassesList = WinGetGlassesList
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_SetCalcHardwareKit()
|
||||
WinCalculate.SetCalcHardwareKit( WDG.VALUE)
|
||||
end
|
||||
_G.WinCalculate_SetCalcHardwareKit = WinCalculate_SetCalcHardwareKit
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_SetCalcHardwarePosition()
|
||||
WinCalculate.SetCalcHardwarePosition( WDG.VALUE)
|
||||
end
|
||||
_G.WinCalculate_SetCalcHardwarePosition = WinCalculate_SetCalcHardwarePosition
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function WinCalculate_GetHardwareOptions()
|
||||
WDG.HARDWAREOPTIONS = WinCalculate.GetHardwareOptions( WDG.AREAID)
|
||||
end
|
||||
_G.WinCalculate_GetHardwareOptions = WinCalculate_GetHardwareOptions
|
||||
|
||||
@@ -1,271 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
|
||||
---- Imposto direttorio libreria specializzata per Nesting
|
||||
--local sBaseDir = EgtGetSourceDir()
|
||||
--EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
--EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
|
||||
-- local Config = require( 'Config')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
-- Tipi di giunzioni (joint)
|
||||
JNT = {
|
||||
ANGLED = 1,
|
||||
CP_H = 2,
|
||||
CP_V = 3,
|
||||
CP_M = 4
|
||||
}
|
||||
|
||||
-- Tipi di profilo
|
||||
PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
VERTICAL = 5,
|
||||
HORIZONTAL = 6
|
||||
}
|
||||
|
||||
local CUT_SURF_EPS_SMALL = 0.05
|
||||
|
||||
local PROFILE = 'Profile'
|
||||
local FRAME = 'Frame'
|
||||
local OUTLINE = 'Outline'
|
||||
local GEO = 'Geo'
|
||||
local SOLID = 'Solid'
|
||||
local BOTTOM = 'Bottom'
|
||||
local RIGHT = 'Right'
|
||||
local TOP = 'Top'
|
||||
local LEFT = 'Left'
|
||||
|
||||
local SASH_TOP = 'Sash_Top'
|
||||
local SASH_BOTTOM = 'Sash_Bottom'
|
||||
local FIXED_TOP = 'Fixed_Top'
|
||||
local FIXED_BOTTOM = 'Fixed_Bottom'
|
||||
|
||||
local REF = 'Ref'
|
||||
local SECTION = 'Section'
|
||||
local ALU = 'Alu'
|
||||
local CTRIN = 'CtrIn'
|
||||
local OUT = 'Out'
|
||||
local OUTOFST = 'OutOfst'
|
||||
|
||||
local HoleHeight = 1200
|
||||
local HoleWidth = 1200
|
||||
|
||||
local WindowWidth = 1200
|
||||
local WindowHeight = 1200
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
local function GetRefWithBBoxFromProfile( nProfileFrameId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
local function GetDeltaProfile( nProfileFrameId, sProfileType)
|
||||
local nProfileId, b3Ref = GetRefWithBBoxFromProfile( nProfileFrameId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
local function CalcFrameFootPrint( nProfileFrameId, nId, nGeoId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nId)
|
||||
local nProfileType = PRF.NULL
|
||||
if sName == TOP then
|
||||
nProfileType = PRF.TOP
|
||||
elseif sName == BOTTOM then
|
||||
nProfileType = PRF.BOTTOM
|
||||
elseif sName == LEFT then
|
||||
nProfileType = PRF.LEFT
|
||||
elseif sName == RIGHT then
|
||||
nProfileType = PRF.RIGHT
|
||||
end
|
||||
local p3FrameStart = EgtSP( nId)
|
||||
local p3FrameEnd = EgtEP( nId)
|
||||
local nNewGeoId
|
||||
if nProfileType == PRF.TOP then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local _, b3TopRef = GetRefWithBBoxFromProfile( nProfileFrameId, SASH_TOP)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd - Y_AX() * b3TopRef:getDimY(), p3FrameStart)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, TOP)
|
||||
elseif nProfileType == PRF.BOTTOM then
|
||||
local _, b3BottomRef = GetRefWithBBoxFromProfile( nProfileFrameId, SASH_BOTTOM)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart, p3FrameEnd + Y_AX() * b3BottomRef:getDimY())
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3BottomRef:getDimX())
|
||||
EgtSetName( nNewGeoId, BOTTOM)
|
||||
elseif nProfileType == PRF.LEFT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd + Y_AX() * dBottomCPDelta , p3FrameStart + X_AX() * b3TopRef:getDimY() - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, LEFT)
|
||||
elseif nProfileType == PRF.RIGHT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart - X_AX() * b3TopRef:getDimY() + Y_AX() * dBottomCPDelta , p3FrameEnd - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, RIGHT)
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, PROFILE)
|
||||
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
|
||||
local nGroupId = EgtGetFirstInGroup( GDB_ID.ROOT)
|
||||
while nGroupId do
|
||||
if nGroupId ~= nProfileId then
|
||||
local nCurrId = nGroupId
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
EgtRelocateGlob( nCurrId, nProfileId)
|
||||
EgtSetStatus( nCurrId, GDB_ST.OFF)
|
||||
else
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
end
|
||||
end
|
||||
|
||||
-- creo struttura layer del frame
|
||||
local nFrameLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameLayerId, FRAME)
|
||||
local nOutlineId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nOutlineId, OUTLINE)
|
||||
local nGeoId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nGeoId, GEO)
|
||||
local nSolidId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nSolidId, SOLID)
|
||||
local nFrameProfileId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nFrameProfileId, PROFILE)
|
||||
|
||||
-- disegno outline
|
||||
local nFrameBottomId = EgtLine( nOutlineId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0) )
|
||||
EgtSetName( nFrameBottomId, BOTTOM)
|
||||
local nFrameRightId = EgtLine( nOutlineId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0) )
|
||||
EgtSetName( nFrameRightId, RIGHT)
|
||||
local nFrameTopId = EgtLine( nOutlineId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0) )
|
||||
EgtSetName( nFrameTopId, TOP)
|
||||
local nFrameLeftId = EgtLine( nOutlineId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0) )
|
||||
EgtSetName( nFrameLeftId, LEFT)
|
||||
|
||||
-- scelgo tipo di giunzioni
|
||||
-- per il momento faccio controprofili verticali
|
||||
|
||||
|
||||
-- scelgo il tipo
|
||||
-- per il momento faccio controprofili per anta
|
||||
|
||||
-- disegno ingombri frame
|
||||
local nProfileFrameId = EgtGetFirstNameInGroup( nProfileId, FRAME)
|
||||
|
||||
local nCurrOutlineId = EgtGetFirstInGroup( nOutlineId)
|
||||
while nCurrOutlineId do
|
||||
CalcFrameFootPrint( nProfileFrameId, nCurrOutlineId, nGeoId)
|
||||
nCurrOutlineId = EgtGetNext( nCurrOutlineId)
|
||||
end
|
||||
|
||||
-- posiziono profili
|
||||
-- bottom
|
||||
local nBottomProfileId = EgtGetFirstNameInGroup( nProfileFrameId, SASH_BOTTOM)
|
||||
-- creo copia
|
||||
local nBottomFrameProfileId = EgtCopy( nBottomProfileId, nFrameProfileId)
|
||||
local b3BottomFrameProfile = EgtGetBBox( nBottomFrameProfileId, GDB_BB.STANDARD)
|
||||
-- recupero posizione e BBox del geo
|
||||
local nBottomGeoId = EgtGetFirstNameInGroup( nGeoId, BOTTOM)
|
||||
local b3BottomGeo = EgtGetBBox(nBottomGeoId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ() - Point3d( b3BottomFrameProfile:getMax():getX(), b3BottomFrameProfile:getMin():getY(), b3BottomGeo:getMax():getZ()))
|
||||
EgtRotate( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ(), Y_AX(), -90)
|
||||
-- recupero profilo outline e lo estrudo
|
||||
local nBottomFrameOutlineId = EgtGetFirstNameInGroup( nBottomFrameProfileId, SECTION)
|
||||
local nBottomExtrusionId = EgtSurfTmByExtrusion( nSolidId, nBottomFrameOutlineId, X_AX() * b3BottomGeo:getDimX())
|
||||
EgtInvertSurf( nBottomExtrusionId)
|
||||
-- copio e sposto profilo out left su start bottom per tagliarlo
|
||||
local nLeftProfileId = EgtGetFirstNameInGroup( nProfileFrameId, SASH_TOP)
|
||||
local nBottomOutLeftProfileId = EgtCopy( nLeftProfileId, nFrameProfileId)
|
||||
EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), 90)
|
||||
local b3BottomOutLeftProfileId = EgtGetBBoxGlob(nBottomOutLeftProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomOutLeftProfileId, b3BottomGeo:getMin() - b3BottomOutLeftProfileId:getMin())
|
||||
local nOutLeftProfileId = EgtGetFirstNameInGroup( nBottomOutLeftProfileId, OUTOFST)
|
||||
local nBottomOutLeftProfileExtrusionId = EgtSurfTmByExtrusion( nSolidId, nOutLeftProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidId)
|
||||
EgtSurfTmCut( nBottomExtrusionId, nBottomOutLeftProfileExtrusionId, true, false)
|
||||
EgtSurfTmCut( nBottomOutLeftProfileExtrusionId, nExtrCopyId, true, false)
|
||||
--EgtErase( nExtrCopyId)
|
||||
-- copio e sposto profilo out left su end bottom per tagliarlo
|
||||
local nRightProfileId = EgtGetFirstNameInGroup( nProfileFrameId, SASH_TOP)
|
||||
local nBottomOutRightProfileId = EgtCopy( nRightProfileId, nFrameProfileId)
|
||||
EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), -90)
|
||||
local b3BottomOutRightProfileId = EgtGetBBoxGlob(nBottomOutRightProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMax():getX(),b3BottomGeo:getMin():getY(),b3BottomGeo:getMin():getZ()) - Point3d( b3BottomOutRightProfileId:getMax():getX(), b3BottomOutRightProfileId:getMin():getY(),b3BottomOutRightProfileId:getMin():getZ()))
|
||||
local nOutRightProfileId = EgtGetFirstNameInGroup( nBottomOutRightProfileId, OUTOFST)
|
||||
local nBottomOutRightProfileExtrusionId = EgtSurfTmByExtrusion( nSolidId, nOutRightProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
--EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
--local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidId)
|
||||
EgtSurfTmCut( nBottomExtrusionId, nBottomOutRightProfileExtrusionId, true, false)
|
||||
EgtSurfTmCut( nBottomOutRightProfileExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,338 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
|
||||
---- Imposto direttorio libreria specializzata per Nesting
|
||||
--local sBaseDir = EgtGetSourceDir()
|
||||
--EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
--EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
|
||||
-- local Config = require( 'Config')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
-- Tipi di giunzioni (joint)
|
||||
JNT = {
|
||||
ANGLED = 1,
|
||||
CP_H = 2,
|
||||
CP_V = 3,
|
||||
CP_M = 4
|
||||
}
|
||||
|
||||
-- Tipi di profilo
|
||||
PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
VERTICAL = 5,
|
||||
HORIZONTAL = 6
|
||||
}
|
||||
|
||||
local CUT_SURF_EPS_SMALL = 0.05
|
||||
|
||||
local PROFILE = 'Profile'
|
||||
local FRAME = 'Frame'
|
||||
local OUTLINE = 'Outline'
|
||||
local GEO = 'Geo'
|
||||
local SOLID = 'Solid'
|
||||
local BOTTOM = 'Bottom'
|
||||
local RIGHT = 'Right'
|
||||
local TOP = 'Top'
|
||||
local LEFT = 'Left'
|
||||
|
||||
local SASH_TOP = 'Sash_Top'
|
||||
local SASH_BOTTOM = 'Sash_Bottom'
|
||||
local FIXED_TOP = 'Fixed_Top'
|
||||
local FIXED_BOTTOM = 'Fixed_Bottom'
|
||||
|
||||
local REF = 'Ref'
|
||||
local SECTION = 'Section'
|
||||
local ALU = 'Alu'
|
||||
local CTRIN = 'CtrIn'
|
||||
local OUT = 'Out'
|
||||
local OUTOFST = 'OutOfst'
|
||||
|
||||
local HoleHeight = 1200
|
||||
local HoleWidth = 1200
|
||||
|
||||
local WindowWidth = 1200
|
||||
local WindowHeight = 1200
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
local function GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
local function GetDeltaProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId, b3Ref = GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
local function CalcFrameFootPrint( nProfileFrameLayerId, nId, nGeoId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nId)
|
||||
local nProfileType = PRF.NULL
|
||||
if sName == TOP then
|
||||
nProfileType = PRF.TOP
|
||||
elseif sName == BOTTOM then
|
||||
nProfileType = PRF.BOTTOM
|
||||
elseif sName == LEFT then
|
||||
nProfileType = PRF.LEFT
|
||||
elseif sName == RIGHT then
|
||||
nProfileType = PRF.RIGHT
|
||||
end
|
||||
local p3FrameStart = EgtSP( nId)
|
||||
local p3FrameEnd = EgtEP( nId)
|
||||
local nNewGeoId
|
||||
if nProfileType == PRF.TOP then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local _, b3TopRef = GetRefWithBBoxFromProfile( nProfileFrameLayerId, SASH_TOP)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd - Y_AX() * b3TopRef:getDimY(), p3FrameStart)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, TOP)
|
||||
elseif nProfileType == PRF.BOTTOM then
|
||||
local _, b3BottomRef = GetRefWithBBoxFromProfile( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart, p3FrameEnd + Y_AX() * b3BottomRef:getDimY())
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3BottomRef:getDimX())
|
||||
EgtSetName( nNewGeoId, BOTTOM)
|
||||
elseif nProfileType == PRF.LEFT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameLayerId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd + Y_AX() * dBottomCPDelta , p3FrameStart + X_AX() * b3TopRef:getDimY() - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, LEFT)
|
||||
elseif nProfileType == PRF.RIGHT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameLayerId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart - X_AX() * b3TopRef:getDimY() + Y_AX() * dBottomCPDelta , p3FrameEnd - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, RIGHT)
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
local function CalcFrameSolid( nProfileFrameLayerId, nGeoId, nFrameProfileLayerId, nGeoLayerId, nSolidLayerId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nGeoId)
|
||||
local nProfileType = PRF.NULL
|
||||
if sName == TOP then
|
||||
nProfileType = PRF.TOP
|
||||
elseif sName == BOTTOM then
|
||||
nProfileType = PRF.BOTTOM
|
||||
elseif sName == LEFT then
|
||||
nProfileType = PRF.LEFT
|
||||
elseif sName == RIGHT then
|
||||
nProfileType = PRF.RIGHT
|
||||
end
|
||||
if nProfileType == PRF.TOP then
|
||||
elseif nProfileType == PRF.BOTTOM then
|
||||
local nBottomProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
-- creo copia
|
||||
local nBottomFrameProfileId = EgtCopy( nBottomProfileId, nFrameProfileLayerId)
|
||||
local b3BottomFrameProfile = EgtGetBBox( nBottomFrameProfileId, GDB_BB.STANDARD)
|
||||
-- recupero posizione e BBox del geo
|
||||
local nBottomGeoId = EgtGetFirstNameInGroup( nGeoLayerId, BOTTOM)
|
||||
local b3BottomGeo = EgtGetBBox(nBottomGeoId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ() - Point3d( b3BottomFrameProfile:getMax():getX(), b3BottomFrameProfile:getMin():getY(), b3BottomGeo:getMax():getZ()))
|
||||
EgtRotate( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ(), Y_AX(), -90)
|
||||
-- recupero profilo outline e lo estrudo
|
||||
local nBottomFrameOutlineId = EgtGetFirstNameInGroup( nBottomFrameProfileId, SECTION)
|
||||
local nBottomExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nBottomFrameOutlineId, X_AX() * b3BottomGeo:getDimX())
|
||||
EgtInvertSurf( nBottomExtrusionId)
|
||||
-- copio e sposto profilo out left su start bottom per tagliarlo
|
||||
local nLeftProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
local nBottomOutLeftProfileId = EgtCopy( nLeftProfileId, nFrameProfileLayerId)
|
||||
EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), 90)
|
||||
local b3BottomOutLeftProfileId = EgtGetBBoxGlob(nBottomOutLeftProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomOutLeftProfileId, b3BottomGeo:getMin() - b3BottomOutLeftProfileId:getMin())
|
||||
local nOutLeftProfileId = EgtGetFirstNameInGroup( nBottomOutLeftProfileId, OUTOFST)
|
||||
local nBottomOutLeftProfileExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutLeftProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nBottomExtrusionId, nBottomOutLeftProfileExtrusionId, true, false)
|
||||
EgtSurfTmCut( nBottomOutLeftProfileExtrusionId, nExtrCopyId, true, false)
|
||||
--EgtErase( nExtrCopyId)
|
||||
-- copio e sposto profilo out left su end bottom per tagliarlo
|
||||
local nRightProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
local nBottomOutRightProfileId = EgtCopy( nRightProfileId, nFrameProfileLayerId)
|
||||
EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), -90)
|
||||
local b3BottomOutRightProfileId = EgtGetBBoxGlob(nBottomOutRightProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMax():getX(),b3BottomGeo:getMin():getY(),b3BottomGeo:getMin():getZ()) - Point3d( b3BottomOutRightProfileId:getMax():getX(), b3BottomOutRightProfileId:getMin():getY(),b3BottomOutRightProfileId:getMin():getZ()))
|
||||
local nOutRightProfileId = EgtGetFirstNameInGroup( nBottomOutRightProfileId, OUTOFST)
|
||||
local nBottomOutRightProfileExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutRightProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
--EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
--local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nBottomExtrusionId, nBottomOutRightProfileExtrusionId, true, false)
|
||||
EgtSurfTmCut( nBottomOutRightProfileExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
elseif nProfileType == PRF.LEFT then
|
||||
elseif nProfileType == PRF.RIGHT then
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, PROFILE)
|
||||
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
|
||||
local nGroupId = EgtGetFirstInGroup( GDB_ID.ROOT)
|
||||
while nGroupId do
|
||||
if nGroupId ~= nProfileId then
|
||||
local nCurrId = nGroupId
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
EgtRelocateGlob( nCurrId, nProfileId)
|
||||
EgtSetStatus( nCurrId, GDB_ST.OFF)
|
||||
else
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
end
|
||||
end
|
||||
|
||||
-- creo struttura layer del frame
|
||||
local nFrameLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameLayerId, FRAME)
|
||||
local nOutlineLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nOutlineLayerId, OUTLINE)
|
||||
local nGeoLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nGeoLayerId, GEO)
|
||||
local nSolidLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nSolidLayerId, SOLID)
|
||||
local nFrameProfileLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nFrameProfileLayerId, PROFILE)
|
||||
|
||||
-- disegno outline
|
||||
local nFrameBottomId = EgtLine( nOutlineLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0) )
|
||||
EgtSetName( nFrameBottomId, BOTTOM)
|
||||
local nFrameRightId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0) )
|
||||
EgtSetName( nFrameRightId, RIGHT)
|
||||
local nFrameTopId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0) )
|
||||
EgtSetName( nFrameTopId, TOP)
|
||||
local nFrameLeftId = EgtLine( nOutlineLayerId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0) )
|
||||
EgtSetName( nFrameLeftId, LEFT)
|
||||
|
||||
-- scelgo tipo di giunzioni
|
||||
-- per il momento faccio controprofili verticali
|
||||
|
||||
|
||||
-- scelgo il tipo
|
||||
-- per il momento faccio controprofili per anta
|
||||
|
||||
-- disegno ingombri frame
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileId, FRAME)
|
||||
|
||||
local nCurrOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nCurrOutlineId do
|
||||
CalcFrameFootPrint( nProfileFrameLayerId, nCurrOutlineId, nGeoLayerId)
|
||||
nCurrOutlineId = EgtGetNext( nCurrOutlineId)
|
||||
end
|
||||
|
||||
-- posiziono profili
|
||||
local nGeoId = EgtGetFirstInGroup( nGeoLayerId)
|
||||
CalcFrameSolid(nProfileFrameLayerId, nGeoId, nFrameProfileLayerId, nGeoLayerId, nSolidLayerId)
|
||||
|
||||
|
||||
|
||||
---- bottom
|
||||
--local nBottomProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
---- creo copia
|
||||
--local nBottomFrameProfileId = EgtCopy( nBottomProfileId, nFrameProfileLayerId)
|
||||
--local b3BottomFrameProfile = EgtGetBBox( nBottomFrameProfileId, GDB_BB.STANDARD)
|
||||
---- recupero posizione e BBox del geo
|
||||
--local nBottomGeoId = EgtGetFirstNameInGroup( nGeoId, BOTTOM)
|
||||
--local b3BottomGeo = EgtGetBBox(nBottomGeoId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ() - Point3d( b3BottomFrameProfile:getMax():getX(), b3BottomFrameProfile:getMin():getY(), b3BottomGeo:getMax():getZ()))
|
||||
--EgtRotate( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ(), Y_AX(), -90)
|
||||
---- recupero profilo outline e lo estrudo
|
||||
--local nBottomFrameOutlineId = EgtGetFirstNameInGroup( nBottomFrameProfileId, SECTION)
|
||||
--local nBottomExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nBottomFrameOutlineId, X_AX() * b3BottomGeo:getDimX())
|
||||
--EgtInvertSurf( nBottomExtrusionId)
|
||||
---- copio e sposto profilo out left su start bottom per tagliarlo
|
||||
--local nLeftProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
--local nBottomOutLeftProfileId = EgtCopy( nLeftProfileId, nFrameProfileLayerId)
|
||||
--EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
--EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), 90)
|
||||
--local b3BottomOutLeftProfileId = EgtGetBBoxGlob(nBottomOutLeftProfileId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomOutLeftProfileId, b3BottomGeo:getMin() - b3BottomOutLeftProfileId:getMin())
|
||||
--local nOutLeftProfileId = EgtGetFirstNameInGroup( nBottomOutLeftProfileId, OUTOFST)
|
||||
--local nBottomOutLeftProfileExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutLeftProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
--EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
--local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
--EgtSurfTmCut( nBottomExtrusionId, nBottomOutLeftProfileExtrusionId, true, false)
|
||||
--EgtSurfTmCut( nBottomOutLeftProfileExtrusionId, nExtrCopyId, true, false)
|
||||
----EgtErase( nExtrCopyId)
|
||||
---- copio e sposto profilo out left su end bottom per tagliarlo
|
||||
--local nRightProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
--local nBottomOutRightProfileId = EgtCopy( nRightProfileId, nFrameProfileLayerId)
|
||||
--EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
--EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), -90)
|
||||
--local b3BottomOutRightProfileId = EgtGetBBoxGlob(nBottomOutRightProfileId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMax():getX(),b3BottomGeo:getMin():getY(),b3BottomGeo:getMin():getZ()) - Point3d( b3BottomOutRightProfileId:getMax():getX(), b3BottomOutRightProfileId:getMin():getY(),b3BottomOutRightProfileId:getMin():getZ()))
|
||||
--local nOutRightProfileId = EgtGetFirstNameInGroup( nBottomOutRightProfileId, OUTOFST)
|
||||
--local nBottomOutRightProfileExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutRightProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
----EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
----local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
--EgtSurfTmCut( nBottomExtrusionId, nBottomOutRightProfileExtrusionId, true, false)
|
||||
--EgtSurfTmCut( nBottomOutRightProfileExtrusionId, nExtrCopyId, true, false)
|
||||
--EgtErase( nExtrCopyId)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,266 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
|
||||
---- Imposto direttorio libreria specializzata per Nesting
|
||||
--local sBaseDir = EgtGetSourceDir()
|
||||
--EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
--EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
|
||||
-- local Config = require( 'Config')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
-- Tipi di giunzioni (joint)
|
||||
JNT = {
|
||||
ANGLED = 1,
|
||||
CP_H = 2,
|
||||
CP_V = 3,
|
||||
CP_M = 4
|
||||
}
|
||||
|
||||
-- Tipi di profilo
|
||||
PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
VERTICAL = 5,
|
||||
HORIZONTAL = 6
|
||||
}
|
||||
|
||||
local CUT_SURF_EPS_SMALL = 0.05
|
||||
|
||||
local PROFILE = 'Profile'
|
||||
local FRAME = 'Frame'
|
||||
local OUTLINE = 'Outline'
|
||||
local GEO = 'Geo'
|
||||
local SOLID = 'Solid'
|
||||
local BOTTOM = 'Bottom'
|
||||
local RIGHT = 'Right'
|
||||
local TOP = 'Top'
|
||||
local LEFT = 'Left'
|
||||
|
||||
local SASH_TOP = 'Sash_Top'
|
||||
local SASH_BOTTOM = 'Sash_Bottom'
|
||||
local FIXED_TOP = 'Fixed_Top'
|
||||
local FIXED_BOTTOM = 'Fixed_Bottom'
|
||||
|
||||
local REF = 'Ref'
|
||||
local SECTION = 'Section'
|
||||
local ALU = 'Alu'
|
||||
local CTRIN = 'CtrIn'
|
||||
local OUT = 'Out'
|
||||
local OUTOFST = 'OutOfst'
|
||||
|
||||
local HoleHeight = 1200
|
||||
local HoleWidth = 1200
|
||||
|
||||
local WindowWidth = 1200
|
||||
local WindowHeight = 1200
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
local function GetRefWithBBoxFromProfile( nProfileFrameId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
local function GetDeltaProfile( nProfileFrameId, sProfileType)
|
||||
local nProfileId, b3Ref = GetRefWithBBoxFromProfile( nProfileFrameId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
local function CalcFrameFootPrint( nProfileFrameId, nId, nGeoId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nId)
|
||||
local nProfileType = PRF.NULL
|
||||
if sName == TOP then
|
||||
nProfileType = PRF.TOP
|
||||
elseif sName == BOTTOM then
|
||||
nProfileType = PRF.BOTTOM
|
||||
elseif sName == LEFT then
|
||||
nProfileType = PRF.LEFT
|
||||
elseif sName == RIGHT then
|
||||
nProfileType = PRF.RIGHT
|
||||
end
|
||||
local p3FrameStart = EgtSP( nId)
|
||||
local p3FrameEnd = EgtEP( nId)
|
||||
local nNewGeoId
|
||||
if nProfileType == PRF.TOP then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local _, b3TopRef = GetRefWithBBoxFromProfile( nProfileFrameId, SASH_TOP)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd - Y_AX() * b3TopRef:getDimY(), p3FrameStart)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, TOP)
|
||||
elseif nProfileType == PRF.BOTTOM then
|
||||
local _, b3BottomRef = GetRefWithBBoxFromProfile( nProfileFrameId, SASH_BOTTOM)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart, p3FrameEnd + Y_AX() * b3BottomRef:getDimY())
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3BottomRef:getDimX())
|
||||
EgtSetName( nNewGeoId, BOTTOM)
|
||||
elseif nProfileType == PRF.LEFT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd + Y_AX() * dBottomCPDelta , p3FrameStart + X_AX() * b3TopRef:getDimY() - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, LEFT)
|
||||
elseif nProfileType == PRF.RIGHT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart - X_AX() * b3TopRef:getDimY() + Y_AX() * dBottomCPDelta , p3FrameEnd - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, RIGHT)
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, PROFILE)
|
||||
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
|
||||
local nGroupId = EgtGetFirstInGroup( GDB_ID.ROOT)
|
||||
while nGroupId do
|
||||
if nGroupId ~= nProfileId then
|
||||
local nCurrId = nGroupId
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
EgtRelocateGlob( nCurrId, nProfileId)
|
||||
EgtSetStatus( nCurrId, GDB_ST.OFF)
|
||||
else
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
end
|
||||
end
|
||||
|
||||
-- creo struttura layer del frame
|
||||
local nFrameLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameLayerId, FRAME)
|
||||
local nOutlineId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nOutlineId, OUTLINE)
|
||||
local nGeoId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nGeoId, GEO)
|
||||
local nSolidId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nSolidId, SOLID)
|
||||
local nFrameProfileId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nFrameProfileId, PROFILE)
|
||||
|
||||
-- disegno outline
|
||||
local nFrameBottomId = EgtLine( nOutlineId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0) )
|
||||
EgtSetName( nFrameBottomId, BOTTOM)
|
||||
local nFrameRightId = EgtLine( nOutlineId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0) )
|
||||
EgtSetName( nFrameRightId, RIGHT)
|
||||
local nFrameTopId = EgtLine( nOutlineId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0) )
|
||||
EgtSetName( nFrameTopId, TOP)
|
||||
local nFrameLeftId = EgtLine( nOutlineId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0) )
|
||||
EgtSetName( nFrameLeftId, LEFT)
|
||||
|
||||
-- scelgo tipo di giunzioni
|
||||
-- per il momento faccio controprofili verticali
|
||||
|
||||
|
||||
-- scelgo il tipo
|
||||
-- per il momento faccio controprofili per anta
|
||||
|
||||
-- disegno ingombri frame
|
||||
local nProfileFrameId = EgtGetFirstNameInGroup( nProfileId, FRAME)
|
||||
|
||||
local nCurrOutlineId = EgtGetFirstInGroup( nOutlineId)
|
||||
while nCurrOutlineId do
|
||||
CalcFrameFootPrint( nProfileFrameId, nCurrOutlineId, nGeoId)
|
||||
nCurrOutlineId = EgtGetNext( nCurrOutlineId)
|
||||
end
|
||||
|
||||
-- posiziono profili
|
||||
-- bottom
|
||||
local nBottomProfileId = EgtGetFirstNameInGroup( nProfileFrameId, SASH_BOTTOM)
|
||||
-- creo copia
|
||||
local nBottomFrameProfileId = EgtCopy( nBottomProfileId, nFrameProfileId)
|
||||
local b3BottomFrameProfile = EgtGetBBox( nBottomFrameProfileId, GDB_BB.STANDARD)
|
||||
-- recupero posizione e BBox del geo
|
||||
local nBottomGeoId = EgtGetFirstNameInGroup( nGeoId, BOTTOM)
|
||||
local b3BottomGeo = EgtGetBBox(nBottomGeoId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ() - Point3d( b3BottomFrameProfile:getMax():getX(), b3BottomFrameProfile:getMin():getY(), b3BottomGeo:getMax():getZ()))
|
||||
EgtRotate( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ(), Y_AX(), -90)
|
||||
-- recupero profilo outline e lo estrudo
|
||||
local nBottomFrameOutlineId = EgtGetFirstNameInGroup( nBottomFrameProfileId, SECTION)
|
||||
local nBottomExtrusionId = EgtSurfTmByExtrusion( nSolidId, nBottomFrameOutlineId, X_AX() * b3BottomGeo:getDimX())
|
||||
EgtInvertSurf( nBottomExtrusionId)
|
||||
-- copio e sposto profilo out left su start bottom per tagliarlo
|
||||
local nLeftProfileId = EgtGetFirstNameInGroup( nProfileFrameId, SASH_TOP)
|
||||
local nBottomOutLeftProfileId = EgtCopy( nLeftProfileId, nFrameProfileId)
|
||||
EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), 90)
|
||||
local b3BottomOutLeftProfileId = EgtGetBBoxGlob(nBottomOutLeftProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nBottomOutLeftProfileId, b3BottomGeo:getMin() - b3BottomOutLeftProfileId:getMin())
|
||||
local nOutLeftProfileId = EgtGetFirstNameInGroup( nBottomOutLeftProfileId, OUTOFST)
|
||||
local nBottomOutLeftProfileExtrusionId = EgtSurfTmByExtrusion( nSolidId, nOutLeftProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidId)
|
||||
EgtSurfTmCut( nBottomExtrusionId, nBottomOutLeftProfileExtrusionId, true, false)
|
||||
EgtSurfTmCut( nBottomOutLeftProfileExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
|
||||
|
||||
|
||||
|
||||
--local nLeftProfileId = EgtGetFirstNameInGroup( nProfileFrameId, SASH_TOP)
|
||||
--local nOutLeftProfileId = EgtGetFirstNameInGroup( nLeftProfileId, OUTOFST)
|
||||
--local nBottomOutLeftProfileId = EgtCopy( nOutLeftProfileId, nFrameProfileId)
|
||||
--EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
--EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), 90)
|
||||
--local b3BottomOutLeftProfileId = EgtGetBBox(nBottomOutLeftProfileId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomOutLeftProfileId, b3BottomGeo:getMin() - b3BottomOutLeftProfileId:getMin())
|
||||
--local nBottomOutLeftProfileExtrusionId = EgtSurfTmByExtrusion( nSolidId, nBottomOutLeftProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
--EgtSurfTmCut( nBottomOutLeftProfileExtrusionId, nBottomExtrusionId, true, false)
|
||||
--EgtSurfTmCut( nBottomExtrusionId, nBottomOutLeftProfileExtrusionId, false, false)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,337 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
|
||||
---- Imposto direttorio libreria specializzata per Nesting
|
||||
--local sBaseDir = EgtGetSourceDir()
|
||||
--EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
--EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
|
||||
-- local Config = require( 'Config')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
-- Tipi di giunzioni (joint)
|
||||
JNT = {
|
||||
ANGLED = 1,
|
||||
CP_H = 2,
|
||||
CP_V = 3,
|
||||
CP_M = 4
|
||||
}
|
||||
|
||||
-- Tipi di profilo
|
||||
PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
VERTICAL = 5,
|
||||
HORIZONTAL = 6
|
||||
}
|
||||
|
||||
local CUT_SURF_EPS_SMALL = 0.05
|
||||
|
||||
local PROFILE = 'Profile'
|
||||
local FRAME = 'Frame'
|
||||
local OUTLINE = 'Outline'
|
||||
local GEO = 'Geo'
|
||||
local SOLID = 'Solid'
|
||||
local BOTTOM = 'Bottom'
|
||||
local RIGHT = 'Right'
|
||||
local TOP = 'Top'
|
||||
local LEFT = 'Left'
|
||||
|
||||
local SASH_TOP = 'Sash_Top'
|
||||
local SASH_BOTTOM = 'Sash_Bottom'
|
||||
local FIXED_TOP = 'Fixed_Top'
|
||||
local FIXED_BOTTOM = 'Fixed_Bottom'
|
||||
|
||||
local REF = 'Ref'
|
||||
local SECTION = 'Section'
|
||||
local ALU = 'Alu'
|
||||
local CTRIN = 'CtrIn'
|
||||
local OUT = 'Out'
|
||||
local OUTOFST = 'OutOfst'
|
||||
|
||||
local HoleHeight = 1200
|
||||
local HoleWidth = 1200
|
||||
|
||||
local WindowWidth = 1200
|
||||
local WindowHeight = 1200
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
local function GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
local function GetDeltaProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId, b3Ref = GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
local function CalcFrameFootPrint( nProfileFrameLayerId, nId, nGeoId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nId)
|
||||
local nProfileType = PRF.NULL
|
||||
if sName == TOP then
|
||||
nProfileType = PRF.TOP
|
||||
elseif sName == BOTTOM then
|
||||
nProfileType = PRF.BOTTOM
|
||||
elseif sName == LEFT then
|
||||
nProfileType = PRF.LEFT
|
||||
elseif sName == RIGHT then
|
||||
nProfileType = PRF.RIGHT
|
||||
end
|
||||
local p3FrameStart = EgtSP( nId)
|
||||
local p3FrameEnd = EgtEP( nId)
|
||||
local nNewGeoId
|
||||
if nProfileType == PRF.TOP then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local _, b3TopRef = GetRefWithBBoxFromProfile( nProfileFrameLayerId, SASH_TOP)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd - Y_AX() * b3TopRef:getDimY(), p3FrameStart)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, TOP)
|
||||
elseif nProfileType == PRF.BOTTOM then
|
||||
local _, b3BottomRef = GetRefWithBBoxFromProfile( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart, p3FrameEnd + Y_AX() * b3BottomRef:getDimY())
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3BottomRef:getDimX())
|
||||
EgtSetName( nNewGeoId, BOTTOM)
|
||||
elseif nProfileType == PRF.LEFT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameLayerId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameEnd + Y_AX() * dBottomCPDelta , p3FrameStart + X_AX() * b3TopRef:getDimY() - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, LEFT)
|
||||
elseif nProfileType == PRF.RIGHT then
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = GetDeltaProfile( nProfileFrameLayerId, SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = GetDeltaProfile( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtRectangle2P( nGeoId, p3FrameStart - X_AX() * b3TopRef:getDimY() + Y_AX() * dBottomCPDelta , p3FrameEnd - Y_AX() * dTopCPDelta)
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, RIGHT)
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
local function CalcFrameSolid( nProfileFrameLayerId, nGeoId, nFrameProfileLayerId, nGeoLayerId, nSolidLayerId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nGeoId)
|
||||
local nProfileType = PRF.NULL
|
||||
if sName == TOP then
|
||||
nProfileType = PRF.TOP
|
||||
elseif sName == BOTTOM then
|
||||
nProfileType = PRF.BOTTOM
|
||||
elseif sName == LEFT then
|
||||
nProfileType = PRF.LEFT
|
||||
elseif sName == RIGHT then
|
||||
nProfileType = PRF.RIGHT
|
||||
end
|
||||
if nProfileType == PRF.TOP then
|
||||
elseif nProfileType == PRF.BOTTOM then
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
-- creo copia
|
||||
local nFrameProfileId = EgtCopy( nProfileId, nFrameProfileLayerId)
|
||||
local b3FrameProfile = EgtGetBBox( nFrameProfileId, GDB_BB.STANDARD)
|
||||
-- recupero posizione e BBox del geo
|
||||
local b3Geo = EgtGetBBox(nGeoId, GDB_BB.STANDARD)
|
||||
EgtMove( nFrameProfileId, b3Geo:getMin() + Z_AX() * b3Geo:getDimZ() - Point3d( b3FrameProfile:getMax():getX(), b3FrameProfile:getMin():getY(), b3Geo:getMax():getZ()))
|
||||
EgtRotate( nFrameProfileId, b3Geo:getMin() + Z_AX() * b3Geo:getDimZ(), Y_AX(), -90)
|
||||
-- recupero profilo outline e lo estrudo
|
||||
local nFrameOutlineId = EgtGetFirstNameInGroup( nFrameProfileId, SECTION)
|
||||
local nExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nFrameOutlineId, X_AX() * b3Geo:getDimX())
|
||||
EgtInvertSurf( nExtrusionId)
|
||||
-- copio e sposto profilo out left su start bottom per tagliarlo
|
||||
local nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
local nStartProfileId = EgtCopy( nOrigStartProfileId, nFrameProfileLayerId)
|
||||
EgtRotate( nStartProfileId, Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nStartProfileId, Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), Z_AX(), 90)
|
||||
local b3StartProfileId = EgtGetBBoxGlob(nStartProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nStartProfileId, b3Geo:getMin() - b3StartProfileId:getMin())
|
||||
local nOutStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, OUTOFST)
|
||||
local nStartExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutStartProfileId, Y_AX() * b3FrameProfile:getDimY())
|
||||
EgtInvertSurf( nStartExtrusionId)
|
||||
local nExtrCopyId = EgtCopy( nExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nExtrusionId, nStartExtrusionId, true, false)
|
||||
EgtSurfTmCut( nStartExtrusionId, nExtrCopyId, true, false)
|
||||
--EgtErase( nExtrCopyId)
|
||||
-- copio e sposto profilo out left su end bottom per tagliarlo
|
||||
local nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
local nEndProfileId = EgtCopy( nOrigEndProfileId, nFrameProfileLayerId)
|
||||
EgtRotate( nEndProfileId, Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), Y_AX(), -90)
|
||||
EgtRotate( nEndProfileId, Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), Z_AX(), -90)
|
||||
local b3EndProfileId = EgtGetBBoxGlob(nEndProfileId, GDB_BB.STANDARD)
|
||||
EgtMove( nEndProfileId, Point3d( b3Geo:getMax():getX(),b3Geo:getMin():getY(),b3Geo:getMin():getZ()) - Point3d( b3EndProfileId:getMax():getX(), b3EndProfileId:getMin():getY(),b3EndProfileId:getMin():getZ()))
|
||||
local nOutEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, OUTOFST)
|
||||
local nEndExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutEndProfileId, Y_AX() * b3FrameProfile:getDimY())
|
||||
--EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
--local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nExtrusionId, nEndExtrusionId, true, false)
|
||||
EgtSurfTmCut( nEndExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
elseif nProfileType == PRF.LEFT then
|
||||
elseif nProfileType == PRF.RIGHT then
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, PROFILE)
|
||||
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
|
||||
local nGroupId = EgtGetFirstInGroup( GDB_ID.ROOT)
|
||||
while nGroupId do
|
||||
if nGroupId ~= nProfileId then
|
||||
local nCurrId = nGroupId
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
EgtRelocateGlob( nCurrId, nProfileId)
|
||||
EgtSetStatus( nCurrId, GDB_ST.OFF)
|
||||
else
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
end
|
||||
end
|
||||
|
||||
-- creo struttura layer del frame
|
||||
local nFrameLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameLayerId, FRAME)
|
||||
local nOutlineLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nOutlineLayerId, OUTLINE)
|
||||
local nGeoLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nGeoLayerId, GEO)
|
||||
local nSolidLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nSolidLayerId, SOLID)
|
||||
local nFrameProfileLayerId = EgtGroup( nFrameLayerId)
|
||||
EgtSetName( nFrameProfileLayerId, PROFILE)
|
||||
|
||||
-- disegno outline
|
||||
local nFrameBottomId = EgtLine( nOutlineLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0) )
|
||||
EgtSetName( nFrameBottomId, BOTTOM)
|
||||
local nFrameRightId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0) )
|
||||
EgtSetName( nFrameRightId, RIGHT)
|
||||
local nFrameTopId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0) )
|
||||
EgtSetName( nFrameTopId, TOP)
|
||||
local nFrameLeftId = EgtLine( nOutlineLayerId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0) )
|
||||
EgtSetName( nFrameLeftId, LEFT)
|
||||
|
||||
-- scelgo tipo di giunzioni
|
||||
-- per il momento faccio controprofili verticali
|
||||
|
||||
|
||||
-- scelgo il tipo
|
||||
-- per il momento faccio controprofili per anta
|
||||
|
||||
-- disegno ingombri frame
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileId, FRAME)
|
||||
|
||||
local nCurrOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nCurrOutlineId do
|
||||
CalcFrameFootPrint( nProfileFrameLayerId, nCurrOutlineId, nGeoLayerId)
|
||||
nCurrOutlineId = EgtGetNext( nCurrOutlineId)
|
||||
end
|
||||
|
||||
-- posiziono profili
|
||||
local nGeoId = EgtGetFirstInGroup( nGeoLayerId)
|
||||
CalcFrameSolid(nProfileFrameLayerId, nGeoId, nFrameProfileLayerId, nGeoLayerId, nSolidLayerId)
|
||||
|
||||
|
||||
|
||||
---- bottom
|
||||
--local nBottomProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_BOTTOM)
|
||||
---- creo copia
|
||||
--local nBottomFrameProfileId = EgtCopy( nBottomProfileId, nFrameProfileLayerId)
|
||||
--local b3BottomFrameProfile = EgtGetBBox( nBottomFrameProfileId, GDB_BB.STANDARD)
|
||||
---- recupero posizione e BBox del geo
|
||||
--local nBottomGeoId = EgtGetFirstNameInGroup( nGeoId, BOTTOM)
|
||||
--local b3BottomGeo = EgtGetBBox(nBottomGeoId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ() - Point3d( b3BottomFrameProfile:getMax():getX(), b3BottomFrameProfile:getMin():getY(), b3BottomGeo:getMax():getZ()))
|
||||
--EgtRotate( nBottomFrameProfileId, b3BottomGeo:getMin() + Z_AX() * b3BottomGeo:getDimZ(), Y_AX(), -90)
|
||||
---- recupero profilo outline e lo estrudo
|
||||
--local nBottomFrameOutlineId = EgtGetFirstNameInGroup( nBottomFrameProfileId, SECTION)
|
||||
--local nBottomExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nBottomFrameOutlineId, X_AX() * b3BottomGeo:getDimX())
|
||||
--EgtInvertSurf( nBottomExtrusionId)
|
||||
---- copio e sposto profilo out left su start bottom per tagliarlo
|
||||
--local nLeftProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
--local nBottomOutLeftProfileId = EgtCopy( nLeftProfileId, nFrameProfileLayerId)
|
||||
--EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
--EgtRotate( nBottomOutLeftProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), 90)
|
||||
--local b3BottomOutLeftProfileId = EgtGetBBoxGlob(nBottomOutLeftProfileId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomOutLeftProfileId, b3BottomGeo:getMin() - b3BottomOutLeftProfileId:getMin())
|
||||
--local nOutLeftProfileId = EgtGetFirstNameInGroup( nBottomOutLeftProfileId, OUTOFST)
|
||||
--local nBottomOutLeftProfileExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutLeftProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
--EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
--local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
--EgtSurfTmCut( nBottomExtrusionId, nBottomOutLeftProfileExtrusionId, true, false)
|
||||
--EgtSurfTmCut( nBottomOutLeftProfileExtrusionId, nExtrCopyId, true, false)
|
||||
----EgtErase( nExtrCopyId)
|
||||
---- copio e sposto profilo out left su end bottom per tagliarlo
|
||||
--local nRightProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, SASH_TOP)
|
||||
--local nBottomOutRightProfileId = EgtCopy( nRightProfileId, nFrameProfileLayerId)
|
||||
--EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Y_AX(), -90)
|
||||
--EgtRotate( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMin():getX(), b3BottomGeo:getMin():getY(), b3BottomGeo:getMax():getZ()), Z_AX(), -90)
|
||||
--local b3BottomOutRightProfileId = EgtGetBBoxGlob(nBottomOutRightProfileId, GDB_BB.STANDARD)
|
||||
--EgtMove( nBottomOutRightProfileId, Point3d( b3BottomGeo:getMax():getX(),b3BottomGeo:getMin():getY(),b3BottomGeo:getMin():getZ()) - Point3d( b3BottomOutRightProfileId:getMax():getX(), b3BottomOutRightProfileId:getMin():getY(),b3BottomOutRightProfileId:getMin():getZ()))
|
||||
--local nOutRightProfileId = EgtGetFirstNameInGroup( nBottomOutRightProfileId, OUTOFST)
|
||||
--local nBottomOutRightProfileExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutRightProfileId, Y_AX() * b3BottomFrameProfile:getDimY())
|
||||
----EgtInvertSurf( nBottomOutLeftProfileExtrusionId)
|
||||
----local nExtrCopyId = EgtCopy( nBottomExtrusionId, nSolidLayerId)
|
||||
--EgtSurfTmCut( nBottomExtrusionId, nBottomOutRightProfileExtrusionId, true, false)
|
||||
--EgtSurfTmCut( nBottomOutRightProfileExtrusionId, nExtrCopyId, true, false)
|
||||
--EgtErase( nExtrCopyId)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,227 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
--EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinLib = nil
|
||||
local WinLib = require( 'WinLib')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
local HoleWidth = 1835
|
||||
local HoleHeight = 1516
|
||||
|
||||
local WindowWidth = 1800
|
||||
local WindowHeight = 1500
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- funzioni
|
||||
|
||||
local function CreatePartFromArea( nAreaId)
|
||||
-- creo pezzi outline
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_OUTLINE)
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
WinLib.CreatePartFromOutline( nAreaId, nOutlineId)
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
-- verifico se c'e' uno split
|
||||
local nSplitLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_SPLIT)
|
||||
if nSplitLayerId then
|
||||
local nSplitId = EgtGetFirstInGroup( nSplitLayerId)
|
||||
if nSplitId then
|
||||
-- creo pezzo split
|
||||
WinLib.CreatePartFromOutline( nAreaId, nSplitId)
|
||||
end
|
||||
end
|
||||
-- verifico se ci sono aree
|
||||
local nArea1Id = EgtGetFirstNameInGroup( nAreaId, WIN_AREA1)
|
||||
if nArea1Id then
|
||||
-- lancio costruzione pezzi di quell'area
|
||||
CreatePartFromArea(nArea1Id)
|
||||
end
|
||||
local nArea2Id = EgtGetFirstNameInGroup( nAreaId, WIN_AREA1)
|
||||
if nArea1Id then
|
||||
-- lancio costruzione pezzi di quell'area
|
||||
CreatePartFromArea(nArea1Id)
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, WIN_PROFILE)
|
||||
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
|
||||
local nGroupId = EgtGetFirstInGroup( GDB_ID.ROOT)
|
||||
while nGroupId do
|
||||
if nGroupId ~= nProfileId then
|
||||
local nCurrId = nGroupId
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
EgtRelocateGlob( nCurrId, nProfileId)
|
||||
EgtSetStatus( nCurrId, GDB_ST.OFF)
|
||||
else
|
||||
nGroupId = EgtGetNext( nGroupId)
|
||||
end
|
||||
end
|
||||
|
||||
-- creo buco
|
||||
local nHoleLayerId = WinLib.CreateHole( HoleWidth, HoleHeight)
|
||||
|
||||
-- creo frame come buco
|
||||
WinLib.CreateFrameAsHole( nHoleLayerId, WIN_JNT.FULL_H)
|
||||
|
||||
local nSashId = WinLib.AddSash( nHoleLayerId)
|
||||
|
||||
local nFillId = WinLib.AddFill( nSashId, WIN_FILLTYPES.GLASS)
|
||||
-- -- creo gruppo frame
|
||||
-- local nFrameLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
-- EgtSetName( nFrameLayerId, WIN_FRAME)
|
||||
-- local nOutlineLayerId = EgtGroup( nFrameLayerId)
|
||||
-- EgtSetName( nOutlineLayerId, WIN_OUTLINE)
|
||||
|
||||
|
||||
-- -- disegno outline
|
||||
-- local nFrameBottomId = EgtLine( nOutlineLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0))
|
||||
-- EgtSetName( nFrameBottomId, WIN_BOTTOM)
|
||||
-- local nFrameRightId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0))
|
||||
-- EgtSetName( nFrameRightId, WIN_RIGHT)
|
||||
-- local nFrameTopId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0), Vector3d( -1, 0.5, 0))
|
||||
-- EgtSetName( nFrameTopId, WIN_TOP)
|
||||
-- local nFrameLeftId = EgtLine( nOutlineLayerId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0))
|
||||
-- EgtSetName( nFrameLeftId, WIN_LEFT)
|
||||
|
||||
-- -- cerchio
|
||||
-- local nFrameBottomId = EgtArcC2P( nOutlineLayerId, Point3d( WindowHeight / 2, WindowHeight / 2, 0), Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0))
|
||||
-- EgtSetName( nFrameBottomId, WIN_BOTTOM)
|
||||
-- local nFrameRightId = EgtArcC2P( nOutlineLayerId, Point3d( WindowHeight / 2, WindowHeight / 2, 0), Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0))
|
||||
-- EgtSetName( nFrameRightId, WIN_RIGHT)
|
||||
-- local nFrameTopId = EgtArcC2P( nOutlineLayerId, Point3d( WindowHeight / 2, WindowHeight / 2, 0), Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0))
|
||||
-- EgtSetName( nFrameTopId, WIN_TOP)
|
||||
-- local nFrameLeftId = EgtArcC2P( nOutlineLayerId, Point3d( WindowHeight / 2, WindowHeight / 2, 0), Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0))
|
||||
-- EgtSetName( nFrameLeftId, WIN_LEFT)
|
||||
|
||||
|
||||
|
||||
|
||||
-- -- disegno outline
|
||||
-- local nFrameBottomId = EgtLine( nOutlineLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0))
|
||||
-- EgtSetName( nFrameBottomId, WIN_BOTTOM)
|
||||
-- local nFrameRightId = EgtLine( nOutlineLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth+400, WindowHeight, 0))
|
||||
-- EgtSetName( nFrameRightId, WIN_RIGHT)
|
||||
-- local nFrameTopId = EgtLine( nOutlineLayerId, Point3d( WindowWidth+400, WindowHeight, 0), Point3d( -200, WindowHeight-300, 0))
|
||||
-- --local nFrameTopId = EgtArc2PV( nOutlineLayerId, Point3d( WindowWidth+400, WindowHeight, 0), Point3d( -200, WindowHeight-300, 0), Vector3d( -1, 0.5, 0))
|
||||
|
||||
-- --local nFirstArcId = EgtArc2PDEx(nOutlineLayerId,{-200,1220,0},{0,1700,0},GDB_PT.STD,-1,90,GDB_RT.GRID) -- Id=369
|
||||
-- --local nFrameTopId = EgtCurveCompo(nOutlineLayerId,nFirstArcId,true) -- Id=369
|
||||
-- --local nSecondArcId = EgtArc2PDEx(nOutlineLayerId,{0,1700,0},{1700,1900,0},GDB_PT.STD,-1,44.7603,GDB_RT.GRID) -- Id=370
|
||||
-- --EgtAddCurveCompoCurve(nFrameTopId,nSecondArcId,true,true) -- Ok=1
|
||||
-- --local nThirdArcId = EgtArc2PDEx(nOutlineLayerId,{1700,1900,0},{1930,1520,0},GDB_PT.STD,199,328.6594,GDB_RT.GRID) -- Id=370
|
||||
-- --EgtAddCurveCompoCurve(nFrameTopId,nThirdArcId,true,true) -- Ok=1
|
||||
-- --EgtInvertCurve( nFrameTopId)
|
||||
|
||||
-- --local nFrameTop1Id = EgtLine( nOutlineLayerId, Point3d( WindowWidth+400, WindowHeight, 0), Point3d( WindowWidth / 2, WindowHeight+100, 0))
|
||||
-- --local nFrameTop2Id = EgtLine( nOutlineLayerId, Point3d( WindowWidth / 2, WindowHeight+100, 0), Point3d( -200, WindowHeight-300, 0))
|
||||
-- --local nFrameTopId = EgtCurveCompo(nOutlineLayerId,nFrameTop1Id,true) -- Id=369
|
||||
-- --EgtAddCurveCompoCurve(nFrameTopId,nFrameTop2Id,true,true) -- Ok=1
|
||||
|
||||
-- EgtSetName( nFrameTopId, WIN_TOP)
|
||||
-- local nFrameLeftId = EgtLine( nOutlineLayerId, Point3d( -200, WindowHeight-300, 0), Point3d( 0, 0, 0))
|
||||
-- EgtSetName( nFrameLeftId, WIN_LEFT)
|
||||
|
||||
|
||||
-- -- scelgo tipo di giunzioni
|
||||
-- local JointType = WIN_JNT.FULL_H
|
||||
-- EgtSetInfo( nOutlineLayerId, WIN_JOINT_BL, JointType)
|
||||
-- EgtSetInfo( nOutlineLayerId, WIN_JOINT_BR, JointType)
|
||||
-- EgtSetInfo( nOutlineLayerId, WIN_JOINT_TL, JointType)
|
||||
-- EgtSetInfo( nOutlineLayerId, WIN_JOINT_TR, JointType)
|
||||
|
||||
|
||||
-- -- funzione che assegna i profili serramento ai vari outline
|
||||
-- -- per il momento li assegno a mano
|
||||
-- EgtSetInfo( nFrameBottomId, WIN_PROFILETYPE, WIN_SASH_BOTTOM)
|
||||
-- EgtSetInfo( nFrameRightId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
-- EgtSetInfo( nFrameTopId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
-- EgtSetInfo( nFrameLeftId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
|
||||
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- WinLib.AddSplit( nHoleLayerId, WIN_SPLITTYPE.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
|
||||
-- WinLib.AddSplit( nFrameLayerId, WIN_SPLITTYPE.HORIZONTAL, WIN_MEASURE.PROPORTIONAL, 2, 3)
|
||||
--WinLib.AddSplits( nFrameLayerId, WIN_SPLITTYPE.VERTICAL, WIN_MEASURE.ABSOLUT, { WindowWidth / 5, WindowWidth / 3 * 2})
|
||||
--WinLib.AddSplits( nFrameLayerId, WIN_SPLITTYPE.HORIZONTAL, WIN_MEASURE.PROPORTIONAL, { 1.5, 3}, 4.5)
|
||||
-- local nSplitId = EgtLine( nOutlineLayerId, Point3d( 0, WindowHeight / 2, 0), Point3d( WindowWidth, WindowHeight / 4, 0))
|
||||
|
||||
-- local nArc1Id = EgtArc2PDEx( nOutlineLayerId, { 600, 1500, 0}, { 900, 800, 0}, GDB_PT.STD, -1, 270, GDB_RT.GRID) -- Id=301
|
||||
-- local nSplitId = EgtCurveCompo( nOutlineLayerId, nArc1Id, true) -- Id=301
|
||||
-- local nArc2Id = EgtArc2PDEx( nOutlineLayerId, { 900, 800, 0}, { 900, 0, 0}, GDB_PT.STD, -1, 316.3972, GDB_RT.GRID) -- Id=302
|
||||
-- EgtAddCurveCompoCurve( nSplitId, nArc2Id, true, true) -- Ok=1
|
||||
-- EgtInvertCurve( nSplitId)
|
||||
|
||||
-- WinLib.AddGenSplit( nFrameLayerId, nSplitId)
|
||||
|
||||
-- local nArea1Id = EgtGetFirstNameInGroup( nHoleLayerId, WIN_AREA1)
|
||||
-- WinLib.AddSplit( nArea1Id, WIN_SPLITTYPE.HORIZONTAL, WIN_MEASURE.PROPORTIONAL, 2, 3)
|
||||
|
||||
|
||||
-- creo pezzi per outline
|
||||
-- local nCurrOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
-- while nCurrOutlineId do
|
||||
-- WinLib.CreatePartFromOutline( nFrameLayerId, nCurrOutlineId)
|
||||
-- nCurrOutlineId = EgtGetNext( nCurrOutlineId)
|
||||
-- end
|
||||
-- local nCurrOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_SPLIT)
|
||||
-- WinLib.CreatePartFromOutline( nFrameLayerId, nCurrOutlineId)
|
||||
-- creo tutti i pezzi
|
||||
CreatePartFromArea( nHoleLayerId)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- assemblo i pezzi
|
||||
--WinLib.AssembleFrame()
|
||||
|
||||
EgtDraw()
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,625 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinLib = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che crea un taglio split
|
||||
function WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nProportion)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
-- recupero contorno
|
||||
local OutlineIds = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
table.insert( OutlineIds, nOutlineId)
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
if SplitType == WIN_SPLIT.VERTICAL then
|
||||
-- creo linea
|
||||
local nCalcPosition = 0
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
nCalcPosition = nPosition
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
nCalcPosition = b3OutlineLayer:getDimX() / nProportion * nPosition
|
||||
end
|
||||
local nTotSplitId = EgtLine( nOutlineLayerId, Point3d( nCalcPosition, 0, 0), Point3d( nCalcPosition, b3OutlineLayer:getDimY(), 0))
|
||||
EgtSetName( nTotSplitId, WIN_VERTICAL)
|
||||
-- la taglio con i contorni
|
||||
local nCompoOutlineId = EgtCurveCompo( nOutlineLayerId, OutlineIds, false)
|
||||
local nFROutlineId = EgtSurfFlatRegion( nOutlineLayerId, nCompoOutlineId)
|
||||
local nSplitId, _ = EgtTrimCurveWithRegion( nTotSplitId, nFROutlineId, true, false)
|
||||
EgtErase( { nCompoOutlineId, nFROutlineId})
|
||||
elseif SplitType == WIN_SPLIT.HORIZONTAL then
|
||||
local nFrameSplitId = EgtLine( nOutlineLayerId, Point3d( 0, nPosition, 0), Point3d( 0, nPosition, 0))
|
||||
EgtSetName( nFrameSplitId, WIN_HORIZONTAL)
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea le aree da un taglio split
|
||||
function WinLib.CreateAreaFromSplit( nOutlineLayerId, nFrameSplitId)
|
||||
|
||||
end
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
function WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, WIN_REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
function WinLib.GetDeltaProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId, b3Ref = WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, WIN_CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
function WinLib.CalcFrameGeo( nPartId, nOutlineId)
|
||||
-- recupero profilo
|
||||
local nProfileLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_FRAME)
|
||||
-- creo layer per ingombro
|
||||
local nGeoLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nGeoLayerId, WIN_GEO)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
end
|
||||
local nOutlineLayerId = EgtGetParent( nOutlineId)
|
||||
local b3OutlineId = EgtGetBBoxGlob( nOutlineId, GDB_BB.STANDARD)
|
||||
local nNewGeoId
|
||||
if nProfileType == WIN_PRF.TOP then
|
||||
-- recupero tipo di giunzioni
|
||||
local StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
local EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = WinLib.GetDeltaProfile( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
-- recupero outline precedente
|
||||
local nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
local nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
-- calcolo vettori direzione
|
||||
local vtNextOutline = EgtSV( nNextOutlineId)
|
||||
local vtPrevOutline = EgtSV( nPrevOutlineId)
|
||||
local vtCurrOutline = EgtSV( nOutlineId)
|
||||
-- calcolo punti con inclinazione
|
||||
local dSenNext = ( vtCurrOutline ^ vtNextOutline):getZ()
|
||||
local dSenPrev = ( vtPrevOutline ^ vtCurrOutline):getZ()
|
||||
local dCosNext = ( vtCurrOutline * vtNextOutline)
|
||||
local dCosPrev = ( vtCurrOutline * vtPrevOutline)
|
||||
local ptBL = ORIG()
|
||||
local ptBR = ptBL + X_AX() * EgtCurveLength( nOutlineId) - X_AX() * dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) - X_AX() * dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_V, dTopCPDelta, 0)
|
||||
local ptTR = ptBR + X_AX() * b3TopRef:getDimY() / dSenNext * dCosNext + Y_AX() * b3TopRef:getDimY()
|
||||
local ptTL = ORIG() - X_AX() * b3TopRef:getDimY() / dSenPrev * dCosPrev + Y_AX() * b3TopRef:getDimY()
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtCurveCompoFromPoints( nGeoLayerId, { ptBL, ptBR, ptTR, ptTL,ptBL})
|
||||
EgtSetInfo( nNewGeoId, WIN_GEOOUTLINEBOTTOM, EgtCurveLength( nOutlineId) - dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) - dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_V, dTopCPDelta, 0))
|
||||
--nNewGeoId = EgtRectangle2P( nGeoLayerId, ORIG(), ORIG() + X_AX() * b3OutlineId:getDimX() - X_AX() * EgtIf(StartJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) - X_AX() * EgtIf(EndJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) + Y_AX() * b3TopRef:getDimY())
|
||||
if StartJointType == WIN_JNT.FULL_V then
|
||||
EgtSetInfo( nNewGeoId, WIN_STARTCPDELTA, dTopCPDelta)
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_V then
|
||||
EgtSetInfo( nNewGeoId, WIN_ENDCPDELTA, dTopCPDelta)
|
||||
end
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.BOTTOM then
|
||||
-- recupero tipo di giunzioni
|
||||
local StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
local EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = WinLib.GetDeltaProfile( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
-- recupero ref del bottom
|
||||
local _, b3BottomRef = WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, WIN_SASH_BOTTOM)
|
||||
-- recupero outline precedente
|
||||
local nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
local nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
-- calcolo vettori direzione
|
||||
local vtNextOutline = EgtSV( nNextOutlineId)
|
||||
local vtPrevOutline = EgtSV( nPrevOutlineId)
|
||||
local vtCurrOutline = EgtSV( nOutlineId)
|
||||
-- calcolo punti con inclinazione
|
||||
local dSenNext = ( vtCurrOutline ^ vtNextOutline):getZ()
|
||||
local dSenPrev = ( vtPrevOutline ^ vtCurrOutline):getZ()
|
||||
local dCosNext = ( vtCurrOutline * vtNextOutline)
|
||||
local dCosPrev = ( vtCurrOutline * vtPrevOutline)
|
||||
local ptBL = ORIG()
|
||||
local ptBR = ptBL + X_AX() * EgtCurveLength( nOutlineId) - X_AX() * dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) - X_AX() * dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_V, dTopCPDelta, 0)
|
||||
local ptTR = ptBR + X_AX() * b3TopRef:getDimY() / dSenNext * dCosNext + Y_AX() * b3BottomRef:getDimY()
|
||||
local ptTL = ORIG() - X_AX() * b3TopRef:getDimY() / dSenPrev * dCosPrev + Y_AX() * b3BottomRef:getDimY()
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtCurveCompoFromPoints( nGeoLayerId, { ptBL, ptBR, ptTR, ptTL,ptBL})
|
||||
EgtSetInfo( nNewGeoId, WIN_GEOOUTLINEBOTTOM, EgtCurveLength( nOutlineId) - dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) - dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_V, dTopCPDelta, 0))
|
||||
--nNewGeoId = EgtRectangle2P( nGeoLayerId, ORIG(), ORIG() + X_AX() * b3OutlineId:getDimX() - X_AX() * EgtIf(StartJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) - X_AX() * EgtIf(EndJointType == WIN_JNT.FULL_V, dTopCPDelta, 0) + Y_AX() * b3BottomRef:getDimY())
|
||||
if StartJointType == WIN_JNT.FULL_V then
|
||||
EgtSetInfo( nNewGeoId, WIN_STARTCPDELTA, dTopCPDelta)
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_V then
|
||||
EgtSetInfo( nNewGeoId, WIN_ENDCPDELTA, dTopCPDelta)
|
||||
end
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3BottomRef:getDimX())
|
||||
EgtSetName( nNewGeoId, WIN_BOTTOM)
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
-- recupero tipo di giunzioni
|
||||
local StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
local EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = WinLib.GetDeltaProfile( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = WinLib.GetDeltaProfile( nProfileFrameLayerId, WIN_SASH_BOTTOM)
|
||||
-- recupero outline precedente
|
||||
local nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
local nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
-- calcolo vettori direzione
|
||||
local vtNextOutline = EgtSV( nNextOutlineId)
|
||||
local vtPrevOutline = EgtSV( nPrevOutlineId)
|
||||
local vtCurrOutline = EgtSV( nOutlineId)
|
||||
-- calcolo punti con inclinazione
|
||||
local dSenNext = ( vtCurrOutline ^ vtNextOutline):getZ()
|
||||
local dSenPrev = ( vtPrevOutline ^ vtCurrOutline):getZ()
|
||||
local dCosNext = ( vtCurrOutline * vtNextOutline)
|
||||
local dCosPrev = ( vtCurrOutline * vtPrevOutline)
|
||||
local ptBL = ORIG()
|
||||
local ptBR = ptBL + X_AX() * EgtCurveLength( nOutlineId) - X_AX() * dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_H, dTopCPDelta, 0) - X_AX() * dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_H, dBottomCPDelta, 0)
|
||||
local ptTR = ptBR + X_AX() * b3TopRef:getDimY() / dSenNext * dCosNext + Y_AX() * b3TopRef:getDimY()
|
||||
local ptTL = ORIG() - X_AX() * b3TopRef:getDimY() / dSenPrev * dCosPrev + Y_AX() * b3TopRef:getDimY()
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtCurveCompoFromPoints( nGeoLayerId, { ptBL, ptBR, ptTR, ptTL,ptBL})
|
||||
EgtSetInfo( nNewGeoId, WIN_GEOOUTLINEBOTTOM, EgtCurveLength( nOutlineId) - dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_H, dTopCPDelta, 0) - dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_H, dBottomCPDelta, 0))
|
||||
--nNewGeoId = EgtRectangle2P( nGeoLayerId, ORIG(), ORIG() + X_AX() * b3OutlineId:getDimY() - X_AX() * EgtIf(StartJointType == WIN_JNT.FULL_H, dTopCPDelta, 0) - X_AX() * EgtIf(EndJointType == WIN_JNT.FULL_H, dBottomCPDelta, 0) + Y_AX() * b3TopRef:getDimY())
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
EgtSetInfo( nNewGeoId, WIN_STARTCPDELTA, dTopCPDelta)
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
EgtSetInfo( nNewGeoId, WIN_ENDCPDELTA, dBottomCPDelta)
|
||||
end
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, WIN_LEFT)
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
-- recupero tipo di giunzioni
|
||||
local StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
local EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
-- recupero ref e controprofilo del top e calcolo delta
|
||||
local dTopCPDelta, b3TopRef = WinLib.GetDeltaProfile( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
-- recupero ref e controprofilo del bottom e calcolo delta
|
||||
local dBottomCPDelta, b3BottomRef = WinLib.GetDeltaProfile( nProfileFrameLayerId, WIN_SASH_BOTTOM)
|
||||
-- recupero outline precedente
|
||||
local nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
local nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
-- calcolo vettori direzione
|
||||
local vtNextOutline = EgtSV( nNextOutlineId)
|
||||
local vtPrevOutline = EgtSV( nPrevOutlineId)
|
||||
local vtCurrOutline = EgtSV( nOutlineId)
|
||||
-- calcolo punti con inclinazione
|
||||
local dSenNext = ( vtCurrOutline ^ vtNextOutline):getZ()
|
||||
local dSenPrev = ( vtPrevOutline ^ vtCurrOutline):getZ()
|
||||
local dCosNext = ( vtCurrOutline * vtNextOutline)
|
||||
local dCosPrev = ( vtCurrOutline * vtPrevOutline)
|
||||
local ptBL = ORIG()
|
||||
local ptBR = ptBL + X_AX() * EgtCurveLength( nOutlineId) - X_AX() * dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_H, dBottomCPDelta, 0) - X_AX() * dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_H, dTopCPDelta, 0)
|
||||
local ptTR = ptBR + X_AX() * b3TopRef:getDimY() / dSenNext * dCosNext + Y_AX() * b3TopRef:getDimY()
|
||||
local ptTL = ORIG() - X_AX() * b3TopRef:getDimY() / dSenPrev * dCosPrev + Y_AX() * b3TopRef:getDimY()
|
||||
-- creo rettangolo ingombro
|
||||
nNewGeoId = EgtCurveCompoFromPoints( nGeoLayerId, { ptBL, ptBR, ptTR, ptTL,ptBL})
|
||||
EgtSetInfo( nNewGeoId, WIN_GEOOUTLINEBOTTOM, EgtCurveLength( nOutlineId) - dSenPrev * EgtIf(StartJointType == WIN_JNT.FULL_H, dBottomCPDelta, 0) - dSenNext * EgtIf(EndJointType == WIN_JNT.FULL_H, dTopCPDelta, 0))
|
||||
--nNewGeoId = EgtRectangle2P( nGeoLayerId, ORIG(), ORIG() + X_AX() * b3OutlineId:getDimY() - X_AX() * EgtIf(StartJointType == WIN_JNT.FULL_H, dBottomCPDelta, 0) - X_AX() * EgtIf(EndJointType == WIN_JNT.FULL_H, dTopCPDelta, 0) + Y_AX() * b3TopRef:getDimY())
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
EgtSetInfo( nNewGeoId, WIN_STARTCPDELTA, dBottomCPDelta)
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
EgtSetInfo( nNewGeoId, WIN_ENDCPDELTA, dTopCPDelta)
|
||||
end
|
||||
EgtModifyCurveExtrusion( nNewGeoId, Z_AX())
|
||||
EgtModifyCurveThickness( nNewGeoId, -b3TopRef:getDimX())
|
||||
EgtSetName( nNewGeoId, WIN_RIGHT)
|
||||
end
|
||||
return nNewGeoId
|
||||
end
|
||||
|
||||
-- funzione che posiziona i profili, li estrude e crea il solido
|
||||
function WinLib.CalcStartEndProfileType(nProfileType)
|
||||
local StartJointType
|
||||
local EndJointType
|
||||
local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
local sStartProfileType
|
||||
local sEndProfileType
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
--sStartProfileType = WIN_OUTOFST
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
--sEndProfileType = WIN_OUTOFST
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
--sStartProfileType = WIN_OUTOFST
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
--sEndProfileType = WIN_OUTOFST
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
--sStartProfileType = WIN_OUTOFST
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
--sEndProfileType = WIN_OUTOFST
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
--sStartProfileType = WIN_OUTOFST
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
--sEndProfileType = WIN_OUTOFST
|
||||
end
|
||||
end
|
||||
return sStartProfileType, sEndProfileType, StartJointType, EndJointType
|
||||
end
|
||||
|
||||
-- funzione che posiziona i profili, li estrude e crea il solido
|
||||
function WinLib.MakeSolidByExtrusion(nGeoId, nMainProfileId, nStartProfileId, nEndProfileId, nProfileType, nSolidLayerId)
|
||||
-- recupero outline
|
||||
local nPartId = EgtGetParent( nSolidLayerId)
|
||||
local nAreaId = EgtGetInfo( nPartId, WIN_AREA)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_OUTLINE)
|
||||
local sOutlineName = ''
|
||||
local sPrevOutlineName = ''
|
||||
local sNextOutlineName = ''
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
sOutlineName = WIN_BOTTOM
|
||||
sPrevOutlineName = WIN_LEFT
|
||||
sNextOutlineName = WIN_RIGHT
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
sOutlineName = WIN_RIGHT
|
||||
sPrevOutlineName = WIN_BOTTOM
|
||||
sNextOutlineName = WIN_TOP
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
sOutlineName = WIN_TOP
|
||||
sPrevOutlineName = WIN_RIGHT
|
||||
sNextOutlineName = WIN_LEFT
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
sOutlineName = WIN_LEFT
|
||||
sPrevOutlineName = WIN_TOP
|
||||
sNextOutlineName = WIN_BOTTOM
|
||||
end
|
||||
local nOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sOutlineName)
|
||||
local nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sPrevOutlineName)
|
||||
local nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sNextOutlineName)
|
||||
-- calcolo vettori direzione degli outline
|
||||
local vtNextOutline = EgtSV( nNextOutlineId)
|
||||
local vtCurrOutline = EgtSV( nOutlineId)
|
||||
local vtPrevOutline = EgtSV( nPrevOutlineId)
|
||||
-- recupero posizione e BBox del geo
|
||||
local b3Geo = EgtGetBBox(nGeoId, GDB_BB.STANDARD)
|
||||
-- recupero BBox del profilo Main
|
||||
local nRefMainProfileId = EgtGetFirstNameInGroup( nMainProfileId, WIN_REF)
|
||||
local b3RefMainProfile = EgtGetBBoxGlob( nRefMainProfileId, GDB_BB.STANDARD)
|
||||
-- recupero frame del profilo
|
||||
local nMainProfileFrameId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTIONFRAME)
|
||||
local frInvertMainProfile = EgtFR( nMainProfileFrameId)
|
||||
frInvertMainProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nMainProfileId), frInvertMainProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nMainProfileId, Frame3d( Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), - X_AX()))
|
||||
-- recupero outline del profilo Main e lo estrudo
|
||||
local nMainOutlineId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTION)
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
EgtInvertCurve( nMainOutlineId)
|
||||
end
|
||||
local nMainExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nMainOutlineId, X_AX() * b3Geo:getDimX())
|
||||
-- posiziono il profilo Start
|
||||
local nRefStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, WIN_REF)
|
||||
local b3RefStartProfile = EgtGetBBoxGlob(nRefStartProfileId, GDB_BB.STANDARD)
|
||||
local dDelta = EgtGetInfo( nGeoId, WIN_STARTCPDELTA, 'd') or 0
|
||||
-- recupero frame del profilo
|
||||
local nStartProfileFrameId = EgtGetFirstNameInGroup( nStartProfileId, WIN_SECTIONFRAME)
|
||||
local frInvertStartProfile = EgtFR( nStartProfileFrameId)
|
||||
frInvertStartProfile:move( - Y_AX() * dDelta)
|
||||
frInvertStartProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nStartProfileId), frInvertStartProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
--do return end
|
||||
EgtChangeGroupFrame( nStartProfileId, Frame3d( ORIG(), - vtPrevOutline))
|
||||
local dSenNext = ( vtCurrOutline ^ vtNextOutline):getZ()
|
||||
local dSenPrev = ( vtPrevOutline ^ vtCurrOutline):getZ()
|
||||
local dCosNext = ( vtCurrOutline * vtNextOutline)
|
||||
local dCosPrev = ( vtCurrOutline * vtPrevOutline)
|
||||
local dDeltaStartAngle = b3RefStartProfile:getDimX() * dCosPrev / dSenPrev
|
||||
EgtMove( nStartProfileId, vtPrevOutline * dDeltaStartAngle)
|
||||
-- in base al tipo di incastro e di pezzo, ricavo i controprofili
|
||||
local sStartProfileType
|
||||
local sEndProfileType
|
||||
-- recupero tipo di giunzioni
|
||||
sStartProfileType, sEndProfileType, StartJointType, EndJointType = WinLib.CalcStartEndProfileType( nProfileType)
|
||||
-- recupero outline del profilo Start e lo estrudo
|
||||
local nOutStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, sStartProfileType)
|
||||
--if (StartJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.RIGHT)) or
|
||||
-- (StartJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.LEFT)) then
|
||||
-- EgtInvertCurve( nOutStartProfileId)
|
||||
--end
|
||||
if StartJointType == WIN_JNT.FULL_H and nProfileType == WIN_PRF.BOTTOM then
|
||||
EgtInvertCurve( nOutStartProfileId)
|
||||
end
|
||||
|
||||
local nStartExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutStartProfileId, - vtPrevOutline * ( b3RefMainProfile:getDimY() / dSenPrev + dDeltaStartAngle))
|
||||
-- taglio estrusi per ottenere solido
|
||||
local nExtrCopyId = EgtCopy( nMainExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nMainExtrusionId, nStartExtrusionId, true, false)
|
||||
EgtSurfTmCut( nStartExtrusionId, nExtrCopyId, true, false)
|
||||
-- posiziono il profilo End
|
||||
--EgtRotate( EgtGetAllInGroup( nEndProfileId), ORIG(), Z_AX(), 90)
|
||||
--EgtRotate( EgtGetAllInGroup( nEndProfileId), ORIG(), Y_AX(), 180)
|
||||
local nRefEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, WIN_REF)
|
||||
local b3RefEndProfile = EgtGetBBoxGlob(nRefEndProfileId, GDB_BB.STANDARD)
|
||||
local dDelta = EgtGetInfo( nGeoId, WIN_ENDCPDELTA, 'd') or 0
|
||||
--vtMove = vtMove - X_AX() * dDelta
|
||||
--EgtMove( nStartProfileId, vtMove)
|
||||
--EgtMove( EgtGetAllInGroup( nEndProfileId), ORIG() - Point3d( b3RefEndProfile:getMax():getX(), b3RefEndProfile:getMax():getY(), b3RefEndProfile:getMax():getZ()) + X_AX() * dDelta, GDB_RT.GLOB)
|
||||
|
||||
-- recupero frame del profilo
|
||||
local nEndProfileFrameId = EgtGetFirstNameInGroup( nEndProfileId, WIN_SECTIONFRAME)
|
||||
local frInvertEndProfile = EgtFR( nEndProfileFrameId)
|
||||
|
||||
frInvertEndProfile:move( - Y_AX() * dDelta)
|
||||
EgtMove(nEndProfileFrameId, - Y_AX() * dDelta)
|
||||
frInvertEndProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nEndProfileId), frInvertEndProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
local b3Outline = EgtGetBBox( nOutlineId, GDB_BB.STANDARD)
|
||||
local dBottomOutline = EgtGetInfo( nGeoId, WIN_GEOOUTLINEBOTTOM, 'd')
|
||||
EgtChangeGroupFrame( nEndProfileId, Frame3d( ORIG() + X_AX() * dBottomOutline , - vtNextOutline))
|
||||
|
||||
--EgtChangeGroupFrame( nEndProfileId, Frame3d( Point3d( b3Outline:getMax():getX(), b3Outline:getMin():getY(), b3Outline:getMax():getZ()), - vtNextOutline))
|
||||
local dDeltaEndAngle = b3RefEndProfile:getDimX() * dCosNext / dSenNext
|
||||
EgtMove( nEndProfileId, - vtNextOutline * dDeltaEndAngle)
|
||||
|
||||
|
||||
--EgtRotate( nEndProfileId, Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), Y_AX(), -90)
|
||||
--local dSecondAngle = EgtIf( nProfileType == WIN_PRF.LEFT, 90, -90)
|
||||
--EgtRotate( nEndProfileId, Point3d( b3Geo:getMin():getX(), b3Geo:getMin():getY(), b3Geo:getMax():getZ()), Z_AX(), dSecondAngle)
|
||||
--local nRefEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, WIN_REF)
|
||||
--local b3RefEndProfile = EgtGetBBoxGlob(nRefEndProfileId, GDB_BB.STANDARD)
|
||||
--local vtMove = Point3d( b3Geo:getMax():getX(),b3Geo:getMin():getY(),b3Geo:getMin():getZ()) - Point3d( b3RefEndProfile:getMax():getX(), b3RefEndProfile:getMin():getY(), b3RefEndProfile:getMin():getZ())
|
||||
---- sposto del delta controprofilo se necessario
|
||||
--local dDelta = EgtGetInfo( nGeoId, WIN_ENDCPDELTA, 'd') or 0
|
||||
--vtMove = vtMove + X_AX() * dDelta
|
||||
--EgtMove( nEndProfileId, vtMove)
|
||||
-- recupero outline del profilo End e lo estrudo
|
||||
local nOutEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, sEndProfileType)
|
||||
if (EndJointType == WIN_JNT.FULL_H and nProfileType == WIN_PRF.RIGHT) or
|
||||
(EndJointType == WIN_JNT.FULL_V and (nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.LEFT)) then
|
||||
EgtInvertCurve( nOutEndProfileId)
|
||||
end
|
||||
local nEndExtrusionId = EgtSurfTmByExtrusion( nSolidLayerId, nOutEndProfileId, vtNextOutline * ( b3RefMainProfile:getDimY() / dSenNext + dDeltaEndAngle))
|
||||
-- taglio estrusi per ottenere solido
|
||||
EgtSurfTmCut( nMainExtrusionId, nEndExtrusionId, true, false)
|
||||
EgtSurfTmCut( nEndExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
end
|
||||
|
||||
-- funzione che crea il solido del pezzo del telaio
|
||||
function WinLib.CalcFrameSolid(nPartId, nGeoId)
|
||||
-- recupero profilo
|
||||
local nProfileId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileId, WIN_FRAME)
|
||||
-- creo layer per solido e per profili di estrusione
|
||||
local nSolidLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nSolidLayerId, WIN_SOLID)
|
||||
local nFrameProfileLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nFrameProfileLayerId, WIN_PROFILE)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nGeoId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
end
|
||||
local nOrigMainProfileId = GDB_ID.NULL
|
||||
local nMainProfileId = GDB_ID.NULL
|
||||
local nOrigStartProfileId = GDB_ID.NULL
|
||||
local nStartProfileId = GDB_ID.NULL
|
||||
local nOrigEndProfileId = GDB_ID.NULL
|
||||
local nEndProfileId = GDB_ID.NULL
|
||||
-- recupero profilo e controprofili per tipo
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
nOrigMainProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_BOTTOM)
|
||||
nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
nOrigMainProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_BOTTOM)
|
||||
nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
nOrigMainProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
nOrigMainProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_TOP)
|
||||
nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, WIN_SASH_BOTTOM)
|
||||
end
|
||||
-- creo copie di profilo e controprofili
|
||||
nMainProfileId = EgtCopy( nOrigMainProfileId, nFrameProfileLayerId)
|
||||
nStartProfileId = EgtCopy( nOrigStartProfileId, nFrameProfileLayerId)
|
||||
nEndProfileId = EgtCopy( nOrigEndProfileId, nFrameProfileLayerId)
|
||||
-- creo solido dai profili
|
||||
WinLib.MakeSolidByExtrusion(nGeoId, nMainProfileId, nStartProfileId, nEndProfileId, nProfileType, nSolidLayerId)
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
function WinLib.CreatePartFromOutline( nFrameLayerId, nOutlineId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
end
|
||||
-- creo pezzo
|
||||
local nPartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nPartId, sName)
|
||||
if nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP then
|
||||
EgtSetColor( nPartId, Color3d( 204, 102, 0))
|
||||
elseif nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT then
|
||||
EgtSetColor( nPartId, Color3d( 251, 128, 4))
|
||||
end
|
||||
|
||||
-- inserisco riferimento alla sua area
|
||||
EgtSetInfo( nPartId, WIN_AREA, nFrameLayerId)
|
||||
|
||||
-- disegno ingombro
|
||||
local nGeoId = WinLib.CalcFrameGeo( nPartId, nOutlineId)
|
||||
|
||||
-- disegno solido
|
||||
WinLib.CalcFrameSolid(nPartId, nGeoId)
|
||||
|
||||
-- offset per distanziare i pezzi
|
||||
local dYPosOffset = 300 * ( nProfileType - 1)
|
||||
EgtChangeGroupFrame( nPartId, Frame3d( Point3d( 0, dYPosOffset, 0)))
|
||||
|
||||
end
|
||||
|
||||
-- funzione che posiziona un pezzo
|
||||
function WinLib.PositionPart(nPartId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nPartId)
|
||||
local sDelta = ''
|
||||
if sName == WIN_BOTTOM then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_RIGHT then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_TOP then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_LEFT then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
end
|
||||
-- calcolo nuovo riferimento
|
||||
local nGeoPartLayerId = EgtGetFirstNameInGroup( nPartId, WIN_GEO)
|
||||
local nGeoPartId = EgtGetFirstNameInGroup( nGeoPartLayerId, sName)
|
||||
local dDelta = EgtGetInfo( nGeoPartId, sDelta, 'd') or 0
|
||||
local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
local nFramePartId = EgtGetFirstNameInGroup( nOutlineLayerId, sName)
|
||||
local vtStart = EgtSV( nFramePartId)
|
||||
local ptStart = EgtSP( nFramePartId) + vtStart * dDelta
|
||||
local _, _, dAngRight = SphericalFromVector(vtStart)
|
||||
local frStart = Frame3d( ptStart)
|
||||
frStart:rotate( frStart:getOrigin(), Z_AX(), dAngRight)
|
||||
EgtChangeGroupFrame( nPartId, frStart)
|
||||
end
|
||||
|
||||
-- funzione che assembla i pezzi
|
||||
function WinLib.AssembleFrame()
|
||||
local nBottomPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_BOTTOM)
|
||||
WinLib.PositionPart(nBottomPartId)
|
||||
local nRightPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_RIGHT)
|
||||
WinLib.PositionPart(nRightPartId)
|
||||
local nTopPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_TOP)
|
||||
WinLib.PositionPart(nTopPartId)
|
||||
local nLeftPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_LEFT)
|
||||
WinLib.PositionPart(nLeftPartId)
|
||||
-- assemblo i pezzi
|
||||
--local nRightPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_RIGHT)
|
||||
--local nGeoRightLayerId = EgtGetFirstNameInGroup( nRightPartId, WIN_GEO)
|
||||
--local nGeoRightId = EgtGetFirstNameInGroup( nGeoRightLayerId, WIN_RIGHT)
|
||||
--local dDelta = EgtGetInfo( nGeoRightId, WIN_BOTTOMCPDELTA, 'd')
|
||||
--local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
--local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
--local nFrameRightId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
--local vtRight = EgtSV( nFrameRightId)
|
||||
--local ptRight = EgtSP( nFrameRightId) + vtRight * dDelta
|
||||
--local _, _, dAngRight = SphericalFromVector(vtRight)
|
||||
--local frRight = Frame3d( ptRight)
|
||||
--frRight:rotate( frRight:getOrigin(), Z_AX(), dAngRight)
|
||||
--EgtChangeGroupFrame( nRightPartId, frRight)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinLib
|
||||
@@ -1,958 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinLib = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che crea il buco per la finestra
|
||||
function WinLib.CreateHole( dWidth, dHeight)
|
||||
-- creo gruppo per buco
|
||||
local nAreaLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nAreaLayerId, WIN_FRAME)
|
||||
local nAreaOutlineLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
-- disegno outline
|
||||
local nHoleBottomId = EgtLine( nAreaOutlineLayerId, Point3d( 0, 0, 0), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nHoleBottomId, WIN_BOTTOM)
|
||||
local nHoleRightId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, 0, 0), Point3d( dWidth, dHeight, 0))
|
||||
EgtSetName( nHoleRightId, WIN_RIGHT)
|
||||
local nHoleTopId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, dHeight, 0), Point3d( 0, dHeight, 0))
|
||||
EgtSetName( nHoleTopId, WIN_TOP)
|
||||
local nHoleLeftId = EgtLine( nAreaOutlineLayerId, Point3d( 0, dHeight, 0), Point3d( 0, 0, 0))
|
||||
EgtSetName( nHoleLeftId, WIN_LEFT)
|
||||
return nAreaLayerId
|
||||
end
|
||||
|
||||
-- funzione che crea il telaio a partire dal buco
|
||||
function WinLib.CreateFrameOnHole( nHoleLayerId, dWidth, dHeight)
|
||||
local nAreaOutlineLayerId = EgtGroup( nHoleLayerId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_OUTLINE)
|
||||
-- disegno outline
|
||||
local nHoleBottomId = EgtLine( nAreaOutlineLayerId, Point3d( 0, 0, 0), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nHoleBottomId, WIN_BOTTOM)
|
||||
local nHoleRightId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, 0, 0), Point3d( dWidth, dHeight, 0))
|
||||
EgtSetName( nHoleRightId, WIN_RIGHT)
|
||||
local nHoleTopId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, dHeight, 0), Point3d( 0, dHeight, 0))
|
||||
EgtSetName( nHoleTopId, WIN_TOP)
|
||||
local nHoleLeftId = EgtLine( nAreaOutlineLayerId, Point3d( 0, dHeight, 0), Point3d( 0, 0, 0))
|
||||
EgtSetName( nHoleLeftId, WIN_LEFT)
|
||||
end
|
||||
|
||||
-- funzione che crea il telaio a partire dal buco
|
||||
function WinLib.CreateFrameAsHole( nAreaLayerId, JointType)
|
||||
-- creo layer outline del frame
|
||||
local nOutlineLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nOutlineLayerId, WIN_OUTLINE)
|
||||
-- recupero outline del buco
|
||||
local nAreaOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
-- lo copio
|
||||
local nHoleOutlineId = EgtGetFirstInGroup( nAreaOutlineLayerId)
|
||||
while nHoleOutlineId do
|
||||
local nOutlineId = EgtCopy( nHoleOutlineId, nOutlineLayerId)
|
||||
-- da modificare!!!
|
||||
-- funzione che assegna i profili serramento ai vari outline
|
||||
local sName = EgtGetName( nHoleOutlineId)
|
||||
if sName == WIN_BOTTOM then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_BOTTOM)
|
||||
elseif sName == WIN_RIGHT then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
elseif sName == WIN_TOP then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
elseif sName == WIN_LEFT then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
end
|
||||
nHoleOutlineId = EgtGetNext( nHoleOutlineId)
|
||||
end
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_BL, JointType)
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_BR, JointType)
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_TL, JointType)
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_TR, JointType)
|
||||
end
|
||||
|
||||
-- funzione che aggiunge una anta
|
||||
function WinLib.AddSash( nAreaId)
|
||||
-- creo nuova area
|
||||
local nSashAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nSashAreaId, WIN_SASH)
|
||||
EgtSetInfo( nSashAreaId, WIN_AREATYPE, WIN_AREATYPES.SASH)
|
||||
-- recupero outline area precedente
|
||||
local nPrevAreaOutlineId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
-- lo copio per outline area dell'anta
|
||||
local nAreaOutlineId = EgtCopy( nPrevAreaOutlineId, nSashAreaId)
|
||||
return nSashAreaId
|
||||
end
|
||||
|
||||
-- funzione che aggiunge un riempimento
|
||||
function WinLib.AddFill( nAreaId, FillType)
|
||||
-- creo nuova area
|
||||
local nFillAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nFillAreaId, WIN_FILL)
|
||||
EgtSetInfo( nFillAreaId, WIN_AREATYPE, WIN_AREATYPES.FILL)
|
||||
-- recupero outline area precedente
|
||||
local nPrevAreaOutlineId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
-- lo copio per outline area dell'anta
|
||||
local nAreaOutlineId = EgtCopy( nPrevAreaOutlineId, nFillAreaId)
|
||||
-- imposto tipo di fill
|
||||
EgtSetInfo( nFillAreaId, WIN_FILLTYPE, FillType)
|
||||
return nFillAreaId
|
||||
end
|
||||
|
||||
-- funzione che restituisce un outline dato un pezzo
|
||||
function WinLib.GetOutlineFromPart( nPartId)
|
||||
local nAreaId = EgtGetInfo( nPartId, WIN_AREA)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_OUTLINE)
|
||||
local sName = EgtGetName( nPartId)
|
||||
return EgtGetFirstNameInGroup( nOutlineLayerId, sName)
|
||||
end
|
||||
|
||||
-- funzione che crea un taglio split
|
||||
function WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nProportion)
|
||||
-- creo layer per split
|
||||
local nSplitLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nSplitLayerId, WIN_SPLIT)
|
||||
-- recupero contorno area precedente
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
local OutlineIds = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
table.insert( OutlineIds, nOutlineId)
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
local nSplitId
|
||||
if SplitType == WIN_SPLITTYPE.VERTICAL then
|
||||
-- creo linea
|
||||
local nCalcPosition = 0
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
nCalcPosition = nPosition
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
nCalcPosition = b3OutlineLayer:getDimX() / nProportion * nPosition
|
||||
end
|
||||
local nTotSplitId = EgtLine( nSplitLayerId, Point3d( nCalcPosition, 0, 0), Point3d( nCalcPosition, b3OutlineLayer:getDimY(), 0))
|
||||
-- la taglio con i contorni
|
||||
local nCompoOutlineId = EgtCurveCompo( nSplitLayerId, OutlineIds, false)
|
||||
local nFROutlineId = EgtSurfFlatRegion( nSplitLayerId, nCompoOutlineId)
|
||||
nSplitId = EgtTrimCurveWithRegion( nTotSplitId, nFROutlineId, true, false)
|
||||
EgtSetName( nSplitId, WIN_VERTICAL)
|
||||
EgtErase( { nCompoOutlineId, nFROutlineId})
|
||||
EgtSetInfo( nSplitId, WIN_PROFILETYPE, WIN_SASH_VERTICAL)
|
||||
elseif SplitType == WIN_SPLITTYPE.HORIZONTAL then
|
||||
-- creo linea
|
||||
local nCalcPosition = 0
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
nCalcPosition = nPosition
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
nCalcPosition = b3OutlineLayer:getDimY() / nProportion * nPosition
|
||||
end
|
||||
local nTotSplitId = EgtLine( nSplitLayerId, Point3d( 0, nCalcPosition, 0), Point3d( b3OutlineLayer:getDimX(), nCalcPosition, 0))
|
||||
-- la taglio con i contorni
|
||||
local nCompoOutlineId = EgtCurveCompo( nSplitLayerId, OutlineIds, false)
|
||||
local nFROutlineId = EgtSurfFlatRegion( nSplitLayerId, nCompoOutlineId)
|
||||
nSplitId = EgtTrimCurveWithRegion( nTotSplitId, nFROutlineId, true, false)
|
||||
EgtSetName( nSplitId, WIN_HORIZONTAL)
|
||||
EgtErase( { nCompoOutlineId, nFROutlineId})
|
||||
EgtSetInfo( nSplitId, WIN_PROFILETYPE, WIN_SASH_HORIZONTAL)
|
||||
end
|
||||
-- creo aree
|
||||
WinLib.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
end
|
||||
|
||||
-- funzione che crea tagli split multipli
|
||||
function WinLib.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList, nProportion)
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
for nIndex = 1, #PositionList do
|
||||
WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, PositionList[nIndex], nProportion)
|
||||
end
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
for nIndex = 1, #PositionList do
|
||||
WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, PositionList[nIndex], nProportion)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea un taglio split da una curva generica
|
||||
function WinLib.AddGenSplit( nAreaLayerId, nSplitId)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
-- allungo curva split per cercare intersezioni
|
||||
EgtExtendCurveStartByLen( nSplitId, 10)
|
||||
EgtExtendCurveEndByLen( nSplitId, 10)
|
||||
-- recupero lista intersezioni
|
||||
local OutlineInters = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
-- verifico se ci siano intersezioni con questo outline
|
||||
local ptInters = EgtIP( nSplitId, nOutlineId, EgtSP( nSplitId))
|
||||
if ptInters then
|
||||
table.insert( OutlineInters, { Id = nOutlineId, IntersPoint = ptInters})
|
||||
end
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
local ptStartSplit = EgtSP( nSplitId)
|
||||
local ptEndSplit = EgtEP( nSplitId)
|
||||
local StartInters
|
||||
local EndInters
|
||||
for nIndex = 1, #OutlineInters do
|
||||
local CurrOutInters = OutlineInters[nIndex]
|
||||
CurrOutInters.StartDistance = (CurrOutInters.IntersPoint - ptStartSplit):sqlen()
|
||||
CurrOutInters.EndDistance = (CurrOutInters.IntersPoint - ptEndSplit):sqlen()
|
||||
if not StartInters or CurrOutInters.StartDistance < StartInters.StartDistance then
|
||||
StartInters = CurrOutInters
|
||||
end
|
||||
if not EndInters or CurrOutInters.EndDistance < EndInters.EndDistance then
|
||||
EndInters = CurrOutInters
|
||||
end
|
||||
end
|
||||
-- accorcio la curva split su intersezione outline
|
||||
local dStartSplitInters = EgtCurveParamAtPoint( nSplitId, StartInters.IntersPoint)
|
||||
EgtTrimCurveStartAtParam( nSplitId, dStartSplitInters)
|
||||
local dEndSplitInters = EgtCurveParamAtPoint( nSplitId, EndInters.IntersPoint)
|
||||
EgtTrimCurveEndAtParam( nSplitId, dEndSplitInters)
|
||||
EgtSetInfo( nSplitId, WIN_SPLIT_STARTINTERS, StartInters.Id)
|
||||
EgtSetInfo( nSplitId, WIN_SPLIT_ENDINTERS, EndInters.Id)
|
||||
-- assegno nome e tipo profilo
|
||||
EgtSetName( nSplitId, WIN_SPLIT)
|
||||
EgtSetInfo( nSplitId, WIN_PROFILETYPE, WIN_SASH_HORIZONTAL)
|
||||
-- creo aree
|
||||
WinLib.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
end
|
||||
|
||||
-- funzione che crea tagli split da curve generiche
|
||||
function WinLib.AddGenSplits( nAreaLayerId, SplitList)
|
||||
for nIndex = 1, #SplitList do
|
||||
WinLib.AddSplit( nAreaLayerId, SplitList[nIndex])
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea le aree da un taglio split
|
||||
function WinLib.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
-- creo layer per le due aree
|
||||
local nArea1Id = EgtGroup( nAreaLayerId)
|
||||
local nArea2Id = EgtGroup( nAreaLayerId)
|
||||
EgtSetInfo( nArea1Id, 'SOU', nSplitId)
|
||||
EgtSetName( nArea1Id , 'Area' .. 1)
|
||||
local nArea1OutlineLayerId = EgtGroup( nArea1Id)
|
||||
EgtSetName( nArea1OutlineLayerId , WIN_AREAOUTLINE)
|
||||
EgtSetInfo( nArea2Id, 'SOU', nSplitId)
|
||||
EgtSetName( nArea2Id , 'Area' .. 2)
|
||||
local nArea2OutlineLayerId = EgtGroup( nArea2Id)
|
||||
EgtSetName( nArea2OutlineLayerId , WIN_AREAOUTLINE)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
--local Outlines = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
local nInters = 0
|
||||
while nOutlineId and nInters ~= 3 do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
-- calcolo intersezioni con questo outline
|
||||
local ptInters = EgtIP( nSplitId, nOutlineId, EgtSP( nSplitId))
|
||||
if ptInters then
|
||||
if nInters == 0 then
|
||||
-- trovato primo punto di intersezione - inizio area 2
|
||||
nInters = 1
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
local dStartIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveStartAtParam( nCopyId, dStartIntersParam)
|
||||
elseif nInters == 1 then
|
||||
-- trovato secondo punto di intersezione - fine area 2
|
||||
nInters = 2
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
local dEndIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveEndAtParam( nCopyId, dEndIntersParam)
|
||||
-- copio anche split
|
||||
local nSplitCopyId = EgtCopy( nSplitId, nArea2OutlineLayerId)
|
||||
if not AreSamePointExact( EgtEP( nCopyId), EgtSP( nSplitCopyId)) then
|
||||
EgtInvertCurve( nSplitCopyId)
|
||||
end
|
||||
-- inizio area 1
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
local dStartIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveStartAtParam( nCopyId, dStartIntersParam)
|
||||
elseif nInters == 2 then
|
||||
-- trovato secondo punto di intersezione - fine area 1
|
||||
nInters = 3
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
local dEndIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveEndAtParam( nCopyId, dEndIntersParam)
|
||||
-- copio anche split
|
||||
local nSplitCopyId = EgtCopy( nSplitId, nArea1OutlineLayerId)
|
||||
if not AreSamePointExact( EgtEP( nCopyId), EgtSP( nSplitCopyId)) then
|
||||
EgtInvertCurve( nSplitCopyId)
|
||||
end
|
||||
end
|
||||
elseif nInters == 1 then
|
||||
-- copio nel profilo 2
|
||||
EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
elseif nInters == 2 then
|
||||
-- copio nel profilo 1
|
||||
EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
end
|
||||
-- aggiorno indice
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
-- se arrivato alla fine riparto
|
||||
if not nOutlineId then
|
||||
nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
function WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, WIN_REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref, nProfileRefId
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
function WinLib.GetDeltaProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId, b3Ref, nProfileRefId = WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, WIN_CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref, nProfileId, nProfileRefId
|
||||
end
|
||||
|
||||
-- funzione che crea le curve del geo
|
||||
function WinLib.CreateFrameGeo( nOutlineId, nPrevOutlineId, nNextOutlineId, StartJointType, EndJointType, nProfileType, nGeoLayerId, nProfileFrameLayerId)
|
||||
local nCurrCurveId
|
||||
local nCurrOffsetId
|
||||
local nPrevCurveId
|
||||
local nNextCurveId
|
||||
local dGeoWidth
|
||||
-- recupero ref e controprofilo e calcolo delta del top, prev e next
|
||||
local sCurrProfileType = EgtGetInfo( nOutlineId, WIN_PROFILETYPE)
|
||||
local _, b3CurrRef, nCurrProfileId, nCurrProfileRefId = WinLib.GetDeltaProfile( nProfileFrameLayerId, sCurrProfileType)
|
||||
local sPrevProfileType = EgtGetInfo( nPrevOutlineId, WIN_PROFILETYPE)
|
||||
local dPrevCPDelta, _ = WinLib.GetDeltaProfile( nProfileFrameLayerId, sPrevProfileType)
|
||||
local sNextProfileType = EgtGetInfo( nNextOutlineId, WIN_PROFILETYPE)
|
||||
local dNextCPDelta, _ = WinLib.GetDeltaProfile( nProfileFrameLayerId, sNextProfileType)
|
||||
-- calcolo spostamento della curva iniziale dovuto a posizione riferimento
|
||||
local nProfileFrameId = EgtGetFirstNameInGroup( nCurrProfileId, WIN_SECTIONFRAME)
|
||||
local frProfile = EgtFR( nProfileFrameId)
|
||||
local b3CurrProfileFrame = EgtGetBBoxRef( nCurrProfileRefId, GDB_BB.STANDARD, frProfile)
|
||||
local dCurrOffset = b3CurrProfileFrame:getMax():getX()
|
||||
-- creo copie degli outline e li offsetto opportunamente
|
||||
nCurrCurveId = EgtCopy( nOutlineId, nGeoLayerId)
|
||||
EgtOffsetCurve( nCurrCurveId, dCurrOffset)
|
||||
nCurrOffsetId = EgtCopy( nOutlineId, nGeoLayerId)
|
||||
EgtOffsetCurve( nCurrOffsetId, dCurrOffset - b3CurrProfileFrame:getDimX())
|
||||
EgtInvertCurve( nCurrOffsetId)
|
||||
if StartJointType == WIN_JNT.ANGLED then
|
||||
-- calcolo la bisettrice
|
||||
local vtMedia = ( ( EgtSV( nOutlineId) - EgtEV( nPrevOutlineId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtSV( nOutlineId)
|
||||
vtMedia:rotate(Z_AX(), 90)
|
||||
end
|
||||
nPrevCurveId = EgtLinePVL( nGeoLayerId, EgtSP( nOutlineId), vtMedia, 3 * b3CurrProfileFrame:getDimX())
|
||||
EgtInvertCurve( nPrevCurveId)
|
||||
else
|
||||
nPrevCurveId = EgtCopy( nPrevOutlineId, nGeoLayerId)
|
||||
end
|
||||
if ( StartJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.HORIZONTAL)) or
|
||||
( StartJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT or nProfileType == WIN_PRF.VERTICAL)) or
|
||||
nProfileType == WIN_PRF.SPLIT then
|
||||
EgtOffsetCurve( nPrevCurveId, - dPrevCPDelta)
|
||||
EgtSetInfo( nGeoLayerId, WIN_STARTCPDELTA, dPrevCPDelta)
|
||||
end
|
||||
if EndJointType == WIN_JNT.ANGLED then
|
||||
-- calcolo la bisettrice
|
||||
local vtMedia = ( ( EgtSV( nNextOutlineId) - EgtEV( nOutlineId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtEV( nOutlineId)
|
||||
vtMedia:rotate(Z_AX(), 90)
|
||||
end
|
||||
nNextCurveId = EgtLinePVL( nGeoLayerId, EgtEP( nOutlineId), vtMedia, 3 * b3CurrProfileFrame:getDimX())
|
||||
EgtInvertCurve( nNextCurveId)
|
||||
else
|
||||
nNextCurveId = EgtCopy( nNextOutlineId, nGeoLayerId)
|
||||
end
|
||||
if ( StartJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.HORIZONTAL)) or
|
||||
( StartJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT or nProfileType == WIN_PRF.VERTICAL)) or
|
||||
nProfileType == WIN_PRF.SPLIT then
|
||||
EgtOffsetCurve( nNextCurveId, - dNextCPDelta)
|
||||
EgtSetInfo( nGeoLayerId, WIN_ENDCPDELTA, dNextCPDelta)
|
||||
end
|
||||
dGeoWidth = b3CurrProfileFrame:getDimX()
|
||||
-- salvo delta controprofilo
|
||||
if StartJointType == WIN_JNT.FULL_V then
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_V then
|
||||
end
|
||||
return nCurrCurveId, nCurrOffsetId, nPrevCurveId, nNextCurveId, dGeoWidth
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
function WinLib.CalcFrameGeo( nPartId, nOutlineId, nOutlineLayerId)
|
||||
-- recupero profilo
|
||||
local nProfileLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_FRAME)
|
||||
-- creo layer per ingombro
|
||||
local nGeoLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nGeoLayerId, WIN_GEO)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
elseif sName == WIN_VERTICAL then
|
||||
nProfileType = WIN_PRF.VERTICAL
|
||||
elseif sName == WIN_HORIZONTAL then
|
||||
nProfileType = WIN_PRF.HORIZONTAL
|
||||
elseif sName == WIN_SPLIT then
|
||||
nProfileType = WIN_PRF.SPLIT
|
||||
end
|
||||
local StartJointType
|
||||
local EndJointType
|
||||
local nNextOutlineId
|
||||
local nPrevOutlineId
|
||||
local nCurrCurveId
|
||||
local nCurrOffsetId
|
||||
local nPrevCurveId
|
||||
local nNextCurveId
|
||||
local dGeoWidth
|
||||
if nProfileType == WIN_PRF.TOP then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
-- recupero outline precedente e successivo
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
elseif nProfileType == WIN_PRF.BOTTOM then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.VERTICAL then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.HORIZONTAL then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.SPLIT then
|
||||
local nStartId = EgtGetInfo( nOutlineId, WIN_SPLIT_STARTINTERS, 'i')
|
||||
local nEndId = EgtGetInfo( nOutlineId, WIN_SPLIT_ENDINTERS, 'i')
|
||||
local sStartName = EgtGetName( nStartId)
|
||||
local sEndName = EgtGetName( nEndId)
|
||||
-- recupero tipo di giunzioni
|
||||
if sStartName == WIN_BOTTOM or sStartName == WIN_TOP then
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
if sEndName == WIN_BOTTOM or sEndName == WIN_TOP then
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sStartName)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sEndName)
|
||||
end
|
||||
-- creo lati dell'outline
|
||||
nCurrCurveId, nCurrOffsetId, nPrevCurveId, nNextCurveId, dGeoWidth = WinLib.CreateFrameGeo( nOutlineId, nPrevOutlineId, nNextOutlineId, StartJointType, EndJointType, nProfileType, nGeoLayerId, nProfileFrameLayerId)
|
||||
-- calcolo punti di intersezione
|
||||
local ptIntersCurrPrev = EgtIP( nCurrCurveId, nPrevCurveId, EgtSP( nCurrCurveId))
|
||||
if not ptIntersCurrPrev then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveStartByLen( nCurrCurveId, 200)
|
||||
EgtExtendCurveEndByLen( nPrevCurveId, 200)
|
||||
ptIntersCurrPrev = EgtIP( nCurrCurveId, nPrevCurveId, EgtSP( nCurrCurveId))
|
||||
end
|
||||
local ptIntersCurrNext = EgtIP( nCurrCurveId, nNextCurveId, EgtEP( nCurrCurveId))
|
||||
if not ptIntersCurrNext then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveEndByLen( nCurrCurveId, 200)
|
||||
EgtExtendCurveStartByLen( nNextCurveId, 200)
|
||||
ptIntersCurrNext = EgtIP( nCurrCurveId, nNextCurveId, EgtEP( nCurrCurveId))
|
||||
end
|
||||
local ptIntersCurrOffsetPrev = EgtIP( nCurrOffsetId, nPrevCurveId, EgtEP( nCurrOffsetId))
|
||||
if not ptIntersCurrOffsetPrev then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveEndByLen( nCurrOffsetId, 1000)
|
||||
EgtExtendCurveStartByLen( nPrevCurveId, 200)
|
||||
ptIntersCurrOffsetPrev = EgtIP( nCurrOffsetId, nPrevCurveId, EgtEP( nCurrOffsetId))
|
||||
end
|
||||
local ptIntersCurrOffsetNext = EgtIP( nCurrOffsetId, nNextCurveId, EgtSP( nCurrOffsetId))
|
||||
if not ptIntersCurrOffsetNext then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveStartByLen( nCurrOffsetId, 1000)
|
||||
EgtExtendCurveStartByLen( nNextCurveId, 200)
|
||||
ptIntersCurrOffsetNext = EgtIP( nCurrOffsetId, nNextCurveId, EgtSP( nCurrOffsetId))
|
||||
end
|
||||
-- calcolo accorciamenti dei lati copiati alle intersezioni
|
||||
local dIntersCurrPrevParam = EgtCurveParamAtPoint( nCurrCurveId, ptIntersCurrPrev)
|
||||
EgtTrimCurveStartAtParam( nCurrCurveId, dIntersCurrPrevParam)
|
||||
local dIntersCurrNextParam = EgtCurveParamAtPoint( nCurrCurveId, ptIntersCurrNext)
|
||||
EgtTrimCurveEndAtParam( nCurrCurveId, dIntersCurrNextParam)
|
||||
local dIntersCurrOffsetNextParam = EgtCurveParamAtPoint( nCurrOffsetId, ptIntersCurrOffsetNext)
|
||||
EgtTrimCurveStartAtParam( nCurrOffsetId, dIntersCurrOffsetNextParam)
|
||||
local dIntersCurrOffsetPrevParam = EgtCurveParamAtPoint( nCurrOffsetId, ptIntersCurrOffsetPrev)
|
||||
EgtTrimCurveEndAtParam( nCurrOffsetId, dIntersCurrOffsetPrevParam)
|
||||
local dIntersPrevOffsetParam = EgtCurveParamAtPoint( nPrevCurveId, ptIntersCurrOffsetPrev)
|
||||
EgtTrimCurveStartAtParam( nPrevCurveId, dIntersPrevOffsetParam)
|
||||
local dIntersPrevCurrParam = EgtCurveParamAtPoint( nPrevCurveId, ptIntersCurrPrev)
|
||||
EgtTrimCurveEndAtParam( nPrevCurveId, dIntersPrevCurrParam)
|
||||
local dIntersNextCurrParam = EgtCurveParamAtPoint( nNextCurveId, ptIntersCurrNext)
|
||||
EgtTrimCurveStartAtParam( nNextCurveId, dIntersNextCurrParam)
|
||||
local dIntersNextOffsetParam = EgtCurveParamAtPoint( nNextCurveId, ptIntersCurrOffsetNext)
|
||||
EgtTrimCurveEndAtParam( nNextCurveId, dIntersNextOffsetParam)
|
||||
-- creo composita dai lati
|
||||
EgtSetName( nCurrCurveId, WIN_GEO_OUT)
|
||||
EgtSetName( nCurrOffsetId, WIN_GEO_IN)
|
||||
EgtSetName( nNextCurveId, WIN_GEO_RIGHT)
|
||||
EgtSetName( nPrevCurveId, WIN_GEO_LEFT)
|
||||
-- salvo spessore serramento in geo
|
||||
EgtSetInfo( nCurrCurveId, WIN_GEOWIDTH, dGeoWidth)
|
||||
|
||||
return nCurrCurveId
|
||||
end
|
||||
|
||||
-- funzione che posiziona i profili, li estrude e crea il solido
|
||||
function WinLib.CalcStartEndProfileType(nProfileType, nOutlineId)
|
||||
local StartJointType
|
||||
local EndJointType
|
||||
local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
local sStartProfileType
|
||||
local sEndProfileType
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.VERTICAL then
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif nProfileType == WIN_PRF.HORIZONTAL then
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif nProfileType == WIN_PRF.SPLIT then
|
||||
local nStartId = EgtGetInfo( nOutlineId, WIN_SPLIT_STARTINTERS, 'i')
|
||||
local nEndId = EgtGetInfo( nOutlineId, WIN_SPLIT_ENDINTERS, 'i')
|
||||
local sStartName = EgtGetName( nStartId)
|
||||
local sEndName = EgtGetName( nEndId)
|
||||
-- recupero tipo di giunzioni
|
||||
if sStartName == WIN_BOTTOM or sStartName == WIN_TOP then
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
if sEndName == WIN_BOTTOM or sEndName == WIN_TOP then
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
end
|
||||
return sStartProfileType, sEndProfileType, StartJointType, EndJointType
|
||||
end
|
||||
|
||||
-- funzione che posiziona i profili, li estrude e crea il solido
|
||||
function WinLib.MakeSolidByExtrusion(nGeoId, nOutlineId, nMainProfileId, nStartProfileId, nEndProfileId, nProfileType, nSolidLayerId)
|
||||
-- recupero outline
|
||||
local nPartId = EgtGetParent( nSolidLayerId)
|
||||
local nAreaId = EgtGetInfo( nPartId, WIN_AREA)
|
||||
local nGeoLayerId = EgtGetParent( nGeoId)
|
||||
-- recupero geo
|
||||
local nPrevGeoId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_LEFT)
|
||||
local nNextGeoId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_RIGHT)
|
||||
-- recupero BBox e larghezza del geo
|
||||
local dGeoWidth = EgtGetInfo( nGeoId, WIN_GEOWIDTH, 'd')
|
||||
-- creo guida Main
|
||||
local nGuideId = EgtCopy( nOutlineId, nSolidLayerId)
|
||||
EgtExtendCurveStartByLen( nGuideId, 2 * dGeoWidth)
|
||||
EgtExtendCurveEndByLen( nGuideId, 2 * dGeoWidth)
|
||||
-- recupero frame del profilo
|
||||
local nMainProfileFrameId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTIONFRAME)
|
||||
local frInvertMainProfile = EgtFR( nMainProfileFrameId)
|
||||
frInvertMainProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nMainProfileId), frInvertMainProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nMainProfileId, Frame3d( EgtSP( nGuideId), - EgtSV( nGuideId)))
|
||||
-- recupero outline del profilo Main e lo estrudo
|
||||
local nMainOutlineId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTION)
|
||||
local nMainExtrusionId = EgtSurfTmSwept( nSolidLayerId, nMainOutlineId, nGuideId, false)
|
||||
-- posiziono il profilo Start
|
||||
local nRefStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, WIN_REF)
|
||||
local b3RefStartProfile = EgtGetBBoxGlob(nRefStartProfileId, GDB_BB.STANDARD)
|
||||
local dStartDelta = EgtGetInfo( nGeoLayerId, WIN_STARTCPDELTA, 'd') or 0
|
||||
-- creo guida per estrusione
|
||||
local nStartGuideId = EgtCopy( nPrevGeoId, nSolidLayerId)
|
||||
EgtExtendCurveStartByLen( nStartGuideId, 2 * dGeoWidth)
|
||||
EgtExtendCurveEndByLen( nStartGuideId, 2 * dGeoWidth)
|
||||
-- recupero frame del profilo
|
||||
local nStartProfileFrameId = EgtGetFirstNameInGroup( nStartProfileId, WIN_SECTIONFRAME)
|
||||
local frStartProfile = EgtFR( nStartProfileFrameId)
|
||||
-- lo sposto se controprofilo
|
||||
frStartProfile:move( - frStartProfile:getVersX() * dStartDelta)
|
||||
frStartProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nStartProfileId), frStartProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nStartProfileId, Frame3d( EgtSP( nStartGuideId), - EgtSV( nStartGuideId)))
|
||||
-- in base al tipo di incastro e di pezzo, ricavo i controprofili
|
||||
local sStartProfileType
|
||||
local sEndProfileType
|
||||
-- recupero tipo di giunzioni
|
||||
sStartProfileType, sEndProfileType, StartJointType, EndJointType = WinLib.CalcStartEndProfileType( nProfileType, nOutlineId)
|
||||
-- recupero outline del profilo Start e lo estrudo
|
||||
local nOutStartProfileId
|
||||
if sStartProfileType == WIN_MINIZINKEN then
|
||||
nOutStartProfileId = EgtLine( nStartProfileId, EgtSP( nPrevGeoId), EgtSP( nPrevGeoId) - Z_AX() * b3RefStartProfile:getDimY(), GDB_RT.GLOB)
|
||||
EgtInvertCurve( nOutStartProfileId)
|
||||
else
|
||||
nOutStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, sStartProfileType)
|
||||
end
|
||||
local nStartExtrusionId = EgtSurfTmSwept( nSolidLayerId, nOutStartProfileId, nStartGuideId, false)
|
||||
-- taglio estrusi per ottenere solido
|
||||
local nExtrCopyId = EgtCopy( nMainExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nMainExtrusionId, nStartExtrusionId, true, false)
|
||||
EgtSurfTmCut( nStartExtrusionId, nExtrCopyId, true, false)
|
||||
-- posiziono il profilo End
|
||||
local nRefEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, WIN_REF)
|
||||
local b3RefEndProfile = EgtGetBBoxGlob(nRefEndProfileId, GDB_BB.STANDARD)
|
||||
local dEndDelta = EgtGetInfo( nGeoLayerId, WIN_ENDCPDELTA, 'd') or 0
|
||||
-- creo guida per estrusione
|
||||
local nEndGuideId = EgtCopy( nNextGeoId, nSolidLayerId)
|
||||
EgtExtendCurveStartByLen( nEndGuideId, 2 * dGeoWidth)
|
||||
EgtExtendCurveEndByLen( nEndGuideId, 2 * dGeoWidth)
|
||||
-- recupero frame del profilo
|
||||
local nEndProfileFrameId = EgtGetFirstNameInGroup( nEndProfileId, WIN_SECTIONFRAME)
|
||||
local frEndProfile = EgtFR( nEndProfileFrameId)
|
||||
frEndProfile:move( - frEndProfile:getVersX() * dEndDelta)
|
||||
frEndProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nEndProfileId), frEndProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nEndProfileId, Frame3d( EgtSP( nEndGuideId), - EgtSV( nEndGuideId)))
|
||||
-- recupero outline del profilo End e lo estrudo
|
||||
local nOutEndProfileId
|
||||
if sEndProfileType == WIN_MINIZINKEN then
|
||||
nOutEndProfileId = EgtLine( nEndProfileId, EgtSP( nNextGeoId), EgtSP( nNextGeoId) - Z_AX() * b3RefEndProfile:getDimY(), GDB_RT.GLOB)
|
||||
else
|
||||
nOutEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, sEndProfileType)
|
||||
end
|
||||
-- if (EndJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.LEFT)) or
|
||||
-- (EndJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.RIGHT)) then
|
||||
-- EgtInvertCurve( nOutEndProfileId)
|
||||
-- end
|
||||
local nEndExtrusionId = EgtSurfTmSwept( nSolidLayerId, nOutEndProfileId, nEndGuideId, false)
|
||||
-- taglio estrusi per ottenere solido
|
||||
EgtSurfTmCut( nMainExtrusionId, nEndExtrusionId, true, false)
|
||||
EgtSurfTmCut( nEndExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
end
|
||||
|
||||
-- funzione che crea il solido del pezzo del telaio
|
||||
function WinLib.CalcFrameSolid(nPartId, nOutlineId, nGeoId, nOutlineLayerId)
|
||||
-- recupero profilo
|
||||
local nProfileId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileId, WIN_FRAME)
|
||||
-- creo layer per solido e per profili di estrusione
|
||||
local nSolidLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nSolidLayerId, WIN_SOLID)
|
||||
local nFrameProfileLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nFrameProfileLayerId, WIN_PROFILE)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nPartId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
elseif sName == WIN_VERTICAL then
|
||||
nProfileType = WIN_PRF.VERTICAL
|
||||
elseif sName == WIN_HORIZONTAL then
|
||||
nProfileType = WIN_PRF.HORIZONTAL
|
||||
elseif sName == WIN_SPLIT then
|
||||
nProfileType = WIN_PRF.SPLIT
|
||||
end
|
||||
local nPrevOutlineId
|
||||
local nNextOutlineId
|
||||
local nOrigMainProfileId = GDB_ID.NULL
|
||||
local nMainProfileId = GDB_ID.NULL
|
||||
local nOrigStartProfileId = GDB_ID.NULL
|
||||
local nStartProfileId = GDB_ID.NULL
|
||||
local nOrigEndProfileId = GDB_ID.NULL
|
||||
local nEndProfileId = GDB_ID.NULL
|
||||
-- recupero outline precedente e successivo
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
elseif nProfileType == WIN_PRF.VERTICAL then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.HORIZONTAL then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.SPLIT then
|
||||
local nStartId = EgtGetInfo( nOutlineId, WIN_SPLIT_STARTINTERS, 'i')
|
||||
local nEndId = EgtGetInfo( nOutlineId, WIN_SPLIT_ENDINTERS, 'i')
|
||||
local sStartName = EgtGetName( nStartId)
|
||||
local sEndName = EgtGetName( nEndId)
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sStartName)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sEndName)
|
||||
end
|
||||
-- recupero profilo e controprofili
|
||||
local sCurrProfileType = EgtGetInfo( nOutlineId, WIN_PROFILETYPE)
|
||||
local sPrevProfileType = EgtGetInfo( nPrevOutlineId, WIN_PROFILETYPE)
|
||||
local sNextProfileType = EgtGetInfo( nNextOutlineId, WIN_PROFILETYPE)
|
||||
nOrigMainProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sCurrProfileType)
|
||||
nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sPrevProfileType)
|
||||
nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sNextProfileType)
|
||||
-- creo copie di profilo e controprofili
|
||||
nMainProfileId = EgtCopy( nOrigMainProfileId, nFrameProfileLayerId)
|
||||
EgtSetName( nMainProfileId, WIN_PRF_MAIN)
|
||||
nStartProfileId = EgtCopy( nOrigStartProfileId, nFrameProfileLayerId)
|
||||
EgtSetName( nStartProfileId, WIN_PRF_START)
|
||||
nEndProfileId = EgtCopy( nOrigEndProfileId, nFrameProfileLayerId)
|
||||
EgtSetName( nEndProfileId, WIN_PRF_END)
|
||||
-- creo solido dai profili
|
||||
WinLib.MakeSolidByExtrusion(nGeoId, nOutlineId, nMainProfileId, nStartProfileId, nEndProfileId, nProfileType, nSolidLayerId)
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
function WinLib.CreatePartFromOutline( nAreaLayerId, nOutlineId)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
-- se area senza outline, cerco quella superiore
|
||||
if not nOutlineLayerId then
|
||||
local nParentAreaLayerId = EgtGetParent( nAreaLayerId)
|
||||
if nParentAreaLayerId then
|
||||
nOutlineLayerId = EgtGetFirstNameInGroup( nParentAreaLayerId, WIN_OUTLINE)
|
||||
end
|
||||
end
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
elseif sName == WIN_VERTICAL then
|
||||
nProfileType = WIN_PRF.VERTICAL
|
||||
elseif sName == WIN_HORIZONTAL then
|
||||
nProfileType = WIN_PRF.HORIZONTAL
|
||||
elseif sName == WIN_SPLIT then
|
||||
nProfileType = WIN_PRF.SPLIT
|
||||
end
|
||||
-- creo pezzo
|
||||
local nPartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nPartId, sName)
|
||||
if nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.HORIZONTAL then
|
||||
EgtSetColor( nPartId, Color3d( 204, 102, 0))
|
||||
elseif nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT or nProfileType == WIN_PRF.VERTICAL then
|
||||
EgtSetColor( nPartId, Color3d( 251, 128, 4))
|
||||
else
|
||||
EgtSetColor( nPartId, Color3d( 255, 159, 57))
|
||||
end
|
||||
|
||||
-- inserisco riferimento alla sua area
|
||||
EgtSetInfo( nPartId, WIN_AREA, nAreaLayerId)
|
||||
|
||||
-- disegno ingombro
|
||||
local nGeoId = WinLib.CalcFrameGeo( nPartId, nOutlineId, nOutlineLayerId)
|
||||
|
||||
-- disegno solido
|
||||
WinLib.CalcFrameSolid(nPartId, nOutlineId, nGeoId, nOutlineLayerId)
|
||||
|
||||
-- offset per distanziare i pezzi
|
||||
--local dYPosOffset = 300 * ( nProfileType - 1)
|
||||
--EgtChangeGroupFrame( nPartId, Frame3d( Point3d( 0, dYPosOffset, 0)))
|
||||
|
||||
end
|
||||
|
||||
-- funzione che posiziona un pezzo
|
||||
function WinLib.PositionPart(nPartId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nPartId)
|
||||
local sDelta = ''
|
||||
if sName == WIN_BOTTOM then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_RIGHT then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_TOP then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_LEFT then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
end
|
||||
-- calcolo nuovo riferimento
|
||||
local nGeoPartLayerId = EgtGetFirstNameInGroup( nPartId, WIN_GEO)
|
||||
local nGeoPartId = EgtGetFirstNameInGroup( nGeoPartLayerId, sName)
|
||||
local dDelta = EgtGetInfo( nGeoPartId, sDelta, 'd') or 0
|
||||
local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
local nFramePartId = EgtGetFirstNameInGroup( nOutlineLayerId, sName)
|
||||
local vtStart = EgtSV( nFramePartId)
|
||||
local ptStart = EgtSP( nFramePartId) + vtStart * dDelta
|
||||
local _, _, dAngRight = SphericalFromVector(vtStart)
|
||||
local frStart = Frame3d( ptStart)
|
||||
frStart:rotate( frStart:getOrigin(), Z_AX(), dAngRight)
|
||||
EgtChangeGroupFrame( nPartId, frStart)
|
||||
end
|
||||
|
||||
-- funzione che assembla i pezzi
|
||||
function WinLib.AssembleFrame()
|
||||
local nBottomPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_BOTTOM)
|
||||
WinLib.PositionPart(nBottomPartId)
|
||||
local nRightPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_RIGHT)
|
||||
WinLib.PositionPart(nRightPartId)
|
||||
local nTopPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_TOP)
|
||||
WinLib.PositionPart(nTopPartId)
|
||||
local nLeftPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_LEFT)
|
||||
WinLib.PositionPart(nLeftPartId)
|
||||
-- assemblo i pezzi
|
||||
--local nRightPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_RIGHT)
|
||||
--local nGeoRightLayerId = EgtGetFirstNameInGroup( nRightPartId, WIN_GEO)
|
||||
--local nGeoRightId = EgtGetFirstNameInGroup( nGeoRightLayerId, WIN_RIGHT)
|
||||
--local dDelta = EgtGetInfo( nGeoRightId, WIN_BOTTOMCPDELTA, 'd')
|
||||
--local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
--local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
--local nFrameRightId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
--local vtRight = EgtSV( nFrameRightId)
|
||||
--local ptRight = EgtSP( nFrameRightId) + vtRight * dDelta
|
||||
--local _, _, dAngRight = SphericalFromVector(vtRight)
|
||||
--local frRight = Frame3d( ptRight)
|
||||
--frRight:rotate( frRight:getOrigin(), Z_AX(), dAngRight)
|
||||
--EgtChangeGroupFrame( nRightPartId, frRight)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinLib
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,34 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinDesign = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
function WinDesign.DesignFrame( dWidth, dHeight, nJointBL, nJointBR, nJointTR, nJointTL)
|
||||
|
||||
end
|
||||
|
||||
function WinDesign.DesignSash( sFilePath)
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinDesign
|
||||
@@ -1,264 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinManageProject = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinJWDConst = nil
|
||||
require( 'WinJWDConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.JSON = nil
|
||||
local JSON = require( 'JSON')
|
||||
|
||||
-- funzioni
|
||||
local function ConvertCurveToTableEntity( nCurveId)
|
||||
-- verifico il tipo di entita'
|
||||
local nBaseOutlineType = EgtGetType( nCurveId)
|
||||
if nBaseOutlineType == GDB_TY.CRV_LINE then
|
||||
local ptStart = EgtSP( nCurveId)
|
||||
local ptEnd = EgtEP( nCurveId)
|
||||
return { [JWD_CRV_TYPE] = nBaseOutlineType, [JWD_POINT_START] = ptStart, [JWD_POINT_END] = ptEnd}
|
||||
elseif nBaseOutlineType == GDB_TY.CRV_ARC then
|
||||
local ptStart = EgtSP( nCurveId)
|
||||
local ptEnd = EgtEP( nCurveId)
|
||||
local ptMid = EgtMP( nCurveId)
|
||||
return { [JWD_CRV_TYPE] = nBaseOutlineType, [JWD_POINT_START] = ptStart, [JWD_POINT_END] = ptEnd, [JWD_POINT_MID] = ptMid}
|
||||
elseif nBaseOutlineType == GDB_TY.CRV_COMPO then
|
||||
-- local ptStart = EgtSP( nCurveId)
|
||||
-- local ptEnd = EgtEP( nCurveId)
|
||||
-- local ptMid = EgtMP( nCurveId)
|
||||
-- return { Type = nBaseOutlineType, ptStart = ptStart, ptEnd = ptEnd, ptMid = ptMid}
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione ricorsiva che legge le aree e ne riporta i dati in tabella
|
||||
local function ConvertAreaToTable( nAreaId)
|
||||
local AreaTable = {}
|
||||
local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i')
|
||||
AreaTable[JWD_AREA_TYPE] = nAreaType
|
||||
if nAreaType == WIN_AREATYPES.NULL then
|
||||
-- non faccio nulla
|
||||
elseif nAreaType == WIN_AREATYPES.FRAME then
|
||||
-- recupero outline del frame
|
||||
local nBaseOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE, 'i')
|
||||
local JointTable = {}
|
||||
-- recupero tipo giunzioni
|
||||
local nJointBL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
local nJointBR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
local nJointTL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
local nJointTR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
JointTable[JWD_JOINT_BL] = nJointBL
|
||||
JointTable[JWD_JOINT_BR] = nJointBR
|
||||
JointTable[JWD_JOINT_TL] = nJointTL
|
||||
JointTable[JWD_JOINT_TR] = nJointTR
|
||||
local OutlineTable = {}
|
||||
-- recupero contorno
|
||||
local nBaseOutlineId = EgtGetFirstInGroup( nBaseOutlineLayerId)
|
||||
local nBaseOutlineIndex = 1
|
||||
while nBaseOutlineId do
|
||||
local Entity = ConvertCurveToTableEntity( nBaseOutlineId)
|
||||
table.insert( OutlineTable, Entity)
|
||||
nBaseOutlineIndex = nBaseOutlineIndex + 1
|
||||
nBaseOutlineId = EgtGetNext( nBaseOutlineId)
|
||||
end
|
||||
AreaTable[JWD_JOINT] = JointTable
|
||||
AreaTable[JWD_OUTLINE] = OutlineTable
|
||||
-- verifico se c'e' BottomRail
|
||||
local nBottomRailId = EgtGetInfo( nBaseOutlineLayerId, WIN_BOTTOMRAIL, 'i')
|
||||
if nBottomRailId then
|
||||
AreaTable[JWD_BOTTOM_RAIL] = 1
|
||||
end
|
||||
elseif nAreaType == WIN_AREATYPES.SASH then
|
||||
local nBaseOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
local JointTable = {}
|
||||
-- recupero tipo giunzioni
|
||||
local nJointBL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
local nJointBR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
local nJointTL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
local nJointTR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
JointTable[JWD_JOINT_BL] = nJointBL
|
||||
JointTable[JWD_JOINT_BR] = nJointBR
|
||||
JointTable[JWD_JOINT_TL] = nJointTL
|
||||
JointTable[JWD_JOINT_TR] = nJointTR
|
||||
AreaTable[JWD_JOINT] = JointTable
|
||||
local nSashType = EgtGetInfo( nAreaId, WIN_SASHTYPE, 'i')
|
||||
if nSashType then
|
||||
AreaTable[JWD_SASH_TYPE] = nSashType
|
||||
end
|
||||
elseif nAreaType == WIN_AREATYPES.FILL then
|
||||
local nFillType = EgtGetInfo( nAreaId, WIN_FILLTYPE, 'i')
|
||||
AreaTable[JWD_FILL_TYPE] = nFillType
|
||||
|
||||
elseif nAreaType == WIN_AREATYPES.SPLIT then
|
||||
|
||||
|
||||
end
|
||||
-- verifico se c'e' Split
|
||||
local nSplitLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_BASESPLIT)
|
||||
if nSplitLayerId then
|
||||
local SplitTable = {}
|
||||
local nSplitId = EgtGetFirstInGroup( nSplitLayerId)
|
||||
local Entity = ConvertCurveToTableEntity( nSplitId)
|
||||
table.insert( SplitTable, Entity)
|
||||
AreaTable[JWD_SPLIT] = SplitTable
|
||||
end
|
||||
-- ciclo sulle aree contenute
|
||||
local nChildAreaId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAASTERISK)
|
||||
local nChildIndex = 1
|
||||
while nChildAreaId do
|
||||
local ChildTable = ConvertAreaToTable( nChildAreaId)
|
||||
local AreaName = JWD_AREA .. nChildIndex
|
||||
AreaTable[AreaName] = ChildTable
|
||||
nChildIndex = nChildIndex + 1
|
||||
nChildAreaId = EgtGetNextName( nChildAreaId, WIN_AREAASTERISK)
|
||||
end
|
||||
return AreaTable
|
||||
end
|
||||
|
||||
-- funzione che converte una curva descritta in tabella in una geometria
|
||||
local function ConvertCurveTableToEntity( nDrawFrameLayerId, CurrCurve)
|
||||
if CurrCurve[JWD_CRV_TYPE] == GDB_TY.CRV_LINE then
|
||||
EgtLine( nDrawFrameLayerId, Point3d(CurrCurve[JWD_POINT_START]), Point3d(CurrCurve[JWD_POINT_END]))
|
||||
elseif CurrCurve[JWD_CRV_TYPE] == GDB_TY.CRV_ARC then
|
||||
EgtArc3P( nDrawFrameLayerId, Point3d(CurrCurve[JWD_POINT_START]), Point3d(CurrCurve[JWD_POINT_MID]), Point3d(CurrCurve[JWD_POINT_END]))
|
||||
elseif CurrCurve[JWD_CRV_TYPE] == GDB_TY.CRV_COMPO then
|
||||
-- local ptStart = EgtSP( nBaseOutlineId)
|
||||
-- local ptEnd = EgtEP( nBaseOutlineId)
|
||||
-- local ptMid = EgtMP( nBaseOutlineId)
|
||||
-- local Entity = { Type = nBaseOutlineType, ptStart = ptStart, ptEnd = ptEnd, ptMid = ptMid}
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione ricorsiva che legge le aree in tabella e crea le geometrie
|
||||
local function ConvertTableToGeometry( AreaTable, nAreaId)
|
||||
if AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.NULL then
|
||||
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.FRAME then
|
||||
-- creo gruppo e layer per contorno
|
||||
local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
for nIndex = 1, #AreaTable[JWD_OUTLINE] do
|
||||
local CurrCurve = AreaTable[JWD_OUTLINE][nIndex]
|
||||
ConvertCurveTableToEntity( nDrawFrameLayerId, CurrCurve)
|
||||
end
|
||||
local nFrameBottomId = EgtGetFirstInGroup(nDrawFrameLayerId)
|
||||
EgtSetName( nFrameBottomId, WIN_BOTTOM)
|
||||
local nFrameRightId = EgtGetNext(nFrameBottomId)
|
||||
EgtSetName( nFrameRightId, WIN_RIGHT)
|
||||
local nFrameTopId = EgtGetNext(nFrameRightId)
|
||||
EgtSetName( nFrameTopId, WIN_TOP)
|
||||
local nFrameLeftId = EgtGetNext(nFrameTopId)
|
||||
EgtSetName( nFrameLeftId, WIN_LEFT)
|
||||
-- creo frame
|
||||
nAreaId = WinCreate.CreateGenFrame( {nFrameBottomId, nFrameRightId, nFrameTopId, nFrameLeftId}, {AreaTable[JWD_JOINT][JWD_JOINT_BL], AreaTable[JWD_JOINT][JWD_JOINT_BR], AreaTable[JWD_JOINT][JWD_JOINT_TR], AreaTable[JWD_JOINT][JWD_JOINT_TL]})
|
||||
-- elimino contorno frame
|
||||
EgtErase( nDrawFramePartId)
|
||||
-- se BottomRail
|
||||
if AreaTable[JWD_BOTTOM_RAIL] and AreaTable[JWD_BOTTOM_RAIL] == 1 then
|
||||
WinCreate.AddBottomRail( nAreaId)
|
||||
end
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.SASH then
|
||||
nAreaId = WinCreate.AddSash( nAreaId, {AreaTable[JWD_JOINT][JWD_JOINT_BL], AreaTable[JWD_JOINT][JWD_JOINT_BR], AreaTable[JWD_JOINT][JWD_JOINT_TR], AreaTable[JWD_JOINT][JWD_JOINT_TL]}, AreaTable[JWD_SASH_TYPE])
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.FILL then
|
||||
WinCreate.AddFill( nAreaId, AreaTable[JWD_FILL_TYPE])
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.SPLIT then
|
||||
|
||||
end
|
||||
-- verifico se c'e' Split
|
||||
if AreaTable[JWD_SPLIT] then
|
||||
-- creo gruppo e layer per Split
|
||||
local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
ConvertCurveTableToEntity( nDrawFrameLayerId, AreaTable[JWD_SPLIT][1])
|
||||
local nArea1Id, nArea2Id = WinCreate.AddGenSplit( nAreaId, EgtGetFirstInGroup(nDrawFrameLayerId), AreaTable["SplitType"])
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddGenSplit( nAreaId, EgtGetFirstInGroup(nDrawFrameLayerId))
|
||||
EgtErase(nDrawFramePartId)
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA .. 1], nArea1Id)
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA .. 2], nArea2Id)
|
||||
else
|
||||
-- ciclo sulle sotto aree
|
||||
local nChildIndex = 1
|
||||
while AreaTable[JWD_AREA ..nChildIndex] do
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA ..nChildIndex], nAreaId)
|
||||
nChildIndex = nChildIndex + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea le tabelle gerarchiche dalla struttura geometrica
|
||||
function WinManageProject.CreateTableFromGeom( nFrameId)
|
||||
-- creo la tabella
|
||||
local WinTable = {}
|
||||
-- riporto la path del profilo
|
||||
local nProfileId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local sProfilePath = EgtGetInfo( nProfileId, WIN_PROFILEPATH)
|
||||
WinTable[JWD_PROFILE_PATH] = sProfilePath
|
||||
-- leggo aree
|
||||
local FrameTable = ConvertAreaToTable( nFrameId)
|
||||
local AreaName = JWD_AREA .. 1
|
||||
WinTable[AreaName] = FrameTable
|
||||
return WinTable
|
||||
end
|
||||
|
||||
-- funzione che crea la struttura geometrica dalle tabelle gerarchiche
|
||||
function WinManageProject.CreateGeomFromTable( WinTable)
|
||||
-- importo profilo
|
||||
if not WinCreate.ImportProfile( WinTable[JWD_PROFILE_PATH]) then
|
||||
return false
|
||||
end
|
||||
-- creo aree
|
||||
ConvertTableToGeometry( WinTable[JWD_AREA .. 1], GDB_ID.ROOT)
|
||||
return true
|
||||
end
|
||||
|
||||
-- funzione che dato un progetto gerarchico lo scrive in json su un file
|
||||
function WinManageProject.WriteToFile( nFrameId, sFilePath)
|
||||
local sFilePath = EgtChangePathExtension( sFilePath, JWD_EXT)
|
||||
local WinTable = WinManageProject.CreateTableFromGeom( nFrameId)
|
||||
local sData = JSON:encode_pretty(WinTable)
|
||||
local DestFh = io.open( sFilePath, 'w+')
|
||||
if not DestFh then
|
||||
EgtOutBox( 'Error opening ' .. sFilePath, 'WriteToFile', 'ERROR')
|
||||
return
|
||||
end
|
||||
DestFh:write( sData)
|
||||
DestFh:close()
|
||||
end
|
||||
|
||||
-- funzione che dato un file in json ne crea il progetto gerarchico
|
||||
function WinManageProject.ReadFromFile( sFilePath)
|
||||
local SouFh = io.open( sFilePath, "rb")
|
||||
if not SouFh then
|
||||
EgtOutBox( 'Error opening ' .. sFilePath, 'ReadFromFile', 'ERROR')
|
||||
return false
|
||||
end
|
||||
local content = SouFh:read( "*all")
|
||||
SouFh:close()
|
||||
local tData = JSON:decode( content)
|
||||
if not WinManageProject.CreateGeomFromTable( tData) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinManageProject
|
||||
@@ -1,114 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
-- EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
local WinManageProject = require( 'WinManageProject')
|
||||
|
||||
-- WDG
|
||||
|
||||
-- funzioni
|
||||
|
||||
local function WinCreate_ImportProfile()
|
||||
WinCreate.ImportProfile(WDG.PROFILE)
|
||||
end
|
||||
_G.WinCreate_ImportProfile = WinCreate_ImportProfile
|
||||
|
||||
local function WinCreate_CreateFrame()
|
||||
WDG.AREAID = WinCreate.CreateFrame( WDG.FRAMETYPE, {WDG.JOINTBL, WDG.JOINTBR, WDG.JOINTTR, WDG.JOINTTL, WDG.JOINTBL}, WDG.WIDTH, WDG.HEIGHT, WDG.HEIGHT2)
|
||||
end
|
||||
_G.WinCreate_CreateFrame = WinCreate_CreateFrame
|
||||
|
||||
local function WinCreate_AddSash()
|
||||
WDG.AREAID = WinCreate.AddSash( WDG.AREAID, {WDG.JOINTBL, WDG.JOINTBR, WDG.JOINTTR, WDG.JOINTTL, WDG.JOINTBL}, WDG.SASHTYPE)
|
||||
end
|
||||
_G.WinCreate_AddSash = WinCreate_AddSash
|
||||
|
||||
local function WinCreate_AddHardware()
|
||||
WinCreate.AddHardware(WDG.AREAID, WDG.FAVOURITE, WDG.HANDLE)
|
||||
end
|
||||
_G.WinCreate_AddHardware = WinCreate_AddHardware
|
||||
|
||||
local function WinCreate_AddFill()
|
||||
WDG.AREAID = WinCreate.AddFill(WDG.AREAID, WDG.FILLTYPE)
|
||||
end
|
||||
_G.WinCreate_AddFill = WinCreate_AddFill
|
||||
|
||||
local function WinCreate_AddBottomRail()
|
||||
WinCreate.AddBottomRail(WDG.AREAID)
|
||||
end
|
||||
_G.WinCreate_AddBottomRail = WinCreate_AddBottomRail
|
||||
|
||||
local function WinCreate_AddSplits()
|
||||
local AreaIndex = 1
|
||||
while WDG['AREAID' .. AreaIndex] do
|
||||
WDG['AREAID' .. AreaIndex] = nil
|
||||
AreaIndex = AreaIndex + 1
|
||||
end
|
||||
local PositionList = {}
|
||||
local PositionIndex = 1
|
||||
while WDG['POSITION' .. PositionIndex] do
|
||||
table.insert( PositionList, WDG['POSITION' .. PositionIndex])
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
local AreaList = WinCreate.AddSplits(WDG.AREAID, WDG.SPLITORIENTATION, WDG.MEASURETYPE, PositionList, WDG.PROPORTION, WDG.SPLITTYPE)
|
||||
for AreaIndex = 1, #AreaList do
|
||||
WDG['AREAID' .. AreaIndex] = AreaList[ AreaIndex]
|
||||
end
|
||||
PositionIndex = 1
|
||||
while WDG['POSITION' .. PositionIndex] do
|
||||
WDG['POSITION' .. PositionIndex] = nil
|
||||
PositionIndex = PositionIndex + 1
|
||||
end
|
||||
end
|
||||
_G.WinCreate_AddSplits = WinCreate_AddSplits
|
||||
|
||||
local function WinCalculate_SetCalcSolid()
|
||||
WinCalculate.SetCalcSolid(WDG.VALUE)
|
||||
end
|
||||
_G.WinCalculate_SetCalcSolid = WinCalculate_SetCalcSolid
|
||||
|
||||
local function WinCalculate_CreatePartFromArea()
|
||||
WinCalculate.CreatePartFromArea(WDG.FRAMEID)
|
||||
end
|
||||
_G.WinCalculate_CreatePartFromArea = WinCalculate_CreatePartFromArea
|
||||
|
||||
local function WinCalculate_AddHardware()
|
||||
WinCalculate.AddHardware(WDG.FRAMEID)
|
||||
end
|
||||
_G.WinCalculate_AddHardware = WinCalculate_AddHardware
|
||||
|
||||
local function WinCreate_GetHardwareOptionPath()
|
||||
WDG.HWDOPTPATH = WinCalculate.AddHardwareForSash(WDG.AREAID, true)
|
||||
end
|
||||
_G.WinCreate_GetHardwareOptionPath = WinCreate_GetHardwareOptionPath
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1,589 +0,0 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
-- EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
local WinManageProject = require( 'WinManageProject')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
local HoleWidth = 1835
|
||||
local HoleHeight = 1516
|
||||
|
||||
local WindowWidth = 1800
|
||||
local WindowHeight = 1500
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtStartCounter()
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- importo profilo prescelto
|
||||
WinCreate.ImportProfile( sProfilePath)
|
||||
|
||||
local sFileName = ''
|
||||
|
||||
-- creo telaio rettangolare
|
||||
sFileName = 'Rect_'
|
||||
local FrameJointType = WIN_JNT.FULL_H
|
||||
local nFrameId = WinCreate.CreateFrame( WindowWidth, WindowHeight, FrameJointType, FrameJointType, FrameJointType, FrameJointType)
|
||||
|
||||
-- -- creo telaio generico
|
||||
-- sFileName = 'RoundArc_'
|
||||
-- local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
-- EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
-- local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
-- local nFrameBottomId = EgtLine( nDrawFrameLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0))
|
||||
-- local nFrameRightId = EgtLine( nDrawFrameLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0))
|
||||
-- local nFrameTopId = EgtArc2PV( nDrawFrameLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0), Vector3d( 0, 1, 0))
|
||||
-- --local nFrameTopId = EgtLine( nDrawFrameLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0))
|
||||
-- local nFrameLeftId = EgtLine( nDrawFrameLayerId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0))
|
||||
-- local FrameJointType = WIN_JNT.FULL_H
|
||||
-- local nFrameId = WinCreate.CreateGenFrame( nFrameBottomId, nFrameRightId, nFrameTopId, nFrameLeftId, FrameJointType, FrameJointType, FrameJointType, FrameJointType)
|
||||
|
||||
------------------------ Finestra vetro fisso ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'FixedGlass'
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFillId = WinCreate.AddFill( nFrameId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'FixedGlass_HorizontalSplit'
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'FixedGlass_VerticalSplit'
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale e verticale ------------------------
|
||||
|
||||
--sFileName = sFileName .. 'FixedGlass_Vertical&HorizontalSplit'
|
||||
--
|
||||
---- aggiungo zoccolo
|
||||
--WinCreate.AddBottomRail( nFrameId)
|
||||
--
|
||||
---- definisco divisioni
|
||||
--local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
--local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
--local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
--
|
||||
---- aggiungo vetri
|
||||
--local nFill1Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
--local nFill2Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
--local nFill3Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
--local nFill4Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFillId = WinCreate.AddFill( nSashId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione orizzontale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash_HorizontalSplit'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash_VerticalSplit'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione orizzontale e verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash_Vertical&HorizontalSplit'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco divisioni
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill3Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill4Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta con montante verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'DoubleVerticalSash_Mullion'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta battente ricevente ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'DoubleVerticalSash_French'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta con montante orizzontale ------------------------
|
||||
|
||||
--sFileName = sFileName .. 'DoubleHorizontalSash_Mullion'
|
||||
--
|
||||
---- definisco prima divisione
|
||||
--local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
--
|
||||
---- aggiungo prima anta
|
||||
--local SashJointType = WIN_JNT.FULL_V
|
||||
--local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
--
|
||||
---- aggiungo vetro
|
||||
--local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo seconda anta
|
||||
--local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
--
|
||||
---- aggiungo vetro
|
||||
--local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montanti verticali ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'TripleVerticalSash_Mullion'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montante verticale e ante battente e ricevente ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'TripleVerticalSash_Mullion&French'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montanti orizzontali ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montante orizzontale e verticale ------------------------
|
||||
|
||||
--sFileName = sFileName .. 'TripleVertical&HorizontalSash_Mullion'
|
||||
--
|
||||
---- definisco prima divisione
|
||||
--local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
--
|
||||
---- definisco seconda divisione
|
||||
--local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
--
|
||||
---- aggiungo prima anta
|
||||
--local SashJointType = WIN_JNT.FULL_V
|
||||
--local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo seconda anta
|
||||
--local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo terza anta
|
||||
--local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra sei ante con montanti verticali e orizzontale ------------------------
|
||||
|
||||
--sFileName = sFileName .. 'SixSash_Horizontal&VerticalSplit_Mullion'
|
||||
--
|
||||
---- definisco divisione orizzontale
|
||||
--local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
--
|
||||
---- definisco divisioni verticali
|
||||
--local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
--local nArea12Id, nArea13Id = WinCreate.AddSplit( nArea12Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
--local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
--local nArea22Id, nArea23Id = WinCreate.AddSplit( nArea22Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
--
|
||||
---- aggiungo prima anta
|
||||
--local SashJointType = WIN_JNT.FULL_V
|
||||
--local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo seconda anta
|
||||
--local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo terza anta
|
||||
--local nSash3Id = WinCreate.AddSash( nArea13Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo quarta anta
|
||||
--local nSash4Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo quinta anta
|
||||
--local nSash5Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
--
|
||||
---- aggiungo sesta anta
|
||||
--local nSash6Id = WinCreate.AddSash( nArea23Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
---- aggiungo vetro
|
||||
--local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra sei ante con montanti verticale e orizzontali ------------------------
|
||||
|
||||
sFileName = sFileName .. 'SixSash_Vertical&HorizontalSplit_Mullion'
|
||||
|
||||
-- definisco divisioni verticali
|
||||
local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- definisco divisione orizzontali
|
||||
local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
local nArea31Id, nArea32Id = WinCreate.AddSplit( nArea3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- aggiungo prima anta
|
||||
local SashJointType = WIN_JNT.FULL_V
|
||||
local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- aggiungo vetro
|
||||
local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- aggiungo seconda anta
|
||||
local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- aggiungo vetro
|
||||
local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- aggiungo terza anta
|
||||
local nSash3Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- aggiungo vetro
|
||||
local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- aggiungo quarta anta
|
||||
local nSash4Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- aggiungo vetro
|
||||
local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- aggiungo quinta anta
|
||||
local nSash5Id = WinCreate.AddSash( nArea31Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- aggiungo vetro
|
||||
local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- aggiungo sesta anta
|
||||
local nSash6Id = WinCreate.AddSash( nArea32Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- aggiungo vetro
|
||||
local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra sei ante con montante verticale e orizzontale ed ante battente ricevente ------------------------
|
||||
|
||||
-- -- definisco divisione orizzontale
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco divisioni verticali
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea12Id, nArea13Id = WinCreate.AddSplit( nArea12Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nArea21Id, nArea23Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea21Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea13Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quarta anta
|
||||
-- local nSash4Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quinta anta
|
||||
-- local nSash5Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo sesta anta
|
||||
-- local nSash6Id = WinCreate.AddSash( nArea23Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tre ante con montante verticale, ante battente ricevente e split di tutte le ante ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- definisco divisione
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nSash1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill11Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill12Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nSash2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill21Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill22Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea31Id, nArea32Id = WinCreate.AddSplit( nSash3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill31Id = WinCreate.AddFill( nArea31Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill32Id = WinCreate.AddFill( nArea32Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tre ante con montante orizzontale e verticale, ante battente ricevente e split di tutte le ante ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea0Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo anta sopra
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash0Id = WinCreate.AddSash( nArea0Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill0Id = WinCreate.AddFill( nSash0Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- definisco divisione
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nSash1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill11Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill12Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nSash2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill21Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill22Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea31Id, nArea32Id = WinCreate.AddSplit( nSash3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill31Id = WinCreate.AddFill( nArea31Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill32Id = WinCreate.AddFill( nArea32Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
-- imposto se calcolare i solidi o meno
|
||||
WinCalculate.SetCalcSolid( true)
|
||||
|
||||
-- creo i pezzi
|
||||
local nFrameId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREAASTERISK)
|
||||
WinCalculate.CreatePartFromArea( nFrameId)
|
||||
|
||||
-- salvo progetto su file
|
||||
local sSaveDirPath = 'c:\\EgtData\\EgwWindowLua\\Projects'
|
||||
local sSaveFilePath = sSaveDirPath .. '\\' .. sFileName
|
||||
WinManageProject.WriteToFile( nFrameId, sSaveFilePath)
|
||||
|
||||
EgtZoom( SCE_ZM.ALL)
|
||||
|
||||
-- riporto tempi di esecuzione
|
||||
local sOut = string.format( ' ExecTime = %.2f ms', EgtStopCounter())
|
||||
EgtOutLog( sOut)
|
||||
@@ -1,66 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
},
|
||||
"SashType": 2
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
},
|
||||
"SashType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 1,
|
||||
"BottomRail": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 1,
|
||||
"BottomRail": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
},
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,162 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1200.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 1200.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 600.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 600.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1200.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1200.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 600.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 600.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,162 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 600.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1200.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 600.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 1200.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1200.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1200.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 600.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 600.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 900.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 900.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 750.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 750.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
{
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
}
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
},
|
||||
"SashType": 2
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"Area2": {
|
||||
"Area1": {
|
||||
"Area1": {
|
||||
"AreaType": 3,
|
||||
"FillType": 1
|
||||
},
|
||||
"AreaType": 2,
|
||||
"Joint": {
|
||||
"JointBL": 3,
|
||||
"JointBR": 3,
|
||||
"JointTL": 3,
|
||||
"JointTR": 3
|
||||
},
|
||||
"SashType": 1
|
||||
},
|
||||
"AreaType": 0
|
||||
},
|
||||
"AreaType": 4,
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1200.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1200.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"AreaType": 1,
|
||||
"Joint": {
|
||||
"JointBL": 2,
|
||||
"JointBR": 2,
|
||||
"JointTL": 2,
|
||||
"JointTR": 2
|
||||
},
|
||||
"Outline": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 1800.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 0.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 1800.0, 1500.0, 0.0 ]
|
||||
}, {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 0.0, 0.0, 0.0 ],
|
||||
"ptStart": [ 0.0, 1500.0, 0.0 ]
|
||||
} ],
|
||||
"Split": [ {
|
||||
"CurveType": 256,
|
||||
"ptEnd": [ 600.0, 1500.0, 0.0 ],
|
||||
"ptStart": [ 600.0, 0.0, 0.0 ]
|
||||
} ]
|
||||
},
|
||||
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user