From 8ce7008a765cc0af43f329a20091cff671c8b9b7 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 23 Nov 2019 17:53:31 +0000 Subject: [PATCH] DataBeam : - aggiunto calcolo del solido della trave tramite operatori booleani su Stm. --- Beam.ini | 3 +- DisableFeatures.lua | 20 +++++++++++-- EnableFeatures.lua | 20 +++++++++++-- Images/ShowSolid.png | Bin 0 -> 1172 bytes ShowSolid.lua | 65 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 Images/ShowSolid.png create mode 100644 ShowSolid.lua diff --git a/Beam.ini b/Beam.ini index a7ddf23..f296cf4 100644 --- a/Beam.ini +++ b/Beam.ini @@ -11,4 +11,5 @@ Button6=EnableFeatures.lua,Images\EnableFeatures.png,Abilita lavorazioni Button7=BeamMachinings,Images\BeamMachinings.png,Lista lavorazioni Button8=HideAll.lua,Images\HideAll.png,Nascondi tutte le travi non selezionate Button9=ShowAll.lua,Images\ShowAll.png,Visualizza tutte le travi -Button10=ShowBuilding.lua,Images\ShowBuilding.png,Visualizza struttura/Visualizza pezzi +Button10=ShowSolid.lua,Images\ShowSolid.png,Visualizza/Nascondi solido +Button11=ShowBuilding.lua,Images\ShowBuilding.png,Visualizza struttura/Visualizza pezzi diff --git a/DisableFeatures.lua b/DisableFeatures.lua index bf26326..d6d781e 100644 --- a/DisableFeatures.lua +++ b/DisableFeatures.lua @@ -1,4 +1,4 @@ --- DisableFeatures.lua by Egaltech s.r.l. 2018/04/25 +-- DisableFeatures.lua by Egaltech s.r.l. 2019/11/22 -- Gestione disabilitazione delle feature selezionate -- Intestazioni @@ -10,11 +10,15 @@ if EgtGetSelectedObjCount() == 0 then EgtOutBox( 'Nessuna lavorazione selezionata', 'Disabilita lavorazioni', 'ERROR') end +-- Elenco dei pezzi interessati +local vParts = {} + +-- Disabilito features selezionate local nId = EgtGetFirstSelectedObj() while nId do -- verifico sia una feature local nParentId = EgtGetParent( nId) - if EgtIsLayer( nParentId) and EgtGetName( nParentId) == 'Processings' and + if EgtIsLayer( nParentId or GDB_ID.NULL) and EgtGetName( nParentId) == 'Processings' and EgtGetInfo( nId, 'GRP', 'i') and EgtGetInfo( nId, 'PRC', 'i') then EgtSetInfo( nId, 'DO', 0) EgtSetColor( nId, Color3d( 160, 160, 160)) @@ -22,10 +26,22 @@ while nId do if nAuxId then EgtSetColor( nId + nAuxId, Color3d( 160, 160, 160)) end + table.insert( vParts, EgtGetParent( nParentId)) end nId = EgtGetNextSelectedObj() end +-- Cancello eventuale solido dei pezzi interessati +table.sort( vParts) +local PrevPartId = GDB_ID.NULL +for i = 1, #vParts do + if vParts[i] ~= PrevPartId then + local SolidLy = EgtGetFirstNameInGroup( vParts[i], 'Solid') + EgtErase( SolidLy or GDB_ID.NULL) + PrevPartId = vParts[i] + end +end + EgtDeselectAll() EgtZoom( SCE_ZM.ALL) diff --git a/EnableFeatures.lua b/EnableFeatures.lua index e077e94..517c5d3 100644 --- a/EnableFeatures.lua +++ b/EnableFeatures.lua @@ -1,4 +1,4 @@ --- DisableFeatures.lua by Egaltech s.r.l. 2018/04/25 +-- DisableFeatures.lua by Egaltech s.r.l. 2019/11/22 -- Gestione abilitazione delle feature selezionate -- Intestazioni @@ -10,11 +10,15 @@ if EgtGetSelectedObjCount() == 0 then EgtOutBox( 'Nessuna lavorazione selezionata', 'Abilita lavorazioni', 'ERROR') end +-- Elenco dei pezzi interessati +local vParts = {} + +-- Abilito features selezionate local nId = EgtGetFirstSelectedObj() while nId do -- verifico sia una feature local nParentId = EgtGetParent( nId) - if EgtIsLayer( nParentId) and EgtGetName( nParentId) == 'Processings' and + if EgtIsLayer( nParentId or GDB_ID.NULL) and EgtGetName( nParentId) == 'Processings' and EgtGetInfo( nId, 'GRP', 'i') and EgtGetInfo( nId, 'PRC', 'i') then EgtRemoveInfo( nId, 'DO') EgtResetColor( nId) @@ -22,10 +26,22 @@ while nId do if nAuxId then EgtResetColor( nId + nAuxId) end + table.insert( vParts, EgtGetParent( nParentId)) end nId = EgtGetNextSelectedObj() end +-- Cancello eventuale solido dei pezzi interessati +table.sort( vParts) +local PrevPartId = GDB_ID.NULL +for i = 1, #vParts do + if vParts[i] ~= PrevPartId then + local SolidLy = EgtGetFirstNameInGroup( vParts[i], 'Solid') + EgtErase( SolidLy or GDB_ID.NULL) + PrevPartId = vParts[i] + end +end + EgtDeselectAll() EgtZoom( SCE_ZM.ALL) diff --git a/Images/ShowSolid.png b/Images/ShowSolid.png new file mode 100644 index 0000000000000000000000000000000000000000..383a95ef5397bf879c55b399a04a9adb2ee3822d GIT binary patch literal 1172 zcmV;F1Z(?=P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D00(qQO+^Rd1Q`_p zEeYVFQvd(}8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMGBNQWX_Wu~1Mx{jK~z{r z#h1x$6fqEnduFoCgb)Rkut#D^0tgO4f&(XRIr1FC@&dd~-+2ylXbFi6`z?eJh?HGf zNG8Mo+vOhH?e3lhL`h%TU3ORfUAEhqsNHU7D784LNUM8`lPO-hith_@9*UD8X>}}4 zs?tg=_-x4HWI|dUi<6qPI%WrS0!#9CGx}s`HKWhCE`y!+tC_a)hn_96@QXI2rOgkT z29}3a;-zR?H~=lMrS2`kndgfvP;JNTV4ek|9Qd&8pEE7?OV9iPF3$p1~m@!+BAB6WO&B_-fdJ|0S`)rJOFQ#L8 zYs(g7@D0J=;{MEFZuU*aRDr z&NUOo2f}_H_}{0CV61px7DoAE@zxfPaJ3MAS53h2|yk4%)NeKA<>GErpF>s(+w=GZb`C zQp4gtM3NOGtb$?1vuG8*b+qRJ#oPo{^{^gy4gGxXuU1X}5kv4j2>Fg=tP0msMcuP% zOVL9x0a(de8iZ5K4T7qv7{)&UorVd>x7KT_23U=n2-`*b5zsqQ3#9PNU{1ztnRtT` zbRsx^+i@x{Nz%GZ%>9tAOjSj(&b~PBSrkAm~(RVLX#ok&J7Mi@YII z#UB!j;EM9;s<-{G-U6J~hOD)g6R(7zGl&+(Zx??ho6iC(vZ#dV zjqnsu5I2I^3>3S7ey+*oOxyrLXCYb~cPAIOt{T_T%V-0B9#h=CHuUjj^i+0HwV<;U zEsO^=4{)xvd*A`?c>-`l@Oa|6$tmRGHydFHW441aErQOj(c(6d>xh-&*Z&-tOz%0Jp%@lHXJ6>5aSc%**AQXb m{KIJeZz??}gU)eq literal 0 HcmV?d00001 diff --git a/ShowSolid.lua b/ShowSolid.lua new file mode 100644 index 0000000..2663b15 --- /dev/null +++ b/ShowSolid.lua @@ -0,0 +1,65 @@ +-- ShowSolid.lua by Egaltech s.r.l. 2019/11/22 +-- Gestione calcolo solido di una Trave + +require( 'EgtBase') +_ENV = EgtProtectGlobal() +EgtEnableDebug( false) + +-- Funzione per visualizzazione del solido o standard +local function Show( PartId, bSolid) + local BoxLy = EgtGetFirstNameInGroup( PartId, 'Box') + EgtSetStatus( BoxLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) + local OutlineLy = EgtGetFirstNameInGroup( PartId, 'Outline') + EgtSetStatus( OutlineLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) + local ProcessingsLy = EgtGetFirstNameInGroup( PartId, 'Processings') + EgtSetStatus( ProcessingsLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) + local SolidLy = EgtGetFirstNameInGroup( PartId, 'Solid') + EgtSetStatus( SolidLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.ON, GDB_ST.OFF)) +end + +-- Recupero il pezzo del primo oggetto selezionato +local ObjId = EgtGetFirstSelectedObj() +local PartId = EgtGetParent( EgtGetParent( ObjId or GDB_ID.NULL) or GDB_ID.NULL) +if not PartId or not EgtIsPart( PartId) then + EgtOutBox( 'Nessuna trave selezionata', 'Show Solid', 'ERROR') + return +end +EgtDeselectAll() + +-- Recupero il Box +local BoxLy = EgtGetFirstNameInGroup( PartId, 'Box') +local BoxId = EgtGetFirstNameInGroup( BoxLy or GDB_ID.NULL, 'Box') +if not BoxId then + EgtOutBox( 'Trave senza Box', 'Show Solid', 'ERROR') + return +end + +-- Verifico esistenza del solido +local SolidLy = EgtGetFirstNameInGroup( PartId, 'Solid') +if not SolidLy then + SolidLy = EgtGroup( PartId) + EgtSetName( SolidLy, 'Solid') +end +local SolidId = EgtGetFirstNameInGroup( SolidLy, 'Solid') +if not SolidId then + SolidId = EgtCopyGlob( BoxId, SolidLy) + EgtSetName( SolidId, 'Solid') + EgtSetAlpha( SolidId, 100) + Show( PartId, true) +else + Show( PartId, ( EgtGetStatus( SolidLy) == GDB_ST.OFF)) + EgtDraw() + return +end + +-- Ciclo sulle features +local ProcLy = EgtGetFirstNameInGroup( PartId, 'Processings') +local ProcId = EgtGetFirstInGroup( ProcLy) +while ProcId do + if EgtGetInfo( ProcId, 'DO', 'i') ~= 0 and EgtGetType( ProcId) == GDB_TY.SRF_MESH then + EgtSurfTmIntersect( SolidId, ProcId) + end + ProcId = EgtGetNext( ProcId) +end + +EgtDraw()