3dPrinting 2.7h1 :
- aggiunto parametro RibsStrandOverlap per impostare una sovrapposizione tra le passate di uno stesso setto - aggiunto numero massimo di layer da realizzare.
This commit is contained in:
+23
-8
@@ -1287,7 +1287,8 @@ local function ComputeRibsOrientedOffset( nRibsGrp)
|
||||
local bCCW = EgtGetInfo( vIds[i], KEY_RIBS_USER_LINK_CCW, 'b') or false
|
||||
local nLinkOrder = EgtGetInfo( vIds[i], KEY_RIBS_USER_LINK_ORDER, 'i') or 0
|
||||
local dStrand = EgtGetInfo( vIds[i], KEY_RIBS_STRAND, 'd')
|
||||
local dOffs = ( nShellsNbr - 1) * dStrand / 2
|
||||
local dStrandOverlap = EgtGetInfo( vIds[i], KEY_RIBS_STRAND_OVERLAP, 'd') or 0
|
||||
local dOffs = ( nShellsNbr - 1) * ( 1 - dStrandOverlap / 100) * dStrand / 2
|
||||
|
||||
-- ordine di realizzazione degli offset
|
||||
if not bUserLinked then
|
||||
@@ -1303,7 +1304,7 @@ local function ComputeRibsOrientedOffset( nRibsGrp)
|
||||
|
||||
local vOffsRib = {}
|
||||
for k = 0, nShellsNbr - 1 do
|
||||
local dOffsCurr = dOffs - k * dStrand
|
||||
local dOffsCurr = dOffs - k * ( 1 - dStrandOverlap / 100) * dStrand
|
||||
local nNewId
|
||||
if abs( dOffsCurr) < GEO.EPS_SMALL then
|
||||
nNewId = EgtCopyGlob( vIds[i], nOffsGrp)
|
||||
@@ -1607,10 +1608,11 @@ local function AdjustRibsOffsetForIntersection( nCrv1, nCrv2, nOffsGrp, nLoopGrp
|
||||
|
||||
local nShells = EgtGetInfo( nCrv1, KEY_RIBS_SHELLS_NBR, 'i')
|
||||
local dStrand1 = EgtGetInfo( nCrv1, KEY_RIBS_STRAND, 'd')
|
||||
local dStrandOverlap1 = EgtGetInfo( nCrv1, KEY_RIBS_STRAND_OVERLAP, 'd') or 0
|
||||
local dOverlap = EgtGetInfo( nCrv2, KEY_RIBS_OVERLAP, 'i')
|
||||
local dStrand2 = EgtGetInfo( nCrv2, KEY_RIBS_STRAND, 'd')
|
||||
|
||||
if dOverlap / 100 * dStrand2 > nShells * dStrand1 * 0.5 - GEO.EPS_SMALL then
|
||||
if dOverlap / 100 * dStrand2 > ( nShells - 1) * ( 1 - dStrandOverlap1 / 100) * dStrand1 * 0.5 + dStrand1 * 0.5 - GEO.EPS_SMALL then
|
||||
-- non ha senso spezzare la curva, aggiorno solo split order dei suoi offset
|
||||
for i = 1, #vOffs2 do
|
||||
CopyInfo( nCrv2, vOffs2[i], KEY_SPLIT_ORDER, 'i')
|
||||
@@ -1619,7 +1621,7 @@ local function AdjustRibsOffsetForIntersection( nCrv1, nCrv2, nOffsGrp, nLoopGrp
|
||||
end
|
||||
|
||||
-- calcolo la superficie della curva principale ( nCrv1) da usare per trim
|
||||
local dOffs = nShells * dStrand1 * 0.5 + dStrand2 * ( 0.5 - dOverlap / 100)
|
||||
local dOffs = ( nShells - 1) * ( 1 - dStrandOverlap1 / 100) * dStrand1 * 0.5 + dStrand1 * 0.5 + dStrand2 * ( 0.5 - dOverlap / 100)
|
||||
local nSrf = EgtSurfFrFatCurve( nOffsGrp, nCrv1, dOffs, false, false, s_dOffsTol)
|
||||
if not nSrf then
|
||||
EgtOutLog( 'Error : ribs intersection failed (layer '.. EgtNumToString( s_nCurrIdx) ..') - CalcPaths')
|
||||
@@ -1678,9 +1680,11 @@ local function AdjustRibsOffsetForIntersection2Shells( nCrv1, nCrv2, nOffsGrp)
|
||||
|
||||
-- costruisco le superfici da usare per trim
|
||||
local dStrand1 = EgtGetInfo( nCrv1, KEY_RIBS_STRAND, 'd')
|
||||
local nSrf1 = EgtSurfFrFatCurve( nOffsGrp, nCrv1, dStrand1 * 0.5, false, false, s_dOffsTol)
|
||||
local dStrandOverlap1 = EgtGetInfo( nCrv1, KEY_RIBS_STRAND_OVERLAP, 'd') or 0
|
||||
local nSrf1 = EgtSurfFrFatCurve( nOffsGrp, nCrv1, ( 1 - dStrandOverlap1 / 100) * dStrand1 * 0.5, false, false, s_dOffsTol)
|
||||
local dStrand2 = EgtGetInfo( nCrv2, KEY_RIBS_STRAND, 'd')
|
||||
local nSrf2 = EgtSurfFrFatCurve( nOffsGrp, nCrv2, dStrand2 * 0.5, false, false, s_dOffsTol)
|
||||
local dStrandOverlap2 = EgtGetInfo( nCrv2, KEY_RIBS_STRAND_OVERLAP, 'd') or 0
|
||||
local nSrf2 = EgtSurfFrFatCurve( nOffsGrp, nCrv2, ( 1 - dStrandOverlap2 / 100) * dStrand2 * 0.5, false, false, s_dOffsTol)
|
||||
|
||||
-- trim degli offset di nCrv1
|
||||
local vOffs1 = EgtGetNameInGroup( nOffsGrp, EgtGetName( nCrv1)) or {}
|
||||
@@ -2143,6 +2147,7 @@ local function ReassignInfo( nCrv, nCnt, vOrig)
|
||||
CopyInfo( vOrig[i], nId, KEY_RIBS_LEAD_IN_LEN, 'd')
|
||||
CopyInfo( vOrig[i], nId, KEY_ASSOCIATED_SURF, 'i')
|
||||
CopyInfo( vOrig[i], nId, KEY_RIBS_OVERLAP, 'd')
|
||||
CopyInfo( vOrig[i], nId, KEY_RIBS_STRAND_OVERLAP, 'd')
|
||||
CopyInfo( vOrig[i], nId, KEY_RIBS_TYPE, 'i')
|
||||
CopyInfo( vOrig[i], nId, KEY_RIBS_LINK, 'b')
|
||||
CopyInfo( vOrig[i], nId, KEY_RIBS_LINK_FILLET, 'd')
|
||||
@@ -2585,7 +2590,8 @@ local function AddFillet( nRib1, vLinks, nRib2, nGrpId)
|
||||
local nSplit2 = EgtGetInfo( nRib2, KEY_SPLIT_ID, 'i') or 0
|
||||
if nOrig1 == nOrig2 and nSplit1 == nSplit2 then
|
||||
local dStrand = EgtGetInfo( nRib1, KEY_RIBS_STRAND, 'd')
|
||||
dFillet1 = min( dFillet1, 0.5 * dStrand)
|
||||
local dStrandOverlap = EgtGetInfo( nRib1, KEY_RIBS_STRAND_OVERLAP, 'd')
|
||||
dFillet1 = min( dFillet1, 0.5 * ( 1 - dStrandOverlap / 100) * dStrand)
|
||||
dFillet2 = dFillet1
|
||||
end
|
||||
|
||||
@@ -2833,9 +2839,18 @@ local function HandleRibsIntersectionForRibsMergedShells( vOrigRibs, nRibsGrp, n
|
||||
nCrv1, nCrv2 = nCrv2, nCrv1
|
||||
end
|
||||
|
||||
-- verifico che la curva secondaria abbia una sola passata
|
||||
local nShells2 = EgtGetInfo( nCrv2, KEY_RIBS_SHELLS_NBR, 'i')
|
||||
if nShells2 > 1 then
|
||||
EgtOutLog( 'Error : shell-merged ribs intersect in a non valid way (layer '.. EgtNumToString( s_nCurrIdx) ..') - CalcPaths')
|
||||
table.insert( s_vErr, ' - layer ' .. EgtNumToString( s_nCurrIdx) .. ' : error in ribs-merged shells intersection')
|
||||
return false
|
||||
end
|
||||
|
||||
-- calcolo la superficie della curva principale ( nCrv1) da usare per trim
|
||||
local nShells = EgtGetInfo( nCrv1, KEY_RIBS_SHELLS_NBR, 'i')
|
||||
local dOffs = (( nShells + 1) * 0.5 - dOverlap / 100) * dStrand
|
||||
local dStrandOverlap = EgtGetInfo( nCrv1, KEY_RIBS_STRAND_OVERLAP, 'd')
|
||||
local dOffs = (( nShells - 1) * ( 1 - dStrandOverlap / 100) * 0.5 + 1 - dOverlap / 100) * dStrand
|
||||
local nSrf = EgtSurfFrFatCurve( nGrpTmp, nCrv1, dOffs, false, false, s_dOffsTol)
|
||||
if not nSrf then
|
||||
EgtOutLog( 'Error : EgtSurfFrFatCurve for shell-merged ribs intersection failed (layer '.. EgtNumToString( s_nCurrIdx) ..') - CalcPaths')
|
||||
|
||||
Reference in New Issue
Block a user