From 0fd91233b45870f7f87eeb6a4f71e852f4e9b325 Mon Sep 17 00:00:00 2001 From: vmigunov Date: Tue, 18 Oct 2022 11:07:46 +0300 Subject: [PATCH] 0033165: Data exchange - Instance name is not saved during writing step file Instance name is saved also with identity location transformation --- src/STEPControl/STEPControl_ActorWrite.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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) ); -- 2.39.5