0026371: Implementation of new entities for GD&T
authorika <ika@opencascade.com>
Thu, 24 Sep 2015 09:12:47 +0000 (12:12 +0300)
committerkgv <kgv@opencascade.com>
Thu, 24 Sep 2015 11:10:26 +0000 (14:10 +0300)
Implement entities:
- DatumReferenceCompartment,
- DatumReferenceElement,
- DatumReferenceModifierWithValue,
- DatumSystem,
- GeneralDatumReference,

- ValueFormatTypeQualifier,

- NonUniformZoneDefinition,
- ProjectedZoneDefinition,
- RunoutZoneDefinition,
- RunoutZoneOrientation,
- ToleranceZone,
- ToleranceZoneDefinition,
- ToleranceZoneForm,
- ToleranceZoneTarget,

- GeometricToleranceWithDefinedAreaUnit,
- GeometricToleranceWithDefinedUnit,
- GeometricToleranceWithMaximumTolerance,
- GeometricToleranceWithModifiers,
- UnequallyDisposedGeometricTolerance,

- GeometricItemSpecificUsage,
- IdAttribute,
- IdAttributeSelect,
- ItemIdentifiedRepresentationUsage,
- ItemIdentifiedRepresentationUsageDefinition,

- Apex,
- CentreOfSymmetry,
- GeometricAlignment,
- ParallelOffset,
- PerpendicularTo,
- Tangent,

- AllAroundShapeAspect,
- BetweenShapeAspect,
- CompositeGroupShapeAspect,
- ContinuosShapeAspect,

- ReprItemAndLengthMeasureWithUnitAndQRI,
- ReprItemAndPlaneAngleMeasureWithUnitAndQRI,
- ReprItemAndPlaneAngleMeasureWithUnit,

- CompGroupShAspAndCompShAspAndDatumFeatAndShAsp,
- CompShAspAndDatumFeatAndShAsp,

- GeoTolAndGeoTolWthDatRef,
- GeoTolAndGeoTolWthDatRefAndGeoTolWthMod,
- GeoTolAndGeoTolWthMod,
- GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol,

- IntegerRepresentationItem,
- ValueRepresentationItem.

Modify entities:
- GeometricTolerance,
- GeometricToleranceWithDatumReference,
- ShapeDimensionRepresentation.

fix compilation error

fix compilation warning

