1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-19 13:40:49 +03:00

Compare commits

..

1 Commits

Author SHA1 Message Date
ichesnok
20955d88da 0033261: Data Exchange, Step Import - Empty shape after reading process
Added a transfer for ShapeRepresentationRelationship in Transfer of MappedItem method,
in order to support link of components according to ISO 10303-203-2003.
2024-02-08 19:15:58 +00:00
16 changed files with 128 additions and 137 deletions

View File

@@ -162,7 +162,7 @@ void APIHeaderSection_MakeHeader::Apply
Handle(StepData_Protocol) stepro = Handle(StepData_Protocol)::DownCast
( model->Protocol());
if (!stepro.IsNull()) sch = new TCollection_HAsciiString
(stepro->SchemaName(model));
(stepro->SchemaName());
if (!sch.IsNull()) schid->SetValue (1,sch);
}
header.AddItem(fs);

View File

@@ -151,8 +151,6 @@ bool STEPCAFControl_ConfigurationNode::Load(const Handle(DE_ConfigurationContext
theResource->BooleanVal("write.props", InternalParameters.WriteProps, aScope);
InternalParameters.WriteModelType = (STEPControl_StepModelType)
theResource->IntegerVal("write.model.type", InternalParameters.WriteModelType, aScope);
InternalParameters.WriteNonmanifold =
theResource->IntegerVal("write.nonmanifold", InternalParameters.WriteNonmanifold, aScope);
return true;
}

View File

@@ -74,12 +74,12 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath,
aReader.SetLayerMode(aNode->InternalParameters.ReadLayer);
aReader.SetPropsMode(aNode->InternalParameters.ReadProps);
IFSelect_ReturnStatus aReadStat = IFSelect_RetVoid;
aReadStat = aReader.ReadFile(thePath.ToCString(), aNode->InternalParameters);
StepData_ConfParameters aParams;
aReadStat = aReader.ReadFile(thePath.ToCString(), aParams);
if (aReadStat != IFSelect_RetDone)
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during reading the file " <<
thePath << "\t: abandon";
aNode->InternalParameters.Reset();
return false;
}
@@ -87,10 +87,8 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath,
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during reading the file " <<
thePath << "\t: Cannot read any relevant data from the STEP file";
aNode->InternalParameters.Reset();
return false;
}
aNode->InternalParameters.Reset();
return true;
}
@@ -124,13 +122,13 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath,
aWriter.SetNameMode(aNode->InternalParameters.WriteName);
aWriter.SetLayerMode(aNode->InternalParameters.WriteLayer);
aWriter.SetPropsMode(aNode->InternalParameters.WriteProps);
aModel->SetWriteLengthUnit(UnitsMethods::GetLengthUnitScale(aNode->InternalParameters.WriteUnit, UnitsMethods_LengthUnit_Millimeter));
TDF_Label aLabel;
if (!aWriter.Transfer(theDocument, aNode->InternalParameters, aMode, 0, theProgress))
StepData_ConfParameters aParams;
if (!aWriter.Transfer(theDocument, aParams, aMode, 0, theProgress))
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during writing the file " <<
thePath << "\t: The document cannot be translated or gives no result";
aNode->InternalParameters.Reset();
return false;
}
IFSelect_ReturnStatus aStatus = aWriter.Write(thePath.ToCString());
@@ -140,7 +138,6 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath,
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during writing the file " <<
thePath << "\t: No file written";
aNode->InternalParameters.Reset();
return false;;
}
case IFSelect_RetDone:
@@ -151,11 +148,9 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath,
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during writing the file " <<
thePath << "\t: Error on writing file";
aNode->InternalParameters.Reset();
return false;
}
}
aNode->InternalParameters.Reset();
return true;
}
@@ -204,13 +199,13 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath,
STEPControl_Reader aReader;
aReader.SetWS(theWS);
IFSelect_ReturnStatus aReadstat = IFSelect_RetVoid;
aReadstat = aReader.ReadFile(thePath.ToCString(), aNode->InternalParameters);
StepData_ConfParameters aParams;
aReadstat = aReader.ReadFile(thePath.ToCString(), aParams);
Handle(StepData_StepModel) aModel = aReader.StepModel();
if (aReadstat != IFSelect_RetDone)
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during reading the file " <<
thePath << "\t: abandon, no model loaded";
aNode->InternalParameters.Reset();
return false;
}
aModel->SetLocalLengthUnit(aNode->GlobalParameters.LengthUnit);
@@ -218,11 +213,9 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath,
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during reading the file " <<
thePath << "\t:Cannot read any relevant data from the STEP file";
aNode->InternalParameters.Reset();
return false;
}
theShape = aReader.OneShape();
aNode->InternalParameters.Reset();
return true;
}
@@ -249,21 +242,19 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath,
IFSelect_ReturnStatus aWritestat = IFSelect_RetVoid;
Handle(StepData_StepModel) aModel = aWriter.Model();
aModel->SetWriteLengthUnit(UnitsMethods::GetLengthUnitScale(aNode->InternalParameters.WriteUnit, UnitsMethods_LengthUnit_Millimeter));
aWritestat = aWriter.Transfer(theShape, aNode->InternalParameters.WriteModelType, aNode->InternalParameters, true, theProgress);
StepData_ConfParameters aParams;
aWritestat = aWriter.Transfer(theShape, aNode->InternalParameters.WriteModelType, aParams, true, theProgress);
if (aWritestat != IFSelect_RetDone)
{
Message::SendFail() << "Error in the STEPCAFControl_Provider during reading the file " <<
thePath << "\t: abandon, no model loaded";
aNode->InternalParameters.Reset();
return false;
}
if (aWriter.Write(thePath.ToCString()) != IFSelect_RetDone)
{
Message::SendFail() << "STEPCAFControl_Provider: Error on writing file";
aNode->InternalParameters.Reset();
return false;
}
aNode->InternalParameters.Reset();
return true;
}

