// 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);
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) );
--- /dev/null
+puts "===================================="
+puts "0033165: Data exchange - Instance name is not saved during writing step file"
+puts "===================================="
+puts ""
+
+pload OCAF XDEDRAW
+
+box b 1 1 1
+reset b
+copy b b1
+
+# set valid location with identity matrix
+reset b1
+
+ttranslate b 1 1 1
+
+compound b1 b c
+XNewDoc d
+XAddShape d c 1
+
+set label1 "0:1:1:1:1"
+set label2 "0:1:1:1:2"
+set name1 "name1"
+set name2 "name2"
+
+SetName d $label1 $name1
+SetName d $label2 $name2
+
+set file $imagedir/${test_image}.stp
+WriteStep d $file
+ReadStep d1 $file
+
+if { [GetName d1 $label1] != $name1 } {
+ puts "Error: The name is missed"
+}
+
+if { [GetName d1 $label2] != $name2 } {
+ puts "Error: The name is missed"
+}
+
+file delete -force ${file}
\ No newline at end of file