261 files changed:
adm/UDLIST
src/RWStepAP214/RWStepAP214_GeneralModule.cxx
src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx
src/RWStepAP242/FILES [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWGeometricItemSpecificUsage.cxx [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWGeometricItemSpecificUsage.hxx [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWIdAttribute.cxx [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWIdAttribute.hxx [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWItemIdentifiedRepresentationUsage.cxx [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx [new file with mode: 0644]
src/RWStepDimTol/FILES
src/RWStepDimTol/RWStepDimTol_RWAngularityTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWCircularRunoutTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWCoaxialityTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWConcentricityTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWCylindricityTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWDatumReferenceCompartment.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumReferenceCompartment.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumReferenceElement.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumReferenceElement.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumReferenceModifierWithValue.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumReferenceModifierWithValue.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumSystem.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWDatumSystem.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWFlatnessTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWGeneralDatumReference.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeneralDatumReference.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol.cxx
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthMod.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDatumReference.cxx
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedUnit.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithModifiers.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithModifiers.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWLineProfileTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWModifiedGeometricTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWNonUniformZoneDefinition.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWNonUniformZoneDefinition.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWParallelismTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWPerpendicularityTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWPositionTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWProjectedZoneDefinition.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWProjectedZoneDefinition.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWRoundnessTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWRunoutZoneDefinition.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWRunoutZoneDefinition.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWRunoutZoneOrientation.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWRunoutZoneOrientation.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWStraightnessTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWSurfaceProfileTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWSymmetryTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWToleranceZone.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWToleranceZone.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWToleranceZoneDefinition.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWToleranceZoneDefinition.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWToleranceZoneForm.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWToleranceZoneForm.hxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWTotalRunoutTolerance.cxx
src/RWStepDimTol/RWStepDimTol_RWUnequallyDisposedGeometricTolerance.cxx [new file with mode: 0644]
src/RWStepDimTol/RWStepDimTol_RWUnequallyDisposedGeometricTolerance.hxx [new file with mode: 0644]
src/RWStepRepr/FILES
src/RWStepRepr/RWStepRepr_RWAllAroundShapeAspect.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWAllAroundShapeAspect.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWApex.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWApex.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWBetweenShapeAspect.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWBetweenShapeAspect.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCentreOfSymmetry.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCentreOfSymmetry.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCompositeGroupShapeAspect.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWCompositeGroupShapeAspect.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWContinuosShapeAspect.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWContinuosShapeAspect.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWGeometricAlignment.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWGeometricAlignment.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWIntegerRepresentationItem.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWIntegerRepresentationItem.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWParallelOffset.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWParallelOffset.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWPerpendicularTo.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWPerpendicularTo.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWReprItemAndLengthMeasureWithUnitAndQRI.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWReprItemAndLengthMeasureWithUnitAndQRI.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnit.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnit.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnitAndQRI.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWTangent.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWTangent.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWValueRepresentationItem.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWValueRepresentationItem.hxx [new file with mode: 0644]
src/RWStepShape/FILES
src/RWStepShape/RWStepShape_RWShapeDimensionRepresentation.cxx
src/RWStepShape/RWStepShape_RWValueFormatTypeQualifier.cxx [new file with mode: 0644]
src/RWStepShape/RWStepShape_RWValueFormatTypeQualifier.hxx [new file with mode: 0644]
src/StepAP214/StepAP214_Protocol.cxx
src/StepAP242/FILES [new file with mode: 0644]
src/StepAP242/StepAP242_GeometricItemSpecificUsage.cxx [new file with mode: 0644]
src/StepAP242/StepAP242_GeometricItemSpecificUsage.hxx [new file with mode: 0644]
src/StepAP242/StepAP242_IdAttribute.cxx [new file with mode: 0644]
src/StepAP242/StepAP242_IdAttribute.hxx [new file with mode: 0644]
src/StepAP242/StepAP242_IdAttributeSelect.cxx [new file with mode: 0644]
src/StepAP242/StepAP242_IdAttributeSelect.hxx [new file with mode: 0644]
src/StepAP242/StepAP242_ItemIdentifiedRepresentationUsage.cxx [new file with mode: 0644]
src/StepAP242/StepAP242_ItemIdentifiedRepresentationUsage.hxx [new file with mode: 0644]
src/StepAP242/StepAP242_ItemIdentifiedRepresentationUsageDefinition.cxx [new file with mode: 0644]
src/StepAP242/StepAP242_ItemIdentifiedRepresentationUsageDefinition.hxx [new file with mode: 0644]
src/StepBasic/StepBasic_MeasureValueMember.cxx
src/StepBasic/StepBasic_MeasureValueMember.hxx
src/StepDimTol/FILES
src/StepDimTol/StepDimTol_AreaUnitType.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_Array1OfDatumReferenceCompartment.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_Array1OfDatumReferenceElement.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_Array1OfDatumReferenceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_Array1OfDatumSystemOrReference.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_Array1OfGeometricToleranceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_Array1OfToleranceZoneTarget.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumOrCommonDatum.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumOrCommonDatum.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceCompartment.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceCompartment.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceElement.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceElement.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceModifier.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceModifierType.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceModifierWithValue.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumReferenceModifierWithValue.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumSystem.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumSystem.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumSystemOrReference.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_DatumSystemOrReference.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeneralDatumReference.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeneralDatumReference.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRef.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRef.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol.cxx
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol.hxx
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthMod.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthMod.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricTolerance.cxx
src/StepDimTol/StepDimTol_GeometricTolerance.hxx
src/StepDimTol/StepDimTol_GeometricToleranceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceTarget.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceTarget.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceType.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithDatumReference.cxx
src/StepDimTol/StepDimTol_GeometricToleranceWithDatumReference.hxx
src/StepDimTol/StepDimTol_GeometricToleranceWithDefinedAreaUnit.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithDefinedAreaUnit.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithDefinedUnit.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithDefinedUnit.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithMaximumTolerance.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithMaximumTolerance.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithModifiers.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_GeometricToleranceWithModifiers.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_HArray1OfDatumReferenceCompartment.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_HArray1OfDatumReferenceElement.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_HArray1OfDatumReferenceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_HArray1OfDatumSystemOrReference.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_HArray1OfGeometricToleranceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_HArray1OfToleranceZoneTarget.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ModifiedGeometricTolerance.cxx
src/StepDimTol/StepDimTol_ModifiedGeometricTolerance.hxx
src/StepDimTol/StepDimTol_NonUniformZoneDefinition.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_NonUniformZoneDefinition.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ProjectedZoneDefinition.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ProjectedZoneDefinition.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_RunoutZoneDefinition.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_RunoutZoneDefinition.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_RunoutZoneOrientation.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_RunoutZoneOrientation.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_SimpleDatumReferenceModifier.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_SimpleDatumReferenceModifierMember.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_SimpleDatumReferenceModifierMember.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZone.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZone.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZoneDefinition.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZoneDefinition.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZoneForm.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZoneForm.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZoneTarget.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZoneTarget.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_UnequallyDisposedGeometricTolerance.cxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_UnequallyDisposedGeometricTolerance.hxx [new file with mode: 0644]
src/StepRepr/FILES
src/StepRepr/StepRepr_AllAroundShapeAspect.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_AllAroundShapeAspect.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_Apex.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_Apex.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_Array1OfShapeAspect.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_Array1OfShapeAspect.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_BetweenShapeAspect.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_BetweenShapeAspect.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_CentreOfSymmetry.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_CentreOfSymmetry.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_CompShAspAndDatumFeatAndShAsp.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_CompShAspAndDatumFeatAndShAsp.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_CompositeGroupShapeAspect.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_CompositeGroupShapeAspect.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ContinuosShapeAspect.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ContinuosShapeAspect.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_GeometricAlignment.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_GeometricAlignment.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_HArray1OfShapeAspect.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_HArray1OfShapeAspect.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_IntegerRepresentationItem.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_IntegerRepresentationItem.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ParallelOffset.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ParallelOffset.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_PerpendicularTo.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_PerpendicularTo.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndLengthMeasureWithUnit.cxx
src/StepRepr/StepRepr_ReprItemAndLengthMeasureWithUnit.hxx
src/StepRepr/StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndMeasureWithUnit.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndMeasureWithUnit.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndMeasureWithUnitAndQRI.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndMeasureWithUnitAndQRI.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndPlaneAngleMeasureWithUnit.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndPlaneAngleMeasureWithUnit.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_Tangent.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_Tangent.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_ValueRepresentationItem.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_ValueRepresentationItem.hxx [new file with mode: 0644]
src/StepShape/FILES
src/StepShape/StepShape_Array1OfShapeDimensionRepresentationItem.hxx [new file with mode: 0644]
src/StepShape/StepShape_HArray1OfShapeDimensionRepresentationItem.hxx [new file with mode: 0644]
src/StepShape/StepShape_ShapeDimensionRepresentation.cxx
src/StepShape/StepShape_ShapeDimensionRepresentation.hxx
src/StepShape/StepShape_ShapeDimensionRepresentationItem.cxx [new file with mode: 0644]
src/StepShape/StepShape_ShapeDimensionRepresentationItem.hxx [new file with mode: 0644]
src/StepShape/StepShape_ValueFormatTypeQualifier.cxx [new file with mode: 0644]
src/StepShape/StepShape_ValueFormatTypeQualifier.hxx [new file with mode: 0644]
src/TKSTEP/CMakeLists.txt
src/TKSTEP/PACKAGES

index c6ecf10..35248db 100644 (file)
@@ -311,6 +311,7 @@ n MoniTool
 n RWHeaderSection
 n RWStepAP203
 n RWStepAP214
+n RWStepAP242
 n RWStepBasic
 n RWStepDimTol
 n RWStepElement
@@ -328,6 +329,7 @@ n STEPSelections
 n StepAP203
 n StepAP209
 n StepAP214
+n StepAP242
 n StepBasic
 n StepData
 n StepDimTol
index 87d6445..24adce5 100644 (file)
 #include <RWStepDimTol_RWCoaxialityTolerance.hxx>
 #include <RWStepDimTol_RWCommonDatum.hxx>
 #include <RWStepDimTol_RWConcentricityTolerance.hxx>
+#include <RWStepDimTol_RWCylindricityTolerance.hxx>
 #include <RWStepDimTol_RWDatum.hxx>
 #include <RWStepDimTol_RWDatumFeature.hxx>
 #include <RWStepDimTol_RWDatumReference.hxx>
 #include <StepDimTol_CoaxialityTolerance.hxx>
 #include <StepDimTol_CommonDatum.hxx>
 #include <StepDimTol_ConcentricityTolerance.hxx>
+#include <StepDimTol_CylindricityTolerance.hxx>
 #include <StepDimTol_Datum.hxx>
 #include <StepDimTol_DatumFeature.hxx>
 #include <StepDimTol_DatumReference.hxx>
 // ptv 28.01.2003
 //  TR12J 04.06.2003 G&DT entities GKA 
 // added by skl 10.02.2004 for TRJ13
+#include <StepBasic_ConversionBasedUnitAndMassUnit.hxx>
+#include <RWStepBasic_RWConversionBasedUnitAndMassUnit.hxx>
+#include <StepBasic_MassMeasureWithUnit.hxx>
+#include <RWStepBasic_RWMassMeasureWithUnit.hxx>
+
+// Added by ika for GD&T AP242
+#include <RWStepRepr_RWApex.hxx>
+#include <RWStepRepr_RWCentreOfSymmetry.hxx>
+#include <RWStepRepr_RWGeometricAlignment.hxx>
+#include <RWStepRepr_RWParallelOffset.hxx>
+#include <RWStepRepr_RWPerpendicularTo.hxx>
+#include <RWStepRepr_RWTangent.hxx>
+#include <RWStepAP242_RWGeometricItemSpecificUsage.hxx>
+#include <RWStepAP242_RWIdAttribute.hxx>
+#include <RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx>
+#include <RWStepRepr_RWAllAroundShapeAspect.hxx>
+#include <RWStepRepr_RWBetweenShapeAspect.hxx>
+#include <RWStepRepr_RWCompositeGroupShapeAspect.hxx>
+#include <RWStepRepr_RWContinuosShapeAspect.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithModifiers.hxx>
+#include <RWStepDimTol_RWUnequallyDisposedGeometricTolerance.hxx>
+#include <RWStepDimTol_RWNonUniformZoneDefinition.hxx>
+#include <RWStepDimTol_RWProjectedZoneDefinition.hxx>
+#include <RWStepDimTol_RWRunoutZoneDefinition.hxx>
+#include <RWStepDimTol_RWRunoutZoneOrientation.hxx>
+#include <RWStepDimTol_RWToleranceZone.hxx>
+#include <RWStepDimTol_RWToleranceZoneDefinition.hxx>
+#include <RWStepDimTol_RWToleranceZoneForm.hxx>
+#include <RWStepShape_RWValueFormatTypeQualifier.hxx>
+#include <RWStepDimTol_RWDatumReferenceCompartment.hxx>
+#include <RWStepDimTol_RWDatumReferenceElement.hxx>
+#include <RWStepDimTol_RWDatumReferenceModifierWithValue.hxx>
+#include <RWStepDimTol_RWDatumSystem.hxx>
+#include <RWStepDimTol_RWGeneralDatumReference.hxx>
+#include <RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnit.hxx>
+#include <RWStepRepr_RWReprItemAndLengthMeasureWithUnitAndQRI.hxx>
+#include <RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
+#include <RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
+#include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
+#include <RWStepRepr_RWIntegerRepresentationItem.hxx>
+#include <RWStepRepr_RWValueRepresentationItem.hxx>
+
+#include <StepRepr_Apex.hxx>
+#include <StepRepr_CentreOfSymmetry.hxx>
+#include <StepRepr_GeometricAlignment.hxx>
+#include <StepRepr_ParallelOffset.hxx>
+#include <StepRepr_PerpendicularTo.hxx>
+#include <StepRepr_Tangent.hxx>
+#include <StepAP242_GeometricItemSpecificUsage.hxx>
+#include <StepAP242_IdAttribute.hxx>
+#include <StepAP242_ItemIdentifiedRepresentationUsage.hxx>
+#include <StepRepr_AllAroundShapeAspect.hxx>
+#include <StepRepr_BetweenShapeAspect.hxx>
+#include <StepRepr_CompositeGroupShapeAspect.hxx>
+#include <StepRepr_ContinuosShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceWithDefinedAreaUnit.hxx>
+#include <StepDimTol_GeometricToleranceWithDefinedUnit.hxx>
+#include <StepDimTol_GeometricToleranceWithMaximumTolerance.hxx>
+#include <StepDimTol_GeometricToleranceWithModifiers.hxx>
+#include <StepDimTol_UnequallyDisposedGeometricTolerance.hxx>
+#include <StepDimTol_NonUniformZoneDefinition.hxx>
+#include <StepDimTol_ProjectedZoneDefinition.hxx>
+#include <StepDimTol_RunoutZoneDefinition.hxx>
+#include <StepDimTol_RunoutZoneOrientation.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+#include <StepDimTol_ToleranceZoneDefinition.hxx>
+#include <StepDimTol_ToleranceZoneForm.hxx>
+#include <StepShape_ValueFormatTypeQualifier.hxx>
+#include <StepDimTol_DatumReferenceCompartment.hxx>
+#include <StepDimTol_DatumReferenceElement.hxx>
+#include <StepDimTol_DatumReferenceModifierWithValue.hxx>
+#include <StepDimTol_DatumSystem.hxx>
+#include <StepDimTol_GeneralDatumReference.hxx>
+#include <StepRepr_ReprItemAndPlaneAngleMeasureWithUnit.hxx>
+#include <StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI.hxx>
+#include <StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRef.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthMod.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
+#include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_IntegerRepresentationItem.hxx>
+#include <StepRepr_ValueRepresentationItem.hxx>
+
 static Standard_Integer catsh,catdr,catstr,catdsc,cataux;
 
 
@@ -4435,6 +4529,13 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
       break;
       
       //  TR12J 04.06.2003 G&DT entities GKA      
+    case 609:
+    {
+      DeclareAndCast(StepDimTol_CylindricityTolerance,anent,ent);
+      RWStepDimTol_RWCylindricityTolerance tool;
+      tool.Share(anent,iter);
+    }
+    break;
     case 610:
       {
         DeclareAndCast(StepShape_ShapeRepresentationWithParameters,anent,ent);
@@ -4634,8 +4735,242 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
        tool.Share(anent,iter);
       }
       break;
-      
-      
+    case 660:
+      {
+        DeclareAndCast(StepRepr_Apex,anent,ent);
+        RWStepRepr_RWApex tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 661:
+      {
+        DeclareAndCast(StepRepr_CentreOfSymmetry,anent,ent);
+        RWStepRepr_RWCentreOfSymmetry tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 662:
+      {
+        DeclareAndCast(StepRepr_GeometricAlignment,anent,ent);
+        RWStepRepr_RWGeometricAlignment tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 663:
+      {
+        DeclareAndCast(StepRepr_PerpendicularTo,anent,ent);
+        RWStepRepr_RWPerpendicularTo tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 664:
+      {
+        DeclareAndCast(StepRepr_Tangent,anent,ent);
+        RWStepRepr_RWTangent tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 665:
+      {
+        DeclareAndCast(StepRepr_ParallelOffset,anent,ent);
+        RWStepRepr_RWParallelOffset tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 666:
+      {
+        DeclareAndCast(StepAP242_GeometricItemSpecificUsage,anent,ent);
+        RWStepAP242_RWGeometricItemSpecificUsage tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 667:
+      {
+        DeclareAndCast(StepAP242_IdAttribute,anent,ent);
+        RWStepAP242_RWIdAttribute tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 668:
+      {
+        DeclareAndCast(StepAP242_ItemIdentifiedRepresentationUsage,anent,ent);
+        RWStepAP242_RWItemIdentifiedRepresentationUsage tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 669:
+      {
+        DeclareAndCast(StepRepr_AllAroundShapeAspect,anent,ent);
+        RWStepRepr_RWAllAroundShapeAspect tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 670:
+      {
+        DeclareAndCast(StepRepr_BetweenShapeAspect,anent,ent);
+        RWStepRepr_RWBetweenShapeAspect tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 671:
+      {
+        DeclareAndCast(StepRepr_CompositeGroupShapeAspect,anent,ent);
+        RWStepRepr_RWCompositeGroupShapeAspect tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 672:
+      {
+        DeclareAndCast(StepRepr_ContinuosShapeAspect,anent,ent);
+        RWStepRepr_RWContinuosShapeAspect tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 673:
+      {
+        DeclareAndCast(StepDimTol_GeometricToleranceWithDefinedAreaUnit,anent,ent);
+        RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 674:
+      {
+        DeclareAndCast(StepDimTol_GeometricToleranceWithDefinedUnit,anent,ent);
+        RWStepDimTol_RWGeometricToleranceWithDefinedUnit tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 675:
+      {
+        DeclareAndCast(StepDimTol_GeometricToleranceWithMaximumTolerance,anent,ent);
+        RWStepDimTol_RWGeometricToleranceWithMaximumTolerance tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 676:
+      {
+        DeclareAndCast(StepDimTol_GeometricToleranceWithModifiers,anent,ent);
+        RWStepDimTol_RWGeometricToleranceWithModifiers tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 677:
+      {
+        DeclareAndCast(StepDimTol_UnequallyDisposedGeometricTolerance,anent,ent);
+        RWStepDimTol_RWUnequallyDisposedGeometricTolerance tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 678:
+      {
+        DeclareAndCast(StepDimTol_NonUniformZoneDefinition,anent,ent);
+        RWStepDimTol_RWNonUniformZoneDefinition tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 679:
+      {
+        DeclareAndCast(StepDimTol_ProjectedZoneDefinition,anent,ent);
+        RWStepDimTol_RWProjectedZoneDefinition tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 680:
+      {
+        DeclareAndCast(StepDimTol_RunoutZoneDefinition,anent,ent);
+        RWStepDimTol_RWRunoutZoneDefinition tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    //case 681: no shared attributes
+    case 682:
+      {
+        DeclareAndCast(StepDimTol_ToleranceZone,anent,ent);
+        RWStepDimTol_RWToleranceZone tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    case 683:
+      {
+        DeclareAndCast(StepDimTol_ToleranceZoneDefinition,anent,ent);
+        RWStepDimTol_RWToleranceZoneDefinition tool;
+        tool.Share(anent,iter);
+      }
+      break;
+    //case 684: no shared attributes
+    //case 685: no shared attributes
+    case 686 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceCompartment, anent, ent);
+      RWStepDimTol_RWDatumReferenceCompartment tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 687 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceElement, anent, ent);
+      RWStepDimTol_RWDatumReferenceElement tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  //case 688: no shared attributes
+  case 689 :
+    {
+      DeclareAndCast(StepDimTol_DatumSystem, anent, ent);
+      RWStepDimTol_RWDatumSystem tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 690 :
+    {
+      DeclareAndCast(StepDimTol_GeneralDatumReference, anent, ent);
+      RWStepDimTol_RWGeneralDatumReference tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 694:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRef,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRef tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 695:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 696:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthMod,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthMod tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 697:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 698:
+    {
+      DeclareAndCast(StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp,anent,ent);
+      RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 699:
+    {
+      DeclareAndCast(StepRepr_CompShAspAndDatumFeatAndShAsp,anent,ent);
+      RWStepRepr_RWCompShAspAndDatumFeatAndShAsp tool;
+      tool.Share(anent,iter);
+    }
+    break;
+
     default : break;
     }
 }
@@ -6364,7 +6699,9 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
   case 601:
     ent = new StepBasic_DocumentProductEquivalence;
     break;
-    
+  case 609:
+    ent = new StepDimTol_CylindricityTolerance;
+    break;    
   case 610:
     ent = new StepShape_ShapeRepresentationWithParameters;
     break;
@@ -6454,8 +6791,133 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
   case 651 : 
     ent = new StepBasic_MassMeasureWithUnit;
     break;
-    
-    
+  case 660 : 
+    ent = new StepRepr_Apex;
+    break;
+  case 661 : 
+    ent = new StepRepr_CentreOfSymmetry;
+    break;
+  case 662 : 
+    ent = new StepRepr_GeometricAlignment;
+    break;
+  case 663 : 
+    ent = new StepRepr_PerpendicularTo;
+    break;
+  case 664 : 
+    ent = new StepRepr_Tangent;
+    break;
+  case 665 : 
+    ent = new StepRepr_ParallelOffset;
+    break;
+  case 666 : 
+    ent = new StepAP242_GeometricItemSpecificUsage;
+    break;
+  case 667 : 
+    ent = new StepAP242_IdAttribute;
+    break;
+  case 668 : 
+    ent = new StepAP242_ItemIdentifiedRepresentationUsage;
+    break;
+  case 669 : 
+    ent = new StepRepr_AllAroundShapeAspect;
+    break;
+  case 670 : 
+    ent = new StepRepr_BetweenShapeAspect;
+    break;
+  case 671 : 
+    ent = new StepRepr_CompositeGroupShapeAspect;
+    break;
+  case 672 : 
+    ent = new StepRepr_ContinuosShapeAspect;
+    break;
+  case 673 : 
+    ent = new StepDimTol_GeometricToleranceWithDefinedAreaUnit;
+    break;
+  case 674 : 
+    ent = new StepDimTol_GeometricToleranceWithDefinedUnit;
+    break;
+  case 675 : 
+    ent = new StepDimTol_GeometricToleranceWithMaximumTolerance;
+    break;
+  case 676 : 
+    ent = new StepDimTol_GeometricToleranceWithModifiers;
+    break;
+  case 677 : 
+    ent = new StepDimTol_UnequallyDisposedGeometricTolerance;
+    break;
+  case 678 : 
+    ent = new StepDimTol_NonUniformZoneDefinition;
+    break;
+  case 679 : 
+    ent = new StepDimTol_ProjectedZoneDefinition;
+    break;
+  case 680 : 
+    ent = new StepDimTol_RunoutZoneDefinition;
+    break;
+  case 681 : 
+    ent = new StepDimTol_RunoutZoneOrientation;
+    break;
+  case 682 : 
+    ent = new StepDimTol_ToleranceZone;
+    break;
+  case 683 : 
+    ent = new StepDimTol_ToleranceZoneDefinition;
+    break;
+  case 684 : 
+    ent = new StepDimTol_ToleranceZoneForm;
+    break;
+  case 685 : 
+    ent = new StepShape_ValueFormatTypeQualifier;
+    break;
+  case 686 : 
+    ent = new StepDimTol_DatumReferenceCompartment;
+    break;
+  case 687 : 
+    ent = new StepDimTol_DatumReferenceElement;
+    break;
+  case 688 : 
+    ent = new StepDimTol_DatumReferenceModifierWithValue;
+    break;
+  case 689 : 
+    ent = new StepDimTol_DatumSystem;
+    break;
+  case 690 : 
+    ent = new StepDimTol_GeneralDatumReference;
+    break;
+  case 691 : 
+    ent = new StepRepr_ReprItemAndPlaneAngleMeasureWithUnit;
+    break;
+  case 692 : 
+    ent = new StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI;
+    break;
+  case 693 : 
+    ent = new StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI;
+    break;
+  case 694 : 
+    ent = new StepDimTol_GeoTolAndGeoTolWthDatRef;
+    break;
+  case 695 : 
+    ent = new StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod;
+    break;
+  case 696 : 
+    ent = new StepDimTol_GeoTolAndGeoTolWthMod;
+    break;
+  case 697 : 
+    ent = new StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol;
+    break;
+  case 698 : 
+    ent = new StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp;
+    break;
+  case 699 : 
+    ent = new StepRepr_CompShAspAndDatumFeatAndShAsp;
+    break;
+  case 700:
+    ent = new StepRepr_IntegerRepresentationItem;
+    break;
+  case 701:
+    ent = new StepRepr_ValueRepresentationItem;
+    break;
+
   default: 
     return Standard_False;
   }
@@ -6964,6 +7426,7 @@ Standard_Integer  RWStepAP214_GeneralModule::CategoryNumber
   case 496: return catsh;
   case 600:
   case 601: return cataux;
+  case 609:
   case 610: 
   case 611:
   case 612:
@@ -6993,6 +7456,48 @@ Standard_Integer  RWStepAP214_GeneralModule::CategoryNumber
   case 636: return cataux;
   case 650: 
   case 651: return cataux;
+  case 660:
+  case 661:
+  case 662:
+  case 663:
+  case 664:
+  case 665: 
+  case 666:
+  case 667:
+  case 668:
+  case 669:
+  case 670:
+  case 671:
+  case 672: return catdr;
+  case 673:
+  case 674:
+  case 675:
+  case 676:
+  case 677:
+  case 678:
+  case 679:
+  case 680:
+  case 681:
+  case 682:
+  case 683:
+  case 684: return cataux;
+  case 685: return catdr;
+  case 686:
+  case 687:
+  case 688:
+  case 689:
+  case 690:
+  case 691:
+  case 692:
+  case 693:
+  case 694:
+  case 695:
+  case 696:
+  case 697: return cataux;
+  case 698:
+  case 699:
+  case 700:
+  case 701: return catdr;
     
   default : break;
   }
index f4ec5d1..c85f115 100644 (file)
@@ -1205,6 +1205,7 @@ Handle(atype) result = Handle(atype)::DownCast (start)
 #include <StepDimTol_ConcentricityTolerance.hxx>
 #include <StepDimTol_CircularRunoutTolerance.hxx>
 #include <StepDimTol_CoaxialityTolerance.hxx>
+#include <StepDimTol_CylindricityTolerance.hxx>
 #include <StepDimTol_FlatnessTolerance.hxx>
 #include <StepDimTol_LineProfileTolerance.hxx>
 #include <StepDimTol_ParallelismTolerance.hxx>
@@ -1236,6 +1237,7 @@ Handle(atype) result = Handle(atype)::DownCast (start)
 #include <RWStepDimTol_RWConcentricityTolerance.hxx>
 #include <RWStepDimTol_RWCircularRunoutTolerance.hxx>
 #include <RWStepDimTol_RWCoaxialityTolerance.hxx>
+#include <RWStepDimTol_RWCylindricityTolerance.hxx>
 #include <RWStepDimTol_RWFlatnessTolerance.hxx>
 #include <RWStepDimTol_RWLineProfileTolerance.hxx>
 #include <RWStepDimTol_RWParallelismTolerance.hxx>
@@ -1269,6 +1271,93 @@ Handle(atype) result = Handle(atype)::DownCast (start)
 #include <StepBasic_MassMeasureWithUnit.hxx>
 #include <RWStepBasic_RWMassMeasureWithUnit.hxx>
 
+// Added by ika for GD&T AP242
+#include <RWStepRepr_RWApex.hxx>
+#include <RWStepRepr_RWCentreOfSymmetry.hxx>
+#include <RWStepRepr_RWGeometricAlignment.hxx>
+#include <RWStepRepr_RWParallelOffset.hxx>
+#include <RWStepRepr_RWPerpendicularTo.hxx>
+#include <RWStepRepr_RWTangent.hxx>
+#include <RWStepAP242_RWGeometricItemSpecificUsage.hxx>
+#include <RWStepAP242_RWIdAttribute.hxx>
+#include <RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx>
+#include <RWStepRepr_RWAllAroundShapeAspect.hxx>
+#include <RWStepRepr_RWBetweenShapeAspect.hxx>
+#include <RWStepRepr_RWCompositeGroupShapeAspect.hxx>
+#include <RWStepRepr_RWContinuosShapeAspect.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx>
+#include <RWStepDimTol_RWGeometricToleranceWithModifiers.hxx>
+#include <RWStepDimTol_RWUnequallyDisposedGeometricTolerance.hxx>
+#include <RWStepDimTol_RWNonUniformZoneDefinition.hxx>
+#include <RWStepDimTol_RWProjectedZoneDefinition.hxx>
+#include <RWStepDimTol_RWRunoutZoneDefinition.hxx>
+#include <RWStepDimTol_RWRunoutZoneOrientation.hxx>
+#include <RWStepDimTol_RWToleranceZone.hxx>
+#include <RWStepDimTol_RWToleranceZoneDefinition.hxx>
+#include <RWStepDimTol_RWToleranceZoneForm.hxx>
+#include <RWStepShape_RWValueFormatTypeQualifier.hxx>
+#include <RWStepDimTol_RWDatumReferenceCompartment.hxx>
+#include <RWStepDimTol_RWDatumReferenceElement.hxx>
+#include <RWStepDimTol_RWDatumReferenceModifierWithValue.hxx>
+#include <RWStepDimTol_RWDatumSystem.hxx>
+#include <RWStepDimTol_RWGeneralDatumReference.hxx>
+#include <RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnit.hxx>
+#include <RWStepRepr_RWReprItemAndLengthMeasureWithUnitAndQRI.hxx>
+#include <RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
+#include <RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
+#include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
+#include <RWStepRepr_RWIntegerRepresentationItem.hxx>
+#include <RWStepRepr_RWValueRepresentationItem.hxx>
+
+#include <StepRepr_Apex.hxx>
+#include <StepRepr_CentreOfSymmetry.hxx>
+#include <StepRepr_GeometricAlignment.hxx>
+#include <StepRepr_ParallelOffset.hxx>
+#include <StepRepr_PerpendicularTo.hxx>
+#include <StepRepr_Tangent.hxx>
+#include <StepAP242_GeometricItemSpecificUsage.hxx>
+#include <StepAP242_IdAttribute.hxx>
+#include <StepAP242_ItemIdentifiedRepresentationUsage.hxx>
+#include <StepRepr_AllAroundShapeAspect.hxx>
+#include <StepRepr_BetweenShapeAspect.hxx>
+#include <StepRepr_CompositeGroupShapeAspect.hxx>
+#include <StepRepr_ContinuosShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceWithDefinedAreaUnit.hxx>
+#include <StepDimTol_GeometricToleranceWithDefinedUnit.hxx>
+#include <StepDimTol_GeometricToleranceWithMaximumTolerance.hxx>
+#include <StepDimTol_GeometricToleranceWithModifiers.hxx>
+#include <StepDimTol_UnequallyDisposedGeometricTolerance.hxx>
+#include <StepDimTol_NonUniformZoneDefinition.hxx>
+#include <StepDimTol_ProjectedZoneDefinition.hxx>
+#include <StepDimTol_RunoutZoneDefinition.hxx>
+#include <StepDimTol_RunoutZoneOrientation.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+#include <StepDimTol_ToleranceZoneDefinition.hxx>
+#include <StepDimTol_ToleranceZoneForm.hxx>
+#include <StepShape_ValueFormatTypeQualifier.hxx>
+#include <StepDimTol_DatumReferenceCompartment.hxx>
+#include <StepDimTol_DatumReferenceElement.hxx>
+#include <StepDimTol_DatumReferenceModifierWithValue.hxx>
+#include <StepDimTol_DatumSystem.hxx>
+#include <StepDimTol_GeneralDatumReference.hxx>
+#include <StepRepr_ReprItemAndPlaneAngleMeasureWithUnit.hxx>
+#include <StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI.hxx>
+#include <StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRef.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthMod.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
+#include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_IntegerRepresentationItem.hxx>
+#include <StepRepr_ValueRepresentationItem.hxx>
+
 
 // -- General Declarations (Recognize, StepType) ---
 
@@ -1840,6 +1929,7 @@ static TCollection_AsciiString Reco_AngularityTolerance("ANGULARITY_TOLERANCE");
 static TCollection_AsciiString Reco_ConcentricityTolerance("CONCENTRICITY_TOLERANCE");
 static TCollection_AsciiString Reco_CircularRunoutTolerance("CIRCULAR_RUNOUT_TOLERANCE");
 static TCollection_AsciiString Reco_CoaxialityTolerance("COAXIALITY_TOLERANCE");
+static TCollection_AsciiString Reco_CylindricityTolerance("CYLINDRICITY_TOLERANCE");
 static TCollection_AsciiString Reco_FlatnessTolerance("FLATNESS_TOLERANCE");
 static TCollection_AsciiString Reco_LineProfileTolerance("LINE_PROFILE_TOLERANCE");
 static TCollection_AsciiString Reco_ParallelismTolerance("PARALLELISM_TOLERANCE");
@@ -1861,6 +1951,40 @@ static TCollection_AsciiString Reco_CommonDatum("COMMON_DATUM");
 static TCollection_AsciiString Reco_DatumTarget("DATUM_TARGET");
 static TCollection_AsciiString Reco_PlacedDatumTargetFeature("PLACED_DATUM_TARGET_FEATURE");
 
+//Added by ika for GD&T AP242
+static TCollection_AsciiString Reco_Apex("APEX");
+static TCollection_AsciiString Reco_CentreOfSymmetry("CENTRE_OF_SYMMETRY");
+static TCollection_AsciiString Reco_GeometricAlignment("GEOMETRIC_ALIGNMENT");
+static TCollection_AsciiString Reco_PerpendicularTo("PERPENDICULAR_TO");
+static TCollection_AsciiString Reco_Tangent("TANGENT");
+static TCollection_AsciiString Reco_ParallelOffset("PARALLEL_OFFSET");
+static TCollection_AsciiString Reco_GeometricItemSpecificUsage("GEOMETRIC_ITEM_SPECIFIC_USAGE");
+static TCollection_AsciiString Reco_IdAttribute("ID_ATTRIBUTE");
+static TCollection_AsciiString Reco_ItemIdentifiedRepresentationUsage("ITEM_IDENTIFIED_REPRESENTATION_USAGE");
+static TCollection_AsciiString Reco_AllAroundShapeAspect("ALL_AROUND_SHAPE_ASPECT");
+static TCollection_AsciiString Reco_BetweenShapeAspect("BETWEEN_SHAPE_ASPECT");
+static TCollection_AsciiString Reco_CompositeGroupShapeAspect("COMPOSITE_GROUP_SHAPE_ASPECT");
+static TCollection_AsciiString Reco_ContinuosShapeAspect("CONTINUOUS_SHAPE_ASPECT");
+static TCollection_AsciiString Reco_GeometricToleranceWithDefinedAreaUnit("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT");
+static TCollection_AsciiString Reco_GeometricToleranceWithDefinedUnit("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT");
+static TCollection_AsciiString Reco_GeometricToleranceWithMaximumTolerance("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE");
+static TCollection_AsciiString Reco_GeometricToleranceWithModifiers("GEOMETRIC_TOLERANCE_WITH_MODIFIERS");
+static TCollection_AsciiString Reco_UnequallyDisposedGeometricTolerance("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE");
+static TCollection_AsciiString Reco_NonUniformZoneDefinition("NON_UNIFORM_ZONE_DEFINITION");
+static TCollection_AsciiString Reco_ProjectedZoneDefinition("PROJECTED_ZONE_DEFINITION");
+static TCollection_AsciiString Reco_RunoutZoneDefinition("RUNOUT_ZONE_DEFINITION");
+static TCollection_AsciiString Reco_RunoutZoneOrientation("RUNOUT_ZONE_ORIENTATION");
+static TCollection_AsciiString Reco_ToleranceZone("TOLERANCE_ZONE");
+static TCollection_AsciiString Reco_ToleranceZoneDefinition("TOLERANCE_ZONE_DEFINITION");
+static TCollection_AsciiString Reco_ToleranceZoneForm("TOLERANCE_ZONE_FORM");
+static TCollection_AsciiString Reco_ValueFormatTypeQualifier("VALUE_FORMAT_TYPE_QUALIFIER");
+static TCollection_AsciiString Reco_DatumReferenceCompartment("DATUM_REFERENCE_COMPARTMENT");
+static TCollection_AsciiString Reco_DatumReferenceElement("DATUM_REFERENCE_ELEMENT");
+static TCollection_AsciiString Reco_DatumReferenceModifierWithValue("DATUM_REFERENCE_MODIFIER_WITH_VALUE");
+static TCollection_AsciiString Reco_DatumSystem("DATUM_SYSTEM");
+static TCollection_AsciiString Reco_GeneralDatumReference("GENERAL_DATUM_REFERENCE");
+static TCollection_AsciiString Reco_IntegerRepresentationItem("INTEGER_REPRESENTATION_ITEM");
+static TCollection_AsciiString Reco_ValueRepresentationItem("VALUE_REPRESENTATION_ITEM");
 
 // -- Definition of the libraries --
 
@@ -2441,6 +2565,7 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
   typenums->SetItem (Reco_DocumentProductEquivalence,601);  
   
   // Added by SKL 18.06.2003 for Dimensional Tolerances (CAX-IF TRJ11)
+  typenums->SetItem (Reco_CylindricityTolerance,609);
   typenums->SetItem (Reco_ShapeRepresentationWithParameters,610);
   typenums->SetItem (Reco_AngularityTolerance,611);
   typenums->SetItem (Reco_ConcentricityTolerance,612);
@@ -2469,6 +2594,41 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
 
   typenums->SetItem (Reco_MassMeasureWithUnit,651);
 
+  //Added by ika for GD&T AP242
+  typenums->SetItem (Reco_Apex, 660);
+  typenums->SetItem (Reco_CentreOfSymmetry, 661);
+  typenums->SetItem (Reco_GeometricAlignment, 662);
+  typenums->SetItem (Reco_PerpendicularTo, 663);
+  typenums->SetItem (Reco_Tangent, 664);
+  typenums->SetItem (Reco_ParallelOffset, 665);
+  typenums->SetItem (Reco_GeometricItemSpecificUsage, 666);
+  typenums->SetItem (Reco_IdAttribute, 667);
+  typenums->SetItem (Reco_ItemIdentifiedRepresentationUsage, 668);
+  typenums->SetItem (Reco_AllAroundShapeAspect, 669);
+  typenums->SetItem (Reco_BetweenShapeAspect, 670);
+  typenums->SetItem (Reco_CompositeGroupShapeAspect, 671);
+  typenums->SetItem (Reco_ContinuosShapeAspect, 672);
+  typenums->SetItem (Reco_GeometricToleranceWithDefinedAreaUnit, 673);
+  typenums->SetItem (Reco_GeometricToleranceWithDefinedUnit, 674);
+  typenums->SetItem (Reco_GeometricToleranceWithMaximumTolerance, 675);
+  typenums->SetItem (Reco_GeometricToleranceWithModifiers, 676);
+  typenums->SetItem (Reco_UnequallyDisposedGeometricTolerance, 677);
+  typenums->SetItem (Reco_NonUniformZoneDefinition, 678);
+  typenums->SetItem (Reco_ProjectedZoneDefinition, 679);
+  typenums->SetItem (Reco_RunoutZoneDefinition, 680);
+  typenums->SetItem (Reco_RunoutZoneOrientation, 681);
+  typenums->SetItem (Reco_ToleranceZone, 682);
+  typenums->SetItem (Reco_ToleranceZoneDefinition, 683);
+  typenums->SetItem (Reco_ToleranceZoneForm, 684);
+  typenums->SetItem (Reco_ValueFormatTypeQualifier, 685);
+  typenums->SetItem (Reco_DatumReferenceCompartment, 686);
+  typenums->SetItem (Reco_DatumReferenceElement, 687);
+  typenums->SetItem (Reco_DatumReferenceModifierWithValue, 688);
+  typenums->SetItem (Reco_DatumSystem, 689);
+  typenums->SetItem (Reco_GeneralDatumReference, 690);
+  typenums->SetItem (Reco_IntegerRepresentationItem, 700);
+  typenums->SetItem (Reco_ValueRepresentationItem, 701);
+
 //    SHORT NAMES
 //    NB : la liste est celle de AP203
 //    Directement exploite pour les types simples
@@ -2852,268 +3012,390 @@ Standard_Integer RWStepAP214_ReadWriteModule::CaseStep
     
     if (NbComp == 7) {
       if ((types(1).IsEqual(StepType(48))) &&
-         (types(2).IsEqual(StepType(38))) &&
-         (types(3).IsEqual(StepType(84))) &&
-         (types(4).IsEqual(StepType(144))) &&
-         (types(5).IsEqual(StepType(239))) &&
-         (types(6).IsEqual(StepType(247))) &&
-         (types(7).IsEqual(StepType(311)))) {
-       return 319;
+          (types(2).IsEqual(StepType(38))) &&
+          (types(3).IsEqual(StepType(84))) &&
+          (types(4).IsEqual(StepType(144))) &&
+          (types(5).IsEqual(StepType(239))) &&
+          (types(6).IsEqual(StepType(247))) &&
+          (types(7).IsEqual(StepType(311)))) {
+        return 319;
       }
       else if ((types(1).IsEqual(StepType(48))) &&
-              (types(2).IsEqual(StepType(38))) &&
-              (types(3).IsEqual(StepType(39))) &&
-              (types(4).IsEqual(StepType(84))) &&
-              (types(5).IsEqual(StepType(144))) &&
-              (types(6).IsEqual(StepType(239))) &&
-              (types(7).IsEqual(StepType(247)))) {
-       return 320;
+               (types(2).IsEqual(StepType(38))) &&
+               (types(3).IsEqual(StepType(39))) &&
+               (types(4).IsEqual(StepType(84))) &&
+               (types(5).IsEqual(StepType(144))) &&
+               (types(6).IsEqual(StepType(239))) &&
+               (types(7).IsEqual(StepType(247)))) {
+        return 320;
       }
       else if ((types(1).IsEqual(StepType(48))) &&
-              (types(2).IsEqual(StepType(38))) &&
-              (types(3).IsEqual(StepType(84))) &&
-              (types(4).IsEqual(StepType(144))) &&
-              (types(5).IsEqual(StepType(236))) &&
-              (types(6).IsEqual(StepType(239))) &&
-              (types(7).IsEqual(StepType(247)))) {
-       return 321;
+              (types(2).IsEqual(StepType(38))) &&
+              (types(3).IsEqual(StepType(84))) &&
+              (types(4).IsEqual(StepType(144))) &&
+              (types(5).IsEqual(StepType(236))) &&
+              (types(6).IsEqual(StepType(239))) &&
+              (types(7).IsEqual(StepType(247)))) {
+       return 321;
       }
       else if ((types(1).IsEqual(StepType(43))) &&
-              (types(2).IsEqual(StepType(48))) &&
-              (types(3).IsEqual(StepType(38))) &&
-              (types(4).IsEqual(StepType(84))) &&
-              (types(5).IsEqual(StepType(144))) &&
-              (types(6).IsEqual(StepType(239))) &&
-              (types(7).IsEqual(StepType(247)))) {
-       return 322;
+               (types(2).IsEqual(StepType(48))) &&
+               (types(3).IsEqual(StepType(38))) &&
+               (types(4).IsEqual(StepType(84))) &&
+               (types(5).IsEqual(StepType(144))) &&
+               (types(6).IsEqual(StepType(239))) &&
+               (types(7).IsEqual(StepType(247)))) {
+        return 322;
       }
       else if ((types(1).IsEqual(StepType(49))) &&
-              (types(2).IsEqual(StepType(40))) &&
-              (types(3).IsEqual(StepType(41))) &&
-              (types(4).IsEqual(StepType(144))) &&
-              (types(5).IsEqual(StepType(240))) &&
-              (types(6).IsEqual(StepType(247))) &&
-              (types(7).IsEqual(StepType(271)))) {
-       return 323;
+               (types(2).IsEqual(StepType(40))) &&
+               (types(3).IsEqual(StepType(41))) &&
+               (types(4).IsEqual(StepType(144))) &&
+               (types(5).IsEqual(StepType(240))) &&
+               (types(6).IsEqual(StepType(247))) &&
+               (types(7).IsEqual(StepType(271)))) {
+        return 323;
       }
       else if ((types(1).IsEqual(StepType(49))) &&
-              (types(2).IsEqual(StepType(40))) &&
-              (types(3).IsEqual(StepType(144))) &&
-              (types(4).IsEqual(StepType(240))) &&
-              (types(5).IsEqual(StepType(247))) &&
-              (types(6).IsEqual(StepType(271))) &&
-              (types(7).IsEqual(StepType(312)))) {
-       return 324;
+               (types(2).IsEqual(StepType(40))) &&
+               (types(3).IsEqual(StepType(144))) &&
+               (types(4).IsEqual(StepType(240))) &&
+               (types(5).IsEqual(StepType(247))) &&
+               (types(6).IsEqual(StepType(271))) &&
+               (types(7).IsEqual(StepType(312)))) {
+        return 324;
       }
       else if ((types(1).IsEqual(StepType(49))) &&
-              (types(2).IsEqual(StepType(40))) &&
-              (types(3).IsEqual(StepType(144))) &&
-              (types(4).IsEqual(StepType(237))) &&
-              (types(5).IsEqual(StepType(240))) &&
-              (types(6).IsEqual(StepType(247))) &&
-              (types(7).IsEqual(StepType(271)))) {
-       return 325;
+               (types(2).IsEqual(StepType(40))) &&
+               (types(3).IsEqual(StepType(144))) &&
+               (types(4).IsEqual(StepType(237))) &&
+               (types(5).IsEqual(StepType(240))) &&
+               (types(6).IsEqual(StepType(247))) &&
+               (types(7).IsEqual(StepType(271)))) {
+        return 325;
       }
       else if ((types(1).IsEqual(StepType(44))) &&
-              (types(2).IsEqual(StepType(49))) &&
-              (types(3).IsEqual(StepType(40))) &&
-              (types(4).IsEqual(StepType(144))) &&
-              (types(5).IsEqual(StepType(240))) &&
-              (types(6).IsEqual(StepType(247))) &&
-              (types(7).IsEqual(StepType(271)))) {
-       return 326;
+               (types(2).IsEqual(StepType(49))) &&
+               (types(3).IsEqual(StepType(40))) &&
+               (types(4).IsEqual(StepType(144))) &&
+               (types(5).IsEqual(StepType(240))) &&
+               (types(6).IsEqual(StepType(247))) &&
+               (types(7).IsEqual(StepType(271)))) {
+        return 326;
       }
       else if ((types(1).IsEqual(StepType(40))) &&
-              (types(2).IsEqual(StepType(41))) &&
-              (types(3).IsEqual(StepType(49))) &&
-              (types(4).IsEqual(StepType(144))) &&
-              (types(5).IsEqual(StepType(240))) &&
-              (types(6).IsEqual(StepType(247))) &&
-              (types(7).IsEqual(StepType(271)))) {
-       return 323;
+               (types(2).IsEqual(StepType(41))) &&
+               (types(3).IsEqual(StepType(49))) &&
+               (types(4).IsEqual(StepType(144))) &&
+               (types(5).IsEqual(StepType(240))) &&
+               (types(6).IsEqual(StepType(247))) &&
+               (types(7).IsEqual(StepType(271)))) {
+        return 323;
+      }
+    }
+    // Added by FMA
+    else if (NbComp == 6) {
+      if (types(1).IsEqual(StepType(52))  &&
+          types(2).IsEqual(StepType(134)) &&
+          types(3).IsEqual(StepType(144)) &&
+          types(4).IsEqual(StepType(162)) &&
+          types(5).IsEqual(StepType(247)) &&
+          types(6).IsEqual(StepType(266))) {
+        return 337;
+      }
+    }
+    else if (NbComp == 5) {
+      //:n5 abv 15 Feb 99: S4132 complex type bounded_curve + surface_curve
+      if ((types(1).IsEqual(StepType(48))) &&
+          (types(2).IsEqual(StepType(84))) &&
+          (types(3).IsEqual(StepType(144))) &&
+          (types(4).IsEqual(StepType(247))) &&
+          (types(5).IsEqual(StepType(272)))) {
+        return 358;
+      }
+      else if ((types(1).IsEqual(StepType(157))) &&
+               (types(2).IsEqual(StepType(406))) &&
+               (types(3).IsEqual(StepType(165))) &&
+               (types(4).IsEqual(StepType(480))) &&
+               (types(5).IsEqual(StepType(247)))) {
+        return 692;
+      }
+      else if ((types(1).IsEqual(StepType(406))) &&
+               (types(2).IsEqual(StepType(165))) &&
+               (types(3).IsEqual(StepType(200))) &&
+               (types(4).IsEqual(StepType(480))) &&
+               (types(5).IsEqual(StepType(247)))) {
+        return 693;
+      }
+    }
+    else if (NbComp == 4) {
+      if ((types(1).IsEqual(StepType(161))) &&
+          (types(2).IsEqual(StepType(189))) &&
+          (types(3).IsEqual(StepType(247))) &&
+          (types(4).IsEqual(StepType(304)))) {
+        return 332;
+      }
+      // Added by FMA
+      else if ((types(1).IsEqual(StepType(143)) &&
+                types(2).IsEqual(StepType(148)) &&
+                types(3).IsEqual(StepType(149)) &&
+                types(4).IsEqual(StepType(246)))) {
+        return 333;
+      }
+
+      else if ((types(1).IsEqual(StepType(157))) &&
+               (types(2).IsEqual(StepType(406))) &&
+               (types(3).IsEqual(StepType(165))) &&
+               (types(4).IsEqual(StepType(247)))) {
+        return 635;
+      }
+      else if ((types(1).IsEqual(StepType(625))) &&
+               (types(2).IsEqual(StepType(627))) &&
+               (types(3).IsEqual(StepType(628))) &&
+               (types(4).IsEqual(StepType(619)))) {
+        return 636;
+      }
+      else if ((types(1).IsEqual(StepType(406))) &&
+               (types(2).IsEqual(StepType(165))) &&
+               (types(3).IsEqual(StepType(200))) &&
+               (types(4).IsEqual(StepType(247)))) {
+        return 691;
+      }
+      else if (((types(1).IsEqual(StepType(609)) ||
+                 types(1).IsEqual(StepType(611)) ||
+                 types(1).IsEqual(StepType(612)) ||
+                 types(1).IsEqual(StepType(613)) ||
+                 types(1).IsEqual(StepType(614)) ||
+                 types(1).IsEqual(StepType(615))) &&
+                types(2).IsEqual(StepType(625)) &&
+                types(3).IsEqual(StepType(627)) &&
+                types(4).IsEqual(StepType(676)))
+                ||
+               (types(1).IsEqual(StepType(625)) &&
+                types(2).IsEqual(StepType(627)) &&
+                types(3).IsEqual(StepType(676)) &&
+                (types(4).IsEqual(StepType(616)) ||
+                 types(4).IsEqual(StepType(617)) ||
+                 types(4).IsEqual(StepType(618)) ||
+                 types(4).IsEqual(StepType(619)) ||
+                 types(4).IsEqual(StepType(620)) ||
+                 types(4).IsEqual(StepType(621)) ||
+                 types(4).IsEqual(StepType(622)) ||
+                 types(4).IsEqual(StepType(623)) ||
+                 types(4).IsEqual(StepType(624))))) {
+        return 695;
+      }
+      else if (((types(1).IsEqual(StepType(609)) ||
+                 types(1).IsEqual(StepType(611)) ||
+                 types(1).IsEqual(StepType(612)) ||
+                 types(1).IsEqual(StepType(613)) ||
+                 types(1).IsEqual(StepType(614)) ||
+                 types(1).IsEqual(StepType(615))) &&
+                types(2).IsEqual(StepType(625)) &&
+                types(3).IsEqual(StepType(627)) &&
+                types(4).IsEqual(StepType(677)))
+                ||
+               (types(1).IsEqual(StepType(625)) &&
+                types(2).IsEqual(StepType(627)) &&
+                types(4).IsEqual(StepType(677)) &&
+                (types(3).IsEqual(StepType(616)) ||
+                 types(3).IsEqual(StepType(617)) ||
+                 types(3).IsEqual(StepType(618)) ||
+                 types(3).IsEqual(StepType(619)) ||
+                 types(3).IsEqual(StepType(620)) ||
+                 types(3).IsEqual(StepType(621)) ||
+                 types(3).IsEqual(StepType(622)) ||
+                 types(3).IsEqual(StepType(623)) ||
+                 types(3).IsEqual(StepType(624))))) {
+        return 697;
+      }
+      else if (types(1).IsEqual(StepType(671)) &&
+               types(2).IsEqual(StepType(470)) &&
+               types(3).IsEqual(StepType(630)) &&
+               types(4).IsEqual(StepType(258))) {
+        return 698;
       }
     }
-    if (NbComp == 3) {
+    else if (NbComp == 3) {
       if ((types(1).IsEqual(StepType(158))) &&
-         (types(2).IsEqual(StepType(169))) &&
-         (types(3).IsEqual(StepType(264)))) {
-       return 327;
+          (types(2).IsEqual(StepType(169))) &&
+          (types(3).IsEqual(StepType(264)))) {
+        return 327;
       } //pdn t3d_opt
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(264))) &&
-              (types(3).IsEqual(StepType(158)))) {
-       return 327;
+               (types(2).IsEqual(StepType(264))) &&
+               (types(3).IsEqual(StepType(158)))) {
+        return 327;
       }
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(201))) &&
-              (types(3).IsEqual(StepType(264)))) {
-       return 328;
+               (types(2).IsEqual(StepType(201))) &&
+               (types(3).IsEqual(StepType(264)))) {
+        return 328;
       }
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(158))) &&
-              (types(3).IsEqual(StepType(169)))) {
-       return 329;
+               (types(2).IsEqual(StepType(158))) &&
+               (types(3).IsEqual(StepType(169)))) {
+        return 329;
       }
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(169))) &&
-              (types(3).IsEqual(StepType(201)))) {
-       return 330;
+               (types(2).IsEqual(StepType(169))) &&
+               (types(3).IsEqual(StepType(201)))) {
+        return 330;
       }
       else if ((types(1).IsEqual(StepType(143))) &&
-              (types(2).IsEqual(StepType(149))) &&
-              (types(3).IsEqual(StepType(246)))) {
-       return 331;
+               (types(2).IsEqual(StepType(149))) &&
+               (types(3).IsEqual(StepType(246)))) {
+        return 331;
       }
       // Added by FMA
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(169))) &&
-              (types(3).IsEqual(StepType(336)))) {
-       return 334;
+               (types(2).IsEqual(StepType(169))) &&
+               (types(3).IsEqual(StepType(336)))) {
+        return 334;
       }
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(264))) &&
-              (types(3).IsEqual(StepType(336)))) {
-       return 335;
+               (types(2).IsEqual(StepType(264))) &&
+               (types(3).IsEqual(StepType(336)))) {
+        return 335;
       }
       else if ((types(1).IsEqual(StepType(143))) &&
-              (types(2).IsEqual(StepType(188))) &&
-              (types(3).IsEqual(StepType(246)))) {
-       return 338;
+               (types(2).IsEqual(StepType(188))) &&
+               (types(3).IsEqual(StepType(246)))) {
+        return 338;
       }
       // full Rev4 (CKY 30-MARS-1997)
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(342))) &&
-              (types(3).IsEqual(StepType(264)))) {
-       return 344;
+               (types(2).IsEqual(StepType(342))) &&
+               (types(3).IsEqual(StepType(264)))) {
+        return 344;
       }
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(264))) &&
-              (types(3).IsEqual(StepType(343)))) {
-       return 345;
+               (types(2).IsEqual(StepType(264))) &&
+               (types(3).IsEqual(StepType(343)))) {
+        return 345;
       }
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(169))) &&
-              (types(3).IsEqual(StepType(342)))) {
-       return 346;
+               (types(2).IsEqual(StepType(169))) &&
+               (types(3).IsEqual(StepType(342)))) {
+        return 346;
       }
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(169))) &&
-              (types(3).IsEqual(StepType(343)))) {
-       return 347;
+               (types(2).IsEqual(StepType(169))) &&
+               (types(3).IsEqual(StepType(343)))) {
+        return 347;
       }
       else if ((types(1).IsEqual(StepType(157))) &&
-              (types(2).IsEqual(StepType(165))) &&
-              (types(3).IsEqual(StepType(310)))) {
-       return 357; // LECTURE SEULEMENT (READ ONLY), origine CATIA. CKY 2-SEP-1997
+               (types(2).IsEqual(StepType(165))) &&
+               (types(3).IsEqual(StepType(310)))) {
+        return 357; // LECTURE SEULEMENT (READ ONLY), origine CATIA. CKY 2-SEP-1997
       }
 //      Additional non-alphabetic (CKY 5 MAI 1998)
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(158))) &&
-              (types(3).IsEqual(StepType(264)))) {
-       return 327;
+               (types(2).IsEqual(StepType(158))) &&
+               (types(3).IsEqual(StepType(264)))) {
+        return 327;
       }
 //      CC1 -> CC2 (CKY 1-JUL-1998)
       else if ((types(1).IsEqual(StepType(249))) &&
-              (types(2).IsEqual(StepType(388))) &&
-              (types(3).IsEqual(StepType(387)))) {
-       return 389;
+               (types(2).IsEqual(StepType(388))) &&
+               (types(3).IsEqual(StepType(387)))) {
+        return 389;
       }
       else if ((types(1).IsEqual(StepType(407))) &&
-              (types(2).IsEqual(StepType(169))) &&
-              (types(3).IsEqual(StepType(264)))) {
-       return 409;
+               (types(2).IsEqual(StepType(169))) &&
+               (types(3).IsEqual(StepType(264)))) {
+        return 409;
       }
       else if ((types(1).IsEqual(StepType(169))) &&
-              (types(2).IsEqual(StepType(264))) &&
-              (types(3).IsEqual(StepType(408)))) {
-       return 410;
+               (types(2).IsEqual(StepType(264))) &&
+               (types(3).IsEqual(StepType(408)))) {
+        return 410;
       }
       else if ((types(1).IsEqual(StepType(407))) &&
-              (types(2).IsEqual(StepType(79)))  &&
-              (types(3).IsEqual(StepType(169)))) {
-       return 411;
+               (types(2).IsEqual(StepType(79)))  &&
+               (types(3).IsEqual(StepType(169)))) {
+        return 411;
       }
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(169)))  &&
-              (types(3).IsEqual(StepType(408)))) {
-       return 412;
+               (types(2).IsEqual(StepType(169)))  &&
+               (types(3).IsEqual(StepType(408)))) {
+        return 412;
       }
       // abv 11.07.00: CAX-IF TRJ4: k1_geo-ac.stp
       else if ((types(1).IsEqual(StepType(98))) &&
-              (types(2).IsEqual(StepType(245))) &&
-              (types(3).IsEqual(StepType(262)))) {
-       return 463;
+               (types(2).IsEqual(StepType(245))) &&
+               (types(3).IsEqual(StepType(262)))) {
+        return 463;
       }
       // CKY 25 APR 2001; CAX-IF TR7J (dim.tol.)
       else if ((types(1).IsEqual(StepType(406))) &&
-              (types(2).IsEqual(StepType(480))) &&
-              (types(3).IsEqual(StepType(247)))) {
-       return 481;
+               (types(2).IsEqual(StepType(480))) &&
+               (types(3).IsEqual(StepType(247)))) {
+        return 481;
       }
       else if ((types(1).IsEqual(StepType(501))) &&
                (types(2).IsEqual(StepType(169))) &&
                (types(3).IsEqual(StepType(264)))) {
-       return 574;
+        return 574;
       }
       else if ((types(1).IsEqual(StepType(169))) &&
                (types(2).IsEqual(StepType(264))) &&
                (types(3).IsEqual(StepType(502)))) {
-       return 578;
+        return 578;
       }
       else if ((types(1).IsEqual(StepType(79))) &&
-              (types(2).IsEqual(StepType(501))) &&
-              (types(3).IsEqual(StepType(169)))) {
-       return 650;
+               (types(2).IsEqual(StepType(501))) &&
+               (types(3).IsEqual(StepType(169)))) {
+        return 650;
       }
