3dPrinting 3.1e1 :
- corretto errore generazione icrx.
This commit is contained in:
@@ -13,8 +13,8 @@ EgtOutLog( ' RunPreprareExport started', 1)
|
||||
local AMD = require( 'AddManData')
|
||||
|
||||
------------------------------------------------------------------
|
||||
local function CalcCurves( nSliceId, nDestGrp, vtSlicing, dStrandBase)
|
||||
|
||||
local function CalcCurves( nSliceId, nDestGrp, dStrandBase)
|
||||
|
||||
-- scorro tutti i gruppi di curve
|
||||
local vCrvs = EgtGetNameInGroup( nSliceId, CONTOUR_GRP .. '*')
|
||||
for j = 1, #vCrvs do
|
||||
@@ -31,30 +31,40 @@ local function CalcCurves( nSliceId, nDestGrp, vtSlicing, dStrandBase)
|
||||
-- calcolo fat region a partire da una copia della curva ( in questo modo nel DB geometrico non restano
|
||||
-- salvati i diagrammi di Voronoi che non servono per conti futuri)
|
||||
local nCopy = EgtCopyGlob( nId, nDestGrp)
|
||||
local nSurf = EgtSurfFrFatCurve( nDestGrp, nCopy, 0.5 * dStrand, false)
|
||||
local nSurf = EgtSurfFrFatCurve( nDestGrp, nCopy, 0.5 * dStrand + 0.01, false)
|
||||
-- se fallisce ritento con valore leggermente diverso
|
||||
if not nSurf or nSurf == GDB_ID.NULL then
|
||||
nSurf = EgtSurfFrFatCurve( nDestGrp, nCopy, 0.5 * dStrand - 0.05, false)
|
||||
end
|
||||
EgtErase( nCopy)
|
||||
|
||||
|
||||
if nSurf then
|
||||
local nChunks = EgtSurfFrChunkCount( nSurf)
|
||||
for k = 0, nChunks - 1 do
|
||||
-- estraggo i loop associati
|
||||
local nCrv, nCnt = EgtExtractSurfFrChunkLoops( nSurf, k, nDestGrp)
|
||||
|
||||
-- eventuali aggiustamenti per creare un percorso unico
|
||||
if nCnt > 1 then
|
||||
for nLoopId = nCrv + 1, nCrv + nCnt - 1 do
|
||||
local dLen = EgtCurveLength( nLoopId)
|
||||
local dPar1 = EgtCurveParamAtLength( nLoopId, dLen * 0.5)
|
||||
local dPar2 = EgtCurveParamAtLength( nLoopId, dLen * 0.5 + 2 * GEO.EPS_SMALL)
|
||||
local ptM = EgtUP( nLoopId, dPar1)
|
||||
local ptM2 = EgtUP( nLoopId, dPar2)
|
||||
local _, _, dParRef1 = EgtPointCurveDist( ptM2, nCrv)
|
||||
local _, _, dParRef2 = EgtPointCurveDist( ptM, nCrv)
|
||||
EgtTrimCurveStartEndAtParam( nCrv, dParRef2, dParRef1)
|
||||
EgtTrimCurveStartEndAtParam( nLoopId, dPar2, dPar1)
|
||||
|
||||
-- recupero la prima curva del loop interno che non sia di raccordo
|
||||
local vTempProps = EgtCurveCompoGetTempProp( nLoopId)
|
||||
local dU
|
||||
for i = 1, #vTempProps do
|
||||
if vTempProps[i] > 0 then
|
||||
dU = i - 1
|
||||
break
|
||||
end
|
||||
end
|
||||
-- taglio il loop interno
|
||||
EgtChangeClosedCurveStart( nLoopId, dU + 0.5)
|
||||
EgtTrimCurveStartAtLen( nLoopId, 5 * GEO.EPS_SMALL)
|
||||
-- taglio il loop esterno in corrispondenza del loop interno
|
||||
local _, _, dPar = EgtPointCurveDist( EgtSP( nLoopId), nCrv)
|
||||
EgtChangeClosedCurveStart( nCrv, dPar)
|
||||
EgtTrimCurveStartAtLen( nCrv, 5 * GEO.EPS_SMALL)
|
||||
-- unisco le curve
|
||||
EgtAddCurveCompoLine( nCrv, EgtSP( nLoopId))
|
||||
EgtAddCurveCompoCurve( nCrv, nLoopId)
|
||||
EgtCloseCurveCompo( nCrv)
|
||||
@@ -190,7 +200,6 @@ function RunPrepareExport.Exec()
|
||||
end
|
||||
|
||||
for i = 1, #vSlices do
|
||||
|
||||
-- creo il gruppo corrispondente
|
||||
local nDestGrp = EgtGroup( nGrp)
|
||||
EgtSetName( nDestGrp, EgtGetName( vSlices[i]))
|
||||
@@ -200,10 +209,10 @@ function RunPrepareExport.Exec()
|
||||
if nSlicingType == SLICING_TYPE.MULTIPLANAR or nSlicingType == SLICING_TYPE.MULTIPLANAR_DEG45 or nSlicingType == SLICING_TYPE.MULTIPLANAR_HOR or bSpiralVase then
|
||||
GetSolids( vSlices[i], nDestGrp)
|
||||
else
|
||||
CalcCurves( vSlices[i], nDestGrp, vtSlicing, dStrandBase)
|
||||
CalcCurves( vSlices[i], nDestGrp, dStrandBase)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return nGrp
|
||||
end
|
||||
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
-- Version.lua by Egaltech s.r.l. 2026/03/23
|
||||
-- Version.lua by Egaltech s.r.l. 2026/05/04
|
||||
-- Gestione della versione di 3dPrinting
|
||||
|
||||
VERSION = '3.1d1'
|
||||
VERSION = '3.1e1'
|
||||
Reference in New Issue
Block a user