Razionalizzazione

This commit is contained in:
Dario Sassi
2025-03-11 10:45:08 +01:00
parent d9e44a3b75
commit fb8abd9ef5
96 changed files with 0 additions and 4610 deletions
-271
View File
@@ -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)
-338
View File
@@ -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)
-266
View File
@@ -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)
-337
View File
@@ -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)
-227
View File
@@ -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()
BIN
View File
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.
Binary file not shown.
Binary file not shown.
-625
View File
@@ -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
-958
View File
@@ -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
@@ -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"
}
-34
View File
@@ -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"
}
-42
View File
@@ -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"
}
@@ -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": [ 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"
}
-67
View File
@@ -1,67 +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": 257,
"ptEnd": [ 0.0, 1500.0, 0.0 ],
"ptMid": [ 900.0, 2400.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, 2400.0, 0.0 ],
"ptStart": [ 900.0, 0.0, 0.0 ]
} ]
},
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
}
@@ -1,80 +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": 257,
"ptEnd": [ 0.0, 1500.0, 0.0 ],
"ptMid": [ 900.0, 2400.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, 2400.0, 0.0 ],
"ptStart": [ 900.0, 0.0, 0.0 ]
} ]
},
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
}
-69
View File
@@ -1,69 +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": 257,
"ptEnd": [ 0.0, 1500.0, 0.0 ],
"ptMid": [ 900.0, 2400.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, 2400.0, 0.0 ],
"ptStart": [ 900.0, 0.0, 0.0 ]
} ]
},
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
}
-43
View File
@@ -1,43 +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": 257,
"ptEnd": [ 0.0, 1500.0, 0.0 ],
"ptMid": [ 900.0, 2400.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,88 +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, 2400.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": 257,
"ptEnd": [ 0.0, 1500.0, 0.0 ],
"ptMid": [ 900.0, 2400.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"
}
-91
View File
@@ -1,91 +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": [ 1200.0, 2348.5281374239, 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": 257,
"ptEnd": [ 0.0, 1500.0, 0.0 ],
"ptMid": [ 900.0, 2400.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, 2348.5281374239, 0.0 ],
"ptStart": [ 600.0, 0.0, 0.0 ]
} ]
},
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge"
}
-78
View File
@@ -1,78 +0,0 @@
{
"ProfilePath": "c:\\EgtData\\EgwWindowLua\\Profiles\\Profilo78 - Offset.nge",
"Area1": {
"Area1": {
"Area1": null,
"Area2": null,
"AreaType": 3,
"FillType": 1,
"BottomRail": false,
"Outline": null,
"Joint": null
},
"Area2": null,
"AreaType": 1,
"FillType": 0,
"BottomRail": true,
"Outline": [
{
"CurveType": 256,
"ptStart": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"ptEnd": {
"x": 1800.0,
"y": 0.0,
"z": 0.0
}
},
{
"CurveType": 256,
"ptStart": {
"x": 1800.0,
"y": 0.0,
"z": 0.0
},
"ptEnd": {
"x": 1800.0,
"y": 1500.0,
"z": 0.0
}
},
{
"CurveType": 256,
"ptStart": {
"x": 1800.0,
"y": 1500.0,
"z": 0.0
},
"ptEnd": {
"x": 0.0,
"y": 1500.0,
"z": 0.0
}
},
{
"CurveType": 256,
"ptStart": {
"x": 0.0,
"y": 1500.0,
"z": 0.0
},
"ptEnd": {
"x": 0.0,
"y": 0.0,
"z": 0.0
}
}
],
"Joint": [
2,
2,
2,
2
]
}
}
-34
View File
@@ -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\\Window\\Profiles\\Profilo78 - Offset.nge"
}
Binary file not shown.