View File

@@ -573,7 +573,6 @@ Standard_Boolean STEPCAFControl_Reader::Transfer (STEPControl_Reader &reader,
{
reader.ClearShapes();
Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(reader.Model());
myReader.WS()->TransferReader()->SetEncodeRegAngle(aModel->InternalParameters.EncodeRegAngle);
StepData_Factors aLocalFactors;
prepareUnits(aModel, doc, aLocalFactors);
Standard_Integer i;

View File

@@ -580,7 +580,7 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
// common progress indicator for translation of own shapes and sub-assemblies
Message_ProgressScope PS(theProgress, "Part", nbEnt);
Standard_Integer nbComponents=0, nbShapes=0;
Standard_Integer nbComponents=0;
// translate sub-assemblies
for ( Standard_Integer nbNauo =1; nbNauo <= listNAUO->Length() && PS.More(); nbNauo++) {
@@ -662,7 +662,6 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
else
B.Add(Cund, theResult);
// [END] ssv: OCCT#22436: extra compound in NMSSR case
nbShapes++;
}
}
@@ -670,50 +669,20 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
// way of writing hybrid models in AP203 since 1998, and AP209
// Note that both AP203 and AP209 allow main representation to be non-empty
if ( readSRR && /*theResult.IsNull() &&*/ i <= nbNotAspect) {
Interface_EntityIterator subs1 = graph.Sharings(rep);
Handle(Standard_Type) tSRR = STANDARD_TYPE(StepRepr_ShapeRepresentationRelationship);
for (subs1.Start(); subs1.More(); subs1.Next()) {
const Handle(Standard_Transient)& anitem = subs1.Value();
if( !anitem->IsKind(STANDARD_TYPE(StepRepr_RepresentationRelationship)))
continue;
if (anitem->DynamicType() == tSRR)
{
Handle(StepRepr_ShapeRepresentationRelationship) SRR =
Handle(StepRepr_ShapeRepresentationRelationship)::DownCast(anitem);
Standard_Integer nbrep = (rep == SRR->Rep1() ? 2 : 1);
// SKL for bug 29068: parameter useTrsf is used because if root entity has connection with other
// by ShapeRepresentationRelationship then result after such transferring need to transform also.
// This case is from test "bugs modalg_7 bug30196"
binder = TransferEntity(SRR, TP, theLocalFactors, nbrep, useTrsf, aPS1.Next());
if (! binder.IsNull()) {
theResult = TransferBRep::ShapeResult (binder);
Result1 = theResult;
B.Add(Cund, theResult);
nbShapes++;
}
}
else if(readConstructiveGeomRR && anitem->IsKind(STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship)))
{
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship) aCSRR =
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship)::DownCast(anitem);
binder = TransferEntity(aCSRR, TP, theLocalFactors);
if (! binder.IsNull())
{
Result1 = TransferBRep::ShapeResult (binder);
B.Add(Cund, Result1);
nbShapes++;
}
}
TopoDS_Shape aNewResult = TransferRelatedSRR(TP, rep, useTrsf, readConstructiveGeomRR, theLocalFactors, Cund, aPS1);
if (!aNewResult.IsNull())
{
Result1 = aNewResult;
}
}
}
// make a warning if both own shape and sub-assemblies are present
if ( nbShapes >0 && nbComponents > 0 )
if ( (Cund.NbChildren() - nbComponents) > 0 && nbComponents > 0 )
TP->AddWarning ( PD, "Product has both sub-assemblies and directly assigned shape" );
// if only single shape is read, add it as it is; otherwise add compound
if( nbShapes == 1 && nbComponents == 0 )
if( (Cund.NbChildren() - nbComponents) == 1 && nbComponents == 0 )
shbinder = new TransferBRep_ShapeBinder (Result1);
else
shbinder = new TransferBRep_ShapeBinder (Cund);
@@ -1555,8 +1524,8 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
const Message_ProgressRange& theProgress)
{
Handle(TransferBRep_ShapeBinder) shbinder;
// --------------------------------------------------------------
// --------------------------------------------------------------
// On se trouve ici dans un contexte " d'assemblage geometrique "
// - MappedItem
// --------------------------------------------------------------
@@ -1567,7 +1536,8 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
// La Shape, et la mise en position
Handle(StepShape_ShapeRepresentation) maprep = Handle(StepShape_ShapeRepresentation)::
DownCast(mapit->MappingSource()->MappedRepresentation());
Standard_Boolean isBound = Standard_False;
Standard_Boolean isBound = Standard_False;
Message_ProgressScope aPSRoot(theProgress, NULL, 2);
Handle(Transfer_Binder) binder = TP->Find(maprep);
if (binder.IsNull()) binder = TransferEntity(maprep, TP, theLocalFactors, isBound, Standard_False, theProgress);
shbinder = Handle(TransferBRep_ShapeBinder)::DownCast(binder);
@@ -1575,7 +1545,6 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
else {
TopoDS_Shape mappedShape = shbinder->Result();
if ( ! mappedShape.IsNull() ) {
// Positionnement : 2 formules
// 1/ Ax2 dans Source et comme Target : passage de Source a Target
// 2/ CartesianOperator3d comme Target : on applique
@@ -1607,6 +1576,39 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
shbinder = new TransferBRep_ShapeBinder (mappedShape);
}
}
TopoDS_Compound aCund;
TopoDS_Shape aResult;
BRep_Builder aBuilder;
aBuilder.MakeCompound(aCund);
if (!shbinder.IsNull())
{
aResult = TransferBRep::ShapeResult(shbinder);
aBuilder.Add(aCund, aResult);
}
// translate possible shapes related by SRRs, which corresponds to
// way of writing hybrid models in AP203 since 1998, and AP209
Standard_Integer aReadSRR = Interface_Static::IVal("read.step.shape.relationship");
Standard_Integer aReadConstructiveGeomRR = Interface_Static::IVal("read.step.constructivegeom.relationship");
if (aReadSRR)
{
const Interface_Graph& aGraph = TP->Graph();
Standard_Integer aSRRnum = 0;
for (Interface_EntityIterator aSubsIt(aGraph.Sharings(maprep)); aSubsIt.More(); aSubsIt.Next())
++aSRRnum;
Message_ProgressScope aPS(aPSRoot.Next(), "Part", aSRRnum);
TopoDS_Shape aNewResult = TransferRelatedSRR(TP, maprep, Standard_False, aReadConstructiveGeomRR, theLocalFactors, aCund, aPS);
if (!aNewResult.IsNull())
{
aResult = aNewResult;
}
// if only single shape is read, add it as it is; otherwise add compound
if (aCund.NbChildren() == 1)
shbinder = new TransferBRep_ShapeBinder(aResult);
else if (aCund.NbChildren() > 1)
{
shbinder = new TransferBRep_ShapeBinder(aCund);
}
}
TP->Bind(mapit, shbinder);
return shbinder;
}
@@ -2091,3 +2093,47 @@ void STEPControl_ActorRead::SetModel(const Handle(Interface_InterfaceModel)& the
{
myModel = theModel;
}
//=======================================================================
// Method : TransferRelatedSRR
// Purpose : Helper method to transfer SRR related to the representation
//=======================================================================
TopoDS_Shape STEPControl_ActorRead::TransferRelatedSRR(const Handle(Transfer_TransientProcess)& theTP,
const Handle(StepShape_ShapeRepresentation)& theRep,
const Standard_Boolean theUseTrsf,
const Standard_Integer theReadConstructiveGeomRR,
const StepData_Factors& theLocalFactors,
TopoDS_Compound& theCund,
Message_ProgressScope& thePS)
{
BRep_Builder aBuilder;
TopoDS_Shape aResult;
const Interface_Graph& aGraph = theTP->Graph();
for (Interface_EntityIterator aSubsIt(aGraph.Sharings(theRep)); aSubsIt.More() && thePS.More(); aSubsIt.Next())
{
Handle(Standard_Transient) anItem = aSubsIt.Value();
if (!anItem->IsKind(STANDARD_TYPE(StepRepr_RepresentationRelationship)))
continue;
Handle(Transfer_Binder) aBinder;
if (anItem->DynamicType() == STANDARD_TYPE(StepRepr_ShapeRepresentationRelationship))
{
Handle(StepRepr_ShapeRepresentationRelationship) aSRR =
Handle(StepRepr_ShapeRepresentationRelationship)::DownCast(anItem);
Standard_Integer aNbRep = (theRep == aSRR->Rep1() ? 2 : 1);
aBinder = TransferEntity(aSRR, theTP, theLocalFactors, aNbRep, theUseTrsf, thePS.Next());
}
else if (theReadConstructiveGeomRR &&
anItem->DynamicType() == STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship))
{
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship) aCGRR =
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship)::DownCast(anItem);
aBinder = TransferEntity(aCGRR, theTP, theLocalFactors);
}
if (!aBinder.IsNull())
{
aResult = TransferBRep::ShapeResult(aBinder);
aBuilder.Add(theCund, aResult);
}
}
return aResult;
}