-    }
-    if (NbComp == 4) {
-      if ((types(1).IsEqual(StepType(161))) &&
-         (types(2).IsEqual(StepType(189))) &&
-         (types(3).IsEqual(StepType(247))) &&
-         (types(4).IsEqual(StepType(304)))) {
-       return 332;
-      }
-      // Added by FMA
-      else if ((types(1).IsEqual(StepType(143)) &&
-               types(2).IsEqual(StepType(148)) &&
-               types(3).IsEqual(StepType(149)) &&
-               types(4).IsEqual(StepType(246)))) {
-       return 333;
-      }
-    }
-    // Added by FMA
-    if (NbComp == 6) {
-      if (types(1).IsEqual(StepType(52))  &&
-         types(2).IsEqual(StepType(134)) &&
-         types(3).IsEqual(StepType(144)) &&
-         types(4).IsEqual(StepType(162)) &&
-         types(5).IsEqual(StepType(247)) &&
-         types(6).IsEqual(StepType(266))) {
-       return 337;
-      }
-    }
-    else if (NbComp == 5) {
-      //:n5 abv 15 Feb 99: S4132 complex type bounded_curve + surface_curve
-      if ((types(1).IsEqual(StepType(48))) &&
-         (types(2).IsEqual(StepType(84))) &&
-         (types(3).IsEqual(StepType(144))) &&
-         (types(4).IsEqual(StepType(247))) &&
-         (types(5).IsEqual(StepType(272)))) {
-       return 358;
+      else if (((types(1).IsEqual(StepType(609)) ||
+                 types(1).IsEqual(StepType(611)) ||
+                 types(1).IsEqual(StepType(612)) ||
+                 types(1).IsEqual(StepType(613)) ||
+                 types(1).IsEqual(StepType(614)) ||
+                 types(1).IsEqual(StepType(615))) &&
+                types(2).IsEqual(StepType(625)) &&
+                types(3).IsEqual(StepType(627)))
+                ||
+               (types(1).IsEqual(StepType(625)) &&
+                types(2).IsEqual(StepType(627)) &&
+                (types(3).IsEqual(StepType(616)) ||
+                 types(3).IsEqual(StepType(617)) ||
+                 types(3).IsEqual(StepType(618)) ||
+                 types(3).IsEqual(StepType(619)) ||
+                 types(3).IsEqual(StepType(620)) ||
+                 types(3).IsEqual(StepType(621)) ||
+                 types(3).IsEqual(StepType(622)) ||
+                 types(3).IsEqual(StepType(623)) ||
+                 types(3).IsEqual(StepType(624))))) {
+        return 694;
       }
-    }
-    else if (NbComp == 4) {
-      if ((types(1).IsEqual(StepType(157))) &&
-         (types(2).IsEqual(StepType(406))) &&
-         (types(3).IsEqual(StepType(165))) &&
-         (types(4).IsEqual(StepType(247)))) {
-       return 635;
+      else if (((types(1).IsEqual(StepType(609)) ||
+                 types(1).IsEqual(StepType(611)) ||
+                 types(1).IsEqual(StepType(612)) ||
+                 types(1).IsEqual(StepType(613)) ||
+                 types(1).IsEqual(StepType(614)) ||
+                 types(1).IsEqual(StepType(615))) &&
+                types(2).IsEqual(StepType(625)) &&
+                types(3).IsEqual(StepType(676)))
+                ||
+               (types(1).IsEqual(StepType(625)) &&
+                types(2).IsEqual(StepType(676)) &&
+                (types(3).IsEqual(StepType(616)) ||
+                 types(3).IsEqual(StepType(617)) ||
+                 types(3).IsEqual(StepType(618)) ||
+                 types(3).IsEqual(StepType(619)) ||
+                 types(3).IsEqual(StepType(620)) ||
+                 types(3).IsEqual(StepType(621)) ||
+                 types(3).IsEqual(StepType(622)) ||
+                 types(3).IsEqual(StepType(623)) ||
+                 types(3).IsEqual(StepType(624))))) {
+        return 696;
       }
-      if ((types(1).IsEqual(StepType(625))) &&
-         (types(2).IsEqual(StepType(627))) &&
-         (types(3).IsEqual(StepType(628))) &&
-         (types(4).IsEqual(StepType(619)))) {
-       return 636;
+      else if (types(1).IsEqual(StepType(470)) &&
+               types(2).IsEqual(StepType(630)) &&
+               types(3).IsEqual(StepType(258))) {
+        return 699;
       }
     }
     return 0;
@@ -3205,6 +3487,24 @@ Standard_Boolean RWStepAP214_ReadWriteModule::IsComplex
       return Standard_True;
     case 650:
       return Standard_True;
+    case 691:
+      return Standard_True;
+    case 692:
+      return Standard_True;
+    case 693:
+      return Standard_True;
+    case 694:
+      return Standard_True;
+    case 695:
+      return Standard_True;
+    case 696:
+      return Standard_True;
+    case 697:
+      return Standard_True;
+    case 698:
+      return Standard_True;
+    case 699:
+      return Standard_True;
     default:
       return Standard_False;
     }
@@ -3785,6 +4085,7 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
   case 601: return Reco_DocumentProductEquivalence;
 
   // Added by SKL 18.06.2003 for Dimensional Tolerances (CAX-IF TRJ11)
+  case 609: return Reco_CylindricityTolerance;
   case 610: return Reco_ShapeRepresentationWithParameters;
   case 611: return Reco_AngularityTolerance;
   case 612: return Reco_ConcentricityTolerance;
@@ -3813,6 +4114,41 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
 
   case 651 : return Reco_MassMeasureWithUnit;
 
+  // Added by ika for GD&T AP242
+  case 660: return Reco_Apex;
+  case 661: return Reco_CentreOfSymmetry;
+  case 662: return Reco_GeometricAlignment;
+  case 663: return Reco_PerpendicularTo;
+  case 664: return Reco_Tangent;
+  case 665: return Reco_ParallelOffset;
+  case 666: return Reco_GeometricItemSpecificUsage;
+  case 667: return Reco_IdAttribute;
+  case 668: return Reco_ItemIdentifiedRepresentationUsage;
+  case 669: return Reco_AllAroundShapeAspect;
+  case 670: return Reco_BetweenShapeAspect;
+  case 671: return Reco_CompositeGroupShapeAspect;
+  case 672: return Reco_ContinuosShapeAspect;
+  case 673: return Reco_GeometricToleranceWithDefinedAreaUnit;
+  case 674: return Reco_GeometricToleranceWithDefinedUnit;
+  case 675: return Reco_GeometricToleranceWithMaximumTolerance;
+  case 676: return Reco_GeometricToleranceWithModifiers;
+  case 677: return Reco_UnequallyDisposedGeometricTolerance;
+  case 678: return Reco_NonUniformZoneDefinition;
+  case 679: return Reco_ProjectedZoneDefinition;
+  case 680: return Reco_RunoutZoneDefinition;
+  case 681: return Reco_RunoutZoneOrientation;
+  case 682: return Reco_ToleranceZone;
+  case 683: return Reco_ToleranceZoneDefinition;
+  case 684: return Reco_ToleranceZoneForm;
+  case 685: return Reco_ValueFormatTypeQualifier;
+  case 686: return Reco_DatumReferenceCompartment;
+  case 687: return Reco_DatumReferenceElement;
+  case 688: return Reco_DatumReferenceModifierWithValue;
+  case 689: return Reco_DatumSystem;
+  case 690: return Reco_GeneralDatumReference;
+  case 700: return Reco_IntegerRepresentationItem;
+  case 701: return Reco_ValueRepresentationItem;
+
   default : return PasReco;
   }
 }
@@ -4054,7 +4390,60 @@ Standard_Boolean RWStepAP214_ReadWriteModule::ComplexType(const Standard_Integer
       types.Append (StepType(501));
       types.Append (StepType(169));
       break;
+    case 691:
+      types.Append (StepType(406));
+      types.Append (StepType(165));
+      types.Append (StepType(200));
+      types.Append (StepType(247));
+      break;
+    case 692:
+      types.Append (StepType(157));
+      types.Append (StepType(406));
+      types.Append (StepType(165));
+      types.Append (StepType(480));
+      types.Append (StepType(247));
+      break;
+    case 693:
+      types.Append (StepType(406));
+      types.Append (StepType(165));
+      types.Append (StepType(200));
+      types.Append (StepType(480));
+      types.Append (StepType(247));
+      break;
+    case 694:
+      types.Append (StepType(625));
+      types.Append (StepType(627));
+      types.Append (StepType(625));
+      break;
+    case 695:
+      types.Append (StepType(625));
+      types.Append (StepType(627));
+      types.Append (StepType(676));
+      types.Append (StepType(625));
+      break;
+    case 696:
+      types.Append (StepType(625));
+      types.Append (StepType(676));
+      types.Append (StepType(625));
+      break;
+    case 697:
+      types.Append (StepType(625));
+      types.Append (StepType(627));
+      types.Append (StepType(625));
+      types.Append (StepType(677));
+      break;
       default : return Standard_False;
+    case 698:
+      types.Append (StepType(671));
+      types.Append (StepType(470));
+      types.Append (StepType(630));
+      types.Append (StepType(258));
+      break;
+    case 699:
+      types.Append (StepType(470));
+      types.Append (StepType(630));
+      types.Append (StepType(258));
+      break;
     }
   return Standard_True;
 }
@@ -7184,11 +7573,23 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
 
       // Added by CKY 25 APR 2001 for CAX-IF TRJ7 (dimensional tolerances)
   case 470:
