DataWindow :
- correzioni preview 2d.
This commit is contained in:
@@ -133,6 +133,14 @@ WIN_OPENING_TYPES = {
|
||||
LIFTSLIDE_RIGHT = 12,
|
||||
}
|
||||
|
||||
-- tipi di pezzo
|
||||
WIN_PART_TYPE = 'PartType'
|
||||
WIN_PART_TYPES = {
|
||||
NULL = 0,
|
||||
FILL = 1,
|
||||
BOTTOMRAIL = 2,
|
||||
}
|
||||
|
||||
WIN_AREAOUTLINE = 'BaseOutline'
|
||||
WIN_OUTLINE = 'Outline'
|
||||
WIN_BASESPLIT = 'BaseSplit'
|
||||
|
||||
@@ -1505,9 +1505,6 @@ local function CalcFrameGeo( nPartId, nOutlineId, nOutlineCrvNbr, nOutlineLayerI
|
||||
-- creo layer per ingombro
|
||||
local nGeoLayerId = EgtGroup( nPartId)
|
||||
EgtSetName( nGeoLayerId, WIN_GEO)
|
||||
if s_bCalcPreview then
|
||||
EgtSetStatus( nGeoLayerId, GDB_ST.OFF)
|
||||
end
|
||||
|
||||
-- recupero outline precedenti e successivi ( solo nel caso di split possono essere più di uno)
|
||||
local vPrevOutlineId, vNextOutlineId = GetPrevNextOutline( nProfileType, nOutlineId, nOutlineLayerId)
|
||||
@@ -2554,79 +2551,69 @@ end
|
||||
----------------------------------------------------------------------------------
|
||||
--------------------------------- PREVIEW ----------------------------------------
|
||||
----------------------------------------------------------------------------------
|
||||
local function CalcBottomRailPreview( nPreviewGrp, nOutlineId, nProfileGrp)
|
||||
|
||||
local nBottomRail = EgtGetInfo( nOutlineId, WIN_BOTTOMRAIL, 'i') or 0
|
||||
if nBottomRail == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local nGrp = EgtGroup( nPreviewGrp)
|
||||
|
||||
local function CalcBottomRailPreview( nPreviewGrp, nOutlineId, nBottomRail, nProfileGrp, nGeoGrp, color)
|
||||
|
||||
-- costruisco box complessivo degli zoccoli
|
||||
local nProfileId = EgtGetFirstNameInGroup( nProfileGrp, WIN_PRF_MAIN)
|
||||
local b3Profile = GetProfileLocalBox( nProfileId)
|
||||
local nOutId = EgtCopyGlob( nOutlineId, nGrp)
|
||||
EgtOffsetCurve( nOutId, b3Profile:getMin():getX())
|
||||
local vCrvs = {}
|
||||
|
||||
-- la curva out corrisponde al geo in del pezzo bottom
|
||||
local nPartGeoIn = EgtGetFirstNameInGroup( nGeoGrp, WIN_GEO_IN)
|
||||
vCrvs[1] = EgtCopyGlob( nPartGeoIn, nPreviewGrp)
|
||||
|
||||
local vNextOutlines = EgtGetInfo( nOutlineId, WIN_NEXT_OUTLINES, 'vi')
|
||||
local vEndProfiles = EgtGetNameInGroup( nProfileGrp, WIN_PRF_END)
|
||||
local nRightId = EgtCopyGlob( vNextOutlines[1], nGrp)
|
||||
local b3ProfileEnd = GetProfileLocalBox( vEndProfiles[1])
|
||||
EgtOffsetCurve( nRightId, b3ProfileEnd:getMin():getX())
|
||||
vCrvs[2] = EgtCopyGlob( vNextOutlines[1], nPreviewGrp)
|
||||
EgtOffsetCurve( vCrvs[2], b3ProfileEnd:getMin():getX())
|
||||
|
||||
local nInId = EgtCopyGlob( nOutlineId, nGrp)
|
||||
local dDelta1 = EgtGetInfo( nProfileId, WIN_RAILDELTA .. '1', 'd')
|
||||
local dDelta2 = EgtGetInfo( nProfileId, WIN_RAILDELTA .. '2', 'd')
|
||||
local dOffs = dDelta1 + ( nBottomRail - 1) * dDelta2
|
||||
local nProfileLayer = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE)
|
||||
local nAreaLayer = EgtGetParent( EgtGetParent( nOutlineId))
|
||||
local nAreaType = EgtGetInfo( nAreaLayer, WIN_AREATYPE, 'i')
|
||||
local nFrameProfileLayer = EgtGetFirstNameInGroup( nProfileLayer, EgtIf( nAreaType == WIN_AREATYPES.FRAME, WIN_FRAME, WIN_SASH))
|
||||
local nBottomRailProfile = EgtGetFirstNameInGroup( nFrameProfileLayer, WIN_FILL_RAIL)
|
||||
local b3ProfileRail = GetProfileLocalBox( nBottomRailProfile)
|
||||
EgtOffsetCurve( nInId, - dOffs + b3ProfileRail:getMin():getX())
|
||||
-- la curva in corrisponde al geo in dell'ultimo bottomrail
|
||||
local vBottomRails = EgtGetInfo( nOutlineId, WIN_REF_BOTTOMRAIL_PART, 'vi')
|
||||
local nBottomRailPart = vBottomRails[#vBottomRails]
|
||||
local nGeoLayer = EgtGetFirstNameInGroup( nBottomRailPart, WIN_GEO)
|
||||
local nGeoIn = EgtGetFirstNameInGroup( nGeoLayer, WIN_GEO_IN)
|
||||
vCrvs[3] = EgtCopyGlob( nGeoIn, nPreviewGrp)
|
||||
|
||||
local vPrevOutlines = EgtGetInfo( nOutlineId, WIN_PREV_OUTLINES, 'vi')
|
||||
local vStartProfiles = EgtGetNameInGroup( nProfileGrp, WIN_PRF_START)
|
||||
local nLeftId = EgtCopyGlob( vPrevOutlines[1], nGrp)
|
||||
local b3ProfileStart = GetProfileLocalBox( vStartProfiles[1])
|
||||
EgtOffsetCurve( nLeftId, b3ProfileStart:getMin():getX())
|
||||
|
||||
TrimAndOrientOrderedCurves( EgtGetAllInGroup( nGrp), true)
|
||||
|
||||
-- creo il bordo e la regione
|
||||
local nAreaId = CreateGeoArea( nGrp, nPreviewGrp, true)
|
||||
local nCrvId = EgtGetPrev( nAreaId or GDB_ID.NULL) or GDB_ID.NULL
|
||||
vCrvs[4] = EgtCopyGlob( vPrevOutlines[1], nPreviewGrp)
|
||||
EgtOffsetCurve( vCrvs[4], b3ProfileStart:getMin():getX())
|
||||
|
||||
-- creo il bordo
|
||||
TrimAndOrientOrderedCurves( vCrvs, true)
|
||||
local nCrvId = EgtCurveCompo( nPreviewGrp, vCrvs, false)
|
||||
EgtSetColor( nCrvId, EgtStdColor( 'BLACK'))
|
||||
|
||||
EgtModifyCurveThickness( nCrvId, 0)
|
||||
-- creo la regione
|
||||
local nAreaId = EgtSurfFlatRegion( nPreviewGrp, {nCrvId})
|
||||
EgtSetColor( nAreaId, color)
|
||||
EgtRelocateGlob( nCrvId, nAreaId, GDB_IN.AFTER)
|
||||
|
||||
-- creo linee di divisione tra gli zoccoli
|
||||
if nBottomRail > 1 then
|
||||
local dLen = EgtCurveLength( nOutId)
|
||||
local dLen = EgtCurveLength( vCrvs[1])
|
||||
local dStep = 1 / nBottomRail
|
||||
for i = 1, nBottomRail - 1 do
|
||||
local pt = EgtUP( nLeftId, i * dStep)
|
||||
local pt = EgtUP( vCrvs[4], i * dStep)
|
||||
local nCrvId = EgtLinePVL( nPreviewGrp, pt, X_AX(), dLen)
|
||||
EgtSetColor( nCrvId, EgtStdColor( 'BLACK'))
|
||||
end
|
||||
end
|
||||
EgtErase( nGrp)
|
||||
|
||||
EgtErase( vCrvs)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function CalcPreview( nPartId, nOutlineId)
|
||||
|
||||
-- creo gruppo per la preview
|
||||
local nPreviewGrp = EgtGroup( nPartId)
|
||||
EgtSetName( nPreviewGrp, WIN_PREVIEW)
|
||||
local nGrpTmp = EgtGroup( nPreviewGrp)
|
||||
local function CalcPartPreview( nPartId, nPreviewGrp)
|
||||
|
||||
local nOutlineId = EgtGetInfo( nPartId, WIN_REF_OUTLINE, 'i')
|
||||
local nGeoGrp = EgtGetFirstNameInGroup( nPartId, WIN_GEO)
|
||||
local nProfileGrp = EgtGetFirstNameInGroup( nPartId, WIN_PROFILE)
|
||||
|
||||
-- curva out
|
||||
-- è il geo out tranne nel caso di sash active/inactive per le quali considero l'outline per evitare sovrapposizioni
|
||||
|
||||
-- gruppo temporaneo per i conti
|
||||
local nGrpTmp = EgtGroup( nPreviewGrp)
|
||||
|
||||
-- curva out è il geo out tranne nel caso di sash active/inactive per le quali considero l'outline per evitare sovrapposizioni
|
||||
local nBaseOutlineId = EgtGetInfo( nOutlineId, WIN_COPY, 'i')
|
||||
local bOnSplit = EgtGetInfo( nBaseOutlineId, WIN_CRV_ON_FRENCH_SPLIT, 'b')
|
||||
if bOnSplit then
|
||||
@@ -2688,26 +2675,58 @@ local function CalcPreview( nPartId, nOutlineId)
|
||||
|
||||
-- creo il bordo e la regione
|
||||
local nAreaId = CreateGeoArea( nGrpTmp, nPreviewGrp, true)
|
||||
local color = EgtGetColor( nPartId)
|
||||
EgtSetColor( nAreaId, color)
|
||||
local nCrvId = EgtGetPrev( nAreaId or GDB_ID.NULL) or GDB_ID.NULL
|
||||
EgtRelocateGlob( nCrvId, nAreaId, GDB_IN.AFTER)
|
||||
EgtSetColor( nCrvId, EgtStdColor( 'BLACK'))
|
||||
EgtModifyCurveThickness( nCrvId, 0)
|
||||
EgtErase( nGrpTmp)
|
||||
|
||||
-- se bottom aggiungo anche eventuale preview del bottomrail
|
||||
if EgtGetName( nOutlineId) == WIN_BOTTOM then
|
||||
CalcBottomRailPreview( nPreviewGrp, nOutlineId, nProfileGrp)
|
||||
local nBottomRail = EgtGetInfo( nOutlineId, WIN_BOTTOMRAIL, 'i') or 0
|
||||
if nBottomRail > 0 then
|
||||
CalcBottomRailPreview( nPreviewGrp, nOutlineId, nBottomRail, nProfileGrp, nGeoGrp, color)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function CalcFillPreview( nPartId, nOutlineLayerId)
|
||||
-- creo layer per preview
|
||||
local nGrp = EgtGroup( nPartId)
|
||||
EgtSetName( nGrp, WIN_PREVIEW)
|
||||
-- creo compo di outline
|
||||
local function CalcFillPreview( nPartId, nPreviewGrp)
|
||||
-- creo bordo a partire dall'outline
|
||||
local nAreaId = EgtGetInfo( nPartId, WIN_AREA, 'i')
|
||||
local nOutlineLayerId = EgtGetFirstNameInGroup( nAreaId, WIN_OUTLINE)
|
||||
local vOutlineList = EgtGetAllInGroup( nOutlineLayerId)
|
||||
local nCompoOutlineId = EgtCurveCompoByChain( nGrp, vOutlineList, EgtSP( vOutlineList[1]), false)
|
||||
local nCompoOutlineId = EgtCurveCompoByChain( nPreviewGrp, vOutlineList, EgtSP( vOutlineList[1]), false)
|
||||
-- creo area
|
||||
local nSurfId = EgtSurfFlatRegion( nGrp, {nCompoOutlineId})
|
||||
local nSurfId = EgtSurfFlatRegion( nPreviewGrp, {nCompoOutlineId})
|
||||
EgtSetColor( nSurfId, EgtGetColor( nPartId))
|
||||
EgtErase( nCompoOutlineId)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
local function CalcPreview( nFrameId)
|
||||
|
||||
-- creo gruppo per la preview
|
||||
local nPreviewGrp = EgtGroup( GDB_ID.ROOT)
|
||||
EgtSetName( nPreviewGrp, WIN_PREVIEW)
|
||||
EgtSetLevel( nPreviewGrp, GDB_LV.SYSTEM)
|
||||
EgtSetStatus( nPreviewGrp, GDB_ST.OFF)
|
||||
|
||||
-- scorro tutti i pezzi e ne realizzo la preview
|
||||
local nPartId = EgtGetFirstPart()
|
||||
while nPartId do
|
||||
local nPartType = EgtGetInfo( nPartId, WIN_PART_TYPE, 'i') or WIN_PART_TYPES.NULL
|
||||
if nPartType == WIN_PART_TYPES.FILL then
|
||||
CalcFillPreview( nPartId, nPreviewGrp)
|
||||
elseif nPartType == WIN_PART_TYPES.BOTTOMRAIL then
|
||||
-- pezzo di bottomrail viene ignorato perchè già creato con il corrispondente pezzo bottom
|
||||
else
|
||||
CalcPartPreview( nPartId, nPreviewGrp)
|
||||
end
|
||||
nPartId = EgtGetNextPart( nPartId)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -3664,6 +3683,7 @@ local function CreatePartFromOutline( nAreaLayerId, sName, nOutlineId, nOutlineC
|
||||
local vBottomRailParts = EgtGetInfo( nOutlineId, WIN_REF_BOTTOMRAIL_PART, 'vi') or {}
|
||||
table.insert( vBottomRailParts, nPartId)
|
||||
EgtSetInfo( nOutlineId, WIN_REF_BOTTOMRAIL_PART, vBottomRailParts)
|
||||
EgtSetInfo( nPartId, WIN_PART_TYPE, WIN_PART_TYPES.BOTTOMRAIL)
|
||||
else
|
||||
EgtSetInfo( nOutlineId, WIN_REF_PART, nPartId)
|
||||
end
|
||||
@@ -3695,10 +3715,6 @@ local function CreatePartFromOutline( nAreaLayerId, sName, nOutlineId, nOutlineC
|
||||
CalcProfilingProcessings( nPartId, nOutlineId)
|
||||
-- calcolo il georaw per automatismo lavorazioni
|
||||
CalcGeoRaw( nPartId)
|
||||
-- disegno preview 2D del pezzo
|
||||
if s_bCalcPreview and not nBottomRail then
|
||||
CalcPreview( nPartId, nOutlineId)
|
||||
end
|
||||
-- disegno solido
|
||||
if s_bCalcSolid then
|
||||
CalcSolid( nPartId, nOutlineId)
|
||||
@@ -3708,7 +3724,7 @@ local function CreatePartFromOutline( nAreaLayerId, sName, nOutlineId, nOutlineC
|
||||
elseif nAreaType == WIN_AREATYPES.FILL then
|
||||
-- imposto nome del pezzo
|
||||
EgtSetName( nPartId, sName .. '_' .. WIN_FILL)
|
||||
|
||||
EgtSetInfo( nPartId, WIN_PART_TYPE, WIN_PART_TYPES.FILL)
|
||||
-- ricavo tipo
|
||||
local nFillType = EgtGetInfo( nAreaLayerId, WIN_FILLTYPE, 'i')
|
||||
|
||||
@@ -3724,10 +3740,6 @@ local function CreatePartFromOutline( nAreaLayerId, sName, nOutlineId, nOutlineC
|
||||
|
||||
-- disegno ingombro
|
||||
local nGeoLayerId = CalcFillGeo( nPartId, nOutlineLayerId)
|
||||
-- disegno preview 2D
|
||||
if s_bCalcPreview then
|
||||
CalcFillPreview( nPartId, nOutlineLayerId)
|
||||
end
|
||||
-- disegno solido
|
||||
if s_bCalcSolid then
|
||||
CalcFillSolid( nPartId, nOutlineLayerId, nGeoLayerId)
|
||||
@@ -5734,6 +5746,11 @@ function WinCalculate.CreatePartFromArea( nFrameId)
|
||||
CalculateAreaParts( nFrameId)
|
||||
-- calcolo le spine
|
||||
CalculateAreaDowels( nFrameId)
|
||||
|
||||
-- calcolo preview 2d se richiesta
|
||||
if s_bCalcPreview then
|
||||
CalcPreview( nFrameId)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user