View File

@@ -206,6 +206,14 @@ private:
Standard_EXPORT void computeIDEASClosings (const TopoDS_Compound& comp, TopTools_IndexedDataMapOfShapeListOfShape& shellClosingMap);
Standard_EXPORT TopoDS_Shape TransferRelatedSRR(const Handle(Transfer_TransientProcess)& theTP,
const Handle(StepShape_ShapeRepresentation)& theRep,
const Standard_Boolean theUseTrsf,
const Standard_Integer theReadConstructiveGeomRR,
const StepData_Factors& theLocalFactors,
TopoDS_Compound& theCund,
Message_ProgressScope& thePS);
StepToTopoDS_NMTool myNMTool;
Standard_Real myPrecision;
Standard_Real myMaxTol;

View File

@@ -13,7 +13,6 @@
#include <STEPControl_Writer.hxx>
#include <APIHeaderSection_MakeHeader.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_Macros.hxx>
#include <STEPControl_ActorWrite.hxx>
@@ -163,12 +162,7 @@ IFSelect_ReturnStatus STEPControl_Writer::Transfer
}
if (!thesession->Model().IsNull())
{
Handle(StepData_StepModel) aStepModel = Handle(StepData_StepModel)::DownCast(thesession->Model());
aStepModel->InternalParameters = theParams;
thesession->TransferWriter()->SetNonmanifoldMode(aStepModel->InternalParameters.WriteNonmanifold);
aStepModel->ClearHeader();
APIHeaderSection_MakeHeader aHeaderApi;
aHeaderApi.Apply(aStepModel);
Handle(StepData_StepModel)::DownCast(thesession->Model())->InternalParameters = theParams;
}
Handle(STEPControl_ActorWrite) ActWrite =
Handle(STEPControl_ActorWrite)::DownCast(WS()->NormAdaptor()->ActorWrite());

