3dPrinting :

- aggiunta possibilità di generare lo slicing senza calcolo dei solidi.
This commit is contained in:
SaraP
2022-09-26 16:02:05 +02:00
parent 11457644aa
commit 4a769ffc6f
8 changed files with 92 additions and 25 deletions
+18
View File
@@ -0,0 +1,18 @@
-- CalcSolids.lua by Egaltech s.r.l. 2022/09/26
-- Calcola i solidi a partire dallo slicing
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
-- Imposto direttorio libreria specializzata per Stampa 3d
local sBaseDir = EgtGetSourceDir()
EgtAddToPackagePath( sBaseDir .. 'LuaLibs\\?.lua')
-- Librerie
_G.package.loaded.RunCalcSolids = nil
local RCS = require( 'RunCalcSolids')
-- Calcolo
RCS.Exec()
+2
View File
@@ -35,6 +35,7 @@ MIN_RIBS_LEN = 2
-- Parametri di lavorazione
SEC_DEFAULT = "Default"
KEY_PARAMS = "Params"
KEY_CALC_SOLIDS = "CalcSolids"
KEY_SLICING_45 = "Slicing45"
KEY_SLICING_DIR="SlicingDir"
KEY_SLICE_STEP = "StrandH"
@@ -127,6 +128,7 @@ KEY_ZIG_ZAG_DIR = "ZigZagDir"
KEY_INVERTED_CRV = "InvertedCrv"
KEY_CLOSED_CRV = "ClosedCrv"
KEY_ASSOCIATED_SURF = "AssociatedSurf"
KEY_HAS_SOLIDS = "Solids"
TYPE = {
OUTER_SHELL = 1,
+1
View File
@@ -536,6 +536,7 @@ function CalcSlices.Exec( nPartId, nStmId, HMax)
local nCsId, nCsCnt = EgtExtractSurfFrChunkLoops( nId, 0, nGrpCrv)
for nId2 = nCsId, nCsId + nCsCnt - 1 do
EgtSetName( nId2, OUTER_CRV)
EgtSetStatus( nId2, GDB_ST.OFF)
EgtSetColor( nId2, 'BLACK')
end
end
@@ -1,17 +1,19 @@
-- CalcSolids.lua by Egaltech s.r.l. 2022/07/01
-- RunCalcSolids.lua by Egaltech s.r.l. 2022/07/01
-- Calcolo percorsi di lavoro per Stampa 3d
-- Tabella per definizione modulo
local CalcSolids = {}
local RunCalcSolids = {}
-- Intestazioni
require( 'EgtBase')
EgtOutLog( ' CalcSolids started', 1)
EgtOutLog( ' RunCalcSolids started', 1)
-- Dati
local AMD = require( 'AddManData')
-- PROG_PARTID = 1
---------------------------------------------------------------------
local s_nPartId
@@ -203,15 +205,22 @@ local function CreateSolidFromCurve( nCrvId, nSolidGrp, LayerParams)
end
---------------------------------------------------------------------
function CalcSolids.Exec( nPartId)
s_nPartId = nPartId
local vLayIds = EgtGetNameInGroup( s_nPartId, SLICE_LAYER.."*")
if not vLayIds then
EgtOutBox( 'Error no slice', 'SolidCalc')
return
function RunCalcSolids.Exec( nPartId)
s_nPartId = nPartId or PROG_PARTID
if not s_nPartId then
EgtOutBox( 'No part for solid calc', 'Error', 'ERROR')
return
end
-- recupero i suoi slice
local vLayIds = EgtGetNameInGroup( s_nPartId, SLICE_LAYER .. '*')
if not vLayIds then
EgtOutBox( 'No sliced part in this project!', 'Error', 'ERROR')
return
end
EgtSetInfo( s_nPartId, KEY_HAS_SOLIDS, 1)
local vErr = {}
-- recupero i parametri necessari al calcolo dei solidi
@@ -249,12 +258,6 @@ function CalcSolids.Exec( nPartId)
nId = EgtGetNext( nId)
end
-- nascondo ExternCurve del gruppo
local vExtCrvs = EgtGetNameInGroup( nCrvGrpId, OUTER_CRV)
for nInd = 1, #vExtCrvs do
EgtSetStatus( vExtCrvs[nInd], GDB_ST.OFF)
end
-- processo gli eventi
if ( nIdx % 20) == 0 then
EgtDraw()
@@ -267,7 +270,7 @@ function CalcSolids.Exec( nPartId)
nCrvGrpId = EgtGetNextName( nCrvGrpId, CONTOUR_GRP.."*") or GDB_ID.NULL
end
EgtDraw()
if EgtProcessEvents( EgtIf( PRINT, 300, 0) + nIdx / #vLayIds * 100, 0) == 1 then
if EgtProcessEvents( nIdx / #vLayIds * 100, 0) == 1 then
return
end
end
@@ -281,7 +284,13 @@ function CalcSolids.Exec( nPartId)
EgtOutLog( 'Error on solid creation (layer ' .. vErr[i] .. ') - SolidCalc')
end
-- eventuale aggiornamento delle ViewInfo
local nViewId = EgtGetFirstNameInGroup( GDB_ID.ROOT, VIEWPARAMS)
if nViewId then
EgtSetInfo( nViewId, SOLID_GRP, true)
end
end
---------------------------------------------------------------------
return CalcSolids
return RunCalcSolids
+10
View File
@@ -12,6 +12,10 @@ EgtOutLog( ' RunShowManager started', 1)
-- Costanti generali
local AMD = require( 'AddManData')
-- Librerie
_G.package.loaded.RunCalcSolids = nil
local CSOLIDS = require( 'RunCalcSolids')
---------------------------------------------------------------------
local function ShowImportedSolid( nPartId, bShow)
local nSolidLayId = EgtGetFirstNameInGroup( nPartId, PRINT_SOLID)
@@ -78,6 +82,12 @@ function RunShowManager.Exec()
local nPartIndex = 1
local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex)
while nPartId do
-- eventuale calcolo dei solidi
local bHasSolids = EgtGetInfo( nPartId, KEY_HAS_SOLIDS, 'b') or false
if not bHasSolids and bCurrSolid then
CSOLIDS.Exec( nPartId)
end
if bImportedSolid ~= bCurrImportedSolid then
ShowImportedSolid( nPartId, bCurrImportedSolid)
end
+11
View File
@@ -12,6 +12,10 @@ EgtOutLog( ' RunSliceAdvancement started', 1)
-- Costanti generali
local AMD = require( 'AddManData')
-- Librerie
_G.package.loaded.RunCalcSolids = nil
local CSOLIDS = require( 'RunCalcSolids')
---------------------------------------------------------------------
local function ManageSegmentVisibility( SegmentList, nLastActiveIndex, ToHideList)
for Index = 1, #SegmentList do
@@ -90,6 +94,13 @@ function RunSliceAdvancement.Exec()
local nPartIndex = 1
local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex)
while nPartId do
-- eventuale calcolo dei solidi
local bHasSolids = EgtGetInfo( nPartId, KEY_HAS_SOLIDS, 'b') or false
if not bHasSolids then
CSOLIDS.Exec( nPartId)
end
local nPrintOrder = EgtGetInfo( nPartId, KEY_PRINT_ORDER, 'i')
-- ciclo sui layer per dis/attivare il resto
local nLayerIndex = 1
+10
View File
@@ -12,12 +12,22 @@ EgtOutLog( ' RunSlicePalette started', 1)
-- Costanti generali
local AMD = require( 'AddManData')
-- Librerie
_G.package.loaded.RunCalcSolids = nil
local CSOLIDS = require( 'RunCalcSolids')
---------------------------------------------------------------------
function RunSlicePalette.UpdateColors( nPaletteType)
-- ciclo sui pezzi
local nPartIndex = 1
local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex)
while nPartId do
-- eventuale calcolo dei solidi
local bHasSolids = EgtGetInfo( nPartId, KEY_HAS_SOLIDS, 'b') or false
if not bHasSolids then
CSOLIDS.Exec( nPartId)
end
-- ciclo sui layer per dis/attivare il resto
local nLayerIndex = 1
local nLayerId = EgtGetFirstNameInGroup( nPartId, SLICE_LAYER .. nLayerIndex)
+12 -6
View File
@@ -20,8 +20,8 @@ _G.package.loaded.CalcSlices = nil
local CSLICES = require( 'CalcSlices')
_G.package.loaded.CalcPaths = nil
local CPATHS = require( 'CalcPaths')
_G.package.loaded.CalcSolids = nil
local CSOLIDS = require( 'CalcSolids')
_G.package.loaded.RunCalcSolids = nil
local CSOLIDS = require( 'RunCalcSolids')
_G.package.loaded.CalcToolPath = nil
local CTP = require( 'CalcToolPath')
@@ -36,6 +36,7 @@ local function LoadParams( sFile, nPartId)
EgtSetInfo( nPartId, KEY_PARAMS, sFile)
SetParamInfo( sFile, nPartId, SEC_DEFAULT, KEY_CALC_SOLIDS, '1')
SetParamInfo( sFile, nPartId, SEC_DEFAULT, KEY_SLICING_45, '0')
SetParamInfo( sFile, nPartId, SEC_DEFAULT, KEY_SLICE_STEP, '1.0')
SetParamInfo( sFile, nPartId, SEC_DEFAULT, KEY_STRAND, '6.0')
@@ -220,7 +221,7 @@ local function RemoveOldTFS()
end
---------------------------------------------------------------------
local function SetViewInfo()
local function SetViewInfo( bCalcSolids)
local nViewId = EgtGetFirstNameInGroup( GDB_ID.ROOT, VIEWPARAMS)
if not nViewId then
nViewId = EgtGroup( GDB_ID.ROOT)
@@ -230,7 +231,7 @@ local function SetViewInfo()
EgtSetInfo( nViewId, IMPORTED_SOLID, false)
EgtSetInfo( nViewId, OUTER_CRV, false)
EgtSetInfo( nViewId, PATH_GRP, false)
EgtSetInfo( nViewId, SOLID_GRP, true)
EgtSetInfo( nViewId, SOLID_GRP, bCalcSolids)
EgtSetInfo( nViewId, TOOLPATH_GRP, true)
end
@@ -340,7 +341,12 @@ function RunSlicing.Exec()
EgtDraw()
-- Calcolo dei solidi degli strand a partire dai percorsi di lavoro
CSOLIDS.Exec( nPartId)
local bCalcSolids = EgtGetInfo( nPartId, KEY_CALC_SOLIDS, 'b')
EgtRemoveInfo( nPartId, KEY_HAS_SOLIDS)
if bCalcSolids or bCalcSolids == nil then
CSOLIDS.Exec( nPartId)
end
EgtSetStatus( nSolidLayId, GDB_ST.OFF)
EgtSetStatus( nRibsLayId or GDB_ID.NULL, GDB_ST.OFF)
EgtSetStatus( nShellNbrLay or GDB_ID.NULL, GDB_ST.OFF)
@@ -349,7 +355,7 @@ function RunSlicing.Exec()
EgtDraw()
-- Aggiorno impostazioni di visibilita' per ShowManager
SetViewInfo()
SetViewInfo( bCalcSolids)
end