3dPrinting :
- aggiunta possibilità di generare lo slicing senza calcolo dei solidi.
This commit is contained in:
@@ -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()
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user