View File

@@ -27,7 +27,6 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
#include <HeaderSection_Protocol.hxx>
#include <StepData_StepModel.hxx>
#include <StepShape_AdvancedBrepShapeRepresentation.hxx>
#include <StepShape_AdvancedFace.hxx>
// Removed from CC1-Rev2 to Rev4 : <StepVisual_AnnotationCurveOccurrence.hxx>
@@ -1578,38 +1577,6 @@ Handle(Standard_Type)& atype) const
}
//=======================================================================
//function : SchemaName
//purpose :
//=======================================================================
Standard_CString StepAP214_Protocol::SchemaName(const Handle(Interface_InterfaceModel)& theModel) const
{
Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(theModel);
if (aModel.IsNull())
{
return "";
}
switch (aModel->InternalParameters.WriteSchema)
{
case StepData_ConfParameters::WriteMode_StepSchema_AP214CD:
return schemaAP214CD;
break;
case StepData_ConfParameters::WriteMode_StepSchema_AP214DIS:
return schemaAP214DIS;
break;
case StepData_ConfParameters::WriteMode_StepSchema_AP203:
return schemaAP203;
break;
case StepData_ConfParameters::WriteMode_StepSchema_AP214IS:
return schemaAP214IS;
break;
case StepData_ConfParameters::WriteMode_StepSchema_AP242DIS:
return schemaAP242DIS;
break;
}
return "";
}
//=======================================================================
//function : SchemaName
//purpose :

