Fix exceptions, add test cases.
Small correction of test cases for issue CR27645
{
for(Standard_Integer k = aModifE->Lower(); k <= aModifE->Upper(); k++)
{
- if(aModifE->Value(k).CaseNumber() == 1)
+ if(aModifE->Value(k).CaseNumber() == 2)
aXCAFModifiers.Append(
(XCAFDimTolObjects_DatumSingleModif)aModifE->Value(k).
SimpleDatumReferenceModifierMember()->Value());
- else if (aModifE->Value(k).CaseNumber() == 2)
+ else if (aModifE->Value(k).CaseNumber() == 1)
{
aXCAFModifWithVal = (XCAFDimTolObjects_DatumModifWithValue)(aModifE->Value(k).DatumReferenceModifierWithValue()->ModifierType() + 1);
Standard_Real aVal = aModifE->Value(k).DatumReferenceModifierWithValue()->ModifierValue()->ValueComponent();
{
return aGDTL;
}
+ // protection against invalid input
+ if (theEnt->IsKind(STANDARD_TYPE(StepDimTol_GeometricTolerance))) {
+ Handle(StepDimTol_GeometricTolerance) aGeomTol = Handle(StepDimTol_GeometricTolerance)::DownCast(theEnt);
+ if (aGeomTol->TolerancedShapeAspect().IsNull())
+ return aGDTL;
+ }
+ if (theEnt->IsKind(STANDARD_TYPE(StepShape_DimensionalSize))) {
+ Handle(StepShape_DimensionalSize) aDim = Handle(StepShape_DimensionalSize)::DownCast(theEnt);
+ if (aDim->AppliesTo().IsNull())
+ return aGDTL;
+ }
+ if (theEnt->IsKind(STANDARD_TYPE(StepShape_DimensionalLocation))) {
+ Handle(StepShape_DimensionalLocation) aDim = Handle(StepShape_DimensionalLocation)::DownCast(theEnt);
+ if (aDim->RelatedShapeAspect().IsNull() || aDim->RelatingShapeAspect().IsNull())
+ return aGDTL;
+ }
Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool( theDoc->Main() );
Handle(XCAFDoc_DimTolTool) aDGTTool = XCAFDoc_DocumentTool::DimTolTool( theDoc->Main() );
if (aDatumSeqPos.Length() == 1) {
// Datum entity
Handle(Standard_Transient) aFDValue;
- if (theDatumMap.Find(aDatumSeqPos.Value(1)->GetName()->String(), aFDValue))
+ if (theDatumMap.Find(aDatumSeqPos.Value(1)->GetName()->String(), aFDValue) && !aFDValue.IsNull())
aFirstDatum = Handle(StepDimTol_Datum)::DownCast (aFDValue);
aDatumRef.SetValue(aFirstDatum);
// Modifiers
// Add Datum_Reference_Modifier_With_Value
if (!anElemModifiers.IsNull()) {
Handle(StepDimTol_DatumReferenceModifierWithValue) aDRMWV =
- anElemModifiers->Value(aModifiers->Length()).DatumReferenceModifierWithValue();
+ anElemModifiers->Value(anElemModifiers->Length()).DatumReferenceModifierWithValue();
if (!aDRMWV.IsNull()) {
Model->AddWithRefs(aDRMWV);
}
for (Standard_Integer shIt = 1; shIt <= aFirstShapeL.Length(); shIt++) {
TopoDS_Shape aShape = XCAFDoc_ShapeTool::GetShape(aFirstShapeL.Value(shIt));
Handle(StepRepr_ShapeAspect) aSA = WriteShapeAspect(WS, aDimensionL, aShape, dummyRC, dummyGISU);
- if (aCSA.IsNull() && !aSA.IsNull())
+ if (aSA.IsNull())
+ continue;
+ if (aCSA.IsNull()) {
aCSA = new StepRepr_CompositeShapeAspect();
aCSA->Init(aSA->Name(), aSA->Description(), aSA->OfShape(), aSA->ProductDefinitional());
aModel->AddWithRefs(aCSA);
- if (!aSA.IsNull()) {
- Handle(StepRepr_ShapeAspectRelationship) aSAR = new StepRepr_ShapeAspectRelationship();
- aSAR->Init(new TCollection_HAsciiString(), Standard_False, new TCollection_HAsciiString(), aCSA, aSA);
- aModel->AddWithRefs(aSAR);
}
+ Handle(StepRepr_ShapeAspectRelationship) aSAR = new StepRepr_ShapeAspectRelationship();
+ aSAR->Init(new TCollection_HAsciiString(), Standard_False, new TCollection_HAsciiString(), aCSA, aSA);
+ aModel->AddWithRefs(aSAR);
if (aRC.IsNull() && !dummyRC.IsNull())
aRC = dummyRC;
}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_06_asme1_cr3000_rd.prt.stp
+puts "TODO CR26859 ALL:Error : 3 differences with reference data found :"
+puts "TODO CR26859 ALL:Error on writing file"
+set ref_data {
+
+ NbOfDimensions : 20
+ NbOfDimensionalSize : 18
+ NbOfDimensionalLocation: 2
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 22
+ NbOfGTWithModifiers : 4
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 3
+ NbOfDatumFeature : 3
+ NbOfAttachedDatum : 3
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_06_asme1_ct5240_rd.stp
+puts "TODO CR26859 ALL:Error : 3 differences with reference data found :"
+puts "TODO CR26859 ALL:Error on writing file"
+set ref_data {
+
+ NbOfDimensions : 22
+ NbOfDimensionalSize : 14
+ NbOfDimensionalLocation: 8
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 21
+ NbOfGTWithModifiers : 4
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 20
+ NbOfDatumFeature : 6
+ NbOfAttachedDatum : 46
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_06_asme1_ct5240_rd-1.stp
+puts "TODO CR26859 ALL:Error : 3 differences with reference data found :"
+puts "TODO CR26859 ALL:Error on writing file"
+set ref_data {
+
+ NbOfDimensions : 22
+ NbOfDimensionalSize : 14
+ NbOfDimensionalLocation: 8
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 21
+ NbOfGTWithModifiers : 4
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 20
+ NbOfDatumFeature : 6
+ NbOfAttachedDatum : 46
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_08_asme1_cr3000_rc.prt.stp
+puts "TODO CR26859 ALL:Error : 1 differences with reference data found :"
+puts "TODO CR26859 ALL:Error on writing file"
+set ref_data {
+
+ NbOfDimensions : 10
+ NbOfDimensionalSize : 10
+ NbOfDimensionalLocation: 0
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 30
+ NbOfGTWithModifiers : 14
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 1
+ NbOfDatumFeature : 2
+ NbOfAttachedDatum : 2
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_08_asme1_ct5240_rc.stp
+
+set ref_data {
+
+ NbOfDimensions : 10
+ NbOfDimensionalSize : 9
+ NbOfDimensionalLocation: 1
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 29
+ NbOfGTWithModifiers : 22
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 28
+ NbOfDatumFeature : 10
+ NbOfAttachedDatum : 71
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_08_asme1_ct5240_rc-1.stp
+
+set ref_data {
+
+ NbOfDimensions : 10
+ NbOfDimensionalSize : 9
+ NbOfDimensionalLocation: 1
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 29
+ NbOfGTWithModifiers : 22
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 28
+ NbOfDatumFeature : 10
+ NbOfAttachedDatum : 71
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_09_asme1_cr3000_rd.prt.stp
+puts "TODO CR26859 ALL:Error : 1 differences with reference data found :"
+puts "TODO CR26859 ALL:Error on writing file"
+set ref_data {
+
+ NbOfDimensions : 21
+ NbOfDimensionalSize : 19
+ NbOfDimensionalLocation: 2
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 29
+ NbOfGTWithModifiers : 6
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 0
+ NbOfDatumFeature : 0
+ NbOfAttachedDatum : 0
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_09_asme1_ct5240_rd.stp
+
+set ref_data {
+
+ NbOfDimensions : 22
+ NbOfDimensionalSize : 15
+ NbOfDimensionalLocation: 7
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 28
+ NbOfGTWithModifiers : 8
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 28
+ NbOfDatumFeature : 6
+ NbOfAttachedDatum : 69
+ NbOfDatumTarget : 0
+}
--- /dev/null
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug27645_nist_ftc_09_asme1_ct5240_rd-1.stp
+
+set ref_data {
+
+ NbOfDimensions : 22
+ NbOfDimensionalSize : 15
+ NbOfDimensionalLocation: 7
+ NbOfAngular : 0
+ NbOfWithPath : 0
+ NbOfTolerances : 28
+ NbOfGTWithModifiers : 8
+ NbOfGTWithMaxTolerance : 0
+ NbOfGTWithDatums : 28
+ NbOfDatumFeature : 6
+ NbOfAttachedDatum : 69
+ NbOfDatumTarget : 0
+}