// Create datum target object
if (isValidDT) {
- TDF_Label aDatL = aDGTTool->AddDatum();
+ TDF_Label aDatL = aDGTTool->AddDatum(theDat->Name(), theDat->Description(), theDat->Identification());
myGDTMap.Bind(aDT, aDatL);
aDGTTool->Lock(aDatL);
aDat = XCAFDoc_Datum::Set(aDatL);
if (aShapeLabels.Length() > 0 || !isExistDatumTarget) {
// Create object for datum
- TDF_Label aDatL = aDGTTool->AddDatum();
+ TDF_Label aDatL = aDGTTool->AddDatum(theDat->Name(), theDat->Description(), theDat->Identification());
myGDTMap.Bind(theDat, aDatL);
// bind datum label with all reference datum_feature entities
for (Standard_Integer i = 1; i <= aSAs.Length(); i++) {
Handle(XCAFDoc_Datum) DatumAttr;
if(!DatumL.FindAttribute(XCAFDoc_Datum::GetID(),DatumAttr)) continue;
Handle(TCollection_HAsciiString) aName = DatumAttr->GetName();
- Handle(TCollection_HAsciiString) aDescription = DatumAttr->GetDescription();
Handle(TCollection_HAsciiString) anIdentification = DatumAttr->GetIdentification();
+ Handle(TCollection_HAsciiString) aDescription = DatumAttr->GetDescription();
+ if (aDescription.IsNull())
+ {
+ aDescription = new TCollection_HAsciiString();
+ }
Handle(StepDimTol_DatumFeature) DF = new StepDimTol_DatumFeature;
Handle(StepDimTol_Datum) aDatum = new StepDimTol_Datum;
DF->Init(aName, new TCollection_HAsciiString, PDS, StepData_LTrue);
--- /dev/null
+puts "================"
+puts "0031825: Data Exchange, STEP - NULL dereference while re-exporting model with empty Datum description"
+puts "================"
+puts ""
+
+pload OCAF
+param write.step.schema AP242DIS
+catch { Close D_First }
+catch { Close D_Sec }
+
+# Read file
+set Path ${imagedir}/${casename}.stp
+ReadStep D_First [locate_data_file bug26689_nist_ctc_04_asme1_ap242.stp]
+set baseDGTDump [XDumpNbDGTs D_First f]
+
+WriteStep D_First $Path
+ReadStep D_Sec $Path
+file delete $Path
+set newDGTDump [XDumpNbDGTs D_Sec f]
+XGetOneShape res D_Sec
+
+# Checking
+checkshape res
+checknbshapes res -face 518 -wire 623 -compound 1
+
+set isOK 1
+set nb_ref [llength $newDGTDump]
+for { set i 0 } { $i < $nb_ref } { incr i } {
+ set refstr [lindex $baseDGTDump $i]
+ set curstr [lindex $newDGTDump $i]
+ if {[string equal $refstr $curstr] == 0} {
+ set isOK 0
+ }
+}
+if {$isOK == 0} {
+ puts "Error: wrong export DGT and PMI"
+}
+
+# set default parameter
+param write.step.schema AP214IS