View File

@@ -42,8 +42,6 @@ public:
//! Returns a Case Number for each of the StepAP214 Entities
Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const Standard_OVERRIDE;
Standard_EXPORT virtual Standard_CString SchemaName(const Handle(Interface_InterfaceModel)& theModel) const Standard_OVERRIDE;
Standard_EXPORT virtual Standard_CString SchemaName() const Standard_OVERRIDE;
//! Returns count of Protocol used as Resources (level one)

View File

@@ -67,14 +67,9 @@ Standard_Integer StepData_Protocol::TypeNumber
return 0;
}
Standard_CString StepData_Protocol::SchemaName() const
{
return thename;
}
Standard_CString StepData_Protocol::SchemaName (const Handle(Interface_InterfaceModel)& theModel) const
Standard_CString StepData_Protocol::SchemaName () const
{
(void)theModel;
return thename;
}

View File

@@ -67,8 +67,6 @@ public:
//! To be redefined by each sub-class
//! Here, SchemaName returns "(DEFAULT)"
//! was C++ : return const
Standard_EXPORT virtual Standard_CString SchemaName(const Handle(Interface_InterfaceModel)& theModel) const;
Standard_EXPORT virtual Standard_CString SchemaName() const;
//! Creates an empty Model for Step Norm

View File

@@ -399,7 +399,7 @@ TopoDS_Shape XSControl_TransferReader::ShapeResult
TopoDS_Shape sh = xu.BinderShape (mres->Binder());
// Ouh la vilaine verrue
Standard_Real tolang = EncodeRegAngle();
Standard_Real tolang = Interface_Static::RVal("read.encoderegularity.angle");
if (tolang <= 0 || sh.IsNull()) return sh;
ShapeFix::EncodeRegularity (sh,tolang);
return sh;

