Primo commit:
- progettazione serramenti rettangolari , ad arco e di forma generica - gestione vetrifissi, ante, divisioni, montanti, ante battenti e riceventi - costruzione solidi - scrittura e lettura file jwd - inizio creazione test - inizio gestione spine
This commit is contained in:
Vendored
+105
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Lua.diagnostics.globals": [
|
||||
"EgtProtectGlobal",
|
||||
"EgtGetFirstNameInGroup",
|
||||
"EgtGetBBox",
|
||||
"REF",
|
||||
"GDB_BB",
|
||||
"EgtGetName",
|
||||
"EgtSP",
|
||||
"EgtEP",
|
||||
"EgtRectangle2P",
|
||||
"EgtModifyCurveExtrusion",
|
||||
"EgtSetName",
|
||||
"EgtModifyCurveThickness",
|
||||
"Z_AX",
|
||||
"Y_AX",
|
||||
"X_AX",
|
||||
"EgtCopy",
|
||||
"EgtMove",
|
||||
"EgtRotate",
|
||||
"Point3d",
|
||||
"EgtSurfTmByExtrusion",
|
||||
"EgtInvertSurf",
|
||||
"EgtGetBBoxGlob",
|
||||
"EgtSurfTmCut",
|
||||
"EgtErase",
|
||||
"EgtGroup",
|
||||
"GDB_ID",
|
||||
"ORIG",
|
||||
"EgtInvertCurve",
|
||||
"EgtSetInfo",
|
||||
"EgtIf",
|
||||
"EgtGetInfo",
|
||||
"Color3d",
|
||||
"EgtSetColor",
|
||||
"EgtChangeGroupFrame",
|
||||
"Frame3d",
|
||||
"EgtSV",
|
||||
"SphericalFromVector",
|
||||
"EgtGetParent",
|
||||
"EgtLine",
|
||||
"EgtCurveCompo",
|
||||
"EgtGetFirstInGroup",
|
||||
"EgtGetNext",
|
||||
"EgtSurfFlatRegion",
|
||||
"EgtTrimCurveWithRegion",
|
||||
"EgtCurveCompoFromPoints",
|
||||
"EgtAddCurveCompoLine",
|
||||
"EgtCurveLength",
|
||||
"GetAngle",
|
||||
"GLOB_FRM",
|
||||
"GDB_RT",
|
||||
"EgtGetAllInGroup",
|
||||
"EgtFR",
|
||||
"EgtTransform",
|
||||
"EgtOffsetCurve",
|
||||
"EgtIP",
|
||||
"EgtCurveParamAtPoint",
|
||||
"EgtTrimCurveStartAtParam",
|
||||
"EgtTrimCurveEndAtParam",
|
||||
"EgtCurveCompoByChain",
|
||||
"EgtExtendCurveStartByLen",
|
||||
"EgtExtendCurveEndByLen",
|
||||
"EgtSurfTmSwept",
|
||||
"abs",
|
||||
"EgtEV",
|
||||
"EgtLinePVL",
|
||||
"AreSamePointExact",
|
||||
"EgtGetBBoxRef",
|
||||
"EgtEmptyGroup",
|
||||
"EgtRemoveInfo",
|
||||
"EgtSetAlpha",
|
||||
"EgtSurfTmByRegionExtrusion",
|
||||
"EgtRelocateGlob",
|
||||
"EgtGetPrev",
|
||||
"EgtGetLastInGroup",
|
||||
"EgtRemoveName",
|
||||
"AreSameVectorExact",
|
||||
"AreSameVectorApprox",
|
||||
"AreSamePointApprox",
|
||||
"min",
|
||||
"max",
|
||||
"EgtTrimCurveStartEndAtParam",
|
||||
"EgtGetNextName",
|
||||
"EgtMP",
|
||||
"EgtPointCurveDist",
|
||||
"EgtGetType",
|
||||
"GDB_TY",
|
||||
"EgtArc3P",
|
||||
"EgtInsertFile",
|
||||
"EgtSetStatus",
|
||||
"GDB_ST",
|
||||
"EgtOutBox",
|
||||
"EgtChangePathExtension",
|
||||
"EgtPointCurveDistSide",
|
||||
"EgtMV",
|
||||
"EgtUV",
|
||||
"EgtCopyGlob",
|
||||
"EgtCP",
|
||||
"Vector3d"
|
||||
],
|
||||
"Lua.diagnostics.disable": [
|
||||
"empty-block"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
--
|
||||
-- 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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,338 @@
|
||||
--
|
||||
-- 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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
--
|
||||
-- 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)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,337 @@
|
||||
--
|
||||
-- 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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
--
|
||||
-- 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()
|
||||
@@ -0,0 +1,644 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG WW WW WW
|
||||
-- EEEEEEEEEE GGGGGGGGGG WW WW WW
|
||||
-- EEEE GGGG GGGG WW WW WW
|
||||
-- EEEE GGGG WWW WWWW WWW
|
||||
-- EEEEEEE GGGG GGGGGGG WW WWWW WW
|
||||
-- EEEEEEE GGGG GGGGGGG WWW WWWW WWW
|
||||
-- EEEE GGGG GGGG WWWW WWWW
|
||||
-- EEEE GGGG GGGG WWWW WWWW
|
||||
-- EEEEEEEEEE GGGGGGGGGG WWW WWW
|
||||
-- EEEEEEEEEE GGGGGG WW WW
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
-- EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
local WinManageProject = require( 'WinManageProject')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
local HoleWidth = 1835
|
||||
local HoleHeight = 1516
|
||||
|
||||
local WindowWidth = 1800
|
||||
local WindowHeight = 1500
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtStartCounter()
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- importo profilo prescelto
|
||||
WinCreate.ImportProfile( sProfilePath)
|
||||
|
||||
-- creo telaio rettangolare
|
||||
local FrameJointType = WIN_JNT.FULL_H
|
||||
local nFrameId = WinCreate.CreateFrame( WindowWidth, WindowHeight, FrameJointType, FrameJointType, FrameJointType, FrameJointType)
|
||||
|
||||
-- -- creo telaio generico
|
||||
-- local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
-- EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
-- local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
-- local nFrameBottomId = EgtLine( nDrawFrameLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0))
|
||||
-- local nFrameRightId = EgtLine( nDrawFrameLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0))
|
||||
-- local nFrameTopId = EgtArc2PV( nDrawFrameLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0), Vector3d( 0, 1, 0))
|
||||
-- --local nFrameTopId = EgtLine( nDrawFrameLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0))
|
||||
-- local nFrameLeftId = EgtLine( nDrawFrameLayerId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0))
|
||||
-- local FrameJointType = WIN_JNT.ANGLED
|
||||
-- local nFrameId = WinCreate.CreateGenFrame( nFrameBottomId, nFrameRightId, nFrameTopId, nFrameLeftId, FrameJointType, FrameJointType, FrameJointType, FrameJointType)
|
||||
|
||||
------------------------ Finestra vetro fisso ------------------------
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFillId = WinCreate.AddFill( nFrameId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale ------------------------
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione verticale ------------------------
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale e verticale ------------------------
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco divisioni
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill3Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill4Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- ------------------------ Finestra anta singola ------------------------
|
||||
|
||||
-- aggiungo anta
|
||||
local SashJointType = WIN_JNT.FULL_V
|
||||
local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- aggiungo vetro
|
||||
local nFillId = WinCreate.AddFill( nSashId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione orizzontale ------------------------
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione verticale ------------------------
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione orizzontale e verticale ------------------------
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco divisioni
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill3Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill4Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione custom ------------------------
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- local nTempSplitLayerId = EgtGroup( nFrameId)
|
||||
-- EgtSetName( nTempSplitLayerId, WIN_TEMPSPLIT)
|
||||
|
||||
-- -- creo decoro
|
||||
-- local nRectangleId = EgtRectangle2P( nTempSplitLayerId, Point3d( WindowWidth / 3, WindowHeight / 3, 0), Point3d( WindowWidth * 2 / 3, WindowHeight * 2 / 3, 0))
|
||||
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddGenSplit( nSashId, nRectangleId)
|
||||
|
||||
-- EgtErase( nTempSplitLayerId)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta con montante verticale ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta battente ricevente ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta con montante orizzontale ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montanti verticali ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montante verticale e ante battente e ricevente ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montanti orizzontali ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
---------------------- Finestra tripla anta con montante orizzontale e verticale ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
|
||||
------------------------ Finestra sei ante con montanti verticali e orizzontale ------------------------
|
||||
|
||||
-- -- definisco divisione orizzontale
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco divisioni verticali
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea12Id, nArea13Id = WinCreate.AddSplit( nArea12Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea23Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea21Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea13Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quarta anta
|
||||
-- local nSash4Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quinta anta
|
||||
-- local nSash5Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo sesta anta
|
||||
-- local nSash6Id = WinCreate.AddSash( nArea23Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra sei ante con montante verticale e orizzontale ed ante battente ricevente ------------------------
|
||||
|
||||
-- -- definisco divisione orizzontale
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco divisioni verticali
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea12Id, nArea13Id = WinCreate.AddSplit( nArea12Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nArea21Id, nArea23Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea21Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea13Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quarta anta
|
||||
-- local nSash4Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quinta anta
|
||||
-- local nSash5Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo sesta anta
|
||||
-- local nSash6Id = WinCreate.AddSash( nArea23Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tre ante con montante verticale, ante battente ricevente e split di tutte le ante ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- definisco divisione
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nSash1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill11Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill12Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nSash2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill21Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill22Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea31Id, nArea32Id = WinCreate.AddSplit( nSash3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill31Id = WinCreate.AddFill( nArea31Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill32Id = WinCreate.AddFill( nArea32Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tre ante con montante orizzontale e verticale, ante battente ricevente e split di tutte le ante ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea0Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo anta sopra
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash0Id = WinCreate.AddSash( nArea0Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill0Id = WinCreate.AddFill( nSash0Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- definisco divisione
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nSash1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill11Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill12Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nSash2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill21Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill22Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea31Id, nArea32Id = WinCreate.AddSplit( nSash3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill31Id = WinCreate.AddFill( nArea31Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill32Id = WinCreate.AddFill( nArea32Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
|
||||
-- -- 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)
|
||||
|
||||
-- imposto se calcolare i solidi o meno
|
||||
WinCalculate.SetCalcSolid( true)
|
||||
|
||||
-- -- creo i pezzi
|
||||
WinCalculate.CreatePartFromArea( nFrameId)
|
||||
|
||||
|
||||
-- -- creo tabella per salvataggio
|
||||
-- local sSaveFilePath = 'c:\\Temp\\WindowTest1.txt'
|
||||
-- local WinTable = WinManageProject.WriteToFile( nFrameId, sSaveFilePath)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- assemblo i pezzi
|
||||
--WinLib.AssembleFrame()
|
||||
|
||||
EgtZoom( SCE_ZM.ALL)
|
||||
|
||||
-- riporto tempi di esecuzione
|
||||
local sOut = string.format( ' ExecTime = %.2f ms', EgtStopCounter())
|
||||
EgtOutLog( sOut)
|
||||
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.
@@ -0,0 +1,211 @@
|
||||
--
|
||||
-- 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 WinConst = {}
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
|
||||
-- Tipi di giunzioni (joint)
|
||||
WIN_JNT = {
|
||||
ANGLED = 1,
|
||||
FULL_H = 2,
|
||||
FULL_V = 3,
|
||||
}
|
||||
|
||||
-- tipo di giunzione pezzo
|
||||
WIN_PART_JNT = {
|
||||
ANGLED = 1,
|
||||
FULL = 2,
|
||||
SHORT = 3,
|
||||
}
|
||||
|
||||
-- Tipi di profilo
|
||||
WIN_PRF = {
|
||||
NULL = 0,
|
||||
TOP = 1,
|
||||
BOTTOM = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
VERTICAL = 5,
|
||||
HORIZONTAL = 6,
|
||||
SPLIT = 7,
|
||||
BOTTOMRAIL = 8,
|
||||
}
|
||||
|
||||
-- Tipi di split
|
||||
WIN_SPLITORIENTATION = {
|
||||
VERTICAL = 1,
|
||||
HORIZONTAL = 2,
|
||||
}
|
||||
|
||||
-- Tipi di misure
|
||||
WIN_MEASURE = {
|
||||
ABSOLUT = 1,
|
||||
PROPORTIONAL = 2,
|
||||
}
|
||||
|
||||
-- tipo di Area
|
||||
WIN_AREATYPES = {
|
||||
NULL = 0,
|
||||
FRAME = 1,
|
||||
SASH = 2,
|
||||
FILL = 3,
|
||||
SPLIT = 4,
|
||||
}
|
||||
|
||||
-- tipo di split:
|
||||
-- mullion = montante
|
||||
-- french = battente / ricevente
|
||||
WIN_SPLITTYPES = {
|
||||
NULL = 0,
|
||||
MULLION = 1,
|
||||
FRENCH = 2,
|
||||
}
|
||||
|
||||
-- tipi di riempimento interno
|
||||
WIN_FILLTYPES = {
|
||||
NULL = 0,
|
||||
GLASS = 1,
|
||||
WOOD = 2,
|
||||
}
|
||||
|
||||
-- tipi di sash battente e ricevente
|
||||
WIN_SASHTYPES = {
|
||||
NULL = 0,
|
||||
ACTIVE = 1,
|
||||
INACTIVE = 2,
|
||||
}
|
||||
|
||||
WIN_SURF_APPROX = 0.05
|
||||
|
||||
WIN_PROFILE = 'Profile'
|
||||
WIN_PROFILEPATH = 'ProfilePath'
|
||||
|
||||
WIN_FRAME = 'Frame'
|
||||
WIN_AREAOUTLINE = 'BaseOutline'
|
||||
WIN_OUTLINE = 'Outline'
|
||||
WIN_ORIGOUTLINE = 'OrigOutline'
|
||||
WIN_GEO = 'Geo'
|
||||
WIN_SOLID = 'Solid'
|
||||
WIN_BOTTOM = 'Bottom'
|
||||
WIN_RIGHT = 'Right'
|
||||
WIN_TOP = 'Top'
|
||||
WIN_LEFT = 'Left'
|
||||
WIN_HORIZONTAL = 'Horizontal'
|
||||
WIN_VERTICAL = 'Vertical'
|
||||
WIN_BASESPLIT = 'BaseSplit'
|
||||
WIN_TEMPSPLIT = 'TempSplit'
|
||||
WIN_SPLIT = 'Split'
|
||||
WIN_AREA = 'Area'
|
||||
WIN_AREAASTERISK = 'Area*'
|
||||
WIN_AREA1 = 'Area1'
|
||||
WIN_AREA2 = 'Area2'
|
||||
WIN_AREATYPE = 'AreaType'
|
||||
WIN_SASH = 'Sash'
|
||||
WIN_FILL = 'Fill'
|
||||
WIN_FILLTYPE = 'FillType'
|
||||
WIN_SIDE = 'Side'
|
||||
WIN_SPLITTYPE = 'SplitType'
|
||||
WIN_STARTJOINT = 'StartJoint'
|
||||
WIN_ENDJOINT = 'EndJoint'
|
||||
WIN_SASHTYPE = 'SashType'
|
||||
WIN_REF_OUTLINE = 'OutlineRef'
|
||||
WIN_REF_PART = 'PartRef'
|
||||
|
||||
WIN_SASH_TOP = 'Sash_Top'
|
||||
WIN_SASH_BOTTOM = 'Sash_Bottom'
|
||||
WIN_SASH_VERTICAL = 'Sash_Vertical'
|
||||
WIN_SASH_HORIZONTAL = 'Sash_Horizontal'
|
||||
WIN_RAIL_BOTTOM = 'Rail_Bottom'
|
||||
WIN_FRAME_TOP = 'Frame_Top'
|
||||
WIN_FRAME_BOTTOM = 'Frame_Bottom'
|
||||
WIN_FIXED_TOP = 'Fixed_Top'
|
||||
WIN_FIXED_BOTTOM = 'Fixed_Bottom'
|
||||
WIN_SASH_ACTIVE = 'Sash_Active'
|
||||
WIN_SASH_INACTIVE = 'Sash_Inactive'
|
||||
WIN_SASH_SPLIT = 'Sash_Split'
|
||||
WIN_FRAME_SPLIT = 'Frame_Split'
|
||||
|
||||
WIN_REF = 'Ref'
|
||||
WIN_SECTION = 'Section'
|
||||
WIN_STRIP = 'Strip'
|
||||
WIN_ALU = 'Alu'
|
||||
WIN_CTRIN = 'CtrIn'
|
||||
WIN_OUT = 'Out'
|
||||
WIN_OUTOFST = 'OfstOut'
|
||||
WIN_CTRINOFST = 'OfstCtrIn'
|
||||
WIN_OFST = 'Ofst'
|
||||
WIN_SECTIONFRAME = 'SectionFrame'
|
||||
|
||||
WIN_MINIZINKEN = 'MiniZinken'
|
||||
|
||||
WIN_STARTCPDELTA = 'StartCPDelta'
|
||||
WIN_ENDCPDELTA = 'EndCPDelta'
|
||||
WIN_GEOWIDTH = 'GeoWidth'
|
||||
WIN_GLASSTHICKNESS = 'GlassThickness'
|
||||
|
||||
WIN_GEOOUTLINEBOTTOM = 'GeoOutlineBottom'
|
||||
|
||||
WIN_JOINT_BL = 'JointBL'
|
||||
WIN_JOINT_BR = 'JointBR'
|
||||
WIN_JOINT_BDIV = 'JointBDiv'
|
||||
WIN_JOINT_TL = 'JointTL'
|
||||
WIN_JOINT_TR = 'JointTR'
|
||||
WIN_JOINT_TDIV = 'JointTDiv'
|
||||
|
||||
|
||||
WIN_GEO_IN = 'In'
|
||||
WIN_GEO_OUT = 'Out'
|
||||
WIN_GEO_LEFT = 'Left'
|
||||
WIN_GEO_RIGHT = 'Right'
|
||||
|
||||
WIN_PRF_MAIN = 'Main'
|
||||
WIN_PRF_START = 'Start'
|
||||
WIN_PRF_END = 'End'
|
||||
|
||||
WIN_PROFILETYPE = 'ProfileType'
|
||||
WIN_SEPARATIONTYPE = 'SeparationType'
|
||||
|
||||
WIN_SPLIT_STARTINTERS = 'SplitStartInters'
|
||||
WIN_SPLIT_ENDINTERS = 'SplitEndInters'
|
||||
|
||||
WIN_SOU = 'SOU'
|
||||
WIN_CHILD = 'CHILD'
|
||||
WIN_COPY = 'COPY'
|
||||
|
||||
WIN_OVERLAP = 'Overlap'
|
||||
WIN_DELTA = 'Delta'
|
||||
WIN_FILLOVERLAP = 'FillOverlap'
|
||||
WIN_FILLDELTA = 'FillDelta'
|
||||
|
||||
WIN_MAINGUIDE = 'MainGuide'
|
||||
WIN_STARTGUIDE = 'StartGuide'
|
||||
WIN_ENDGUIDE = 'EndGuide'
|
||||
|
||||
WIN_BOTTOMRAIL = 'BottomRail'
|
||||
|
||||
WIN_DOWEL = 'Dowel'
|
||||
WIN_DWL_TOPPERPSTART = 'TopPerpStart'
|
||||
WIN_DWL_TOPPERPEND = 'TopPerpEnd'
|
||||
WIN_DWL_TOPPARASTART = 'TopParaStart'
|
||||
WIN_DWL_TOPPARAEND = 'TopParaEnd'
|
||||
WIN_DWL_BOTTOMPERPSTART = 'BottomPerpStart'
|
||||
WIN_DWL_BOTTOMPERPEND = 'BottomPerpEnd'
|
||||
WIN_DWL_BOTTOMPARASTART = 'BottomParaStart'
|
||||
WIN_DWL_BOTTOMPARAEND = 'BottomParaEnd'
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinConst
|
||||
@@ -0,0 +1,54 @@
|
||||
--
|
||||
-- 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 WinJWDConst = {}
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
|
||||
|
||||
-- tipi di sash battente e ricevente
|
||||
-- WIN_SASHTYPES = {
|
||||
-- NULL = 0,
|
||||
-- ACTIVE = 1,
|
||||
-- INACTIVE = 2,
|
||||
-- }
|
||||
|
||||
JWD_EXT = '.jwd'
|
||||
|
||||
JWD_PROFILE_PATH = 'ProfilePath'
|
||||
|
||||
JWD_AREA = 'Area'
|
||||
JWD_AREA_TYPE = 'AreaType'
|
||||
|
||||
JWD_JOINT_BL = 'JointBL'
|
||||
JWD_JOINT_BR = 'JointBR'
|
||||
JWD_JOINT_TL = 'JointTL'
|
||||
JWD_JOINT_TR = 'JointTR'
|
||||
|
||||
JWD_OUTLINE = 'Outline'
|
||||
JWD_JOINT = 'Joint'
|
||||
JWD_SPLIT = 'Split'
|
||||
JWD_CRV_TYPE = 'CurveType'
|
||||
JWD_POINT_START = 'ptStart'
|
||||
JWD_POINT_END = 'ptEnd'
|
||||
JWD_POINT_MID = 'ptMid'
|
||||
JWD_BOTTOM_RAIL = 'BottomRail'
|
||||
|
||||
JWD_SASH_TYPE = 'SashType'
|
||||
JWD_FILL_TYPE = 'FillType'
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinJWDConst
|
||||
@@ -0,0 +1,625 @@
|
||||
--
|
||||
-- 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
|
||||
@@ -0,0 +1,958 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinLib = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che crea il buco per la finestra
|
||||
function WinLib.CreateHole( dWidth, dHeight)
|
||||
-- creo gruppo per buco
|
||||
local nAreaLayerId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nAreaLayerId, WIN_FRAME)
|
||||
local nAreaOutlineLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
-- disegno outline
|
||||
local nHoleBottomId = EgtLine( nAreaOutlineLayerId, Point3d( 0, 0, 0), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nHoleBottomId, WIN_BOTTOM)
|
||||
local nHoleRightId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, 0, 0), Point3d( dWidth, dHeight, 0))
|
||||
EgtSetName( nHoleRightId, WIN_RIGHT)
|
||||
local nHoleTopId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, dHeight, 0), Point3d( 0, dHeight, 0))
|
||||
EgtSetName( nHoleTopId, WIN_TOP)
|
||||
local nHoleLeftId = EgtLine( nAreaOutlineLayerId, Point3d( 0, dHeight, 0), Point3d( 0, 0, 0))
|
||||
EgtSetName( nHoleLeftId, WIN_LEFT)
|
||||
return nAreaLayerId
|
||||
end
|
||||
|
||||
-- funzione che crea il telaio a partire dal buco
|
||||
function WinLib.CreateFrameOnHole( nHoleLayerId, dWidth, dHeight)
|
||||
local nAreaOutlineLayerId = EgtGroup( nHoleLayerId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_OUTLINE)
|
||||
-- disegno outline
|
||||
local nHoleBottomId = EgtLine( nAreaOutlineLayerId, Point3d( 0, 0, 0), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nHoleBottomId, WIN_BOTTOM)
|
||||
local nHoleRightId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, 0, 0), Point3d( dWidth, dHeight, 0))
|
||||
EgtSetName( nHoleRightId, WIN_RIGHT)
|
||||
local nHoleTopId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, dHeight, 0), Point3d( 0, dHeight, 0))
|
||||
EgtSetName( nHoleTopId, WIN_TOP)
|
||||
local nHoleLeftId = EgtLine( nAreaOutlineLayerId, Point3d( 0, dHeight, 0), Point3d( 0, 0, 0))
|
||||
EgtSetName( nHoleLeftId, WIN_LEFT)
|
||||
end
|
||||
|
||||
-- funzione che crea il telaio a partire dal buco
|
||||
function WinLib.CreateFrameAsHole( nAreaLayerId, JointType)
|
||||
-- creo layer outline del frame
|
||||
local nOutlineLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nOutlineLayerId, WIN_OUTLINE)
|
||||
-- recupero outline del buco
|
||||
local nAreaOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
-- lo copio
|
||||
local nHoleOutlineId = EgtGetFirstInGroup( nAreaOutlineLayerId)
|
||||
while nHoleOutlineId do
|
||||
local nOutlineId = EgtCopy( nHoleOutlineId, nOutlineLayerId)
|
||||
-- da modificare!!!
|
||||
-- funzione che assegna i profili serramento ai vari outline
|
||||
local sName = EgtGetName( nHoleOutlineId)
|
||||
if sName == WIN_BOTTOM then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_BOTTOM)
|
||||
elseif sName == WIN_RIGHT then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
elseif sName == WIN_TOP then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
elseif sName == WIN_LEFT then
|
||||
EgtSetInfo( nOutlineId, WIN_PROFILETYPE, WIN_SASH_TOP)
|
||||
end
|
||||
nHoleOutlineId = EgtGetNext( nHoleOutlineId)
|
||||
end
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_BL, JointType)
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_BR, JointType)
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_TL, JointType)
|
||||
EgtSetInfo( nOutlineLayerId, WIN_JOINT_TR, JointType)
|
||||
end
|
||||
|
||||
-- funzione che aggiunge una anta
|
||||
function WinLib.AddSash( nAreaId)
|
||||
-- creo nuova area
|
||||
local nSashAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nSashAreaId, WIN_SASH)
|
||||
EgtSetInfo( nSashAreaId, WIN_AREATYPE, WIN_AREATYPES.SASH)
|
||||
-- recupero outline area precedente
|
||||
local nPrevAreaOutlineId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
-- lo copio per outline area dell'anta
|
||||
local nAreaOutlineId = EgtCopy( nPrevAreaOutlineId, nSashAreaId)
|
||||
return nSashAreaId
|
||||
end
|
||||
|
||||
-- funzione che aggiunge un riempimento
|
||||
function WinLib.AddFill( nAreaId, FillType)
|
||||
-- creo nuova area
|
||||
local nFillAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nFillAreaId, WIN_FILL)
|
||||
EgtSetInfo( nFillAreaId, WIN_AREATYPE, WIN_AREATYPES.FILL)
|
||||
-- recupero outline area precedente
|
||||
local nPrevAreaOutlineId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
-- lo copio per outline area dell'anta
|
||||
local nAreaOutlineId = EgtCopy( nPrevAreaOutlineId, nFillAreaId)
|
||||
-- imposto tipo di fill
|
||||
EgtSetInfo( nFillAreaId, WIN_FILLTYPE, FillType)
|
||||
return nFillAreaId
|
||||
end
|
||||
|
||||
-- funzione che restituisce un outline dato un pezzo
|
||||
function WinLib.GetOutlineFromPart( nPartId)
|
||||
local nAreaId = EgtGetInfo( nPartId, WIN_AREA)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_OUTLINE)
|
||||
local sName = EgtGetName( nPartId)
|
||||
return EgtGetFirstNameInGroup( nOutlineLayerId, sName)
|
||||
end
|
||||
|
||||
-- funzione che crea un taglio split
|
||||
function WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nProportion)
|
||||
-- creo layer per split
|
||||
local nSplitLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nSplitLayerId, WIN_SPLIT)
|
||||
-- recupero contorno area precedente
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
local OutlineIds = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
table.insert( OutlineIds, nOutlineId)
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
local nSplitId
|
||||
if SplitType == WIN_SPLITTYPE.VERTICAL then
|
||||
-- creo linea
|
||||
local nCalcPosition = 0
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
nCalcPosition = nPosition
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
nCalcPosition = b3OutlineLayer:getDimX() / nProportion * nPosition
|
||||
end
|
||||
local nTotSplitId = EgtLine( nSplitLayerId, Point3d( nCalcPosition, 0, 0), Point3d( nCalcPosition, b3OutlineLayer:getDimY(), 0))
|
||||
-- la taglio con i contorni
|
||||
local nCompoOutlineId = EgtCurveCompo( nSplitLayerId, OutlineIds, false)
|
||||
local nFROutlineId = EgtSurfFlatRegion( nSplitLayerId, nCompoOutlineId)
|
||||
nSplitId = EgtTrimCurveWithRegion( nTotSplitId, nFROutlineId, true, false)
|
||||
EgtSetName( nSplitId, WIN_VERTICAL)
|
||||
EgtErase( { nCompoOutlineId, nFROutlineId})
|
||||
EgtSetInfo( nSplitId, WIN_PROFILETYPE, WIN_SASH_VERTICAL)
|
||||
elseif SplitType == WIN_SPLITTYPE.HORIZONTAL then
|
||||
-- creo linea
|
||||
local nCalcPosition = 0
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
nCalcPosition = nPosition
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
nCalcPosition = b3OutlineLayer:getDimY() / nProportion * nPosition
|
||||
end
|
||||
local nTotSplitId = EgtLine( nSplitLayerId, Point3d( 0, nCalcPosition, 0), Point3d( b3OutlineLayer:getDimX(), nCalcPosition, 0))
|
||||
-- la taglio con i contorni
|
||||
local nCompoOutlineId = EgtCurveCompo( nSplitLayerId, OutlineIds, false)
|
||||
local nFROutlineId = EgtSurfFlatRegion( nSplitLayerId, nCompoOutlineId)
|
||||
nSplitId = EgtTrimCurveWithRegion( nTotSplitId, nFROutlineId, true, false)
|
||||
EgtSetName( nSplitId, WIN_HORIZONTAL)
|
||||
EgtErase( { nCompoOutlineId, nFROutlineId})
|
||||
EgtSetInfo( nSplitId, WIN_PROFILETYPE, WIN_SASH_HORIZONTAL)
|
||||
end
|
||||
-- creo aree
|
||||
WinLib.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
end
|
||||
|
||||
-- funzione che crea tagli split multipli
|
||||
function WinLib.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList, nProportion)
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
for nIndex = 1, #PositionList do
|
||||
WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, PositionList[nIndex], nProportion)
|
||||
end
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
for nIndex = 1, #PositionList do
|
||||
WinLib.AddSplit( nAreaLayerId, SplitType, MeasureType, PositionList[nIndex], nProportion)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea un taglio split da una curva generica
|
||||
function WinLib.AddGenSplit( nAreaLayerId, nSplitId)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
-- allungo curva split per cercare intersezioni
|
||||
EgtExtendCurveStartByLen( nSplitId, 10)
|
||||
EgtExtendCurveEndByLen( nSplitId, 10)
|
||||
-- recupero lista intersezioni
|
||||
local OutlineInters = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
-- verifico se ci siano intersezioni con questo outline
|
||||
local ptInters = EgtIP( nSplitId, nOutlineId, EgtSP( nSplitId))
|
||||
if ptInters then
|
||||
table.insert( OutlineInters, { Id = nOutlineId, IntersPoint = ptInters})
|
||||
end
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
local ptStartSplit = EgtSP( nSplitId)
|
||||
local ptEndSplit = EgtEP( nSplitId)
|
||||
local StartInters
|
||||
local EndInters
|
||||
for nIndex = 1, #OutlineInters do
|
||||
local CurrOutInters = OutlineInters[nIndex]
|
||||
CurrOutInters.StartDistance = (CurrOutInters.IntersPoint - ptStartSplit):sqlen()
|
||||
CurrOutInters.EndDistance = (CurrOutInters.IntersPoint - ptEndSplit):sqlen()
|
||||
if not StartInters or CurrOutInters.StartDistance < StartInters.StartDistance then
|
||||
StartInters = CurrOutInters
|
||||
end
|
||||
if not EndInters or CurrOutInters.EndDistance < EndInters.EndDistance then
|
||||
EndInters = CurrOutInters
|
||||
end
|
||||
end
|
||||
-- accorcio la curva split su intersezione outline
|
||||
local dStartSplitInters = EgtCurveParamAtPoint( nSplitId, StartInters.IntersPoint)
|
||||
EgtTrimCurveStartAtParam( nSplitId, dStartSplitInters)
|
||||
local dEndSplitInters = EgtCurveParamAtPoint( nSplitId, EndInters.IntersPoint)
|
||||
EgtTrimCurveEndAtParam( nSplitId, dEndSplitInters)
|
||||
EgtSetInfo( nSplitId, WIN_SPLIT_STARTINTERS, StartInters.Id)
|
||||
EgtSetInfo( nSplitId, WIN_SPLIT_ENDINTERS, EndInters.Id)
|
||||
-- assegno nome e tipo profilo
|
||||
EgtSetName( nSplitId, WIN_SPLIT)
|
||||
EgtSetInfo( nSplitId, WIN_PROFILETYPE, WIN_SASH_HORIZONTAL)
|
||||
-- creo aree
|
||||
WinLib.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
end
|
||||
|
||||
-- funzione che crea tagli split da curve generiche
|
||||
function WinLib.AddGenSplits( nAreaLayerId, SplitList)
|
||||
for nIndex = 1, #SplitList do
|
||||
WinLib.AddSplit( nAreaLayerId, SplitList[nIndex])
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea le aree da un taglio split
|
||||
function WinLib.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
-- creo layer per le due aree
|
||||
local nArea1Id = EgtGroup( nAreaLayerId)
|
||||
local nArea2Id = EgtGroup( nAreaLayerId)
|
||||
EgtSetInfo( nArea1Id, 'SOU', nSplitId)
|
||||
EgtSetName( nArea1Id , 'Area' .. 1)
|
||||
local nArea1OutlineLayerId = EgtGroup( nArea1Id)
|
||||
EgtSetName( nArea1OutlineLayerId , WIN_AREAOUTLINE)
|
||||
EgtSetInfo( nArea2Id, 'SOU', nSplitId)
|
||||
EgtSetName( nArea2Id , 'Area' .. 2)
|
||||
local nArea2OutlineLayerId = EgtGroup( nArea2Id)
|
||||
EgtSetName( nArea2OutlineLayerId , WIN_AREAOUTLINE)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
--local Outlines = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
local nInters = 0
|
||||
while nOutlineId and nInters ~= 3 do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
-- calcolo intersezioni con questo outline
|
||||
local ptInters = EgtIP( nSplitId, nOutlineId, EgtSP( nSplitId))
|
||||
if ptInters then
|
||||
if nInters == 0 then
|
||||
-- trovato primo punto di intersezione - inizio area 2
|
||||
nInters = 1
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
local dStartIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveStartAtParam( nCopyId, dStartIntersParam)
|
||||
elseif nInters == 1 then
|
||||
-- trovato secondo punto di intersezione - fine area 2
|
||||
nInters = 2
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
local dEndIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveEndAtParam( nCopyId, dEndIntersParam)
|
||||
-- copio anche split
|
||||
local nSplitCopyId = EgtCopy( nSplitId, nArea2OutlineLayerId)
|
||||
if not AreSamePointExact( EgtEP( nCopyId), EgtSP( nSplitCopyId)) then
|
||||
EgtInvertCurve( nSplitCopyId)
|
||||
end
|
||||
-- inizio area 1
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
local dStartIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveStartAtParam( nCopyId, dStartIntersParam)
|
||||
elseif nInters == 2 then
|
||||
-- trovato secondo punto di intersezione - fine area 1
|
||||
nInters = 3
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
local dEndIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveEndAtParam( nCopyId, dEndIntersParam)
|
||||
-- copio anche split
|
||||
local nSplitCopyId = EgtCopy( nSplitId, nArea1OutlineLayerId)
|
||||
if not AreSamePointExact( EgtEP( nCopyId), EgtSP( nSplitCopyId)) then
|
||||
EgtInvertCurve( nSplitCopyId)
|
||||
end
|
||||
end
|
||||
elseif nInters == 1 then
|
||||
-- copio nel profilo 2
|
||||
EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
elseif nInters == 2 then
|
||||
-- copio nel profilo 1
|
||||
EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
end
|
||||
-- aggiorno indice
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
-- se arrivato alla fine riparto
|
||||
if not nOutlineId then
|
||||
nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che restituisce BBox del Ref del profilo
|
||||
function WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileRefId = EgtGetFirstNameInGroup( nProfileId, WIN_REF)
|
||||
local b3Ref = EgtGetBBox( nProfileRefId, GDB_BB.STANDARD)
|
||||
return nProfileId, b3Ref, nProfileRefId
|
||||
end
|
||||
|
||||
-- funzione che restituisce ref e calcola delta controprofilo dal profilo passatogli
|
||||
function WinLib.GetDeltaProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nProfileId, b3Ref, nProfileRefId = WinLib.GetRefWithBBoxFromProfile( nProfileFrameLayerId, sProfileType)
|
||||
local nCPId = EgtGetFirstNameInGroup( nProfileId, WIN_CTRIN)
|
||||
local b3CP = EgtGetBBox( nCPId, GDB_BB.STANDARD)
|
||||
local dCPDelta = b3Ref:getDimY() - b3CP:getDimY()
|
||||
return dCPDelta, b3Ref, nProfileId, nProfileRefId
|
||||
end
|
||||
|
||||
-- funzione che crea le curve del geo
|
||||
function WinLib.CreateFrameGeo( nOutlineId, nPrevOutlineId, nNextOutlineId, StartJointType, EndJointType, nProfileType, nGeoLayerId, nProfileFrameLayerId)
|
||||
local nCurrCurveId
|
||||
local nCurrOffsetId
|
||||
local nPrevCurveId
|
||||
local nNextCurveId
|
||||
local dGeoWidth
|
||||
-- recupero ref e controprofilo e calcolo delta del top, prev e next
|
||||
local sCurrProfileType = EgtGetInfo( nOutlineId, WIN_PROFILETYPE)
|
||||
local _, b3CurrRef, nCurrProfileId, nCurrProfileRefId = WinLib.GetDeltaProfile( nProfileFrameLayerId, sCurrProfileType)
|
||||
local sPrevProfileType = EgtGetInfo( nPrevOutlineId, WIN_PROFILETYPE)
|
||||
local dPrevCPDelta, _ = WinLib.GetDeltaProfile( nProfileFrameLayerId, sPrevProfileType)
|
||||
local sNextProfileType = EgtGetInfo( nNextOutlineId, WIN_PROFILETYPE)
|
||||
local dNextCPDelta, _ = WinLib.GetDeltaProfile( nProfileFrameLayerId, sNextProfileType)
|
||||
-- calcolo spostamento della curva iniziale dovuto a posizione riferimento
|
||||
local nProfileFrameId = EgtGetFirstNameInGroup( nCurrProfileId, WIN_SECTIONFRAME)
|
||||
local frProfile = EgtFR( nProfileFrameId)
|
||||
local b3CurrProfileFrame = EgtGetBBoxRef( nCurrProfileRefId, GDB_BB.STANDARD, frProfile)
|
||||
local dCurrOffset = b3CurrProfileFrame:getMax():getX()
|
||||
-- creo copie degli outline e li offsetto opportunamente
|
||||
nCurrCurveId = EgtCopy( nOutlineId, nGeoLayerId)
|
||||
EgtOffsetCurve( nCurrCurveId, dCurrOffset)
|
||||
nCurrOffsetId = EgtCopy( nOutlineId, nGeoLayerId)
|
||||
EgtOffsetCurve( nCurrOffsetId, dCurrOffset - b3CurrProfileFrame:getDimX())
|
||||
EgtInvertCurve( nCurrOffsetId)
|
||||
if StartJointType == WIN_JNT.ANGLED then
|
||||
-- calcolo la bisettrice
|
||||
local vtMedia = ( ( EgtSV( nOutlineId) - EgtEV( nPrevOutlineId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtSV( nOutlineId)
|
||||
vtMedia:rotate(Z_AX(), 90)
|
||||
end
|
||||
nPrevCurveId = EgtLinePVL( nGeoLayerId, EgtSP( nOutlineId), vtMedia, 3 * b3CurrProfileFrame:getDimX())
|
||||
EgtInvertCurve( nPrevCurveId)
|
||||
else
|
||||
nPrevCurveId = EgtCopy( nPrevOutlineId, nGeoLayerId)
|
||||
end
|
||||
if ( StartJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.HORIZONTAL)) or
|
||||
( StartJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT or nProfileType == WIN_PRF.VERTICAL)) or
|
||||
nProfileType == WIN_PRF.SPLIT then
|
||||
EgtOffsetCurve( nPrevCurveId, - dPrevCPDelta)
|
||||
EgtSetInfo( nGeoLayerId, WIN_STARTCPDELTA, dPrevCPDelta)
|
||||
end
|
||||
if EndJointType == WIN_JNT.ANGLED then
|
||||
-- calcolo la bisettrice
|
||||
local vtMedia = ( ( EgtSV( nNextOutlineId) - EgtEV( nOutlineId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtEV( nOutlineId)
|
||||
vtMedia:rotate(Z_AX(), 90)
|
||||
end
|
||||
nNextCurveId = EgtLinePVL( nGeoLayerId, EgtEP( nOutlineId), vtMedia, 3 * b3CurrProfileFrame:getDimX())
|
||||
EgtInvertCurve( nNextCurveId)
|
||||
else
|
||||
nNextCurveId = EgtCopy( nNextOutlineId, nGeoLayerId)
|
||||
end
|
||||
if ( StartJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.HORIZONTAL)) or
|
||||
( StartJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT or nProfileType == WIN_PRF.VERTICAL)) or
|
||||
nProfileType == WIN_PRF.SPLIT then
|
||||
EgtOffsetCurve( nNextCurveId, - dNextCPDelta)
|
||||
EgtSetInfo( nGeoLayerId, WIN_ENDCPDELTA, dNextCPDelta)
|
||||
end
|
||||
dGeoWidth = b3CurrProfileFrame:getDimX()
|
||||
-- salvo delta controprofilo
|
||||
if StartJointType == WIN_JNT.FULL_V then
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_V then
|
||||
end
|
||||
return nCurrCurveId, nCurrOffsetId, nPrevCurveId, nNextCurveId, dGeoWidth
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
function WinLib.CalcFrameGeo( nPartId, nOutlineId, nOutlineLayerId)
|
||||
-- recupero profilo
|
||||
local nProfileLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_FRAME)
|
||||
-- creo layer per ingombro
|
||||
local nGeoLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nGeoLayerId, WIN_GEO)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
elseif sName == WIN_VERTICAL then
|
||||
nProfileType = WIN_PRF.VERTICAL
|
||||
elseif sName == WIN_HORIZONTAL then
|
||||
nProfileType = WIN_PRF.HORIZONTAL
|
||||
elseif sName == WIN_SPLIT then
|
||||
nProfileType = WIN_PRF.SPLIT
|
||||
end
|
||||
local StartJointType
|
||||
local EndJointType
|
||||
local nNextOutlineId
|
||||
local nPrevOutlineId
|
||||
local nCurrCurveId
|
||||
local nCurrOffsetId
|
||||
local nPrevCurveId
|
||||
local nNextCurveId
|
||||
local dGeoWidth
|
||||
if nProfileType == WIN_PRF.TOP then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
-- recupero outline precedente e successivo
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
elseif nProfileType == WIN_PRF.BOTTOM then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.VERTICAL then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.HORIZONTAL then
|
||||
-- recupero tipo di giunzioni
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.SPLIT then
|
||||
local nStartId = EgtGetInfo( nOutlineId, WIN_SPLIT_STARTINTERS, 'i')
|
||||
local nEndId = EgtGetInfo( nOutlineId, WIN_SPLIT_ENDINTERS, 'i')
|
||||
local sStartName = EgtGetName( nStartId)
|
||||
local sEndName = EgtGetName( nEndId)
|
||||
-- recupero tipo di giunzioni
|
||||
if sStartName == WIN_BOTTOM or sStartName == WIN_TOP then
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
if sEndName == WIN_BOTTOM or sEndName == WIN_TOP then
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
-- recupero outline precedente
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sStartName)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sEndName)
|
||||
end
|
||||
-- creo lati dell'outline
|
||||
nCurrCurveId, nCurrOffsetId, nPrevCurveId, nNextCurveId, dGeoWidth = WinLib.CreateFrameGeo( nOutlineId, nPrevOutlineId, nNextOutlineId, StartJointType, EndJointType, nProfileType, nGeoLayerId, nProfileFrameLayerId)
|
||||
-- calcolo punti di intersezione
|
||||
local ptIntersCurrPrev = EgtIP( nCurrCurveId, nPrevCurveId, EgtSP( nCurrCurveId))
|
||||
if not ptIntersCurrPrev then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveStartByLen( nCurrCurveId, 200)
|
||||
EgtExtendCurveEndByLen( nPrevCurveId, 200)
|
||||
ptIntersCurrPrev = EgtIP( nCurrCurveId, nPrevCurveId, EgtSP( nCurrCurveId))
|
||||
end
|
||||
local ptIntersCurrNext = EgtIP( nCurrCurveId, nNextCurveId, EgtEP( nCurrCurveId))
|
||||
if not ptIntersCurrNext then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveEndByLen( nCurrCurveId, 200)
|
||||
EgtExtendCurveStartByLen( nNextCurveId, 200)
|
||||
ptIntersCurrNext = EgtIP( nCurrCurveId, nNextCurveId, EgtEP( nCurrCurveId))
|
||||
end
|
||||
local ptIntersCurrOffsetPrev = EgtIP( nCurrOffsetId, nPrevCurveId, EgtEP( nCurrOffsetId))
|
||||
if not ptIntersCurrOffsetPrev then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveEndByLen( nCurrOffsetId, 1000)
|
||||
EgtExtendCurveStartByLen( nPrevCurveId, 200)
|
||||
ptIntersCurrOffsetPrev = EgtIP( nCurrOffsetId, nPrevCurveId, EgtEP( nCurrOffsetId))
|
||||
end
|
||||
local ptIntersCurrOffsetNext = EgtIP( nCurrOffsetId, nNextCurveId, EgtSP( nCurrOffsetId))
|
||||
if not ptIntersCurrOffsetNext then
|
||||
-- allungo per intersecare
|
||||
EgtExtendCurveStartByLen( nCurrOffsetId, 1000)
|
||||
EgtExtendCurveStartByLen( nNextCurveId, 200)
|
||||
ptIntersCurrOffsetNext = EgtIP( nCurrOffsetId, nNextCurveId, EgtSP( nCurrOffsetId))
|
||||
end
|
||||
-- calcolo accorciamenti dei lati copiati alle intersezioni
|
||||
local dIntersCurrPrevParam = EgtCurveParamAtPoint( nCurrCurveId, ptIntersCurrPrev)
|
||||
EgtTrimCurveStartAtParam( nCurrCurveId, dIntersCurrPrevParam)
|
||||
local dIntersCurrNextParam = EgtCurveParamAtPoint( nCurrCurveId, ptIntersCurrNext)
|
||||
EgtTrimCurveEndAtParam( nCurrCurveId, dIntersCurrNextParam)
|
||||
local dIntersCurrOffsetNextParam = EgtCurveParamAtPoint( nCurrOffsetId, ptIntersCurrOffsetNext)
|
||||
EgtTrimCurveStartAtParam( nCurrOffsetId, dIntersCurrOffsetNextParam)
|
||||
local dIntersCurrOffsetPrevParam = EgtCurveParamAtPoint( nCurrOffsetId, ptIntersCurrOffsetPrev)
|
||||
EgtTrimCurveEndAtParam( nCurrOffsetId, dIntersCurrOffsetPrevParam)
|
||||
local dIntersPrevOffsetParam = EgtCurveParamAtPoint( nPrevCurveId, ptIntersCurrOffsetPrev)
|
||||
EgtTrimCurveStartAtParam( nPrevCurveId, dIntersPrevOffsetParam)
|
||||
local dIntersPrevCurrParam = EgtCurveParamAtPoint( nPrevCurveId, ptIntersCurrPrev)
|
||||
EgtTrimCurveEndAtParam( nPrevCurveId, dIntersPrevCurrParam)
|
||||
local dIntersNextCurrParam = EgtCurveParamAtPoint( nNextCurveId, ptIntersCurrNext)
|
||||
EgtTrimCurveStartAtParam( nNextCurveId, dIntersNextCurrParam)
|
||||
local dIntersNextOffsetParam = EgtCurveParamAtPoint( nNextCurveId, ptIntersCurrOffsetNext)
|
||||
EgtTrimCurveEndAtParam( nNextCurveId, dIntersNextOffsetParam)
|
||||
-- creo composita dai lati
|
||||
EgtSetName( nCurrCurveId, WIN_GEO_OUT)
|
||||
EgtSetName( nCurrOffsetId, WIN_GEO_IN)
|
||||
EgtSetName( nNextCurveId, WIN_GEO_RIGHT)
|
||||
EgtSetName( nPrevCurveId, WIN_GEO_LEFT)
|
||||
-- salvo spessore serramento in geo
|
||||
EgtSetInfo( nCurrCurveId, WIN_GEOWIDTH, dGeoWidth)
|
||||
|
||||
return nCurrCurveId
|
||||
end
|
||||
|
||||
-- funzione che posiziona i profili, li estrude e crea il solido
|
||||
function WinLib.CalcStartEndProfileType(nProfileType, nOutlineId)
|
||||
local StartJointType
|
||||
local EndJointType
|
||||
local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
local sStartProfileType
|
||||
local sEndProfileType
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
StartJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
EndJointType = EgtGetInfo( nOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
if StartJointType == WIN_JNT.FULL_H then
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
elseif StartJointType == WIN_JNT.FULL_V then
|
||||
sStartProfileType = WIN_OUTOFST
|
||||
elseif StartJointType == WIN_JNT.ANGLED then
|
||||
sStartProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
if EndJointType == WIN_JNT.FULL_H then
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif EndJointType == WIN_JNT.FULL_V then
|
||||
sEndProfileType = WIN_OUTOFST
|
||||
elseif EndJointType == WIN_JNT.ANGLED then
|
||||
sEndProfileType = WIN_MINIZINKEN
|
||||
end
|
||||
elseif nProfileType == WIN_PRF.VERTICAL then
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif nProfileType == WIN_PRF.HORIZONTAL then
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
elseif nProfileType == WIN_PRF.SPLIT then
|
||||
local nStartId = EgtGetInfo( nOutlineId, WIN_SPLIT_STARTINTERS, 'i')
|
||||
local nEndId = EgtGetInfo( nOutlineId, WIN_SPLIT_ENDINTERS, 'i')
|
||||
local sStartName = EgtGetName( nStartId)
|
||||
local sEndName = EgtGetName( nEndId)
|
||||
-- recupero tipo di giunzioni
|
||||
if sStartName == WIN_BOTTOM or sStartName == WIN_TOP then
|
||||
StartJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
StartJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
if sEndName == WIN_BOTTOM or sEndName == WIN_TOP then
|
||||
EndJointType = WIN_JNT.FULL_H
|
||||
else
|
||||
EndJointType = WIN_JNT.FULL_V
|
||||
end
|
||||
sStartProfileType = WIN_CTRINOFST
|
||||
sEndProfileType = WIN_CTRINOFST
|
||||
end
|
||||
return sStartProfileType, sEndProfileType, StartJointType, EndJointType
|
||||
end
|
||||
|
||||
-- funzione che posiziona i profili, li estrude e crea il solido
|
||||
function WinLib.MakeSolidByExtrusion(nGeoId, nOutlineId, nMainProfileId, nStartProfileId, nEndProfileId, nProfileType, nSolidLayerId)
|
||||
-- recupero outline
|
||||
local nPartId = EgtGetParent( nSolidLayerId)
|
||||
local nAreaId = EgtGetInfo( nPartId, WIN_AREA)
|
||||
local nGeoLayerId = EgtGetParent( nGeoId)
|
||||
-- recupero geo
|
||||
local nPrevGeoId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_LEFT)
|
||||
local nNextGeoId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_RIGHT)
|
||||
-- recupero BBox e larghezza del geo
|
||||
local dGeoWidth = EgtGetInfo( nGeoId, WIN_GEOWIDTH, 'd')
|
||||
-- creo guida Main
|
||||
local nGuideId = EgtCopy( nOutlineId, nSolidLayerId)
|
||||
EgtExtendCurveStartByLen( nGuideId, 2 * dGeoWidth)
|
||||
EgtExtendCurveEndByLen( nGuideId, 2 * dGeoWidth)
|
||||
-- recupero frame del profilo
|
||||
local nMainProfileFrameId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTIONFRAME)
|
||||
local frInvertMainProfile = EgtFR( nMainProfileFrameId)
|
||||
frInvertMainProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nMainProfileId), frInvertMainProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nMainProfileId, Frame3d( EgtSP( nGuideId), - EgtSV( nGuideId)))
|
||||
-- recupero outline del profilo Main e lo estrudo
|
||||
local nMainOutlineId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTION)
|
||||
local nMainExtrusionId = EgtSurfTmSwept( nSolidLayerId, nMainOutlineId, nGuideId, false)
|
||||
-- posiziono il profilo Start
|
||||
local nRefStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, WIN_REF)
|
||||
local b3RefStartProfile = EgtGetBBoxGlob(nRefStartProfileId, GDB_BB.STANDARD)
|
||||
local dStartDelta = EgtGetInfo( nGeoLayerId, WIN_STARTCPDELTA, 'd') or 0
|
||||
-- creo guida per estrusione
|
||||
local nStartGuideId = EgtCopy( nPrevGeoId, nSolidLayerId)
|
||||
EgtExtendCurveStartByLen( nStartGuideId, 2 * dGeoWidth)
|
||||
EgtExtendCurveEndByLen( nStartGuideId, 2 * dGeoWidth)
|
||||
-- recupero frame del profilo
|
||||
local nStartProfileFrameId = EgtGetFirstNameInGroup( nStartProfileId, WIN_SECTIONFRAME)
|
||||
local frStartProfile = EgtFR( nStartProfileFrameId)
|
||||
-- lo sposto se controprofilo
|
||||
frStartProfile:move( - frStartProfile:getVersX() * dStartDelta)
|
||||
frStartProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nStartProfileId), frStartProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nStartProfileId, Frame3d( EgtSP( nStartGuideId), - EgtSV( nStartGuideId)))
|
||||
-- in base al tipo di incastro e di pezzo, ricavo i controprofili
|
||||
local sStartProfileType
|
||||
local sEndProfileType
|
||||
-- recupero tipo di giunzioni
|
||||
sStartProfileType, sEndProfileType, StartJointType, EndJointType = WinLib.CalcStartEndProfileType( nProfileType, nOutlineId)
|
||||
-- recupero outline del profilo Start e lo estrudo
|
||||
local nOutStartProfileId
|
||||
if sStartProfileType == WIN_MINIZINKEN then
|
||||
nOutStartProfileId = EgtLine( nStartProfileId, EgtSP( nPrevGeoId), EgtSP( nPrevGeoId) - Z_AX() * b3RefStartProfile:getDimY(), GDB_RT.GLOB)
|
||||
EgtInvertCurve( nOutStartProfileId)
|
||||
else
|
||||
nOutStartProfileId = EgtGetFirstNameInGroup( nStartProfileId, sStartProfileType)
|
||||
end
|
||||
local nStartExtrusionId = EgtSurfTmSwept( nSolidLayerId, nOutStartProfileId, nStartGuideId, false)
|
||||
-- taglio estrusi per ottenere solido
|
||||
local nExtrCopyId = EgtCopy( nMainExtrusionId, nSolidLayerId)
|
||||
EgtSurfTmCut( nMainExtrusionId, nStartExtrusionId, true, false)
|
||||
EgtSurfTmCut( nStartExtrusionId, nExtrCopyId, true, false)
|
||||
-- posiziono il profilo End
|
||||
local nRefEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, WIN_REF)
|
||||
local b3RefEndProfile = EgtGetBBoxGlob(nRefEndProfileId, GDB_BB.STANDARD)
|
||||
local dEndDelta = EgtGetInfo( nGeoLayerId, WIN_ENDCPDELTA, 'd') or 0
|
||||
-- creo guida per estrusione
|
||||
local nEndGuideId = EgtCopy( nNextGeoId, nSolidLayerId)
|
||||
EgtExtendCurveStartByLen( nEndGuideId, 2 * dGeoWidth)
|
||||
EgtExtendCurveEndByLen( nEndGuideId, 2 * dGeoWidth)
|
||||
-- recupero frame del profilo
|
||||
local nEndProfileFrameId = EgtGetFirstNameInGroup( nEndProfileId, WIN_SECTIONFRAME)
|
||||
local frEndProfile = EgtFR( nEndProfileFrameId)
|
||||
frEndProfile:move( - frEndProfile:getVersX() * dEndDelta)
|
||||
frEndProfile:invert()
|
||||
-- lo applico a tutte le geometrie del profilo
|
||||
EgtTransform( EgtGetAllInGroup( nEndProfileId), frEndProfile)
|
||||
-- assegno come riferimento del profilo il punto start dell'outline
|
||||
EgtChangeGroupFrame( nEndProfileId, Frame3d( EgtSP( nEndGuideId), - EgtSV( nEndGuideId)))
|
||||
-- recupero outline del profilo End e lo estrudo
|
||||
local nOutEndProfileId
|
||||
if sEndProfileType == WIN_MINIZINKEN then
|
||||
nOutEndProfileId = EgtLine( nEndProfileId, EgtSP( nNextGeoId), EgtSP( nNextGeoId) - Z_AX() * b3RefEndProfile:getDimY(), GDB_RT.GLOB)
|
||||
else
|
||||
nOutEndProfileId = EgtGetFirstNameInGroup( nEndProfileId, sEndProfileType)
|
||||
end
|
||||
-- if (EndJointType == WIN_JNT.FULL_H and ( nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.LEFT)) or
|
||||
-- (EndJointType == WIN_JNT.FULL_V and ( nProfileType == WIN_PRF.RIGHT)) then
|
||||
-- EgtInvertCurve( nOutEndProfileId)
|
||||
-- end
|
||||
local nEndExtrusionId = EgtSurfTmSwept( nSolidLayerId, nOutEndProfileId, nEndGuideId, false)
|
||||
-- taglio estrusi per ottenere solido
|
||||
EgtSurfTmCut( nMainExtrusionId, nEndExtrusionId, true, false)
|
||||
EgtSurfTmCut( nEndExtrusionId, nExtrCopyId, true, false)
|
||||
EgtErase( nExtrCopyId)
|
||||
end
|
||||
|
||||
-- funzione che crea il solido del pezzo del telaio
|
||||
function WinLib.CalcFrameSolid(nPartId, nOutlineId, nGeoId, nOutlineLayerId)
|
||||
-- recupero profilo
|
||||
local nProfileId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nProfileFrameLayerId = EgtGetFirstNameInGroup( nProfileId, WIN_FRAME)
|
||||
-- creo layer per solido e per profili di estrusione
|
||||
local nSolidLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nSolidLayerId, WIN_SOLID)
|
||||
local nFrameProfileLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nFrameProfileLayerId, WIN_PROFILE)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nPartId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
elseif sName == WIN_VERTICAL then
|
||||
nProfileType = WIN_PRF.VERTICAL
|
||||
elseif sName == WIN_HORIZONTAL then
|
||||
nProfileType = WIN_PRF.HORIZONTAL
|
||||
elseif sName == WIN_SPLIT then
|
||||
nProfileType = WIN_PRF.SPLIT
|
||||
end
|
||||
local nPrevOutlineId
|
||||
local nNextOutlineId
|
||||
local nOrigMainProfileId = GDB_ID.NULL
|
||||
local nMainProfileId = GDB_ID.NULL
|
||||
local nOrigStartProfileId = GDB_ID.NULL
|
||||
local nStartProfileId = GDB_ID.NULL
|
||||
local nOrigEndProfileId = GDB_ID.NULL
|
||||
local nEndProfileId = GDB_ID.NULL
|
||||
-- recupero outline precedente e successivo
|
||||
if nProfileType == WIN_PRF.BOTTOM then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.RIGHT then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.TOP then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
elseif nProfileType == WIN_PRF.LEFT then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
elseif nProfileType == WIN_PRF.VERTICAL then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_BOTTOM)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_TOP)
|
||||
elseif nProfileType == WIN_PRF.HORIZONTAL then
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_LEFT)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
elseif nProfileType == WIN_PRF.SPLIT then
|
||||
local nStartId = EgtGetInfo( nOutlineId, WIN_SPLIT_STARTINTERS, 'i')
|
||||
local nEndId = EgtGetInfo( nOutlineId, WIN_SPLIT_ENDINTERS, 'i')
|
||||
local sStartName = EgtGetName( nStartId)
|
||||
local sEndName = EgtGetName( nEndId)
|
||||
nPrevOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sStartName)
|
||||
nNextOutlineId = EgtGetFirstNameInGroup( nOutlineLayerId, sEndName)
|
||||
end
|
||||
-- recupero profilo e controprofili
|
||||
local sCurrProfileType = EgtGetInfo( nOutlineId, WIN_PROFILETYPE)
|
||||
local sPrevProfileType = EgtGetInfo( nPrevOutlineId, WIN_PROFILETYPE)
|
||||
local sNextProfileType = EgtGetInfo( nNextOutlineId, WIN_PROFILETYPE)
|
||||
nOrigMainProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sCurrProfileType)
|
||||
nOrigStartProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sPrevProfileType)
|
||||
nOrigEndProfileId = EgtGetFirstNameInGroup( nProfileFrameLayerId, sNextProfileType)
|
||||
-- creo copie di profilo e controprofili
|
||||
nMainProfileId = EgtCopy( nOrigMainProfileId, nFrameProfileLayerId)
|
||||
EgtSetName( nMainProfileId, WIN_PRF_MAIN)
|
||||
nStartProfileId = EgtCopy( nOrigStartProfileId, nFrameProfileLayerId)
|
||||
EgtSetName( nStartProfileId, WIN_PRF_START)
|
||||
nEndProfileId = EgtCopy( nOrigEndProfileId, nFrameProfileLayerId)
|
||||
EgtSetName( nEndProfileId, WIN_PRF_END)
|
||||
-- creo solido dai profili
|
||||
WinLib.MakeSolidByExtrusion(nGeoId, nOutlineId, nMainProfileId, nStartProfileId, nEndProfileId, nProfileType, nSolidLayerId)
|
||||
end
|
||||
|
||||
-- funzione che calcola l'ingombro dei pezzi del telaio
|
||||
function WinLib.CreatePartFromOutline( nAreaLayerId, nOutlineId)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_OUTLINE)
|
||||
-- se area senza outline, cerco quella superiore
|
||||
if not nOutlineLayerId then
|
||||
local nParentAreaLayerId = EgtGetParent( nAreaLayerId)
|
||||
if nParentAreaLayerId then
|
||||
nOutlineLayerId = EgtGetFirstNameInGroup( nParentAreaLayerId, WIN_OUTLINE)
|
||||
end
|
||||
end
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
local nProfileType = WIN_PRF.NULL
|
||||
if sName == WIN_TOP then
|
||||
nProfileType = WIN_PRF.TOP
|
||||
elseif sName == WIN_BOTTOM then
|
||||
nProfileType = WIN_PRF.BOTTOM
|
||||
elseif sName == WIN_LEFT then
|
||||
nProfileType = WIN_PRF.LEFT
|
||||
elseif sName == WIN_RIGHT then
|
||||
nProfileType = WIN_PRF.RIGHT
|
||||
elseif sName == WIN_VERTICAL then
|
||||
nProfileType = WIN_PRF.VERTICAL
|
||||
elseif sName == WIN_HORIZONTAL then
|
||||
nProfileType = WIN_PRF.HORIZONTAL
|
||||
elseif sName == WIN_SPLIT then
|
||||
nProfileType = WIN_PRF.SPLIT
|
||||
end
|
||||
-- creo pezzo
|
||||
local nPartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nPartId, sName)
|
||||
if nProfileType == WIN_PRF.BOTTOM or nProfileType == WIN_PRF.TOP or nProfileType == WIN_PRF.HORIZONTAL then
|
||||
EgtSetColor( nPartId, Color3d( 204, 102, 0))
|
||||
elseif nProfileType == WIN_PRF.RIGHT or nProfileType == WIN_PRF.LEFT or nProfileType == WIN_PRF.VERTICAL then
|
||||
EgtSetColor( nPartId, Color3d( 251, 128, 4))
|
||||
else
|
||||
EgtSetColor( nPartId, Color3d( 255, 159, 57))
|
||||
end
|
||||
|
||||
-- inserisco riferimento alla sua area
|
||||
EgtSetInfo( nPartId, WIN_AREA, nAreaLayerId)
|
||||
|
||||
-- disegno ingombro
|
||||
local nGeoId = WinLib.CalcFrameGeo( nPartId, nOutlineId, nOutlineLayerId)
|
||||
|
||||
-- disegno solido
|
||||
WinLib.CalcFrameSolid(nPartId, nOutlineId, nGeoId, nOutlineLayerId)
|
||||
|
||||
-- offset per distanziare i pezzi
|
||||
--local dYPosOffset = 300 * ( nProfileType - 1)
|
||||
--EgtChangeGroupFrame( nPartId, Frame3d( Point3d( 0, dYPosOffset, 0)))
|
||||
|
||||
end
|
||||
|
||||
-- funzione che posiziona un pezzo
|
||||
function WinLib.PositionPart(nPartId)
|
||||
-- ricavo tipo dal nome
|
||||
local sName = EgtGetName( nPartId)
|
||||
local sDelta = ''
|
||||
if sName == WIN_BOTTOM then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_RIGHT then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_TOP then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
elseif sName == WIN_LEFT then
|
||||
sDelta = WIN_STARTCPDELTA
|
||||
end
|
||||
-- calcolo nuovo riferimento
|
||||
local nGeoPartLayerId = EgtGetFirstNameInGroup( nPartId, WIN_GEO)
|
||||
local nGeoPartId = EgtGetFirstNameInGroup( nGeoPartLayerId, sName)
|
||||
local dDelta = EgtGetInfo( nGeoPartId, sDelta, 'd') or 0
|
||||
local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
local nFramePartId = EgtGetFirstNameInGroup( nOutlineLayerId, sName)
|
||||
local vtStart = EgtSV( nFramePartId)
|
||||
local ptStart = EgtSP( nFramePartId) + vtStart * dDelta
|
||||
local _, _, dAngRight = SphericalFromVector(vtStart)
|
||||
local frStart = Frame3d( ptStart)
|
||||
frStart:rotate( frStart:getOrigin(), Z_AX(), dAngRight)
|
||||
EgtChangeGroupFrame( nPartId, frStart)
|
||||
end
|
||||
|
||||
-- funzione che assembla i pezzi
|
||||
function WinLib.AssembleFrame()
|
||||
local nBottomPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_BOTTOM)
|
||||
WinLib.PositionPart(nBottomPartId)
|
||||
local nRightPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_RIGHT)
|
||||
WinLib.PositionPart(nRightPartId)
|
||||
local nTopPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_TOP)
|
||||
WinLib.PositionPart(nTopPartId)
|
||||
local nLeftPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_LEFT)
|
||||
WinLib.PositionPart(nLeftPartId)
|
||||
-- assemblo i pezzi
|
||||
--local nRightPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_RIGHT)
|
||||
--local nGeoRightLayerId = EgtGetFirstNameInGroup( nRightPartId, WIN_GEO)
|
||||
--local nGeoRightId = EgtGetFirstNameInGroup( nGeoRightLayerId, WIN_RIGHT)
|
||||
--local dDelta = EgtGetInfo( nGeoRightId, WIN_BOTTOMCPDELTA, 'd')
|
||||
--local nFrameLayerId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_FRAME)
|
||||
--local nOutlineLayerId = EgtGetFirstNameInGroup( nFrameLayerId, WIN_OUTLINE)
|
||||
--local nFrameRightId = EgtGetFirstNameInGroup( nOutlineLayerId, WIN_RIGHT)
|
||||
--local vtRight = EgtSV( nFrameRightId)
|
||||
--local ptRight = EgtSP( nFrameRightId) + vtRight * dDelta
|
||||
--local _, _, dAngRight = SphericalFromVector(vtRight)
|
||||
--local frRight = Frame3d( ptRight)
|
||||
--frRight:rotate( frRight:getOrigin(), Z_AX(), dAngRight)
|
||||
--EgtChangeGroupFrame( nRightPartId, frRight)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinLib
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,430 @@
|
||||
--
|
||||
-- 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 WinCreate = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
-- funzione che importa il profilo
|
||||
function WinCreate.ImportProfile( sProfilePath)
|
||||
-- creo gruppo per il profilo
|
||||
local nProfileId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nProfileId, WIN_PROFILE)
|
||||
-- importo profilo prescelto
|
||||
local bOk = EgtInsertFile( sProfilePath)
|
||||
-- recupero gruppi importati e li sposto nel gruppo profilo
|
||||
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
|
||||
-- riporto path nel Part del profilo
|
||||
EgtSetInfo( nProfileId, WIN_PROFILEPATH, sProfilePath)
|
||||
end
|
||||
|
||||
-- funzione che crea il buco rettangolare per la finestra
|
||||
function WinCreate.CreateFrame( dWidth, dHeight, nJointBL, nJointBR, nJointTR, nJointTL)
|
||||
-- creo gruppo per telaio
|
||||
local nFrameAreaId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameAreaId, WIN_AREA .. '(' .. WIN_FRAME .. ')')
|
||||
-- imposto il tipo
|
||||
EgtSetInfo( nFrameAreaId, WIN_AREATYPE, WIN_AREATYPES.FRAME)
|
||||
local nAreaOutlineLayerId = EgtGroup( nFrameAreaId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
-- disegno outline
|
||||
local nFrameBottomId = EgtLine( nAreaOutlineLayerId, Point3d( 0, 0, 0), Point3d( dWidth, 0, 0))
|
||||
EgtSetName( nFrameBottomId, WIN_BOTTOM)
|
||||
local nFrameRightId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, 0, 0), Point3d( dWidth, dHeight, 0))
|
||||
EgtSetName( nFrameRightId, WIN_RIGHT)
|
||||
local nFrameTopId = EgtLine( nAreaOutlineLayerId, Point3d( dWidth, dHeight, 0), Point3d( 0, dHeight, 0))
|
||||
EgtSetName( nFrameTopId, WIN_TOP)
|
||||
local nFrameLeftId = EgtLine( nAreaOutlineLayerId, Point3d( 0, dHeight, 0), Point3d( 0, 0, 0))
|
||||
EgtSetName( nFrameLeftId, WIN_LEFT)
|
||||
-- imposto tipo giunzioni
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_BL, nJointBL)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_BR, nJointBR)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_TL, nJointTL)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_TR, nJointTR)
|
||||
return nFrameAreaId
|
||||
end
|
||||
-- funzione che crea il buco per la finestra
|
||||
function WinCreate.CreateGenFrame( nFrameBottomId, nFrameRightId, nFrameTopId, nFrameLeftId, nJointBL, nJointBR, nJointTR, nJointTL)
|
||||
-- creo gruppo per telaio
|
||||
local nFrameAreaId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nFrameAreaId, WIN_AREA .. '(' .. WIN_FRAME .. ')')
|
||||
-- imposto il tipo
|
||||
EgtSetInfo( nFrameAreaId, WIN_AREATYPE, WIN_AREATYPES.FRAME)
|
||||
local nAreaOutlineLayerId = EgtGroup( nFrameAreaId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
-- disegno outline
|
||||
EgtRelocateGlob( nFrameBottomId, nAreaOutlineLayerId)
|
||||
EgtSetName( nFrameBottomId, WIN_BOTTOM)
|
||||
EgtRelocateGlob( nFrameRightId, nAreaOutlineLayerId)
|
||||
EgtSetName( nFrameRightId, WIN_RIGHT)
|
||||
EgtRelocateGlob( nFrameTopId, nAreaOutlineLayerId)
|
||||
EgtSetName( nFrameTopId, WIN_TOP)
|
||||
EgtRelocateGlob( nFrameLeftId, nAreaOutlineLayerId)
|
||||
EgtSetName( nFrameLeftId, WIN_LEFT)
|
||||
-- imposto tipo giunzioni
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_BL, nJointBL)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_BR, nJointBR)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_TL, nJointTL)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_TR, nJointTR)
|
||||
return nFrameAreaId
|
||||
end
|
||||
|
||||
-- -- funzione che crea il telaio a partire dal buco
|
||||
-- function WinCreate.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 aggiunge una anta
|
||||
function WinCreate.AddSash( nAreaId, nJointBL, nJointBR, nJointTR, nJointTL, nSashType)
|
||||
-- creo nuova area
|
||||
local nSashAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nSashAreaId, WIN_AREA .. '(' .. WIN_SASH .. ')')
|
||||
-- imposto il tipo
|
||||
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 nAreaOutlineLayerId = EgtGroup( nSashAreaId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
local nAreaOutlineId = EgtGetFirstInGroup( nPrevAreaOutlineId)
|
||||
while nAreaOutlineId do
|
||||
local nOutlineId = EgtCopy( nAreaOutlineId, nAreaOutlineLayerId)
|
||||
EgtSetInfo( nOutlineId, WIN_SOU, nAreaOutlineId)
|
||||
EgtSetInfo( nAreaOutlineId, WIN_CHILD, nOutlineId)
|
||||
nAreaOutlineId = EgtGetNext( nAreaOutlineId)
|
||||
end
|
||||
-- imposto tipo giunzioni
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_BL, nJointBL)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_BR, nJointBR)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_TL, nJointTL)
|
||||
EgtSetInfo( nAreaOutlineLayerId, WIN_JOINT_TR, nJointTR)
|
||||
-- imposto tipo di anta se presente
|
||||
if nSashType then
|
||||
EgtSetInfo( nSashAreaId, WIN_SASHTYPE, nSashType)
|
||||
end
|
||||
return nSashAreaId
|
||||
end
|
||||
|
||||
-- funzione che aggiunge un riempimento
|
||||
function WinCreate.AddFill( nAreaId, FillType)
|
||||
-- creo nuova area
|
||||
local nFillAreaId = EgtGroup( nAreaId)
|
||||
EgtSetName( nFillAreaId, WIN_AREA .. '(' .. WIN_FILL .. ')')
|
||||
-- imposto il tipo
|
||||
EgtSetInfo( nFillAreaId, WIN_AREATYPE, WIN_AREATYPES.FILL)
|
||||
-- recupero outline area precedente
|
||||
local nPrevAreaOutlineId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
-- lo copio per outline area del riempimento
|
||||
local nAreaOutlineLayerId = EgtGroup( nFillAreaId)
|
||||
EgtSetName( nAreaOutlineLayerId, WIN_AREAOUTLINE)
|
||||
local nAreaOutlineId = EgtGetFirstInGroup( nPrevAreaOutlineId)
|
||||
while nAreaOutlineId do
|
||||
local nOutlineId = EgtCopy( nAreaOutlineId, nAreaOutlineLayerId)
|
||||
EgtSetInfo( nOutlineId, WIN_SOU, nAreaOutlineId)
|
||||
EgtSetInfo( nAreaOutlineId, WIN_CHILD, nOutlineId)
|
||||
EgtRemoveInfo( nAreaOutlineLayerId, WIN_JOINT_BL)
|
||||
EgtRemoveInfo( nAreaOutlineLayerId, WIN_JOINT_BR)
|
||||
EgtRemoveInfo( nAreaOutlineLayerId, WIN_JOINT_TL)
|
||||
EgtRemoveInfo( nAreaOutlineLayerId, WIN_JOINT_TR)
|
||||
nAreaOutlineId = EgtGetNext( nAreaOutlineId)
|
||||
end
|
||||
-- imposto tipo di fill
|
||||
EgtSetInfo( nFillAreaId, WIN_FILLTYPE, FillType)
|
||||
return nFillAreaId
|
||||
end
|
||||
|
||||
-- funzione che crea un taglio split
|
||||
function WinCreate.AddSplit( nAreaLayerId, SplitType, MeasureType, nPosition, nProportion, nSplitType)
|
||||
-- creo layer temporaneo per split
|
||||
local nTempSplitLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nTempSplitLayerId, WIN_TEMPSPLIT)
|
||||
-- recupero contorno area precedente
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
local b3OutlineLayer = EgtGetBBox( nOutlineLayerId, GDB_BB.STANDARD)
|
||||
local OutlineIds = {}
|
||||
local nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
while nOutlineId do
|
||||
local sName = EgtGetName( nOutlineId)
|
||||
table.insert( OutlineIds, nOutlineId)
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
end
|
||||
local nTotSplitId
|
||||
if SplitType == WIN_SPLITORIENTATION.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
|
||||
nTotSplitId = EgtLine( nTempSplitLayerId, b3OutlineLayer:getMin() + X_AX() * nCalcPosition, b3OutlineLayer:getMin() + X_AX() * nCalcPosition + Y_AX() * b3OutlineLayer:getDimY())
|
||||
elseif SplitType == WIN_SPLITORIENTATION.HORIZONTAL then
|
||||
-- creo linea
|
||||
local nCalcPosition = 0
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
nCalcPosition = nPosition
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
nCalcPosition = b3OutlineLayer:getDimY() / nProportion * nPosition
|
||||
end
|
||||
nTotSplitId = EgtLine( nTempSplitLayerId, b3OutlineLayer:getMin() + Y_AX() * nCalcPosition, b3OutlineLayer:getMin() + Y_AX() * nCalcPosition + X_AX() * b3OutlineLayer:getDimX())
|
||||
end
|
||||
-- calcolo split
|
||||
local nArea1Id, nArea2Id = WinCreate.AddGenSplit( nAreaLayerId, nTotSplitId, nSplitType)
|
||||
EgtErase( nTempSplitLayerId)
|
||||
return nArea1Id, nArea2Id
|
||||
end
|
||||
|
||||
-- funzione che crea tagli split multipli
|
||||
function WinCreate.AddSplits( nAreaLayerId, SplitType, MeasureType, PositionList, nProportion)
|
||||
if MeasureType == WIN_MEASURE.ABSOLUT then
|
||||
for nIndex = 1, #PositionList do
|
||||
WinCreate.AddSplit( nAreaLayerId, SplitType, MeasureType, PositionList[nIndex], nProportion)
|
||||
end
|
||||
elseif MeasureType == WIN_MEASURE.PROPORTIONAL then
|
||||
for nIndex = 1, #PositionList do
|
||||
WinCreate.AddSplit( nAreaLayerId, SplitType, MeasureType, PositionList[nIndex], nProportion)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea un taglio split da una curva generica
|
||||
function WinCreate.AddGenSplit( nAreaLayerId, nSplitId, nSplitType)
|
||||
-- se area nulla diventa di tipo split
|
||||
local nAreaType = EgtGetInfo( nAreaLayerId, WIN_AREATYPE, 'i')
|
||||
if nAreaType == WIN_AREATYPES.NULL then
|
||||
EgtSetInfo( nAreaLayerId, WIN_AREATYPE, WIN_AREATYPES.SPLIT)
|
||||
end
|
||||
-- creo layer per split
|
||||
local nSplitLayerId = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nSplitLayerId, WIN_BASESPLIT)
|
||||
-- sposto curva split nel layer
|
||||
EgtRelocateGlob( nSplitId, nSplitLayerId)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
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 profilo
|
||||
EgtSetName( nSplitId, WIN_SPLIT)
|
||||
-- creo aree
|
||||
local nArea1Id, nArea2Id = WinCreate.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
-- verifico se discende da Frame
|
||||
local nParentAreaId = nAreaLayerId
|
||||
local nParentAreaType = nAreaType
|
||||
-- recupero parent fino a trovare frame o sash
|
||||
while nParentAreaType ~= WIN_AREATYPES.FRAME and nParentAreaType ~= WIN_AREATYPES.SASH do
|
||||
nParentAreaId = EgtGetParent( nParentAreaId)
|
||||
nParentAreaType = EgtGetInfo( nParentAreaId, WIN_AREATYPE, 'i')
|
||||
end
|
||||
if nParentAreaType == WIN_AREATYPES.FRAME and nSplitType then
|
||||
-- imposto tipo di split
|
||||
EgtSetInfo( nSplitLayerId, WIN_SPLITTYPE, nSplitType)
|
||||
-- EgtSetInfo( nSplitLayerId, WIN_SPLITTYPE, EgtIf( not nSplitType, WIN_SPLITTYPES.MULLION, nSplitType))
|
||||
end
|
||||
return nArea1Id, nArea2Id
|
||||
end
|
||||
|
||||
-- funzione che crea tagli split da curve generiche
|
||||
function WinCreate.AddGenSplits( nAreaLayerId, SplitList)
|
||||
for nIndex = 1, #SplitList do
|
||||
WinCreate.AddSplit( nAreaLayerId, SplitList[nIndex])
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea le aree da un taglio split
|
||||
function WinCreate.CreateAreaFromSplit( nAreaLayerId, nSplitId)
|
||||
-- creo layer per le due aree
|
||||
local nArea1Id = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nArea1Id , WIN_AREA1)
|
||||
EgtSetInfo( nArea1Id, WIN_AREATYPE, WIN_AREATYPES.NULL)
|
||||
local nArea1OutlineLayerId = EgtGroup( nArea1Id)
|
||||
EgtSetName( nArea1OutlineLayerId , WIN_AREAOUTLINE)
|
||||
local nArea2Id = EgtGroup( nAreaLayerId)
|
||||
EgtSetName( nArea2Id , WIN_AREA2)
|
||||
EgtSetInfo( nArea2Id, WIN_AREATYPE, WIN_AREATYPES.NULL)
|
||||
local nArea2OutlineLayerId = EgtGroup( nArea2Id)
|
||||
EgtSetName( nArea2OutlineLayerId , WIN_AREAOUTLINE)
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaLayerId, WIN_AREAOUTLINE)
|
||||
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)
|
||||
EgtSetInfo( nCopyId, WIN_SOU, nOutlineId)
|
||||
EgtSetInfo( nOutlineId, WIN_CHILD, nCopyId)
|
||||
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)
|
||||
EgtSetInfo( nCopyId, WIN_SOU, nOutlineId)
|
||||
EgtSetInfo( nOutlineId, WIN_CHILD, nCopyId)
|
||||
local dEndIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveEndAtParam( nCopyId, dEndIntersParam)
|
||||
-- copio anche split
|
||||
local nSplitCopyId = EgtCopy( nSplitId, nArea2OutlineLayerId)
|
||||
EgtSetInfo( nSplitCopyId, WIN_SOU, nSplitId)
|
||||
EgtSetInfo( nSplitId, WIN_CHILD, nSplitCopyId)
|
||||
EgtRemoveInfo( nSplitCopyId, WIN_SPLIT_STARTINTERS)
|
||||
EgtRemoveInfo( nSplitCopyId, WIN_SPLIT_ENDINTERS)
|
||||
if not AreSamePointExact( EgtEP( nCopyId), EgtSP( nSplitCopyId)) then
|
||||
EgtInvertCurve( nSplitCopyId)
|
||||
end
|
||||
-- verifico direzione per dare nome
|
||||
local vtMedia = ( ( EgtEV( nSplitCopyId) - EgtSV( nSplitCopyId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtSV( nSplitCopyId)
|
||||
end
|
||||
if abs( vtMedia:getX()) > abs( vtMedia:getY()) then
|
||||
EgtSetName( nSplitCopyId, WIN_BOTTOM)
|
||||
else
|
||||
EgtSetName( nSplitCopyId, WIN_LEFT)
|
||||
end
|
||||
-- inizio area 1
|
||||
nCopyId = EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
EgtSetInfo( nCopyId, WIN_SOU, nOutlineId)
|
||||
EgtSetInfo( nOutlineId, WIN_CHILD, nCopyId)
|
||||
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)
|
||||
EgtSetInfo( nCopyId, WIN_SOU, nOutlineId)
|
||||
EgtSetInfo( nOutlineId, WIN_CHILD, nCopyId)
|
||||
local dEndIntersParam = EgtCurveParamAtPoint( nCopyId, ptInters)
|
||||
EgtTrimCurveEndAtParam( nCopyId, dEndIntersParam)
|
||||
-- copio anche split
|
||||
local nSplitCopyId = EgtCopy( nSplitId, nArea1OutlineLayerId)
|
||||
EgtRemoveName( nSplitCopyId)
|
||||
EgtSetInfo( nSplitCopyId, WIN_SOU, nSplitId)
|
||||
EgtSetInfo( nSplitId, WIN_CHILD, nSplitCopyId)
|
||||
EgtRemoveInfo( nSplitCopyId, WIN_SPLIT_STARTINTERS)
|
||||
EgtRemoveInfo( nSplitCopyId, WIN_SPLIT_ENDINTERS)
|
||||
if not AreSamePointExact( EgtEP( nCopyId), EgtSP( nSplitCopyId)) then
|
||||
EgtInvertCurve( nSplitCopyId)
|
||||
end
|
||||
-- verifico direzione per dare nome
|
||||
local vtMedia = ( ( EgtEV( nSplitCopyId) - EgtSV( nSplitCopyId)) / 2)
|
||||
if not vtMedia:normalize() then
|
||||
vtMedia = EgtSV( nSplitCopyId)
|
||||
end
|
||||
if abs( vtMedia:getX()) > abs( vtMedia:getY()) then
|
||||
EgtSetName( nSplitCopyId, WIN_TOP)
|
||||
else
|
||||
EgtSetName( nSplitCopyId, WIN_RIGHT)
|
||||
end
|
||||
end
|
||||
elseif nInters == 1 then
|
||||
-- copio nel profilo 2
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea2OutlineLayerId)
|
||||
EgtSetInfo( nCopyId, WIN_SOU, nOutlineId)
|
||||
EgtSetInfo( nOutlineId, WIN_CHILD, nCopyId)
|
||||
elseif nInters == 2 then
|
||||
-- copio nel profilo 1
|
||||
local nCopyId = EgtCopy( nOutlineId, nArea1OutlineLayerId)
|
||||
EgtSetInfo( nCopyId, WIN_SOU, nOutlineId)
|
||||
EgtSetInfo( nOutlineId, WIN_CHILD, nCopyId)
|
||||
end
|
||||
-- aggiorno indice
|
||||
nOutlineId = EgtGetNext( nOutlineId)
|
||||
-- se arrivato alla fine riparto
|
||||
if not nOutlineId then
|
||||
nOutlineId = EgtGetFirstInGroup( nOutlineLayerId)
|
||||
end
|
||||
end
|
||||
-- error('qqq')
|
||||
return nArea1Id, nArea2Id
|
||||
end
|
||||
|
||||
-- funzione che aggiunge uno zoccolo
|
||||
function WinCreate.AddBottomRail( nAreaId)
|
||||
local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i')
|
||||
if nAreaType == WIN_AREATYPES.FRAME then
|
||||
-- recupero l'outline bottom
|
||||
local nBaseOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
-- local nBottomOutlineId = EgtGetFirstNameInGroup( nBaseOutlineLayerId, WIN_BOTTOM)
|
||||
EgtSetInfo( nBaseOutlineLayerId, WIN_BOTTOMRAIL, 1)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinCreate
|
||||
@@ -0,0 +1,34 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinDesign = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
require( 'WinConst')
|
||||
|
||||
-- funzioni
|
||||
|
||||
function WinDesign.DesignFrame( dWidth, dHeight, nJointBL, nJointBR, nJointTR, nJointTL)
|
||||
|
||||
end
|
||||
|
||||
function WinDesign.DesignSash( sFilePath)
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinDesign
|
||||
@@ -0,0 +1,253 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WinManageProject = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinJWDConst = nil
|
||||
require( 'WinJWDConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.JSON = nil
|
||||
local JSON = require( 'JSON')
|
||||
|
||||
-- funzioni
|
||||
local function ConvertCurveToTableEntity( nCurveId)
|
||||
-- verifico il tipo di entita'
|
||||
local nBaseOutlineType = EgtGetType( nCurveId)
|
||||
if nBaseOutlineType == GDB_TY.CRV_LINE then
|
||||
local ptStart = EgtSP( nCurveId)
|
||||
local ptEnd = EgtEP( nCurveId)
|
||||
return { [JWD_CRV_TYPE] = nBaseOutlineType, [JWD_POINT_START] = ptStart, [JWD_POINT_END] = ptEnd}
|
||||
elseif nBaseOutlineType == GDB_TY.CRV_ARC then
|
||||
local ptStart = EgtSP( nCurveId)
|
||||
local ptEnd = EgtEP( nCurveId)
|
||||
local ptMid = EgtMP( nCurveId)
|
||||
return { [JWD_CRV_TYPE] = nBaseOutlineType, [JWD_POINT_START] = ptStart, [JWD_POINT_END] = ptEnd, [JWD_POINT_MID] = ptMid}
|
||||
elseif nBaseOutlineType == GDB_TY.CRV_COMPO then
|
||||
-- local ptStart = EgtSP( nCurveId)
|
||||
-- local ptEnd = EgtEP( nCurveId)
|
||||
-- local ptMid = EgtMP( nCurveId)
|
||||
-- return { Type = nBaseOutlineType, ptStart = ptStart, ptEnd = ptEnd, ptMid = ptMid}
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione ricorsiva che legge le aree e ne riporta i dati in tabella
|
||||
local function ConvertAreaToTable( nAreaId)
|
||||
local AreaTable = {}
|
||||
local nAreaType = EgtGetInfo( nAreaId, WIN_AREATYPE, 'i')
|
||||
AreaTable[JWD_AREA_TYPE] = nAreaType
|
||||
if nAreaType == WIN_AREATYPES.NULL then
|
||||
-- non faccio nulla
|
||||
elseif nAreaType == WIN_AREATYPES.FRAME then
|
||||
-- recupero outline del frame
|
||||
local nBaseOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE, 'i')
|
||||
local JointTable = {}
|
||||
-- recupero tipo giunzioni
|
||||
local nJointBL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
local nJointBR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
local nJointTL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
local nJointTR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
JointTable[JWD_JOINT_BL] = nJointBL
|
||||
JointTable[JWD_JOINT_BR] = nJointBR
|
||||
JointTable[JWD_JOINT_TL] = nJointTL
|
||||
JointTable[JWD_JOINT_TR] = nJointTR
|
||||
local OutlineTable = {}
|
||||
-- recupero contorno
|
||||
local nBaseOutlineId = EgtGetFirstInGroup( nBaseOutlineLayerId)
|
||||
local nBaseOutlineIndex = 1
|
||||
while nBaseOutlineId do
|
||||
local Entity = ConvertCurveToTableEntity( nBaseOutlineId)
|
||||
table.insert( OutlineTable, Entity)
|
||||
nBaseOutlineIndex = nBaseOutlineIndex + 1
|
||||
nBaseOutlineId = EgtGetNext( nBaseOutlineId)
|
||||
end
|
||||
AreaTable[JWD_JOINT] = JointTable
|
||||
AreaTable[JWD_OUTLINE] = OutlineTable
|
||||
-- verifico se c'e' BottomRail
|
||||
local nBottomRailId = EgtGetInfo( nBaseOutlineLayerId, WIN_BOTTOMRAIL, 'i')
|
||||
if nBottomRailId then
|
||||
AreaTable[JWD_BOTTOM_RAIL] = 1
|
||||
end
|
||||
elseif nAreaType == WIN_AREATYPES.SASH then
|
||||
local nBaseOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAOUTLINE)
|
||||
local JointTable = {}
|
||||
-- recupero tipo giunzioni
|
||||
local nJointBL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BL, 'i')
|
||||
local nJointBR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_BR, 'i')
|
||||
local nJointTL = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TL, 'i')
|
||||
local nJointTR = EgtGetInfo( nBaseOutlineLayerId, WIN_JOINT_TR, 'i')
|
||||
JointTable[JWD_JOINT_BL] = nJointBL
|
||||
JointTable[JWD_JOINT_BR] = nJointBR
|
||||
JointTable[JWD_JOINT_TL] = nJointTL
|
||||
JointTable[JWD_JOINT_TR] = nJointTR
|
||||
AreaTable[JWD_JOINT] = JointTable
|
||||
local nSashType = EgtGetInfo( nAreaId, WIN_SASHTYPE, 'i')
|
||||
if nSashType then
|
||||
AreaTable[JWD_SASH_TYPE] = nSashType
|
||||
end
|
||||
elseif nAreaType == WIN_AREATYPES.FILL then
|
||||
local nFillType = EgtGetInfo( nAreaId, WIN_FILLTYPE, 'i')
|
||||
AreaTable[JWD_FILL_TYPE] = nFillType
|
||||
|
||||
elseif nAreaType == WIN_AREATYPES.SPLIT then
|
||||
|
||||
|
||||
end
|
||||
-- verifico se c'e' Split
|
||||
local nSplitLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_BASESPLIT)
|
||||
if nSplitLayerId then
|
||||
local SplitTable = {}
|
||||
local nSplitId = EgtGetFirstInGroup( nSplitLayerId)
|
||||
local Entity = ConvertCurveToTableEntity( nSplitId)
|
||||
table.insert( SplitTable, Entity)
|
||||
AreaTable[JWD_SPLIT] = SplitTable
|
||||
end
|
||||
-- ciclo sulle aree contenute
|
||||
local nChildAreaId = EgtGetFirstNameInGroup( nAreaId, WIN_AREAASTERISK)
|
||||
local nChildIndex = 1
|
||||
while nChildAreaId do
|
||||
local ChildTable = ConvertAreaToTable( nChildAreaId)
|
||||
local AreaName = JWD_AREA .. nChildIndex
|
||||
AreaTable[AreaName] = ChildTable
|
||||
nChildIndex = nChildIndex + 1
|
||||
nChildAreaId = EgtGetNextName( nChildAreaId, WIN_AREAASTERISK)
|
||||
end
|
||||
return AreaTable
|
||||
end
|
||||
|
||||
-- funzione che converte una curva descritta in tabella in una geometria
|
||||
local function ConvertCurveTableToEntity( nDrawFrameLayerId, CurrCurve)
|
||||
if CurrCurve[JWD_CRV_TYPE] == GDB_TY.CRV_LINE then
|
||||
EgtLine( nDrawFrameLayerId, Point3d(CurrCurve[JWD_POINT_START]), Point3d(CurrCurve[JWD_POINT_END]))
|
||||
elseif CurrCurve[JWD_CRV_TYPE] == GDB_TY.CRV_ARC then
|
||||
EgtArc3P( nDrawFrameLayerId, Point3d(CurrCurve[JWD_POINT_START]), Point3d(CurrCurve[JWD_POINT_MID]), Point3d(CurrCurve[JWD_POINT_END]))
|
||||
elseif CurrCurve[JWD_CRV_TYPE] == GDB_TY.CRV_COMPO then
|
||||
-- local ptStart = EgtSP( nBaseOutlineId)
|
||||
-- local ptEnd = EgtEP( nBaseOutlineId)
|
||||
-- local ptMid = EgtMP( nBaseOutlineId)
|
||||
-- local Entity = { Type = nBaseOutlineType, ptStart = ptStart, ptEnd = ptEnd, ptMid = ptMid}
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione ricorsiva che legge le aree in tabella e crea le geometrie
|
||||
local function ConvertTableToGeometry( AreaTable, nAreaId)
|
||||
if AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.NULL then
|
||||
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.FRAME then
|
||||
-- creo gruppo e layer per contorno
|
||||
local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
for nIndex = 1, #AreaTable[JWD_OUTLINE] do
|
||||
local CurrCurve = AreaTable[JWD_OUTLINE][nIndex]
|
||||
ConvertCurveTableToEntity( nDrawFrameLayerId, CurrCurve)
|
||||
end
|
||||
local nFrameBottomId = EgtGetFirstInGroup(nDrawFrameLayerId)
|
||||
local nFrameRightId = EgtGetNext(nFrameBottomId)
|
||||
local nFrameTopId = EgtGetNext(nFrameRightId)
|
||||
local nFrameLeftId = EgtGetNext(nFrameTopId)
|
||||
-- creo frame
|
||||
nAreaId = WinCreate.CreateGenFrame( nFrameBottomId, nFrameRightId, nFrameTopId, nFrameLeftId, AreaTable[JWD_JOINT][JWD_JOINT_BL], AreaTable[JWD_JOINT][JWD_JOINT_BR], AreaTable[JWD_JOINT][JWD_JOINT_TR], AreaTable[JWD_JOINT][JWD_JOINT_TL])
|
||||
-- elimino contorno frame
|
||||
EgtErase( nDrawFramePartId)
|
||||
-- se BottomRail
|
||||
if AreaTable[JWD_BOTTOM_RAIL] and AreaTable[JWD_BOTTOM_RAIL] == 1 then
|
||||
WinCreate.AddBottomRail( nAreaId)
|
||||
end
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.SASH then
|
||||
nAreaId = WinCreate.AddSash( nAreaId, AreaTable[JWD_JOINT][JWD_JOINT_BL], AreaTable[JWD_JOINT][JWD_JOINT_BR], AreaTable[JWD_JOINT][JWD_JOINT_TR], AreaTable[JWD_JOINT][JWD_JOINT_TL], AreaTable[JWD_SASH_TYPE])
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.FILL then
|
||||
WinCreate.AddFill( nAreaId, AreaTable[JWD_FILL_TYPE])
|
||||
elseif AreaTable[JWD_AREA_TYPE] == WIN_AREATYPES.SPLIT then
|
||||
|
||||
end
|
||||
-- verifico se c'e' Split
|
||||
if AreaTable[JWD_SPLIT] then
|
||||
-- creo gruppo e layer per Split
|
||||
local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
ConvertCurveTableToEntity( nDrawFrameLayerId, AreaTable[JWD_SPLIT][1])
|
||||
local nArea1Id, nArea2Id = WinCreate.AddGenSplit( nAreaId, EgtGetFirstInGroup(nDrawFrameLayerId)) --, nSplitType)
|
||||
EgtErase(nDrawFramePartId)
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA .. 1], nArea1Id)
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA .. 2], nArea2Id)
|
||||
else
|
||||
-- ciclo sulle sotto aree
|
||||
local nChildIndex = 1
|
||||
while AreaTable[JWD_AREA ..nChildIndex] do
|
||||
ConvertTableToGeometry( AreaTable[JWD_AREA ..nChildIndex], nAreaId)
|
||||
nChildIndex = nChildIndex + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- funzione che crea le tabelle gerarchiche dalla struttura geometrica
|
||||
function WinManageProject.CreateTableFromGeom( nFrameId)
|
||||
-- creo la tabella
|
||||
local WinTable = {}
|
||||
-- riporto la path del profilo
|
||||
local nProfileId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local sProfilePath = EgtGetInfo( nProfileId, WIN_PROFILEPATH)
|
||||
WinTable[JWD_PROFILE_PATH] = sProfilePath
|
||||
-- leggo aree
|
||||
local FrameTable = ConvertAreaToTable( nFrameId)
|
||||
local AreaName = JWD_AREA .. 1
|
||||
WinTable[AreaName] = FrameTable
|
||||
return WinTable
|
||||
end
|
||||
|
||||
-- funzione che crea la struttura geometrica dalle tabelle gerarchiche
|
||||
function WinManageProject.CreateGeomFromTable( WinTable)
|
||||
-- importo profilo
|
||||
WinCreate.ImportProfile( WinTable[JWD_PROFILE_PATH])
|
||||
-- creo aree
|
||||
ConvertTableToGeometry( WinTable[JWD_AREA .. 1], GDB_ID.ROOT)
|
||||
end
|
||||
|
||||
-- funzione che dato un progetto gerarchico lo scrive in json su un file
|
||||
function WinManageProject.WriteToFile( nFrameId, sFilePath)
|
||||
local sFilePath = EgtChangePathExtension( sFilePath, JWD_EXT)
|
||||
local WinTable = WinManageProject.CreateTableFromGeom( nFrameId)
|
||||
local sData = JSON:encode_pretty(WinTable)
|
||||
local DestFh = io.open( sFilePath, 'w+')
|
||||
if not DestFh then
|
||||
EgtOutBox( 'Error opening ' .. sFilePath, 'WriteToFile', 'ERROR')
|
||||
return
|
||||
end
|
||||
DestFh:write( sData)
|
||||
DestFh:close()
|
||||
end
|
||||
|
||||
-- funzione che dato un file in json ne crea il progetto gerarchico
|
||||
function WinManageProject.ReadFromFile( sFilePath)
|
||||
local SouFh = io.open( sFilePath, "rb")
|
||||
if not SouFh then
|
||||
EgtOutBox( 'Error opening ' .. sFilePath, 'ReadFromFile', 'ERROR')
|
||||
return
|
||||
end
|
||||
local content = SouFh:read( "*all")
|
||||
SouFh:close()
|
||||
local tData = JSON:decode( content)
|
||||
WinManageProject.CreateGeomFromTable( tData)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WinManageProject
|
||||
@@ -0,0 +1,61 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
-- EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
local WinManageProject = require( 'WinManageProject')
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtStartCounter()
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
local sOpeneDirPath = 'c:\\EgtData\\Window\\Projects'
|
||||
local sFileName = 'RoundArc_TripleVerticalSash.jwd'
|
||||
local sOpenFilePath = sOpeneDirPath .. '\\' .. sFileName
|
||||
if WINDOW and WINDOW.FILE then
|
||||
sOpenFilePath = WINDOW.FILE
|
||||
end
|
||||
WinManageProject.ReadFromFile( sOpenFilePath)
|
||||
|
||||
-- imposto se calcolare i solidi o meno
|
||||
WinCalculate.SetCalcSolid( true)
|
||||
|
||||
-- creo i pezzi
|
||||
local nFrameId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREAASTERISK)
|
||||
WinCalculate.CreatePartFromArea( nFrameId)
|
||||
|
||||
EgtZoom( SCE_ZM.ALL)
|
||||
|
||||
-- riporto tempi di esecuzione
|
||||
local sOut = string.format( ' ExecTime = %.2f ms', EgtStopCounter())
|
||||
EgtOutLog( sOut)
|
||||
@@ -0,0 +1,542 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEEEEE GGGG GGGGGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEE GGGG GGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGGGGGG TTTT
|
||||
-- EEEEEEEEEE GGGGGG TTTT
|
||||
--
|
||||
-- by Egalware s.r.l.
|
||||
-- Window project software by Egalware s.r.l. 2023/05/02
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( true)
|
||||
-- EgtEnableDebug( false)
|
||||
|
||||
-- Imposto direttorio per librerie
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
EgtOutLog("BaseDir=" .. sBaseDir)
|
||||
EgtAddToPackagePath( sBaseDir .. '?.lua')
|
||||
EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua')
|
||||
|
||||
_G.package.loaded.WinConst = nil
|
||||
require( 'WinConst')
|
||||
_G.package.loaded.WinCreate = nil
|
||||
local WinCreate = require( 'WinCreate')
|
||||
_G.package.loaded.WinCalculate = nil
|
||||
local WinCalculate = require( 'WinCalculate')
|
||||
_G.package.loaded.WinManageProject = nil
|
||||
local WinManageProject = require( 'WinManageProject')
|
||||
|
||||
------------------------------------------- PARAMETERS -------------------------------------------
|
||||
local DebugCode = false
|
||||
|
||||
local HoleWidth = 1835
|
||||
local HoleHeight = 1516
|
||||
|
||||
local WindowWidth = 1800
|
||||
local WindowHeight = 1500
|
||||
|
||||
local WindowTree
|
||||
|
||||
local sProfilePath = 'c:\\EgtData\\Window\\Profiles\\Profilo78 - Offset.nge'
|
||||
|
||||
------------------------------------------- ************** -------------------------------------------
|
||||
|
||||
-- ciclo principale
|
||||
|
||||
EgtStartCounter()
|
||||
|
||||
EgtNewFile()
|
||||
|
||||
-- importo profilo prescelto
|
||||
WinCreate.ImportProfile( sProfilePath)
|
||||
|
||||
local sFileName = ''
|
||||
|
||||
-- creo telaio rettangolare
|
||||
sFileName = 'Rect_'
|
||||
local FrameJointType = WIN_JNT.FULL_H
|
||||
local nFrameId = WinCreate.CreateFrame( WindowWidth, WindowHeight, FrameJointType, FrameJointType, FrameJointType, FrameJointType)
|
||||
|
||||
-- -- creo telaio generico
|
||||
-- sFileName = 'RoundArc_'
|
||||
-- local nDrawFramePartId = EgtGroup( GDB_ID.ROOT)
|
||||
-- EgtSetName( nDrawFramePartId, 'DrawFrame')
|
||||
-- local nDrawFrameLayerId = EgtGroup( nDrawFramePartId)
|
||||
-- local nFrameBottomId = EgtLine( nDrawFrameLayerId, Point3d( 0, 0, 0), Point3d( WindowWidth, 0, 0))
|
||||
-- local nFrameRightId = EgtLine( nDrawFrameLayerId, Point3d( WindowWidth, 0, 0), Point3d( WindowWidth, WindowHeight, 0))
|
||||
-- local nFrameTopId = EgtArc2PV( nDrawFrameLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0), Vector3d( 0, 1, 0))
|
||||
-- --local nFrameTopId = EgtLine( nDrawFrameLayerId, Point3d( WindowWidth, WindowHeight, 0), Point3d( 0, WindowHeight, 0))
|
||||
-- local nFrameLeftId = EgtLine( nDrawFrameLayerId, Point3d( 0, WindowHeight, 0), Point3d( 0, 0, 0))
|
||||
-- local FrameJointType = WIN_JNT.FULL_H
|
||||
-- local nFrameId = WinCreate.CreateGenFrame( nFrameBottomId, nFrameRightId, nFrameTopId, nFrameLeftId, FrameJointType, FrameJointType, FrameJointType, FrameJointType)
|
||||
|
||||
------------------------ Finestra vetro fisso ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'FixedGlass'
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFillId = WinCreate.AddFill( nFrameId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'FixedGlass_HorizontalSplit'
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'FixedGlass_VerticalSplit'
|
||||
|
||||
-- -- aggiungo zoccolo
|
||||
-- WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra vetro fisso con divisione orizzontale e verticale ------------------------
|
||||
|
||||
sFileName = sFileName .. 'FixedGlass_Vertical&HorizontalSplit'
|
||||
|
||||
-- aggiungo zoccolo
|
||||
WinCreate.AddBottomRail( nFrameId)
|
||||
|
||||
-- definisco divisioni
|
||||
local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- aggiungo vetri
|
||||
local nFill1Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
local nFill2Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
local nFill3Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
local nFill4Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFillId = WinCreate.AddFill( nSashId, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione orizzontale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash_HorizontalSplit'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash_VerticalSplit'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea1Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra anta singola con divisione orizzontale e verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'Sash_Vertical&HorizontalSplit'
|
||||
|
||||
-- -- aggiungo anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSashId = WinCreate.AddSash( nFrameId, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- definisco divisioni
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nSashId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill1Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill2Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill3Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill4Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta con montante verticale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'DoubleVerticalSash_Mullion'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta battente ricevente ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'DoubleVerticalSash_French'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra doppia anta con montante orizzontale ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montanti verticali ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'TripleVerticalSash_Mullion'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montante verticale e ante battente e ricevente ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'TripleVerticalSash_Mullion&French'
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montanti orizzontali ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tripla anta con montante orizzontale e verticale ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 2)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
|
||||
------------------------ Finestra sei ante con montanti verticali e orizzontale ------------------------
|
||||
|
||||
-- sFileName = sFileName .. 'SixSash_Vertical&HorizontalMullion'
|
||||
|
||||
-- -- definisco divisione orizzontale
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco divisioni verticali
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea12Id, nArea13Id = WinCreate.AddSplit( nArea12Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea23Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea21Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea13Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quarta anta
|
||||
-- local nSash4Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quinta anta
|
||||
-- local nSash5Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo sesta anta
|
||||
-- local nSash6Id = WinCreate.AddSash( nArea23Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra sei ante con montante verticale e orizzontale ed ante battente ricevente ------------------------
|
||||
|
||||
-- -- definisco divisione orizzontale
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight / 2)
|
||||
|
||||
-- -- definisco divisioni verticali
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea12Id, nArea13Id = WinCreate.AddSplit( nArea12Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
-- local nArea21Id, nArea23Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nArea21Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea11Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill1Id = WinCreate.AddFill( nSash1Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea12Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill2Id = WinCreate.AddFill( nSash2Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea13Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill3Id = WinCreate.AddFill( nSash3Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quarta anta
|
||||
-- local nSash4Id = WinCreate.AddSash( nArea21Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill4Id = WinCreate.AddFill( nSash4Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo quinta anta
|
||||
-- local nSash5Id = WinCreate.AddSash( nArea22Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill5Id = WinCreate.AddFill( nSash5Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo sesta anta
|
||||
-- local nSash6Id = WinCreate.AddSash( nArea23Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetro
|
||||
-- local nFill6Id = WinCreate.AddFill( nSash6Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tre ante con montante verticale, ante battente ricevente e split di tutte le ante ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- definisco divisione
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nSash1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill11Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill12Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nSash2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill21Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill22Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea31Id, nArea32Id = WinCreate.AddSplit( nSash3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill31Id = WinCreate.AddFill( nArea31Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill32Id = WinCreate.AddFill( nArea32Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
------------------------ Finestra tre ante con montante orizzontale e verticale, ante battente ricevente e split di tutte le ante ------------------------
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea0Id = WinCreate.AddSplit( nFrameId, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight)
|
||||
|
||||
-- -- definisco prima divisione
|
||||
-- local nArea1Id, nArea2Id = WinCreate.AddSplit( nArea1Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3)
|
||||
|
||||
-- -- definisco seconda divisione
|
||||
-- local nArea2Id, nArea3Id = WinCreate.AddSplit( nArea2Id, WIN_SPLITORIENTATION.VERTICAL, WIN_MEASURE.ABSOLUT, WindowWidth / 3, _, WIN_SPLITTYPES.FRENCH)
|
||||
|
||||
-- -- aggiungo anta sopra
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash0Id = WinCreate.AddSash( nArea0Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill0Id = WinCreate.AddFill( nSash0Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo prima anta
|
||||
-- local SashJointType = WIN_JNT.FULL_V
|
||||
-- local nSash1Id = WinCreate.AddSash( nArea1Id, SashJointType, SashJointType, SashJointType, SashJointType)
|
||||
-- -- definisco divisione
|
||||
-- local nArea11Id, nArea12Id = WinCreate.AddSplit( nSash1Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill11Id = WinCreate.AddFill( nArea11Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill12Id = WinCreate.AddFill( nArea12Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo seconda anta
|
||||
-- local nSash2Id = WinCreate.AddSash( nArea2Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.INACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea21Id, nArea22Id = WinCreate.AddSplit( nSash2Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill21Id = WinCreate.AddFill( nArea21Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill22Id = WinCreate.AddFill( nArea22Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-- -- aggiungo terza anta
|
||||
-- local nSash3Id = WinCreate.AddSash( nArea3Id, SashJointType, SashJointType, SashJointType, SashJointType, WIN_SASHTYPES.ACTIVE)
|
||||
-- -- definisco divisione
|
||||
-- local nArea31Id, nArea32Id = WinCreate.AddSplit( nSash3Id, WIN_SPLITORIENTATION.HORIZONTAL, WIN_MEASURE.ABSOLUT, WindowHeight * 2 / 5)
|
||||
-- -- aggiungo vetri
|
||||
-- local nFill31Id = WinCreate.AddFill( nArea31Id, WIN_FILLTYPES.GLASS)
|
||||
-- local nFill32Id = WinCreate.AddFill( nArea32Id, WIN_FILLTYPES.GLASS)
|
||||
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
-- imposto se calcolare i solidi o meno
|
||||
WinCalculate.SetCalcSolid( true)
|
||||
|
||||
-- creo i pezzi
|
||||
local nFrameId = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AREAASTERISK)
|
||||
WinCalculate.CreatePartFromArea( nFrameId)
|
||||
|
||||
-- salvo progetto su file
|
||||
local sSaveDirPath = 'c:\\EgtData\\Window\\Projects'
|
||||
local sSaveFilePath = sSaveDirPath .. '\\' .. sFileName
|
||||
WinManageProject.WriteToFile( nFrameId, sSaveFilePath)
|
||||
|
||||
EgtZoom( SCE_ZM.ALL)
|
||||
|
||||
-- riporto tempi di esecuzione
|
||||
local sOut = string.format( ' ExecTime = %.2f ms', EgtStopCounter())
|
||||
EgtOutLog( sOut)
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"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": {
|
||||
"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 ]
|
||||
} ]
|
||||
},
|
||||
"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, 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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"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\\Window\\Profiles\\Profilo78 - Offset.nge"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"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.
Reference in New Issue
Block a user