61 Commits

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

Some files were not shown because too many files have changed in this diff Show More