View File

@@ -65,7 +65,6 @@ class XSControl_TransferReader : public Standard_Transient
//! Creates a TransferReader, empty
XSControl_TransferReader()
: myEncodeRegAngle(0.01)
{}
//! Sets a Controller. It is required to generate the Actor.
@@ -114,14 +113,6 @@ class XSControl_TransferReader : public Standard_Transient
//! Returns actual value of file name
Standard_CString FileName() const
{ return myFileName.ToCString(); }
//! Sets value for EncodeRegularityAngle
void SetEncodeRegAngle(const Standard_Real theEncRegAngle)
{ myEncodeRegAngle = theEncRegAngle; }
//! Returns value of EncodeRegularityAngle
Standard_Real EncodeRegAngle() const
{ return myEncodeRegAngle; }
//! Clears data, according mode :
//! -1 all
@@ -368,7 +359,6 @@ class XSControl_TransferReader : public Standard_Transient
Handle(Transfer_TransientProcess) myTP;
TColStd_DataMapOfIntegerTransient myResults;
Handle(TopTools_HSequenceOfShape) myShapeResult;
Standard_Real myEncodeRegAngle;
};
#endif // _XSControl_TransferReader_HeaderFile

View File

@@ -141,7 +141,7 @@ IFSelect_ReturnStatus XSControl_TransferWriter::TransferWriteShape
if (theModel.IsNull()) return IFSelect_RetVoid;
TopoDS_Shape aShape = theShape;
Standard_Boolean isNMMode = NonmanifoldMode() != 0;
Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
if (isNMMode)
{
ShapeUpgrade_RemoveLocations aRemLoc;

View File

@@ -46,8 +46,7 @@ class XSControl_TransferWriter : public Standard_Transient
//! with an empty FinderProcess (but no controller, etc)
XSControl_TransferWriter()
: myTransferWriter(new Transfer_FinderProcess),
myTransferMode(0),
myNonmanifoldMode(0)
myTransferMode(0)
{}
//! Returns the FinderProcess itself
@@ -85,14 +84,6 @@ class XSControl_TransferWriter : public Standard_Transient
void SetTransferMode (const Standard_Integer theMode)
{ myTransferMode = theMode; }
//! Returns Nonmanifold Mode
Standard_Integer NonmanifoldMode() const
{ return myNonmanifoldMode; }
//! Changes Nonmanifold Mode
void SetNonmanifoldMode (const Standard_Integer theNonmMode)
{ myNonmanifoldMode = theNonmMode; }
//! Prints statistics on current Trace File, according what,mode
//! See PrintStatsProcess for details
Standard_EXPORT void PrintStats (const Standard_Integer theWhat, const Standard_Integer theMode = 0) const;
@@ -143,7 +134,6 @@ class XSControl_TransferWriter : public Standard_Transient
Handle(XSControl_Controller) myController;
Handle(Transfer_FinderProcess) myTransferWriter;
Standard_Integer myTransferMode;
Standard_Integer myNonmanifoldMode;
};
#endif // _XSControl_TransferWriter_HeaderFile

17
tests/bugs/step/bug33261 Normal file
View File

@@ -0,0 +1,17 @@
puts "======="
puts "0033261: Data Exchange, Step Import - Empty shape after reading process"
puts "======="
pload OCAF MODELING
# Read file
ReadStep D [locate_data_file bug33261.stp]
# get document model as a single shape
XGetOneShape S1 D
# check number of subshapes in the shape restored from STEP
checknbshapes S1 -face 2025 -solid 24 -compound 100
Close D -silent
unset S1