From: vmigunov Date: Tue, 18 Oct 2022 08:07:46 +0000 (+0300) Subject: 0033165: Data exchange - Instance name is not saved during writing step file X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2FCR0-76-Hybrid;p=occt.git 0033165: Data exchange - Instance name is not saved during writing step file Instance name is saved also with identity location transformation --- diff --git a/src/STEPControl/STEPControl_ActorWrite.cxx b/src/STEPControl/STEPControl_ActorWrite.cxx index 73bb2f08ae..7ac757f8e6 100644 --- a/src/STEPControl/STEPControl_ActorWrite.cxx +++ b/src/STEPControl/STEPControl_ActorWrite.cxx @@ -1569,8 +1569,10 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferSubShape // SINON, la shape est prise et transferee telle quelle TopoDS_Shape sh0 = shape; gp_Trsf aLoc; + Standard_Boolean isShapeLocated = Standard_False; if ( GroupMode() >0) { TopLoc_Location shloc = shape.Location(); + isShapeLocated = !shloc.IsIdentity(); aLoc = shloc.Transformation(); TopLoc_Location shident; sh0.Location (shident); @@ -1649,7 +1651,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferSubShape myContext.NextIndex(); // abv 16.10.00: bind CDSR (et al) to located shape in order to be able to track instances - if (mapper != start && aLoc.Form() != gp_Identity) { + if (mapper != start && isShapeLocated) { Handle(Transfer_Binder) bnd = FP->Find ( start ); for ( Standard_Integer j=1; j <= roots->Length(); j++ ) if ( bnd.IsNull() ) bnd = TransientResult ( roots->Value(j) );