- correzioni cambio profilo.
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -234,8 +234,7 @@ WIN_GAPDELTAIN = 'GapDeltaIn'
|
||||
WIN_GAPDELTAOUT = 'GapDeltaOut'
|
||||
WIN_FIXED_REF = 'FixedRef'
|
||||
WIN_SASH_REF = 'SashRef'
|
||||
WIN_MIXED_DEPTH = 'MixedDepth'
|
||||
WIN_MIXED_FILLET = 'MixedFillet'
|
||||
WIN_SASH_DEPTH = 'SashDepth'
|
||||
WIN_PRC_PHASE = 'PHASE'
|
||||
WIN_PRC_PROFILE_TYPE = 'PROFILE_TYPE'
|
||||
WIN_PRC_NTOOLS = 'NTOOLS'
|
||||
|
||||
+186
-277
@@ -991,7 +991,7 @@ local function GetProfileCtrIn( nPrevOutlineId, nOutlineId, nPrevProfileId)
|
||||
else
|
||||
-- 2) pezzo del telaio con cambio profilo
|
||||
-- il profilo da usare dipende dal pezzo corrente: se ha figli di tipo fill allora è legato alla parte fill del cambio profilo, se ha figli di tipo sash è legato alla parte sash,
|
||||
-- se ha entrambe le tipologie di figli allora è mixed split e conviene considerare parte sash perchè ha DeltaCP minore
|
||||
-- se ha entrambe le tipologie di figli allora è mixed split e va considerata la parte sash ( perchè è quella utilizzata per tagliare il pezzo)
|
||||
local vSashChildren = EgtGetInfo( nOutlineId, WIN_SASH_CHILDREN, 'vi')
|
||||
if vSashChildren then
|
||||
sPrevCtrIn = WIN_SASH .. WIN_CTRIN
|
||||
@@ -1205,7 +1205,7 @@ local function CreateFrameGeo( nOutlineId, vPrevOutlineId, vNextOutlineId, nStar
|
||||
EgtSetInfo( nNextCurveId, WIN_SEMI_PROFILE, nNextSemiProfile)
|
||||
EgtSetInfo( nNextCurveId, WIN_REF_OUTLINE, vNextOutlineId[i])
|
||||
EgtRelocateGlob( nNextCurveId, nCurrOffsetId, GDB_IN.BEFORE)
|
||||
end
|
||||
end
|
||||
|
||||
-- trim delle curve
|
||||
TrimAndOrientOrderedCurveLayer( nGeoLayerId, false)
|
||||
@@ -1387,7 +1387,7 @@ local function CalcMixedOutlines( nPartId, nOutlineId)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che crea la curva di lavorazione sulla giunzione tra il pezzo di split e il pezzo di telaio con cambio profilo
|
||||
-- funzione che crea la curva di riferimento sulla giunzione tra il pezzo di split e il pezzo di telaio con cambio profilo
|
||||
local function CalcMixedIntersections( nPartId, nOutline, vOutlines)
|
||||
|
||||
local nGrp = EgtGroup( nPartId)
|
||||
@@ -1423,48 +1423,18 @@ local function CalcMixedIntersections( nPartId, nOutline, vOutlines)
|
||||
vtDir45:rotate( Z_AX(), EgtIf( bSashFill, 225, -45))
|
||||
local nCrv3 = EgtLinePVL( nGrp, ptRef1, vtDir45, 100)
|
||||
local nCrv4 = EgtCopyGlob( nOutline, nGrp)
|
||||
local dDeltaSashFrame = EgtGetInfo( nMainProfileId, WIN_SASH_REF, 'd')
|
||||
local dDeltaSashFrame = EgtGetInfo( nMainProfileId, WIN_SASH_REF .. '1', 'd')
|
||||
EgtOffsetCurve( nCrv4, - dDeltaSashFrame)
|
||||
local ptRef2 = EgtIP( nCrv3, nCrv4, ORIG())
|
||||
|
||||
-- ricavo il punto finale del tratto del telaio contro anta
|
||||
local nCrv5 = EgtCopyGlob( nSplitId, nGrp)
|
||||
local dSizeSplit = EgtGetInfo( nSplitProfileId, WIN_SASH_REF, 'd')
|
||||
EgtOffsetCurve( nCrv5, - dSizeSplit)
|
||||
local ptRef3 = EgtIP( nCrv4, nCrv5, ORIG())
|
||||
|
||||
-- creo la curva di intersezione :
|
||||
-- a) taglio a 45°
|
||||
-- curva di intersezione da usare come riferimento per i conti successivi
|
||||
local nCrv = EgtCurveCompoFromPoints( nGrp, { ptRef1, ptRef2})
|
||||
-- b) tratto lungo il telaio
|
||||
if bSashFill then
|
||||
EgtInvertCurve( nCrv4)
|
||||
end
|
||||
local dParS = EgtCurveParamAtPoint( nCrv4, ptRef2)
|
||||
local dParE = EgtCurveParamAtPoint( nCrv4, ptRef3)
|
||||
EgtTrimCurveStartEndAtParam( nCrv4, dParS, dParE)
|
||||
|
||||
-- c) fillet
|
||||
local dFillet = 0 -- EgtGetInfo( nSplitProfileId, WIN_MIXED_FILLET, 'd')
|
||||
local nFillet = EgtCurveFillet( nGrp, nCrv, EgtMP( nCrv), nCrv4, EgtMP( nCrv4), dFillet, true) or GDB_ID.NULL
|
||||
EgtAddCurveCompoCurve( nCrv, nFillet)
|
||||
EgtAddCurveCompoCurve( nCrv, nCrv4)
|
||||
|
||||
-- d) tratto lungo split
|
||||
if not EgtCurveParamAtPoint( nOutline, EgtSP( nSplitId)) then
|
||||
EgtInvertCurve( nCrv5)
|
||||
end
|
||||
local dPar = EgtCurveParamAtPoint( nCrv5, ptRef3)
|
||||
EgtTrimCurveStartAtParam( nCrv5, dPar)
|
||||
EgtTrimCurveEndAtLen( nCrv5, 100)
|
||||
EgtAddCurveCompoCurve( nCrv, nCrv5)
|
||||
|
||||
|
||||
-- cancello curve di costruzione
|
||||
EgtErase( { nCrv1, nCrv2, nCrv3, nCrv4, nCrv5})
|
||||
|
||||
EgtErase( { nCrv1, nCrv2, nCrv3, nCrv4})
|
||||
|
||||
-- assegno riferimento
|
||||
EgtSetInfo( vOutlines[i], WIN_MIXED_INTERS_REF, nCrv)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1505,11 +1475,52 @@ local function GetProcessingInfoFromSemiProfile( nCrv, nSemiProfile)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che calcola la lavorazione per l'innesto dello split sul telaio nel caso di cambio profilo
|
||||
local function CalcMixedFrameMillingProcessings( nIntersCrv, nOutlineId, dOffs, dDepth, nSplitRef, bSashFill, nProcLayerId, nSurfGeoId)
|
||||
|
||||
local nMilling = EgtCopyGlob( nIntersCrv, nProcLayerId)
|
||||
EgtExtendCurveStartByLen( nMilling, 100)
|
||||
|
||||
-- calcolo il tratto di outline
|
||||
local nOutlineCrv = EgtCopyGlob( nOutlineId, nProcLayerId)
|
||||
EgtOffsetCurve( nOutlineCrv, - dOffs)
|
||||
if bSashFill then
|
||||
EgtInvertCurve( nOutlineCrv)
|
||||
end
|
||||
local pt1 = EgtIP( nMilling, nOutlineCrv, ORIG())
|
||||
local pt2 = EgtIP( nOutlineCrv, nSplitRef, ORIG())
|
||||
local dParS = EgtCurveParamAtPoint( nOutlineCrv, pt1)
|
||||
local dParE = EgtCurveParamAtPoint( nOutlineCrv, pt2)
|
||||
EgtTrimCurveStartEndAtParam( nOutlineCrv, dParS, dParE)
|
||||
|
||||
-- aggiungo il tratto derivante dall'outline
|
||||
if not AreSamePointApprox( pt1, EgtEP( nMilling)) then
|
||||
local dParTrim = EgtCurveParamAtPoint( nMilling, pt1)
|
||||
EgtTrimCurveEndAtParam( nMilling, dParTrim)
|
||||
end
|
||||
EgtAddCurveCompoCurve( nMilling, nOutlineCrv)
|
||||
|
||||
-- aggiungo tratto di uscita a 45°
|
||||
local vtDir2 = EgtEV( nMilling)
|
||||
vtDir2:rotate( Z_AX(), EgtIf( bSashFill, - 45, 45))
|
||||
EgtAddCurveCompoLine( nMilling, EgtEP( nMilling) + vtDir2 * 100)
|
||||
|
||||
if bSashFill then
|
||||
EgtInvertCurve( nMilling)
|
||||
end
|
||||
EgtModifyCurveThickness( nMilling, - dDepth)
|
||||
EgtSetInfo( nMilling, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
|
||||
EgtTrimCurveWithRegion( nMilling, nSurfGeoId, true, false)
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che calcola le lavorazioni di profiling per un pezzo di telaio con cambio profilo
|
||||
local function CalcMixedFrameProfilingProcessings( nPartId, nProcLayerId, nGeoLayerId, nMainProfileId, nSurfGeoId)
|
||||
|
||||
-- per le lavorazioni dei profili out, left, right e in comune uso le corrispondenti curve del geo
|
||||
-- a) lavorazioni profili
|
||||
-- per le lavorazioni dei profili out, left, right e in comune si usano le corrispondenti curve del geo
|
||||
local vGeoCrvs = EgtGetAllInGroup( nGeoLayerId)
|
||||
for i = 1, #vGeoCrvs do
|
||||
-- copio curva
|
||||
@@ -1519,7 +1530,7 @@ local function CalcMixedFrameProfilingProcessings( nPartId, nProcLayerId, nGeoLa
|
||||
GetProcessingInfoFromSemiProfile( nCrv, nSemiProfile)
|
||||
end
|
||||
|
||||
-- lavorazione dei sottotratti in di sash e fill
|
||||
-- lavorazioni dei sottotratti in di sash e fill
|
||||
local nOutlinesGrp = EgtGetFirstNameInGroup( nPartId, WIN_MIXED_OUTLINES)
|
||||
local vCrvs = EgtGetAllInGroup( nOutlinesGrp)
|
||||
local b3Profile = GetProfileLocalBox( nMainProfileId)
|
||||
@@ -1527,7 +1538,6 @@ local function CalcMixedFrameProfilingProcessings( nPartId, nProcLayerId, nGeoLa
|
||||
for i = #vCrvs, 1, -1 do
|
||||
-- calcolo la curva di lavorazione
|
||||
local nCrv = EgtCopyGlob( vCrvs[i], nProcLayerId)
|
||||
EgtSetName( nCrv, WIN_GEO_IN)
|
||||
EgtOffsetCurve( nCrv, dOffs)
|
||||
EgtInvertCurve( nCrv)
|
||||
nCrv = EgtTrimCurveWithRegion( nCrv, nSurfGeoId, true, true)
|
||||
@@ -1536,87 +1546,72 @@ local function CalcMixedFrameProfilingProcessings( nPartId, nProcLayerId, nGeoLa
|
||||
GetProcessingInfoFromSemiProfile( nCrv, nSemiProfile)
|
||||
end
|
||||
|
||||
-- lavorazioni sulle intersezioni con gli split
|
||||
-- b) lavorazioni sulle intersezioni con gli split
|
||||
local nIntersGrp = EgtGetFirstNameInGroup( nPartId, WIN_MIXED_INTERSECTIONS)
|
||||
local vInters = EgtGetAllInGroup( nIntersGrp)
|
||||
local dDepth = EgtGetInfo( nMainProfileId, WIN_MIXED_DEPTH, 'd')
|
||||
local nOutlineId = EgtGetInfo( nPartId, WIN_REF_OUTLINE, 'i')
|
||||
for i = 1, #vInters do
|
||||
local nCrv = EgtCopyGlob( vInters[i], nProcLayerId)
|
||||
EgtSetName( nCrv, WIN_GEO_IN)
|
||||
nCrv = EgtTrimCurveWithRegion( nCrv, nSurfGeoId, true, true)
|
||||
EgtSetInfo( nCrv, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
|
||||
|
||||
local bSashFill = ( EgtGetName( vCrvs[i]) == WIN_SASH)
|
||||
-- recupero lo split associato e creo la curva di riferimento per le fresature
|
||||
local nSplitId = EgtGetInfo( vCrvs[i], WIN_MIXED_SPLIT_REF, 'i')
|
||||
local nSplitProfileId = GetOutlineProfileId( nSplitId, false)
|
||||
local dRefSplit = EgtGetInfo( nSplitProfileId, WIN_SASH_REF .. '2', 'd')
|
||||
local nSplitRef = EgtCopyGlob( nSplitId, nProcLayerId)
|
||||
EgtOffsetCurve( nSplitRef, - dRefSplit)
|
||||
|
||||
-- Fresatura 1
|
||||
local dOffs1 = EgtGetInfo( nMainProfileId, WIN_SASH_REF .. '1', 'd')
|
||||
local dDepth1 = EgtGetInfo( nMainProfileId, WIN_SASH_DEPTH .. '1', 'd')
|
||||
CalcMixedFrameMillingProcessings( vInters[i], nOutlineId, dOffs1, dDepth1, nSplitRef, bSashFill, nProcLayerId, nSurfGeoId)
|
||||
-- Fresatura 2
|
||||
local dOffs2 = EgtGetInfo( nMainProfileId, WIN_SASH_REF .. '2', 'd')
|
||||
local dDepth2 = EgtGetInfo( nMainProfileId, WIN_SASH_DEPTH .. '2', 'd')
|
||||
CalcMixedFrameMillingProcessings( vInters[i], nOutlineId, dOffs2, dDepth2, nSplitRef, bSashFill, nProcLayerId, nSurfGeoId)
|
||||
|
||||
EgtErase( nSplitRef)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CalcMixedSplitLeftRightProcessing( nOutlineId, nProfileId, sSemiProfileName, nSurfGeoId, nProcLayerId, sName)
|
||||
|
||||
local nCrv = EgtCopyGlob( nOutlineId, nProcLayerId)
|
||||
EgtSetName( nCrv, sName)
|
||||
-- posiziono correttamente
|
||||
local dDelta = GetDeltaProfile( nProfileId, sSemiProfileName)
|
||||
EgtOffsetCurve( nCrv, - dDelta)
|
||||
-- taglio con geo
|
||||
nCrv = EgtTrimCurveWithRegion( nCrv, nSurfGeoId, true, true)
|
||||
-- setto info di lavorazione
|
||||
local nSemiProfile = EgtGetFirstNameInGroup( nProfileId, sSemiProfileName)
|
||||
GetProcessingInfoFromSemiProfile( nCrv, nSemiProfile)
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che calcola le lavorazioni di profiling nel caso di uno split coinvolto da cambio profilo
|
||||
local function CalcMixedSplitProfilingProcessings( nSplitId, nProcLayerId, nGeoLayerId, nProfileLayerId, nSurfGeoId)
|
||||
local function CalcMixedSplitProfilingProcessings( nSplitId, nProcLayerId, nGeoLayerId)
|
||||
|
||||
-- 1) lavorazione profilo out
|
||||
local nGeoOutId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_OUT)
|
||||
local nCrvOutId = EgtCopyGlob( nGeoOutId, nProcLayerId)
|
||||
local nSemiProfileOutId = EgtGetInfo( nCrvOutId, WIN_SEMI_PROFILE, 'i')
|
||||
GetProcessingInfoFromSemiProfile( nCrvOutId, nSemiProfileOutId)
|
||||
|
||||
-- 2) lavorazione profilo in
|
||||
local nGeoInId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_IN)
|
||||
local nCrvInId = EgtCopyGlob( nGeoInId, nProcLayerId)
|
||||
local nSemiProfileInId = EgtGetInfo( nCrvInId, WIN_SEMI_PROFILE, 'i')
|
||||
GetProcessingInfoFromSemiProfile( nCrvInId, nSemiProfileInId)
|
||||
-- a) lavorazione dei profili
|
||||
local vGeoCrvs = EgtGetAllInGroup( nGeoLayerId)
|
||||
for i = 1, #vGeoCrvs do
|
||||
-- copio la curva
|
||||
local nCrvId = EgtCopyGlob( vGeoCrvs[i], nProcLayerId)
|
||||
-- recupero il semiprofilo associato ( per left e right è stato salvato il profilo di tipo sash)
|
||||
local nSemiProfileId = EgtGetInfo( nCrvId, WIN_SEMI_PROFILE, 'i')
|
||||
-- setto le info dal semiprofilo
|
||||
GetProcessingInfoFromSemiProfile( nCrvId, nSemiProfileId)
|
||||
end
|
||||
|
||||
-- b) tagli a 45°
|
||||
-- left
|
||||
local nMixedLeft = EgtGetInfo( nSplitId, WIN_MIXED_REF_START, 'i')
|
||||
local nIntersLeft = EgtGetInfo( nMixedLeft, WIN_MIXED_INTERS_REF, 'i')
|
||||
local nMillingLeft = EgtCopyGlob( nIntersLeft, nProcLayerId)
|
||||
EgtSetName( nMillingLeft, WIN_LEFT)
|
||||
EgtSetInfo( nMillingLeft, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
|
||||
-- recupero profondità
|
||||
local vOutlineLeft = EgtGetInfo( nSplitId, WIN_PREV_OUTLINES, 'vi')
|
||||
local nProfileLeft = GetOutlineProfileId( vOutlineLeft[1], false)
|
||||
local dDepthLeft = EgtGetInfo( nProfileLeft, WIN_SASH_DEPTH .. '2', 'd')
|
||||
EgtModifyCurveThickness( nMillingLeft, - dDepthLeft)
|
||||
|
||||
-- 3) lavorazioni profili left
|
||||
local nStartProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_START)
|
||||
-- a) parte comune dell'outline del telaio
|
||||
local nOutlineLId = EgtGetInfo( nSplitId, WIN_PREV_OUTLINES, 'i')
|
||||
CalcMixedSplitLeftRightProcessing( nOutlineLId, nStartProfileId, WIN_MIXED_COMMON .. WIN_CTRIN, nSurfGeoId, nProcLayerId, WIN_LEFT)
|
||||
-- b) sottotratti sash e fill
|
||||
local nOutlineL1Id = EgtGetInfo( nSplitId, WIN_MIXED_REF_START, 'i')
|
||||
CalcMixedSplitLeftRightProcessing( nOutlineL1Id, nStartProfileId, EgtGetName( nOutlineL1Id) .. WIN_CTRIN, nSurfGeoId, nProcLayerId, WIN_LEFT)
|
||||
local nOutlineL2Id = EgtGetNext( nOutlineL1Id)
|
||||
CalcMixedSplitLeftRightProcessing( nOutlineL2Id, nStartProfileId, EgtGetName( nOutlineL2Id) .. WIN_CTRIN, nSurfGeoId, nProcLayerId, WIN_LEFT)
|
||||
-- c) curva di intersezione
|
||||
local nOutlineL3Id = EgtGetInfo( nOutlineL1Id, WIN_MIXED_INTERS_REF, 'i')
|
||||
local nLeftId = EgtCopyGlob( nOutlineL3Id, nProcLayerId)
|
||||
EgtSetName( nLeftId, WIN_LEFT)
|
||||
local _, dParEL = EgtCurveDomain( nOutlineL3Id)
|
||||
EgtTrimCurveEndAtParam( nLeftId, dParEL - 1)
|
||||
-- setto info di lavorazione
|
||||
EgtSetInfo( nLeftId, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
|
||||
|
||||
-- 4) lavorazioni profili right
|
||||
local nEndProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_END)
|
||||
-- a) parte comune dell'outline del telaio
|
||||
local nOutlineRId = EgtGetInfo( nSplitId, WIN_NEXT_OUTLINES, 'i')
|
||||
CalcMixedSplitLeftRightProcessing( nOutlineRId, nEndProfileId, WIN_MIXED_COMMON .. WIN_CTRIN, nSurfGeoId, nProcLayerId, WIN_RIGHT)
|
||||
-- b) sottotratti sash e fill
|
||||
local nOutlineR1Id = EgtGetInfo( nSplitId, WIN_MIXED_REF_END, 'i')
|
||||
CalcMixedSplitLeftRightProcessing( nOutlineR1Id, nEndProfileId, EgtGetName( nOutlineR1Id) .. WIN_CTRIN, nSurfGeoId, nProcLayerId, WIN_RIGHT)
|
||||
local nOutlineR2Id = EgtGetNext( nOutlineR1Id)
|
||||
CalcMixedSplitLeftRightProcessing( nOutlineR2Id, nEndProfileId, EgtGetName( nOutlineR2Id) .. WIN_CTRIN, nSurfGeoId, nProcLayerId, WIN_RIGHT)
|
||||
-- b) curva di intersezione
|
||||
local nOutlineR3Id = EgtGetInfo( nOutlineR1Id, WIN_MIXED_INTERS_REF, 'i')
|
||||
local nRightId = EgtCopyGlob( nOutlineR3Id, nProcLayerId)
|
||||
EgtSetName( nRightId, WIN_RIGHT)
|
||||
local _, dParER = EgtCurveDomain( nOutlineR3Id)
|
||||
EgtTrimCurveEndAtParam( nRightId, dParER - 1)
|
||||
-- setto info di lavorazione
|
||||
EgtSetInfo( nRightId, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
|
||||
-- right
|
||||
local nMixedRight = EgtGetInfo( nSplitId, WIN_MIXED_REF_END, 'i')
|
||||
local nIntersRight = EgtGetInfo( nMixedRight, WIN_MIXED_INTERS_REF, 'i')
|
||||
local nMillingRight = EgtCopyGlob( nIntersRight, nProcLayerId)
|
||||
EgtSetName( nMillingRight, WIN_RIGHT)
|
||||
EgtSetInfo( nMillingRight, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
|
||||
local vOutlineRight = EgtGetInfo( nSplitId, WIN_NEXT_OUTLINES, 'vi')
|
||||
local nProfileRight = GetOutlineProfileId( vOutlineRight[1], false)
|
||||
local dDepthRight = EgtGetInfo( nProfileRight, WIN_SASH_DEPTH .. '2', 'd')
|
||||
EgtModifyCurveThickness( nMillingRight, - dDepthRight)
|
||||
EgtInvertCurve( nMillingRight)
|
||||
|
||||
end
|
||||
|
||||
@@ -1643,7 +1638,7 @@ local function CalcProfilingProcessings( nPartId, nOutlineId)
|
||||
if bChangeProfile then
|
||||
-- 1) caso cambio profilo : telaio o split
|
||||
if EgtGetName( nOutlineId) == WIN_SPLIT then
|
||||
CalcMixedSplitProfilingProcessings( nOutlineId, nProcLayerId, nGeoLayerId, nProfileLayerId, nSurfGeo)
|
||||
CalcMixedSplitProfilingProcessings( nOutlineId, nProcLayerId, nGeoLayerId)
|
||||
else
|
||||
CalcMixedFrameProfilingProcessings( nPartId, nProcLayerId, nGeoLayerId, nMainProfileId, nSurfGeo)
|
||||
end
|
||||
@@ -1774,87 +1769,33 @@ local function CreateTrimSurf( nGeoId, nProfileId, dGeoWidth, nLayerId)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che crea la superficie di trim per uno split coinvolto da cambio profilo
|
||||
local function CreateMixedSplitTrimSurf( nOutlineId1, nProfileId, dExtraLen, nLayerId)
|
||||
-- funzione che crea le superfici di trim per uno split coinvolto da cambio profilo ( controprofilo della parte sash del telaio e taglio a 45°)
|
||||
local function CreateMixedSplitTrimSurf( nMixedOutlineId, nProfileId, dExtraLen, nLayerId)
|
||||
|
||||
-- recupero il frame del profilo
|
||||
local nFrameId = EgtGetFirstNameInGroup( nProfileId, WIN_SECTIONFRAME)
|
||||
local frProfile = EgtFR( nFrameId, GDB_ID.ROOT)
|
||||
local vtDirX = frProfile:getVersX()
|
||||
frProfile:invert()
|
||||
|
||||
-- punto di riferimento per le estensioni degli outlines del telaio
|
||||
local nIntersCrvId = EgtGetInfo( nOutlineId1, WIN_MIXED_INTERS_REF, 'i')
|
||||
local nPartId = EgtGetParent( EgtGetParent( nOutlineId1))
|
||||
-- estrudo il controprofilo di tipo sash
|
||||
local nPartId = EgtGetParent( EgtGetParent( nMixedOutlineId))
|
||||
local nOutlineId = EgtGetInfo( nPartId, WIN_REF_OUTLINE, 'i')
|
||||
local _, dParE = EgtCurveDomain( nIntersCrvId)
|
||||
local _, ptOutline = EgtPointCurveDist( EgtUP( nIntersCrvId, dParE - 2), nOutlineId)
|
||||
|
||||
-- primo tratto
|
||||
local nGuideId1 = EgtCopy( nOutlineId1, nLayerId)
|
||||
EgtExtendCurveStartByLen( nGuideId1, 2 * dExtraLen)
|
||||
EgtModifyCurveEndPoint( nGuideId1, ptOutline)
|
||||
-- recupero il controprofilo corrispondente
|
||||
local sProfileName1 = WIN_OFST .. EgtGetName( nGuideId1) .. WIN_CTRIN
|
||||
local nOrigProfileId1 = EgtGetFirstNameInGroup( nProfileId, sProfileName1)
|
||||
-- aggiungo un tratto di chiusura superiore per le operazioni booleane
|
||||
local nProfileId1 = EgtCopyGlob( nOrigProfileId1, nLayerId)
|
||||
EgtAddCurveCompoLine( nProfileId1, EgtEP( nProfileId1) + dExtraLen * vtDirX)
|
||||
-- posiziono il controprofilo grazie ai riferimenti
|
||||
EgtTransform( nProfileId1, frProfile, GDB_RT.GLOB)
|
||||
EgtTransform( nProfileId1, Frame3d( EgtSP( nGuideId1), - EgtSV( nGuideId1)))
|
||||
-- creo la superficie di estrusione
|
||||
local nStmId1 = EgtSurfTmSwept( nLayerId, nProfileId1, nGuideId1, false, WIN_SURF_APPROX)
|
||||
|
||||
-- secondo tratto
|
||||
local nOutlineId2 = EgtGetNext( nOutlineId1)
|
||||
local nGuideId2 = EgtCopy( nOutlineId2, nLayerId)
|
||||
EgtExtendCurveEndByLen( nGuideId2, 2 * dExtraLen)
|
||||
EgtModifyCurveStartPoint( nGuideId2, ptOutline)
|
||||
-- recupero il controprofilo corrispondente
|
||||
local sProfileName2 = WIN_OFST .. EgtGetName( nGuideId2) .. WIN_CTRIN
|
||||
local nOrigProfileId2 = EgtGetFirstNameInGroup( nProfileId, sProfileName2)
|
||||
-- aggiungo un tratto di chiusura superiore per le operazioni booleane
|
||||
local nProfileId2 = EgtCopyGlob( nOrigProfileId2, nLayerId)
|
||||
EgtAddCurveCompoLine( nProfileId2, EgtEP( nProfileId2) + dExtraLen * vtDirX)
|
||||
-- posiziono grazie ai riferimenti
|
||||
EgtTransform( nProfileId2, frProfile, GDB_RT.GLOB)
|
||||
EgtTransform( nProfileId2, Frame3d( EgtSP( nGuideId2), - EgtSV( nGuideId2)))
|
||||
-- creo la superficie di estrusione
|
||||
local nStmId2 = EgtSurfTmSwept( nLayerId, nProfileId2, nGuideId2, false, WIN_SURF_APPROX)
|
||||
|
||||
-- creo un solido chiuso per la regione di intersezione
|
||||
local nGuideId3 = EgtCopy( nIntersCrvId, nLayerId)
|
||||
EgtExtendCurveEndByLen( nGuideId3, 2 * dExtraLen)
|
||||
EgtExtendCurveStartByLen( nGuideId3, 2 * dExtraLen)
|
||||
EgtCloseCurveCompo( nGuideId3)
|
||||
EgtMove( nGuideId3, Z_AX())
|
||||
local dDepth = EgtGetInfo( nProfileId, WIN_MIXED_DEPTH, 'd')
|
||||
local nStmCutId = EgtSurfTmByRegionExtrusion( nLayerId, nGuideId3, - ( dDepth + 1) * Z_AX())
|
||||
local nTrimStmId = CreateProfileSurf( nOutlineId, nProfileId, WIN_OFST .. WIN_SASH .. WIN_CTRIN, dExtraLen, nLayerId)
|
||||
|
||||
-- creo superficie complessiva
|
||||
local nTrimStmId = EgtSurfTmByTriangles( nLayerId, { nStmId1, nStmId2})
|
||||
-- operazione booleana di add e non di subtract perchè nTrimStmId è invertita rispetto al solido del telaio, essendo stata costruita a partire dai controprofili
|
||||
EgtSurfTmAdd( nTrimStmId, nStmCutId)
|
||||
|
||||
-- chiudo eventuali buchi
|
||||
local nLoop, nCnt = EgtExtractSurfTmLoops( nTrimStmId, nLayerId)
|
||||
if nCnt == 2 then
|
||||
local nStmHoleId = EgtSurfTmByFlatContour( nLayerId, nLoop + 1)
|
||||
EgtInvertSurf( nStmHoleId)
|
||||
nTrimStmId = EgtSurfTmByTriangles( nLayerId, { nTrimStmId, nStmHoleId})
|
||||
EgtErase( nLoop + 1)
|
||||
-- creo la superficie per il taglio a 45°
|
||||
local nIntersCrvId = EgtGetInfo( nMixedOutlineId, WIN_MIXED_INTERS_REF, 'i')
|
||||
local nGuideId = EgtCopyGlob( nIntersCrvId, nLayerId)
|
||||
EgtExtendCurveStartByLen( nGuideId, 10)
|
||||
EgtExtendCurveEndByLen( nGuideId, 10)
|
||||
EgtMove( nGuideId, Z_AX())
|
||||
if EgtGetName( nMixedOutlineId) ~= WIN_SASH then
|
||||
EgtInvertCurve( nGuideId)
|
||||
end
|
||||
|
||||
-- cancello curve di costruzione
|
||||
EgtErase( { nProfileId1, nProfileId2, nGuideId1, nGuideId2, nGuideId3, nStmCutId, nLoop})
|
||||
|
||||
return nTrimStmId
|
||||
local dDepth = EgtGetInfo( nProfileId, WIN_SASH_DEPTH .. '2', 'd')
|
||||
local nCutStmId = EgtSurfTmByRegionExtrusion( nLayerId, nGuideId, - ( dDepth + 2) * Z_AX())
|
||||
EgtErase( nGuideId)
|
||||
|
||||
return nTrimStmId, nCutStmId
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- funzione che crea il solido di estrusione principale
|
||||
local function CreateMainSurf( nOutlineId, dExtraLen, nProfileId, nLayerId)
|
||||
local function CreateMainSurf( nOutlineId, dExtraLen, nProfileId, sSectionName, nLayerId)
|
||||
|
||||
-- curva guida
|
||||
local nGuideId = EgtCopy( nOutlineId, nLayerId)
|
||||
@@ -1874,10 +1815,10 @@ local function CreateMainSurf( nOutlineId, dExtraLen, nProfileId, nLayerId)
|
||||
EgtChangeGroupFrame( nProfileId, Frame3d( EgtSP( nGuideId), - EgtSV( nGuideId)))
|
||||
|
||||
-- recupero outline del profilo Main e lo estrudo
|
||||
local nSectionId = EgtGetFirstNameInGroup( nProfileId, WIN_SECTION)
|
||||
local nSectionId = EgtGetFirstNameInGroup( nProfileId, sSectionName)
|
||||
local nMainExtrusionId = EgtSurfTmSwept( nLayerId, nSectionId, nGuideId, false, WIN_SURF_APPROX)
|
||||
EgtSetName( nMainExtrusionId, WIN_SRF_MAIN)
|
||||
|
||||
|
||||
return nMainExtrusionId
|
||||
end
|
||||
|
||||
@@ -1887,93 +1828,57 @@ local function CalcMixedFrameSolid( nOutlineId, nSolidLayerId, nProfileLayerId,
|
||||
|
||||
-- a) SOLIDO PRINCIPALE
|
||||
local nMainProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_MAIN)
|
||||
-- recupero i vari sottotratti uniformi del pezzo
|
||||
-- creo i solidi corrispondenti ai diversi sottotratti uniformi del pezzo
|
||||
local nMixedOutlinesGrp = EgtGetFirstNameInGroup( EgtGetParent( nSolidLayerId), WIN_MIXED_OUTLINES)
|
||||
local vMixedOutlines = EgtGetAllInGroup( nMixedOutlinesGrp)
|
||||
-- recupero le curve di intersezione con gli split
|
||||
local nMixedIntersectionsGrp = EgtGetFirstNameInGroup( EgtGetParent( nSolidLayerId), WIN_MIXED_INTERSECTIONS)
|
||||
local vIntersections = EgtGetAllInGroup( nMixedIntersectionsGrp)
|
||||
|
||||
-- creo i solidi corrispondenti ai diversi sottotratti
|
||||
local vMainExtrusions = {}
|
||||
for i = 1, #vMixedOutlines do
|
||||
|
||||
-- creo curva guida con estensione opportuna agli estremi per facilitare il calcolo del solido : se all'estremo del pezzo estensione
|
||||
-- arbitraria, altrimenti estendo fino ad incontrare il pezzo precedente/successivo nella regione dove si innesta lo split
|
||||
local nGuideId = EgtCopyGlob( vMixedOutlines[i], nSolidLayerId)
|
||||
if i == 1 then
|
||||
EgtExtendCurveStartByLen( nGuideId, 2 * dGeoWidth)
|
||||
else
|
||||
local _, dParE = EgtCurveDomain( vIntersections[i-1])
|
||||
local _, ptOutline = EgtPointCurveDist( EgtUP( vIntersections[i-1], dParE - 2), nOutlineId)
|
||||
EgtModifyCurveStartPoint( nGuideId, ptOutline)
|
||||
end
|
||||
if i == #vMixedOutlines then
|
||||
EgtExtendCurveEndByLen( nGuideId, 2 * dGeoWidth)
|
||||
else
|
||||
local _, dParE = EgtCurveDomain( vIntersections[i])
|
||||
local _, ptOutline = EgtPointCurveDist( EgtUP( vIntersections[i], dParE - 2), nOutlineId)
|
||||
EgtModifyCurveEndPoint( nGuideId, ptOutline)
|
||||
end
|
||||
|
||||
-- posiziono il profilo sulla guida
|
||||
local nMainProfileFrameId = EgtGetFirstNameInGroup( nMainProfileId, WIN_SECTIONFRAME)
|
||||
local frInvertMainProfile = EgtFR( nMainProfileFrameId)
|
||||
frInvertMainProfile:invert()
|
||||
EgtTransform( EgtGetAllInGroup( nMainProfileId), frInvertMainProfile)
|
||||
EgtChangeGroupFrame( nMainProfileId, Frame3d( EgtSP( nGuideId), - EgtSV( nGuideId)))
|
||||
|
||||
-- recupero la sezione e la estrudo
|
||||
local nSectionId = EgtGetFirstNameInGroup( nMainProfileId, EgtGetName( vMixedOutlines[i]) .. WIN_SECTION)
|
||||
local nMainExtrusionId = EgtSurfTmSwept( nSolidLayerId, nSectionId, nGuideId, false, WIN_SURF_APPROX)
|
||||
local nMainExtrusionId = CreateMainSurf( vMixedOutlines[i], 2 * dGeoWidth, nMainProfileId, EgtGetName( vMixedOutlines[i]) .. WIN_SECTION, nSolidLayerId)
|
||||
table.insert( vMainExtrusions, nMainExtrusionId)
|
||||
EgtErase( nGuideId)
|
||||
end
|
||||
|
||||
-- taglio i sottopezzi nei punti di intersezione per unirli
|
||||
local nMixedIntersectionsGrp = EgtGetFirstNameInGroup( EgtGetParent( nSolidLayerId), WIN_MIXED_INTERSECTIONS)
|
||||
local vIntersections = EgtGetAllInGroup( nMixedIntersectionsGrp)
|
||||
for i = 1, #vIntersections do
|
||||
-- creo la superficie di separazione tra i due sottopezzi
|
||||
local bSashFill = ( EgtGetName( vMixedOutlines[i]) == WIN_SASH)
|
||||
local vtDirS = EgtSV( vIntersections[i])
|
||||
vtDirS:rotate( Z_AX(), EgtIf( bSashFill, -135, 135))
|
||||
local vtDirE = EgtSV( vIntersections[i])
|
||||
vtDirE:rotate( Z_AX(), EgtIf( bSashFill, 45, -45))
|
||||
local nCrvTrim = EgtCurveCompo( nSolidLayerId, vIntersections[i], false)
|
||||
EgtAddCurveCompoLine( nCrvTrim, EgtSP( nCrvTrim) + dGeoWidth * vtDirS, false)
|
||||
EgtAddCurveCompoLine( nCrvTrim, EgtEP( nCrvTrim) + dGeoWidth * vtDirE)
|
||||
EgtMove( nCrvTrim, Z_AX())
|
||||
local nStmTrim = EgtSurfTmByExtrusion( nSolidLayerId, nCrvTrim, - 2 * dGeoWidth * Z_AX())
|
||||
|
||||
-- taglio i due sottopezzi
|
||||
EgtSurfTmSubtract( vMainExtrusions[i+1], nStmTrim)
|
||||
EgtInvertSurf( nStmTrim)
|
||||
EgtSurfTmSubtract( vMainExtrusions[i], nStmTrim)
|
||||
|
||||
EgtErase( nCrvTrim)
|
||||
EgtErase( nStmTrim)
|
||||
end
|
||||
|
||||
-- unisco i sottopezzi in una sola superficie
|
||||
for i = 2, #vMainExtrusions do
|
||||
EgtSurfTmAdd( vMainExtrusions[1], vMainExtrusions[i])
|
||||
EgtErase( vMainExtrusions[i])
|
||||
end
|
||||
|
||||
-- creo una copia dell'estrusione principale ( usata per ferramenta)
|
||||
local nOrigMainExtrusionId = EgtCopy( vMainExtrusions[1], nSolidLayerId)
|
||||
EgtSetName( nOrigMainExtrusionId, WIN_SRF_ORIGMAIN)
|
||||
EgtSetStatus( nOrigMainExtrusionId, GDB_ST.OFF)
|
||||
|
||||
-- come guida tengo solo una copia della curva di outline
|
||||
local vMainGuideIds = EgtGetNameInGroup( nSolidLayerId, WIN_MAINGUIDE)
|
||||
EgtErase( vMainGuideIds)
|
||||
local nMainGuideId = EgtCopyGlob( nOutlineId, nSolidLayerId)
|
||||
EgtSetName( nMainGuideId, WIN_MAINGUIDE)
|
||||
EgtSetStatus( nMainGuideId, GDB_ST.OFF)
|
||||
|
||||
-- unifico i diversi tratti di superficie calcolati
|
||||
local nMainExtrusionId = EgtSurfTmByTriangles( nSolidLayerId, vMainExtrusions)
|
||||
EgtSetName( nMainExtrusionId, WIN_SRF_MAIN)
|
||||
|
||||
-- taglio il solido con gli innesti degli split
|
||||
for i = 1, #vIntersections do
|
||||
-- creo una curva chiusa a partire dalla curva di intersezione
|
||||
local nCompo = EgtCopyGlob( vIntersections[i], nSolidLayerId)
|
||||
EgtExtendCurveEndByLen( nCompo, 2 * dGeoWidth)
|
||||
EgtExtendCurveStartByLen( nCompo, 2 * dGeoWidth)
|
||||
EgtCloseCurveCompo( nCompo)
|
||||
-- creo il solido
|
||||
EgtMove( nCompo, Z_AX())
|
||||
local dDepth = EgtGetInfo( nMainProfileId, WIN_MIXED_DEPTH, 'i')
|
||||
local nSrfCut = EgtSurfTmByRegionExtrusion( nSolidLayerId, nCompo, - ( dDepth + 1) * Z_AX())
|
||||
-- sottraggo
|
||||
EgtSurfTmSubtract( nMainExtrusionId, nSrfCut)
|
||||
EgtErase( nCompo)
|
||||
EgtErase( nSrfCut)
|
||||
end
|
||||
|
||||
-- chiudo i buchi ( caps ed eventuali parti on del solido di intersezione sul pezzo)
|
||||
local nLoop, nCnt = EgtExtractSurfTmLoops( nMainExtrusionId, nSolidLayerId)
|
||||
if nLoop then
|
||||
local vSurfs = { nMainExtrusionId}
|
||||
for nId = nLoop, nLoop + nCnt - 1 do
|
||||
local nHoleStmId = EgtSurfTmByFlatContour( nSolidLayerId, nId)
|
||||
EgtInvertSurf( nHoleStmId)
|
||||
table.insert( vSurfs, nHoleStmId)
|
||||
EgtErase( nId)
|
||||
end
|
||||
nMainExtrusionId = EgtSurfTmByTriangles( nSolidLayerId, vSurfs)
|
||||
EgtSetName( nMainExtrusionId, WIN_SRF_MAIN)
|
||||
end
|
||||
|
||||
-- creo una copia dell'estrusione principale ( usata per ferramenta)
|
||||
local nOrigMainExtrusionId = EgtCopy( nMainExtrusionId, nSolidLayerId)
|
||||
EgtSetName( nOrigMainExtrusionId, WIN_SRF_ORIGMAIN)
|
||||
EgtSetStatus( nOrigMainExtrusionId, GDB_ST.OFF)
|
||||
|
||||
-- b) TRIM START
|
||||
local nPrevGeoId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_LEFT)
|
||||
@@ -1981,7 +1886,7 @@ local function CalcMixedFrameSolid( nOutlineId, nSolidLayerId, nProfileLayerId,
|
||||
local nTrimSurfStart = CreateTrimSurf( nPrevGeoId, nStartProfileId, dGeoWidth, nSolidLayerId)
|
||||
EgtSetName( nTrimSurfStart, WIN_SRF_START)
|
||||
EgtSetStatus( nTrimSurfStart, GDB_ST.OFF)
|
||||
EgtSurfTmIntersect( nMainExtrusionId, nTrimSurfStart)
|
||||
EgtSurfTmIntersect( vMainExtrusions[1], nTrimSurfStart)
|
||||
|
||||
-- c) TRIM END
|
||||
local nNextGeoId = EgtGetFirstNameInGroup( nGeoLayerId, WIN_GEO_RIGHT)
|
||||
@@ -1989,7 +1894,7 @@ local function CalcMixedFrameSolid( nOutlineId, nSolidLayerId, nProfileLayerId,
|
||||
local nTrimSurfEnd = CreateTrimSurf( nNextGeoId, nEndProfileId, dGeoWidth, nSolidLayerId)
|
||||
EgtSetName( nTrimSurfEnd, WIN_SRF_END)
|
||||
EgtSetStatus( nTrimSurfEnd, GDB_ST.OFF)
|
||||
EgtSurfTmIntersect( nMainExtrusionId, nTrimSurfEnd)
|
||||
EgtSurfTmIntersect( vMainExtrusions[1], nTrimSurfEnd)
|
||||
|
||||
end
|
||||
|
||||
@@ -1999,7 +1904,7 @@ local function CalcMixedSplitSolid( nOutlineId, nSolidLayerId, nProfileLayerId,
|
||||
|
||||
-- a) creo il solido di estrusione principale
|
||||
local nMainProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_MAIN)
|
||||
local nMainExtrusionId = CreateMainSurf( nOutlineId, 2 * dGeoWidth, nMainProfileId, nSolidLayerId)
|
||||
local nMainExtrusionId = CreateMainSurf( nOutlineId, 2 * dGeoWidth, nMainProfileId, WIN_SECTION, nSolidLayerId)
|
||||
-- creo una copia
|
||||
local nOrigMainExtrusionId = EgtCopy( nMainExtrusionId, nSolidLayerId)
|
||||
EgtSetName( nOrigMainExtrusionId, WIN_SRF_ORIGMAIN)
|
||||
@@ -2007,19 +1912,23 @@ local function CalcMixedSplitSolid( nOutlineId, nSolidLayerId, nProfileLayerId,
|
||||
|
||||
-- b) trim start
|
||||
local nPrevProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_START)
|
||||
local nPrevOutlineRef = EgtGetInfo( nOutlineId, WIN_MIXED_REF_START, 'i')
|
||||
local nStmTrimStart = CreateMixedSplitTrimSurf( nPrevOutlineRef, nPrevProfileId, dGeoWidth, nSolidLayerId)
|
||||
local nPrevMixedOutline = EgtGetInfo( nOutlineId, WIN_MIXED_REF_START, 'i')
|
||||
local nStmTrimStart, nAuxStart = CreateMixedSplitTrimSurf( nPrevMixedOutline, nPrevProfileId, dGeoWidth, nSolidLayerId)
|
||||
EgtSetName( nStmTrimStart, WIN_SRF_START)
|
||||
EgtSetStatus( nStmTrimStart, GDB_ST.OFF)
|
||||
EgtSurfTmIntersect( nMainExtrusionId, nStmTrimStart)
|
||||
EgtSurfTmIntersect( nMainExtrusionId, nAuxStart)
|
||||
EgtErase( nAuxStart)
|
||||
|
||||
-- c) trim end
|
||||
local nNextProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_END)
|
||||
local nNextOutlineRef = EgtGetInfo( nOutlineId, WIN_MIXED_REF_END, 'i')
|
||||
local nStmTrimEnd = CreateMixedSplitTrimSurf( nNextOutlineRef, nNextProfileId, dGeoWidth, nSolidLayerId)
|
||||
local nNextMixedOutline = EgtGetInfo( nOutlineId, WIN_MIXED_REF_END, 'i')
|
||||
local nStmTrimEnd, nAuxEnd = CreateMixedSplitTrimSurf( nNextMixedOutline, nNextProfileId, dGeoWidth, nSolidLayerId)
|
||||
EgtSetName( nStmTrimEnd, WIN_SRF_END)
|
||||
EgtSetStatus( nStmTrimEnd, GDB_ST.OFF)
|
||||
EgtSurfTmIntersect( nMainExtrusionId, nStmTrimEnd)
|
||||
EgtSurfTmIntersect( nMainExtrusionId, nAuxEnd)
|
||||
EgtErase( nAuxEnd)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -2049,7 +1958,7 @@ local function CalcSolid( nPartId, nOutlineId)
|
||||
|
||||
-- a) creo il solido di estrusione principale
|
||||
local nMainProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_MAIN)
|
||||
local nMainExtrusionId = CreateMainSurf( nOutlineId, 2 * dGeoWidth, nMainProfileId, nSolidLayerId)
|
||||
local nMainExtrusionId = CreateMainSurf( nOutlineId, 2 * dGeoWidth, nMainProfileId, WIN_SECTION, nSolidLayerId)
|
||||
-- creo una copia ( usata per calcolo ferramenta)
|
||||
local nOrigMainExtrusionId = EgtCopy( nMainExtrusionId, nSolidLayerId)
|
||||
EgtSetName( nOrigMainExtrusionId, WIN_SRF_ORIGMAIN)
|
||||
@@ -2551,14 +2460,14 @@ local function CalcSplitDowels( nSplitId, vOutlines, bStartOrEnd)
|
||||
-- è la stessa superficie utilizzata per il trim del solido
|
||||
nTestSurf = EgtCopyGlob( vTestSurf[i], nSplitLayerId)
|
||||
else
|
||||
local sCtr
|
||||
local bChangeProfile = EgtGetInfo( nSplitId, WIN_PRF_CHANGE, 'b') or false
|
||||
if not bChangeProfile then
|
||||
local sCtr = WIN_OFST .. GetProfileCtrIn( nOutlineId, nSplitId, nProfileId)
|
||||
nTestSurf = CreateProfileSurf( nOutlineId, nProfileId, sCtr, 100, nSplitLayerId)
|
||||
if bChangeProfile then
|
||||
sCtr = WIN_OFST .. WIN_SASH .. WIN_CTRIN
|
||||
else
|
||||
local nMixedOutlineRef = EgtGetInfo( nSplitId, EgtIf( bStartOrEnd, WIN_MIXED_REF_START, WIN_MIXED_REF_END), 'i')
|
||||
nTestSurf = CreateMixedSplitTrimSurf( nMixedOutlineRef, nProfileId, 100, nSplitLayerId)
|
||||
sCtr = WIN_OFST .. GetProfileCtrIn( nOutlineId, nSplitId, nProfileId)
|
||||
end
|
||||
nTestSurf = CreateProfileSurf( nOutlineId, nProfileId, sCtr, 100, nLayerId)
|
||||
end
|
||||
local nTestSurfInverted = EgtCopyGlob( nTestSurf, nSplitLayerId)
|
||||
EgtInvertSurf( nTestSurfInverted)
|
||||
|
||||
Reference in New Issue
Block a user