Untitled
unknown
plain_text
2 years ago
2.0 kB
5
Indexable
//----------------------------------------------------------------------------
BOOL
CParseDxf::SaveLine( const POINT_3D& ptP1, const POINT_3D& ptP2, const VECTOR_3D& vtZloc,
const DdxString& szLayer, const DXFColor& dxfColor, double dThick, DdxString* pszFullName )
{
DdxString szGroupName;
GDBGObjData GObData;
GDBLineData LineData;
GDBRefData RefGroup;
// inizializzazioni
if ( pszFullName )
pszFullName->Empty();
// se linea nulla salto tutto, ma ok
if ( SAME_POINT_EPS( ptP1, ptP2, 2 * EPSILON ) )
return TRUE;
// memorizzazione della retta
if ( CalculateGroup( szLayer, &szGroupName ) ) {
// creazione del gruppo, se non esiste già
InsertGroup( szGroupName, vtZloc, fabs( dThick ) > EPSILON, ( dxfColor.IsVisible() ? ST_ON : ST_OFF ), ( m_nFlag & IDXF_MODIFLAYERREF ) );
// recupero del riferimento del gruppo
GetGroupReference( szGroupName, &RefGroup );
// non é necessario verificare che vtZloc e la Z del riferimento del gruppo siano compatibili
// inserimento della linea nel DB
m_nNumCurr++;
GObData.szName.Format( _T("DXF%d"), m_nNumCurr );
GObData.szGroup = szGroupName;
GObData.nStatus = ST_ON;
GObData.rdRef.bIs = FALSE;
GetMaterialName( dxfColor, &GObData.szMatName );
LineData.nStatus = GDBLINE_P1_P2;
// i punti sono espressi in riferimento globale e vanno portati in locale
POINT_TO_LOC( ptP1, LineData.ptP1, RefGroup )
POINT_TO_LOC( ptP2, LineData.ptP2, RefGroup )
if ( !m_pGdb->AddLine( GObData, LineData ) )
return FALSE;
SetThick( GObData.szName, GObData.szGroup, dThick );
SetReserved( GObData.szName, GObData.szGroup, dxfColor.ToInt() );
// salvo di averla aggiunta
if ( pszFullName )
*pszFullName = GObData.szGroup + STR_PATHSEPARATOR + GObData.szName;
}
return TRUE;
}Editor is loading...
Leave a Comment