diff --git a/src/STEPCAFControl/STEPCAFControl_Reader.cxx b/src/STEPCAFControl/STEPCAFControl_Reader.cxx index 7231daa8ec..5bbf3de260 100644 --- a/src/STEPCAFControl/STEPCAFControl_Reader.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Reader.cxx @@ -15,6 +15,7 @@ #include +#include #include #include #include @@ -172,6 +173,7 @@ #include #include #include +#include #include #include #include @@ -1961,7 +1963,7 @@ Standard_Boolean readAnnotationPlane(const Handle(StepVisual_AnnotationPlane) th // (Dimension, Geometric_Tolerance, Datum_Feature or Placed_Datum_Target_Feature) //======================================================================= void readAnnotation(const Handle(XSControl_TransferReader)& theTR, - const Handle(Standard_Transient) theGDT, + const Handle(Standard_Transient)& theGDT, const Handle(Standard_Transient)& theDimObject) { if (theGDT.IsNull() || theDimObject.IsNull()) @@ -2258,240 +2260,307 @@ static Standard_Integer FindShapeIndexForDGT(const Handle(Standard_Transient)& t return 0; } +//======================================================================= +//function : collectShapeAspect +//purpose : +//======================================================================= +static void collectShapeAspect(const Handle(StepRepr_ShapeAspect)& theSA, + const Handle(XSControl_WorkSession)& theWS, + NCollection_Sequence& theSAs) +{ + if (theSA.IsNull()) + return; + Handle(XSControl_TransferReader) aTR = theWS->TransferReader(); + Handle(Transfer_TransientProcess) aTP = aTR->TransientProcess(); + const Interface_Graph& aGraph = aTP->Graph(); + // Retrieve Shape_Aspect, connected to Representation_Item from Derived_Shape_Aspect + if (theSA->IsKind(STANDARD_TYPE(StepRepr_DerivedShapeAspect))) { + Interface_EntityIterator anIter = aGraph.Sharings(theSA); + Handle(StepRepr_ShapeAspectDerivingRelationship) aSADR = NULL; + for (; aSADR.IsNull() && anIter.More(); anIter.Next()) { + aSADR = Handle(StepRepr_ShapeAspectDerivingRelationship)::DownCast(anIter.Value()); + } + if (!aSADR.IsNull()) + collectShapeAspect(aSADR->RelatedShapeAspect(), theWS, theSAs); + } + else if (theSA->IsKind(STANDARD_TYPE(StepDimTol_DatumFeature)) || + theSA->IsKind(STANDARD_TYPE(StepDimTol_DatumTarget))) { + theSAs.Append(theSA); + return; + } + else { + // Find all children Shape_Aspect + Standard_Boolean isSimple = Standard_True; + Interface_EntityIterator anIter = aGraph.Sharings(theSA); + for (; anIter.More(); anIter.Next()) { + if (anIter.Value()->IsKind(STANDARD_TYPE(StepRepr_ShapeAspectRelationship)) && + !anIter.Value()->IsKind(STANDARD_TYPE(StepShape_DimensionalLocation))) { + Handle(StepRepr_ShapeAspectRelationship) aSAR = + Handle(StepRepr_ShapeAspectRelationship)::DownCast(anIter.Value()); + if (aSAR->RelatingShapeAspect() == theSA && !aSAR->RelatedShapeAspect().IsNull() + && !aSAR->RelatedShapeAspect()->IsKind(STANDARD_TYPE(StepDimTol_Datum))) { + collectShapeAspect(aSAR->RelatedShapeAspect(), theWS, theSAs); + isSimple = Standard_False; + } + } + } + // If not Composite_Shape_Aspect (or subtype) append to sequence. + if (isSimple) + theSAs.Append(theSA); + } +} + +//======================================================================= +//function : getShapeLabel +//purpose : +//======================================================================= + +static TDF_Label getShapeLabel(const Handle(StepRepr_RepresentationItem)& theItem, + const Handle(XSControl_WorkSession)& theWS, + const Handle(XCAFDoc_ShapeTool)& theShapeTool) +{ + TDF_Label aShapeL; + const Handle(Transfer_TransientProcess) &aTP = theWS->TransferReader()->TransientProcess(); + Standard_Integer index = FindShapeIndexForDGT(theItem, theWS); + TopoDS_Shape aShape; + if (index > 0) { + Handle(Transfer_Binder) aBinder = aTP->MapItem(index); + aShape = TransferBRep::ShapeResult(aBinder); + } + if (aShape.IsNull()) + return aShapeL; + theShapeTool->Search(aShape, aShapeL, Standard_True, Standard_True, Standard_True); + return aShapeL; +} + //======================================================================= //function : setDatumToXCAF //purpose : //======================================================================= + static Standard_Boolean setDatumToXCAF(const Handle(StepDimTol_Datum)& theDat, - const TDF_Label theGDTL, - const Standard_Integer thePositionCounter, - const XCAFDimTolObjects_DatumModifiersSequence& aXCAFModifiers, - const XCAFDimTolObjects_DatumModifWithValue aXCAFModifWithVal, - const Standard_Real aModifValue, - const Handle(TDocStd_Document)& theDoc, - const Handle(XSControl_WorkSession)& theWS) + const TDF_Label theGDTL, + const Standard_Integer thePositionCounter, + const XCAFDimTolObjects_DatumModifiersSequence& theXCAFModifiers, + const XCAFDimTolObjects_DatumModifWithValue theXCAFModifWithVal, + const Standard_Real theModifValue, + const Handle(TDocStd_Document)& theDoc, + const Handle(XSControl_WorkSession)& theWS) { - Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool( theDoc->Main() ); - Handle(XCAFDoc_DimTolTool) aDGTTool = XCAFDoc_DocumentTool::DimTolTool( theDoc->Main() ); + Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool(theDoc->Main()); + Handle(XCAFDoc_DimTolTool) aDGTTool = XCAFDoc_DocumentTool::DimTolTool(theDoc->Main()); const Handle(XSControl_TransferReader) &aTR = theWS->TransferReader(); const Handle(Transfer_TransientProcess) &aTP = aTR->TransientProcess(); const Interface_Graph& aGraph = aTP->Graph(); Handle(XCAFDoc_Datum) aDat; - TDF_Label aShL; - Standard_Boolean aRefShapeIsFound = Standard_False; - Standard_Boolean aFirstStep = Standard_True; - Interface_EntityIterator anIterD = aGraph.Sharings(theDat); - for(anIterD.Start(); anIterD.More(); anIterD.Next()) { - Handle(StepRepr_ShapeAspectRelationship) aSAR = - Handle(StepRepr_ShapeAspectRelationship)::DownCast(anIterD.Value()); - if(aSAR.IsNull()) continue; + TDF_LabelSequence aShapeLabels; + Handle(XCAFDimTolObjects_DatumObject) aDatObj = new XCAFDimTolObjects_DatumObject(); - Handle(StepRepr_ShapeAspect) aSA = aSAR->RelatingShapeAspect(); - if (aSA.IsNull()) continue; - Handle(StepAP242_GeometricItemSpecificUsage) aPGISU; - if(aSA->IsKind(STANDARD_TYPE(StepRepr_CompShAspAndDatumFeatAndShAsp))) - { - //processing for complex entity - Interface_EntityIterator anIterC = aGraph.Sharings(aSA); - for(anIterC.Start(); anIterC.More(); anIterC.Next()) { - Handle(StepRepr_ShapeAspectRelationship) SAR = - Handle(StepRepr_ShapeAspectRelationship)::DownCast(anIterC.Value()); - if(SAR.IsNull()) continue; - Handle(StepRepr_ShapeAspect) aS = SAR->RelatedShapeAspect(); - if(aS.IsNull()) continue; - Interface_EntityIterator anIterSA = aGraph.Sharings(aS); - for(anIterSA.Start(); anIterSA.More() && aPGISU.IsNull(); anIterSA.Next()) { - aPGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIterSA.Value()); - } - if(!aPGISU.IsNull()){ - aSA = aS; - break; - } - } - } - else if(aSA->IsKind(STANDARD_TYPE(StepDimTol_PlacedDatumTargetFeature))) - { - //processing for datum target - Interface_EntityIterator anIterDTF = aGraph.Sharings(aSA); - for(anIterDTF.Start(); anIterDTF.More(); anIterDTF.Next()) { - if(anIterDTF.Value()->IsKind(STANDARD_TYPE(StepRepr_FeatureForDatumTargetRelationship))) - { - Handle(StepRepr_FeatureForDatumTargetRelationship) aFFDTR = - Handle(StepRepr_FeatureForDatumTargetRelationship)::DownCast(anIterDTF.Value()); - Handle(StepRepr_ShapeAspect) aTmpSA = aFFDTR->RelatedShapeAspect(); - Interface_EntityIterator anIterDSWP = aGraph.Sharings(aTmpSA); - for(anIterDSWP.Start(); anIterDSWP.More() && aPGISU.IsNull(); anIterDSWP.Next()) { - aPGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIterDSWP.Value()); - } - } - } - } - if (aSA.IsNull()) continue; - Interface_EntityIterator anIterDSWP = aGraph.Sharings(aSA); - for(anIterDSWP.Start(); anIterDSWP.More() && aPGISU.IsNull(); anIterDSWP.Next()) { - aPGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIterDSWP.Value()); - } - if(aPGISU.IsNull()) continue; - // get representation item - Handle(StepRepr_RepresentationItem) aRI; - for(Standard_Integer i = 1 ; i <= aPGISU->NbIdentifiedItem() && aRI.IsNull(); i++) - { - aRI = aPGISU->IdentifiedItemValue(i); - } - if(aRI.IsNull()) continue; - Standard_Integer index = FindShapeIndexForDGT(aRI, theWS); - TopoDS_Shape aSh; - if(index >0) { - Handle(Transfer_Binder) binder = aTP->MapItem(index); - aSh = TransferBRep::ShapeResult(binder); - } - if(aSh.IsNull()) continue; - if( !aSTool->Search(aSh, aShL, Standard_True, Standard_True, Standard_True) ) continue; - Handle(TDataStd_TreeNode) aNode; - if(aFirstStep && aShL.FindAttribute(XCAFDoc::DatumRefGUID(),aNode) && aNode->HasFirst() && - aNode->First()->Label().FindAttribute(XCAFDoc_Datum::GetID(),aDat)) - { - //if datums already attached, not need add datum target - aRefShapeIsFound = Standard_True; - } - aFirstStep = Standard_False; - Handle(XCAFDimTolObjects_DatumObject) aDatObj; - if(aSA->IsKind(STANDARD_TYPE(StepDimTol_PlacedDatumTargetFeature))) - { - if(!aRefShapeIsFound) - { - //if datum targers not yet added - TDF_Label aDatL = aDGTTool->AddDatum(); - aDat = XCAFDoc_Datum::Set(aDatL); - aDGTTool->SetDatum(aShL, aDatL); - aDatObj = aDat->GetObject(); - aDatObj->SetName(theDat->Identification()); - aDatObj->SetPosition (thePositionCounter); - if(!aXCAFModifiers.IsEmpty()) - aDatObj->SetModifiers(aXCAFModifiers); - if (aXCAFModifWithVal != XCAFDimTolObjects_DatumModifWithValue_None) - aDatObj->SetModifierWithValue(aXCAFModifWithVal, aModifValue); - aDGTTool->SetDatumToGeomTol(aDatL, theGDTL); - Handle(StepDimTol_PlacedDatumTargetFeature) aPDTF = Handle(StepDimTol_PlacedDatumTargetFeature)::DownCast(aSA); - if (aPDTF->TargetId()->IsIntegerValue()) - aDatObj->SetDatumTargetNumber(aPDTF->TargetId()->IntegerValue()); - else - aDatObj->SetDatumTargetNumber(0); - aDatObj->IsDatumTarget(Standard_True); - XCAFDimTolObjects_DatumTargetType aType; - if(STEPCAFControl_GDTProperty::GetDatumTargetType(aSA->Description(),aType)) - { - aDatObj->SetDatumTargetType(aType); - if(aType == XCAFDimTolObjects_DatumTargetType_Area) - { - Interface_EntityIterator anIterDTF = aGraph.Shareds(aSA); - for(anIterDTF.Start(); anIterDTF.More(); anIterDTF.Next()) { - if(anIterDTF.Value()->IsKind(STANDARD_TYPE(StepAP242_GeometricItemSpecificUsage))) - { - Handle(StepAP242_GeometricItemSpecificUsage) aGISU - = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIterDSWP.Value()); - Handle(StepRepr_RepresentationItem) anItem; - if(aPGISU->NbIdentifiedItem() > 0) { - anItem = aPGISU->IdentifiedItemValue(1); - } - if(anItem.IsNull()) continue; - Standard_Integer anItemIndex = FindShapeIndexForDGT(anItem, theWS); - if(anItemIndex >0) { - Handle(Transfer_Binder) binder = aTP->MapItem(anItemIndex); - TopoDS_Shape anItemShape = TransferBRep::ShapeResult(binder); - aDatObj->SetDatumTarget(anItemShape); - } - } - } - } - else - { - Interface_EntityIterator anIterDTF = aGraph.Shareds(aSA); - for(anIterDTF.Start(); anIterDTF.More(); anIterDTF.Next()) { - if(anIterDTF.Value()->IsKind(STANDARD_TYPE(StepRepr_PropertyDefinition))) - { - Interface_EntityIterator anIterPD = aGraph.Shareds(anIterDTF.Value()); - for(anIterPD.Start(); anIterPD.More(); anIterPD.Next()) { - if(anIterPD.Value()->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation))) - { - Interface_EntityIterator anIterSDR = aGraph.Sharings(anIterPD.Value()); - for(anIterSDR.Start(); anIterSDR.More(); anIterSDR.Next()) { - if(anIterSDR.Value()->IsKind(STANDARD_TYPE(StepShape_ShapeRepresentationWithParameters))) - { - Handle(StepShape_ShapeRepresentationWithParameters) aSRWP - = Handle(StepShape_ShapeRepresentationWithParameters)::DownCast(anIterSDR.Value()); - for(Standard_Integer r = aSRWP->Items()->Lower(); r <= aSRWP->Items()->Upper(); r++) - { - if(aSRWP->ItemsValue(r)->IsKind(STANDARD_TYPE(StepGeom_Axis2Placement3d))) - { - Handle(StepGeom_Axis2Placement3d) anAx - = Handle(StepGeom_Axis2Placement3d)::DownCast(aSRWP->ItemsValue(r)); - Handle(TColStd_HArray1OfReal) aDirArr = anAx->Axis()->DirectionRatios(); - Handle(TColStd_HArray1OfReal) aDirRArr = anAx->RefDirection()->DirectionRatios(); - Handle(TColStd_HArray1OfReal) aLocArr = anAx->Location()->Coordinates(); - gp_Dir aDir; - gp_Dir aDirR; - gp_Pnt aPnt; - if(!aDirArr.IsNull() && aDirArr->Length() > 2 && - !aDirRArr.IsNull() && aDirRArr->Length() > 2 && - !aLocArr.IsNull() && aLocArr->Length() > 2) - { - aDir.SetCoord(aDirArr->Lower(), aDirArr->Lower()+1, aDirArr->Lower()+2); - aDirR.SetCoord(aDirRArr->Lower(), aDirRArr->Lower()+1, aDirRArr->Lower()+2); - aPnt.SetCoord(aLocArr->Lower(), aLocArr->Lower()+1, aLocArr->Lower()+2); - gp_Ax2 anA(aPnt, aDir, aDirR); - aDatObj->SetDatumTargetAxis(anA); - } - } - else if(aSRWP->ItemsValue(r)->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndLengthMeasureWithUnit))) - { - Handle(StepRepr_ReprItemAndLengthMeasureWithUnit) aM = - Handle(StepRepr_ReprItemAndLengthMeasureWithUnit)::DownCast(aSRWP->ItemsValue(r)); - Standard_Real aVal = aM->GetMeasureWithUnit()->ValueComponent(); - StepBasic_Unit anUnit = aM->GetMeasureWithUnit()->UnitComponent(); - Standard_Real aFact=1.; - if(anUnit.IsNull()) continue; - if( !(anUnit.CaseNum(anUnit.Value())==1) ) continue; - Handle(StepBasic_NamedUnit) NU = anUnit.NamedUnit(); - if(GetLengthConversionFactor(NU,aFact)) aVal=aVal*aFact; - if(aM->Name()->String().IsEqual("target length") || - aM->Name()->String().IsEqual("target diameter")) - aDatObj->SetDatumTargetLength(aVal); - else - aDatObj->SetDatumTargetWidth(aVal); - } - } - } - } - } - } - } - } - } - } - } - } - else - { - //processing for darum feature - TDF_Label aDatL = aDGTTool->AddDatum(); - aDat = XCAFDoc_Datum::Set(aDatL); - aDGTTool->SetDatum(aShL, aDatL); - aDatObj = aDat->GetObject(); - aDatObj->SetName(theDat->Identification()); - aDatObj->SetPosition (thePositionCounter); - if(!aXCAFModifiers.IsEmpty()) - aDatObj->SetModifiers(aXCAFModifiers); - if (aXCAFModifWithVal != XCAFDimTolObjects_DatumModifWithValue_None) - aDatObj->SetModifierWithValue(aXCAFModifWithVal, aModifValue); - aDGTTool->SetDatumToGeomTol(aDatL, theGDTL); - } - if(!aDatObj.IsNull()) { + // Collect all links to shapes + NCollection_Sequence aSAs; + Interface_EntityIterator anIterD = aGraph.Sharings(theDat); + for (anIterD.Start(); anIterD.More(); anIterD.Next()) { + Handle(StepRepr_ShapeAspectRelationship) aSAR = Handle(StepRepr_ShapeAspectRelationship)::DownCast(anIterD.Value()); + if (aSAR.IsNull() || aSAR->RelatingShapeAspect().IsNull()) + continue; + collectShapeAspect(aSAR->RelatingShapeAspect(), theWS, aSAs); + Handle(StepDimTol_DatumFeature) aDF = Handle(StepDimTol_DatumFeature)::DownCast(aSAR->RelatingShapeAspect()); + if (!aSAR->RelatingShapeAspect()->IsKind(STANDARD_TYPE(StepDimTol_DatumTarget))) readAnnotation(aTR, aSAR->RelatingShapeAspect(), aDatObj); - aDat->SetObject(aDatObj); + } + + // Collect shape labels + for (Standard_Integer i = 1; i <= aSAs.Length(); i++) { + Handle(StepRepr_ShapeAspect) aSA = aSAs.Value(i); + if (aSA.IsNull()) + continue; + // Skip datum targets + if (aSA->IsKind(STANDARD_TYPE(StepDimTol_DatumTarget))) + continue; + + // Process all connected GISU + Interface_EntityIterator anIter = aGraph.Sharings(aSA); + for (; anIter.More(); anIter.Next()) { + Handle(StepAP242_GeometricItemSpecificUsage) aGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIter.Value()); + if (aGISU.IsNull()) + continue; + for (Standard_Integer i = 1; i <= aGISU->NbIdentifiedItem(); i++) { + TDF_Label aShapeL = getShapeLabel(aGISU->IdentifiedItemValue(i), theWS, aSTool); + if (!aShapeL.IsNull()) + aShapeLabels.Append(aShapeL); + } } } - return !aDat.IsNull(); + + // Process datum targets and create objects for them + Standard_Boolean isExistDatumTarget = Standard_False; + for (Standard_Integer i = 1; i <= aSAs.Length(); i++) { + Handle(StepDimTol_PlacedDatumTargetFeature) aDT = Handle(StepDimTol_PlacedDatumTargetFeature)::DownCast(aSAs.Value(i)); + if (aDT.IsNull()) + continue; + Handle(XCAFDimTolObjects_DatumObject) aDatObj = new XCAFDimTolObjects_DatumObject(); + XCAFDimTolObjects_DatumTargetType aType; + if (!STEPCAFControl_GDTProperty::GetDatumTargetType(aDT->Description(), aType)) + continue; + aDatObj->SetDatumTargetType(aType); + Standard_Boolean isValidDT = Standard_False; + + // Feature for datum target + TDF_LabelSequence aDTShapeLabels; + Interface_EntityIterator anIter = aGraph.Sharings(aDT); + Handle(StepRepr_FeatureForDatumTargetRelationship) aRelationship; + for (; anIter.More() && aRelationship.IsNull(); anIter.Next()) { + aRelationship = Handle(StepRepr_FeatureForDatumTargetRelationship)::DownCast(anIter.Value()); + } + if (!aRelationship.IsNull()) { + Handle(StepRepr_ShapeAspect) aSA = aRelationship->RelatingShapeAspect(); + Interface_EntityIterator aSAIter = aGraph.Sharings(aSA); + for (; aSAIter.More(); aSAIter.Next()) { + Handle(StepAP242_GeometricItemSpecificUsage) aGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(aSAIter.Value()); + if (aGISU.IsNull()) + continue; + for (Standard_Integer i = 1; i <= aGISU->NbIdentifiedItem(); i++) { + TDF_Label aShapeL = getShapeLabel(aGISU->IdentifiedItemValue(i), theWS, aSTool); + if (!aShapeL.IsNull()) { + aDTShapeLabels.Append(aShapeL); + isValidDT = Standard_True; + } + } + } + } + + if (aType != XCAFDimTolObjects_DatumTargetType_Area && !isValidDT) { + // Try another way of feature connection + for (anIter.Start(); anIter.More(); anIter.Next()) { + Handle(StepAP242_GeometricItemSpecificUsage) aGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIter.Value()); + if (aGISU.IsNull()) + continue; + for (Standard_Integer i = 1; i <= aGISU->NbIdentifiedItem(); i++) { + TDF_Label aShapeL = getShapeLabel(aGISU->IdentifiedItemValue(i), theWS, aSTool); + if (!aShapeL.IsNull()) { + aDTShapeLabels.Append(aShapeL); + isValidDT = Standard_True; + } + } + } + } + + if (aType == XCAFDimTolObjects_DatumTargetType_Area) { + // Area datum target + Interface_EntityIterator anIterDTF = aGraph.Shareds(aDT); + Handle(StepAP242_GeometricItemSpecificUsage) aGISU; + for (; anIterDTF.More() && aGISU.IsNull(); anIterDTF.Next()) { + aGISU = Handle(StepAP242_GeometricItemSpecificUsage)::DownCast(anIterDTF.Value()); + } + Handle(StepRepr_RepresentationItem) anItem; + if (aGISU->NbIdentifiedItem() > 0) + anItem = aGISU->IdentifiedItemValue(1); + if (anItem.IsNull()) + continue; + Standard_Integer anItemIndex = FindShapeIndexForDGT(anItem, theWS); + if (anItemIndex > 0) { + Handle(Transfer_Binder) aBinder = aTP->MapItem(anItemIndex); + TopoDS_Shape anItemShape = TransferBRep::ShapeResult(aBinder); + aDatObj->SetDatumTarget(anItemShape); + isValidDT = Standard_True; + } + } + else { + // Point/line/rectangle/circle datum targets + Interface_EntityIterator anIter = aGraph.Sharings(aDT); + Handle(StepRepr_PropertyDefinition) aPD; + for (; anIter.More() && aPD.IsNull(); anIter.Next()) { + aPD = Handle(StepRepr_PropertyDefinition)::DownCast(anIter.Value()); + } + if (!aPD.IsNull()) { + anIter = aGraph.Sharings(aPD); + Handle(StepShape_ShapeDefinitionRepresentation) aSDR; + for (; anIter.More() && aSDR.IsNull(); anIter.Next()) { + aSDR = Handle(StepShape_ShapeDefinitionRepresentation)::DownCast(anIter.Value()); + } + if (!aSDR.IsNull()) { + Handle(StepShape_ShapeRepresentationWithParameters) aSRWP + = Handle(StepShape_ShapeRepresentationWithParameters)::DownCast(aSDR->UsedRepresentation()); + if (!aSRWP.IsNull()) { + isValidDT = Standard_True; + // Collect parameters of datum target + for (Standard_Integer i = aSRWP->Items()->Lower(); i <= aSRWP->Items()->Upper(); i++) + { + if (aSRWP->ItemsValue(i).IsNull()) + continue; + if (aSRWP->ItemsValue(i)->IsKind(STANDARD_TYPE(StepGeom_Axis2Placement3d))) + { + Handle(StepGeom_Axis2Placement3d) anAx + = Handle(StepGeom_Axis2Placement3d)::DownCast(aSRWP->ItemsValue(i)); + Handle(Geom_Axis2Placement) anAxis = StepToGeom::MakeAxis2Placement(anAx); + aDatObj->SetDatumTargetAxis(anAxis->Ax2()); + } + else if (aSRWP->ItemsValue(i)->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndLengthMeasureWithUnit))) + { + Handle(StepRepr_ReprItemAndLengthMeasureWithUnit) aM = + Handle(StepRepr_ReprItemAndLengthMeasureWithUnit)::DownCast(aSRWP->ItemsValue(i)); + Standard_Real aVal = aM->GetMeasureWithUnit()->ValueComponent(); + StepBasic_Unit anUnit = aM->GetMeasureWithUnit()->UnitComponent(); + Standard_Real aFact = 1.; + if (anUnit.IsNull()) + continue; + Handle(StepBasic_NamedUnit) aNU = anUnit.NamedUnit(); + if (aNU.IsNull()) + continue; + if (GetLengthConversionFactor(aNU, aFact)) + aVal = aVal * aFact; + if (aM->Name()->String().IsEqual("target length") || + aM->Name()->String().IsEqual("target diameter")) + aDatObj->SetDatumTargetLength(aVal); + else + aDatObj->SetDatumTargetWidth(aVal); + } + } + } + } + } + } + + // Create datum target object + if (isValidDT) { + TDF_Label aDatL = aDGTTool->AddDatum(); + aDat = XCAFDoc_Datum::Set(aDatL); + aDGTTool->SetDatum(aDTShapeLabels, aDatL); + aDatObj->SetName(theDat->Identification()); + aDatObj->SetPosition(thePositionCounter); + if (!theXCAFModifiers.IsEmpty()) + aDatObj->SetModifiers(theXCAFModifiers); + if (theXCAFModifWithVal != XCAFDimTolObjects_DatumModifWithValue_None) + aDatObj->SetModifierWithValue(theXCAFModifWithVal, theModifValue); + aDGTTool->SetDatumToGeomTol(aDatL, theGDTL); + aDatObj->IsDatumTarget(Standard_True); + aDatObj->SetDatumTargetNumber(aDT->TargetId()->IntegerValue()); + readAnnotation(aTR, aDT, aDatObj); + aDat->SetObject(aDatObj); + isExistDatumTarget = Standard_True; + } + } + + if (aShapeLabels.Length() > 0 || !isExistDatumTarget) { + // Create object for datum + TDF_Label aDatL = aDGTTool->AddDatum(); + aDat = XCAFDoc_Datum::Set(aDatL); + aDGTTool->SetDatum(aShapeLabels, aDatL); + aDatObj->SetName(theDat->Identification()); + aDatObj->SetPosition(thePositionCounter); + if (!theXCAFModifiers.IsEmpty()) + aDatObj->SetModifiers(theXCAFModifiers); + if (theXCAFModifWithVal != XCAFDimTolObjects_DatumModifWithValue_None) + aDatObj->SetModifierWithValue(theXCAFModifWithVal, theModifValue); + aDGTTool->SetDatumToGeomTol(aDatL, theGDTL); + if (aDatObj->GetPresentation().IsNull()) { + // Try find annotation connected to datum entity (not right case, according recommended practices) + readAnnotation(aTR, theDat, aDatObj); + } + aDat->SetObject(aDatObj); + } + + return Standard_True; } @@ -2504,8 +2573,6 @@ static Standard_Boolean readDatumsAP242(const Handle(Standard_Transient)& theEnt const Handle(TDocStd_Document)& theDoc, const Handle(XSControl_WorkSession)& theWS) { - Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool( theDoc->Main() ); - Handle(XCAFDoc_DimTolTool) aDGTTool = XCAFDoc_DocumentTool::DimTolTool( theDoc->Main() ); const Handle(XSControl_TransferReader) &aTR = theWS->TransferReader(); const Handle(Transfer_TransientProcess) &aTP = aTR->TransientProcess(); const Interface_Graph& aGraph = aTP->Graph(); @@ -2645,55 +2712,6 @@ static Standard_Boolean readDatumsAP242(const Handle(Standard_Transient)& theEnt return Standard_True; } -//======================================================================= -//function : collectShapeAspect -//purpose : -//======================================================================= -static void collectShapeAspect(const Handle(StepRepr_ShapeAspect)& theSA, - const Handle(XSControl_WorkSession)& theWS, - NCollection_Sequence& theSAs) -{ - if (theSA.IsNull()) - return; - Handle(XSControl_TransferReader) aTR = theWS->TransferReader(); - Handle(Transfer_TransientProcess) aTP = aTR->TransientProcess(); - const Interface_Graph& aGraph = aTP->Graph(); - // Retrieve Shape_Aspect, connected to Representation_Item from Derived_Shape_Aspect - if (theSA->IsKind(STANDARD_TYPE(StepRepr_DerivedShapeAspect))) { - Interface_EntityIterator anIter = aGraph.Sharings(theSA); - Handle(StepRepr_ShapeAspectDerivingRelationship) aSADR = NULL; - for (; aSADR.IsNull() && anIter.More(); anIter.Next()) { - aSADR = Handle(StepRepr_ShapeAspectDerivingRelationship)::DownCast(anIter.Value()); - } - if (!aSADR.IsNull()) - collectShapeAspect(aSADR->RelatedShapeAspect(), theWS, theSAs); - } - else if (theSA->IsKind(STANDARD_TYPE(StepDimTol_DatumFeature))) { - theSAs.Append(theSA); - return; - } - else { - // Find all children Shape_Aspect - Standard_Boolean isSimple = Standard_True; - Interface_EntityIterator anIter = aGraph.Sharings(theSA); - for (; anIter.More(); anIter.Next()) { - if (anIter.Value()->IsKind(STANDARD_TYPE(StepRepr_ShapeAspectRelationship)) && - !anIter.Value()->IsKind(STANDARD_TYPE(StepShape_DimensionalLocation))) { - Handle(StepRepr_ShapeAspectRelationship) aSAR = - Handle(StepRepr_ShapeAspectRelationship)::DownCast(anIter.Value()); - if (aSAR->RelatingShapeAspect() == theSA) { - collectShapeAspect(aSAR->RelatedShapeAspect(), theWS, theSAs); - isSimple = Standard_False; - } - } - } - // If not Composite_Shape_Aspect (or subtype) append to sequence. - if (isSimple) - theSAs.Append(theSA); - } -} - - //======================================================================= //function : createGeomTolObjectInXCAF //purpose : diff --git a/src/STEPCAFControl/STEPCAFControl_Writer.cxx b/src/STEPCAFControl/STEPCAFControl_Writer.cxx index 0b7b60893d..cd134fea30 100644 --- a/src/STEPCAFControl/STEPCAFControl_Writer.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Writer.cxx @@ -241,6 +241,7 @@ static NCollection_Vector gdtAnnotationPlanes; static Handle(StepVisual_DraughtingModel) gdtPresentationDM; static Handle(StepVisual_HArray1OfPresentationStyleAssignment) gdtPrsCurveStyle; +static Handle(StepRepr_ProductDefinitionShape) gdtCommonPDS; // added by skl 15.01.2004 for D> writing //#include @@ -2490,7 +2491,7 @@ static void WritePresentation(const Handle(XSControl_WorkSession) &WS, // in case of multiple features association) //======================================================================= static Handle(StepDimTol_Datum) WriteDatumAP242(const Handle(XSControl_WorkSession) &WS, - const TDF_Label theShapeL, + const TDF_LabelSequence theShapeL, const TDF_Label theDatumL, const Standard_Boolean isFirstDTarget, const Handle(StepDimTol_Datum) theWrittenDatum) @@ -2505,31 +2506,51 @@ static Handle(StepDimTol_Datum) WriteDatumAP242(const Handle(XSControl_WorkSessi Interface_Graph aGraph = aHGraph->Graph(); Handle(StepRepr_ShapeAspect) aSA; - Handle(StepAP242_GeometricItemSpecificUsage) aGISU; - // Link with datum feature - Handle(StepRepr_ProductDefinitionShape) aPDS; Handle(StepRepr_RepresentationContext) aRC; - Handle(Standard_Transient) anEnt; - TopoDS_Shape aShape; - TopLoc_Location aLoc; - TColStd_SequenceOfTransient aSeqRI; + Handle(StepRepr_ProductDefinitionShape) aPDS; + NCollection_Sequence aSASeq; + Handle(StepAP242_GeometricItemSpecificUsage) aGISU; + Standard_Integer aSANum = 0, aGISUNum = 0; + // Link with datum feature + for (Standard_Integer i = 1; i <= theShapeL.Length(); i++) { + Handle(Standard_Transient) anEnt; + TopoDS_Shape aShape; + TopLoc_Location aLoc; + TColStd_SequenceOfTransient aSeqRI; - aShape = XCAFDoc_ShapeTool::GetShape(theShapeL); - FindEntities( FP, aShape, aLoc, aSeqRI ); - if ( aSeqRI.Length() <= 0 ) { - FP->Messenger() << "Warning: Cannot find RI for "<DynamicType()->Name()<Messenger() << "Warning: Cannot find RI for " << aShape.TShape()->DynamicType()->Name() << endl; + continue; + } + anEnt = aSeqRI.Value(1); + aPDS = FindPDS(aGraph, anEnt, aRC); + if (aPDS.IsNull()) + continue; + + Handle(StepRepr_ShapeAspect) aCurrentSA = WriteShapeAspect(WS, theDatumL, aShape, aRC, aGISU); + if (aCurrentSA.IsNull()) + continue; + aSASeq.Append(aCurrentSA); + aSANum = Model->Number(aCurrentSA); + aGISUNum = Model->Number(aGISU); + } + if (aPDS.IsNull()) { + // Workaround for datums without shape + aPDS = gdtCommonPDS; + Interface_EntityIterator aSDRIt = aGraph.Sharings(aPDS); + Handle(StepShape_ShapeDefinitionRepresentation) aSDR; + for (aSDRIt.Start(); aSDRIt.More() && aSDR.IsNull(); aSDRIt.Next()) + aSDR = Handle(StepShape_ShapeDefinitionRepresentation)::DownCast(aSDRIt.Value()); + if (!aSDR.IsNull()) { + Handle(StepRepr_Representation) aRepr = aSDR->UsedRepresentation(); + if (!aRepr.IsNull()) + aRC = aRepr->ContextOfItems(); + } } - anEnt = aSeqRI.Value(1); - aPDS = FindPDS(aGraph, anEnt, aRC); - if (aPDS.IsNull()) - return NULL; - aSA = WriteShapeAspect(WS, theDatumL, aShape, aRC, aGISU); - if (aSA.IsNull()) - return NULL; - Standard_Integer aSANum = Model->Number(aSA); - Standard_Integer aGISUNum = Model->Number(aGISU); + // Find if datum has datum targets and get common datum attributes Handle(XCAFDoc_Datum) aDatumAttr; if (!theDatumL.FindAttribute(XCAFDoc_Datum::GetID(), aDatumAttr)) @@ -2549,14 +2570,34 @@ static Handle(StepDimTol_Datum) WriteDatumAP242(const Handle(XSControl_WorkSessi // Simple datum if (isSimpleDatum) { - Handle(StepDimTol_DatumFeature) aDF = new StepDimTol_DatumFeature(); - aDF->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aSA->OfShape(), aSA->ProductDefinitional()); - Model->ReplaceEntity(aSANum, aDF); - aSA = aDF; - StepAP242_ItemIdentifiedRepresentationUsageDefinition aDefinition; - aDefinition.SetValue(aDF); - aGISU->SetDefinition(aDefinition); - Model->ReplaceEntity(aGISUNum, aGISU); + if (aSASeq.Length() == 0) { + // Create empty datum with name and presentation only + Handle(StepDimTol_DatumFeature) aDF = new StepDimTol_DatumFeature(); + aDF->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aPDS, StepData_LTrue); + aSA = aDF; + Model->AddWithRefs(aDF); + } + else if (aSASeq.Length() == 1) { + Handle(StepDimTol_DatumFeature) aDF = new StepDimTol_DatumFeature(); + aDF->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aPDS, StepData_LTrue); + Model->ReplaceEntity(aSANum, aDF); + aSA = aDF; + StepAP242_ItemIdentifiedRepresentationUsageDefinition aDefinition; + aDefinition.SetValue(aDF); + aGISU->SetDefinition(aDefinition); + Model->ReplaceEntity(aGISUNum, aGISU); + } + else if (aSASeq.Length() > 1) { + Handle(StepRepr_CompShAspAndDatumFeatAndShAsp) aDF = new StepRepr_CompShAspAndDatumFeatAndShAsp(); + aDF->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aPDS, StepData_LTrue); + for (Standard_Integer i = 1; i <= aSASeq.Length(); i++) { + Handle(StepRepr_ShapeAspectRelationship) aSAR = new StepRepr_ShapeAspectRelationship(); + aSAR->Init(new TCollection_HAsciiString(), Standard_False, new TCollection_HAsciiString(), aDF, aSASeq.Value(i)); + Model->AddWithRefs(aSAR); + } + aSA = aDF; + Model->AddWithRefs(aDF); + } } // Datum with datum targets else { @@ -2571,13 +2612,13 @@ static Handle(StepDimTol_Datum) WriteDatumAP242(const Handle(XSControl_WorkSessi aGISUNum = Model->Number(anAreaGISU); Handle(StepDimTol_DatumTarget) aDT = new StepDimTol_DatumTarget(); aDT->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString("area"), anAreaSA->OfShape(), - anAreaSA->ProductDefinitional(), aTargetId); + StepData_LTrue, aTargetId); Model->ReplaceEntity(aSANum, aDT); StepAP242_ItemIdentifiedRepresentationUsageDefinition aDefinition; aDefinition.SetValue(aDT); anAreaGISU->SetDefinition(aDefinition); Model->ReplaceEntity(aGISUNum, anAreaGISU); - } + } else { Handle(StepDimTol_PlacedDatumTargetFeature) aPDTF = new StepDimTol_PlacedDatumTargetFeature(); aPDTF->Init(new TCollection_HAsciiString(), STEPCAFControl_GDTProperty::GetDatumTargetName(aDatumType), @@ -2589,59 +2630,76 @@ static Handle(StepDimTol_Datum) WriteDatumAP242(const Handle(XSControl_WorkSessi StepRepr_CharacterizedDefinition aCDefinition; aCDefinition.SetValue(aPDTF); aPD->Init(new TCollection_HAsciiString(), Standard_False, NULL, aCDefinition); - Handle(StepShape_ShapeRepresentationWithParameters) aSRWP = new StepShape_ShapeRepresentationWithParameters(); - // Common for all datum targets - StepBasic_Unit aUnit = GetUnit(aRC); - gp_Ax2 aDTAxis = anObject->GetDatumTargetAxis(); - Handle(StepGeom_Axis2Placement3d) anA2P3D = - STEPCAFControl_GDTProperty::GetAxis2Placement3D(aDTAxis); - anA2P3D->SetName(new TCollection_HAsciiString("orientation")); - Handle(StepRepr_HArray1OfRepresentationItem) anItems; - // Process each datum target type - if (aDatumType == XCAFDimTolObjects_DatumTargetType_Point) { - anItems = new StepRepr_HArray1OfRepresentationItem(1, 1); - } - else { - Handle(TCollection_HAsciiString) aTargetValueName; - if (aDatumType == XCAFDimTolObjects_DatumTargetType_Line) { - anItems = new StepRepr_HArray1OfRepresentationItem(1, 2); - aTargetValueName = new TCollection_HAsciiString("target length"); + if (anObject->HasDatumTargetParams()) { + // write all parameters of datum target + Handle(StepShape_ShapeRepresentationWithParameters) aSRWP = new StepShape_ShapeRepresentationWithParameters(); + // Common for all datum targets + StepBasic_Unit aUnit = GetUnit(aRC); + gp_Ax2 aDTAxis = anObject->GetDatumTargetAxis(); + Handle(StepGeom_Axis2Placement3d) anA2P3D = + STEPCAFControl_GDTProperty::GetAxis2Placement3D(aDTAxis); + anA2P3D->SetName(new TCollection_HAsciiString("orientation")); + Handle(StepRepr_HArray1OfRepresentationItem) anItems; + // Process each datum target type + if (aDatumType == XCAFDimTolObjects_DatumTargetType_Point) { + anItems = new StepRepr_HArray1OfRepresentationItem(1, 1); } - else if (aDatumType == XCAFDimTolObjects_DatumTargetType_Rectangle) { - anItems = new StepRepr_HArray1OfRepresentationItem(1, 3); - aTargetValueName = new TCollection_HAsciiString("target length"); - // Additional value - Handle(StepRepr_ReprItemAndMeasureWithUnit) aTargetValue = CreateDimValue(anObject->GetDatumTargetWidth(), - aUnit, new TCollection_HAsciiString("target width"), "POSITIVE_LENGTH_MEASURE", Standard_False); - anItems->SetValue(2, aTargetValue); + else { + Handle(TCollection_HAsciiString) aTargetValueName; + if (aDatumType == XCAFDimTolObjects_DatumTargetType_Line) { + anItems = new StepRepr_HArray1OfRepresentationItem(1, 2); + aTargetValueName = new TCollection_HAsciiString("target length"); + } + else if (aDatumType == XCAFDimTolObjects_DatumTargetType_Rectangle) { + anItems = new StepRepr_HArray1OfRepresentationItem(1, 3); + aTargetValueName = new TCollection_HAsciiString("target length"); + // Additional value + Handle(StepRepr_ReprItemAndMeasureWithUnit) aTargetValue = CreateDimValue(anObject->GetDatumTargetWidth(), + aUnit, new TCollection_HAsciiString("target width"), "POSITIVE_LENGTH_MEASURE", Standard_False); + anItems->SetValue(2, aTargetValue); + Model->AddWithRefs(aTargetValue); + } + else if (aDatumType == XCAFDimTolObjects_DatumTargetType_Circle) { + anItems = new StepRepr_HArray1OfRepresentationItem(1, 2); + aTargetValueName = new TCollection_HAsciiString("target diameter"); + } + // Value + Handle(StepRepr_ReprItemAndMeasureWithUnit) aTargetValue = CreateDimValue(anObject->GetDatumTargetLength(), + aUnit, aTargetValueName, "POSITIVE_LENGTH_MEASURE", Standard_False); + anItems->SetValue(1, aTargetValue); Model->AddWithRefs(aTargetValue); } - else if (aDatumType == XCAFDimTolObjects_DatumTargetType_Circle) { - anItems = new StepRepr_HArray1OfRepresentationItem(1, 2); - aTargetValueName = new TCollection_HAsciiString("target diameter"); - } - // Value - Handle(StepRepr_ReprItemAndMeasureWithUnit) aTargetValue= CreateDimValue(anObject->GetDatumTargetLength(), - aUnit, aTargetValueName, "POSITIVE_LENGTH_MEASURE", Standard_False); - anItems->SetValue(1, aTargetValue); - Model->AddWithRefs(aTargetValue); + anItems->SetValue(anItems->Length(), anA2P3D); + aSRWP->Init(new TCollection_HAsciiString(), anItems, aRC); + // Create and write auxiliary entities + Handle(StepShape_ShapeDefinitionRepresentation) aSDR = new StepShape_ShapeDefinitionRepresentation(); + StepRepr_RepresentedDefinition aRDefinition; + aRDefinition.SetValue(aPD); + aSDR->Init(aRDefinition, aSRWP); + Model->AddWithRefs(aPD); + Model->AddWithRefs(aSRWP); + Model->AddWithRefs(aSDR); } - anItems->SetValue(anItems->Length(), anA2P3D); - aSRWP->Init(new TCollection_HAsciiString(), anItems, aRC); - - // Create and write auxiliary entities - Handle (StepShape_ShapeDefinitionRepresentation) aSDR = new StepShape_ShapeDefinitionRepresentation(); - StepRepr_RepresentedDefinition aRDefinition; - aRDefinition.SetValue(aPD); - aSDR->Init(aRDefinition, aSRWP); - Model->AddWithRefs(aPD); - Model->AddWithRefs(aSRWP); - Model->AddWithRefs(aSDR); } // Link datum target to datum feature - Handle(StepRepr_FeatureForDatumTargetRelationship) aFFDTR = new StepRepr_FeatureForDatumTargetRelationship(); - aFFDTR->Init(new TCollection_HAsciiString(), Standard_False, NULL, aDatumTarget, aSA); - Model->AddWithRefs(aFFDTR); + // if aSASeq.Length() == 0 nothing to do + if (aSASeq.Length() == 1) { + Handle(StepRepr_FeatureForDatumTargetRelationship) aFFDTR = new StepRepr_FeatureForDatumTargetRelationship(); + aFFDTR->Init(new TCollection_HAsciiString(), Standard_False, NULL, aSASeq.Value(1), aDatumTarget); + Model->AddWithRefs(aFFDTR); + } + else if (aSASeq.Length() > 1) { + Handle(StepRepr_CompositeShapeAspect) aCompSA = new StepRepr_CompositeShapeAspect(); + aCompSA->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aPDS, aSASeq.Value(1)->ProductDefinitional()); + for (Standard_Integer i = 1; i <= aSASeq.Length(); i++) { + Handle(StepRepr_ShapeAspectRelationship) aSAR = new StepRepr_ShapeAspectRelationship(); + aSAR->Init(new TCollection_HAsciiString(), Standard_False, new TCollection_HAsciiString(), aCompSA, aSASeq.Value(i)); + Model->AddWithRefs(aSAR); + } + Handle(StepRepr_FeatureForDatumTargetRelationship) aFFDTR = new StepRepr_FeatureForDatumTargetRelationship(); + aFFDTR->Init(new TCollection_HAsciiString(), Standard_False, NULL, aCompSA, aDatumTarget); + Model->AddWithRefs(aFFDTR); + } aSA = aDatumTarget; } @@ -2649,34 +2707,16 @@ static Handle(StepDimTol_Datum) WriteDatumAP242(const Handle(XSControl_WorkSessi Handle(StepDimTol_Datum) aDatum = theWrittenDatum; if (isFirstDTarget) { aDatum = new StepDimTol_Datum(); - aDatum->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aPDS, StepData_LTrue, anIdentifier); + aDatum->Init(new TCollection_HAsciiString(), new TCollection_HAsciiString(), aPDS, StepData_LFalse, anIdentifier); Model->AddWithRefs(aDatum); } // Shape_Aspect_Relationship - Handle(StepRepr_ShapeAspectRelationship) aSAR = new StepRepr_ShapeAspectRelationship(); - aSAR->Init(new TCollection_HAsciiString(), Standard_False, NULL, aSA, aDatum); - Model->AddWithRefs(aSAR); - - // Auxiliary entities - // Property_Definition - Handle(StepRepr_PropertyDefinition) aPD = new StepRepr_PropertyDefinition(); - Handle(TCollection_HAsciiString) aPDName = new TCollection_HAsciiString("Datum Feature Symbol "); - aPDName = aPDName->Cat(anIdentifier)->Cat(aTargetId); - StepRepr_CharacterizedDefinition aCD; - aCD.SetValue(aSA); - aPD->Init(aPDName, Standard_False, NULL, aCD); - Model->AddWithRefs(aPD); - // Shape_Representation - Handle(StepShape_ShapeRepresentation) aShapeRepr = new StepShape_ShapeRepresentation(); - aShapeRepr->Init(aPDName, aGISU->IdentifiedItem(), aRC); - Model->AddWithRefs(aShapeRepr); - // Shape_Definition_Representation - Handle (StepShape_ShapeDefinitionRepresentation) aSDR = new StepShape_ShapeDefinitionRepresentation(); - StepRepr_RepresentedDefinition aRDefinition; - aRDefinition.SetValue(aPD); - aSDR->Init(aRDefinition, aShapeRepr); - Model->AddWithRefs(aSDR); + if (!aSA.IsNull()) { + Handle(StepRepr_ShapeAspectRelationship) aSAR = new StepRepr_ShapeAspectRelationship(); + aSAR->Init(new TCollection_HAsciiString(), Standard_False, NULL, aSA, aDatum); + Model->AddWithRefs(aSAR); + } //Annotation plane and Presentation WritePresentation(WS, anObject->GetPresentation(), anObject->GetPresentationName(), anObject->GetPlane(), anObject->GetPointTextAttach(), aSA); @@ -3733,6 +3773,9 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTsAP242 (const Handle(XSControl_W Handle(StepRepr_RepresentationItem) anItem = NULL; gdtPrsCurveStyle = new StepVisual_HArray1OfPresentationStyleAssignment(1, 1); gdtPrsCurveStyle->SetValue(1, aStyles.MakeColorPSA(anItem, aCurvColor, aCurvColor)); + Interface_EntityIterator aModelIter = aModel->Entities(); + for (; aModelIter.More() && gdtCommonPDS.IsNull(); aModelIter.Next()) + gdtCommonPDS = Handle(StepRepr_ProductDefinitionShape)::DownCast(aModelIter.Value()); TDF_LabelSequence aDGTLabels; STEPConstruct_DataMapOfAsciiStringTransient aDatumMap; @@ -3746,10 +3789,8 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTsAP242 (const Handle(XSControl_W TColStd_MapOfAsciiString aNameIdMap; for(Standard_Integer i = 1; i <= aDGTLabels.Length(); i++) { TDF_Label aDatumL = aDGTLabels.Value(i); - TDF_LabelSequence aShapeL; - TDF_LabelSequence aNullSeq; - if(!DGTTool->GetRefShapeLabel(aDatumL, aShapeL, aNullSeq)) - continue; + TDF_LabelSequence aShapeL, aNullSeq; + DGTTool->GetRefShapeLabel(aDatumL, aShapeL, aNullSeq); Handle(XCAFDoc_Datum) aDatumAttr; aDatumL.FindAttribute(XCAFDoc_Datum::GetID(), aDatumAttr); Handle(XCAFDimTolObjects_DatumObject) anObject = aDatumAttr->GetObject(); @@ -3759,7 +3800,7 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTsAP242 (const Handle(XSControl_W continue; Handle(Standard_Transient) aWrittenDatum; Standard_Boolean isFirstDT = !aDatumMap.Find(aDatumName, aWrittenDatum); - Handle(StepDimTol_Datum) aDatum = WriteDatumAP242(WS, aShapeL.First(), aDatumL, isFirstDT, + Handle(StepDimTol_Datum) aDatum = WriteDatumAP242(WS, aShapeL, aDatumL, isFirstDT, Handle(StepDimTol_Datum)::DownCast (aWrittenDatum)); // Add created Datum into Map aDatumMap.Bind(aDatumName, aDatum); diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx index 652334046e..b0554abada 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx @@ -24,6 +24,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_DatumObject,Standard_Transient) XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject() { myIsDTarget = Standard_False; + myIsValidDT = Standard_False; myHasPlane = Standard_False; myHasPnt = Standard_False; myHasPntText = Standard_False; @@ -42,6 +43,7 @@ XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject(const Handle(XCAFDi myValueOfModifier = theObj->myValueOfModifier; myDatumTarget = theObj->myDatumTarget; myIsDTarget = theObj->myIsDTarget; + myIsValidDT = theObj->myIsValidDT; myAxis = theObj->myAxis; myDTargetType = theObj->myDTargetType; myPlane = theObj->myPlane; @@ -224,6 +226,7 @@ gp_Ax2 XCAFDimTolObjects_DatumObject::GetDatumTargetAxis() const void XCAFDimTolObjects_DatumObject::SetDatumTargetAxis(const gp_Ax2& theAxis) { myAxis = theAxis; + myIsValidDT = Standard_True; } //======================================================================= @@ -244,6 +247,7 @@ Standard_Real XCAFDimTolObjects_DatumObject::GetDatumTargetLength() const void XCAFDimTolObjects_DatumObject::SetDatumTargetLength(const Standard_Real theLength) { myLength = theLength; + myIsValidDT = Standard_True; } @@ -265,6 +269,7 @@ Standard_Real XCAFDimTolObjects_DatumObject::GetDatumTargetWidth() const void XCAFDimTolObjects_DatumObject::SetDatumTargetWidth(const Standard_Real theWidth) { myWidth = theWidth; + myIsValidDT = Standard_True; } //======================================================================= diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx index 96266d7eb0..a9f8bd3b94 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx @@ -151,7 +151,11 @@ public: return myPresentationName; } - + //! Returns true if datum has valid parameters for datum target (width, length, circle radius etc) + Standard_EXPORT Standard_Boolean HasDatumTargetParams() + { + return myIsValidDT; + } DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_DatumObject,Standard_Transient) @@ -164,6 +168,7 @@ private: TopoDS_Shape myDatumTarget; Standard_Integer myPosition; Standard_Boolean myIsDTarget; + Standard_Boolean myIsValidDT; XCAFDimTolObjects_DatumTargetType myDTargetType; gp_Ax2 myAxis; Standard_Real myLength; diff --git a/src/XCAFDoc/XCAFDoc_Datum.cxx b/src/XCAFDoc/XCAFDoc_Datum.cxx index b242d765b1..2e4538a594 100644 --- a/src/XCAFDoc/XCAFDoc_Datum.cxx +++ b/src/XCAFDoc/XCAFDoc_Datum.cxx @@ -226,7 +226,7 @@ void XCAFDoc_Datum::SetObject(const Handle(XCAFDimTolObjects_DatumObject)& theOb tnBuild.Generated(theObject->GetDatumTarget()); } } - else + else if (theObject->HasDatumTargetParams()) { Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray(); Handle(TDataStd_RealArray) aN = new TDataStd_RealArray(); diff --git a/src/XCAFDoc/XCAFDoc_DimTolTool.cxx b/src/XCAFDoc/XCAFDoc_DimTolTool.cxx index fe1a05e151..371e8bf122 100644 --- a/src/XCAFDoc/XCAFDoc_DimTolTool.cxx +++ b/src/XCAFDoc/XCAFDoc_DimTolTool.cxx @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -517,6 +518,13 @@ Standard_Boolean XCAFDoc_DimTolTool::GetRefShapeLabel(const TDF_Label& theL, } return Standard_True; } + else if (theL.FindAttribute(XCAFDoc::DatumRefGUID(), aGNode) && aGNode->NbFathers() > 0) { + for (Standard_Integer i = 1; i <= aGNode->NbFathers(); i++) + { + theShapeLFirst.Append(aGNode->GetFather(i)->Label()); + } + return Standard_True; + } else if( theL.FindAttribute(XCAFDoc::DimensionRefFirstGUID(),aGNode) && aGNode->NbFathers() > 0 ) { for(Standard_Integer i = 1; i <= aGNode->NbFathers(); i++) { @@ -596,17 +604,12 @@ Standard_Boolean XCAFDoc_DimTolTool::GetRefGeomToleranceLabels(const TDF_Label& Standard_Boolean XCAFDoc_DimTolTool::GetRefDatumLabel(const TDF_Label& theShapeL, TDF_LabelSequence& theDatum) const { - Handle(TDataStd_TreeNode) aNode; - if( !theShapeL.FindAttribute(XCAFDoc::DatumRefGUID(),aNode) || - !aNode->HasFirst() ) { + Handle(XCAFDoc_GraphNode) aGNode; + if (!theShapeL.FindAttribute(XCAFDoc::DatumRefGUID(), aGNode)) { return Standard_False; } - Handle(TDataStd_TreeNode) aFirst = aNode->First(); - theDatum.Append(aFirst->Label()); - for(Standard_Integer i = 1; i < aNode->NbChildren(); i++) - { - aFirst = aFirst->Next(); - theDatum.Append(aFirst->Label()); + for (Standard_Integer i = 1; i <= aGNode->NbChildren(); i++) { + theDatum.Append(aGNode->GetChild(i)->Label()); } return Standard_True; } @@ -728,15 +731,42 @@ TDF_Label XCAFDoc_DimTolTool::AddDatum() //purpose : //======================================================================= -void XCAFDoc_DimTolTool::SetDatum(const TDF_Label& theL, +void XCAFDoc_DimTolTool::SetDatum(const TDF_LabelSequence& theL, const TDF_Label& theDatumL) const { - // set reference - Handle(TDataStd_TreeNode) refNode, mainNode; - refNode = TDataStd_TreeNode::Set ( theDatumL, XCAFDoc::DatumRefGUID() ); - mainNode = TDataStd_TreeNode::Set ( theL, XCAFDoc::DatumRefGUID() ); - refNode->Remove(); - mainNode->Append(refNode); + if (!IsDatum(theDatumL)) + { + return; + } + + Handle(XCAFDoc_GraphNode) aChGNode; + Handle(XCAFDoc_GraphNode) aFGNode; + + if (theDatumL.FindAttribute(XCAFDoc::DatumRefGUID(), aChGNode)) { + while (aChGNode->NbFathers() > 0) { + aFGNode = aChGNode->GetFather(1); + aFGNode->UnSetChild(aChGNode); + if (aFGNode->NbChildren() == 0) + aFGNode->ForgetAttribute(XCAFDoc::DatumRefGUID()); + } + theDatumL.ForgetAttribute(XCAFDoc::DatumRefGUID()); + } + + if (!theDatumL.FindAttribute(XCAFDoc::DatumRefGUID(), aChGNode)) { + aChGNode = new XCAFDoc_GraphNode; + aChGNode = XCAFDoc_GraphNode::Set(theDatumL); + aChGNode->SetGraphID(XCAFDoc::DatumRefGUID()); + } + for (Standard_Integer i = theL.Lower(); i <= theL.Upper(); i++) + { + if (!theL.Value(i).FindAttribute(XCAFDoc::DatumRefGUID(), aFGNode)) { + aFGNode = new XCAFDoc_GraphNode; + aFGNode = XCAFDoc_GraphNode::Set(theL.Value(i)); + } + aFGNode->SetGraphID(XCAFDoc::DatumRefGUID()); + aFGNode->SetChild(aChGNode); + aChGNode->SetFather(aFGNode); + } } //======================================================================= @@ -753,7 +783,9 @@ void XCAFDoc_DimTolTool::SetDatum(const TDF_Label& L, TDF_Label DatumL; if(!FindDatum(aName,aDescription,anIdentification,DatumL)) DatumL = AddDatum(aName,aDescription,anIdentification); - SetDatum(L,DatumL); + TDF_LabelSequence aLabels; + aLabels.Append(L); + SetDatum(aLabels,DatumL); // set reference Handle(XCAFDoc_GraphNode) FGNode; Handle(XCAFDoc_GraphNode) ChGNode; diff --git a/src/XCAFDoc/XCAFDoc_DimTolTool.hxx b/src/XCAFDoc/XCAFDoc_DimTolTool.hxx index 3081691e7b..f12b2f2228 100644 --- a/src/XCAFDoc/XCAFDoc_DimTolTool.hxx +++ b/src/XCAFDoc/XCAFDoc_DimTolTool.hxx @@ -161,7 +161,7 @@ public: Standard_EXPORT TDF_Label AddDatum() ; //! Sets a link with GUID - Standard_EXPORT void SetDatum (const TDF_Label& L, const TDF_Label& DatumL) const; + Standard_EXPORT void SetDatum (const TDF_LabelSequence& theShapeLabels, const TDF_Label& theDatumL) const; //! Sets a link with GUID for Datum //! Sets connection between Datum and Tolerance diff --git a/src/XDEDRAW/XDEDRAW.cxx b/src/XDEDRAW/XDEDRAW.cxx index 987584c5d4..cce1cf5d8c 100644 --- a/src/XDEDRAW/XDEDRAW.cxx +++ b/src/XDEDRAW/XDEDRAW.cxx @@ -760,6 +760,9 @@ static Standard_Integer XAttributeValue (Draw_Interpretor& di, Standard_Integer else if ( att->ID() == XCAFDoc::GeomToleranceRefGUID() ){ type = "GeomTolerance Link"; } + else if ( att->ID() == XCAFDoc::DatumRefGUID() ){ + type = "Datum Link"; + } else return 0; Handle(XCAFDoc_GraphNode) DETGN = Handle(XCAFDoc_GraphNode)::DownCast(att); diff --git a/src/XDEDRAW/XDEDRAW_GDTs.cxx b/src/XDEDRAW/XDEDRAW_GDTs.cxx index ebd524042e..e22e89ac90 100644 --- a/src/XDEDRAW/XDEDRAW_GDTs.cxx +++ b/src/XDEDRAW/XDEDRAW_GDTs.cxx @@ -589,7 +589,7 @@ static Standard_Integer addGTol (Draw_Interpretor& di, Standard_Integer argc, co static Standard_Integer addDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv) { if (argc < 3) { - di<<"Use: XAddDatum Doc shape/label\n"; + di<<"Use: XAddDatum Doc shape1/label1 ... shapeN/labelN\n"; return 1; } Handle(TDocStd_Document) Doc; @@ -598,24 +598,22 @@ static Standard_Integer addDatum (Draw_Interpretor& di, Standard_Integer argc, c Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main()); Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main()); - TDF_Label aLabel; - TDF_Tool::Label(Doc->GetData(), argv[2], aLabel); - if ( aLabel.IsNull() ) - { - TopoDS_Shape aShape= DBRep::Get(argv[2]); - if ( !aShape.IsNull() ) - { - aShapeTool->Search(aShape, aLabel); - if ( aLabel.IsNull() ) - { - di<<"Shape "<GetData(), argv[i], aLabel); + if (aLabel.IsNull()) { + TopoDS_Shape aShape = DBRep::Get(argv[i]); + if (!aShape.IsNull()) + aShapeTool->Search(aShape, aLabel); + if (aLabel.IsNull()) + continue; } + aLabelSeq.Append(aLabel); } TDF_Label aDatumL = aDimTolTool->AddDatum(); - aDimTolTool->SetDatum(aLabel, aDatumL); + aDimTolTool->SetDatum(aLabelSeq, aDatumL); TCollection_AsciiString Entry; TDF_Tool::Entry(aDatumL, Entry); di << Entry; @@ -2534,7 +2532,7 @@ void XDEDRAW_GDTs::InitCommands(Draw_Interpretor& di) di.Add ("XAddGeomTolerance","XAddGeomTolerance Doc shape/label", __FILE__, addGTol, g); - di.Add ("XAddDatum","XAddDatum Doc shape/label", + di.Add ("XAddDatum","XAddDatum Doc shape1/label1 ... shapeN/labelN", __FILE__, addDatum, g); di.Add ("XSetDatum","XSetDatum Doc Datum_Label GeomTol_Label", diff --git a/tests/gdt/export/A1 b/tests/gdt/export/A1 index 3824da2d4b..37856f2308 100644 --- a/tests/gdt/export/A1 +++ b/tests/gdt/export/A1 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 0 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 5 - NbOfDatumFeature : 3 - NbOfAttachedDatum : 11 + NbOfDatumFeature : 5 + NbOfAttachedDatum : 17 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/A2 b/tests/gdt/export/A2 index 916e6b5217..ccceae9838 100644 --- a/tests/gdt/export/A2 +++ b/tests/gdt/export/A2 @@ -12,8 +12,8 @@ set ref_data { NbOfTolerances : 22 NbOfGTWithModifiers : 4 NbOfGTWithMaxTolerance : 0 - NbOfGTWithDatums : 13 - NbOfDatumFeature : 5 - NbOfAttachedDatum : 24 - NbOfDatumTarget : 9 + NbOfGTWithDatums : 20 + NbOfDatumFeature : 15 + NbOfAttachedDatum : 70 + NbOfDatumTarget : 57 } diff --git a/tests/gdt/export/A3 b/tests/gdt/export/A3 index 12cb0fe4d9..f9f72f667d 100644 --- a/tests/gdt/export/A3 +++ b/tests/gdt/export/A3 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 2 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 11 - NbOfDatumFeature : 5 - NbOfAttachedDatum : 26 + NbOfDatumFeature : 8 + NbOfAttachedDatum : 47 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/A4 b/tests/gdt/export/A4 index 57ac5e6991..929b8a7b2d 100644 --- a/tests/gdt/export/A4 +++ b/tests/gdt/export/A4 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 0 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 6 - NbOfDatumFeature : 8 - NbOfAttachedDatum : 15 + NbOfDatumFeature : 10 + NbOfAttachedDatum : 19 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/A5 b/tests/gdt/export/A5 index 2bbe8546f2..f712ef1b4b 100644 --- a/tests/gdt/export/A5 +++ b/tests/gdt/export/A5 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 0 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 8 - NbOfDatumFeature : 2 - NbOfAttachedDatum : 9 + NbOfDatumFeature : 6 + NbOfAttachedDatum : 26 NbOfDatumTarget : 2 } diff --git a/tests/gdt/export/A6 b/tests/gdt/export/A6 index 7aac1c57d4..d1fd5d0028 100644 --- a/tests/gdt/export/A6 +++ b/tests/gdt/export/A6 @@ -1,7 +1,5 @@ # !!!! 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 : 1 differences with reference data found :" -puts "TODO CR26859 ALL:Error on writing file" set ref_data { @@ -14,8 +12,8 @@ set ref_data { NbOfTolerances : 27 NbOfGTWithModifiers : 4 NbOfGTWithMaxTolerance : 0 - NbOfGTWithDatums : 3 - NbOfDatumFeature : 3 - NbOfAttachedDatum : 3 + NbOfGTWithDatums : 24 + NbOfDatumFeature : 5 + NbOfAttachedDatum : 5 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/A7 b/tests/gdt/export/A7 index 142e6baae6..d083a036d4 100644 --- a/tests/gdt/export/A7 +++ b/tests/gdt/export/A7 @@ -12,8 +12,8 @@ set ref_data { NbOfTolerances : 27 NbOfGTWithModifiers : 4 NbOfGTWithMaxTolerance : 0 - NbOfGTWithDatums : 23 - NbOfDatumFeature : 6 - NbOfAttachedDatum : 54 + NbOfGTWithDatums : 24 + NbOfDatumFeature : 16 + NbOfAttachedDatum : 78 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/A8 b/tests/gdt/export/A8 index 974b049285..078d2bdf25 100644 --- a/tests/gdt/export/A8 +++ b/tests/gdt/export/A8 @@ -12,8 +12,8 @@ set ref_data { NbOfTolerances : 27 NbOfGTWithModifiers : 4 NbOfGTWithMaxTolerance : 0 - NbOfGTWithDatums : 23 - NbOfDatumFeature : 6 - NbOfAttachedDatum : 54 + NbOfGTWithDatums : 24 + NbOfDatumFeature : 16 + NbOfAttachedDatum : 78 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/A9 b/tests/gdt/export/A9 index f59f0d7ad2..30869f567c 100644 --- a/tests/gdt/export/A9 +++ b/tests/gdt/export/A9 @@ -1,7 +1,5 @@ # !!!! 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 { @@ -14,7 +12,7 @@ set ref_data { NbOfTolerances : 30 NbOfGTWithModifiers : 14 NbOfGTWithMaxTolerance : 0 - NbOfGTWithDatums : 1 + NbOfGTWithDatums : 27 NbOfDatumFeature : 2 NbOfAttachedDatum : 2 NbOfDatumTarget : 0 diff --git a/tests/gdt/export/B1 b/tests/gdt/export/B1 index 700c151d4f..330f0df80a 100644 --- a/tests/gdt/export/B1 +++ b/tests/gdt/export/B1 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 17 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 30 - NbOfDatumFeature : 10 - NbOfAttachedDatum : 75 + NbOfDatumFeature : 22 + NbOfAttachedDatum : 124 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/B2 b/tests/gdt/export/B2 index 970a8a4238..62df7f0ad4 100644 --- a/tests/gdt/export/B2 +++ b/tests/gdt/export/B2 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 17 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 30 - NbOfDatumFeature : 10 - NbOfAttachedDatum : 75 + NbOfDatumFeature : 22 + NbOfAttachedDatum : 124 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/B3 b/tests/gdt/export/B3 index 8a7ddf0f45..04fcce1c30 100644 --- a/tests/gdt/export/B3 +++ b/tests/gdt/export/B3 @@ -1,7 +1,5 @@ # !!!! 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 { @@ -14,7 +12,7 @@ set ref_data { NbOfTolerances : 29 NbOfGTWithModifiers : 6 NbOfGTWithMaxTolerance : 0 - NbOfGTWithDatums : 0 + NbOfGTWithDatums : 28 NbOfDatumFeature : 0 NbOfAttachedDatum : 0 NbOfDatumTarget : 0 diff --git a/tests/gdt/export/B4 b/tests/gdt/export/B4 index 14f6697ca6..0dbf18d5f7 100644 --- a/tests/gdt/export/B4 +++ b/tests/gdt/export/B4 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 6 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 30 - NbOfDatumFeature : 6 - NbOfAttachedDatum : 73 + NbOfDatumFeature : 22 + NbOfAttachedDatum : 126 NbOfDatumTarget : 0 } diff --git a/tests/gdt/export/B5 b/tests/gdt/export/B5 index b994fc8b5a..0ba40d239a 100644 --- a/tests/gdt/export/B5 +++ b/tests/gdt/export/B5 @@ -13,7 +13,7 @@ set ref_data { NbOfGTWithModifiers : 6 NbOfGTWithMaxTolerance : 0 NbOfGTWithDatums : 30 - NbOfDatumFeature : 6 - NbOfAttachedDatum : 73 + NbOfDatumFeature : 22 + NbOfAttachedDatum : 126 NbOfDatumTarget : 0 } diff --git a/tests/gdt/import/A1 b/tests/gdt/import/A1 index 690803ca0c..c3ff618527 100644 --- a/tests/gdt/import/A1 +++ b/tests/gdt/import/A1 @@ -5,8 +5,8 @@ set ref_data { NbOfDimensions : 8 NbOfTolerances : 6 - NbOfDatumFeature : 3 - NbOfAttachedDatum : 11 + NbOfDatumFeature : 5 + NbOfAttachedDatum : 17 NbOfDatumTarget : 0 0:1:1:1:1 Shape.2 @@ -45,31 +45,31 @@ set ref_data { 0:1:1:1:11 Shape.12 0:1:4:18 Dimension.12.1 ( T 15, V 35, VL 0.20000000000000001, VU 0, P 0 ) 0:1:1:1:12 Shape.13 - 0:1:4:19 Dimension.13.1 ( T 15, V 35, VL 0, VU 0.20000000000000001, P 0 ) + 0:1:4:18 Dimension.13.1 ( T 15, V 35, VL 0.20000000000000001, VU 0, P 0 ) 0:1:1:1:13 Shape.14 - 0:1:4:10 GeomTolerance.14.1 ( T 10 TV 0, V 0.75 ) - 0:1:4:11 Datum.14.1.1 ( ) - 0:1:4:12 Datum.14.1.2 ( ) - 0:1:4:13 Datum.14.1.3 ( ) + 0:1:4:19 Dimension.14.1 ( T 15, V 35, VL 0, VU 0.20000000000000001, P 0 ) 0:1:1:1:14 Shape.15 - 0:1:4:10 GeomTolerance.15.1 ( T 10 TV 0, V 0.75 ) - 0:1:4:11 Datum.15.1.1 ( ) - 0:1:4:12 Datum.15.1.2 ( ) - 0:1:4:13 Datum.15.1.3 ( ) + 0:1:4:19 Dimension.15.1 ( T 15, V 35, VL 0, VU 0.20000000000000001, P 0 ) 0:1:1:1:15 Shape.16 - 0:1:4:14 GeomTolerance.16.1 ( T 12 TV 0, V 1.25 ) - 0:1:4:15 Datum.16.1.1 ( ) - 0:1:4:16 Datum.16.1.2 ( ) - 0:1:4:17 Datum.16.1.3 ( ) + 0:1:4:10 GeomTolerance.16.1 ( T 10 TV 0, V 0.75 ) + 0:1:4:11 Datum.16.1.1 ( ) + 0:1:4:12 Datum.16.1.2 ( ) + 0:1:4:13 Datum.16.1.3 ( ) 0:1:1:1:16 Shape.17 - 0:1:4:14 GeomTolerance.17.1 ( T 12 TV 0, V 1.25 ) - 0:1:4:15 Datum.17.1.1 ( ) - 0:1:4:16 Datum.17.1.2 ( ) - 0:1:4:17 Datum.17.1.3 ( ) + 0:1:4:10 GeomTolerance.17.1 ( T 10 TV 0, V 0.75 ) + 0:1:4:11 Datum.17.1.1 ( ) + 0:1:4:12 Datum.17.1.2 ( ) + 0:1:4:13 Datum.17.1.3 ( ) 0:1:1:1:17 Shape.18 - 0:1:4:18 Dimension.18.1 ( T 15, V 35, VL 0.20000000000000001, VU 0, P 0 ) + 0:1:4:14 GeomTolerance.18.1 ( T 12 TV 0, V 1.25 ) + 0:1:4:15 Datum.18.1.1 ( ) + 0:1:4:16 Datum.18.1.2 ( ) + 0:1:4:17 Datum.18.1.3 ( ) 0:1:1:1:18 Shape.19 - 0:1:4:19 Dimension.19.1 ( T 15, V 35, VL 0, VU 0.20000000000000001, P 0 ) + 0:1:4:14 GeomTolerance.19.1 ( T 12 TV 0, V 1.25 ) + 0:1:4:15 Datum.19.1.1 ( ) + 0:1:4:16 Datum.19.1.2 ( ) + 0:1:4:17 Datum.19.1.3 ( ) 0:1:1:1:19 Shape.20 0:1:4:20 Dimension.20.1 ( T 15, V 20, VL 0.10000000000000001, VU 0.050000000000000003, P 0 ) 0:1:1:1:20 Shape.21 diff --git a/tests/gdt/import/A2 b/tests/gdt/import/A2 index 927ff23ea0..8f73d21d09 100644 --- a/tests/gdt/import/A2 +++ b/tests/gdt/import/A2 @@ -5,9 +5,9 @@ set ref_data { NbOfDimensions : 8 NbOfTolerances : 22 - NbOfDatumFeature : 5 - NbOfAttachedDatum : 24 - NbOfDatumTarget : 9 + NbOfDatumFeature : 15 + NbOfAttachedDatum : 70 + NbOfDatumTarget : 57 0:1:1:2:1 Shape.4 0:1:4:1 GeomTolerance.4.1 ( T 11 TV 0, V 0.25 ) @@ -19,177 +19,379 @@ set ref_data { 0:1:4:7 Datum.4.1.6 ( ) 0:1:4:8 Datum.4.1.7 ( ) 0:1:4:9 Datum.4.1.8 ( ) - 0:1:4:9 Datum target.4.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:9 Datum target.4.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:9 Datum target.4.2 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:9 Datum target.4.3 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:9 Datum target.4.4 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:9 Datum target.4.5 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:9 Datum target.4.6 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:9 Datum target.4.7 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:4 Shape.7 - 0:1:4:21 GeomTolerance.7.1 ( T 7 TV 0, V 0.050000000000000003 ) + 0:1:4:69 GeomTolerance.7.1 ( T 7 TV 0, V 0.050000000000000003 ) 0:1:1:2:44 Shape.47 - 0:1:4:2 Datum target.47.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) - 0:1:4:2 Datum target.47.2 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) - 0:1:4:2 Datum target.47.3 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:2 Datum target.47.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.2 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.3 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.4 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.5 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.6 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.7 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.8 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.9 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.10 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.11 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.12 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.13 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.14 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.15 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.16 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.17 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.18 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.19 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.20 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:2 Datum target.47.21 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:45 Shape.48 - 0:1:4:6 Datum target.48.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:6 Datum target.48.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:6 Datum target.48.2 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:6 Datum target.48.3 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:6 Datum target.48.4 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:6 Datum target.48.5 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:6 Datum target.48.6 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:6 Datum target.48.7 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:53 Shape.56 - 0:1:4:5 Datum target.56.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:5 Datum target.56.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:5 Datum target.56.2 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:5 Datum target.56.3 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:5 Datum target.56.4 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:5 Datum target.56.5 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:5 Datum target.56.6 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:5 Datum target.56.7 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:60 Shape.63 - 0:1:4:16 GeomTolerance.63.1 ( T 12 TV 0, V 2.5 ) + 0:1:4:48 GeomTolerance.63.1 ( T 12 TV 0, V 2.5 ) + 0:1:4:49 Datum.63.1.1 ( ) + 0:1:4:50 Datum.63.1.2 ( ) + 0:1:4:51 Datum.63.1.3 ( ) + 0:1:4:52 Datum.63.1.4 ( ) + 0:1:4:53 Datum.63.1.5 ( ) + 0:1:4:54 Datum.63.1.6 ( ) + 0:1:4:55 Datum.63.1.7 ( ) + 0:1:4:56 Datum.63.1.8 ( ) 0:1:1:2:62 Shape.65 - 0:1:4:8 Datum target.65.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:8 Datum target.65.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:8 Datum target.65.2 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:8 Datum target.65.3 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:8 Datum target.65.4 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:8 Datum target.65.5 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:8 Datum target.65.6 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:8 Datum target.65.7 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:71 Shape.74 - 0:1:4:7 Datum target.74.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:7 Datum target.74.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:7 Datum target.74.2 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:7 Datum target.74.3 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:7 Datum target.74.4 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:7 Datum target.74.5 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:7 Datum target.74.6 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) + 0:1:4:7 Datum target.74.7 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:75 Shape.78 - 0:1:4:57 GeomTolerance.78.1 ( T 12 TV 0, V 0.80000000000000004 ) - 0:1:4:58 Datum.78.1.1 (, M 12 ) - 0:1:4:59 Datum.78.1.2 ( ) + 0:1:4:109 GeomTolerance.78.1 ( T 12 TV 0, V 0.80000000000000004 ) + 0:1:4:110 Datum.78.1.1 ( ) + 0:1:4:111 Datum.78.1.2 (, M 12 ) + 0:1:4:112 Datum.78.1.3 ( ) 0:1:1:2:94 Shape.97 - 0:1:4:29 Dimension.97.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) - 0:1:4:30 GeomTolerance.97.1 ( T 10 TV 1, V 0.050000000000000003 ) - 0:1:4:31 Datum.97.1.1 ( ) - 0:1:4:32 Datum.97.1.2 ( ) + 0:1:4:78 Dimension.97.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) + 0:1:4:79 GeomTolerance.97.1 ( T 10 TV 1, V 0.050000000000000003 ) + 0:1:4:80 Datum.97.1.1 ( ) + 0:1:4:81 Datum.97.1.2 ( ) 0:1:1:2:95 Shape.98 - 0:1:4:29 Dimension.98.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) - 0:1:4:30 GeomTolerance.98.1 ( T 10 TV 1, V 0.050000000000000003 ) - 0:1:4:31 Datum.98.1.1 ( ) - 0:1:4:32 Datum.98.1.2 ( ) + 0:1:4:78 Dimension.98.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) + 0:1:4:79 GeomTolerance.98.1 ( T 10 TV 1, V 0.050000000000000003 ) + 0:1:4:80 Datum.98.1.1 ( ) + 0:1:4:81 Datum.98.1.2 ( ) 0:1:1:2:96 Shape.99 - 0:1:4:26 Dimension.99.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) - 0:1:4:27 GeomTolerance.99.1 ( T 9 TV 1, V 0.050000000000000003 ) - 0:1:4:28 Datum.99.1.1 ( ) + 0:1:4:75 Dimension.99.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) + 0:1:4:76 GeomTolerance.99.1 ( T 9 TV 1, V 0.050000000000000003 ) + 0:1:4:77 Datum.99.1.1 ( ) 0:1:1:2:97 Shape.100 - 0:1:4:26 Dimension.100.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) - 0:1:4:27 GeomTolerance.100.1 ( T 9 TV 1, V 0.050000000000000003 ) - 0:1:4:28 Datum.100.1.1 ( ) + 0:1:4:75 Dimension.100.1 ( T 15, V 12, VL 0.050000000000000003, VU 0.050000000000000003, P 0 ) + 0:1:4:76 GeomTolerance.100.1 ( T 9 TV 1, V 0.050000000000000003 ) + 0:1:4:77 Datum.100.1.1 ( ) 0:1:1:2:184 Shape.187 - 0:1:4:22 GeomTolerance.187.1 ( T 12 TV 0, V 0.10000000000000001 ) + 0:1:4:70 GeomTolerance.187.1 ( T 12 TV 0, V 0.10000000000000001 ) 0:1:1:2:185 Shape.188 - 0:1:4:45 GeomTolerance.188.1 ( T 12 TV 0, V 0.5 ) - 0:1:4:46 Datum.188.1.1 ( ) - 0:1:4:47 Datum.188.1.2 (, M 15 ) - 0:1:4:48 Datum.188.1.3 ( ) + 0:1:4:97 GeomTolerance.188.1 ( T 12 TV 0, V 0.5 ) + 0:1:4:98 Datum.188.1.1 ( ) + 0:1:4:99 Datum.188.1.2 (, M 15 ) + 0:1:4:100 Datum.188.1.3 ( ) 0:1:1:2:192 Shape.195 - 0:1:4:41 GeomTolerance.195.1 ( T 12 TV 0, V 0.5 ) - 0:1:4:42 Datum.195.1.1 ( ) - 0:1:4:43 Datum.195.1.2 ( ) - 0:1:4:44 Datum.195.1.3 ( ) + 0:1:4:93 GeomTolerance.195.1 ( T 12 TV 0, V 0.5 ) + 0:1:4:94 Datum.195.1.1 ( ) + 0:1:4:95 Datum.195.1.2 ( ) + 0:1:4:96 Datum.195.1.3 ( ) 0:1:1:2:195 Shape.198 - 0:1:4:22 GeomTolerance.198.1 ( T 12 TV 0, V 0.10000000000000001 ) + 0:1:4:70 GeomTolerance.198.1 ( T 12 TV 0, V 0.10000000000000001 ) 0:1:1:2:205 Shape.208 - 0:1:4:53 GeomTolerance.208.1 ( T 12 TV 0, V 0.5 ) - 0:1:4:54 Datum.208.1.1 ( ) - 0:1:4:55 Datum.208.1.2 ( ) - 0:1:4:56 Datum.208.1.3 (, M 15 ) + 0:1:4:105 GeomTolerance.208.1 ( T 12 TV 0, V 0.5 ) + 0:1:4:106 Datum.208.1.1 ( ) + 0:1:4:107 Datum.208.1.2 ( ) + 0:1:4:108 Datum.208.1.3 (, M 15 ) 0:1:1:2:208 Shape.211 - 0:1:4:22 GeomTolerance.211.1 ( T 12 TV 0, V 0.10000000000000001 ) + 0:1:4:70 GeomTolerance.211.1 ( T 12 TV 0, V 0.10000000000000001 ) 0:1:1:2:219 Shape.222 - 0:1:4:22 GeomTolerance.222.1 ( T 12 TV 0, V 0.10000000000000001 ) + 0:1:4:70 GeomTolerance.222.1 ( T 12 TV 0, V 0.10000000000000001 ) 0:1:1:2:220 Shape.223 - 0:1:4:49 GeomTolerance.223.1 ( T 12 TV 0, V 0.5 ) - 0:1:4:50 Datum.223.1.1 ( ) - 0:1:4:51 Datum.223.1.2 (, M 15 ) - 0:1:4:52 Datum.223.1.3 (, M 15 ) + 0:1:4:101 GeomTolerance.223.1 ( T 12 TV 0, V 0.5 ) + 0:1:4:102 Datum.223.1.1 ( ) + 0:1:4:103 Datum.223.1.2 (, M 15 ) + 0:1:4:104 Datum.223.1.3 (, M 15 ) 0:1:1:2:311 Shape.314 - 0:1:4:23 GeomTolerance.314.1 ( T 12 TV 0, V 0.80000000000000004 ) - 0:1:4:24 Datum.314.1.1 (, M 12 ) - 0:1:4:25 Datum.314.1.2 (, M 12 ) + 0:1:4:71 GeomTolerance.314.1 ( T 12 TV 0, V 0.80000000000000004 ) + 0:1:4:72 Datum.314.1.1 ( ) + 0:1:4:73 Datum.314.1.2 (, M 12 ) + 0:1:4:74 Datum.314.1.3 (, M 12 ) 0:1:1:2:331 Shape.334 - 0:1:4:33 Dimension.334.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:34 GeomTolerance.334.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:82 Dimension.334.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:83 GeomTolerance.334.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:84 Datum.334.1.1 ( ) 0:1:1:2:332 Shape.335 - 0:1:4:33 Dimension.335.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:34 GeomTolerance.335.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:82 Dimension.335.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:83 GeomTolerance.335.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:84 Datum.335.1.1 ( ) 0:1:1:2:357 Shape.360 - 0:1:4:35 GeomTolerance.360.1 ( T 12 TV 0, V 0.80000000000000004 ) - 0:1:4:36 Datum.360.1.1 ( ) - 0:1:4:37 Datum.360.1.2 ( ) + 0:1:4:85 GeomTolerance.360.1 ( T 12 TV 0, V 0.80000000000000004 ) + 0:1:4:86 Datum.360.1.1 ( ) + 0:1:4:87 Datum.360.1.2 ( ) + 0:1:4:88 Datum.360.1.3 ( ) 0:1:1:2:363 Shape.366 - 0:1:4:60 Dimension.366.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:61 GeomTolerance.366.1 ( T 10 TV 1, V 0.14999999999999999, MR 2 ) - 0:1:4:62 Datum.366.1.1 ( ) + 0:1:4:113 Dimension.366.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:114 GeomTolerance.366.1 ( T 10 TV 1, V 0.14999999999999999, MR 2 ) + 0:1:4:115 Datum.366.1.1 ( ) + 0:1:4:116 Datum.366.1.2 ( ) 0:1:1:2:364 Shape.367 - 0:1:4:60 Dimension.367.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:61 GeomTolerance.367.1 ( T 10 TV 1, V 0.14999999999999999, MR 2 ) - 0:1:4:62 Datum.367.1.1 ( ) + 0:1:4:113 Dimension.367.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:114 GeomTolerance.367.1 ( T 10 TV 1, V 0.14999999999999999, MR 2 ) + 0:1:4:115 Datum.367.1.1 ( ) + 0:1:4:116 Datum.367.1.2 ( ) 0:1:1:2:375 Shape.378 - 0:1:4:14 GeomTolerance.378.1 ( T 12 TV 0, V 2.5 ) + 0:1:4:30 GeomTolerance.378.1 ( T 12 TV 0, V 2.5 ) + 0:1:4:31 Datum.378.1.1 ( ) + 0:1:4:32 Datum.378.1.2 ( ) + 0:1:4:33 Datum.378.1.3 ( ) + 0:1:4:34 Datum.378.1.4 ( ) + 0:1:4:35 Datum.378.1.5 ( ) + 0:1:4:36 Datum.378.1.6 ( ) + 0:1:4:37 Datum.378.1.7 ( ) + 0:1:4:38 Datum.378.1.8 ( ) 0:1:1:2:396 Shape.399 - 0:1:4:15 GeomTolerance.399.1 ( T 12 TV 0, V 0.75 ) + 0:1:4:39 GeomTolerance.399.1 ( T 12 TV 0, V 0.75 ) + 0:1:4:40 Datum.399.1.1 ( ) + 0:1:4:41 Datum.399.1.2 ( ) + 0:1:4:42 Datum.399.1.3 ( ) + 0:1:4:43 Datum.399.1.4 ( ) + 0:1:4:44 Datum.399.1.5 ( ) + 0:1:4:45 Datum.399.1.6 ( ) + 0:1:4:46 Datum.399.1.7 ( ) + 0:1:4:47 Datum.399.1.8 ( ) 0:1:1:2:431 Shape.434 0:1:4:10 Dimension.434.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.434.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.434.1.1 ( ) + 0:1:4:13 Datum.434.1.2 ( ) + 0:1:4:14 Datum.434.1.3 ( ) + 0:1:4:15 Datum.434.1.4 ( ) + 0:1:4:16 Datum.434.1.5 ( ) + 0:1:4:17 Datum.434.1.6 ( ) + 0:1:4:18 Datum.434.1.7 ( ) + 0:1:4:19 Datum.434.1.8 ( ) 0:1:1:2:432 Shape.435 0:1:4:10 Dimension.435.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.435.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.435.1.1 ( ) + 0:1:4:13 Datum.435.1.2 ( ) + 0:1:4:14 Datum.435.1.3 ( ) + 0:1:4:15 Datum.435.1.4 ( ) + 0:1:4:16 Datum.435.1.5 ( ) + 0:1:4:17 Datum.435.1.6 ( ) + 0:1:4:18 Datum.435.1.7 ( ) + 0:1:4:19 Datum.435.1.8 ( ) 0:1:1:2:435 Shape.438 0:1:4:10 Dimension.438.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.438.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.438.1.1 ( ) + 0:1:4:13 Datum.438.1.2 ( ) + 0:1:4:14 Datum.438.1.3 ( ) + 0:1:4:15 Datum.438.1.4 ( ) + 0:1:4:16 Datum.438.1.5 ( ) + 0:1:4:17 Datum.438.1.6 ( ) + 0:1:4:18 Datum.438.1.7 ( ) + 0:1:4:19 Datum.438.1.8 ( ) 0:1:1:2:436 Shape.439 0:1:4:10 Dimension.439.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.439.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.439.1.1 ( ) + 0:1:4:13 Datum.439.1.2 ( ) + 0:1:4:14 Datum.439.1.3 ( ) + 0:1:4:15 Datum.439.1.4 ( ) + 0:1:4:16 Datum.439.1.5 ( ) + 0:1:4:17 Datum.439.1.6 ( ) + 0:1:4:18 Datum.439.1.7 ( ) + 0:1:4:19 Datum.439.1.8 ( ) 0:1:1:2:437 Shape.440 - 0:1:4:38 GeomTolerance.440.1 ( T 12 TV 0, V 0.80000000000000004 ) - 0:1:4:39 Datum.440.1.1 ( ) - 0:1:4:40 Datum.440.1.2 (, M 12 ) + 0:1:4:89 GeomTolerance.440.1 ( T 12 TV 0, V 0.80000000000000004 ) + 0:1:4:90 Datum.440.1.1 ( ) + 0:1:4:91 Datum.440.1.2 ( ) + 0:1:4:92 Datum.440.1.3 (, M 12 ) 0:1:1:2:494 Shape.497 - 0:1:4:12 Dimension.497.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:13 GeomTolerance.497.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:20 Dimension.497.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:21 GeomTolerance.497.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:22 Datum.497.1.1 ( ) + 0:1:4:23 Datum.497.1.2 ( ) + 0:1:4:24 Datum.497.1.3 ( ) + 0:1:4:25 Datum.497.1.4 ( ) + 0:1:4:26 Datum.497.1.5 ( ) + 0:1:4:27 Datum.497.1.6 ( ) + 0:1:4:28 Datum.497.1.7 ( ) + 0:1:4:29 Datum.497.1.8 ( ) 0:1:1:2:495 Shape.498 - 0:1:4:12 Dimension.498.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:13 GeomTolerance.498.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:20 Dimension.498.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:21 GeomTolerance.498.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:22 Datum.498.1.1 ( ) + 0:1:4:23 Datum.498.1.2 ( ) + 0:1:4:24 Datum.498.1.3 ( ) + 0:1:4:25 Datum.498.1.4 ( ) + 0:1:4:26 Datum.498.1.5 ( ) + 0:1:4:27 Datum.498.1.6 ( ) + 0:1:4:28 Datum.498.1.7 ( ) + 0:1:4:29 Datum.498.1.8 ( ) 0:1:1:2:518 Shape.521 - 0:1:4:12 Dimension.521.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:13 GeomTolerance.521.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:20 Dimension.521.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:21 GeomTolerance.521.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:22 Datum.521.1.1 ( ) + 0:1:4:23 Datum.521.1.2 ( ) + 0:1:4:24 Datum.521.1.3 ( ) + 0:1:4:25 Datum.521.1.4 ( ) + 0:1:4:26 Datum.521.1.5 ( ) + 0:1:4:27 Datum.521.1.6 ( ) + 0:1:4:28 Datum.521.1.7 ( ) + 0:1:4:29 Datum.521.1.8 ( ) 0:1:1:2:519 Shape.522 - 0:1:4:12 Dimension.522.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:13 GeomTolerance.522.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:20 Dimension.522.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:21 GeomTolerance.522.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:22 Datum.522.1.1 ( ) + 0:1:4:23 Datum.522.1.2 ( ) + 0:1:4:24 Datum.522.1.3 ( ) + 0:1:4:25 Datum.522.1.4 ( ) + 0:1:4:26 Datum.522.1.5 ( ) + 0:1:4:27 Datum.522.1.6 ( ) + 0:1:4:28 Datum.522.1.7 ( ) + 0:1:4:29 Datum.522.1.8 ( ) 0:1:1:2:540 Shape.543 - 0:1:4:17 GeomTolerance.543.1 ( T 12 TV 0, V 2.5 ) + 0:1:4:57 GeomTolerance.543.1 ( T 12 TV 0, V 2.5 ) + 0:1:4:58 Datum.543.1.1 ( ) + 0:1:4:59 Datum.543.1.2 ( ) + 0:1:4:60 Datum.543.1.3 ( ) + 0:1:4:61 Datum.543.1.4 ( ) + 0:1:4:62 Datum.543.1.5 ( ) + 0:1:4:63 Datum.543.1.6 ( ) + 0:1:4:64 Datum.543.1.7 ( ) + 0:1:4:65 Datum.543.1.8 ( ) 0:1:1:2:612 Shape.615 - 0:1:4:20 Datum target.615.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:68 Datum target.615.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:645 Shape.648 - 0:1:4:18 Dimension.648.1 ( T 15, V 40, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:19 GeomTolerance.648.1 ( T 9 TV 1, V 0.25 ) - 0:1:4:20 Datum.648.1.1 ( ) + 0:1:4:66 Dimension.648.1 ( T 15, V 40, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:67 GeomTolerance.648.1 ( T 9 TV 1, V 0.25 ) + 0:1:4:68 Datum.648.1.1 ( ) 0:1:1:2:646 Shape.649 - 0:1:4:18 Dimension.649.1 ( T 15, V 40, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:19 GeomTolerance.649.1 ( T 9 TV 1, V 0.25 ) - 0:1:4:20 Datum.649.1.1 ( ) + 0:1:4:66 Dimension.649.1 ( T 15, V 40, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:67 GeomTolerance.649.1 ( T 9 TV 1, V 0.25 ) + 0:1:4:68 Datum.649.1.1 ( ) 0:1:1:2:672 Shape.675 0:1:4:10 Dimension.675.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.675.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.675.1.1 ( ) + 0:1:4:13 Datum.675.1.2 ( ) + 0:1:4:14 Datum.675.1.3 ( ) + 0:1:4:15 Datum.675.1.4 ( ) + 0:1:4:16 Datum.675.1.5 ( ) + 0:1:4:17 Datum.675.1.6 ( ) + 0:1:4:18 Datum.675.1.7 ( ) + 0:1:4:19 Datum.675.1.8 ( ) 0:1:1:2:673 Shape.676 0:1:4:10 Dimension.676.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.676.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.676.1.1 ( ) + 0:1:4:13 Datum.676.1.2 ( ) + 0:1:4:14 Datum.676.1.3 ( ) + 0:1:4:15 Datum.676.1.4 ( ) + 0:1:4:16 Datum.676.1.5 ( ) + 0:1:4:17 Datum.676.1.6 ( ) + 0:1:4:18 Datum.676.1.7 ( ) + 0:1:4:19 Datum.676.1.8 ( ) 0:1:1:2:674 Shape.677 0:1:4:10 Dimension.677.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.677.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.677.1.1 ( ) + 0:1:4:13 Datum.677.1.2 ( ) + 0:1:4:14 Datum.677.1.3 ( ) + 0:1:4:15 Datum.677.1.4 ( ) + 0:1:4:16 Datum.677.1.5 ( ) + 0:1:4:17 Datum.677.1.6 ( ) + 0:1:4:18 Datum.677.1.7 ( ) + 0:1:4:19 Datum.677.1.8 ( ) 0:1:1:2:675 Shape.678 0:1:4:10 Dimension.678.1 ( T 15, V 52, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) 0:1:4:11 GeomTolerance.678.1 ( T 10 TV 1, V 1, MR 2 ) + 0:1:4:12 Datum.678.1.1 ( ) + 0:1:4:13 Datum.678.1.2 ( ) + 0:1:4:14 Datum.678.1.3 ( ) + 0:1:4:15 Datum.678.1.4 ( ) + 0:1:4:16 Datum.678.1.5 ( ) + 0:1:4:17 Datum.678.1.6 ( ) + 0:1:4:18 Datum.678.1.7 ( ) + 0:1:4:19 Datum.678.1.8 ( ) 0:1:1:2:676 Shape.679 - 0:1:4:12 Dimension.679.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:13 GeomTolerance.679.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:20 Dimension.679.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:21 GeomTolerance.679.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:22 Datum.679.1.1 ( ) + 0:1:4:23 Datum.679.1.2 ( ) + 0:1:4:24 Datum.679.1.3 ( ) + 0:1:4:25 Datum.679.1.4 ( ) + 0:1:4:26 Datum.679.1.5 ( ) + 0:1:4:27 Datum.679.1.6 ( ) + 0:1:4:28 Datum.679.1.7 ( ) + 0:1:4:29 Datum.679.1.8 ( ) 0:1:1:2:677 Shape.680 - 0:1:4:12 Dimension.680.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) - 0:1:4:13 GeomTolerance.680.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:20 Dimension.680.1 ( T 15, V 100, VL 0.14999999999999999, VU 0.14999999999999999, P 0 ) + 0:1:4:21 GeomTolerance.680.1 ( T 10 TV 1, V 1.5, MR 1 ) + 0:1:4:22 Datum.680.1.1 ( ) + 0:1:4:23 Datum.680.1.2 ( ) + 0:1:4:24 Datum.680.1.3 ( ) + 0:1:4:25 Datum.680.1.4 ( ) + 0:1:4:26 Datum.680.1.5 ( ) + 0:1:4:27 Datum.680.1.6 ( ) + 0:1:4:28 Datum.680.1.7 ( ) + 0:1:4:29 Datum.680.1.8 ( ) 0:1:1:2:678 Shape.681 - 0:1:4:33 Dimension.681.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:34 GeomTolerance.681.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:82 Dimension.681.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:83 GeomTolerance.681.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:84 Datum.681.1.1 ( ) 0:1:1:2:679 Shape.682 - 0:1:4:27 GeomTolerance.682.1 ( T 9 TV 1, V 0.050000000000000003 ) - 0:1:4:28 Datum.682.1.1 ( ) + 0:1:4:82 Dimension.682.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:83 GeomTolerance.682.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:84 Datum.682.1.1 ( ) 0:1:1:2:680 Shape.683 - 0:1:4:27 GeomTolerance.683.1 ( T 9 TV 1, V 0.050000000000000003 ) - 0:1:4:28 Datum.683.1.1 ( ) + 0:1:4:76 GeomTolerance.683.1 ( T 9 TV 1, V 0.050000000000000003 ) + 0:1:4:77 Datum.683.1.1 ( ) 0:1:1:2:681 Shape.684 - 0:1:4:30 GeomTolerance.684.1 ( T 10 TV 1, V 0.050000000000000003 ) - 0:1:4:31 Datum.684.1.1 ( ) - 0:1:4:32 Datum.684.1.2 ( ) + 0:1:4:76 GeomTolerance.684.1 ( T 9 TV 1, V 0.050000000000000003 ) + 0:1:4:77 Datum.684.1.1 ( ) 0:1:1:2:682 Shape.685 - 0:1:4:30 GeomTolerance.685.1 ( T 10 TV 1, V 0.050000000000000003 ) - 0:1:4:31 Datum.685.1.1 ( ) - 0:1:4:32 Datum.685.1.2 ( ) + 0:1:4:79 GeomTolerance.685.1 ( T 10 TV 1, V 0.050000000000000003 ) + 0:1:4:80 Datum.685.1.1 ( ) + 0:1:4:81 Datum.685.1.2 ( ) 0:1:1:2:683 Shape.686 - 0:1:4:33 Dimension.686.1 ( T 15, V 22, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:34 GeomTolerance.686.1 ( T 9 TV 1, V 0.10000000000000001, MR 2 ) + 0:1:4:79 GeomTolerance.686.1 ( T 10 TV 1, V 0.050000000000000003 ) + 0:1:4:80 Datum.686.1.1 ( ) + 0:1:4:81 Datum.686.1.2 ( ) 0:1:1:3:1 Shape.687 0:1:4:1 GeomTolerance.687.1 ( T 11 TV 0, V 0.25 ) 0:1:4:2 Datum.687.1.1 ( ) diff --git a/tests/gdt/import/A3 b/tests/gdt/import/A3 index 76ee9362b8..17a6b7ab51 100644 --- a/tests/gdt/import/A3 +++ b/tests/gdt/import/A3 @@ -5,8 +5,8 @@ set ref_data { NbOfDimensions : 10 NbOfTolerances : 13 - NbOfDatumFeature : 5 - NbOfAttachedDatum : 26 + NbOfDatumFeature : 8 + NbOfAttachedDatum : 47 NbOfDatumTarget : 0 0:1:1:2:2 Shape.5 diff --git a/tests/gdt/import/A4 b/tests/gdt/import/A4 index 88a01f3f78..b529dfaa40 100644 --- a/tests/gdt/import/A4 +++ b/tests/gdt/import/A4 @@ -5,8 +5,8 @@ set ref_data { NbOfDimensions : 9 NbOfTolerances : 6 - NbOfDatumFeature : 8 - NbOfAttachedDatum : 15 + NbOfDatumFeature : 10 + NbOfAttachedDatum : 19 NbOfDatumTarget : 0 0:1:1:2:1 Shape.4 @@ -129,29 +129,25 @@ set ref_data { 0:1:4:9 Datum.20.1.1 ( ) 0:1:4:10 Datum.20.1.2 ( ) 0:1:4:11 Datum.20.1.3 ( ) - 0:1:1:2:21 Shape.24 - 0:1:4:12 GeomTolerance.24.1 ( T 12 TV 0, V 2 ) - 0:1:4:13 Datum.24.1.1 ( ) - 0:1:4:14 Datum.24.1.2 ( ) - 0:1:4:15 Datum.24.1.3 ( ) - 0:1:4:16 GeomTolerance.24.2 ( T 12 TV 0, V 0.20000000000000001 ) - 0:1:4:17 Datum.24.2.1 ( ) - 0:1:1:2:22 Shape.25 - 0:1:4:12 GeomTolerance.25.1 ( T 12 TV 0, V 2 ) - 0:1:4:13 Datum.25.1.1 ( ) - 0:1:4:14 Datum.25.1.2 ( ) - 0:1:4:15 Datum.25.1.3 ( ) - 0:1:4:16 GeomTolerance.25.2 ( T 12 TV 0, V 0.20000000000000001 ) - 0:1:4:17 Datum.25.2.1 ( ) - 0:1:1:2:25 Shape.28 - 0:1:4:18 GeomTolerance.28.1 ( T 12 TV 0, V 0.5 ) - 0:1:4:19 Datum.28.1.1 ( ) - 0:1:4:20 Datum.28.1.2 ( ) - 0:1:4:21 Datum.28.1.3 ( ) - 0:1:1:2:26 Shape.29 - 0:1:4:23 Dimension.29.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:1:2:23 Shape.26 + 0:1:4:12 GeomTolerance.26.1 ( T 12 TV 0, V 2 ) + 0:1:4:13 Datum.26.1.1 ( ) + 0:1:4:14 Datum.26.1.2 ( ) + 0:1:4:15 Datum.26.1.3 ( ) + 0:1:4:16 GeomTolerance.26.2 ( T 12 TV 0, V 0.20000000000000001 ) + 0:1:4:17 Datum.26.2.1 ( ) + 0:1:1:2:24 Shape.27 + 0:1:4:12 GeomTolerance.27.1 ( T 12 TV 0, V 2 ) + 0:1:4:13 Datum.27.1.1 ( ) + 0:1:4:14 Datum.27.1.2 ( ) + 0:1:4:15 Datum.27.1.3 ( ) + 0:1:4:16 GeomTolerance.27.2 ( T 12 TV 0, V 0.20000000000000001 ) + 0:1:4:17 Datum.27.2.1 ( ) 0:1:1:2:27 Shape.30 - 0:1:4:23 Dimension.30.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:18 GeomTolerance.30.1 ( T 12 TV 0, V 0.5 ) + 0:1:4:19 Datum.30.1.1 ( ) + 0:1:4:20 Datum.30.1.2 ( ) + 0:1:4:21 Datum.30.1.3 ( ) 0:1:1:2:28 Shape.31 0:1:4:23 Dimension.31.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:1:2:29 Shape.32 @@ -174,10 +170,8 @@ set ref_data { 0:1:4:23 Dimension.40.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:1:2:38 Shape.41 0:1:4:23 Dimension.41.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:25 Dimension.41.2 ( T 2, V 75, P 0 ) 0:1:1:2:39 Shape.42 0:1:4:23 Dimension.42.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) - 0:1:4:25 Dimension.42.2 ( T 2, V 75, P 0 ) 0:1:1:2:40 Shape.43 0:1:4:23 Dimension.43.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:4:25 Dimension.43.2 ( T 2, V 75, P 0 ) @@ -186,8 +180,10 @@ set ref_data { 0:1:4:25 Dimension.44.2 ( T 2, V 75, P 0 ) 0:1:1:2:42 Shape.45 0:1:4:23 Dimension.45.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:25 Dimension.45.2 ( T 2, V 75, P 0 ) 0:1:1:2:43 Shape.46 0:1:4:23 Dimension.46.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) + 0:1:4:25 Dimension.46.2 ( T 2, V 75, P 0 ) 0:1:1:2:44 Shape.47 0:1:4:23 Dimension.47.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:1:2:45 Shape.48 @@ -269,13 +265,13 @@ set ref_data { 0:1:1:2:83 Shape.86 0:1:4:23 Dimension.86.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:1:2:84 Shape.87 - 0:1:4:24 Dimension.87.1 ( T 15, V 10, P 0 ) + 0:1:4:23 Dimension.87.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:1:2:85 Shape.88 - 0:1:4:24 Dimension.88.1 ( T 15, V 10, P 0 ) + 0:1:4:23 Dimension.88.1 ( T 15, V 14, VL 0.10000000000000001, VU 0.10000000000000001, P 0 ) 0:1:1:2:86 Shape.89 - 0:1:4:26 Dimension.89.1 ( T 15, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) + 0:1:4:24 Dimension.89.1 ( T 15, V 10, P 0 ) 0:1:1:2:87 Shape.90 - 0:1:4:26 Dimension.90.1 ( T 15, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) + 0:1:4:24 Dimension.90.1 ( T 15, V 10, P 0 ) 0:1:1:2:88 Shape.91 0:1:4:26 Dimension.91.1 ( T 15, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) 0:1:1:2:89 Shape.92 @@ -289,14 +285,14 @@ set ref_data { 0:1:1:2:93 Shape.96 0:1:4:26 Dimension.96.1 ( T 15, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) 0:1:1:2:94 Shape.97 - 0:1:4:27 Dimension.97.1 ( T 2, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) + 0:1:4:26 Dimension.97.1 ( T 15, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) 0:1:1:2:95 Shape.98 - 0:1:4:28 Dimension.98.1 ( T 14, V 25, VL 0.25, VU 0.25, P 0 ) - 0:1:4:27 Dimension.98.2 ( T 2, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) + 0:1:4:26 Dimension.98.1 ( T 15, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) 0:1:1:2:96 Shape.99 - 0:1:4:29 Dimension.99.1 ( T 15, V 20, VL 0.29999999999999999, VU 0.29999999999999999, P 0 ) + 0:1:4:27 Dimension.99.1 ( T 2, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) 0:1:1:2:97 Shape.100 - 0:1:4:29 Dimension.100.1 ( T 15, V 20, VL 0.29999999999999999, VU 0.29999999999999999, P 0 ) + 0:1:4:28 Dimension.100.1 ( T 14, V 25, VL 0.25, VU 0.25, P 0 ) + 0:1:4:27 Dimension.100.2 ( T 2, V 20, VL 0.20000000000000001, VU 0.20000000000000001, P 0 ) 0:1:1:2:98 Shape.101 0:1:4:29 Dimension.101.1 ( T 15, V 20, VL 0.29999999999999999, VU 0.29999999999999999, P 0 ) 0:1:1:2:99 Shape.102 @@ -414,12 +410,16 @@ set ref_data { 0:1:1:2:155 Shape.158 0:1:4:29 Dimension.158.1 ( T 15, V 20, VL 0.29999999999999999, VU 0.29999999999999999, P 0 ) 0:1:1:2:156 Shape.159 - 0:1:4:30 Dimension.159.1 ( T 11, V 89.999999999776747, VL 1, VU 1, Q 3, P 0 ) + 0:1:4:29 Dimension.159.1 ( T 15, V 20, VL 0.29999999999999999, VU 0.29999999999999999, P 0 ) 0:1:1:2:157 Shape.160 - 0:1:4:30 Dimension.160.1 ( T 11, V 89.999999999776747, VL 1, VU 1, Q 3, P 0 ) - 0:1:1:3:1 Shape.161 - 0:1:4:18 GeomTolerance.161.1 ( T 12 TV 0, V 0.5 ) - 0:1:4:19 Datum.161.1.1 ( ) - 0:1:4:20 Datum.161.1.2 ( ) - 0:1:4:21 Datum.161.1.3 ( ) + 0:1:4:29 Dimension.160.1 ( T 15, V 20, VL 0.29999999999999999, VU 0.29999999999999999, P 0 ) + 0:1:1:2:158 Shape.161 + 0:1:4:30 Dimension.161.1 ( T 11, V 89.999999999776747, VL 1, VU 1, Q 3, P 0 ) + 0:1:1:2:159 Shape.162 + 0:1:4:30 Dimension.162.1 ( T 11, V 89.999999999776747, VL 1, VU 1, Q 3, P 0 ) + 0:1:1:3:1 Shape.163 + 0:1:4:18 GeomTolerance.163.1 ( T 12 TV 0, V 0.5 ) + 0:1:4:19 Datum.163.1.1 ( ) + 0:1:4:20 Datum.163.1.2 ( ) + 0:1:4:21 Datum.163.1.3 ( ) } diff --git a/tests/gdt/import/A5 b/tests/gdt/import/A5 index 2a1e8f41d8..4fb947df98 100644 --- a/tests/gdt/import/A5 +++ b/tests/gdt/import/A5 @@ -5,8 +5,8 @@ set ref_data { NbOfDimensions : 6 NbOfTolerances : 10 - NbOfDatumFeature : 2 - NbOfAttachedDatum : 9 + NbOfDatumFeature : 6 + NbOfAttachedDatum : 26 NbOfDatumTarget : 2 0:1:1:2:2 Shape.5 @@ -30,9 +30,9 @@ set ref_data { 0:1:4:16 GeomTolerance.92.1 ( T 4 TV 1, V 0.76200000000000001 ) 0:1:4:17 Datum.92.1.1 ( ) 0:1:1:2:118 Shape.121 - 0:1:4:27 Datum target.121.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:27 Datum target.121.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:123 Shape.126 - 0:1:4:25 Datum target.126.1 ( T 3, A ( L (000), XD (10-0), RD (-010)), L 0 ) + 0:1:4:25 Datum target.126.1 ( T 3, A ( L (000), XD (100), RD (010)), L 0 ) 0:1:1:2:125 Shape.128 0:1:4:18 GeomTolerance.128.1 ( T 2 TV 0, V 0.63500000000000001 ) 0:1:4:19 Datum.128.1.1 ( ) diff --git a/tests/gdt/presentation/A1 b/tests/gdt/presentation/A1 index 97e3f96525..b89fc1893e 100644 --- a/tests/gdt/presentation/A1 +++ b/tests/gdt/presentation/A1 @@ -2,7 +2,7 @@ set filename bug26689_nist_ctc_01_asme1_ap242.stp set ref_data { -Centre of mass: 33.295841310232461 -56.047419205695817 -22.610629589474502 -Mass: 12142.750755797097 +Centre of mass: 29.546801037335253 -82.783066220874005 -19.99554027028211 +Mass: 13738.80582018411 } diff --git a/tests/gdt/presentation/A2 b/tests/gdt/presentation/A2 index 6690da9df1..7293b53312 100644 --- a/tests/gdt/presentation/A2 +++ b/tests/gdt/presentation/A2 @@ -2,7 +2,7 @@ set filename bug26689_nist_ctc_02_asme1_ap242-2.stp set ref_data { -Centre of mass: -20.690618897992287 429.98435462807362 -195.18496405683655 -Mass: 71360.562475059254 +Centre of mass: 18.66947125963403 373.85517189733469 -218.66888436367711 +Mass: 113421.92341292847 } diff --git a/tests/gdt/presentation/A3 b/tests/gdt/presentation/A3 index a6a2153fd4..d8546f9f23 100644 --- a/tests/gdt/presentation/A3 +++ b/tests/gdt/presentation/A3 @@ -2,7 +2,7 @@ set filename bug26689_nist_ctc_04_asme1_ap242.stp set ref_data { -Centre of mass: -30.449180184134651 416.32906679654656 -71.016553810946093 -Mass: 15380.860003478236 +Centre of mass: -24.252221154276793 414.27122809865392 -67.499648752527435 +Mass: 16181.056829161265 } diff --git a/tests/gdt/presentation/A4 b/tests/gdt/presentation/A4 index 7303defd20..9b32c2ac33 100644 --- a/tests/gdt/presentation/A4 +++ b/tests/gdt/presentation/A4 @@ -2,7 +2,7 @@ set filename bug26689_nist_ctc_05_asme1_ap242-1.stp set ref_data { -Centre of mass: 56.678867441850549 62.371517442719387 56.338758909806039 -Mass: 14602.02565195344 +Centre of mass: 48.087957284250827 72.719433938737708 29.443809253146483 +Mass: 17319.863084079672 } diff --git a/tests/gdt/presentation/A5 b/tests/gdt/presentation/A5 index 6d9fb01d07..4b1dc0dae6 100644 --- a/tests/gdt/presentation/A5 +++ b/tests/gdt/presentation/A5 @@ -1,10 +1,8 @@ # !!!! 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 CR27235 ALL:Error : 4 differences with reference data found :" -puts "TODO CR27235 ALL:Error on writing file" set ref_data { -Centre of mass: 362.61474383020976 2196.4222207238172 -2017.5878044804083 -Mass: 639159.86516525224 +Centre of mass: 353.0342262077636 2195.7131569185326 -1984.1595092335315 +Mass: 652240.08849643217 } diff --git a/tests/gdt/presentation/A6 b/tests/gdt/presentation/A6 index 4e49156ef4..149d988ac9 100644 --- a/tests/gdt/presentation/A6 +++ b/tests/gdt/presentation/A6 @@ -2,7 +2,7 @@ set filename bug27808_nist_ftc_06_asme1_ct5240_rd.stp set ref_data { -Centre of mass: 4.9764105227425732 64.184386470151395 -67.058886121406474 -Mass: 24387.315219228582 +Centre of mass: -0.74274946098869621 58.97231577066983 -68.214139931277799 +Mass: 27143.62735625666 } diff --git a/tests/gdt/presentation/A7 b/tests/gdt/presentation/A7 index 6564284869..49c6bc35a6 100644 --- a/tests/gdt/presentation/A7 +++ b/tests/gdt/presentation/A7 @@ -2,7 +2,7 @@ set filename bug27645_nist_ftc_06_asme1_ct5240_rd-1.stp set ref_data { -Centre of mass: 126.40116834489778 1630.2833705491985 -1703.2961457827012 -Mass: 619437.81154779939 +Centre of mass: -18.865504732887754 1497.8967671908645 -1732.6395748131215 +Mass: 689448.13901608682 } diff --git a/tests/gdt/presentation/A8 b/tests/gdt/presentation/A8 index fdd328bf66..300486bfbc 100644 --- a/tests/gdt/presentation/A8 +++ b/tests/gdt/presentation/A8 @@ -1,7 +1,5 @@ # !!!! 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 CR27235 ALL:Error : 4 differences with reference data found :" -puts "TODO CR27235 ALL:Error on writing file" set ref_data { Centre of mass: 1104.9937982009856 239.05520712068363 1053.1493316328786 diff --git a/tests/gdt/presentation/A9 b/tests/gdt/presentation/A9 index 85142b58e3..141b7e45ef 100644 --- a/tests/gdt/presentation/A9 +++ b/tests/gdt/presentation/A9 @@ -2,7 +2,7 @@ set filename bug27808_nist_ftc_08_asme1_ct5240_rc.stp set ref_data { -Centre of mass: 44.537314289484314 44.054934745863214 33.295311157211145 -Mass: 22754.349304272349 +Centre of mass: 45.592058840520288 57.746342213198673 29.009867037491144 +Mass: 27993.933359111707 } diff --git a/tests/gdt/presentation/B1 b/tests/gdt/presentation/B1 index 365af2e841..10d9ed0cf2 100644 --- a/tests/gdt/presentation/B1 +++ b/tests/gdt/presentation/B1 @@ -2,7 +2,7 @@ set filename bug27645_nist_ftc_08_asme1_ct5240_rc-1.stp set ref_data { -Centre of mass: 1131.248437223685 1118.9954844429806 845.70091310388898 -Mass: 577960.40529879264 +Centre of mass: 1158.0392758487928 1466.7572922614359 736.8506424687256 +Mass: 711045.84939578606 } diff --git a/tests/gdt/presentation/B2 b/tests/gdt/presentation/B2 index b8552a468c..2dd959746d 100644 --- a/tests/gdt/presentation/B2 +++ b/tests/gdt/presentation/B2 @@ -1,7 +1,5 @@ # !!!! 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 CR27235 ALL:Error : 4 differences with reference data found :" -puts "TODO CR27235 ALL:Error on writing file" set ref_data { Centre of mass: 502.07157406480525 128.63296443659232 -279.83117556867592 diff --git a/tests/gdt/presentation/B3 b/tests/gdt/presentation/B3 index 05f5401dba..e8724d6256 100644 --- a/tests/gdt/presentation/B3 +++ b/tests/gdt/presentation/B3 @@ -2,7 +2,7 @@ set filename bug27808_nist_ftc_09_asme1_ct5240_rd.stp set ref_data { -Centre of mass: -20.281360550123736 7.5575111121398644 -1.4132597243023584 -Mass: 23871.875331976771 +Centre of mass: -36.599786468681039 7.7614827642946826 1.7474609105557635 +Mass: 29481.508138690682 } diff --git a/tests/gdt/presentation/B4 b/tests/gdt/presentation/B4 index 04d68b7b1f..0c41ca1aba 100644 --- a/tests/gdt/presentation/B4 +++ b/tests/gdt/presentation/B4 @@ -2,7 +2,7 @@ set filename bug27645_nist_ftc_09_asme1_ct5240_rd-1.stp set ref_data { -Centre of mass: -515.14631491538069 191.96077215596614 -35.896739001613369 -Mass: 606345.50780760846 +Centre of mass: -929.63433298181099 197.14165173802976 44.385591909492049 +Mass: 748830.1046596528 }