+    {
+      DeclareAndCast(StepRepr_CompositeShapeAspect,anent,ent);
+      RWStepRepr_RWCompositeShapeAspect tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
   case 471:
-  case 472:  // same as ShapeAspect
     {
-      DeclareAndCast(StepRepr_ShapeAspect,anent,ent);
-      RWStepRepr_RWShapeAspect tool;
+      DeclareAndCast(StepRepr_DerivedShapeAspect,anent,ent);
+      RWStepRepr_RWDerivedShapeAspect tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 472:
+    {
+      DeclareAndCast(StepRepr_Extension,anent,ent);
+      RWStepRepr_RWExtension tool;
       tool.ReadStep (data,num,ach,anent);
     }
     break;
@@ -7962,6 +8363,13 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
       tool.ReadStep (data,num,ach,anent);
     }
     break; 
+  case 609:
+    {
+      DeclareAndCast(StepDimTol_CylindricityTolerance,anent,ent);
+      RWStepDimTol_RWCylindricityTolerance tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
   case 610:  
     {
       DeclareAndCast(StepShape_ShapeRepresentationWithParameters,anent,ent);
@@ -8165,6 +8573,300 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
       tool.ReadStep (data,num,ach,anent);
     }
     break;
+  case 660 :
+    {
+      DeclareAndCast(StepRepr_Apex, anent, ent);
+      RWStepRepr_RWApex tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 661 :
+    {
+      DeclareAndCast(StepRepr_CentreOfSymmetry, anent, ent);
+      RWStepRepr_RWCentreOfSymmetry tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 662 :
+    {
+      DeclareAndCast(StepRepr_GeometricAlignment, anent, ent);
+      RWStepRepr_RWGeometricAlignment tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 663 :
+    {
+      DeclareAndCast(StepRepr_PerpendicularTo, anent, ent);
+      RWStepRepr_RWPerpendicularTo tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 664 :
+    {
+      DeclareAndCast(StepRepr_Tangent, anent, ent);
+      RWStepRepr_RWTangent tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 665 :
+    {
+      DeclareAndCast(StepRepr_ParallelOffset, anent, ent);
+      RWStepRepr_RWParallelOffset tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 666 :
+    {
+      DeclareAndCast(StepAP242_GeometricItemSpecificUsage, anent, ent);
+      RWStepAP242_RWGeometricItemSpecificUsage tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 667 :
+    {
+      DeclareAndCast(StepAP242_IdAttribute, anent, ent);
+      RWStepAP242_RWIdAttribute tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 668 :
+    {
+      DeclareAndCast(StepAP242_ItemIdentifiedRepresentationUsage, anent, ent);
+      RWStepAP242_RWItemIdentifiedRepresentationUsage tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 669 :
+    {
+      DeclareAndCast(StepRepr_AllAroundShapeAspect, anent, ent);
+      RWStepRepr_RWAllAroundShapeAspect tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 670 :
+    {
+      DeclareAndCast(StepRepr_BetweenShapeAspect, anent, ent);
+      RWStepRepr_RWBetweenShapeAspect tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 671 :
+    {
+      DeclareAndCast(StepRepr_CompositeGroupShapeAspect, anent, ent);
+      RWStepRepr_RWCompositeGroupShapeAspect tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 672 :
+    {
+      DeclareAndCast(StepRepr_ContinuosShapeAspect, anent, ent);
+      RWStepRepr_RWContinuosShapeAspect tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 673 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithDefinedAreaUnit, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 674 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithDefinedUnit, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithDefinedUnit tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 675 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithMaximumTolerance, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithMaximumTolerance tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 676 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithModifiers, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithModifiers tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 677 :
+    {
+      DeclareAndCast(StepDimTol_UnequallyDisposedGeometricTolerance, anent, ent);
+      RWStepDimTol_RWUnequallyDisposedGeometricTolerance tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 678 :
+    {
+      DeclareAndCast(StepDimTol_NonUniformZoneDefinition, anent, ent);
+      RWStepDimTol_RWNonUniformZoneDefinition tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 679 :
+    {
+      DeclareAndCast(StepDimTol_ProjectedZoneDefinition, anent, ent);
+      RWStepDimTol_RWProjectedZoneDefinition tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 680 :
+    {
+      DeclareAndCast(StepDimTol_RunoutZoneDefinition, anent, ent);
+      RWStepDimTol_RWRunoutZoneDefinition tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 681 :
+    {
+      DeclareAndCast(StepDimTol_RunoutZoneOrientation, anent, ent);
+      RWStepDimTol_RWRunoutZoneOrientation tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 682 :
+    {
+      DeclareAndCast(StepDimTol_ToleranceZone, anent, ent);
+      RWStepDimTol_RWToleranceZone tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 683 :
+    {
+      DeclareAndCast(StepDimTol_ToleranceZoneDefinition, anent, ent);
+      RWStepDimTol_RWToleranceZoneDefinition tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 684 :
+    {
+      DeclareAndCast(StepDimTol_ToleranceZoneForm, anent, ent);
+      RWStepDimTol_RWToleranceZoneForm tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 685 :
+    {
+      DeclareAndCast(StepShape_ValueFormatTypeQualifier, anent, ent);
+      RWStepShape_RWValueFormatTypeQualifier tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 686 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceCompartment, anent, ent);
+      RWStepDimTol_RWDatumReferenceCompartment tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 687 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceElement, anent, ent);
+      RWStepDimTol_RWDatumReferenceElement tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 688 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceModifierWithValue, anent, ent);
+      RWStepDimTol_RWDatumReferenceModifierWithValue tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 689 :
+    {
+      DeclareAndCast(StepDimTol_DatumSystem, anent, ent);
+      RWStepDimTol_RWDatumSystem tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 690 :
+    {
+      DeclareAndCast(StepDimTol_GeneralDatumReference, anent, ent);
+      RWStepDimTol_RWGeneralDatumReference tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 691:
+    {
+      DeclareAndCast(StepRepr_ReprItemAndPlaneAngleMeasureWithUnit,anent,ent);
+      RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnit tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 692:
+    {
+      DeclareAndCast(StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI,anent,ent);
+      RWStepRepr_RWReprItemAndLengthMeasureWithUnitAndQRI tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 693:
+    {
+      DeclareAndCast(StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI,anent,ent);
+      RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnitAndQRI tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 694:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRef,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRef tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 695:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 696:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthMod,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthMod tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 697:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 698:
+    {
+      DeclareAndCast(StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp,anent,ent);
+      RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 699:
+    {
+      DeclareAndCast(StepRepr_CompShAspAndDatumFeatAndShAsp,anent,ent);
+      RWStepRepr_RWCompShAspAndDatumFeatAndShAsp tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 700:
+    {
+      DeclareAndCast(StepRepr_IntegerRepresentationItem,anent,ent);
+      RWStepRepr_RWIntegerRepresentationItem tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 701:
+    {
+      DeclareAndCast(StepRepr_ValueRepresentationItem,anent,ent);
+      RWStepRepr_RWValueRepresentationItem tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
 
   default: 
     ach->AddFail("Type Mismatch when reading - Entity");
@@ -11574,11 +12276,23 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
 
       // Added by CKY 25 APR 2001 for CAX-IF TRJ7 (dimensional tolerances)
   case 470:
+    {
+      DeclareAndCast(StepRepr_CompositeShapeAspect,anent,ent);
+      RWStepRepr_RWCompositeShapeAspect tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
   case 471:
-  case 472:  // same as ShapeAspect
     {
-      DeclareAndCast(StepRepr_ShapeAspect,anent,ent);
-      RWStepRepr_RWShapeAspect tool;
+      DeclareAndCast(StepRepr_DerivedShapeAspect,anent,ent);
+      RWStepRepr_RWDerivedShapeAspect tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 472:
+    {
+      DeclareAndCast(StepRepr_Extension,anent,ent);
+      RWStepRepr_RWExtension tool;
       tool.WriteStep (SW,anent);
     }
     break;
@@ -12349,6 +13063,13 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
       tool.WriteStep (SW,anent);
     }
     break;
+  case 609:
+    {
+      DeclareAndCast(StepDimTol_CylindricityTolerance,anent,ent);
+      RWStepDimTol_RWCylindricityTolerance tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
   case 610:
     {
       DeclareAndCast(StepShape_ShapeRepresentationWithParameters,anent,ent);
@@ -12553,6 +13274,300 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
       tool.WriteStep (SW,anent);
     }
     break;
+  case 660 :
+    {
+      DeclareAndCast(StepRepr_Apex, anent, ent);
+      RWStepRepr_RWApex tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 661 :
+    {
+      DeclareAndCast(StepRepr_CentreOfSymmetry, anent, ent);
+      RWStepRepr_RWCentreOfSymmetry tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 662 :
+    {
+      DeclareAndCast(StepRepr_GeometricAlignment, anent, ent);
+      RWStepRepr_RWGeometricAlignment tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 663 :
+    {
+      DeclareAndCast(StepRepr_PerpendicularTo, anent, ent);
+      RWStepRepr_RWPerpendicularTo tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 664 :
+    {
+      DeclareAndCast(StepRepr_Tangent, anent, ent);
+      RWStepRepr_RWTangent tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 665 :
+    {
+      DeclareAndCast(StepRepr_ParallelOffset, anent, ent);
+      RWStepRepr_RWParallelOffset tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 666 :
+    {
+      DeclareAndCast(StepAP242_GeometricItemSpecificUsage, anent, ent);
+      RWStepAP242_RWGeometricItemSpecificUsage tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 667 :
+    {
+      DeclareAndCast(StepAP242_IdAttribute, anent, ent);
+      RWStepAP242_RWIdAttribute tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 668 :
+    {
+      DeclareAndCast(StepAP242_ItemIdentifiedRepresentationUsage, anent, ent);
+      RWStepAP242_RWItemIdentifiedRepresentationUsage tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 669 :
+    {
+      DeclareAndCast(StepRepr_AllAroundShapeAspect, anent, ent);
+      RWStepRepr_RWAllAroundShapeAspect tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 670 :
+    {
+      DeclareAndCast(StepRepr_BetweenShapeAspect, anent, ent);
+      RWStepRepr_RWBetweenShapeAspect tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 671 :
+    {
+      DeclareAndCast(StepRepr_CompositeGroupShapeAspect, anent, ent);
+      RWStepRepr_RWCompositeGroupShapeAspect tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 672 :
+    {
+      DeclareAndCast(StepRepr_ContinuosShapeAspect, anent, ent);
+      RWStepRepr_RWContinuosShapeAspect tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 673 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithDefinedAreaUnit, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 674 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithDefinedUnit, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithDefinedUnit tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 675 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithMaximumTolerance, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithMaximumTolerance tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 676 :
+    {
+      DeclareAndCast(StepDimTol_GeometricToleranceWithModifiers, anent, ent);
+      RWStepDimTol_RWGeometricToleranceWithModifiers tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 677 :
+    {
+      DeclareAndCast(StepDimTol_UnequallyDisposedGeometricTolerance, anent, ent);
+      RWStepDimTol_RWUnequallyDisposedGeometricTolerance tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 678 :
+    {
+      DeclareAndCast(StepDimTol_NonUniformZoneDefinition, anent, ent);
+      RWStepDimTol_RWNonUniformZoneDefinition tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 679 :
+    {
+      DeclareAndCast(StepDimTol_ProjectedZoneDefinition, anent, ent);
+      RWStepDimTol_RWProjectedZoneDefinition tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 680 :
+    {
+      DeclareAndCast(StepDimTol_RunoutZoneDefinition, anent, ent);
+      RWStepDimTol_RWRunoutZoneDefinition tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 681 :
+    {
+      DeclareAndCast(StepDimTol_RunoutZoneOrientation, anent, ent);
+      RWStepDimTol_RWRunoutZoneOrientation tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 682 :
+    {
+      DeclareAndCast(StepDimTol_ToleranceZone, anent, ent);
+      RWStepDimTol_RWToleranceZone tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 683 :
+    {
+      DeclareAndCast(StepDimTol_ToleranceZoneDefinition, anent, ent);
+      RWStepDimTol_RWToleranceZoneDefinition tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 684 :
+    {
+      DeclareAndCast(StepDimTol_ToleranceZoneForm, anent, ent);
+      RWStepDimTol_RWToleranceZoneForm tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 685 :
+    {
+      DeclareAndCast(StepShape_ValueFormatTypeQualifier, anent, ent);
+      RWStepShape_RWValueFormatTypeQualifier tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 686 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceCompartment, anent, ent);
+      RWStepDimTol_RWDatumReferenceCompartment tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 687 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceElement, anent, ent);
+      RWStepDimTol_RWDatumReferenceElement tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 688 :
+    {
+      DeclareAndCast(StepDimTol_DatumReferenceModifierWithValue, anent, ent);
+      RWStepDimTol_RWDatumReferenceModifierWithValue tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 689 :
+    {
+      DeclareAndCast(StepDimTol_DatumSystem, anent, ent);
+      RWStepDimTol_RWDatumSystem tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 690 :
+    {
+      DeclareAndCast(StepDimTol_GeneralDatumReference, anent, ent);
+      RWStepDimTol_RWGeneralDatumReference tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 691:
+    {
+      DeclareAndCast(StepRepr_ReprItemAndPlaneAngleMeasureWithUnit,anent,ent);
+      RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnit tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 692:
+    {
+      DeclareAndCast(StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI,anent,ent);
+      RWStepRepr_RWReprItemAndLengthMeasureWithUnitAndQRI tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 693:
+    {
+      DeclareAndCast(StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI,anent,ent);
+      RWStepRepr_RWReprItemAndPlaneAngleMeasureWithUnitAndQRI tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 694:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRef,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRef tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 695:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 696:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthMod,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthMod tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 697:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 698:
+    {
+      DeclareAndCast(StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp,anent,ent);
+      RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 699:
+    {
+      DeclareAndCast(StepRepr_CompShAspAndDatumFeatAndShAsp,anent,ent);
+      RWStepRepr_RWCompShAspAndDatumFeatAndShAsp tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 700:
+    {
+      DeclareAndCast(StepRepr_IntegerRepresentationItem,anent,ent);
+      RWStepRepr_RWIntegerRepresentationItem tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 701:
+    {
+      DeclareAndCast(StepRepr_ValueRepresentationItem,anent,ent);
+      RWStepRepr_RWValueRepresentationItem tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
 
   default: 
     return;
diff --git a/src/RWStepAP242/FILES b/src/RWStepAP242/FILES
new file mode 100644 (file)
index 0000000..bf94f4d
--- /dev/null
@@ -0,0 +1,6 @@
+RWStepAP242_RWGeometricItemSpecificUsage.cxx
+RWStepAP242_RWGeometricItemSpecificUsage.hxx
+RWStepAP242_RWIdAttribute.cxx
+RWStepAP242_RWIdAttribute.hxx
+RWStepAP242_RWItemIdentifiedRepresentationUsage.cxx
+RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx
diff --git a/src/RWStepAP242/RWStepAP242_RWGeometricItemSpecificUsage.cxx b/src/RWStepAP242/RWStepAP242_RWGeometricItemSpecificUsage.cxx
new file mode 100644 (file)
index 0000000..13e6ce9
--- /dev/null
@@ -0,0 +1,115 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepAP242_RWGeometricItemSpecificUsage.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepAP242_GeometricItemSpecificUsage.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_Representation.hxx>
+
+
+RWStepAP242_RWGeometricItemSpecificUsage::RWStepAP242_RWGeometricItemSpecificUsage () {}
+
+void RWStepAP242_RWGeometricItemSpecificUsage::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepAP242_GeometricItemSpecificUsage)& ent) const
+{
+
+
+  // --- Number of Parameter Control ---
+
+  if (!data->CheckNbParams(num,5,ach,"geometric_item_specific_usage")) return;
+
+  // Inherited fields of ItemIdentifiedRepresentationUsage
+
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num,1,"item_identified_representation_usage.name",ach,aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  if (data->IsParamDefined (num,2)) {
+    data->ReadString (num,2,"item_identified_representation_usage.description",ach,aDescription);
+  }
+
+  StepAP242_ItemIdentifiedRepresentationUsageDefinition aDefinition;
+  data->ReadEntity(num,3,"item_identified_representation_usage.definition",ach,aDefinition);
+
+  Handle(StepRepr_Representation) aRepresentation;
+  data->ReadEntity (num,4,"item_identified_representation_usage.used_representation",ach,STANDARD_TYPE(StepRepr_Representation), aRepresentation);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) anItems;
+  Handle(StepRepr_RepresentationItem) anEnt;
+  Standard_Integer nbSub;
+  Interface_ParamType aType = data->ParamType(num, 5);
+  if (aType == Interface_ParamIdent) {
+    data->ReadEntity(num, 5,"item_identified_representation_usage.identified_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anEnt);
+    anItems = new StepRepr_HArray1OfRepresentationItem (1, 1);
+    anItems->SetValue(1, anEnt);
+  }
+  else if (data->ReadSubList (num,5,"item_identified_representation_usage.identified_item",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepRepr_HArray1OfRepresentationItem (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"representation_item", ach,
+         STANDARD_TYPE(StepRepr_RepresentationItem), anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+
+  //--- Initialisation of the read entity ---
+
+  ent->Init(aName, aDescription, aDefinition, aRepresentation, anItems);
+}
+
+void RWStepAP242_RWGeometricItemSpecificUsage::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepAP242_GeometricItemSpecificUsage)& ent) const
+{
+  // Inherited fields of ItemIdentifiedRepresentationUsage
+
+  SW.Send(ent->Name());
+
+  SW.Send(ent->Description());
+
+  SW.Send(ent->Definition().Value());
+
+  SW.Send(ent->UsedRepresentation());
+
+  if (ent->NbIdentifiedItem() == 1)
+    SW.Send(ent->IdentifiedItemValue(1));
+  else {
+    SW.OpenSub();
+    for (Standard_Integer i = 1;  i <= ent->NbIdentifiedItem();  i++) {
+      SW.Send(ent->IdentifiedItemValue(i));
+    }
+    SW.CloseSub();
+  }
+}
+
+void RWStepAP242_RWGeometricItemSpecificUsage::Share(
+  const Handle(StepAP242_GeometricItemSpecificUsage)& ent, 
+  Interface_EntityIterator& iter) const
+{
+  // Inherited fields of ItemIdentifiedRepresentationUsage
+
+  iter.AddItem(ent->Definition().Value());
+  Standard_Integer i, nb = ent->NbIdentifiedItem();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->IdentifiedItemValue(i));
+}
+
diff --git a/src/RWStepAP242/RWStepAP242_RWGeometricItemSpecificUsage.hxx b/src/RWStepAP242/RWStepAP242_RWGeometricItemSpecificUsage.hxx
new file mode 100644 (file)
index 0000000..20f2958
--- /dev/null
@@ -0,0 +1,48 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepAP242_RWGeometricItemSpecificUsage_HeaderFile
+#define _RWStepAP242_RWGeometricItemSpecificUsage_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepAP242_GeometricItemSpecificUsage;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for GeometricItemSpecificUsage
+class RWStepAP242_RWGeometricItemSpecificUsage 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepAP242_RWGeometricItemSpecificUsage();
+  
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepAP242_GeometricItemSpecificUsage)& ent)  const;
+  
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepAP242_GeometricItemSpecificUsage)& ent)  const;
+  
+  Standard_EXPORT   void Share (const Handle(StepAP242_GeometricItemSpecificUsage)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepAP242_RWGeometricItemSpecificUsage_HeaderFile
diff --git a/src/RWStepAP242/RWStepAP242_RWIdAttribute.cxx b/src/RWStepAP242/RWStepAP242_RWIdAttribute.cxx
new file mode 100644 (file)
index 0000000..d18eba4
--- /dev/null
@@ -0,0 +1,70 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepAP242_RWIdAttribute.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepAP242_IdAttribute.hxx>
+#include <StepAP242_IdAttributeSelect.hxx>
+
+RWStepAP242_RWIdAttribute::RWStepAP242_RWIdAttribute () {}
+
+void RWStepAP242_RWIdAttribute::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepAP242_IdAttribute)& ent) const
+{
+
+
+  // --- Number of Parameter Control ---
+
+  if (!data->CheckNbParams(num,2,ach,"id_attribute")) return;
+  
+  // --- own field : attribute_value ---
+
+  Handle(TCollection_HAsciiString) anAttributeValue;
+  data->ReadString (num,1,"attribute_value",ach,anAttributeValue);
+
+  // --- own field : identified_item ---
+
+  StepAP242_IdAttributeSelect anIdentifiedItem;
+  data->ReadEntity (num,2,"identified_item",ach,anIdentifiedItem);
+
+  //--- Initialisation of the read entity ---
+
+  ent->Init(anAttributeValue, anIdentifiedItem);
+}
+
+void RWStepAP242_RWIdAttribute::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepAP242_IdAttribute)& ent) const
+{
+
+  // --- own field : attribute_value ---
+
+  SW.Send(ent->AttributeValue());
+
+  // --- own field : identified_item ---
+
+  SW.Send(ent->IdentifiedItem().Value());
+}
+
+void RWStepAP242_RWIdAttribute::Share(const Handle(StepAP242_IdAttribute)& ent, Interface_EntityIterator& iter) const
+{
+       iter.GetOneItem(ent->IdentifiedItem().Value());
+}
+
diff --git a/src/RWStepAP242/RWStepAP242_RWIdAttribute.hxx b/src/RWStepAP242/RWStepAP242_RWIdAttribute.hxx
new file mode 100644 (file)
index 0000000..e709451
--- /dev/null
@@ -0,0 +1,48 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepAP242_RWIdAttribute_HeaderFile
+#define _RWStepAP242_RWIdAttribute_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepAP242_IdAttribute;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for IdAttribute
+class RWStepAP242_RWIdAttribute 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepAP242_RWIdAttribute();
+  
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepAP242_IdAttribute)& ent)  const;
+  
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepAP242_IdAttribute)& ent)  const;
+  
+  Standard_EXPORT   void Share (const Handle(StepAP242_IdAttribute)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepAP242_RWIdAttribute_HeaderFile
diff --git a/src/RWStepAP242/RWStepAP242_RWItemIdentifiedRepresentationUsage.cxx b/src/RWStepAP242/RWStepAP242_RWItemIdentifiedRepresentationUsage.cxx
new file mode 100644 (file)
index 0000000..2aa1d05
--- /dev/null
@@ -0,0 +1,131 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepAP242_ItemIdentifiedRepresentationUsage.hxx>
+#include <StepAP242_ItemIdentifiedRepresentationUsageDefinition.hxx>
+#include <StepRepr_Representation.hxx>
+
+
+RWStepAP242_RWItemIdentifiedRepresentationUsage::RWStepAP242_RWItemIdentifiedRepresentationUsage () {}
+
+void RWStepAP242_RWItemIdentifiedRepresentationUsage::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepAP242_ItemIdentifiedRepresentationUsage)& ent) const
+{
+  // --- Number of Parameter Control ---
+
+  if (!data->CheckNbParams(num,5,ach,"item_identified_representation_usage")) return;
+
+  // --- own field : name ---
+
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num,1,"name",ach,aName);
+
+  // --- own field : description ---
+
+  Handle(TCollection_HAsciiString) aDescription;
+  if (data->IsParamDefined (num,2)) {
+    data->ReadString (num,2,"description",ach,aDescription);
+  }
+  // --- own field : definition ---
+
+  StepAP242_ItemIdentifiedRepresentationUsageDefinition aDefinition;
+  data->ReadEntity(num,3,"definition",ach,aDefinition);
+
+  // --- own field : used_representation ---
+
+  Handle(StepRepr_Representation) aRepresentation;
+  data->ReadEntity (num,4,"used_representation",ach,STANDARD_TYPE(StepRepr_Representation), aRepresentation);
+
+  // --- own field : identified_item
+
+  Handle(StepRepr_HArray1OfRepresentationItem) anItems;
+  Handle(StepRepr_RepresentationItem) anEnt;
+  Standard_Integer nbSub;
+  Interface_ParamType aType = data->ParamType(num, 5);
+  if (aType == Interface_ParamIdent) {
+    data->ReadEntity(num, 5,"item_identified_representation_usage.identified_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anEnt);
+    anItems = new StepRepr_HArray1OfRepresentationItem (1, 1);
+    anItems->SetValue(1, anEnt);
+  }
+  else if (data->ReadSubList (num,5,"item_identified_representation_usage.identified_item",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepRepr_HArray1OfRepresentationItem (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"representation_item", ach,
+         STANDARD_TYPE(StepRepr_RepresentationItem), anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+
+  //--- Initialisation of the read entity ---
+
+
+  ent->Init(aName, aDescription, aDefinition, aRepresentation, anItems);
+}
+
+
+void RWStepAP242_RWItemIdentifiedRepresentationUsage::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepAP242_ItemIdentifiedRepresentationUsage)& ent) const
+{
+
+  // --- own field : name ---
+
+  SW.Send(ent->Name());
+
+  // --- own field : description ---
+
+  SW.Send(ent->Description());
+
+  // --- own field : definition ---
+
+  SW.Send(ent->Definition().Value());
+
+  // --- own field : used_representation ---
+
+  SW.Send(ent->UsedRepresentation());
+
+  // --- own field : identified_item ---
+
+  if (ent->NbIdentifiedItem() == 1)
+    SW.Send(ent->IdentifiedItemValue(1));
+  else {
+    SW.OpenSub();
+    for (Standard_Integer i = 1;  i <= ent->NbIdentifiedItem();  i++) {
+      SW.Send(ent->IdentifiedItemValue(i));
+    }
+    SW.CloseSub();
+  }
+}
+
+
+void RWStepAP242_RWItemIdentifiedRepresentationUsage::Share(
+  const Handle(StepAP242_ItemIdentifiedRepresentationUsage)& ent, 
+  Interface_EntityIterator& iter) const
+{
+  iter.AddItem(ent->Definition().Value());
+  Standard_Integer i, nb = ent->NbIdentifiedItem();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->IdentifiedItemValue(i));
+}
+
diff --git a/src/RWStepAP242/RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx b/src/RWStepAP242/RWStepAP242_RWItemIdentifiedRepresentationUsage.hxx
new file mode 100644 (file)
index 0000000..202b869
--- /dev/null
@@ -0,0 +1,48 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepAP242_RWItemIdentifiedRepresentationUsage_HeaderFile
+#define _RWStepAP242_RWItemIdentifiedRepresentationUsage_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepAP242_ItemIdentifiedRepresentationUsage;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for ItemIdentifiedRepresentationUsage
+class RWStepAP242_RWItemIdentifiedRepresentationUsage 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepAP242_RWItemIdentifiedRepresentationUsage();
+  
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepAP242_ItemIdentifiedRepresentationUsage)& ent)  const;
+  
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepAP242_ItemIdentifiedRepresentationUsage)& ent)  const;
+  
+  Standard_EXPORT   void Share (const Handle(StepAP242_ItemIdentifiedRepresentationUsage)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepAP242_RWItemIdentifiedRepresentationUsage_HeaderFile
index 1d84cbc..e5d06c5 100644 (file)
@@ -16,22 +16,50 @@ RWStepDimTol_RWDatumFeature.cxx
 RWStepDimTol_RWDatumFeature.hxx
 RWStepDimTol_RWDatumReference.cxx
 RWStepDimTol_RWDatumReference.hxx
+RWStepDimTol_RWDatumReferenceCompartment.cxx
+RWStepDimTol_RWDatumReferenceCompartment.hxx
+RWStepDimTol_RWDatumReferenceElement.cxx
+RWStepDimTol_RWDatumReferenceElement.hxx
+RWStepDimTol_RWDatumReferenceModifierWithValue.cxx
+RWStepDimTol_RWDatumReferenceModifierWithValue.hxx
+RWStepDimTol_RWDatumSystem.cxx
+RWStepDimTol_RWDatumSystem.hxx
 RWStepDimTol_RWDatumTarget.cxx
 RWStepDimTol_RWDatumTarget.hxx
 RWStepDimTol_RWFlatnessTolerance.cxx
 RWStepDimTol_RWFlatnessTolerance.hxx
+RWStepDimTol_RWGeneralDatumReference.cxx
+RWStepDimTol_RWGeneralDatumReference.hxx
 RWStepDimTol_RWGeometricTolerance.cxx
 RWStepDimTol_RWGeometricTolerance.hxx
 RWStepDimTol_RWGeometricToleranceRelationship.cxx
 RWStepDimTol_RWGeometricToleranceRelationship.hxx
 RWStepDimTol_RWGeometricToleranceWithDatumReference.cxx
 RWStepDimTol_RWGeometricToleranceWithDatumReference.hxx
+RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.cxx
+RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx
+RWStepDimTol_RWGeometricToleranceWithDefinedUnit.cxx
+RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx
+RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.cxx
+RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx
+RWStepDimTol_RWGeometricToleranceWithModifiers.cxx
+RWStepDimTol_RWGeometricToleranceWithModifiers.hxx
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.cxx
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.cxx
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx
 RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol.cxx
 RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol.hxx
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.cxx
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx
+RWStepDimTol_RWGeoTolAndGeoTolWthMod.cxx
+RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx
 RWStepDimTol_RWLineProfileTolerance.cxx
 RWStepDimTol_RWLineProfileTolerance.hxx
 RWStepDimTol_RWModifiedGeometricTolerance.cxx
 RWStepDimTol_RWModifiedGeometricTolerance.hxx
+RWStepDimTol_RWNonUniformZoneDefinition.cxx
+RWStepDimTol_RWNonUniformZoneDefinition.hxx
 RWStepDimTol_RWParallelismTolerance.cxx
 RWStepDimTol_RWParallelismTolerance.hxx
 RWStepDimTol_RWPerpendicularityTolerance.cxx
@@ -40,13 +68,27 @@ RWStepDimTol_RWPlacedDatumTargetFeature.cxx
 RWStepDimTol_RWPlacedDatumTargetFeature.hxx
 RWStepDimTol_RWPositionTolerance.cxx
 RWStepDimTol_RWPositionTolerance.hxx
+RWStepDimTol_RWProjectedZoneDefinition.cxx
+RWStepDimTol_RWProjectedZoneDefinition.hxx
 RWStepDimTol_RWRoundnessTolerance.cxx
 RWStepDimTol_RWRoundnessTolerance.hxx
+RWStepDimTol_RWRunoutZoneDefinition.cxx
+RWStepDimTol_RWRunoutZoneDefinition.hxx
+RWStepDimTol_RWRunoutZoneOrientation.cxx
+RWStepDimTol_RWRunoutZoneOrientation.hxx
 RWStepDimTol_RWStraightnessTolerance.cxx
 RWStepDimTol_RWStraightnessTolerance.hxx
 RWStepDimTol_RWSurfaceProfileTolerance.cxx
 RWStepDimTol_RWSurfaceProfileTolerance.hxx
 RWStepDimTol_RWSymmetryTolerance.cxx
 RWStepDimTol_RWSymmetryTolerance.hxx
+RWStepDimTol_RWToleranceZone.cxx
+RWStepDimTol_RWToleranceZone.hxx
+RWStepDimTol_RWToleranceZoneDefinition.cxx
+RWStepDimTol_RWToleranceZoneDefinition.hxx
+RWStepDimTol_RWToleranceZoneForm.cxx
+RWStepDimTol_RWToleranceZoneForm.hxx
 RWStepDimTol_RWTotalRunoutTolerance.cxx
 RWStepDimTol_RWTotalRunoutTolerance.hxx
+RWStepDimTol_RWUnequallyDisposedGeometricTolerance.cxx
+RWStepDimTol_RWUnequallyDisposedGeometricTolerance.hxx
index e52499f..2870df3 100644 (file)
@@ -23,8 +23,8 @@
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_AngularityTolerance.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWAngularityTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWAngularityTolerance::ReadStep (const Handle(StepData_StepRea
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWAngularityTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWAngularityTolerance::Share (const Handle(StepDimTol_Angulari
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
index 78b5126..03da230 100644 (file)
@@ -23,8 +23,8 @@
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_CircularRunoutTolerance.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWCircularRunoutTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWCircularRunoutTolerance::ReadStep (const Handle(StepData_Ste
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWCircularRunoutTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWCircularRunoutTolerance::Share (const Handle(StepDimTol_Circ
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
index 81829c9..d8d0c09 100644 (file)
@@ -23,8 +23,8 @@
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_CoaxialityTolerance.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWCoaxialityTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWCoaxialityTolerance::ReadStep (const Handle(StepData_StepRea
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWCoaxialityTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWCoaxialityTolerance::Share (const Handle(StepDimTol_Coaxiali
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
index fb2c9fe..6340552 100644 (file)
@@ -23,8 +23,8 @@
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_ConcentricityTolerance.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWConcentricityTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWConcentricityTolerance::ReadStep (const Handle(StepData_Step
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWConcentricityTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWConcentricityTolerance::Share (const Handle(StepDimTol_Conce
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
index 76733a0..b0b60f0 100644 (file)
@@ -22,7 +22,7 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_CylindricityTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWCylindricityTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWCylindricityTolerance::ReadStep (const Handle(StepData_StepR
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWCylindricityTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWCylindricityTolerance::Share (const Handle(StepDimTol_Cylind
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceCompartment.cxx b/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceCompartment.cxx
new file mode 100644 (file)
index 0000000..4ce2c7c
--- /dev/null
@@ -0,0 +1,205 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWDatumReferenceCompartment.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_Datum.hxx>
+#include <StepDimTol_DatumReferenceCompartment.hxx>
+#include <StepDimTol_GeneralDatumReference.hxx>
+#include <StepDimTol_HArray1OfDatumReferenceElement.hxx>
+#include <StepRepr_ProductDefinitionShape.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWDatumReferenceCompartment
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWDatumReferenceCompartment::RWStepDimTol_RWDatumReferenceCompartment ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceCompartment::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                         const Standard_Integer num,
+                                                         Handle(Interface_Check)& ach,
+                                                         const Handle(StepDimTol_DatumReferenceCompartment) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,6,ach,"datum_reference_element") ) return;
+
+  // Inherited fields of ShapeAspect
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Name;
+  data->ReadString (num, 1, "shape_aspect.name", ach, aShapeAspect_Name);
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Description;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "shape_aspect.description", ach, aShapeAspect_Description);
+  }
+
+  Handle(StepRepr_ProductDefinitionShape) aShapeAspect_OfShape;
+  data->ReadEntity (num, 3, "shape_aspect.of_shape", ach, STANDARD_TYPE(StepRepr_ProductDefinitionShape), aShapeAspect_OfShape);
+
+  StepData_Logical aShapeAspect_ProductDefinitional;
+  data->ReadLogical (num, 4, "shape_aspect.product_definitional", ach, aShapeAspect_ProductDefinitional);
+  
+  // Inherited fields from GeneralDatumReference
+  
+  StepDimTol_DatumOrCommonDatum aBase;
+  Handle(StepDimTol_Datum) aDatum;
+  Interface_ParamType aType = data->ParamType(num, 5);
+  if (aType == Interface_ParamIdent) {
+    data->ReadEntity(num, 5, "general_datum_reference.base", ach, STANDARD_TYPE(StepDimTol_Datum), aDatum);
+    aBase.SetValue(aDatum);
+  }
+  else {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anItems;
+    Handle(StepDimTol_DatumReferenceElement) anEnt;
+    Standard_Integer nbSub;
+    if (data->ReadSubList (num,5,"general_datum_reference.base",ach,nbSub)) {
+      aType = data->ParamType(nbSub, 1);      
+      if (aType == Interface_ParamSub) {
+        Standard_Integer aNewNbSub;
+        if (data->ReadSubList (nbSub,1,"general_datum_reference.base",ach,aNewNbSub)) {
+          nbSub = aNewNbSub;
+        }
+      }
+      Standard_Integer nbElements = data->NbParams(nbSub);
+      anItems = new StepDimTol_HArray1OfDatumReferenceElement (1, nbElements);
+      for (Standard_Integer i = 1; i <= nbElements; i++) {
+        if (data->ReadEntity(nbSub, i,"datum_reference_element", ach, STANDARD_TYPE(StepDimTol_DatumReferenceElement), anEnt))
+          anItems->SetValue(i, anEnt);
+      }
+    }
+    aBase.SetValue(anItems);
+  }
+
+  Standard_Integer nbSub;
+  Standard_Boolean hasModifiers = data->ReadSubList(num, 6, "general_datum_reference.modifiers", ach, nbSub, Standard_True);
+  Handle(StepDimTol_HArray1OfDatumReferenceModifier) aModifiers;
+  if (hasModifiers) {
+    StepDimTol_DatumReferenceModifier anEnt;
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    aModifiers = new StepDimTol_HArray1OfDatumReferenceModifier (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      Interface_ParamType aType = data->ParamType (nbSub, i);
+      if (aType == Interface_ParamIdent) {
+        Handle(StepDimTol_DatumReferenceModifierWithValue) aDRMWV;
+        data->ReadEntity(nbSub, i,"datum_reference_modifier_with_value", ach, STANDARD_TYPE(StepDimTol_DatumReferenceModifierWithValue), aDRMWV);
+        anEnt.SetValue(aDRMWV);
+      }
+      else {
+        Handle(StepData_SelectMember) aMember;
+        data->ReadMember(nbSub, i, "simple_datum_reference_modifier", ach, aMember);
+        Standard_CString anEnumText = aMember->EnumText();
+        Handle(StepDimTol_SimpleDatumReferenceModifierMember) aSDRM = new StepDimTol_SimpleDatumReferenceModifierMember();
+        aSDRM->SetEnumText(0, anEnumText);
+        anEnt.SetValue(aSDRM);
+      }
+      aModifiers->SetValue(i, anEnt);
+    }
+  }
+  
+  // Initialize entity
+  ent->Init(aShapeAspect_Name,
+            aShapeAspect_Description,
+            aShapeAspect_OfShape,
+            aShapeAspect_ProductDefinitional,
+            aBase,
+            hasModifiers,
+            aModifiers);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceCompartment::WriteStep (StepData_StepWriter& SW,
+                                                          const Handle(StepDimTol_DatumReferenceCompartment) &ent) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->OfShape());
+
+  SW.SendLogical (ent->ProductDefinitional());
+  
+  // Inherited fields from GeneralDatumReference
+  Standard_Integer aBaseType = ent->Base().CaseNum(ent->Base().Value());
+  if (aBaseType == 1) {
+    SW.Send(ent->Base().Datum());
+  }
+  else if (aBaseType == 2) {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anArray = ent->Base().CommonDatumList();
+    Standard_Integer i, nb = (anArray.IsNull() ? 0 : anArray->Length());
+    SW.OpenSub();
+    for (i = 1; i <= nb; i++)  
+      SW.Send (anArray->Value(i));
+    SW.CloseSub();
+  }
+
+  if (ent->HasModifiers()) {
+    Standard_Integer i, nb = ent->NbModifiers();
+    SW.OpenSub();
+    for (i = 1; i <= nb; i++) {
+      StepDimTol_DatumReferenceModifier aModifier = ent->ModifiersValue(i);
+      Standard_Integer aType = aModifier.CaseNum(aModifier.Value());
+      switch (aType) {
+        case 1: SW.Send(aModifier.DatumReferenceModifierWithValue()); break;
+        case 2: SW.SendEnum(aModifier.SimpleDatumReferenceModifierMember()->EnumText());break;
+      }
+    }
+    SW.CloseSub();
+  }  
+  
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceCompartment::Share (const Handle(StepDimTol_DatumReferenceCompartment) &ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  iter.AddItem (ent->OfShape());
+  
+  // Inherited fields from GeneralDatumReference
+  Standard_Integer aBaseType = ent->Base().CaseNum(ent->Base().Value());
+  if (aBaseType == 1) {
+    iter.AddItem(ent->Base().Datum());
+  }
+  else if (aBaseType == 2) {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anArray = ent->Base().CommonDatumList();
+    Standard_Integer i, nb = (anArray.IsNull() ? 0 : anArray->Length());
+    for (i = 1; i <= nb; i++)  
+      iter.AddItem (anArray->Value(i));
+  }
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceCompartment.hxx b/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceCompartment.hxx
new file mode 100644 (file)
index 0000000..d493acc
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWDatumReferenceCompartment_HeaderFile
+#define _RWStepDimTol_RWDatumReferenceCompartment_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_DatumReferenceCompartment;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for DatumReferenceElement
+class RWStepDimTol_RWDatumReferenceCompartment
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWDatumReferenceCompartment();
+  
+  //! Reads DatumReferenceElement
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_DatumReferenceCompartment)& ent)  const;
+  
+  //! Writes DatumReferenceElement
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_DatumReferenceCompartment)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_DatumReferenceCompartment)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWDatumReferenceCompartment_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceElement.cxx b/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceElement.cxx
new file mode 100644 (file)
index 0000000..f5e415f
--- /dev/null
@@ -0,0 +1,207 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWDatumReferenceElement.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_Datum.hxx>
+#include <StepDimTol_DatumReferenceElement.hxx>
+#include <StepDimTol_DatumReferenceModifier.hxx>
+#include <StepDimTol_GeneralDatumReference.hxx>
+#include <StepDimTol_HArray1OfDatumReferenceElement.hxx>
+#include <StepDimTol_HArray1OfDatumReferenceModifier.hxx>
+#include <StepRepr_ProductDefinitionShape.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWDatumReferenceElement
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWDatumReferenceElement::RWStepDimTol_RWDatumReferenceElement ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceElement::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepDimTol_DatumReferenceElement) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,6,ach,"datum_reference_element") ) return;
+
+  // Inherited fields of ShapeAspect
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Name;
+  data->ReadString (num, 1, "shape_aspect.name", ach, aShapeAspect_Name);
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Description;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "shape_aspect.description", ach, aShapeAspect_Description);
+  }
+
+  Handle(StepRepr_ProductDefinitionShape) aShapeAspect_OfShape;
+  data->ReadEntity (num, 3, "shape_aspect.of_shape", ach, STANDARD_TYPE(StepRepr_ProductDefinitionShape), aShapeAspect_OfShape);
+
+  StepData_Logical aShapeAspect_ProductDefinitional;
+  data->ReadLogical (num, 4, "shape_aspect.product_definitional", ach, aShapeAspect_ProductDefinitional);
+  
+  // Inherited fields from GeneralDatumReference
+  
+  StepDimTol_DatumOrCommonDatum aBase;
+  Handle(StepDimTol_Datum) aDatum;
+  Interface_ParamType aType = data->ParamType(num, 5);
+  if (aType == Interface_ParamIdent) {
+    data->ReadEntity(num, 5, "general_datum_reference.base", ach, STANDARD_TYPE(StepDimTol_Datum), aDatum);
+    aBase.SetValue(aDatum);
+  }
+  else {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anItems;
+    Handle(StepDimTol_DatumReferenceElement) anEnt;
+    Standard_Integer nbSub;
+    if (data->ReadSubList (num,5,"general_datum_reference.base",ach,nbSub)) {
+      aType = data->ParamType(nbSub, 1);      
+      if (aType == Interface_ParamSub) {
+        Standard_Integer aNewNbSub;
+        if (data->ReadSubList (nbSub,1,"general_datum_reference.base",ach,aNewNbSub)) {
+          nbSub = aNewNbSub;
+        }
+      }
+      Standard_Integer nbElements = data->NbParams(nbSub);
+      anItems = new StepDimTol_HArray1OfDatumReferenceElement (1, nbElements);
+      for (Standard_Integer i = 1; i <= nbElements; i++) {
+        if (data->ReadEntity(nbSub, i,"datum_reference_element", ach, STANDARD_TYPE(StepDimTol_DatumReferenceElement), anEnt))
+          anItems->SetValue(i, anEnt);
+      }
+    }
+    aBase.SetValue(anItems);
+  }
+
+  Standard_Integer nbSub;
+  Standard_Boolean hasModifiers = data->ReadSubList(num, 6, "general_datum_reference.modifiers", ach, nbSub, Standard_True);
+  Handle(StepDimTol_HArray1OfDatumReferenceModifier) aModifiers;
+  if (hasModifiers) {
+    StepDimTol_DatumReferenceModifier anEnt;
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    aModifiers = new StepDimTol_HArray1OfDatumReferenceModifier (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      Interface_ParamType aType = data->ParamType (nbSub, i);
+      if (aType == Interface_ParamIdent) {
+        Handle(StepDimTol_DatumReferenceModifierWithValue) aDRMWV;
+        data->ReadEntity(nbSub, i,"datum_reference_modifier_with_value", ach, STANDARD_TYPE(StepDimTol_DatumReferenceModifierWithValue), aDRMWV);
+        anEnt.SetValue(aDRMWV);
+      }
+      else {
+        Handle(StepData_SelectMember) aMember;
+        data->ReadMember(nbSub, i, "simple_datum_reference_modifier", ach, aMember);
+        Standard_CString anEnumText = aMember->EnumText();
+        Handle(StepDimTol_SimpleDatumReferenceModifierMember) aSDRM = new StepDimTol_SimpleDatumReferenceModifierMember();
+        aSDRM->SetEnumText(0, anEnumText);
+        anEnt.SetValue(aSDRM);
+      }
+      aModifiers->SetValue(i, anEnt);
+    }
+  }
+  
+  // Initialize entity
+  ent->Init(aShapeAspect_Name,
+            aShapeAspect_Description,
+            aShapeAspect_OfShape,
+            aShapeAspect_ProductDefinitional,
+            aBase,
+            hasModifiers,
+            aModifiers);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceElement::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepDimTol_DatumReferenceElement) &ent) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->OfShape());
+
+  SW.SendLogical (ent->ProductDefinitional());
+  
+  // Inherited fields from GeneralDatumReference
+  Standard_Integer aBaseType = ent->Base().CaseNum(ent->Base().Value());
+  if (aBaseType == 1) {
+    SW.Send(ent->Base().Datum());
+  }
+  else if (aBaseType == 2) {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anArray = (ent->Base()).CommonDatumList();
+    Standard_Integer i, nb = (anArray.IsNull() ? 0 : anArray->Length());
+    SW.OpenSub();
+    for (i = 1; i <= nb; i++)  
+      SW.Send (anArray->Value(i));
+    SW.CloseSub();
+  }
+
+  if (ent->HasModifiers()) {
+    Standard_Integer i, nb = ent->NbModifiers();
+    SW.OpenSub();
+    for (i = 1; i <= nb; i++) {
+      StepDimTol_DatumReferenceModifier aModifier = ent->ModifiersValue(i);
+      Standard_Integer aType = aModifier.CaseNum(aModifier.Value());
+      switch (aType) {
+        case 1: SW.Send(aModifier.DatumReferenceModifierWithValue()); break;
+        case 2: SW.SendEnum(aModifier.SimpleDatumReferenceModifierMember()->EnumText());break;
+      }
+    }
+    SW.CloseSub();
+  }  
+  
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceElement::Share (const Handle(StepDimTol_DatumReferenceElement) &ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  iter.AddItem (ent->OfShape());
+  
+  // Inherited fields from GeneralDatumReference
+  Standard_Integer aBaseType = ent->Base().CaseNum(ent->Base().Value());
+  if (aBaseType == 1) {
+    iter.AddItem(ent->Base().Datum());
+  }
+  else if (aBaseType == 2) {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anArray = ent->Base().CommonDatumList();
+    Standard_Integer i, nb = (anArray.IsNull() ? 0 : anArray->Length());
+    for (i = 1; i <= nb; i++)  
+      iter.AddItem (anArray->Value(i));
+  }
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceElement.hxx b/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceElement.hxx
new file mode 100644 (file)
index 0000000..0f9fc72
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWDatumReferenceElement_HeaderFile
+#define _RWStepDimTol_RWDatumReferenceElement_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_DatumReferenceElement;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for DatumReferenceElement
+class RWStepDimTol_RWDatumReferenceElement
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWDatumReferenceElement();
+  
+  //! Reads DatumReferenceElement
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_DatumReferenceElement)& ent)  const;
+  
+  //! Writes DatumReferenceElement
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_DatumReferenceElement)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_DatumReferenceElement)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWDatumReferenceElement_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceModifierWithValue.cxx b/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceModifierWithValue.cxx
new file mode 100644 (file)
index 0000000..c650208
--- /dev/null
@@ -0,0 +1,89 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWDatumReferenceModifierWithValue.hxx>
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepBasic_LengthMeasureWithUnit.hxx>
+#include <StepDimTol_DatumReferenceModifierType.hxx>
+#include <StepDimTol_DatumReferenceModifierWithValue.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeometricTolerance
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWDatumReferenceModifierWithValue::RWStepDimTol_RWDatumReferenceModifierWithValue ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceModifierWithValue::
+  ReadStep (const Handle(StepData_StepReaderData)& data,
+            const Standard_Integer num,
+            Handle(Interface_Check)& ach,
+            const Handle(StepDimTol_DatumReferenceModifierWithValue) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num, 2, ach, "datum_reference_modifier_with_value") ) return;
+
+  // own fields of DatumReferenceModifierWithValue
+
+  StepDimTol_DatumReferenceModifierType aModifierType = StepDimTol_CircularOrCylindrical;
+  if (data->ParamType (num, 1) == Interface_ParamEnum) {
+    Standard_CString text = data->ParamCValue(num, 1);
+    if      (strcmp(text, ".CIRCULAR_OR_CYLINDRICAL.")==0) aModifierType = StepDimTol_CircularOrCylindrical;
+    else if (strcmp(text, ".DISTANCE.")==0) aModifierType = StepDimTol_Distance;
+    else if (strcmp(text, ".PROJECTED.")==0) aModifierType = StepDimTol_Projected;
+    else if (strcmp(text, ".SPHERICAL.")==0) aModifierType = StepDimTol_Spherical;
+    else ach->AddFail("Parameter #1 (modifier_type) has not allowed value");
+    }
+  else ach->AddFail("Parameter #1 (modifier_type) is not an enumeration");
+
+  Handle(StepBasic_LengthMeasureWithUnit) aModifierValue;
+  data->ReadEntity (num, 2, "modifier_value", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), aModifierValue);
+
+  // Initialize entity
+  ent->Init(aModifierType,
+            aModifierValue);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumReferenceModifierWithValue::
+  WriteStep (StepData_StepWriter& SW,
+  const Handle(StepDimTol_DatumReferenceModifierWithValue) &ent) const
+{
+  // own fields of DatumReferenceModifierWithValue
+  
+  switch (ent->ModifierType()) {
+    case StepDimTol_CircularOrCylindrical: SW.SendEnum (".CIRCULAR_OR_CYLINDRICAL."); break;
+    case StepDimTol_Distance: SW.SendEnum (".DISTANCE."); break;
+    case StepDimTol_Projected: SW.SendEnum (".PROJECTED."); break;
+    case StepDimTol_Spherical: SW.SendEnum (".SPHERICAL."); break;
+  }
+
+  SW.Send (ent->ModifierValue());  
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceModifierWithValue.hxx b/src/RWStepDimTol/RWStepDimTol_RWDatumReferenceModifierWithValue.hxx
new file mode 100644 (file)
index 0000000..d4ed3fb
--- /dev/null
@@ -0,0 +1,49 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWDatumReferenceModifierWithValue_HeaderFile
+#define _RWStepDimTol_RWDatumReferenceModifierWithValue_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_DatumReferenceModifierWithValue;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for DatumReferenceModifierWithValue
+class RWStepDimTol_RWDatumReferenceModifierWithValue 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWDatumReferenceModifierWithValue();
+  
+  //! Reads DatumReferenceModifierWithValue
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_DatumReferenceModifierWithValue)& ent)  const;
+  
+  //! Writes DatumReferenceModifierWithValue
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_DatumReferenceModifierWithValue)& ent)  const;
+};
+#endif // _RWStepDimTol_RWDatumReferenceModifierWithValue_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumSystem.cxx b/src/RWStepDimTol/RWStepDimTol_RWDatumSystem.cxx
new file mode 100644 (file)
index 0000000..6d2c401
--- /dev/null
@@ -0,0 +1,129 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWDatumSystem.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_DatumReferenceCompartment.hxx>
+#include <StepDimTol_DatumSystem.hxx>
+#include <StepRepr_ProductDefinitionShape.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWDatumSystem
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWDatumSystem::RWStepDimTol_RWDatumSystem ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumSystem::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                           const Standard_Integer num,
+                                           Handle(Interface_Check)& ach,
+                                           const Handle(StepDimTol_DatumSystem) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,5,ach,"datum_system") ) return;
+
+  // Inherited fields of ShapeAspect
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Name;
+  data->ReadString (num, 1, "shape_aspect.name", ach, aShapeAspect_Name);
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Description;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "shape_aspect.description", ach, aShapeAspect_Description);
+  }
+
+  Handle(StepRepr_ProductDefinitionShape) aShapeAspect_OfShape;
+  data->ReadEntity (num, 3, "shape_aspect.of_shape", ach, STANDARD_TYPE(StepRepr_ProductDefinitionShape), aShapeAspect_OfShape);
+
+  StepData_Logical aShapeAspect_ProductDefinitional;
+  data->ReadLogical (num, 4, "shape_aspect.product_definitional", ach, aShapeAspect_ProductDefinitional);
+  
+  // Own fields of DatumSystem
+  
+  Handle(StepDimTol_HArray1OfDatumReferenceCompartment) aConstituents;
+  Handle(StepDimTol_DatumReferenceCompartment) anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num,5,"base",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    aConstituents = new StepDimTol_HArray1OfDatumReferenceCompartment (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"datum_reference_compartment", ach, STANDARD_TYPE(StepDimTol_DatumReferenceCompartment), anEnt))
+        aConstituents->SetValue(i, anEnt);
+    }
+  }
+  
+  // Initialize entity
+  ent->Init(aShapeAspect_Name,
+            aShapeAspect_Description,
+            aShapeAspect_OfShape,
+            aShapeAspect_ProductDefinitional,
+            aConstituents);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumSystem::WriteStep (StepData_StepWriter& SW,
+                                            const Handle(StepDimTol_DatumSystem) &ent) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->OfShape());
+
+  SW.SendLogical (ent->ProductDefinitional());
+  
+  // Own fields of DatumSystem
+  Standard_Integer i, nb = ent->NbConstituents();
+  SW.OpenSub();
+  for (i = 1; i <= nb; i++)  
+    SW.Send (ent->ConstituentsValue(i));
+  SW.CloseSub();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWDatumSystem::Share (const Handle(StepDimTol_DatumSystem) &ent,
+                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  iter.AddItem (ent->OfShape());
+  
+  // Own fields of DatumSystem
+  Standard_Integer i, nb = ent->NbConstituents();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->ConstituentsValue(i));
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWDatumSystem.hxx b/src/RWStepDimTol/RWStepDimTol_RWDatumSystem.hxx
new file mode 100644 (file)
index 0000000..bc77cc3
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWDatumSystem_HeaderFile
+#define _RWStepDimTol_RWDatumSystem_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_DatumSystem;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for DatumSystem
+class RWStepDimTol_RWDatumSystem
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWDatumSystem();
+  
+  //! Reads DatumSystem
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_DatumSystem)& ent)  const;
+  
+  //! Writes DatumSystem
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_DatumSystem)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_DatumSystem)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWDatumSystem_HeaderFile
index 4994643..e63396e 100644 (file)
@@ -22,7 +22,7 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_FlatnessTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWFlatnessTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWFlatnessTolerance::ReadStep (const Handle(StepData_StepReade
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWFlatnessTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWFlatnessTolerance::Share (const Handle(StepDimTol_FlatnessTo
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeneralDatumReference.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeneralDatumReference.cxx
new file mode 100644 (file)
index 0000000..aa8ad55
--- /dev/null
@@ -0,0 +1,205 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWGeneralDatumReference.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_Datum.hxx>
+#include <StepDimTol_DatumReferenceModifier.hxx>
+#include <StepDimTol_GeneralDatumReference.hxx>
+#include <StepDimTol_HArray1OfDatumReferenceElement.hxx>
+#include <StepRepr_ProductDefinitionShape.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeneralDatumReference
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWGeneralDatumReference::RWStepDimTol_RWGeneralDatumReference ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeneralDatumReference::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepDimTol_GeneralDatumReference) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,6,ach,"general_datum_reference") ) return;
+
+  // Inherited fields of ShapeAspect
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Name;
+  data->ReadString (num, 1, "shape_aspect.name", ach, aShapeAspect_Name);
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Description;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "shape_aspect.description", ach, aShapeAspect_Description);
+  }
+
+  Handle(StepRepr_ProductDefinitionShape) aShapeAspect_OfShape;
+  data->ReadEntity (num, 3, "shape_aspect.of_shape", ach, STANDARD_TYPE(StepRepr_ProductDefinitionShape), aShapeAspect_OfShape);
+
+  StepData_Logical aShapeAspect_ProductDefinitional;
+  data->ReadLogical (num, 4, "shape_aspect.product_definitional", ach, aShapeAspect_ProductDefinitional);
+  
+  // Own fields of GeneralDatumReference
+  
+  StepDimTol_DatumOrCommonDatum aBase;
+  Handle(StepDimTol_Datum) aDatum;
+  Interface_ParamType aType = data->ParamType(num, 5);
+  if (aType == Interface_ParamIdent) {
+    data->ReadEntity(num, 5, "general_datum_reference.base", ach, STANDARD_TYPE(StepDimTol_Datum), aDatum);
+    aBase.SetValue(aDatum);
+  }
+  else {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anItems;
+    Handle(StepDimTol_DatumReferenceElement) anEnt;
+    Standard_Integer nbSub;
+    if (data->ReadSubList (num,5,"general_datum_reference.base",ach,nbSub)) {
+      aType = data->ParamType(nbSub, 1);      
+      if (aType == Interface_ParamSub) {
+        Standard_Integer aNewNbSub;
+        if (data->ReadSubList (nbSub,1,"general_datum_reference.base",ach,aNewNbSub)) {
+          nbSub = aNewNbSub;
+        }
+      }
+      Standard_Integer nbElements = data->NbParams(nbSub);
+      anItems = new StepDimTol_HArray1OfDatumReferenceElement (1, nbElements);
+      for (Standard_Integer i = 1; i <= nbElements; i++) {
+        if (data->ReadEntity(nbSub, i,"datum_reference_element", ach, STANDARD_TYPE(StepDimTol_DatumReferenceElement), anEnt))
+          anItems->SetValue(i, anEnt);
+      }
+    }
+    aBase.SetValue(anItems);
+  }
+
+  Standard_Integer nbSub;
+  Standard_Boolean hasModifiers = data->ReadSubList(num, 6, "general_datum_reference.modifiers", ach, nbSub, Standard_True);
+  Handle(StepDimTol_HArray1OfDatumReferenceModifier) aModifiers;
+  if (hasModifiers) {
+    StepDimTol_DatumReferenceModifier anEnt;
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    aModifiers = new StepDimTol_HArray1OfDatumReferenceModifier (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      Interface_ParamType aType = data->ParamType (nbSub, i);
+      if (aType == Interface_ParamIdent) {
+        Handle(StepDimTol_DatumReferenceModifierWithValue) aDRMWV;
+        data->ReadEntity(nbSub, i,"datum_reference_modifier_with_value", ach, STANDARD_TYPE(StepDimTol_DatumReferenceModifierWithValue), aDRMWV);
+        anEnt.SetValue(aDRMWV);
+      }
+      else {
+        Handle(StepData_SelectMember) aMember;
+        data->ReadMember(nbSub, i, "simple_datum_reference_modifier", ach, aMember);
+        Standard_CString anEnumText = aMember->EnumText();
+        Handle(StepDimTol_SimpleDatumReferenceModifierMember) aSDRM = new StepDimTol_SimpleDatumReferenceModifierMember();
+        aSDRM->SetEnumText(0, anEnumText);
+        anEnt.SetValue(aSDRM);
+      }
+      aModifiers->SetValue(i, anEnt);
+    }
+  }
+  
+  // Initialize entity
+  ent->Init(aShapeAspect_Name,
+            aShapeAspect_Description,
+            aShapeAspect_OfShape,
+            aShapeAspect_ProductDefinitional,
+            aBase,
+            hasModifiers,
+            aModifiers);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeneralDatumReference::WriteStep (StepData_StepWriter& SW,
+                                              const Handle(StepDimTol_GeneralDatumReference) &ent) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->OfShape());
+
+  SW.SendLogical (ent->ProductDefinitional());
+  
+  // Own fields of GeneralDatumReference
+  Standard_Integer aBaseType = ent->Base().CaseNum(ent->Base().Value());
+  if (aBaseType == 1) {
+    SW.Send(ent->Base().Datum());
+  }
+  else if (aBaseType == 2) {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anArray = ent->Base().CommonDatumList();
+    Standard_Integer i, nb = (anArray.IsNull() ? 0 : anArray->Length());
+    SW.OpenSub();
+    for (i = 1; i <= nb; i++)  
+      SW.Send (anArray->Value(i));
+    SW.CloseSub();
+  }
+
+  if (ent->HasModifiers()) {
+    Standard_Integer i, nb = ent->NbModifiers();
+    SW.OpenSub();
+    for (i = 1; i <= nb; i++) {
+      StepDimTol_DatumReferenceModifier aModifier = ent->ModifiersValue(i);
+      Standard_Integer aType = aModifier.CaseNum(aModifier.Value());
+      switch (aType) {
+        case 1: SW.Send(aModifier.DatumReferenceModifierWithValue()); break;
+        case 2: SW.SendEnum(aModifier.SimpleDatumReferenceModifierMember()->EnumText());break;
+      }
+    }
+    SW.CloseSub();
+  }  
+  
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeneralDatumReference::Share (const Handle(StepDimTol_GeneralDatumReference) &ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  iter.AddItem (ent->OfShape());
+  
+  // Own fields of GeneralDatumReference
+  Standard_Integer aBaseType = ent->Base().CaseNum(ent->Base().Value());
+  if (aBaseType == 1) {
+    iter.AddItem(ent->Base().Datum());
+  }
+  else if (aBaseType == 2) {
+    Handle(StepDimTol_HArray1OfDatumReferenceElement) anArray = ent->Base().CommonDatumList();
+    Standard_Integer i, nb = (anArray.IsNull() ? 0 : anArray->Length());
+    for (i = 1; i <= nb; i++)  
+      iter.AddItem (anArray->Value(i));
+  }
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeneralDatumReference.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeneralDatumReference.hxx
new file mode 100644 (file)
index 0000000..20240b4
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeneralDatumReference_HeaderFile
+#define _RWStepDimTol_RWGeneralDatumReference_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeneralDatumReference;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for GeneralDatumReference
+class RWStepDimTol_RWGeneralDatumReference
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWGeneralDatumReference();
+  
+  //! Reads GeneralDatumReference
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeneralDatumReference)& ent)  const;
+  
+  //! Writes GeneralDatumReference
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeneralDatumReference)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_GeneralDatumReference)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWGeneralDatumReference_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.cxx
new file mode 100644 (file)
index 0000000..6dc02bc
--- /dev/null
@@ -0,0 +1,184 @@
+// Created on: 2015-08-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_DatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceType.hxx>
+#include <StepDimTol_GeometricToleranceWithDatumReference.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRef.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeoTolAndGeoTolWthDatRef
+//purpose  : 
+//=======================================================================
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRef::RWStepDimTol_RWGeoTolAndGeoTolWthDatRef()
+{
+}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRef::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num0, Handle(Interface_Check)& ach,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthDatRef)& ent) const
+{
+  Standard_Integer num = 0;//num0;
+  data->NamedForComplex("GEOMETRIC_TOLERANCE",num0,num,ach);
+  if (!data->CheckNbParams(num,4,ach,"geometric_tolerance")) return;
+  // Own fields of GeometricTolerance
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "description", ach, aDescription);
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  data->NamedForComplex("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",num0,num,ach);
+  // Own fields of GeometricToleranceWithDatumReference
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aDatumSystem;
+  Standard_Integer sub5 = 0;
+  if ( data->ReadSubList (num, 1, "datum_system", ach, sub5) ) {
+    Standard_Integer nb0 = data->NbParams(sub5);
+    aDatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
+    Standard_Integer num2 = sub5;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
+      aDatumSystem->SetValue(i0, anIt0);
+    }
+  }
+  // Initialize entity
+  Handle(StepDimTol_GeometricToleranceWithDatumReference) aGTWDR =
+    new StepDimTol_GeometricToleranceWithDatumReference;
+  aGTWDR->SetDatumSystem(aDatumSystem);
+
+  //Choose type of geometric tolerance
+  TColStd_SequenceOfAsciiString aTypes;
+  data->ComplexType(num0, aTypes);
+  Standard_CString aFirst = aTypes.First().ToCString();
+  Standard_CString aLast = aTypes.Last().ToCString();
+  StepDimTol_GeometricToleranceType aType = StepDimTol_GTTPositionTolerance;
+  if (strcmp(aFirst, "ANGULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTAngularityTolerance;
+  else if (strcmp(aFirst, "CIRCULAR_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTCircularRunoutTolerance;
+  else if (strcmp(aFirst, "COAXIALITY_TOLERANCE") == 0) aType = StepDimTol_GTTCoaxialityTolerance;
+  else if (strcmp(aFirst, "CONCENTRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTConcentricityTolerance;
+  else if (strcmp(aFirst, "CYLINDRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTCylindricityTolerance;
+  else if (strcmp(aFirst, "FLATNESS_TOLERANCE") == 0) aType = StepDimTol_GTTFlatnessTolerance;
+  else if (strcmp(aLast, "LINE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTLineProfileTolerance;
+  else if (strcmp(aLast, "PARALLELISM_TOLERANCE") == 0) aType = StepDimTol_GTTParallelismTolerance;
+  else if (strcmp(aLast, "PERPENDICULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTPerpendicularityTolerance;
+  else if (strcmp(aLast, "POSITION_TOLERANCE") == 0) aType = StepDimTol_GTTPositionTolerance;
+  else if (strcmp(aLast, "ROUNDNESS_TOLERANCE") == 0) aType = StepDimTol_GTTRoundnessTolerance;
+  else if (strcmp(aLast, "STRAIGHTNESS_TOLERANCE") == 0) aType = StepDimTol_GTTStraightnessTolerance;
+  else if (strcmp(aLast, "SURFACE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTSurfaceProfileTolerance;
+  else if (strcmp(aLast, "SYMMETRY_TOLERANCE") == 0) aType = StepDimTol_GTTSymmetryTolerance;
+  else if (strcmp(aLast, "TOTAL_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTTotalRunoutTolerance;
+  else ach->AddFail("The type of geometric tolerance is not supported");
+
+  // Initialize entity
+  ent->Init(aName, aDescription, aMagnitude, aTolerancedShapeAspect, aGTWDR, aType);
+}
+
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRef::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthDatRef)& ent) const
+{
+  StepDimTol_GeometricToleranceType aType = ent->GetToleranceType();
+  if (aType == StepDimTol_GTTAngularityTolerance)
+    SW.StartEntity("ANGULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCircularRunoutTolerance)
+    SW.StartEntity("CIRCULAR_RUNOUT_TOLERANCE");
+  else if (aType == StepDimTol_GTTCoaxialityTolerance)
+    SW.StartEntity("COAXIALITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTConcentricityTolerance)
+    SW.StartEntity("CONCENTRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCylindricityTolerance)
+    SW.StartEntity("CYLINDRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTFlatnessTolerance)
+    SW.StartEntity("FLATNESS_TOLERANCE");
+
+  SW.StartEntity("GEOMETRIC_TOLERANCE");
+  SW.Send(ent->Name());
+  SW.Send(ent->Description());
+  SW.Send(ent->Magnitude());
+  SW.Send(ent->TolerancedShapeAspect().Value());
+  SW.StartEntity("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE");
+  SW.OpenSub();
+  for(Standard_Integer i4=1; i4<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i4++) {
+    StepDimTol_DatumSystemOrReference Var0 =
+      ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i4);
+    SW.Send(Var0.Value());
+  }
+  SW.CloseSub();
+
+  if (aType == StepDimTol_GTTLineProfileTolerance)
+    SW.StartEntity("LINE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTParallelismTolerance)
+    SW.StartEntity("PARALLELISM_TOLERANCE");
+  else if (aType == StepDimTol_GTTPerpendicularityTolerance)
+    SW.StartEntity("PERPENDICULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTPositionTolerance)
+    SW.StartEntity("POSITION_TOLERANCE");
+  else if (aType == StepDimTol_GTTRoundnessTolerance)
+    SW.StartEntity("ROUNDNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTStraightnessTolerance)
+    SW.StartEntity("STRAIGHTNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTSurfaceProfileTolerance)
+    SW.StartEntity("SURFACE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTSymmetryTolerance)
+    SW.StartEntity("SYMMETRY_TOLERANCE");
+  else if (aType == StepDimTol_GTTTotalRunoutTolerance)
+    SW.StartEntity("TOTAL_RUNOUT_TOLERANCE");
+}
+
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRef::Share
+  (const Handle(StepDimTol_GeoTolAndGeoTolWthDatRef)& ent,
+   Interface_EntityIterator& iter) const
+{
+  // Own fields of GeometricTolerance
+  iter.AddItem (ent->Magnitude());
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+  // Own fields of GeometricToleranceWithDatumReference
+  for (Standard_Integer i3=1; i3<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
+  }
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRef.hxx
new file mode 100644 (file)
index 0000000..435a7b4
--- /dev/null
@@ -0,0 +1,47 @@
+// Created on: 2015-08-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeoTolAndGeoTolWthDatRef_HeaderFile
+#define _RWStepDimTol_RWGeoTolAndGeoTolWthDatRef_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeoTolAndGeoTolWthDatRef;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for GeoTolAndGeoTolWthDatRef
+class RWStepDimTol_RWGeoTolAndGeoTolWthDatRef
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepDimTol_RWGeoTolAndGeoTolWthDatRef();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeoTolAndGeoTolWthDatRef)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeoTolAndGeoTolWthDatRef)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepDimTol_GeoTolAndGeoTolWthDatRef)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepDimTol_RWGeoTolAndGeoTolWthDatRef_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.cxx
new file mode 100644 (file)
index 0000000..96a0a32
--- /dev/null
@@ -0,0 +1,222 @@
+// Created on: 2015-08-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_DatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceType.hxx>
+#include <StepDimTol_GeometricToleranceWithDatumReference.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
+#include <StepDimTol_GeometricToleranceWithModifiers.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod
+//purpose  : 
+//=======================================================================
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod::RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod()
+{
+}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num0, Handle(Interface_Check)& ach,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod)& ent) const
+{
+  Standard_Integer num = 0;//num0;
+  data->NamedForComplex("GEOMETRIC_TOLERANCE",num0,num,ach);
+  if (!data->CheckNbParams(num,4,ach,"geometric_tolerance")) return;
+  // Own fields of GeometricTolerance
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "description", ach, aDescription);
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  data->NamedForComplex("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",num0,num,ach);
+  // Own fields of GeometricToleranceWithDatumReference
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aDatumSystem;
+  Standard_Integer sub5 = 0;
+  if ( data->ReadSubList (num, 1, "datum_system", ach, sub5) ) {
+    Standard_Integer nb0 = data->NbParams(sub5);
+    aDatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
+    Standard_Integer num2 = sub5;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
+      aDatumSystem->SetValue(i0, anIt0);
+    }
+  }
+  // Initialize entity
+  Handle(StepDimTol_GeometricToleranceWithDatumReference) aGTWDR =
+    new StepDimTol_GeometricToleranceWithDatumReference;
+  aGTWDR->SetDatumSystem(aDatumSystem);
+
+  data->NamedForComplex("GEOMETRIC_TOLERANCE_WITH_MODIFIERS",num0,num,ach);
+  // Own fields of ModifiedGeometricTolerance
+  Handle(StepDimTol_HArray1OfGeometricToleranceModifier) aModifiers;
+  Standard_Integer sub = 0;
+  if ( data->ReadSubList (num, 1, "modifiers", ach, sub) ) {
+    Standard_Integer nb0 = data->NbParams(sub5);
+    aModifiers = new StepDimTol_HArray1OfGeometricToleranceModifier (1, nb0);
+    Standard_Integer num2 = sub;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_GeometricToleranceModifier anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+      if (data->ParamType (num2, i0) == Interface_ParamEnum) {
+        Standard_CString text = data->ParamCValue(num2, i0);
+        if      (strcmp(text, ".ANY_CROSS_SECTION.")==0) anIt0 = StepDimTol_GTMAnyCrossSection;
+        else if (strcmp(text, ".COMMON_ZONE.")==0) anIt0 = StepDimTol_GTMCommonZone;
+        else if (strcmp(text, ".EACH_RADIAL_ELEMENT.")==0) anIt0 = StepDimTol_GTMEachRadialElement;
+        else if (strcmp(text, ".FREE_STATE.")==0) anIt0 = StepDimTol_GTMFreeState;
+        else if (strcmp(text, ".LEAST_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMLeastMaterialRequirement;
+        else if (strcmp(text, ".LINE_ELEMENT.")==0) anIt0 = StepDimTol_GTMLineElement;
+        else if (strcmp(text, ".MAJOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMajorDiameter;
+        else if (strcmp(text, ".MAXIMUM_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+        else if (strcmp(text, ".MINOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMinorDiameter;
+        else if (strcmp(text, ".NOT_CONVEX.")==0) anIt0 = StepDimTol_GTMNotConvex;
+        else if (strcmp(text, ".PITCH_DIAMETER.")==0) anIt0 = StepDimTol_GTMPitchDiameter;
+        else if (strcmp(text, ".RECIPROCITY_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMReciprocityRequirement;
+        else if (strcmp(text, ".SEPARATE_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMSeparateRequirement;
+        else if (strcmp(text, ".STATISTICAL_TOLERANCE.")==0) anIt0 = StepDimTol_GTMStatisticalTolerance;
+        else if (strcmp(text, ".TANGENT_PLANE.")==0) anIt0 = StepDimTol_GTMTangentPlane;
+        else ach->AddFail("Parameter #5 (modifiers) has not allowed value");
+      }
+      else ach->AddFail("Parameter #5 (modifier) is not set of enumerations");
+      aModifiers->SetValue(i0, anIt0);
+    }
+  }
+  Handle(StepDimTol_GeometricToleranceWithModifiers) aGTWM = new StepDimTol_GeometricToleranceWithModifiers;
+  aGTWM->SetModifiers(aModifiers);
+
+  //Choose type of geometric tolerance
+  TColStd_SequenceOfAsciiString aTypes;
+  data->ComplexType(num0, aTypes);
+  Standard_CString aFirst = aTypes.First().ToCString();
+  Standard_CString aLast = aTypes.Last().ToCString();
+  StepDimTol_GeometricToleranceType aType = StepDimTol_GTTPositionTolerance;
+  if (strcmp(aFirst, "ANGULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTAngularityTolerance;
+  else if (strcmp(aFirst, "CIRCULAR_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTCircularRunoutTolerance;
+  else if (strcmp(aFirst, "COAXIALITY_TOLERANCE") == 0) aType = StepDimTol_GTTCoaxialityTolerance;
+  else if (strcmp(aFirst, "CONCENTRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTConcentricityTolerance;
+  else if (strcmp(aFirst, "CYLINDRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTCylindricityTolerance;
+  else if (strcmp(aFirst, "FLATNESS_TOLERANCE") == 0) aType = StepDimTol_GTTFlatnessTolerance;
+  else if (strcmp(aLast, "LINE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTLineProfileTolerance;
+  else if (strcmp(aLast, "PARALLELISM_TOLERANCE") == 0) aType = StepDimTol_GTTParallelismTolerance;
+  else if (strcmp(aLast, "PERPENDICULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTPerpendicularityTolerance;
+  else if (strcmp(aLast, "POSITION_TOLERANCE") == 0) aType = StepDimTol_GTTPositionTolerance;
+  else if (strcmp(aLast, "ROUNDNESS_TOLERANCE") == 0) aType = StepDimTol_GTTRoundnessTolerance;
+  else if (strcmp(aLast, "STRAIGHTNESS_TOLERANCE") == 0) aType = StepDimTol_GTTStraightnessTolerance;
+  else if (strcmp(aLast, "SURFACE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTSurfaceProfileTolerance;
+  else if (strcmp(aLast, "SYMMETRY_TOLERANCE") == 0) aType = StepDimTol_GTTSymmetryTolerance;
+  else if (strcmp(aLast, "TOTAL_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTTotalRunoutTolerance;
+  else ach->AddFail("The type of geometric tolerance is not supported");
+
+  // Initialize entity
+  ent->Init(aName, aDescription, aMagnitude, aTolerancedShapeAspect, aGTWDR, aGTWM, aType);
+
+}
+
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod)& ent) const
+{
+  StepDimTol_GeometricToleranceType aType = ent->GetToleranceType();
+  if (aType == StepDimTol_GTTAngularityTolerance)
+    SW.StartEntity("ANGULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCircularRunoutTolerance)
+    SW.StartEntity("CIRCULAR_RUNOUT_TOLERANCE");
+  else if (aType == StepDimTol_GTTCoaxialityTolerance)
+    SW.StartEntity("COAXIALITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTConcentricityTolerance)
+    SW.StartEntity("CONCENTRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCylindricityTolerance)
+    SW.StartEntity("CYLINDRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTFlatnessTolerance)
+    SW.StartEntity("FLATNESS_TOLERANCE");
+
+  SW.StartEntity("GEOMETRIC_TOLERANCE");
+  SW.Send(ent->Name());
+  SW.Send(ent->Description());
+  SW.Send(ent->Magnitude());
+  SW.Send(ent->TolerancedShapeAspect().Value());
+  SW.StartEntity("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE");
+  SW.OpenSub();
+  for(Standard_Integer i4=1; i4<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i4++) {
+    StepDimTol_DatumSystemOrReference Var0 =
+      ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i4);
+    SW.Send(Var0.Value());
+  }
+  SW.CloseSub();
+
+  if (aType == StepDimTol_GTTLineProfileTolerance)
+    SW.StartEntity("LINE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTParallelismTolerance)
+    SW.StartEntity("PARALLELISM_TOLERANCE");
+  else if (aType == StepDimTol_GTTPerpendicularityTolerance)
+    SW.StartEntity("PERPENDICULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTPositionTolerance)
+    SW.StartEntity("POSITION_TOLERANCE");
+  else if (aType == StepDimTol_GTTRoundnessTolerance)
+    SW.StartEntity("ROUNDNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTStraightnessTolerance)
+    SW.StartEntity("STRAIGHTNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTSurfaceProfileTolerance)
+    SW.StartEntity("SURFACE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTSymmetryTolerance)
+    SW.StartEntity("SYMMETRY_TOLERANCE");
+  else if (aType == StepDimTol_GTTTotalRunoutTolerance)
+    SW.StartEntity("TOTAL_RUNOUT_TOLERANCE");
+}
+
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod::Share
+  (const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod)& ent,
+   Interface_EntityIterator& iter) const
+{
+  // Own fields of GeometricTolerance
+  iter.AddItem (ent->Magnitude());
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+  // Own fields of GeometricToleranceWithDatumReference
+  for (Standard_Integer i3=1; i3<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
+  }
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx
new file mode 100644 (file)
index 0000000..30e1848
--- /dev/null
@@ -0,0 +1,47 @@
+// Created on: 2015-08-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod_HeaderFile
+#define _RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for GeoTolAndGeoTolWthDatRefAndGeoTolWthMod
+class RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMod_HeaderFile
index f23d58d..ab43867 100644 (file)
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_DatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_GeometricToleranceWithDatumReference.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 #include <StepDimTol_LimitCondition.hxx>
 #include <StepDimTol_ModifiedGeometricTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol
@@ -55,20 +55,20 @@ void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol::ReadStep
   data->ReadString (num, 2, "description", ach, aDescription);
   Handle(StepBasic_MeasureWithUnit) aMagnitude;
   data->ReadEntity (num, 3, "magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
-  Handle(StepRepr_ShapeAspect) aTolerancedShapeAspect;
-  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aTolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, aTolerancedShapeAspect);
 
   data->NamedForComplex("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",num0,num,ach);
   // Own fields of GeometricToleranceWithDatumReference
-  Handle(StepDimTol_HArray1OfDatumReference) aDatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aDatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 1, "datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aDatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aDatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aDatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -110,13 +110,13 @@ void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol::WriteStep
   SW.Send(ent->Name());
   SW.Send(ent->Description());
   SW.Send(ent->Magnitude());
-  SW.Send(ent->TolerancedShapeAspect());
+  SW.Send(ent->TolerancedShapeAspect().Value());
   SW.StartEntity("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE");
   SW.OpenSub();
-  for(Standard_Integer i4=1; i4<=ent->GetGeometricToleranceWithDatumReference()->DatumSystem()->Length(); i4++) {
-    Handle(StepDimTol_DatumReference) Var0 =
-      ent->GetGeometricToleranceWithDatumReference()->DatumSystem()->Value(i4);
-    SW.Send(Var0);
+  for(Standard_Integer i4=1; i4<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i4++) {
+    StepDimTol_DatumSystemOrReference Var0 =
+      ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i4);
+    SW.Send(Var0.Value());
   }
   SW.CloseSub();
   SW.StartEntity("MODIFIED_GEOMETRIC_TOLERANCE");
@@ -140,10 +140,10 @@ void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol::Share
 {
   // Own fields of GeometricTolerance
   iter.AddItem (ent->Magnitude());
-  iter.AddItem (ent->TolerancedShapeAspect());
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
   // Own fields of GeometricToleranceWithDatumReference
-  for (Standard_Integer i3=1; i3<=ent->GetGeometricToleranceWithDatumReference()->DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->GetGeometricToleranceWithDatumReference()->DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.cxx
new file mode 100644 (file)
index 0000000..5099603
--- /dev/null
@@ -0,0 +1,197 @@
+// Created on: 2015-08-11
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
+#include <StepBasic_LengthMeasureWithUnit.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_DatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceType.hxx>
+#include <StepDimTol_GeometricToleranceWithDatumReference.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
+#include <StepDimTol_UnequallyDisposedGeometricTolerance.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol
+//purpose  : 
+//=======================================================================
+RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol::RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol()
+{
+}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num0, Handle(Interface_Check)& ach,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol)& ent) const
+{
+  Standard_Integer num = 0;//num0;
+  data->NamedForComplex("GEOMETRIC_TOLERANCE",num0,num,ach);
+  if (!data->CheckNbParams(num,4,ach,"geometric_tolerance")) return;
+  // Own fields of GeometricTolerance
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "description", ach, aDescription);
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  data->NamedForComplex("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",num0,num,ach);
+  // Own fields of GeometricToleranceWithDatumReference
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aDatumSystem;
+  Standard_Integer sub5 = 0;
+  if ( data->ReadSubList (num, 1, "datum_system", ach, sub5) ) {
+    Standard_Integer nb0 = data->NbParams(sub5);
+    aDatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
+    Standard_Integer num2 = sub5;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
+      aDatumSystem->SetValue(i0, anIt0);
+    }
+  }
+  // Initialize entity
+  Handle(StepDimTol_GeometricToleranceWithDatumReference) aGTWDR =
+    new StepDimTol_GeometricToleranceWithDatumReference;
+  aGTWDR->SetDatumSystem(aDatumSystem);
+  
+  data->NamedForComplex("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE", num0, num, ach);
+  Handle (StepBasic_LengthMeasureWithUnit) aDisplacement;
+  data->ReadEntity(num, 1, "displacement", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), aDisplacement);
+  //Initialize entity
+  Handle(StepDimTol_UnequallyDisposedGeometricTolerance) anUDGT = new 
+    StepDimTol_UnequallyDisposedGeometricTolerance;
+  anUDGT->SetDisplacement(aDisplacement);
+
+  //Choose type of geometric tolerance
+  TColStd_SequenceOfAsciiString aTypes;
+  data->ComplexType(num0, aTypes);
+  Standard_CString aFirst = aTypes.First().ToCString();
+  Standard_CString aLast = aTypes.Value(3).ToCString();
+  StepDimTol_GeometricToleranceType aType = StepDimTol_GTTPositionTolerance;
+  if (strcmp(aFirst, "ANGULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTAngularityTolerance;
+  else if (strcmp(aFirst, "CIRCULAR_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTCircularRunoutTolerance;
+  else if (strcmp(aFirst, "COAXIALITY_TOLERANCE") == 0) aType = StepDimTol_GTTCoaxialityTolerance;
+  else if (strcmp(aFirst, "CONCENTRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTConcentricityTolerance;
+  else if (strcmp(aFirst, "CYLINDRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTCylindricityTolerance;
+  else if (strcmp(aFirst, "FLATNESS_TOLERANCE") == 0) aType = StepDimTol_GTTFlatnessTolerance;
+  else if (strcmp(aLast, "LINE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTLineProfileTolerance;
+  else if (strcmp(aLast, "PARALLELISM_TOLERANCE") == 0) aType = StepDimTol_GTTParallelismTolerance;
+  else if (strcmp(aLast, "PERPENDICULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTPerpendicularityTolerance;
+  else if (strcmp(aLast, "POSITION_TOLERANCE") == 0) aType = StepDimTol_GTTPositionTolerance;
+  else if (strcmp(aLast, "ROUNDNESS_TOLERANCE") == 0) aType = StepDimTol_GTTRoundnessTolerance;
+  else if (strcmp(aLast, "STRAIGHTNESS_TOLERANCE") == 0) aType = StepDimTol_GTTStraightnessTolerance;
+  else if (strcmp(aLast, "SURFACE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTSurfaceProfileTolerance;
+  else if (strcmp(aLast, "SYMMETRY_TOLERANCE") == 0) aType = StepDimTol_GTTSymmetryTolerance;
+  else if (strcmp(aLast, "TOTAL_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTTotalRunoutTolerance;
+  else ach->AddFail("The type of geometric tolerance is not supported");
+
+  // Initialize entity
+  ent->Init(aName, aDescription, aMagnitude, aTolerancedShapeAspect, aGTWDR, aType, anUDGT);
+}
+
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol)& ent) const
+{
+  StepDimTol_GeometricToleranceType aType = ent->GetToleranceType();
+  if (aType == StepDimTol_GTTAngularityTolerance)
+    SW.StartEntity("ANGULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCircularRunoutTolerance)
+    SW.StartEntity("CIRCULAR_RUNOUT_TOLERANCE");
+  else if (aType == StepDimTol_GTTCoaxialityTolerance)
+    SW.StartEntity("COAXIALITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTConcentricityTolerance)
+    SW.StartEntity("CONCENTRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCylindricityTolerance)
+    SW.StartEntity("CYLINDRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTFlatnessTolerance)
+    SW.StartEntity("FLATNESS_TOLERANCE");
+
+  SW.StartEntity("GEOMETRIC_TOLERANCE");
+  SW.Send(ent->Name());
+  SW.Send(ent->Description());
+  SW.Send(ent->Magnitude());
+  SW.Send(ent->TolerancedShapeAspect().Value());
+  SW.StartEntity("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE");
+  SW.OpenSub();
+  for(Standard_Integer i4=1; i4<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i4++) {
+    StepDimTol_DatumSystemOrReference Var0 =
+      ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i4);
+    SW.Send(Var0.Value());
+  }
+  SW.CloseSub();
+
+  if (aType == StepDimTol_GTTLineProfileTolerance)
+    SW.StartEntity("LINE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTParallelismTolerance)
+    SW.StartEntity("PARALLELISM_TOLERANCE");
+  else if (aType == StepDimTol_GTTPerpendicularityTolerance)
+    SW.StartEntity("PERPENDICULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTPositionTolerance)
+    SW.StartEntity("POSITION_TOLERANCE");
+  else if (aType == StepDimTol_GTTRoundnessTolerance)
+    SW.StartEntity("ROUNDNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTStraightnessTolerance)
+    SW.StartEntity("STRAIGHTNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTSurfaceProfileTolerance)
+    SW.StartEntity("SURFACE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTSymmetryTolerance)
+    SW.StartEntity("SYMMETRY_TOLERANCE");
+  else if (aType == StepDimTol_GTTTotalRunoutTolerance)
+    SW.StartEntity("TOTAL_RUNOUT_TOLERANCE");
+    
+  SW.StartEntity("UNEQUALLY_DISPOSED_GEOMETRIC_TOLRANCE");
+  SW.Send(ent->GetUnequallyDisposedGeometricTolerance()->Displacement());
+}
+
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol::Share
+  (const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol)& ent,
+   Interface_EntityIterator& iter) const
+{
+  // Own fields of GeometricTolerance
+  iter.AddItem (ent->Magnitude());
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+  // Own fields of GeometricToleranceWithDatumReference
+  for (Standard_Integer i3=1; i3<=ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->GetGeometricToleranceWithDatumReference()->DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
+  }
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx
new file mode 100644 (file)
index 0000000..57156b5
--- /dev/null
@@ -0,0 +1,47 @@
+// Created on: 2015-08-11
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol_HeaderFile
+#define _RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol
+class RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthMod.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthMod.cxx
new file mode 100644 (file)
index 0000000..dcba7d4
--- /dev/null
@@ -0,0 +1,209 @@
+// Created on: 2015-08-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceType.hxx>
+#include <StepDimTol_GeoTolAndGeoTolWthMod.hxx>
+#include <StepDimTol_GeometricToleranceWithModifiers.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeoTolAndGeoTolWthMod
+//purpose  : 
+//=======================================================================
+RWStepDimTol_RWGeoTolAndGeoTolWthMod::RWStepDimTol_RWGeoTolAndGeoTolWthMod()
+{
+}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthMod::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num0, Handle(Interface_Check)& ach,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthMod)& ent) const
+{
+  Standard_Integer num = 0;//num0;
+  data->NamedForComplex("GEOMETRIC_TOLERANCE",num0,num,ach);
+  if (!data->CheckNbParams(num,4,ach,"geometric_tolerance")) return;
+  // Own fields of GeometricTolerance
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "description", ach, aDescription);
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  data->NamedForComplex("GEOMETRIC_TOLERANCE_WITH_MODIFIERS",num0,num,ach);
+  // Own fields of ModifiedGeometricTolerance
+  Handle(StepDimTol_HArray1OfGeometricToleranceModifier) aModifiers;
+  Standard_Integer sub = 0;
+  if ( data->ReadSubList (num, 1, "modifiers", ach, sub) ) {
+    Standard_Integer nb0 = data->NbParams(sub);
+    aModifiers = new StepDimTol_HArray1OfGeometricToleranceModifier (1, nb0);
+    Standard_Integer num2 = sub;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_GeometricToleranceModifier anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+      if (data->ParamType (num2, i0) == Interface_ParamEnum) {
+        Standard_CString text = data->ParamCValue(num2, i0);
+        if      (strcmp(text, ".ANY_CROSS_SECTION.")==0) anIt0 = StepDimTol_GTMAnyCrossSection;
+        else if (strcmp(text, ".COMMON_ZONE.")==0) anIt0 = StepDimTol_GTMCommonZone;
+        else if (strcmp(text, ".EACH_RADIAL_ELEMENT.")==0) anIt0 = StepDimTol_GTMEachRadialElement;
+        else if (strcmp(text, ".FREE_STATE.")==0) anIt0 = StepDimTol_GTMFreeState;
+        else if (strcmp(text, ".LEAST_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMLeastMaterialRequirement;
+        else if (strcmp(text, ".LINE_ELEMENT.")==0) anIt0 = StepDimTol_GTMLineElement;
+        else if (strcmp(text, ".MAJOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMajorDiameter;
+        else if (strcmp(text, ".MAXIMUM_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+        else if (strcmp(text, ".MINOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMinorDiameter;
+        else if (strcmp(text, ".NOT_CONVEX.")==0) anIt0 = StepDimTol_GTMNotConvex;
+        else if (strcmp(text, ".PITCH_DIAMETER.")==0) anIt0 = StepDimTol_GTMPitchDiameter;
+        else if (strcmp(text, ".RECIPROCITY_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMReciprocityRequirement;
+        else if (strcmp(text, ".SEPARATE_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMSeparateRequirement;
+        else if (strcmp(text, ".STATISTICAL_TOLERANCE.")==0) anIt0 = StepDimTol_GTMStatisticalTolerance;
+        else if (strcmp(text, ".TANGENT_PLANE.")==0) anIt0 = StepDimTol_GTMTangentPlane;
+        else ach->AddFail("Parameter #5 (modifiers) has not allowed value");
+      }
+      else ach->AddFail("Parameter #5 (modifier) is not set of enumerations");
+      aModifiers->SetValue(i0, anIt0);
+    }
+  }
+  Handle(StepDimTol_GeometricToleranceWithModifiers) aGTWM = new StepDimTol_GeometricToleranceWithModifiers;
+  aGTWM->SetModifiers(aModifiers);
+
+  //Choose type of geometric tolerance
+  TColStd_SequenceOfAsciiString aTypes;
+  data->ComplexType(num0, aTypes);
+  Standard_CString aFirst = aTypes.First().ToCString();
+  Standard_CString aLast = aTypes.Last().ToCString();
+  StepDimTol_GeometricToleranceType aType = StepDimTol_GTTPositionTolerance;
+  if (strcmp(aFirst, "ANGULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTAngularityTolerance;
+  else if (strcmp(aFirst, "CIRCULAR_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTCircularRunoutTolerance;
+  else if (strcmp(aFirst, "COAXIALITY_TOLERANCE") == 0) aType = StepDimTol_GTTCoaxialityTolerance;
+  else if (strcmp(aFirst, "CONCENTRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTConcentricityTolerance;
+  else if (strcmp(aFirst, "CYLINDRICITY_TOLERANCE") == 0) aType = StepDimTol_GTTCylindricityTolerance;
+  else if (strcmp(aFirst, "FLATNESS_TOLERANCE") == 0) aType = StepDimTol_GTTFlatnessTolerance;
+  else if (strcmp(aLast, "LINE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTLineProfileTolerance;
+  else if (strcmp(aLast, "PARALLELISM_TOLERANCE") == 0) aType = StepDimTol_GTTParallelismTolerance;
+  else if (strcmp(aLast, "PERPENDICULARITY_TOLERANCE") == 0) aType = StepDimTol_GTTPerpendicularityTolerance;
+  else if (strcmp(aLast, "POSITION_TOLERANCE") == 0) aType = StepDimTol_GTTPositionTolerance;
+  else if (strcmp(aLast, "ROUNDNESS_TOLERANCE") == 0) aType = StepDimTol_GTTRoundnessTolerance;
+  else if (strcmp(aLast, "STRAIGHTNESS_TOLERANCE") == 0) aType = StepDimTol_GTTStraightnessTolerance;
+  else if (strcmp(aLast, "SURFACE_PROFILE_TOLERANCE") == 0) aType = StepDimTol_GTTSurfaceProfileTolerance;
+  else if (strcmp(aLast, "SYMMETRY_TOLERANCE") == 0) aType = StepDimTol_GTTSymmetryTolerance;
+  else if (strcmp(aLast, "TOTAL_RUNOUT_TOLERANCE") == 0) aType = StepDimTol_GTTTotalRunoutTolerance;
+  else ach->AddFail("The type of geometric tolerance is not supported");
+
+  // Initialize entity
+  ent->Init(aName, aDescription, aMagnitude, aTolerancedShapeAspect, aGTWM, aType);
+
+}
+
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthMod::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepDimTol_GeoTolAndGeoTolWthMod)& ent) const
+{
+  StepDimTol_GeometricToleranceType aType = ent->GetToleranceType();
+  if (aType == StepDimTol_GTTAngularityTolerance)
+    SW.StartEntity("ANGULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCircularRunoutTolerance)
+    SW.StartEntity("CIRCULAR_RUNOUT_TOLERANCE");
+  else if (aType == StepDimTol_GTTCoaxialityTolerance)
+    SW.StartEntity("COAXIALITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTConcentricityTolerance)
+    SW.StartEntity("CONCENTRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTCylindricityTolerance)
+    SW.StartEntity("CYLINDRICITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTFlatnessTolerance)
+    SW.StartEntity("FLATNESS_TOLERANCE");
+
+  SW.StartEntity("GEOMETRIC_TOLERANCE");
+  SW.Send(ent->Name());
+  SW.Send(ent->Description());
+  SW.Send(ent->Magnitude());
+  SW.Send(ent->TolerancedShapeAspect().Value());
+  SW.StartEntity("GEOMETRIC_TOLERANCE_WITH_MODIFIERS");
+  SW.OpenSub();
+  Handle(StepDimTol_GeometricToleranceWithModifiers) aGTWM = ent->GetGeometricToleranceWithModifiers();
+  for (Standard_Integer i = 1;  i <= aGTWM->NbModifiers();  i++) {
+    switch (aGTWM->ModifierValue(i)) {
+      case StepDimTol_GTMAnyCrossSection: SW.SendEnum (".ANY_CROSS_SECTION."); break;
+      case StepDimTol_GTMCommonZone: SW.SendEnum (".COMMON_ZONE."); break;
+      case StepDimTol_GTMEachRadialElement: SW.SendEnum (".EACH_RADIAL_ELEMENT."); break;
+      case StepDimTol_GTMFreeState: SW.SendEnum (".FREE_STATE."); break;
+      case StepDimTol_GTMLeastMaterialRequirement: SW.SendEnum (".LEAST_MATERIAL_REQUIREMENT."); break;
+      case StepDimTol_GTMLineElement: SW.SendEnum (".LINE_ELEMENT."); break;
+      case StepDimTol_GTMMajorDiameter: SW.SendEnum (".MAJOR_DIAMETER."); break;
+      case StepDimTol_GTMMaximumMaterialRequirement: SW.SendEnum (".MAXIMUM_MATERIAL_REQUIREMENT."); break;
+      case StepDimTol_GTMMinorDiameter: SW.SendEnum (".MINOR_DIAMETER."); break;
+      case StepDimTol_GTMNotConvex: SW.SendEnum (".NOT_CONVEX."); break;
+      case StepDimTol_GTMPitchDiameter: SW.SendEnum (".PITCH_DIAMETER."); break;
+      case StepDimTol_GTMReciprocityRequirement: SW.SendEnum (".RECIPROCITY_REQUIREMENT."); break;
+      case StepDimTol_GTMSeparateRequirement: SW.SendEnum (".SEPARATE_REQUIREMENT."); break;
+      case StepDimTol_GTMStatisticalTolerance: SW.SendEnum (".STATISTICAL_TOLERANCE."); break;
+      case StepDimTol_GTMTangentPlane: SW.SendEnum (".TANGENT_PLANE."); break;
+    }
+  }
+  SW.CloseSub();
+  if (aType == StepDimTol_GTTLineProfileTolerance)
+    SW.StartEntity("LINE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTParallelismTolerance)
+    SW.StartEntity("PARALLELISM_TOLERANCE");
+  else if (aType == StepDimTol_GTTPerpendicularityTolerance)
+    SW.StartEntity("PERPENDICULARITY_TOLERANCE");
+  else if (aType == StepDimTol_GTTPositionTolerance)
+    SW.StartEntity("POSITION_TOLERANCE");
+  else if (aType == StepDimTol_GTTRoundnessTolerance)
+    SW.StartEntity("ROUNDNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTStraightnessTolerance)
+    SW.StartEntity("STRAIGHTNESS_TOLERANCE");
+  else if (aType == StepDimTol_GTTSurfaceProfileTolerance)
+    SW.StartEntity("SURFACE_PROFILE_TOLERANCE");
+  else if (aType == StepDimTol_GTTSymmetryTolerance)
+    SW.StartEntity("SYMMETRY_TOLERANCE");
+  else if (aType == StepDimTol_GTTTotalRunoutTolerance)
+    SW.StartEntity("TOTAL_RUNOUT_TOLERANCE");
+}
+
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeoTolAndGeoTolWthMod::Share
+  (const Handle(StepDimTol_GeoTolAndGeoTolWthMod)& ent,
+   Interface_EntityIterator& iter) const
+{
+  // Own fields of GeometricTolerance
+  iter.AddItem (ent->Magnitude());
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeoTolAndGeoTolWthMod.hxx
new file mode 100644 (file)
index 0000000..ff2fda2
--- /dev/null
@@ -0,0 +1,47 @@
+// Created on: 2015-08-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeoTolAndGeoTolWthMod_HeaderFile
+#define _RWStepDimTol_RWGeoTolAndGeoTolWthMod_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeoTolAndGeoTolWthMod;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write Module for GeoTolAndGeoTolWthMod
+class RWStepDimTol_RWGeoTolAndGeoTolWthMod
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepDimTol_RWGeoTolAndGeoTolWthMod();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeoTolAndGeoTolWthMod)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeoTolAndGeoTolWthMod)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepDimTol_GeoTolAndGeoTolWthMod)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepDimTol_RWGeoTolAndGeoTolWthMod_HeaderFile
index 0942b17..fad6ebe 100644 (file)
@@ -22,7 +22,7 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_GeometricTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWGeometricTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWGeometricTolerance::ReadStep (const Handle(StepData_StepRead
   Handle(StepBasic_MeasureWithUnit) aMagnitude;
   data->ReadEntity (num, 3, "magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
 
-  Handle(StepRepr_ShapeAspect) aTolerancedShapeAspect;
-  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aTolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "toleranced_shape_aspect", ach, aTolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aName,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWGeometricTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->Magnitude());
 
-  SW.Send (ent->TolerancedShapeAspect());
+  SW.Send (ent->TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWGeometricTolerance::Share (const Handle(StepDimTol_Geometric
 
   iter.AddItem (ent->Magnitude());
 
-  iter.AddItem (ent->TolerancedShapeAspect());
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
 }
index 8669d7a..58db603 100644 (file)
@@ -22,9 +22,9 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_DatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_GeometricToleranceWithDatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
-#include <StepRepr_ShapeAspect.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWGeometricToleranceWithDatumReference
@@ -58,20 +58,20 @@ void RWStepDimTol_RWGeometricToleranceWithDatumReference::ReadStep (const Handle
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Own fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aDatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aDatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aDatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aDatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aDatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWGeometricToleranceWithDatumReference::WriteStep (StepData_St
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Own fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWGeometricToleranceWithDatumReference::Share (const Handle(St
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Own fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.cxx
new file mode 100644 (file)
index 0000000..6bddf6e
--- /dev/null
@@ -0,0 +1,150 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx>
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepBasic_LengthMeasureWithUnit.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_AreaUnitType.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceWithDefinedAreaUnit.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit::RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit::
+  ReadStep (const Handle(StepData_StepReaderData)& data,
+            const Standard_Integer num,
+            Handle(Interface_Check)& ach,
+            const Handle(StepDimTol_GeometricToleranceWithDefinedAreaUnit) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num, 7, ach, "geometric_tolerance_with_defined_area_unit") ) return;
+
+  // inherited fields from GeometricTolerance
+
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "geometric_tolerance.name", ach, aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "geometric_tolerance.description", ach, aDescription);
+
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  // inherited fields from GeometricToleranceWithDefinedUnit
+
+  Handle(StepBasic_LengthMeasureWithUnit) anUnitSize;
+  data->ReadEntity (num, 5, "geometric_tolerance_with_defined_unit.unit_size", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), anUnitSize);
+
+  // own fields of GeometricToleranceWithDefinedAreaUnit
+  StepDimTol_AreaUnitType aType = StepDimTol_Circular;
+  if (data->ParamType (num, 6) == Interface_ParamEnum) {
+    Standard_CString text = data->ParamCValue(num, 6);
+    if      (strcmp(text, ".CIRCULAR.")==0) aType = StepDimTol_Circular;
+    else if (strcmp(text, ".RECTANGULAR.")==0) aType = StepDimTol_Rectangular;
+    else if (strcmp(text, ".SQUARE.")==0) aType = StepDimTol_Square;
+    else ach->AddFail("Parameter #6 (area_type) has not allowed value");
+  }
+  else ach->AddFail("Parameter #6 (area_type) is not enumerations");
+
+  Handle(StepBasic_LengthMeasureWithUnit) aSecondUnitSize;
+  Standard_Boolean hasSecondUnitSize = data->IsParamDefined(num, 7);
+  if (hasSecondUnitSize)
+    data->ReadEntity(num, 7, "second_unit_size", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), aSecondUnitSize);
+
+  // Initialize entity
+  ent->Init(aName,
+            aDescription,
+            aMagnitude,
+            aTolerancedShapeAspect,
+            anUnitSize,
+            aType,
+            hasSecondUnitSize,
+            aSecondUnitSize);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit::
+  WriteStep (StepData_StepWriter& SW,
+             const Handle(StepDimTol_GeometricToleranceWithDefinedAreaUnit) &ent) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->Magnitude());
+
+  SW.Send (ent->TolerancedShapeAspect().Value());
+
+  // inherited fields from GeometricToleranceWithDefinedUnit
+
+  SW.Send (ent->UnitSize());
+
+  // own fields of GeometricToleranceWithDefinedAreaUnit
+
+  switch (ent->AreaType()) {
+    case StepDimTol_Circular: SW.SendEnum (".CIRCULAR."); break;
+    case StepDimTol_Rectangular: SW.SendEnum (".RECTANGULAR."); break;
+    case StepDimTol_Square: SW.SendEnum (".SQUARE."); break;
+  }
+
+  if (ent->HasSecondUnitSize())
+    SW.Send (ent->SecondUnitSize());
+  else
+    SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit::
+  Share (const Handle(StepDimTol_GeometricToleranceWithDefinedAreaUnit) &ent,
+         Interface_EntityIterator& iter) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  iter.AddItem (ent->Magnitude());
+
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit.hxx
new file mode 100644 (file)
index 0000000..64d8e57
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit_HeaderFile
+#define _RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeometricToleranceWithDefinedAreaUnit;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for GeometricToleranceWithDefinedAreaUnit
+class RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit();
+  
+  //! Reads GeometricToleranceWithDefinedAreaUnit
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeometricToleranceWithDefinedAreaUnit)& ent)  const;
+  
+  //! Writes GeometricToleranceWithDefinedAreaUnit
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeometricToleranceWithDefinedAreaUnit)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_GeometricToleranceWithDefinedAreaUnit)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWGeometricToleranceWithDefinedAreaUnit_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedUnit.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedUnit.cxx
new file mode 100644 (file)
index 0000000..ac88511
--- /dev/null
@@ -0,0 +1,114 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepBasic_LengthMeasureWithUnit.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceWithDefinedUnit.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeometricToleranceWithDefinedUnit
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWGeometricToleranceWithDefinedUnit::RWStepDimTol_RWGeometricToleranceWithDefinedUnit ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithDefinedUnit::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                  const Standard_Integer num,
+                                                  Handle(Interface_Check)& ach,
+                                                  const Handle(StepDimTol_GeometricToleranceWithDefinedUnit) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num, 5, ach, "geometric_tolerance_with_defined_unit") ) return;
+
+  // inherited fields from GeometricTolerance
+
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "geometric_tolerance.name", ach, aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "geometric_tolerance.description", ach, aDescription);
+
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  // own fields of GeometricToleranceWithDefinedUnit
+
+  Handle(StepBasic_LengthMeasureWithUnit) anUnitSize;
+  data->ReadEntity (num, 5, "unit_size", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), anUnitSize);
+
+  // Initialize entity
+  ent->Init(aName,
+            aDescription,
+            aMagnitude,
+            aTolerancedShapeAspect,
+            anUnitSize);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithDefinedUnit::
+  WriteStep (StepData_StepWriter& SW,
+             const Handle(StepDimTol_GeometricToleranceWithDefinedUnit) &ent) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->Magnitude());
+
+  SW.Send (ent->TolerancedShapeAspect().Value());
+
+  // own fields of GeometricToleranceWithDefinedUnit
+
+  SW.Send (ent->UnitSize());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithDefinedUnit::Share (const Handle(StepDimTol_GeometricToleranceWithDefinedUnit) &ent,
+                                                              Interface_EntityIterator& iter) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  iter.AddItem (ent->Magnitude());
+
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithDefinedUnit.hxx
new file mode 100644 (file)
index 0000000..de957cc
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeometricToleranceWithDefinedUnit_HeaderFile
+#define _RWStepDimTol_RWGeometricToleranceWithDefinedUnit_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeometricToleranceWithDefinedUnit;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for GeometricToleranceWithDefinedUnit
+class RWStepDimTol_RWGeometricToleranceWithDefinedUnit 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWGeometricToleranceWithDefinedUnit();
+  
+  //! Reads GeometricToleranceWithDefinedUnit
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeometricToleranceWithDefinedUnit)& ent)  const;
+  
+  //! Writes GeometricToleranceWithDefinedUnit
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeometricToleranceWithDefinedUnit)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_GeometricToleranceWithDefinedUnit)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWGeometricToleranceWithDefinedUnit_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.cxx
new file mode 100644 (file)
index 0000000..21e2b31
--- /dev/null
@@ -0,0 +1,176 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx>
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepBasic_LengthMeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceModifier.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceWithMaximumTolerance.hxx>
+#include <StepDimTol_HArray1OfGeometricToleranceModifier.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeometricTolerance
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWGeometricToleranceWithMaximumTolerance::RWStepDimTol_RWGeometricToleranceWithMaximumTolerance ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithMaximumTolerance::
+  ReadStep (const Handle(StepData_StepReaderData)& data,
+            const Standard_Integer num,
+            Handle(Interface_Check)& ach,
+            const Handle(StepDimTol_GeometricToleranceWithMaximumTolerance) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num, 6, ach, "geometric_tolerance_with_modifiers") ) return;
+
+  // inherited fields from GeometricTolerance
+
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "geometric_tolerance.name", ach, aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "geometric_tolerance.description", ach, aDescription);
+
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  // inherited fields from GeometricToleranceWithModifiers
+  Handle(StepDimTol_HArray1OfGeometricToleranceModifier) aModifiers;
+  Standard_Integer sub5 = 0;
+  if ( data->ReadSubList (num, 5, "geometric_tolerance_with_modifiers.modifiers", ach, sub5) ) {
+    Standard_Integer nb0 = data->NbParams(sub5);
+    aModifiers = new StepDimTol_HArray1OfGeometricToleranceModifier (1, nb0);
+    Standard_Integer num2 = sub5;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_GeometricToleranceModifier anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+      if (data->ParamType (num2, i0) == Interface_ParamEnum) {
+        Standard_CString text = data->ParamCValue(num2, i0);
+        if      (strcmp(text, ".ANY_CROSS_SECTION.")==0) anIt0 = StepDimTol_GTMAnyCrossSection;
+        else if (strcmp(text, ".COMMON_ZONE.")==0) anIt0 = StepDimTol_GTMCommonZone;
+        else if (strcmp(text, ".EACH_RADIAL_ELEMENT.")==0) anIt0 = StepDimTol_GTMEachRadialElement;
+        else if (strcmp(text, ".FREE_STATE.")==0) anIt0 = StepDimTol_GTMFreeState;
+        else if (strcmp(text, ".LEAST_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMLeastMaterialRequirement;
+        else if (strcmp(text, ".LINE_ELEMENT.")==0) anIt0 = StepDimTol_GTMLineElement;
+        else if (strcmp(text, ".MAJOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMajorDiameter;
+        else if (strcmp(text, ".MAXIMUM_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+        else if (strcmp(text, ".MINOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMinorDiameter;
+        else if (strcmp(text, ".NOT_CONVEX.")==0) anIt0 = StepDimTol_GTMNotConvex;
+        else if (strcmp(text, ".PITCH_DIAMETER.")==0) anIt0 = StepDimTol_GTMPitchDiameter;
+        else if (strcmp(text, ".RECIPROCITY_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMReciprocityRequirement;
+        else if (strcmp(text, ".SEPARATE_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMSeparateRequirement;
+        else if (strcmp(text, ".STATISTICAL_TOLERANCE.")==0) anIt0 = StepDimTol_GTMStatisticalTolerance;
+        else if (strcmp(text, ".TANGENT_PLANE.")==0) anIt0 = StepDimTol_GTMTangentPlane;
+        else ach->AddFail("Parameter #5 (modifiers) has not allowed value");
+      }
+      else ach->AddFail("Parameter #5 (modifier) is not set of enumerations");
+      aModifiers->SetValue(i0, anIt0);
+    }
+  }
+
+  // own fields of GeometricToleranceWithMaximumTolerance
+
+  Handle(StepBasic_LengthMeasureWithUnit) aMaximumUpperTolerance;
+  data->ReadEntity (num, 6, "maximum_upper_tolerance", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), aMaximumUpperTolerance);
+
+  // Initialize entity
+  ent->Init(aName,
+            aDescription,
+            aMagnitude,
+            aTolerancedShapeAspect,
+            aModifiers,
+            aMaximumUpperTolerance);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithMaximumTolerance::
+  WriteStep (StepData_StepWriter& SW,
+  const Handle(StepDimTol_GeometricToleranceWithMaximumTolerance) &ent) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->Magnitude());
+
+  SW.Send (ent->TolerancedShapeAspect().Value());
+
+  // inherited fields from GeometricToleranceWithModifiers
+
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbModifiers();  i++) {
+    switch (ent->ModifierValue(i)) {
+      case StepDimTol_GTMAnyCrossSection: SW.SendEnum (".ANY_CROSS_SECTION."); break;
+      case StepDimTol_GTMCommonZone: SW.SendEnum (".COMMON_ZONE."); break;
+      case StepDimTol_GTMEachRadialElement: SW.SendEnum (".EACH_RADIAL_ELEMENT."); break;
+      case StepDimTol_GTMFreeState: SW.SendEnum (".FREE_STATE."); break;
+      case StepDimTol_GTMLeastMaterialRequirement: SW.SendEnum (".LEAST_MATERIAL_REQUIREMENT."); break;
+      case StepDimTol_GTMLineElement: SW.SendEnum (".LINE_ELEMENT."); break;
+      case StepDimTol_GTMMajorDiameter: SW.SendEnum (".MAJOR_DIAMETER."); break;
+      case StepDimTol_GTMMaximumMaterialRequirement: SW.SendEnum (".MAXIMUM_MATERIAL_REQUIREMENT."); break;
+      case StepDimTol_GTMMinorDiameter: SW.SendEnum (".MINOR_DIAMETER."); break;
+      case StepDimTol_GTMNotConvex: SW.SendEnum (".NOT_CONVEX."); break;
+      case StepDimTol_GTMPitchDiameter: SW.SendEnum (".PITCH_DIAMETER."); break;
+      case StepDimTol_GTMReciprocityRequirement: SW.SendEnum (".RECIPROCITY_REQUIREMENT."); break;
+      case StepDimTol_GTMSeparateRequirement: SW.SendEnum (".SEPARATE_REQUIREMENT."); break;
+      case StepDimTol_GTMStatisticalTolerance: SW.SendEnum (".STATISTICAL_TOLERANCE."); break;
+      case StepDimTol_GTMTangentPlane: SW.SendEnum (".TANGENT_PLANE."); break;
+    }
+  }
+  SW.CloseSub();
+
+  // own fields of GeometricToleranceWithMaximumTolerance
+
+  SW.Send (ent->MaximumUpperTolerance());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithMaximumTolerance::
+  Share (const Handle(StepDimTol_GeometricToleranceWithMaximumTolerance) &ent,
+         Interface_EntityIterator& iter) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  iter.AddItem (ent->Magnitude());
+
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithMaximumTolerance.hxx
new file mode 100644 (file)
index 0000000..f44e5c8
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeometricToleranceWithMaximumTolerance_HeaderFile
+#define _RWStepDimTol_RWGeometricToleranceWithMaximumTolerance_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeometricToleranceWithMaximumTolerance;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for GeometricToleranceWithMaximumTolerance
+class RWStepDimTol_RWGeometricToleranceWithMaximumTolerance 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWGeometricToleranceWithMaximumTolerance();
+  
+  //! Reads GeometricToleranceWithMaximumTolerance
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeometricToleranceWithMaximumTolerance)& ent)  const;
+  
+  //! Writes GeometricToleranceWithMaximumTolerance
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeometricToleranceWithMaximumTolerance)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_GeometricToleranceWithMaximumTolerance)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWGeometricToleranceWithMaximumTolerance_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithModifiers.cxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithModifiers.cxx
new file mode 100644 (file)
index 0000000..ea23bbb
--- /dev/null
@@ -0,0 +1,166 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWGeometricToleranceWithModifiers.hxx>
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceModifier.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_GeometricToleranceWithModifiers.hxx>
+#include <StepDimTol_HArray1OfGeometricToleranceModifier.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeometricTolerance
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWGeometricToleranceWithModifiers::RWStepDimTol_RWGeometricToleranceWithModifiers ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithModifiers::
+  ReadStep (const Handle(StepData_StepReaderData)& data,
+            const Standard_Integer num,
+            Handle(Interface_Check)& ach,
+            const Handle(StepDimTol_GeometricToleranceWithModifiers) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num, 5, ach, "geometric_tolerance_with_modifiers") ) return;
+
+  // inherited fields from GeometricTolerance
+
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "geometric_tolerance.name", ach, aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  data->ReadString (num, 2, "geometric_tolerance.description", ach, aDescription);
+
+  Handle(StepBasic_MeasureWithUnit) aMagnitude;
+  data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aMagnitude);
+
+  StepDimTol_GeometricToleranceTarget aTolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aTolerancedShapeAspect);
+
+  // own fields of GeometricToleranceWithModifiers
+  Handle(StepDimTol_HArray1OfGeometricToleranceModifier) aModifiers;
+  Standard_Integer sub5 = 0;
+  if ( data->ReadSubList (num, 5, "modifiers", ach, sub5) ) {
+    Standard_Integer nb0 = data->NbParams(sub5);
+    aModifiers = new StepDimTol_HArray1OfGeometricToleranceModifier (1, nb0);
+    Standard_Integer num2 = sub5;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      StepDimTol_GeometricToleranceModifier anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+      if (data->ParamType (num2, i0) == Interface_ParamEnum) {
+        Standard_CString text = data->ParamCValue(num2, i0);
+        if      (strcmp(text, ".ANY_CROSS_SECTION.")==0) anIt0 = StepDimTol_GTMAnyCrossSection;
+        else if (strcmp(text, ".COMMON_ZONE.")==0) anIt0 = StepDimTol_GTMCommonZone;
+        else if (strcmp(text, ".EACH_RADIAL_ELEMENT.")==0) anIt0 = StepDimTol_GTMEachRadialElement;
+        else if (strcmp(text, ".FREE_STATE.")==0) anIt0 = StepDimTol_GTMFreeState;
+        else if (strcmp(text, ".LEAST_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMLeastMaterialRequirement;
+        else if (strcmp(text, ".LINE_ELEMENT.")==0) anIt0 = StepDimTol_GTMLineElement;
+        else if (strcmp(text, ".MAJOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMajorDiameter;
+        else if (strcmp(text, ".MAXIMUM_MATERIAL_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMMaximumMaterialRequirement;
+        else if (strcmp(text, ".MINOR_DIAMETER.")==0) anIt0 = StepDimTol_GTMMinorDiameter;
+        else if (strcmp(text, ".NOT_CONVEX.")==0) anIt0 = StepDimTol_GTMNotConvex;
+        else if (strcmp(text, ".PITCH_DIAMETER.")==0) anIt0 = StepDimTol_GTMPitchDiameter;
+        else if (strcmp(text, ".RECIPROCITY_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMReciprocityRequirement;
+        else if (strcmp(text, ".SEPARATE_REQUIREMENT.")==0) anIt0 = StepDimTol_GTMSeparateRequirement;
+        else if (strcmp(text, ".STATISTICAL_TOLERANCE.")==0) anIt0 = StepDimTol_GTMStatisticalTolerance;
+        else if (strcmp(text, ".TANGENT_PLANE.")==0) anIt0 = StepDimTol_GTMTangentPlane;
+        else ach->AddFail("Parameter #5 (modifiers) has not allowed value");
+      }
+      else ach->AddFail("Parameter #5 (modifier) is not set of enumerations");
+      aModifiers->SetValue(i0, anIt0);
+    }
+  }
+
+  // Initialize entity
+  ent->Init(aName,
+            aDescription,
+            aMagnitude,
+            aTolerancedShapeAspect,
+            aModifiers);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithModifiers::
+  WriteStep (StepData_StepWriter& SW,
+  const Handle(StepDimTol_GeometricToleranceWithModifiers) &ent) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->Magnitude());
+
+  SW.Send (ent->TolerancedShapeAspect().Value());
+
+  // own fields of GeometricToleranceWithModifiers
+
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbModifiers();  i++) {
+    switch (ent->ModifierValue(i)) {
+      case StepDimTol_GTMAnyCrossSection: SW.SendEnum (".ANY_CROSS_SECTION."); break;
+      case StepDimTol_GTMCommonZone: SW.SendEnum (".COMMON_ZONE."); break;
+      case StepDimTol_GTMEachRadialElement: SW.SendEnum (".EACH_RADIAL_ELEMENT."); break;
+      case StepDimTol_GTMFreeState: SW.SendEnum (".FREE_STATE."); break;
+      case StepDimTol_GTMLeastMaterialRequirement: SW.SendEnum (".LEAST_MATERIAL_REQUIREMENT."); break;
+      case StepDimTol_GTMLineElement: SW.SendEnum (".LINE_ELEMENT."); break;
+      case StepDimTol_GTMMajorDiameter: SW.SendEnum (".MAJOR_DIAMETER."); break;
+      case StepDimTol_GTMMaximumMaterialRequirement: SW.SendEnum (".MAXIMUM_MATERIAL_REQUIREMENT."); break;
+      case StepDimTol_GTMMinorDiameter: SW.SendEnum (".MINOR_DIAMETER."); break;
+      case StepDimTol_GTMNotConvex: SW.SendEnum (".NOT_CONVEX."); break;
+      case StepDimTol_GTMPitchDiameter: SW.SendEnum (".PITCH_DIAMETER."); break;
+      case StepDimTol_GTMReciprocityRequirement: SW.SendEnum (".RECIPROCITY_REQUIREMENT."); break;
+      case StepDimTol_GTMSeparateRequirement: SW.SendEnum (".SEPARATE_REQUIREMENT."); break;
+      case StepDimTol_GTMStatisticalTolerance: SW.SendEnum (".STATISTICAL_TOLERANCE."); break;
+      case StepDimTol_GTMTangentPlane: SW.SendEnum (".TANGENT_PLANE."); break;
+    }
+  }
+  SW.CloseSub();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWGeometricToleranceWithModifiers::
+  Share (const Handle(StepDimTol_GeometricToleranceWithModifiers) &ent,
+         Interface_EntityIterator& iter) const
+{
+
+  // inherited fields from GeometricTolerance
+
+  iter.AddItem (ent->Magnitude());
+
+  iter.AddItem (ent->TolerancedShapeAspect().Value());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithModifiers.hxx b/src/RWStepDimTol/RWStepDimTol_RWGeometricToleranceWithModifiers.hxx
new file mode 100644 (file)
index 0000000..074a6fe
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-07
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWGeometricToleranceWithModifiers_HeaderFile
+#define _RWStepDimTol_RWGeometricToleranceWithModifiers_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_GeometricToleranceWithModifiers;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for GeometricToleranceWithModifiers
+class RWStepDimTol_RWGeometricToleranceWithModifiers 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWGeometricToleranceWithModifiers();
+  
+  //! Reads GeometricToleranceWithModifiers
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_GeometricToleranceWithModifiers)& ent)  const;
+  
+  //! Writes GeometricToleranceWithModifiers
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_GeometricToleranceWithModifiers)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_GeometricToleranceWithModifiers)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWGeometricToleranceWithModifiers_HeaderFile
index 3acfbfa..5566474 100644 (file)
@@ -21,8 +21,8 @@
 #include <StepBasic_MeasureWithUnit.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_LineProfileTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWLineProfileTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWLineProfileTolerance::ReadStep (const Handle(StepData_StepRe
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWLineProfileTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWLineProfileTolerance::Share (const Handle(StepDimTol_LinePro
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
index 1a04da6..e6cce26 100644 (file)
@@ -21,8 +21,8 @@
 #include <StepBasic_MeasureWithUnit.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_ModifiedGeometricTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWModifiedGeometricTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWModifiedGeometricTolerance::ReadStep (const Handle(StepData_
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Own fields of ModifiedGeometricTolerance
 
@@ -96,7 +96,7 @@ void RWStepDimTol_RWModifiedGeometricTolerance::WriteStep (StepData_StepWriter&
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Own fields of ModifiedGeometricTolerance
 
@@ -120,7 +120,7 @@ void RWStepDimTol_RWModifiedGeometricTolerance::Share (const Handle(StepDimTol_M
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Own fields of ModifiedGeometricTolerance
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWNonUniformZoneDefinition.cxx b/src/RWStepDimTol/RWStepDimTol_RWNonUniformZoneDefinition.cxx
new file mode 100644 (file)
index 0000000..46abb90
--- /dev/null
@@ -0,0 +1,104 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWNonUniformZoneDefinition.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_HArray1OfShapeAspect.hxx>
+#include <StepDimTol_NonUniformZoneDefinition.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWNonUniformZoneDefinition
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWNonUniformZoneDefinition::RWStepDimTol_RWNonUniformZoneDefinition ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWNonUniformZoneDefinition::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                        const Standard_Integer num,
+                                                        Handle(Interface_Check)& ach,
+                                                        const Handle(StepDimTol_NonUniformZoneDefinition) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,2,ach,"non_uniform_zone_definition") ) return;
+
+  // Inherited fields from ToleranceZoneDefinition
+
+  Handle(StepDimTol_ToleranceZone) aToleranceZone;
+  data->ReadEntity (num, 1, "tolerance_zone_definition.zone", ach, STANDARD_TYPE(StepDimTol_ToleranceZone), aToleranceZone);
+  
+  Handle(StepRepr_HArray1OfShapeAspect) anItems;
+  Handle(StepRepr_ShapeAspect) anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num,2,"tolerance_zone_definition.boundaries",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepRepr_HArray1OfShapeAspect (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+
+  // Initialize entity
+  ent->Init(aToleranceZone,
+            anItems);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWNonUniformZoneDefinition::WriteStep (StepData_StepWriter& SW,
+                                                         const Handle(StepDimTol_NonUniformZoneDefinition) &ent) const
+{
+  // Inherited fields of ToleranceZoneDefinition
+  
+  SW.Send (ent->Zone());
+  
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbBoundaries();  i++) {
+    SW.Send(ent->BoundariesValue(i));
+  }
+  SW.CloseSub();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWNonUniformZoneDefinition::Share (const Handle(StepDimTol_NonUniformZoneDefinition) &ent,
+                                                     Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields from ToleranceZoneDefinition
+
+  iter.AddItem (ent->Zone());
+  
+  Standard_Integer i, nb = ent->NbBoundaries();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->BoundariesValue(i));
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWNonUniformZoneDefinition.hxx b/src/RWStepDimTol/RWStepDimTol_RWNonUniformZoneDefinition.hxx
new file mode 100644 (file)
index 0000000..170d2fc
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWNonUniformZoneDefinition_HeaderFile
+#define _RWStepDimTol_RWNonUniformZoneDefinition_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_NonUniformZoneDefinition;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for NonUniformZoneDefinition
+class RWStepDimTol_RWNonUniformZoneDefinition 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWNonUniformZoneDefinition();
+  
+  //! Reads NonUniformZoneDefinition
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_NonUniformZoneDefinition)& ent)  const;
+  
+  //! Writes NonUniformZoneDefinition
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_NonUniformZoneDefinition)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_NonUniformZoneDefinition)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWNonUniformZoneDefinition_HeaderFile
index 5a78b81..878b90f 100644 (file)
@@ -22,9 +22,9 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 #include <StepDimTol_ParallelismTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWParallelismTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWParallelismTolerance::ReadStep (const Handle(StepData_StepRe
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWParallelismTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWParallelismTolerance::Share (const Handle(StepDimTol_Paralle
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
index 536e442..3bad573 100644 (file)
@@ -22,9 +22,9 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 #include <StepDimTol_PerpendicularityTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWPerpendicularityTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWPerpendicularityTolerance::ReadStep (const Handle(StepData_S
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWPerpendicularityTolerance::WriteStep (StepData_StepWriter& S
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWPerpendicularityTolerance::Share (const Handle(StepDimTol_Pe
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
index 8a024d2..65d170e 100644 (file)
@@ -21,8 +21,8 @@
 #include <StepBasic_MeasureWithUnit.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_PositionTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWPositionTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWPositionTolerance::ReadStep (const Handle(StepData_StepReade
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWPositionTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWPositionTolerance::Share (const Handle(StepDimTol_PositionTo
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWProjectedZoneDefinition.cxx b/src/RWStepDimTol/RWStepDimTol_RWProjectedZoneDefinition.cxx
new file mode 100644 (file)
index 0000000..eb170c1
--- /dev/null
@@ -0,0 +1,122 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWProjectedZoneDefinition.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepBasic_LengthMeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_HArray1OfShapeAspect.hxx>
+#include <StepDimTol_ProjectedZoneDefinition.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWProjectedZoneDefinition
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWProjectedZoneDefinition::RWStepDimTol_RWProjectedZoneDefinition ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWProjectedZoneDefinition::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                       const Standard_Integer num,
+                                                       Handle(Interface_Check)& ach,
+                                                       const Handle(StepDimTol_ProjectedZoneDefinition) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"projected_zone_definition") ) return;
+
+  // Inherited fields from ToleranceZoneDefinition
+
+  Handle(StepDimTol_ToleranceZone) aToleranceZone;
+  data->ReadEntity (num, 1, "tolerance_zone_definition.zone", ach, STANDARD_TYPE(StepDimTol_ToleranceZone), aToleranceZone);
+  
+  Handle(StepRepr_HArray1OfShapeAspect) anItems;
+  Handle(StepRepr_ShapeAspect) anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num,2,"tolerance_zone_definition.boundaries",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepRepr_HArray1OfShapeAspect (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+  
+  Handle(StepRepr_ShapeAspect) aProjectionEnd;
+  data->ReadEntity(num, 3, "projection_end", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aProjectionEnd);
+  
+  Handle(StepBasic_LengthMeasureWithUnit) aProjectionLength;
+  data->ReadEntity(num, 4, "projection_length", ach, STANDARD_TYPE(StepBasic_LengthMeasureWithUnit), aProjectionLength);
+
+  // Initialize entity
+  ent->Init(aToleranceZone,
+            anItems,
+            aProjectionEnd,
+            aProjectionLength);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWProjectedZoneDefinition::WriteStep (StepData_StepWriter& SW,
+                                                        const Handle(StepDimTol_ProjectedZoneDefinition) &ent) const
+{
+  // Inherited fields of ToleranceZoneDefinition
+  
+  SW.Send (ent->Zone());
+  
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbBoundaries();  i++) {
+    SW.Send(ent->BoundariesValue(i));
+  }
+  SW.CloseSub();
+  
+  // Own fields of ProjectedZoneDefinition
+  
+  SW.Send (ent->ProjectionEnd());
+  
+  SW.Send (ent->ProjectionLength());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWProjectedZoneDefinition::Share (const Handle(StepDimTol_ProjectedZoneDefinition) &ent,
+                                                    Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields from ToleranceZoneDefinition
+
+  iter.AddItem (ent->Zone());
+  
+  Standard_Integer i, nb = ent->NbBoundaries();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->BoundariesValue(i));
+    
+  //Own field of ProjectionZoneDefinition
+  iter.AddItem (ent->ProjectionEnd());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWProjectedZoneDefinition.hxx b/src/RWStepDimTol/RWStepDimTol_RWProjectedZoneDefinition.hxx
new file mode 100644 (file)
index 0000000..ee4b64d
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWProjectedZoneDefinition_HeaderFile
+#define _RWStepDimTol_RWProjectedZoneDefinition_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_ProjectedZoneDefinition;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for ProjectedZoneDefinition
+class RWStepDimTol_RWProjectedZoneDefinition 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWProjectedZoneDefinition();
+  
+  //! Reads ProjectedZoneDefinition
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_ProjectedZoneDefinition)& ent)  const;
+  
+  //! Writes ProjectedZoneDefinition
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_ProjectedZoneDefinition)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_ProjectedZoneDefinition)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWProjectedZoneDefinition_HeaderFile
index ebc108c..0436927 100644 (file)
@@ -21,8 +21,8 @@
 #include <StepBasic_MeasureWithUnit.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_RoundnessTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWRoundnessTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWRoundnessTolerance::ReadStep (const Handle(StepData_StepRead
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWRoundnessTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWRoundnessTolerance::Share (const Handle(StepDimTol_Roundness
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneDefinition.cxx b/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneDefinition.cxx
new file mode 100644 (file)
index 0000000..23cc51e
--- /dev/null
@@ -0,0 +1,109 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWRunoutZoneDefinition.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_HArray1OfShapeAspect.hxx>
+#include <StepDimTol_RunoutZoneDefinition.hxx>
+#include <StepDimTol_RunoutZoneOrientation.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWRunoutZoneDefinition
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWRunoutZoneDefinition::RWStepDimTol_RWRunoutZoneDefinition ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWRunoutZoneDefinition::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                    const Standard_Integer num,
+                                                    Handle(Interface_Check)& ach,
+                                                    const Handle(StepDimTol_RunoutZoneDefinition) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"runout_zone_definition") ) return;
+
+  // inherited fields from ToleranceZoneDefinition
+
+  Handle(StepDimTol_ToleranceZone) aToleranceZone;
+  data->ReadEntity (num, 1, "tolerance_zone_definition.zone", ach, STANDARD_TYPE(StepDimTol_ToleranceZone), aToleranceZone);
+  
+  Handle(StepRepr_HArray1OfShapeAspect) anItems;
+  Handle(StepRepr_ShapeAspect) anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num,2,"tolerance_zone_definition.boundaries",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepRepr_HArray1OfShapeAspect (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+  
+  Handle(StepDimTol_RunoutZoneOrientation) anOrientation;
+  data->ReadEntity(num, 3, "orientation", ach, STANDARD_TYPE(StepDimTol_RunoutZoneOrientation), anOrientation);
+
+  // Initialize entity
+  ent->Init(aToleranceZone,
+            anItems,
+            anOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWRunoutZoneDefinition::WriteStep (StepData_StepWriter& SW,
+                                                     const Handle(StepDimTol_RunoutZoneDefinition) &ent) const
+{
+  // Inherited fields of ToleranceZoneDefinition
+  
+  SW.Send (ent->Zone());
+  
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbBoundaries();  i++) {
+    SW.Send(ent->BoundariesValue(i));
+  }
+  SW.CloseSub();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWRunoutZoneDefinition::Share (const Handle(StepDimTol_RunoutZoneDefinition) &ent,
+                                                 Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields from ToleranceZoneDefinition
+
+  iter.AddItem (ent->Zone());
+  
+  Standard_Integer i, nb = ent->NbBoundaries();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->BoundariesValue(i));
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneDefinition.hxx b/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneDefinition.hxx
new file mode 100644 (file)
index 0000000..223fc79
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWRunoutZoneDefinition_HeaderFile
+#define _RWStepDimTol_RWRunoutZoneDefinition_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_RunoutZoneDefinition;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for RunoutZoneDefinition
+class RWStepDimTol_RWRunoutZoneDefinition 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWRunoutZoneDefinition();
+  
+  //! Reads RunoutZoneDefinition
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_RunoutZoneDefinition)& ent)  const;
+  
+  //! Writes RunoutZoneDefinition
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_RunoutZoneDefinition)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_RunoutZoneDefinition)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWRunoutZoneDefinition_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneOrientation.cxx b/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneOrientation.cxx
new file mode 100644 (file)
index 0000000..0473927
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWRunoutZoneOrientation.hxx>
+
+#include <StepBasic_PlaneAngleMeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_RunoutZoneOrientation.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWRunoutZoneOrientation
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWRunoutZoneOrientation::RWStepDimTol_RWRunoutZoneOrientation ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWRunoutZoneOrientation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepDimTol_RunoutZoneOrientation) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,1,ach,"runout_zone_orientation") ) return;
+
+  // Own fields of RunoutZoneOrientation
+
+  Handle(StepBasic_PlaneAngleMeasureWithUnit) anAngle;
+  data->ReadEntity (num, 1, "angle", ach, STANDARD_TYPE(StepBasic_PlaneAngleMeasureWithUnit), anAngle);
+
+  // Initialize entity
+  ent->Init(anAngle);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWRunoutZoneOrientation::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepDimTol_RunoutZoneOrientation) &ent) const
+{
+  SW.Send (ent->Angle());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneOrientation.hxx b/src/RWStepDimTol/RWStepDimTol_RWRunoutZoneOrientation.hxx
new file mode 100644 (file)
index 0000000..65a6f1d
--- /dev/null
@@ -0,0 +1,49 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWRunoutZoneOrientation_HeaderFile
+#define _RWStepDimTol_RWRunoutZoneOrientation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_RunoutZoneOrientation;
+class StepData_StepWriter;
+
+
+//! Read & Write tool for RunoutZoneOrientation
+class RWStepDimTol_RWRunoutZoneOrientation 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWRunoutZoneOrientation();
+  
+  //! Reads RunoutZoneOrientation
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_RunoutZoneOrientation)& ent)  const;
+  
+  //! Writes RunoutZoneOrientation
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_RunoutZoneOrientation)& ent)  const;
+  
+};
+#endif // _RWStepDimTol_RWRunoutZoneOrientation_HeaderFile
index 08484fe..eb1b89a 100644 (file)
@@ -21,8 +21,8 @@
 #include <StepBasic_MeasureWithUnit.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_StraightnessTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWStraightnessTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWStraightnessTolerance::ReadStep (const Handle(StepData_StepR
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWStraightnessTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWStraightnessTolerance::Share (const Handle(StepDimTol_Straig
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
index 1756a83..b2e336b 100644 (file)
@@ -21,8 +21,8 @@
 #include <StepBasic_MeasureWithUnit.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
 #include <StepDimTol_SurfaceProfileTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWSurfaceProfileTolerance
@@ -56,8 +56,8 @@ void RWStepDimTol_RWSurfaceProfileTolerance::ReadStep (const Handle(StepData_Ste
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Initialize entity
   ent->Init(aGeometricTolerance_Name,
@@ -83,7 +83,7 @@ void RWStepDimTol_RWSurfaceProfileTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
 
 //=======================================================================
@@ -99,5 +99,5 @@ void RWStepDimTol_RWSurfaceProfileTolerance::Share (const Handle(StepDimTol_Surf
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 }
index 9a57afe..1863db7 100644 (file)
@@ -22,9 +22,9 @@
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepDimTol_DatumReference.hxx>
-#include <StepDimTol_HArray1OfDatumReference.hxx>
+#include <StepDimTol_GeometricToleranceTarget.hxx>
+#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
 #include <StepDimTol_SymmetryTolerance.hxx>
-#include <StepRepr_ShapeAspect.hxx>
 
 //=======================================================================
 //function : RWStepDimTol_RWSymmetryTolerance
@@ -58,20 +58,20 @@ void RWStepDimTol_RWSymmetryTolerance::ReadStep (const Handle(StepData_StepReade
   Handle(StepBasic_MeasureWithUnit) aGeometricTolerance_Magnitude;
   data->ReadEntity (num, 3, "geometric_tolerance.magnitude", ach, STANDARD_TYPE(StepBasic_MeasureWithUnit), aGeometricTolerance_Magnitude);
 
-  Handle(StepRepr_ShapeAspect) aGeometricTolerance_TolerancedShapeAspect;
-  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, STANDARD_TYPE(StepRepr_ShapeAspect), aGeometricTolerance_TolerancedShapeAspect);
+  StepDimTol_GeometricToleranceTarget aGeometricTolerance_TolerancedShapeAspect;
+  data->ReadEntity (num, 4, "geometric_tolerance.toleranced_shape_aspect", ach, aGeometricTolerance_TolerancedShapeAspect);
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  Handle(StepDimTol_HArray1OfDatumReference) aGeometricToleranceWithDatumReference_DatumSystem;
+  Handle(StepDimTol_HArray1OfDatumSystemOrReference) aGeometricToleranceWithDatumReference_DatumSystem;
   Standard_Integer sub5 = 0;
   if ( data->ReadSubList (num, 5, "geometric_tolerance_with_datum_reference.datum_system", ach, sub5) ) {
     Standard_Integer nb0 = data->NbParams(sub5);
-    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumReference (1, nb0);
+    aGeometricToleranceWithDatumReference_DatumSystem = new StepDimTol_HArray1OfDatumSystemOrReference (1, nb0);
     Standard_Integer num2 = sub5;
     for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
-      Handle(StepDimTol_DatumReference) anIt0;
-      data->ReadEntity (num2, i0, "datum_reference", ach, STANDARD_TYPE(StepDimTol_DatumReference), anIt0);
+      StepDimTol_DatumSystemOrReference anIt0;
+      data->ReadEntity (num2, i0, "datum_system_or_reference", ach, anIt0);
       aGeometricToleranceWithDatumReference_DatumSystem->SetValue(i0, anIt0);
     }
   }
@@ -101,14 +101,14 @@ void RWStepDimTol_RWSymmetryTolerance::WriteStep (StepData_StepWriter& SW,
 
   SW.Send (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  SW.Send (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
   SW.OpenSub();
-  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i4++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i4);
-    SW.Send (Var0);
+  for (Standard_Integer i4=1; i4 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i4++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i4);
+    SW.Send (Var0.Value());
   }
   SW.CloseSub();
 }
@@ -126,12 +126,12 @@ void RWStepDimTol_RWSymmetryTolerance::Share (const Handle(StepDimTol_SymmetryTo
 
   iter.AddItem (ent->StepDimTol_GeometricTolerance::Magnitude());
 
-  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect());
+  iter.AddItem (ent->StepDimTol_GeometricTolerance::TolerancedShapeAspect().Value());
 
   // Inherited fields of GeometricToleranceWithDatumReference
 
-  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Length(); i3++ ) {
-    Handle(StepDimTol_DatumReference) Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystem()->Value(i3);
-    iter.AddItem (Var0);
+  for (Standard_Integer i3=1; i3 <= ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Length(); i3++ ) {
+    StepDimTol_DatumSystemOrReference Var0 = ent->StepDimTol_GeometricToleranceWithDatumReference::DatumSystemAP242()->Value(i3);
+    iter.AddItem (Var0.Value());
   }
 }
diff --git a/src/RWStepDimTol/RWStepDimTol_RWToleranceZone.cxx b/src/RWStepDimTol/RWStepDimTol_RWToleranceZone.cxx
new file mode 100644 (file)
index 0000000..273cb5a
--- /dev/null
@@ -0,0 +1,138 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWToleranceZone.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepDimTol_HArray1OfToleranceZoneTarget.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+#include <StepDimTol_ToleranceZoneForm.hxx>
+#include <StepDimTol_ToleranceZoneTarget.hxx>
+#include <StepRepr_ProductDefinitionShape.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWToleranceZone
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWToleranceZone::RWStepDimTol_RWToleranceZone ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWToleranceZone::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                             const Standard_Integer num,
+                                             Handle(Interface_Check)& ach,
+                                             const Handle(StepDimTol_ToleranceZone) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,6,ach,"tolerance_zone") ) return;
+
+  // Inherited fields of ShapeAspect
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Name;
+  data->ReadString (num, 1, "shape_aspect.name", ach, aShapeAspect_Name);
+
+  Handle(TCollection_HAsciiString) aShapeAspect_Description;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "shape_aspect.description", ach, aShapeAspect_Description);
+  }
+
+  Handle(StepRepr_ProductDefinitionShape) aShapeAspect_OfShape;
+  data->ReadEntity (num, 3, "shape_aspect.of_shape", ach, STANDARD_TYPE(StepRepr_ProductDefinitionShape), aShapeAspect_OfShape);
+
+  StepData_Logical aShapeAspect_ProductDefinitional;
+  data->ReadLogical (num, 4, "shape_aspect.product_definitional", ach, aShapeAspect_ProductDefinitional);
+  
+  // Own fields of ToleranceZone
+
+  Handle(StepDimTol_HArray1OfToleranceZoneTarget) anItems;
+  StepDimTol_ToleranceZoneTarget anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num,5,"defining_tolerance",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepDimTol_HArray1OfToleranceZoneTarget (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"tolerance_zone_target", ach, anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+  
+  Handle (StepDimTol_ToleranceZoneForm) aForm;
+  data->ReadEntity (num, 6, "form", ach, STANDARD_TYPE(StepDimTol_ToleranceZoneForm), aForm);
+
+  // Initialize entity
+  ent->Init(aShapeAspect_Name,
+            aShapeAspect_Description,
+            aShapeAspect_OfShape,
+            aShapeAspect_ProductDefinitional,
+            anItems,
+            aForm);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWToleranceZone::WriteStep (StepData_StepWriter& SW,
+                                              const Handle(StepDimTol_ToleranceZone) &ent) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  SW.Send (ent->Name());
+
+  SW.Send (ent->Description());
+
+  SW.Send (ent->OfShape());
+
+  SW.SendLogical (ent->ProductDefinitional());
+  
+  // Own fields of ToleranceZone
+  
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbDefiningTolerances();  i++) {
+    SW.Send(ent->DefiningToleranceValue(i).Value());
+  }
+  SW.CloseSub();
+  
+  SW.Send (ent->Form());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWToleranceZone::Share (const Handle(StepDimTol_ToleranceZone) &ent,
+                                          Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of ShapeAspect
+
+  iter.AddItem (ent->OfShape());
+  
+  // Own fields of ToleranceZone
+  Standard_Integer i, nb = ent->NbDefiningTolerances();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->DefiningToleranceValue(i).Value());
+}
diff --git a/src/RWStepDimTol/RWStepDimTol_RWToleranceZone.hxx b/src/RWStepDimTol/RWStepDimTol_RWToleranceZone.hxx
new file mode 100644 (file)
index 0000000..06d3349
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepDimTol_RWToleranceZone_HeaderFile
+#define _RWStepDimTol_RWToleranceZone_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepDimTol_ToleranceZone;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+
+//! Read & Write tool for ToleranceZone
+class RWStepDimTol_RWToleranceZone
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Empty constructor
+  Standard_EXPORT RWStepDimTol_RWToleranceZone();
+  
+  //! Reads ToleranceZone
+  Standard_EXPORT   void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepDimTol_ToleranceZone)& ent)  const;
+  
+  //! Writes ToleranceZone
+  Standard_EXPORT   void WriteStep (StepData_StepWriter& SW, const Handle(StepDimTol_ToleranceZone)& ent)  const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT   void Share (const Handle(StepDimTol_ToleranceZone)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepDimTol_RWToleranceZone_HeaderFile
diff --git a/src/RWStepDimTol/RWStepDimTol_RWToleranceZoneDefinition.cxx b/src/RWStepDimTol/RWStepDimTol_RWToleranceZoneDefinition.cxx
new file mode 100644 (file)
index 0000000..6c40515
--- /dev/null
@@ -0,0 +1,104 @@
+// Created on: 2015-07-13
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepDimTol_RWToleranceZoneDefinition.hxx>
+
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_HArray1OfShapeAspect.hxx>
+#include <StepDimTol_ToleranceZone.hxx>
+#include <StepDimTol_ToleranceZoneDefinition.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWToleranceZoneDefinition
+//purpose  : 
+//=======================================================================
+
+RWStepDimTol_RWToleranceZoneDefinition::RWStepDimTol_RWToleranceZoneDefinition ()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepDimTol_RWToleranceZoneDefinition::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                       const Standard_Integer num,
+                                                       Handle(Interface_Check)& ach,
+                                                       const Handle(StepDimTol_ToleranceZoneDefinition) &ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,2,ach,"tolerance_zone_definition") )