BOOL ON_BrepEdge::Read( ON_BinaryArchive& file ) { int bReversed = false; ON_Interval proxy_domain; BOOL rc = file.ReadInt( &m_edge_index ); if (rc) rc = file.ReadInt( &m_c3i ); if (rc) rc = file.ReadInt( &bReversed ); if (rc) rc = file.ReadInterval( proxy_domain ); if (rc) rc = file.ReadInt( 2, m_vi ); if (rc) rc = file.ReadArray( m_ti ); if (rc) rc = file.ReadDouble( &m_tolerance ); ON_Interval domain = proxy_domain; if ( file.Archive3dmVersion() >= 3 && file.ArchiveOpenNURBSVersion() >= 200206180 ) { if (rc) { rc = file.ReadInterval(domain); if ( !rc) domain = proxy_domain; } } SetProxyCurve( NULL, proxy_domain ); if ( bReversed ) ON_CurveProxy::Reverse(); SetDomain(domain); return rc; }
ON_BOOL32 ON_PlaneSurface::Read( ON_BinaryArchive& file // open binary file ) { int major_version = 0; int minor_version = 0; ON_BOOL32 rc = file.Read3dmChunkVersion(&major_version,&minor_version); if (rc && major_version == 1) { // common to all 1.x formats if (rc) rc = file.ReadPlane( m_plane ); if (rc) rc = file.ReadInterval( m_domain[0] ); if (rc) rc = file.ReadInterval( m_domain[1] ); m_extents[0] = m_domain[0]; m_extents[1] = m_domain[1]; if ( minor_version >= 1 ) { if (rc) rc = file.ReadInterval( m_extents[0] ); if (rc) rc = file.ReadInterval( m_extents[1] ); } } return rc; }
ON_BOOL32 ON_ArcCurve::Read( ON_BinaryArchive& file // open binary file ) { int major_version = 0; int minor_version = 0; ON_BOOL32 rc = file.Read3dmChunkVersion(&major_version,&minor_version); if (rc) { if (major_version==1) { // common to all 1.x versions rc = file.ReadArc( m_arc ); if (rc) rc = file.ReadInterval( m_t ); if (rc) rc = file.ReadInt(&m_dim); if ( m_dim != 2 && m_dim != 3 ) m_dim = 3; } else rc = 0; } return rc; }
ON_BOOL32 ON__OBSOLETE__CircleCurve::Read( ON_BinaryArchive& file // open binary file ) { int major_version = 0; int minor_version = 0; ON_BOOL32 rc = file.Read3dmChunkVersion(&major_version,&minor_version); if (rc) { if (major_version==1) { // common to all 1.x versions ON_Circle circle; rc = file.ReadCircle( circle ); m_arc = circle; if (rc) rc = file.ReadInterval( m_t ); if (rc) rc = file.ReadInt(&m_dim); if ( m_dim != 2 && m_dim != 3 ) m_dim = 3; } } return rc; }
ON_BOOL32 ON_PolyEdgeSegment::Read( ON_BinaryArchive& archive ) { Init(); int major_version = 0; int minor_version = 0; bool rc = archive.BeginRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&major_version,&minor_version); if (!rc) return false; for(;;) { rc = (1 == major_version); if ( !rc ) break; rc = archive.ReadUuid(m_object_id); if (!rc) break; rc = archive.ReadComponentIndex(m_component_index); if (!rc) break; rc = archive.ReadInterval(m_edge_domain); if (!rc) break; rc = archive.ReadInterval(m_trim_domain); if (!rc) break; // Read ON_ProxyCurve values we need bool bReversed = false; rc = archive.ReadBool(&bReversed); if (!rc) break; ON_Interval this_domain; rc = archive.ReadInterval(this_domain); if (!rc) break; ON_Interval real_curve_domain; rc = archive.ReadInterval(real_curve_domain); if (!rc) break; if ( bReversed) ON_CurveProxy::Reverse(); ON_CurveProxy::SetDomain(this_domain); ON_CurveProxy::SetProxyCurveDomain(real_curve_domain); break; } if ( !archive.EndRead3dmChunk() ) rc = false; return rc; }
ON_BOOL32 ON_LineCurve::Read( ON_BinaryArchive& file // open binary file ) { int major_version = 0; int minor_version = 0; ON_BOOL32 rc = file.Read3dmChunkVersion(&major_version,&minor_version); if (rc && major_version==1) { // common to all 1.x versions rc = file.ReadLine( m_line ); if (rc) rc = file.ReadInterval( m_t ); if (rc) rc = file.ReadInt(&m_dim); } return rc; }
bool ON_Localizer::Read(ON_BinaryArchive& archive) { Destroy(); int major_version = 0; int minor_version = 0; bool rc = archive.BeginRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&major_version,&minor_version); if (!rc) return false; for(;;) { rc = (1 == major_version); if ( !rc ) break; int i = no_type; rc = archive.ReadInt(&i); if ( !rc ) break; switch(i) { case sphere_type: m_type = sphere_type; break; case plane_type: m_type = plane_type; break; case cylinder_type: m_type = cylinder_type; break; case curve_type: m_type = curve_type; break; case surface_type: m_type = surface_type; break; case distance_type: m_type = distance_type; break; } rc = archive.ReadPoint(m_P); if ( !rc ) break; rc = archive.ReadVector(m_V); if ( !rc ) break; rc = archive.ReadInterval(m_d); if ( !rc ) break; int mjv = 0, mnv = 0; rc = archive.BeginRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&mjv,&mnv); if (!rc) break; rc = (1 == mjv); bool bReadCurve = false; if (rc) rc = archive.ReadBool( &bReadCurve ); if ( rc && bReadCurve) { m_nurbs_curve = new ON_NurbsCurve(); rc = m_nurbs_curve->Read(archive)?true:false; } if ( !archive.EndRead3dmChunk() ) rc = false; if (!rc) break; rc = archive.BeginRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&mjv,&mnv); if (!rc) break; rc = (1 == mjv); bool bReadSurface = false; rc = archive.ReadBool( &bReadSurface ); if ( rc && bReadSurface ) { m_nurbs_surface = new ON_NurbsSurface(); rc = m_nurbs_surface->Read(archive)?true:false; } if ( !archive.EndRead3dmChunk() ) rc = false; if (!rc) break; break; } if ( !archive.EndRead3dmChunk() ) rc = false; return rc; }
BOOL ON_BrepTrim::Read( ON_BinaryArchive& file ) { ON_3dPoint P[2]; int i; BOOL rc = file.ReadInt( &m_trim_index ); if ( rc ) rc = file.ReadInt( &m_c2i ); if ( rc ) { ON_Interval d; rc = file.ReadInterval( d ); if (rc) { SetProxyCurveDomain(d); SetDomain(d); } } if ( rc ) rc = file.ReadInt( &m_ei ); if ( rc ) rc = file.ReadInt( 2, m_vi ); if ( rc ) { i = m_bRev3d; rc = file.ReadInt( &i ); if (rc) m_bRev3d = (i!=0); } i = unknown; if ( rc ) rc = file.ReadInt( &i ); switch (i) { case unknown: m_type = unknown; break; case boundary: m_type = boundary; break; case mated: m_type = mated; break; case seam: m_type = seam; break; case singular: m_type = singular; break; } i = ON_Surface::not_iso; if ( rc ) rc = file.ReadInt( &i ); switch(i) { case ON_Surface::not_iso: m_iso = ON_Surface::not_iso; break; case ON_Surface::x_iso: m_iso = ON_Surface::x_iso; break; case ON_Surface::y_iso: m_iso = ON_Surface::y_iso; break; case ON_Surface::W_iso: m_iso = ON_Surface::W_iso; break; case ON_Surface::S_iso: m_iso = ON_Surface::S_iso; break; case ON_Surface::E_iso: m_iso = ON_Surface::E_iso; break; case ON_Surface::N_iso: m_iso = ON_Surface::N_iso; break; } if ( rc ) rc = file.ReadInt( &m_li ); if ( rc ) rc = file.ReadDouble( 2, m_tolerance ); if ( file.Archive3dmVersion() >= 3 && file.ArchiveOpenNURBSVersion() >= 200206180 ) { // read trim proxy curve information added in version 200206180 ON_Interval d = ProxyCurveDomain(); if (rc ) { rc = file.ReadInterval( d ); if ( !rc ) d = ProxyCurveDomain(); } unsigned char b[24]; memset(b,0,sizeof(b)); bool bProxyCurveIsReversed = false; if (rc) { rc = file.ReadChar(8,b); if (rc && b[0] == 1 ) bProxyCurveIsReversed = true; } if (rc) rc = file.ReadChar(24,b); if ( bProxyCurveIsReversed ) ON_CurveProxy::Reverse(); SetDomain(d); } else { if ( rc ) rc = file.ReadPoint( P[0] ); //m_P[0] ); if ( rc ) rc = file.ReadPoint( P[1] ); //m_P[1] ); } if ( rc ) rc = file.ReadDouble( &m__legacy_2d_tol ); if ( rc ) rc = file.ReadDouble( &m__legacy_3d_tol ); return rc; }