]> OCCT Git - occt-copy.git/commitdiff
0031388: To support kinematics data in STEP format
authordpasukhi <dpasukhi@opencascade.com>
Thu, 12 Mar 2020 16:29:21 +0000 (19:29 +0300)
committerdpasukhi <dpasukhi@opencascade.com>
Tue, 26 May 2020 19:59:46 +0000 (22:59 +0300)
Implement XCAF structures to store kinematic data.
Add DRAW commands to process kinematic data.
Add test cases.
Update documentation.

# Add new STEP entities
# Add pair_representation_relationship entity
# Add rigit_link_representation entity
# Update new STEP entities
# Add three more new entities
# Add ReadStep::ReadKinematics()
# Add StepKinematics_ActuatedKinPairAndOrderKinPair
# Add StepToGeom::MakeAxis2Placement to StepKinematics_SuParameters

412 files changed:
dox/user_guides/xde/xde.md
src/BinMXCAFDoc/BinMXCAFDoc.cxx
src/BinMXCAFDoc/BinMXCAFDoc.hxx
src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairDriver.cxx [new file with mode: 0644]
src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairDriver.hxx [new file with mode: 0644]
src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairValueDriver.cxx [new file with mode: 0644]
src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairValueDriver.hxx [new file with mode: 0644]
src/BinMXCAFDoc/BinMXCAFDoc_KinematicToolDriver.cxx [new file with mode: 0644]
src/BinMXCAFDoc/BinMXCAFDoc_KinematicToolDriver.hxx [new file with mode: 0644]
src/BinMXCAFDoc/FILES
src/RWStepAP214/RWStepAP214_GeneralModule.cxx
src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx
src/RWStepKinematics/FILES [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWActuatedKinPairAndOrderKinPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWActuatedKinematicPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWActuatedKinematicPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWContextDependentKinematicLinkRepresentation.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWCylindricalPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWCylindricalPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWCylindricalPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWCylindricalPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWCylindricalPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWCylindricalPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWFullyConstrainedPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWFullyConstrainedPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWGearPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWGearPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWGearPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWGearPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWGearPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWGearPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWHomokineticPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWHomokineticPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicJoint.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicJoint.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicLink.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicLink.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicLinkRepresentationAssociation.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicPropertyMechanismRepresentation.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyDirectedStructure.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyNetworkStructure.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyStructure.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyStructure.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPinionPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleLinkRepresentation.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWMechanismRepresentation.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWMechanismRepresentation.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWOrientedJoint.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWOrientedJoint.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPairRepresentationRelationship.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPairRepresentationRelationship.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePairRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePairRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPlanarPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPrismaticPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPrismaticPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPrismaticPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPrismaticPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPrismaticPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWPrismaticPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWProductDefinitionKinematics.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWProductDefinitionKinematics.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWProductDefinitionRelationshipKinematics.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRevolutePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRevolutePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRevolutePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRevolutePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRevolutePairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRevolutePairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRigidLinkRepresentation.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRigidLinkRepresentation.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingCurvePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingCurvePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingCurvePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingCurvePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRotationAboutDirection.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWRotationAboutDirection.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWScrewPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWScrewPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWScrewPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWScrewPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWScrewPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWScrewPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPin.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPin.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPinAndRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPinAndRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSuParameters.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSuParameters.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSurfacePairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWSurfacePairWithRange.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUniversalPair.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUniversalPair.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUniversalPairValue.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUniversalPairValue.hxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUniversalPairWithRange.cxx [new file with mode: 0644]
src/RWStepKinematics/RWStepKinematics_RWUniversalPairWithRange.hxx [new file with mode: 0644]
src/RWStepRepr/FILES
src/RWStepRepr/RWStepRepr_RWRepresentationContextReference.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWRepresentationContextReference.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWRepresentationReference.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWRepresentationReference.hxx [new file with mode: 0644]
src/STEPCAFControl/STEPCAFControl_Reader.cxx
src/STEPCAFControl/STEPCAFControl_Reader.hxx
src/StepAP214/StepAP214_Protocol.cxx
src/StepKinematics/FILES [new file with mode: 0644]
src/StepKinematics/StepKinematics_ActuatedDirection.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ActuatedKinPairAndOrderKinPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ActuatedKinPairAndOrderKinPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ActuatedKinematicPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ActuatedKinematicPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ContextDependentKinematicLinkRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ContextDependentKinematicLinkRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_CylindricalPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_CylindricalPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_CylindricalPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_CylindricalPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_CylindricalPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_CylindricalPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_FullyConstrainedPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_FullyConstrainedPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_GearPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_GearPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_GearPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_GearPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_GearPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_GearPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_HighOrderKinematicPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_HighOrderKinematicPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_HomokineticPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_HomokineticPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicJoint.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicJoint.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicLink.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicLink.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicLinkRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicLinkRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicLinkRepresentationAssociation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicLinkRepresentationAssociation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicPropertyDefinitionRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicPropertyDefinitionRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicPropertyMechanismRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicPropertyMechanismRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyDirectedStructure.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyDirectedStructure.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyNetworkStructure.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyNetworkStructure.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyRepresentationSelect.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyRepresentationSelect.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyStructure.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_KinematicTopologyStructure.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LinearFlexibleAndPinionPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LinearFlexibleAndPinionPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LinearFlexibleAndPlanarCurvePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LinearFlexibleLinkRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LinearFlexibleLinkRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPairWithMotionCoupling.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_LowOrderKinematicPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_MechanismRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_MechanismRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_OrientedJoint.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_OrientedJoint.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PairRepresentationRelationship.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PairRepresentationRelationship.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarCurvePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarCurvePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarCurvePairRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarCurvePairRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PlanarPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnPlanarCurvePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnPlanarCurvePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnPlanarCurvePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnPlanarCurvePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnPlanarCurvePairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnPlanarCurvePairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnSurfacePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnSurfacePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnSurfacePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnSurfacePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnSurfacePairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PointOnSurfacePairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PrismaticPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PrismaticPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PrismaticPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PrismaticPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PrismaticPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_PrismaticPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ProductDefinitionKinematics.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ProductDefinitionKinematics.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ProductDefinitionRelationshipKinematics.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ProductDefinitionRelationshipKinematics.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RackAndPinionPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RackAndPinionPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RackAndPinionPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RackAndPinionPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RackAndPinionPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RackAndPinionPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RevolutePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RevolutePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RevolutePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RevolutePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RevolutePairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RevolutePairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RigidLinkRepresentation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RigidLinkRepresentation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RigidPlacement.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RigidPlacement.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingCurvePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingCurvePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingCurvePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingCurvePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingSurfacePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingSurfacePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingSurfacePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RollingSurfacePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RotationAboutDirection.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_RotationAboutDirection.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ScrewPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ScrewPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ScrewPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ScrewPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ScrewPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_ScrewPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingCurvePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingCurvePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingCurvePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingCurvePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingSurfacePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingSurfacePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingSurfacePairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SlidingSurfacePairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SpatialRotation.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SpatialRotation.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairSelect.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairSelect.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairWithPin.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairWithPin.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairWithPinAndRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairWithPinAndRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SphericalPairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SuParameters.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SuParameters.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SurfacePair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SurfacePair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SurfacePairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_SurfacePairWithRange.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UnconstrainedPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UnconstrainedPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UnconstrainedPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UnconstrainedPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UniversalPair.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UniversalPair.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UniversalPairValue.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UniversalPairValue.hxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UniversalPairWithRange.cxx [new file with mode: 0644]
src/StepKinematics/StepKinematics_UniversalPairWithRange.hxx [new file with mode: 0644]
src/StepRepr/FILES
src/StepRepr/StepRepr_ItemDefinedTransformation.hxx
src/StepRepr/StepRepr_RepresentationContextReference.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_RepresentationContextReference.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_RepresentationOrRepresentationReference.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_RepresentationOrRepresentationReference.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_RepresentationReference.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_RepresentationReference.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_RepresentationRelationship.hxx
src/StepRepr/StepRepr_Transformation.cxx
src/StepRepr/StepRepr_Transformation.hxx
src/StepToGeom/StepToGeom.cxx
src/StepToGeom/StepToGeom.hxx
src/TKSTEPAttr/PACKAGES
src/TKXCAF/PACKAGES
src/XCAFDoc/FILES
src/XCAFDoc/GUID.txt
src/XCAFDoc/XCAFDoc.cxx
src/XCAFDoc/XCAFDoc.hxx
src/XCAFDoc/XCAFDoc_DocumentTool.cxx
src/XCAFDoc/XCAFDoc_DocumentTool.hxx
src/XCAFDoc/XCAFDoc_KinematicPair.cxx [new file with mode: 0644]
src/XCAFDoc/XCAFDoc_KinematicPair.hxx [new file with mode: 0644]
src/XCAFDoc/XCAFDoc_KinematicPairValue.cxx [new file with mode: 0644]
src/XCAFDoc/XCAFDoc_KinematicPairValue.hxx [new file with mode: 0644]
src/XCAFDoc/XCAFDoc_KinematicTool.cxx [new file with mode: 0644]
src/XCAFDoc/XCAFDoc_KinematicTool.hxx [new file with mode: 0644]
src/XCAFKinematics/FILES [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_HighOrderPairObject.cxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_HighOrderPairObject.hxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_LowOrderPairObject.cxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_LowOrderPairObject.hxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_LowOrderPairObjectWithCoupling.cxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_LowOrderPairObjectWithCoupling.hxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_PairObject.cxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_PairObject.hxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_PairType.hxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_PairValueObject.cxx [new file with mode: 0644]
src/XCAFKinematics/XCAFKinematics_PairValueObject.hxx [new file with mode: 0644]
src/XDEDRAW/FILES
src/XDEDRAW/XDEDRAW.cxx
src/XDEDRAW/XDEDRAW.hxx
src/XDEDRAW/XDEDRAW_Kinematics.cxx [new file with mode: 0644]
src/XDEDRAW/XDEDRAW_Kinematics.hxx [new file with mode: 0644]
src/XmlMXCAFDoc/FILES
src/XmlMXCAFDoc/XmlMXCAFDoc.cxx
src/XmlMXCAFDoc/XmlMXCAFDoc.hxx
src/XmlMXCAFDoc/XmlMXCAFDoc_KinematicToolDriver.cxx [new file with mode: 0644]
src/XmlMXCAFDoc/XmlMXCAFDoc_KinematicToolDriver.hxx [new file with mode: 0644]
tests/gdt/grids.list
tests/gdt/kinematics/A1 [new file with mode: 0644]
tests/gdt/kinematics/A2 [new file with mode: 0644]
tests/gdt/kinematics/A3 [new file with mode: 0644]
tests/gdt/kinematics/A4 [new file with mode: 0644]
tests/gdt/kinematics/A5 [new file with mode: 0644]
tests/gdt/kinematics/A6 [new file with mode: 0644]
tests/gdt/kinematics/A7 [new file with mode: 0644]
tests/gdt/kinematics/A8 [new file with mode: 0644]
tests/gdt/kinematics/A9 [new file with mode: 0644]
tests/gdt/kinematics/B1 [new file with mode: 0644]
tests/gdt/kinematics/B2 [new file with mode: 0644]
tests/gdt/kinematics/B3 [new file with mode: 0644]
tests/gdt/kinematics/B4 [new file with mode: 0644]
tests/gdt/kinematics/B5 [new file with mode: 0644]
tests/gdt/kinematics/B6 [new file with mode: 0644]
tests/gdt/kinematics/B7 [new file with mode: 0644]
tests/gdt/kinematics/B8 [new file with mode: 0644]
tests/gdt/kinematics/B9 [new file with mode: 0644]
tests/gdt/kinematics/C1 [new file with mode: 0644]
tests/gdt/kinematics/end [new file with mode: 0644]
tools/DFBrowserPaneXDE/DFBrowserPaneXDE_XDEDRAW.cxx

index e2a92615a969913a1bf5fe10013adc0dde4c6d96..1a71d986965eb84b9b432a03c793b946b43eec16 100644 (file)
@@ -144,6 +144,41 @@ Notes API provides the following functionality:
   * Removes note(s) from an annotated assembly item; orphan note(s) might be deleted optionally (items without linked notes will be deleted automatically);
   * Deletes note(s) and removes them from annotated items;
   * Gets / deletes orphan notes.
+  
+@subsection occt_xde_1_11 Kinematics
+
+Kinematic data storage is realized according to ISO 10303-105:2019(E) and STEP Schema AP242 2019 year.
+All kinematic data is divided onto mechanisms each mechanism has its graph of links (references to shapes) and joints (kinematic pair information).
+Each joint corresponds to one kinematic pair from the list:
+* Low order pairs
+  - fully constrained pair (no DOF);
+  - revolute pair (one rotation DOF);
+  - prismatic pair (one translation DOF);
+  - cylindrical pair (one rotation and one translation DOF);
+  - universal pair (two rotation DOF);
+  - homokinetic pair (two rotation DOF);
+  - spherical pair with pin (two rotation DOF);
+  - spherical pair (three rotation DOF);
+  - planar pair (one rotation and two translation DOF);
+  - unconstrained pair (3 rotation and 3 translation DOF);
+* Low order pairs with motion coupling
+  - screw pair;
+  - rack and pinion pair;
+  - gear pair;
+* High order pairs
+  - point on surface pair;
+  - sliding surface pair;
+  - rolling surface pair;
+  - point on planar curve pair;
+  - sliding curve pair;
+  - rolling curve pair.
+  
+The kinematic pair information consists of
+* parameters;
+* limits (optional);
+* current position (optional).
+
+All mentioned data depends on the kinematic pair type.
 
 @section occt_xde_2 Working with XDE
 
@@ -1058,8 +1093,62 @@ To delete note(s) use the following *XCAFDoc_NotesTool* methods:
 - *DeleteOrphanNotes* : deletes notes not bound to Document items.
 
 All these methods except for the last one break all links with Document items as well.
+
+@subsection occt_xde_2_11 Kinematics
+
+In XDE Document Kinematics is managed via *XCAFDoc_KinematicTool*. The Kinematic pair entities are described by two attributes
+*XCAFDoc_KinematicPair* and *XCAFDoc_KinematicPairValue (optional)*. The second attribute is a dependant attribute, 
+it cannot be assigned to label without the main attribute or to a label with the main attribute of another kinematic pair type.
   
-@subsection occt_xde_2_11 Reading and Writing STEP or IGES
+@subsubsection occt_xde_2_11_1 Creation
+
+All kinematic data refers to the mechanism, so, first of all, it needs to *AddMechanism*, 
+this method creates a new mechanism and two empty subfolders for links and joints. 
+The next step is specifying of links (mechanism details)  via *AddLink* and *SetLink* commands.
+The last step of kinematic graph creation is adding of joints with using *AddJoint* and *SetJoint* commands.
+
+@subsubsection occt_xde_2_11_2 Checking
+
+Commands *IsMechanism*, *IsLink* and *IsJoint* helps to check that created labels are valid.
+To retrieve current graph state use the next methods: *GetMechanisms*, *GetLinks*, *GetJoints* *GetLinksOfJoint*, *GetJointOfLink*, *GetRefShapes (for link)*. 
+
+@subsubsection occt_xde_2_11_3 Editing
+
+To change links's referred shapes use *SetLink*.
+To change joint's referred links use *SetJoint*.
+
+@subsubsection occt_xde_2_11_4 Deleting
+
+All kinematic data can be removed by *RemoveLink*, *RemoveJoint* and *RemoveMechanism* commands.
+
+@subsubsection occt_xde_2_11_5 Assigning data
+
+Each kinematic pair type has its set of parameters and so should be processed separately. The code below is a common example.
+
+Set data.
+
+~~~~~
+// Create an object according to necessary type (LowOrder/LowOrderWithCoupling/HighOrder)
+XCAFKinematics_PairObject anObject = new XCAFKinematics_PairObject();
+// Fill type, parameters if existed and limits if needed
+anObject->SetType(XCAFKinematics_PairType_Screw);
+...
+// Add attribute
+Handle(XCAFDoc_KinematicPair) aPair = XCAFDoc_KinematicPair::Set(aJointLabel);
+aPair->SetObject(anObject);
+~~~~~
+
+Get data.
+~~~~~
+// Get attribute from the label
+Handle(XCAFDoc_KinematicPair) aPair;
+if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+  Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+  TCollection_AsciiString aName = anObject->Name();
+}
+~~~~~
+
+@subsection occt_xde_2_12 Reading and Writing STEP or IGES
 Note that saving and restoring the document itself are standard OCAF operations. As the various previously described definitions enter into this frame, they will not be explained any further. 
 The same can be said for Viewing: presentations can be defined from Shapes and Colors. 
 
@@ -1071,7 +1160,7 @@ There are several important points to consider:
   
 The packages to manage this are *IGESCAFControl* for IGES, and *STEPCAFControl* for STEP. 
 
-@subsubsection occt_xde_2_11_1 Reading a STEP file
+@subsubsection occt_xde_2_12_1 Reading a STEP file
 To read a STEP file by itself, use: 
 
 ~~~~~
@@ -1092,7 +1181,7 @@ if ( !reader.Transfer ( doc ) ) {
 ~~~~~
 
 In addition, the reader provides methods that are applicable to document transfers and for directly querying of the data produced. 
-@subsubsection occt_xde_2_11_2 Writing a STEP file
+@subsubsection occt_xde_2_12_2 Writing a STEP file
 To write a STEP file by itself, use: 
 
 ~~~~~
@@ -1113,19 +1202,19 @@ if ( ! writer.Transfer ( Doc, mode ) ) {
 IFSelect_ReturnStatus stat = writer.Write(file-name); 
 ~~~~~
 
-@subsubsection occt_xde_2_11_3 Reading an IGES File
+@subsubsection occt_xde_2_12_3 Reading an IGES File
 Use the same procedure as for a STEP file but with IGESCAFControl instead of STEPCAFControl. 
-@subsubsection occt_xde_2_11_4 Writing an IGES File
+@subsubsection occt_xde_2_12_4 Writing an IGES File
 Use the same procedure as for a STEP file but with IGESCAFControl instead of STEPCAFControl.
  
-@subsection occt_xde_2_12 Using an XDE Document
+@subsection occt_xde_2_13 Using an XDE Document
 There are several ways of exploiting XDE data from an application, you can: 
  1. Get the data relevant for the application by mapping XDE/Appli, then discard the XDE data once it has been used.
  2. Create a reference from the Application Document to the XDE Document, to have its data available as external data.
  3. Embed XDE data inside the Application Document (see the following section for details).
  4. Directly exploit XDE data such as when using file checkers.
 
-@subsubsection occt_xde_2_12_1 XDE Data inside an Application Document
+@subsubsection occt_xde_2_13_1 XDE Data inside an Application Document
 To have XCAF data elsewhere than under label 0.1, you use the DocLabel of XDE. The method DocLabel from XCAFDoc_DocumentTool determines the relevant Label for XCAF. However, note that the default is 0.1. 
 
 In addition, as XDE data is defined and managed in a modular way, you can consider exclusively Assembly Structure, only Colors, and so on. 
index 930ccd6e804e6d63fe07d061c41fa4f648abe68d..ad76147163a3afffd8a718ffbe365ec8373f5b15 100644 (file)
@@ -29,6 +29,9 @@
 #include <BinMXCAFDoc_DimTolToolDriver.hxx>
 #include <BinMXCAFDoc_DocumentToolDriver.hxx>
 #include <BinMXCAFDoc_GraphNodeDriver.hxx>
+#include <BinMXCAFDoc_KinematicPairDriver.hxx>
+#include <BinMXCAFDoc_KinematicPairValueDriver.hxx>
+#include <BinMXCAFDoc_KinematicToolDriver.hxx>
 #include <BinMXCAFDoc_LayerToolDriver.hxx>
 #include <BinMXCAFDoc_LocationDriver.hxx>
 #include <BinMXCAFDoc_MaterialDriver.hxx>
@@ -84,6 +87,8 @@ void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
   theDriverTable->AddDriver( new BinMXCAFDoc_NoteBinDataDriver (theMsgDrv));
   theDriverTable->AddDriver( new BinMXCAFDoc_NoteCommentDriver (theMsgDrv));
   theDriverTable->AddDriver( new BinMXCAFDoc_ViewDriver        (theMsgDrv));
+  theDriverTable->AddDriver( new BinMXCAFDoc_KinematicPairDriver(theMsgDrv));
+  theDriverTable->AddDriver( new BinMXCAFDoc_KinematicPairValueDriver(theMsgDrv));
 
   theDriverTable->AddDriver( new BinMXCAFDoc_ColorToolDriver   (theMsgDrv));
   theDriverTable->AddDriver( new BinMXCAFDoc_DocumentToolDriver(theMsgDrv));
@@ -94,4 +99,5 @@ void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
   theDriverTable->AddDriver( new BinMXCAFDoc_VisMaterialToolDriver(theMsgDrv));
   theDriverTable->AddDriver( new BinMXCAFDoc_NotesToolDriver   (theMsgDrv));
   theDriverTable->AddDriver( new BinMXCAFDoc_ViewToolDriver    (theMsgDrv));
+  theDriverTable->AddDriver( new BinMXCAFDoc_KinematicToolDriver(theMsgDrv));
 }
index bfd6213584dd66aae48d01c336e8386a6102b7c9..7547654d569679579d34135267d94cac5fd9391e 100644 (file)
@@ -42,6 +42,9 @@ class BinMXCAFDoc_DimTolToolDriver;
 class BinMXCAFDoc_MaterialToolDriver;
 class BinMXCAFDoc_ViewDriver;
 class BinMXCAFDoc_ViewToolDriver;
+class BinMXCAFDoc_KinematicToolDriver;
+class BinMXCAFDoc_KinematicPairDriver;
+class BinMXCAFDoc_KinematicPairValueDriver;
 
 
 
@@ -89,6 +92,9 @@ friend class BinMXCAFDoc_DimTolToolDriver;
 friend class BinMXCAFDoc_MaterialToolDriver;
 friend class BinMXCAFDoc_ViewDriver;
 friend class BinMXCAFDoc_ViewToolDriver;
+friend class BinMXCAFDoc_KinematicToolDriver;
+friend class BinMXCAFDoc_KinematicPairDriver;
+friend class BinMXCAFDoc_KinematicPairValueDriver;
 
 };
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairDriver.cxx
new file mode 100644 (file)
index 0000000..c917748
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on: 2020-03-18
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <BinMXCAFDoc_KinematicPairDriver.hxx>
+#include <BinObjMgt_Persistent.hxx>
+#include <Message_Messenger.hxx>
+#include <Standard_Type.hxx>
+#include <TDF_Attribute.hxx>
+#include <XCAFDoc_KinematicPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_KinematicPairDriver, BinMDF_ADriver)
+
+//=======================================================================
+//function : Constructor
+//purpose  : 
+//=======================================================================
+BinMXCAFDoc_KinematicPairDriver::BinMXCAFDoc_KinematicPairDriver (const Handle(Message_Messenger)& theMsgDriver)
+: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_KinematicPair)->Name())
+{
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) BinMXCAFDoc_KinematicPairDriver::NewEmpty() const
+{
+  return new XCAFDoc_KinematicPair();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+Standard_Boolean BinMXCAFDoc_KinematicPairDriver::Paste (const BinObjMgt_Persistent&  /*theSource*/,
+                                                         const Handle(TDF_Attribute)& /*theTarget*/,
+                                                         BinObjMgt_RRelocationTable&  /*theRelocTable*/) const
+{
+  return Standard_True;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void BinMXCAFDoc_KinematicPairDriver::Paste (const Handle(TDF_Attribute)&  /*theSource*/,
+                                             BinObjMgt_Persistent&         /*theTarget*/,
+                                             BinObjMgt_SRelocationTable&   /*theRelocTable*/) const
+{
+}
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairDriver.hxx
new file mode 100644 (file)
index 0000000..f5f06b8
--- /dev/null
@@ -0,0 +1,56 @@
+// Created on: 2020-03-18
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _BinMXCAFDoc_KinematicPairDriver_HeaderFile
+#define _BinMXCAFDoc_KinematicPairDriver_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <BinMDF_ADriver.hxx>
+#include <Standard_Boolean.hxx>
+#include <BinObjMgt_RRelocationTable.hxx>
+#include <BinObjMgt_SRelocationTable.hxx>
+
+class Message_Messenger;
+class TDF_Attribute;
+class BinObjMgt_Persistent;
+
+class BinMXCAFDoc_KinematicPairDriver;
+DEFINE_STANDARD_HANDLE(BinMXCAFDoc_KinematicPairDriver, BinMDF_ADriver)
+
+class BinMXCAFDoc_KinematicPairDriver : public BinMDF_ADriver
+{
+
+public:
+
+  
+  Standard_EXPORT BinMXCAFDoc_KinematicPairDriver (const Handle(Message_Messenger)& theMsgDriver);
+  
+  Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
+                                                  const Handle(TDF_Attribute)& theTarget,
+                                                  BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& theSource,
+                                      BinObjMgt_Persistent& theTarget,
+                                      BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
+
+  DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_KinematicPairDriver, BinMDF_ADriver)
+
+};
+
+#endif // _BinMXCAFDoc_KinematicPairDriver_HeaderFile
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairValueDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairValueDriver.cxx
new file mode 100644 (file)
index 0000000..d08a15d
--- /dev/null
@@ -0,0 +1,64 @@
+// Created on: 2020-03-30
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <BinMXCAFDoc_KinematicPairValueDriver.hxx>
+#include <BinObjMgt_Persistent.hxx>
+#include <Message_Messenger.hxx>
+#include <Standard_Type.hxx>
+#include <TDF_Attribute.hxx>
+#include <XCAFDoc_KinematicPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_KinematicPairValueDriver, BinMDF_ADriver)
+
+//=======================================================================
+//function : Constructor
+//purpose  : 
+//=======================================================================
+BinMXCAFDoc_KinematicPairValueDriver::
+BinMXCAFDoc_KinematicPairValueDriver (const Handle(Message_Messenger)& theMsgDriver)
+: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_KinematicPairValue)->Name())
+{
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) BinMXCAFDoc_KinematicPairValueDriver::NewEmpty() const
+{
+  return new XCAFDoc_KinematicPairValue();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+Standard_Boolean BinMXCAFDoc_KinematicPairValueDriver::Paste (const BinObjMgt_Persistent&  /*theSource*/,
+                                                              const Handle(TDF_Attribute)& /*theTarget*/,
+                                                              BinObjMgt_RRelocationTable&  /*theRelocTable*/) const
+{
+  return Standard_True;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void BinMXCAFDoc_KinematicPairValueDriver::Paste (const Handle(TDF_Attribute)&  /*theSource*/,
+                                                  BinObjMgt_Persistent&         /*theTarget*/,
+                                                  BinObjMgt_SRelocationTable&   /*theRelocTable*/) const
+{
+}
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairValueDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_KinematicPairValueDriver.hxx
new file mode 100644 (file)
index 0000000..1a2e7f4
--- /dev/null
@@ -0,0 +1,56 @@
+// Created on: 2020-03-30
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _BinMXCAFDoc_KinematicPairValueDriver_HeaderFile
+#define _BinMXCAFDoc_KinematicPairValueDriver_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <BinMDF_ADriver.hxx>
+#include <Standard_Boolean.hxx>
+#include <BinObjMgt_RRelocationTable.hxx>
+#include <BinObjMgt_SRelocationTable.hxx>
+
+class Message_Messenger;
+class TDF_Attribute;
+class BinObjMgt_Persistent;
+
+class BinMXCAFDoc_KinematicPairValueDriver;
+DEFINE_STANDARD_HANDLE(BinMXCAFDoc_KinematicPairValueDriver, BinMDF_ADriver)
+
+class BinMXCAFDoc_KinematicPairValueDriver : public BinMDF_ADriver
+{
+
+public:
+
+  
+  Standard_EXPORT BinMXCAFDoc_KinematicPairValueDriver (const Handle(Message_Messenger)& theMsgDriver);
+  
+  Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
+                                                  const Handle(TDF_Attribute)& theTarget,
+                                                  BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& theSource,
+                                      BinObjMgt_Persistent& theTarget,
+                                      BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
+
+  DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_KinematicPairValueDriver, BinMDF_ADriver)
+
+};
+
+#endif // _BinMXCAFDoc_KinematicPairValueDriver_HeaderFile
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_KinematicToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_KinematicToolDriver.cxx
new file mode 100644 (file)
index 0000000..03de4c1
--- /dev/null
@@ -0,0 +1,65 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <BinMXCAFDoc_KinematicToolDriver.hxx>
+#include <BinObjMgt_Persistent.hxx>
+#include <Message_Messenger.hxx>
+#include <Standard_Type.hxx>
+#include <TDF_Attribute.hxx>
+#include <XCAFDoc_KinematicTool.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_KinematicToolDriver, BinMDF_ADriver)
+
+//=======================================================================
+//function : BinMXCAFDoc_KinematicToolDriver
+//purpose  : 
+//=======================================================================
+BinMXCAFDoc_KinematicToolDriver::BinMXCAFDoc_KinematicToolDriver
+  (const Handle(Message_Messenger)& theMsgDriver)
+  : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_KinematicTool)->Name())
+{
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) BinMXCAFDoc_KinematicToolDriver::NewEmpty() const
+{
+  return new XCAFDoc_KinematicTool();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+Standard_Boolean BinMXCAFDoc_KinematicToolDriver::Paste
+  (const BinObjMgt_Persistent& /*theSource*/,
+   const Handle(TDF_Attribute)& /*theTarget*/,
+   BinObjMgt_RRelocationTable& /*theRelocTable*/) const 
+{
+  return Standard_True;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void BinMXCAFDoc_KinematicToolDriver::Paste
+  (const Handle(TDF_Attribute)& /*theSource*/,
+   BinObjMgt_Persistent& /*theTarget*/,
+   BinObjMgt_SRelocationTable& /*theRelocTable*/) const {
+}
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_KinematicToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_KinematicToolDriver.hxx
new file mode 100644 (file)
index 0000000..a4893f5
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _BinMXCAFDoc_KinematicToolDriver_HeaderFile
+#define _BinMXCAFDoc_KinematicToolDriver_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <BinMDF_ADriver.hxx>
+#include <Standard_Boolean.hxx>
+#include <BinObjMgt_RRelocationTable.hxx>
+#include <BinObjMgt_SRelocationTable.hxx>
+class Message_Messenger;
+class TDF_Attribute;
+class BinObjMgt_Persistent;
+
+
+class BinMXCAFDoc_KinematicToolDriver;
+DEFINE_STANDARD_HANDLE(BinMXCAFDoc_KinematicToolDriver, BinMDF_ADriver)
+
+
+class BinMXCAFDoc_KinematicToolDriver : public BinMDF_ADriver
+{
+
+public:
+
+  
+  Standard_EXPORT BinMXCAFDoc_KinematicToolDriver(const Handle(Message_Messenger)& theMsgDriver);
+  
+  Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual Standard_Boolean Paste (const BinObjMgt_Persistent& theSource, const Handle(TDF_Attribute)& theTarget, BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& theSource, BinObjMgt_Persistent& theTarget, BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
+
+  DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_KinematicToolDriver, BinMDF_ADriver)
+
+};
+#endif // _BinMXCAFDoc_KinematicToolDriver_HeaderFile
index 22daf02e37bd4717431c8d6d40d6e29c041bcf54..26b1c017721e7b002aa11c6be9671956aaf415fb 100644 (file)
@@ -26,6 +26,12 @@ BinMXCAFDoc_GeomToleranceDriver.cxx
 BinMXCAFDoc_GeomToleranceDriver.hxx
 BinMXCAFDoc_GraphNodeDriver.cxx
 BinMXCAFDoc_GraphNodeDriver.hxx
+BinMXCAFDoc_KinematicPairDriver.cxx
+BinMXCAFDoc_KinematicPairDriver.hxx
+BinMXCAFDoc_KinematicPairValueDriver.cxx
+BinMXCAFDoc_KinematicPairValueDriver.hxx
+BinMXCAFDoc_KinematicToolDriver.cxx
+BinMXCAFDoc_KinematicToolDriver.hxx
 BinMXCAFDoc_LayerToolDriver.cxx
 BinMXCAFDoc_LayerToolDriver.hxx
 BinMXCAFDoc_LocationDriver.cxx
index 70db37a12a817d56a285adfb894195c4ead06adc..7895ea8a727ad5f2ff9c00f5eaec9fe3f7541a48 100644 (file)
@@ -1365,6 +1365,160 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule)
 #include <RWStepVisual_RWCameraModelD3MultiClippingUnion.hxx>
 #include <StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem.hxx>
 #include <RWStepVisual_RWAnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem.hxx>
+// Added for kinematics implementation
+#include <StepRepr_RepresentationContextReference.hxx>
+#include <StepRepr_RepresentationReference.hxx>
+#include <StepKinematics_SuParameters.hxx>
+#include <StepKinematics_RotationAboutDirection.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+#include <StepKinematics_ContextDependentKinematicLinkRepresentation.hxx>
+#include <StepKinematics_CylindricalPair.hxx>
+#include <StepKinematics_CylindricalPairValue.hxx>
+#include <StepKinematics_CylindricalPairWithRange.hxx>
+#include <StepKinematics_FullyConstrainedPair.hxx>
+#include <StepKinematics_GearPair.hxx>
+#include <StepKinematics_GearPairValue.hxx>
+#include <StepKinematics_GearPairWithRange.hxx>
+#include <StepKinematics_HomokineticPair.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_KinematicPropertyMechanismRepresentation.hxx>
+#include <StepKinematics_KinematicTopologyDirectedStructure.hxx>
+#include <StepKinematics_KinematicTopologyNetworkStructure.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <StepKinematics_LinearFlexibleAndPinionPair.hxx>
+#include <StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx>
+#include <StepKinematics_LinearFlexibleLinkRepresentation.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+#include <StepKinematics_LowOrderKinematicPairValue.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+#include <StepKinematics_MechanismRepresentation.hxx>
+#include <StepKinematics_OrientedJoint.hxx>
+#include <StepKinematics_PairRepresentationRelationship.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+#include <StepKinematics_PlanarCurvePairRange.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+#include <StepKinematics_PlanarPairValue.hxx>
+#include <StepKinematics_PlanarPairWithRange.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairValue.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+#include <StepKinematics_PointOnSurfacePairValue.hxx>
+#include <StepKinematics_PointOnSurfacePairWithRange.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+#include <StepKinematics_PrismaticPairValue.hxx>
+#include <StepKinematics_PrismaticPairWithRange.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+#include <StepKinematics_RackAndPinionPairValue.hxx>
+#include <StepKinematics_RackAndPinionPairWithRange.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+#include <StepKinematics_RevolutePairValue.hxx>
+#include <StepKinematics_RevolutePairWithRange.hxx>
+#include <StepKinematics_RigidLinkRepresentation.hxx>
+#include <StepKinematics_RollingCurvePair.hxx>
+#include <StepKinematics_RollingCurvePairValue.hxx>
+#include <StepKinematics_RollingSurfacePair.hxx>
+#include <StepKinematics_RollingSurfacePairValue.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+#include <StepKinematics_ScrewPairValue.hxx>
+#include <StepKinematics_ScrewPairWithRange.hxx>
+#include <StepKinematics_SlidingCurvePair.hxx>
+#include <StepKinematics_SlidingCurvePairValue.hxx>
+#include <StepKinematics_SlidingSurfacePair.hxx>
+#include <StepKinematics_SlidingSurfacePairValue.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <StepKinematics_SphericalPairValue.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+#include <StepKinematics_SphericalPairWithPinAndRange.hxx>
+#include <StepKinematics_SphericalPairWithRange.hxx>
+#include <StepKinematics_SurfacePairWithRange.hxx>
+#include <StepKinematics_UnconstrainedPair.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+#include <StepKinematics_UniversalPairValue.hxx>
+#include <StepKinematics_UniversalPairWithRange.hxx>
+#include <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
+
+#include <RWStepRepr_RWRepresentationContextReference.hxx>
+#include <RWStepRepr_RWRepresentationReference.hxx>
+#include <RWStepKinematics_RWSuParameters.hxx>
+#include <RWStepKinematics_RWRotationAboutDirection.hxx>
+#include <RWStepKinematics_RWKinematicJoint.hxx>
+#include <RWStepKinematics_RWActuatedKinematicPair.hxx>
+#include <RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx>
+#include <RWStepKinematics_RWCylindricalPair.hxx>
+#include <RWStepKinematics_RWCylindricalPairValue.hxx>
+#include <RWStepKinematics_RWCylindricalPairWithRange.hxx>
+#include <RWStepKinematics_RWFullyConstrainedPair.hxx>
+#include <RWStepKinematics_RWGearPair.hxx>
+#include <RWStepKinematics_RWGearPairValue.hxx>
+#include <RWStepKinematics_RWGearPairWithRange.hxx>
+#include <RWStepKinematics_RWHomokineticPair.hxx>
+#include <RWStepKinematics_RWKinematicLink.hxx>
+#include <RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx>
+#include <RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx>
+#include <RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx>
+#include <RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx>
+#include <RWStepKinematics_RWKinematicTopologyStructure.hxx>
+#include <RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx>
+#include <RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx>
+#include <RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPair.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPairValue.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx>
+#include <RWStepKinematics_RWMechanismRepresentation.hxx>
+#include <RWStepKinematics_RWOrientedJoint.hxx>
+#include <RWStepKinematics_RWPairRepresentationRelationship.hxx>
+#include <RWStepKinematics_RWPlanarCurvePair.hxx>
+#include <RWStepKinematics_RWPlanarCurvePairRange.hxx>
+#include <RWStepKinematics_RWPlanarPair.hxx>
+#include <RWStepKinematics_RWPlanarPairValue.hxx>
+#include <RWStepKinematics_RWPlanarPairWithRange.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePair.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePair.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePairValue.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePairWithRange.hxx>
+#include <RWStepKinematics_RWPrismaticPair.hxx>
+#include <RWStepKinematics_RWPrismaticPairValue.hxx>
+#include <RWStepKinematics_RWPrismaticPairWithRange.hxx>
+#include <RWStepKinematics_RWProductDefinitionKinematics.hxx>
+#include <RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx>
+#include <RWStepKinematics_RWRackAndPinionPair.hxx>
+#include <RWStepKinematics_RWRackAndPinionPairValue.hxx>
+#include <RWStepKinematics_RWRackAndPinionPairWithRange.hxx>
+#include <RWStepKinematics_RWRevolutePair.hxx>
+#include <RWStepKinematics_RWRevolutePairValue.hxx>
+#include <RWStepKinematics_RWRevolutePairWithRange.hxx>
+#include <RWStepKinematics_RWRigidLinkRepresentation.hxx>
+#include <RWStepKinematics_RWRollingCurvePair.hxx>
+#include <RWStepKinematics_RWRollingCurvePairValue.hxx>
+#include <RWStepKinematics_RWRollingSurfacePair.hxx>
+#include <RWStepKinematics_RWRollingSurfacePairValue.hxx>
+#include <RWStepKinematics_RWScrewPair.hxx>
+#include <RWStepKinematics_RWScrewPairValue.hxx>
+#include <RWStepKinematics_RWScrewPairWithRange.hxx>
+#include <RWStepKinematics_RWSlidingCurvePair.hxx>
+#include <RWStepKinematics_RWSlidingCurvePairValue.hxx>
+#include <RWStepKinematics_RWSlidingSurfacePair.hxx>
+#include <RWStepKinematics_RWSlidingSurfacePairValue.hxx>
+#include <RWStepKinematics_RWSphericalPair.hxx>
+#include <RWStepKinematics_RWSphericalPairValue.hxx>
+#include <RWStepKinematics_RWSphericalPairWithPin.hxx>
+#include <RWStepKinematics_RWSphericalPairWithPinAndRange.hxx>
+#include <RWStepKinematics_RWSphericalPairWithRange.hxx>
+#include <RWStepKinematics_RWSurfacePairWithRange.hxx>
+#include <RWStepKinematics_RWUnconstrainedPair.hxx>
+#include <RWStepKinematics_RWUnconstrainedPairValue.hxx>
+#include <RWStepKinematics_RWUniversalPair.hxx>
+#include <RWStepKinematics_RWUniversalPairValue.hxx>
+#include <RWStepKinematics_RWUniversalPairWithRange.hxx>
+#include <RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx>
 
 static Standard_Integer catsh,catdr,catstr,catdsc,cataux;
 
@@ -5193,6 +5347,539 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
     tool.Share(anent, iter);
   }
   break;
+    case 724:
+  {
+    DeclareAndCast(StepRepr_RepresentationContextReference, anent, ent);
+    RWStepRepr_RWRepresentationContextReference tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 725:
+  {
+    DeclareAndCast(StepRepr_RepresentationReference, anent, ent);
+    RWStepRepr_RWRepresentationReference tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 726:
+  {
+    DeclareAndCast(StepKinematics_SuParameters, anent, ent);
+    RWStepKinematics_RWSuParameters tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 727:
+  {
+    DeclareAndCast(StepKinematics_RotationAboutDirection, anent, ent);
+    RWStepKinematics_RWRotationAboutDirection tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 728:
+  {
+    DeclareAndCast(StepKinematics_KinematicJoint, anent, ent);
+    RWStepKinematics_RWKinematicJoint tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 729:
+  {
+    DeclareAndCast(StepKinematics_ActuatedKinematicPair, anent, ent);
+    RWStepKinematics_RWActuatedKinematicPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 730:
+  {
+    DeclareAndCast(StepKinematics_ContextDependentKinematicLinkRepresentation, anent, ent);
+    RWStepKinematics_RWContextDependentKinematicLinkRepresentation tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 731:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPair, anent, ent);
+    RWStepKinematics_RWCylindricalPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 732:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPairValue, anent, ent);
+    RWStepKinematics_RWCylindricalPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 733:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPairWithRange, anent, ent);
+    RWStepKinematics_RWCylindricalPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 734:
+  {
+    DeclareAndCast(StepKinematics_FullyConstrainedPair, anent, ent);
+    RWStepKinematics_RWFullyConstrainedPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 735:
+  {
+    DeclareAndCast(StepKinematics_GearPair, anent, ent);
+    RWStepKinematics_RWGearPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 736:
+  {
+    DeclareAndCast(StepKinematics_GearPairValue, anent, ent);
+    RWStepKinematics_RWGearPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 737:
+  {
+    DeclareAndCast(StepKinematics_GearPairWithRange, anent, ent);
+    RWStepKinematics_RWGearPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 738:
+  {
+    DeclareAndCast(StepKinematics_HomokineticPair, anent, ent);
+    RWStepKinematics_RWHomokineticPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 739:
+  {
+    DeclareAndCast(StepKinematics_KinematicLink, anent, ent);
+    RWStepKinematics_RWKinematicLink tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 740:
+  {
+    DeclareAndCast(StepKinematics_KinematicLinkRepresentationAssociation, anent, ent);
+    RWStepKinematics_RWKinematicLinkRepresentationAssociation tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 741:
+  {
+    DeclareAndCast(StepKinematics_KinematicPropertyMechanismRepresentation, anent, ent);
+    RWStepKinematics_RWKinematicPropertyMechanismRepresentation tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 742:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyStructure tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 743:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPair, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 744:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPairValue, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 745:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPairWithRange, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 746:
+  {
+    DeclareAndCast(StepKinematics_MechanismRepresentation, anent, ent);
+    RWStepKinematics_RWMechanismRepresentation tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 747:
+  {
+    DeclareAndCast(StepKinematics_OrientedJoint, anent, ent);
+    RWStepKinematics_RWOrientedJoint tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 748:
+  {
+    DeclareAndCast(StepKinematics_PlanarCurvePair, anent, ent);
+    RWStepKinematics_RWPlanarCurvePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 749:
+  {
+    DeclareAndCast(StepKinematics_PlanarCurvePairRange, anent, ent);
+    RWStepKinematics_RWPlanarCurvePairRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 750:
+  {
+    DeclareAndCast(StepKinematics_PlanarPair, anent, ent);
+    RWStepKinematics_RWPlanarPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 751:
+  {
+    DeclareAndCast(StepKinematics_PlanarPairValue, anent, ent);
+    RWStepKinematics_RWPlanarPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 752:
+  {
+    DeclareAndCast(StepKinematics_PlanarPairWithRange, anent, ent);
+    RWStepKinematics_RWPlanarPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 753:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePair, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 754:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePairValue, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 755:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePairWithRange, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 756:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePair, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 757:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePairValue, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 758:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePairWithRange, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 759:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPair, anent, ent);
+    RWStepKinematics_RWPrismaticPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 760:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPairValue, anent, ent);
+    RWStepKinematics_RWPrismaticPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 761:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPairWithRange, anent, ent);
+    RWStepKinematics_RWPrismaticPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 762:
+  {
+    DeclareAndCast(StepKinematics_ProductDefinitionKinematics, anent, ent);
+    RWStepKinematics_RWProductDefinitionKinematics tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 763:
+  {
+    DeclareAndCast(StepKinematics_ProductDefinitionRelationshipKinematics, anent, ent);
+    RWStepKinematics_RWProductDefinitionRelationshipKinematics tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 764:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPair, anent, ent);
+    RWStepKinematics_RWRackAndPinionPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 765:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPairValue, anent, ent);
+    RWStepKinematics_RWRackAndPinionPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 766:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPairWithRange, anent, ent);
+    RWStepKinematics_RWRackAndPinionPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 767:
+  {
+    DeclareAndCast(StepKinematics_RevolutePair, anent, ent);
+    RWStepKinematics_RWRevolutePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 768:
+  {
+    DeclareAndCast(StepKinematics_RevolutePairValue, anent, ent);
+    RWStepKinematics_RWRevolutePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 769:
+  {
+    DeclareAndCast(StepKinematics_RevolutePairWithRange, anent, ent);
+    RWStepKinematics_RWRevolutePairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 770:
+  {
+    DeclareAndCast(StepKinematics_RollingCurvePair, anent, ent);
+    RWStepKinematics_RWRollingCurvePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 771:
+  {
+    DeclareAndCast(StepKinematics_RollingCurvePairValue, anent, ent);
+    RWStepKinematics_RWRollingCurvePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 772:
+  {
+    DeclareAndCast(StepKinematics_RollingSurfacePair, anent, ent);
+    RWStepKinematics_RWRollingSurfacePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 773:
+  {
+    DeclareAndCast(StepKinematics_RollingSurfacePairValue, anent, ent);
+    RWStepKinematics_RWRollingSurfacePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 774:
+  {
+    DeclareAndCast(StepKinematics_ScrewPair, anent, ent);
+    RWStepKinematics_RWScrewPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 775:
+  {
+    DeclareAndCast(StepKinematics_ScrewPairValue, anent, ent);
+    RWStepKinematics_RWScrewPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 776:
+  {
+    DeclareAndCast(StepKinematics_ScrewPairWithRange, anent, ent);
+    RWStepKinematics_RWScrewPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 777:
+  {
+    DeclareAndCast(StepKinematics_SlidingCurvePair, anent, ent);
+    RWStepKinematics_RWSlidingCurvePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 778:
+  {
+    DeclareAndCast(StepKinematics_SlidingCurvePairValue, anent, ent);
+    RWStepKinematics_RWSlidingCurvePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 779:
+  {
+    DeclareAndCast(StepKinematics_SlidingSurfacePair, anent, ent);
+    RWStepKinematics_RWSlidingSurfacePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 780:
+  {
+    DeclareAndCast(StepKinematics_SlidingSurfacePairValue, anent, ent);
+    RWStepKinematics_RWSlidingSurfacePairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 781:
+  {
+    DeclareAndCast(StepKinematics_SphericalPair, anent, ent);
+    RWStepKinematics_RWSphericalPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 782:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairValue, anent, ent);
+    RWStepKinematics_RWSphericalPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 783:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithPin, anent, ent);
+    RWStepKinematics_RWSphericalPairWithPin tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 784:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithPinAndRange, anent, ent);
+    RWStepKinematics_RWSphericalPairWithPinAndRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 785:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithRange, anent, ent);
+    RWStepKinematics_RWSphericalPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 786:
+  {
+    DeclareAndCast(StepKinematics_SurfacePairWithRange, anent, ent);
+    RWStepKinematics_RWSurfacePairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 787:
+  {
+    DeclareAndCast(StepKinematics_UnconstrainedPair, anent, ent);
+    RWStepKinematics_RWUnconstrainedPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 788:
+  {
+    DeclareAndCast(StepKinematics_UnconstrainedPairValue, anent, ent);
+    RWStepKinematics_RWUnconstrainedPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 789:
+  {
+    DeclareAndCast(StepKinematics_UniversalPair, anent, ent);
+    RWStepKinematics_RWUniversalPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 790:
+  {
+    DeclareAndCast(StepKinematics_UniversalPairValue, anent, ent);
+    RWStepKinematics_RWUniversalPairValue tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 791:
+  {
+    DeclareAndCast(StepKinematics_UniversalPairWithRange, anent, ent);
+    RWStepKinematics_RWUniversalPairWithRange tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 792:
+  {
+    DeclareAndCast(StepKinematics_PairRepresentationRelationship, anent, ent);
+    RWStepKinematics_RWPairRepresentationRelationship tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 793:
+  {
+    DeclareAndCast(StepKinematics_RigidLinkRepresentation, anent, ent);
+    RWStepKinematics_RWRigidLinkRepresentation tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 794:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyDirectedStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyDirectedStructure tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 795:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyNetworkStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyNetworkStructure tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 796:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleAndPinionPair, anent, ent);
+    RWStepKinematics_RWLinearFlexibleAndPinionPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 797:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleAndPlanarCurvePair, anent, ent);
+    RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 798:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleLinkRepresentation, anent, ent);
+    RWStepKinematics_RWLinearFlexibleLinkRepresentation tool;
+    tool.Share(anent, iter);
+  }
+  break;
+  case 800:
+  {
+    DeclareAndCast(StepKinematics_ActuatedKinPairAndOrderKinPair, anent, ent);
+    RWStepKinematics_RWActuatedKinPairAndOrderKinPair tool;
+    tool.Share(anent, iter);
+  }
+  break;
+
     default : break;
     }
 }
@@ -7207,16 +7894,245 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
    break;
    case 720:
      ent = new StepVisual_SurfaceStyleTransparent;
-   break;
+     break;
    case 721:
      ent = new StepVisual_SurfaceStyleReflectanceAmbient;
-   break;
+     break;
    case 722:
      ent = new StepVisual_SurfaceStyleRendering;
-   break;
+     break;
    case 723:
      ent = new StepVisual_SurfaceStyleRenderingWithProperties;
-   break;
+     break;
+   case 724:
+     ent = new StepRepr_RepresentationContextReference;
+     break;
+   case 725:
+     ent = new StepRepr_RepresentationReference;
+     break;
+   case 726:
+     ent = new StepKinematics_SuParameters;
+     break;
+   case 727:
+     ent = new StepKinematics_RotationAboutDirection;
+     break;
+   case 728:
+     ent = new StepKinematics_KinematicJoint;
+     break;
+   case 729:
+     ent = new StepKinematics_ActuatedKinematicPair;
+     break;
+   case 730:
+     ent = new StepKinematics_ContextDependentKinematicLinkRepresentation;
+     break;
+   case 731:
+     ent = new StepKinematics_CylindricalPair;
+     break;
+   case 732:
+     ent = new StepKinematics_CylindricalPairValue;
+     break;
+   case 733:
+     ent = new StepKinematics_CylindricalPairWithRange;
+     break;
+   case 734:
+     ent = new StepKinematics_FullyConstrainedPair;
+     break;
+   case 735:
+     ent = new StepKinematics_GearPair;
+     break;
+   case 736:
+     ent = new StepKinematics_GearPairValue;
+     break;
+   case 737:
+     ent = new StepKinematics_GearPairWithRange;
+     break;
+   case 738:
+     ent = new StepKinematics_HomokineticPair;
+     break;
+   case 739:
+     ent = new StepKinematics_KinematicLink;
+     break;
+   case 740:
+     ent = new StepKinematics_KinematicLinkRepresentationAssociation;
+     break;
+   case 741:
+     ent = new StepKinematics_KinematicPropertyMechanismRepresentation;
+     break;
+   case 742:
+     ent = new StepKinematics_KinematicTopologyStructure;
+     break;
+   case 743:
+     ent = new StepKinematics_LowOrderKinematicPair;
+     break;
+   case 744:
+     ent = new StepKinematics_LowOrderKinematicPairValue;
+     break;
+   case 745:
+     ent = new StepKinematics_LowOrderKinematicPairWithRange;
+     break;
+   case 746:
+     ent = new StepKinematics_MechanismRepresentation;
+     break;
+   case 747:
+     ent = new StepKinematics_OrientedJoint;
+     break;
+   case 748:
+     ent = new StepKinematics_PlanarCurvePair;
+     break;
+   case 749:
+     ent = new StepKinematics_PlanarCurvePairRange;
+     break;
+   case 750:
+     ent = new StepKinematics_PlanarPair;
+     break;
+   case 751:
+     ent = new StepKinematics_PlanarPairValue;
+     break;
+   case 752:
+     ent = new StepKinematics_PlanarPairWithRange;
+     break;
+   case 753:
+     ent = new StepKinematics_PointOnPlanarCurvePair;
+     break;
+   case 754:
+     ent = new StepKinematics_PointOnPlanarCurvePairValue;
+     break;
+   case 755:
+     ent = new StepKinematics_PointOnPlanarCurvePairWithRange;
+     break;
+   case 756:
+     ent = new StepKinematics_PointOnSurfacePair;
+     break;
+   case 757:
+     ent = new StepKinematics_PointOnSurfacePairValue;
+     break;
+   case 758:
+     ent = new StepKinematics_PointOnSurfacePairWithRange;
+     break;
+   case 759:
+     ent = new StepKinematics_PrismaticPair;
+     break;
+   case 760:
+     ent = new StepKinematics_PrismaticPairValue;
+     break;
+   case 761:
+     ent = new StepKinematics_PrismaticPairWithRange;
+     break;
+   case 762:
+     ent = new StepKinematics_ProductDefinitionKinematics;
+     break;
+   case 763:
+     ent = new StepKinematics_ProductDefinitionRelationshipKinematics;
+     break;
+   case 764:
+     ent = new StepKinematics_RackAndPinionPair;
+     break;
+   case 765:
+     ent = new StepKinematics_RackAndPinionPairValue;
+     break;
+   case 766:
+     ent = new StepKinematics_RackAndPinionPairWithRange;
+     break;
+   case 767:
+     ent = new StepKinematics_RevolutePair;
+     break;
+   case 768:
+     ent = new StepKinematics_RevolutePairValue;
+     break;
+   case 769:
+     ent = new StepKinematics_RevolutePairWithRange;
+     break;
+   case 770:
+     ent = new StepKinematics_RollingCurvePair;
+     break;
+   case 771:
+     ent = new StepKinematics_RollingCurvePairValue;
+     break;
+   case 772:
+     ent = new StepKinematics_RollingSurfacePair;
+     break;
+   case 773:
+     ent = new StepKinematics_RollingSurfacePairValue;
+     break;
+   case 774:
+     ent = new StepKinematics_ScrewPair;
+     break;
+   case 775:
+     ent = new StepKinematics_ScrewPairValue;
+     break;
+   case 776:
+     ent = new StepKinematics_ScrewPairWithRange;
+     break;
+   case 777:
+     ent = new StepKinematics_SlidingCurvePair;
+     break;
+   case 778:
+     ent = new StepKinematics_SlidingCurvePairValue;
+     break;
+   case 779:
+     ent = new StepKinematics_SlidingSurfacePair;
+     break;
+   case 780:
+     ent = new StepKinematics_SlidingSurfacePairValue;
+     break;
+   case 781:
+     ent = new StepKinematics_SphericalPair;
+     break;
+   case 782:
+     ent = new StepKinematics_SphericalPairValue;
+     break;
+   case 783:
+     ent = new StepKinematics_SphericalPairWithPin;
+     break;
+   case 784:
+     ent = new StepKinematics_SphericalPairWithPinAndRange;
+     break;
+   case 785:
+     ent = new StepKinematics_SphericalPairWithRange;
+     break;
+   case 786:
+     ent = new StepKinematics_SurfacePairWithRange;
+     break;
+   case 787:
+     ent = new StepKinematics_UnconstrainedPair;
+     break;
+   case 788:
+     ent = new StepKinematics_UnconstrainedPairValue;
+     break;
+   case 789:
+     ent = new StepKinematics_UniversalPair;
+     break;
+   case 790:
+     ent = new StepKinematics_UniversalPairValue;
+     break;
+   case 791:
+     ent = new StepKinematics_UniversalPairWithRange;
+     break;
+   case 792:
+     ent = new StepKinematics_PairRepresentationRelationship;
+     break;
+   case 793:
+     ent = new StepKinematics_RigidLinkRepresentation;
+     break;
+   case 794:
+     ent = new StepKinematics_KinematicTopologyDirectedStructure;
+     break;
+   case 795:
+     ent = new StepKinematics_KinematicTopologyNetworkStructure;
+     break;
+   case 796:
+     ent = new StepKinematics_LinearFlexibleAndPinionPair;
+     break;
+   case 797:
+     ent = new StepKinematics_LinearFlexibleAndPlanarCurvePair;
+     break;
+   case 798:
+     ent = new StepKinematics_LinearFlexibleLinkRepresentation;
+     break;
+   case 800:
+     ent = new StepKinematics_ActuatedKinPairAndOrderKinPair;
+     break;
+    
   default: 
     return Standard_False;
   }
@@ -7819,7 +8735,82 @@ Standard_Integer  RWStepAP214_GeneralModule::CategoryNumber
   case 721:
   case 722:
   case 723: return catdr;
-
+  case 724: return cataux;
+  case 725: return cataux;
+  case 726: return cataux;
+  case 727: return cataux;
+  case 728: return cataux;
+  case 729: return cataux;
+  case 730: return cataux;
+  case 731: return cataux;
+  case 732: return cataux;
+  case 733: return cataux;
+  case 734: return cataux;
+  case 735: return cataux;
+  case 736: return cataux;
+  case 737: return cataux;
+  case 738: return cataux;
+  case 739: return cataux;
+  case 740: return cataux;
+  case 741: return cataux;
+  case 742: return cataux;
+  case 743: return cataux;
+  case 744: return cataux;
+  case 745: return cataux;
+  case 746: return cataux;
+  case 747: return cataux;
+  case 748: return cataux;
+  case 749: return cataux;
+  case 750: return cataux;
+  case 751: return cataux;
+  case 752: return cataux;
+  case 753: return cataux;
+  case 754: return cataux;
+  case 755: return cataux;
+  case 756: return cataux;
+  case 757: return cataux;
+  case 758: return cataux;
+  case 759: return cataux;
+  case 760: return cataux;
+  case 761: return cataux;
+  case 762: return cataux;
+  case 763: return cataux;
+  case 764: return cataux;
+  case 765: return cataux;
+  case 766: return cataux;
+  case 767: return cataux;
+  case 768: return cataux;
+  case 769: return cataux;
+  case 770: return cataux;
+  case 771: return cataux;
+  case 772: return cataux;
+  case 773: return cataux;
+  case 774: return cataux;
+  case 775: return cataux;
+  case 776: return cataux;
+  case 777: return cataux;
+  case 778: return cataux;
+  case 779: return cataux;
+  case 780: return cataux;
+  case 781: return cataux;
+  case 782: return cataux;
+  case 783: return cataux;
+  case 784: return cataux;
+  case 785: return cataux;
+  case 786: return cataux;
+  case 787: return cataux;
+  case 788: return cataux;
+  case 789: return cataux;
+  case 790: return cataux;
+  case 791: return cataux;
+  case 792: return cataux;
+  case 793: return cataux;
+  case 794: return cataux;
+  case 795: return cataux;
+  case 796: return cataux;
+  case 797: return cataux;
+  case 798: return cataux;
+  case 800: return catsh;
   default : break;
   }
   return 0;
index 5e4749acea4fa9c44ddd8f1ce5f2baadb0946dac..4f3f50b395cc11e00cc31711c97006247cbce315 100644 (file)
@@ -1408,6 +1408,160 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
 #include <RWStepVisual_RWCameraModelD3MultiClippingUnion.hxx>
 #include <StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem.hxx>
 #include <RWStepVisual_RWAnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem.hxx>
+// Added for kinematics implementation
+#include <StepRepr_RepresentationContextReference.hxx>
+#include <StepRepr_RepresentationReference.hxx>
+#include <StepKinematics_SuParameters.hxx>
+#include <StepKinematics_RotationAboutDirection.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+#include <StepKinematics_ContextDependentKinematicLinkRepresentation.hxx>
+#include <StepKinematics_CylindricalPair.hxx>
+#include <StepKinematics_CylindricalPairValue.hxx>
+#include <StepKinematics_CylindricalPairWithRange.hxx>
+#include <StepKinematics_FullyConstrainedPair.hxx>
+#include <StepKinematics_GearPair.hxx>
+#include <StepKinematics_GearPairValue.hxx>
+#include <StepKinematics_GearPairWithRange.hxx>
+#include <StepKinematics_HomokineticPair.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_KinematicPropertyMechanismRepresentation.hxx>
+#include <StepKinematics_KinematicTopologyDirectedStructure.hxx>
+#include <StepKinematics_KinematicTopologyNetworkStructure.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <StepKinematics_LinearFlexibleAndPinionPair.hxx>
+#include <StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx>
+#include <StepKinematics_LinearFlexibleLinkRepresentation.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+#include <StepKinematics_LowOrderKinematicPairValue.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+#include <StepKinematics_MechanismRepresentation.hxx>
+#include <StepKinematics_OrientedJoint.hxx>
+#include <StepKinematics_PairRepresentationRelationship.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+#include <StepKinematics_PlanarCurvePairRange.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+#include <StepKinematics_PlanarPairValue.hxx>
+#include <StepKinematics_PlanarPairWithRange.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairValue.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+#include <StepKinematics_PointOnSurfacePairValue.hxx>
+#include <StepKinematics_PointOnSurfacePairWithRange.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+#include <StepKinematics_PrismaticPairValue.hxx>
+#include <StepKinematics_PrismaticPairWithRange.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+#include <StepKinematics_RackAndPinionPairValue.hxx>
+#include <StepKinematics_RackAndPinionPairWithRange.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+#include <StepKinematics_RevolutePairValue.hxx>
+#include <StepKinematics_RevolutePairWithRange.hxx>
+#include <StepKinematics_RigidLinkRepresentation.hxx>
+#include <StepKinematics_RollingCurvePair.hxx>
+#include <StepKinematics_RollingCurvePairValue.hxx>
+#include <StepKinematics_RollingSurfacePair.hxx>
+#include <StepKinematics_RollingSurfacePairValue.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+#include <StepKinematics_ScrewPairValue.hxx>
+#include <StepKinematics_ScrewPairWithRange.hxx>
+#include <StepKinematics_SlidingCurvePair.hxx>
+#include <StepKinematics_SlidingCurvePairValue.hxx>
+#include <StepKinematics_SlidingSurfacePair.hxx>
+#include <StepKinematics_SlidingSurfacePairValue.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <StepKinematics_SphericalPairValue.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+#include <StepKinematics_SphericalPairWithPinAndRange.hxx>
+#include <StepKinematics_SphericalPairWithRange.hxx>
+#include <StepKinematics_SurfacePairWithRange.hxx>
+#include <StepKinematics_UnconstrainedPair.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+#include <StepKinematics_UniversalPairValue.hxx>
+#include <StepKinematics_UniversalPairWithRange.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
+#include <RWStepRepr_RWRepresentationContextReference.hxx>
+#include <RWStepRepr_RWRepresentationReference.hxx>
+#include <RWStepKinematics_RWSuParameters.hxx>
+#include <RWStepKinematics_RWRotationAboutDirection.hxx>
+#include <RWStepKinematics_RWKinematicJoint.hxx>
+#include <RWStepKinematics_RWActuatedKinematicPair.hxx>
+#include <RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx>
+#include <RWStepKinematics_RWCylindricalPair.hxx>
+#include <RWStepKinematics_RWCylindricalPairValue.hxx>
+#include <RWStepKinematics_RWCylindricalPairWithRange.hxx>
+#include <RWStepKinematics_RWFullyConstrainedPair.hxx>
+#include <RWStepKinematics_RWGearPair.hxx>
+#include <RWStepKinematics_RWGearPairValue.hxx>
+#include <RWStepKinematics_RWGearPairWithRange.hxx>
+#include <RWStepKinematics_RWHomokineticPair.hxx>
+#include <RWStepKinematics_RWKinematicLink.hxx>
+#include <RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx>
+#include <RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx>
+#include <RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx>
+#include <RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx>
+#include <RWStepKinematics_RWKinematicTopologyStructure.hxx>
+#include <RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx>
+#include <RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx>
+#include <RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPair.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPairValue.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx>
+#include <RWStepKinematics_RWMechanismRepresentation.hxx>
+#include <RWStepKinematics_RWOrientedJoint.hxx>
+#include <RWStepKinematics_RWPairRepresentationRelationship.hxx>
+#include <RWStepKinematics_RWPlanarCurvePair.hxx>
+#include <RWStepKinematics_RWPlanarCurvePairRange.hxx>
+#include <RWStepKinematics_RWPlanarPair.hxx>
+#include <RWStepKinematics_RWPlanarPairValue.hxx>
+#include <RWStepKinematics_RWPlanarPairWithRange.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePair.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePair.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePairValue.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePairWithRange.hxx>
+#include <RWStepKinematics_RWPrismaticPair.hxx>
+#include <RWStepKinematics_RWPrismaticPairValue.hxx>
+#include <RWStepKinematics_RWPrismaticPairWithRange.hxx>
+#include <RWStepKinematics_RWProductDefinitionKinematics.hxx>
+#include <RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx>
+#include <RWStepKinematics_RWRackAndPinionPair.hxx>
+#include <RWStepKinematics_RWRackAndPinionPairValue.hxx>
+#include <RWStepKinematics_RWRackAndPinionPairWithRange.hxx>
+#include <RWStepKinematics_RWRevolutePair.hxx>
+#include <RWStepKinematics_RWRevolutePairValue.hxx>
+#include <RWStepKinematics_RWRevolutePairWithRange.hxx>
+#include <RWStepKinematics_RWRigidLinkRepresentation.hxx>
+#include <RWStepKinematics_RWRollingCurvePair.hxx>
+#include <RWStepKinematics_RWRollingCurvePairValue.hxx>
+#include <RWStepKinematics_RWRollingSurfacePair.hxx>
+#include <RWStepKinematics_RWRollingSurfacePairValue.hxx>
+#include <RWStepKinematics_RWScrewPair.hxx>
+#include <RWStepKinematics_RWScrewPairValue.hxx>
+#include <RWStepKinematics_RWScrewPairWithRange.hxx>
+#include <RWStepKinematics_RWSlidingCurvePair.hxx>
+#include <RWStepKinematics_RWSlidingCurvePairValue.hxx>
+#include <RWStepKinematics_RWSlidingSurfacePair.hxx>
+#include <RWStepKinematics_RWSlidingSurfacePairValue.hxx>
+#include <RWStepKinematics_RWSphericalPair.hxx>
+#include <RWStepKinematics_RWSphericalPairValue.hxx>
+#include <RWStepKinematics_RWSphericalPairWithPin.hxx>
+#include <RWStepKinematics_RWSphericalPairWithPinAndRange.hxx>
+#include <RWStepKinematics_RWSphericalPairWithRange.hxx>
+#include <RWStepKinematics_RWSurfacePairWithRange.hxx>
+#include <RWStepKinematics_RWUnconstrainedPair.hxx>
+#include <RWStepKinematics_RWUnconstrainedPairValue.hxx>
+#include <RWStepKinematics_RWUniversalPair.hxx>
+#include <RWStepKinematics_RWUniversalPairValue.hxx>
+#include <RWStepKinematics_RWUniversalPairWithRange.hxx>
+#include <RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx>
 
 #include <RWStepVisual_RWSurfaceStyleTransparent.hxx>
 #include <RWStepVisual_RWSurfaceStyleReflectanceAmbient.hxx>
@@ -2060,6 +2214,83 @@ static TCollection_AsciiString Reco_SurfaceStyleReflectanceAmbient("SURFACE_STYL
 static TCollection_AsciiString Reco_SurfaceStyleRendering("SURFACE_STYLE_RENDERING");
 static TCollection_AsciiString Reco_SurfaceStyleRenderingWithProperties("SURFACE_STYLE_RENDERING_WITH_PROPERTIES");
 
+static TCollection_AsciiString Reco_RepresentationContextReference("REPRESENTATION_CONTEXT_REFERENCE");
+static TCollection_AsciiString Reco_RepresentationReference("REPRESENTATION_REFERENCE");
+static TCollection_AsciiString Reco_SuParameters("SU_PARAMETERS");
+static TCollection_AsciiString Reco_RotationAboutDirection("ROTATION_ABOUT_DIRECTION");
+static TCollection_AsciiString Reco_KinematicJoint("KINEMATIC_JOINT");
+static TCollection_AsciiString Reco_ActuatedKinematicPair("ACTUATED_KINEMATIC_PAIR");
+static TCollection_AsciiString Reco_ContextDependentKinematicLinkRepresentation("CONTEXT_DEPENDENT_KINEMATIC_LINK_REPRESENTATION");
+static TCollection_AsciiString Reco_CylindricalPair("CYLINDRICAL_PAIR");
+static TCollection_AsciiString Reco_CylindricalPairValue("CYLINDRICAL_PAIR_VALUE");
+static TCollection_AsciiString Reco_CylindricalPairWithRange("CYLINDRICAL_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_FullyConstrainedPair("FULLY_CONSTRAINED_PAIR");
+static TCollection_AsciiString Reco_GearPair("GEAR_PAIR");
+static TCollection_AsciiString Reco_GearPairValue("GEAR_PAIR_VALUE");
+static TCollection_AsciiString Reco_GearPairWithRange("GEAR_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_HomokineticPair("HOMOKINETIC_PAIR");
+static TCollection_AsciiString Reco_KinematicLink("KINEMATIC_LINK");
+static TCollection_AsciiString Reco_KinematicLinkRepresentationAssociation("KINEMATIC_LINK_REPRESENTATION_ASSOCIATION");
+static TCollection_AsciiString Reco_KinematicPropertyMechanismRepresentation("KINEMATIC_PROPERTY_MECHANISM_REPRESENTATION");
+static TCollection_AsciiString Reco_KinematicTopologyDirectedStructure("KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE");
+static TCollection_AsciiString Reco_KinematicTopologyNetworkStructure("KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE");
+static TCollection_AsciiString Reco_KinematicTopologyStructure("KINEMATIC_TOPOLOGY_STRUCTURE");
+static TCollection_AsciiString Reco_LinearFlexibleAndPinionPair("LINEAR_FLEXIBLE_AND_PINION_PAIR");
+static TCollection_AsciiString Reco_LinearFlexibleAndPlanarCurvePair("LINEAR_FLEXIBLE_AND_PLANAR_CURVE_PAIR");
+static TCollection_AsciiString Reco_LinearFlexibleLinkRepresentation("LINEAR_FLEXIBLE_LINK_REPRESENTATION");
+static TCollection_AsciiString Reco_LowOrderKinematicPair("LOW_ORDER_KINEMATIC_PAIR");
+static TCollection_AsciiString Reco_LowOrderKinematicPairValue("LOW_ORDER_KINEMATIC_PAIR_VALUE");
+static TCollection_AsciiString Reco_LowOrderKinematicPairWithRange("LOW_ORDER_KINEMATIC_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_MechanismRepresentation("MECHANISM_REPRESENTATION");
+static TCollection_AsciiString Reco_OrientedJoint("ORIENTED_JOINT");
+static TCollection_AsciiString Reco_PairRepresentationRelationship("PAIR_REPRESENTATION_RELATIONSHIP");
+static TCollection_AsciiString Reco_PlanarCurvePair("PLANAR_CURVE_PAIR");
+static TCollection_AsciiString Reco_PlanarCurvePairRange("PLANAR_CURVE_PAIR_RANGE");
+static TCollection_AsciiString Reco_PlanarPair("PLANAR_PAIR");
+static TCollection_AsciiString Reco_PlanarPairValue("PLANAR_PAIR_VALUE");
+static TCollection_AsciiString Reco_PlanarPairWithRange("PLANAR_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_PointOnPlanarCurvePair("POINT_ON_PLANAR_CURVE_PAIR");
+static TCollection_AsciiString Reco_PointOnPlanarCurvePairValue("POINT_ON_PLANAR_CURVE_PAIR_VALUE");
+static TCollection_AsciiString Reco_PointOnPlanarCurvePairWithRange("POINT_ON_PLANAR_CURVE_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_PointOnSurfacePair("POINT_ON_SURFACE_PAIR");
+static TCollection_AsciiString Reco_PointOnSurfacePairValue("POINT_ON_SURFACE_PAIR_VALUE");
+static TCollection_AsciiString Reco_PointOnSurfacePairWithRange("POINT_ON_SURFACE_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_PrismaticPair("PRISMATIC_PAIR");
+static TCollection_AsciiString Reco_PrismaticPairValue("PRISMATIC_PAIR_VALUE");
+static TCollection_AsciiString Reco_PrismaticPairWithRange("PRISMATIC_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_ProductDefinitionKinematics("PRODUCT_DEFINITION_KINEMATICS");
+static TCollection_AsciiString Reco_ProductDefinitionRelationshipKinematics("PRODUCT_DEFINITION_RELATIONSHIP_KINEMATICS");
+static TCollection_AsciiString Reco_RackAndPinionPair("RACK_AND_PINION_PAIR");
+static TCollection_AsciiString Reco_RackAndPinionPairValue("RACK_AND_PINION_PAIR_VALUE");
+static TCollection_AsciiString Reco_RackAndPinionPairWithRange("RACK_AND_PINION_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_RevolutePair("REVOLUTE_PAIR");
+static TCollection_AsciiString Reco_RevolutePairValue("REVOLUTE_PAIR_VALUE");
+static TCollection_AsciiString Reco_RevolutePairWithRange("REVOLUTE_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_RigidLinkRepresentation("RIGID_LINK_REPRESENTATION");
+static TCollection_AsciiString Reco_RollingCurvePair("ROLLING_CURVE_PAIR");
+static TCollection_AsciiString Reco_RollingCurvePairValue("ROLLING_CURVE_PAIR_VALUE");
+static TCollection_AsciiString Reco_RollingSurfacePair("ROLLING_SURFACE_PAIR");
+static TCollection_AsciiString Reco_RollingSurfacePairValue("ROLLING_SURFACE_PAIR_VALUE");
+static TCollection_AsciiString Reco_ScrewPair("SCREW_PAIR");
+static TCollection_AsciiString Reco_ScrewPairValue("SCREW_PAIR_VALUE");
+static TCollection_AsciiString Reco_ScrewPairWithRange("SCREW_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_SlidingCurvePair("SLIDING_CURVE_PAIR");
+static TCollection_AsciiString Reco_SlidingCurvePairValue("SLIDING_CURVE_PAIR_VALUE");
+static TCollection_AsciiString Reco_SlidingSurfacePair("SLIDING_SURFACE_PAIR");
+static TCollection_AsciiString Reco_SlidingSurfacePairValue("SLIDING_SURFACE_PAIR_VALUE");
+static TCollection_AsciiString Reco_SphericalPair("SPHERICAL_PAIR");
+static TCollection_AsciiString Reco_SphericalPairValue("SPHERICAL_PAIR_VALUE");
+static TCollection_AsciiString Reco_SphericalPairWithPin("SPHERICAL_PAIR_WITH_PIN");
+static TCollection_AsciiString Reco_SphericalPairWithPinAndRange("SPHERICAL_PAIR_WITH_PIN_AND_RANGE");
+static TCollection_AsciiString Reco_SphericalPairWithRange("SPHERICAL_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_SurfacePairWithRange("SURFACE_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_UnconstrainedPair("UNCONSTRAINED_PAIR");
+static TCollection_AsciiString Reco_UnconstrainedPairValue("UNCONSTRAINED_PAIR_VALUE");
+static TCollection_AsciiString Reco_UniversalPair("UNIVERSAL_PAIR");
+static TCollection_AsciiString Reco_UniversalPairValue("UNIVERSAL_PAIR_VALUE");
+static TCollection_AsciiString Reco_UniversalPairWithRange("UNIVERSAL_PAIR_WITH_RANGE");
+static TCollection_AsciiString Reco_KinematicPair("KINEMATIC_PAIR");
+
 // -- Definition of the libraries --
 
 static NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typenums;
@@ -2717,11 +2948,88 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
   typenums.Bind ( Reco_CameraModelD3MultiClippingIntersection, 717);
   typenums.Bind ( Reco_CameraModelD3MultiClippingUnion, 718);
 
-  typenums.Bind (Reco_SurfaceStyleTransparent, 720);
-  typenums.Bind (Reco_SurfaceStyleReflectanceAmbient, 721);
-  typenums.Bind (Reco_SurfaceStyleRendering, 722);
-  typenums.Bind (Reco_SurfaceStyleRenderingWithProperties, 723);
-
+  typenums.Bind(Reco_SurfaceStyleTransparent, 720);
+  typenums.Bind(Reco_SurfaceStyleReflectanceAmbient, 721);
+  typenums.Bind(Reco_SurfaceStyleRendering, 722);
+  typenums.Bind(Reco_SurfaceStyleRenderingWithProperties, 723);
+
+  typenums.Bind(Reco_RepresentationContextReference, 724);
+  typenums.Bind(Reco_RepresentationReference, 725);
+  typenums.Bind(Reco_SuParameters, 726);
+  typenums.Bind(Reco_RotationAboutDirection, 727);
+  typenums.Bind(Reco_KinematicJoint, 728);
+  typenums.Bind(Reco_ActuatedKinematicPair, 729);
+  typenums.Bind(Reco_ContextDependentKinematicLinkRepresentation, 730);
+  typenums.Bind(Reco_CylindricalPair, 731);
+  typenums.Bind(Reco_CylindricalPairValue, 732);
+  typenums.Bind(Reco_CylindricalPairWithRange, 733);
+  typenums.Bind(Reco_FullyConstrainedPair, 734);
+  typenums.Bind(Reco_GearPair, 735);
+  typenums.Bind(Reco_GearPairValue, 736);
+  typenums.Bind(Reco_GearPairWithRange, 737);
+  typenums.Bind(Reco_HomokineticPair, 738);
+  typenums.Bind(Reco_KinematicLink, 739);
+  typenums.Bind(Reco_KinematicLinkRepresentationAssociation, 740);
+  typenums.Bind(Reco_KinematicPropertyMechanismRepresentation, 741);
+  typenums.Bind(Reco_KinematicTopologyStructure, 742);
+  typenums.Bind(Reco_LowOrderKinematicPair, 743);
+  typenums.Bind(Reco_LowOrderKinematicPairValue, 744);
+  typenums.Bind(Reco_LowOrderKinematicPairWithRange, 745);
+  typenums.Bind(Reco_MechanismRepresentation, 746);
+  typenums.Bind(Reco_OrientedJoint, 747);
+  typenums.Bind(Reco_PlanarCurvePair, 748);
+  typenums.Bind(Reco_PlanarCurvePairRange, 749);
+  typenums.Bind(Reco_PlanarPair, 750);
+  typenums.Bind(Reco_PlanarPairValue, 751);
+  typenums.Bind(Reco_PlanarPairWithRange, 752);
+  typenums.Bind(Reco_PointOnPlanarCurvePair, 753);
+  typenums.Bind(Reco_PointOnPlanarCurvePairValue, 754);
+  typenums.Bind(Reco_PointOnPlanarCurvePairWithRange, 755);
+  typenums.Bind(Reco_PointOnSurfacePair, 756);
+  typenums.Bind(Reco_PointOnSurfacePairValue, 757);
+  typenums.Bind(Reco_PointOnSurfacePairWithRange, 758);
+  typenums.Bind(Reco_PrismaticPair, 759);
+  typenums.Bind(Reco_PrismaticPairValue, 760);
+  typenums.Bind(Reco_PrismaticPairWithRange, 761);
+  typenums.Bind(Reco_ProductDefinitionKinematics, 762);
+  typenums.Bind(Reco_ProductDefinitionRelationshipKinematics, 763);
+  typenums.Bind(Reco_RackAndPinionPair, 764);
+  typenums.Bind(Reco_RackAndPinionPairValue, 765);
+  typenums.Bind(Reco_RackAndPinionPairWithRange, 766);
+  typenums.Bind(Reco_RevolutePair, 767);
+  typenums.Bind(Reco_RevolutePairValue, 768);
+  typenums.Bind(Reco_RevolutePairWithRange, 769);
+  typenums.Bind(Reco_RollingCurvePair, 770);
+  typenums.Bind(Reco_RollingCurvePairValue, 771);
+  typenums.Bind(Reco_RollingSurfacePair, 772);
+  typenums.Bind(Reco_RollingSurfacePairValue, 773);
+  typenums.Bind(Reco_ScrewPair, 774);
+  typenums.Bind(Reco_ScrewPairValue, 775);
+  typenums.Bind(Reco_ScrewPairWithRange, 776);
+  typenums.Bind(Reco_SlidingCurvePair, 777);
+  typenums.Bind(Reco_SlidingCurvePairValue, 778);
+  typenums.Bind(Reco_SlidingSurfacePair, 779);
+  typenums.Bind(Reco_SlidingSurfacePairValue, 780);
+  typenums.Bind(Reco_SphericalPair, 781);
+  typenums.Bind(Reco_SphericalPairValue, 782);
+  typenums.Bind(Reco_SphericalPairWithPin, 783);
+  typenums.Bind(Reco_SphericalPairWithPinAndRange, 784);
+  typenums.Bind(Reco_SphericalPairWithRange, 785);
+  typenums.Bind(Reco_SurfacePairWithRange, 786);
+  typenums.Bind(Reco_UnconstrainedPair, 787);
+  typenums.Bind(Reco_UnconstrainedPairValue, 788);
+  typenums.Bind(Reco_UniversalPair, 789);
+  typenums.Bind(Reco_UniversalPairValue, 790);
+  typenums.Bind(Reco_UniversalPairWithRange, 791);
+  typenums.Bind(Reco_PairRepresentationRelationship, 792);
+  typenums.Bind(Reco_RigidLinkRepresentation, 793);
+  typenums.Bind(Reco_KinematicTopologyDirectedStructure, 794);
+  typenums.Bind(Reco_KinematicTopologyNetworkStructure, 795);
+  typenums.Bind(Reco_LinearFlexibleAndPinionPair, 796);
+  typenums.Bind(Reco_LinearFlexibleAndPlanarCurvePair, 797);
+  typenums.Bind(Reco_LinearFlexibleLinkRepresentation, 798);
+  typenums.Bind(Reco_KinematicPair, 799);
+  
 //    SHORT NAMES
 //    NB : la liste est celle de AP203
 //    Directement exploite pour les types simples
@@ -3336,8 +3644,30 @@ Standard_Integer RWStepAP214_ReadWriteModule::CaseStep
           isOK = Standard_False;
         }
     }
-    
-    if (NbComp == 7) {
+    if (NbComp == 8)
+    {
+      if ((types(1).IsEqual(StepType(729))) &&
+        (types(2).IsEqual(StepType(144)))   &&
+        (types(3).IsEqual(StepType(354)))   &&
+        (types(4).IsEqual(StepType(799)))   &&
+        (types(5).IsEqual(StepType(743)))   &&
+         (((types(6).IsEqual(StepType(759))) &&
+         (types(7).IsEqual(StepType(761))))  ||
+         ((types(6).IsEqual(StepType(731)))  &&
+         (types(7).IsEqual(StepType(733))))  ||
+         ((types(6).IsEqual(StepType(767)))  &&
+         (types(7).IsEqual(StepType(769))))  ||
+         ((types(6).IsEqual(StepType(789)))  &&
+         (types(7).IsEqual(StepType(791))))  ||
+         ((types(6).IsEqual(StepType(781)))  &&
+         (types(7).IsEqual(StepType(785))))  ||
+         ((types(6).IsEqual(StepType(783)))  &&
+         (types(7).IsEqual(StepType(784))))) &&
+        (types(8).IsEqual(StepType(247)))) {
+        return 800;
+      }
+    }
+    else if (NbComp == 7) {
       if ((types(1).IsEqual(StepType(48))) &&
           (types(2).IsEqual(StepType(38))) &&
           (types(3).IsEqual(StepType(84))) &&
@@ -3419,15 +3749,7 @@ Standard_Integer RWStepAP214_ReadWriteModule::CaseStep
                (types(7).IsEqual(StepType(271)))) {
         return 323;
       }
-      else if ((types(1).IsEqual(StepType(40))) &&
-               (types(2).IsEqual(StepType(41))) &&
-               (types(3).IsEqual(StepType(240))) &&
-               (types(4).IsEqual(StepType(49))) &&
-               (types(5).IsEqual(StepType(247))) &&
-               (types(6).IsEqual(StepType(144))) &&
-               (types(7).IsEqual(StepType(271)))) {
-        return 323;
-      }
+      
     }
     // Added by FMA
     else if (NbComp == 6) {
@@ -3917,6 +4239,8 @@ Standard_Boolean RWStepAP214_ReadWriteModule::IsComplex
       return Standard_True;
     case 719:
       return Standard_True;
+    case 796:
+      return Standard_True;
     default:
       return Standard_False;
     }
@@ -4576,10 +4900,88 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
   case 717 : return Reco_CameraModelD3MultiClippingIntersection;
   case 718 : return Reco_CameraModelD3MultiClippingUnion;
 
-  case 720 : return Reco_SurfaceStyleTransparent;
-  case 721 : return Reco_SurfaceStyleReflectanceAmbient;
-  case 722 : return Reco_SurfaceStyleRendering;
-  case 723 : return Reco_SurfaceStyleRenderingWithProperties;
+  case 720: return Reco_SurfaceStyleTransparent;
+  case 721: return Reco_SurfaceStyleReflectanceAmbient;
+  case 722: return Reco_SurfaceStyleRendering;
+  case 723: return Reco_SurfaceStyleRenderingWithProperties;
+
+  case 724: return Reco_RepresentationContextReference;
+  case 725: return Reco_RepresentationReference;
+  case 726: return Reco_SuParameters;
+  case 727: return Reco_RotationAboutDirection;
+  case 728: return Reco_KinematicJoint;
+  case 729: return Reco_ActuatedKinematicPair;
+  case 730: return Reco_ContextDependentKinematicLinkRepresentation;
+  case 731: return Reco_CylindricalPair;
+  case 732: return Reco_CylindricalPairValue;
+  case 733: return Reco_CylindricalPairWithRange;
+  case 734: return Reco_FullyConstrainedPair;
+  case 735: return Reco_GearPair;
+  case 736: return Reco_GearPairValue;
+  case 737: return Reco_GearPairWithRange;
+  case 738: return Reco_HomokineticPair;
+  case 739: return Reco_KinematicLink;
+  case 740: return Reco_KinematicLinkRepresentationAssociation;
+  case 741: return Reco_KinematicPropertyMechanismRepresentation;
+  case 742: return Reco_KinematicTopologyStructure;
+  case 743: return Reco_LowOrderKinematicPair;
+  case 744: return Reco_LowOrderKinematicPairValue;
+  case 745: return Reco_LowOrderKinematicPairWithRange;
+  case 746: return Reco_MechanismRepresentation;
+  case 747: return Reco_OrientedJoint;
+  case 748: return Reco_PlanarCurvePair;
+  case 749: return Reco_PlanarCurvePairRange;
+  case 750: return Reco_PlanarPair;
+  case 751: return Reco_PlanarPairValue;
+  case 752: return Reco_PlanarPairWithRange;
+  case 753: return Reco_PointOnPlanarCurvePair;
+  case 754: return Reco_PointOnPlanarCurvePairValue;
+  case 755: return Reco_PointOnPlanarCurvePairWithRange;
+  case 756: return Reco_PointOnSurfacePair;
+  case 757: return Reco_PointOnSurfacePairValue;
+  case 758: return Reco_PointOnSurfacePairWithRange;
+  case 759: return Reco_PrismaticPair;
+  case 760: return Reco_PrismaticPairValue;
+  case 761: return Reco_PrismaticPairWithRange;
+  case 762: return Reco_ProductDefinitionKinematics;
+  case 763: return Reco_ProductDefinitionRelationshipKinematics;
+  case 764: return Reco_RackAndPinionPair;
+  case 765: return Reco_RackAndPinionPairValue;
+  case 766: return Reco_RackAndPinionPairWithRange;
+  case 767: return Reco_RevolutePair;
+  case 768: return Reco_RevolutePairValue;
+  case 769: return Reco_RevolutePairWithRange;
+  case 770: return Reco_RollingCurvePair;
+  case 771: return Reco_RollingCurvePairValue;
+  case 772: return Reco_RollingSurfacePair;
+  case 773: return Reco_RollingSurfacePairValue;
+  case 774: return Reco_ScrewPair;
+  case 775: return Reco_ScrewPairValue;
+  case 776: return Reco_ScrewPairWithRange;
+  case 777: return Reco_SlidingCurvePair;
+  case 778: return Reco_SlidingCurvePairValue;
+  case 779: return Reco_SlidingSurfacePair;
+  case 780: return Reco_SlidingSurfacePairValue;
+  case 781: return Reco_SphericalPair;
+  case 782: return Reco_SphericalPairValue;
+  case 783: return Reco_SphericalPairWithPin;
+  case 784: return Reco_SphericalPairWithPinAndRange;
+  case 785: return Reco_SphericalPairWithRange;
+  case 786: return Reco_SurfacePairWithRange;
+  case 787: return Reco_UnconstrainedPair;
+  case 788: return Reco_UnconstrainedPairValue;
+  case 789: return Reco_UniversalPair;
+  case 790: return Reco_UniversalPairValue;
+  case 791: return Reco_UniversalPairWithRange;
+  case 792: return Reco_PairRepresentationRelationship;
+  case 793: return Reco_RigidLinkRepresentation;
+  case 794: return Reco_KinematicTopologyDirectedStructure;
+  case 795: return Reco_KinematicTopologyNetworkStructure;
+  case 796: return Reco_LinearFlexibleAndPinionPair;
+  case 797: return Reco_LinearFlexibleAndPlanarCurvePair;
+  case 798: return Reco_LinearFlexibleLinkRepresentation;
+  case 799: return Reco_KinematicPair;
+
 
   default : return PasReco;
   }
@@ -4864,7 +5266,7 @@ Standard_Boolean RWStepAP214_ReadWriteModule::ComplexType(const Standard_Integer
       types.Append (StepType(625));
       types.Append (StepType(677));
       break;
-      default : return Standard_False;
+      
     case 698:
       types.Append (StepType(671));
       types.Append (StepType(470));
@@ -4902,6 +5304,17 @@ Standard_Boolean RWStepAP214_ReadWriteModule::ComplexType(const Standard_Integer
       types.Append(StepType(247));
       types.Append(StepType(270));
       break;
+    case 800:
+      types.Append(StepType(729));
+      types.Append(StepType(144));
+      types.Append(StepType(354));
+      types.Append(StepType(799));
+      types.Append(StepType(743));
+      types.Append(StepType(757));
+      types.Append(StepType(759));
+      types.Append(StepType(247));
+      break;
+    default: return Standard_False;
     }
   return Standard_True;
 }
@@ -9480,7 +9893,7 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
      tool.ReadStep(data, num, ach, anent);
    }
    break;
-  case 720:
+   case 720:
   {
     DeclareAndCast(StepVisual_SurfaceStyleTransparent, anent, ent);
     RWStepVisual_RWSurfaceStyleTransparent tool;
@@ -9508,244 +9921,776 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
     tool.ReadStep(data, num, ach, anent);
   }
   break;
-
-  default: 
-    ach->AddFail("Type Mismatch when reading - Entity");
+   case 724:
+  {
+    DeclareAndCast(StepRepr_RepresentationContextReference, anent, ent);
+    RWStepRepr_RWRepresentationContextReference tool;
+    tool.ReadStep(data, num, ach, anent);
   }
-  return;
-}
-
-
-//=======================================================================
-//function : WriteStep
-//purpose  : Writing of a file
-//=======================================================================
-
-void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
-                                            StepData_StepWriter& SW,
-                                            const Handle(Standard_Transient)&ent) const
-{
-  if (CN == 0) return;
-  switch (CN) {
-  case 1 : 
-    {
-      DeclareAndCast(StepBasic_Address, anent, ent);
-      RWStepBasic_RWAddress tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 2 : 
-    {
-      DeclareAndCast(StepShape_AdvancedBrepShapeRepresentation, anent, ent);
-      RWStepShape_RWAdvancedBrepShapeRepresentation tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 3 : 
-    {
-      DeclareAndCast(StepShape_AdvancedFace, anent, ent);
-      RWStepShape_RWAdvancedFace tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 4 :
-    {
-      DeclareAndCast(StepVisual_AnnotationCurveOccurrence, anent, ent);
-      RWStepVisual_RWAnnotationCurveOccurrence tool;
-      tool.WriteStep (SW,anent);
-    }
-    break;
-  case 5:
+  break;
+  case 725:
   {
-    DeclareAndCast(StepVisual_AnnotationFillArea, anent, ent);
-    RWStepVisual_RWAnnotationFillArea tool;
-    tool.WriteStep(SW, anent);
+    DeclareAndCast(StepRepr_RepresentationReference, anent, ent);
+    RWStepRepr_RWRepresentationReference tool;
+    tool.ReadStep(data, num, ach, anent);
   }
-    break;
-  case 6:
+  break;
+  case 726:
   {
-    DeclareAndCast(StepVisual_AnnotationFillAreaOccurrence, anent, ent);
-    RWStepVisual_RWAnnotationFillAreaOccurrence tool;
-    tool.WriteStep(SW, anent);
+    DeclareAndCast(StepKinematics_SuParameters, anent, ent);
+    RWStepKinematics_RWSuParameters tool;
+    tool.ReadStep(data, num, ach, anent);
   }
-    break;
-  case 7 : 
-    {
-      DeclareAndCast(StepVisual_AnnotationOccurrence, anent, ent);
-      RWStepVisual_RWAnnotationOccurrence tool;
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 11 : 
-    {
-      DeclareAndCast(StepRepr_MappedItem, anent, ent);
-      RWStepRepr_RWMappedItem tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 12 : 
-    {
-      DeclareAndCast(StepVisual_StyledItem, anent, ent);
-      RWStepVisual_RWStyledItem tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 13 : 
-    {
-      DeclareAndCast(StepBasic_ApplicationContext, anent, ent);
-      RWStepBasic_RWApplicationContext tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 14 : 
-    {
-      DeclareAndCast(StepBasic_ApplicationContextElement, anent, ent);
-      RWStepBasic_RWApplicationContextElement tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 15 : 
-    {
-      DeclareAndCast(StepBasic_ApplicationProtocolDefinition, anent, ent);
-      RWStepBasic_RWApplicationProtocolDefinition tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 16 : 
-    {
-      DeclareAndCast(StepBasic_Approval, anent, ent);
-      RWStepBasic_RWApproval tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 18 : 
-    {
-      DeclareAndCast(StepBasic_ApprovalPersonOrganization, anent, ent);
-      RWStepBasic_RWApprovalPersonOrganization tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 19 : 
-    {
-      DeclareAndCast(StepBasic_ApprovalRelationship, anent, ent);
-      RWStepBasic_RWApprovalRelationship tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 20 : 
-    {
-      DeclareAndCast(StepBasic_ApprovalRole, anent, ent);
-      RWStepBasic_RWApprovalRole tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 21 : 
-    {
-      DeclareAndCast(StepBasic_ApprovalStatus, anent, ent);
-      RWStepBasic_RWApprovalStatus tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 22 : 
-    {
-      DeclareAndCast(StepVisual_AreaInSet, anent, ent);
-      RWStepVisual_RWAreaInSet tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 23 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignActualDateAndTimeAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignActualDateAndTimeAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 24 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignActualDateAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignActualDateAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 25 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignApprovalAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignApprovalAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 26 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignDateAndPersonAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignDateAndPersonAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 27 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignGroupAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignGroupAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 28 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignNominalDateAndTimeAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignNominalDateAndTimeAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 29 : 
-    {
-      DeclareAndCast(StepAP214_AutoDesignNominalDateAssignment, anent, ent);
-      RWStepAP214_RWAutoDesignNominalDateAssignment tool;
-//      if (anent.IsNull()) return; 
-      tool.WriteStep (SW,anent);
-    }
-    
-    break;
-  case 30 : 
+  break;
+  case 727:
+  {
+    DeclareAndCast(StepKinematics_RotationAboutDirection, anent, ent);
+    RWStepKinematics_RWRotationAboutDirection tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 728:
+  {
+    DeclareAndCast(StepKinematics_KinematicJoint, anent, ent);
+    RWStepKinematics_RWKinematicJoint tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 729:
+  {
+    DeclareAndCast(StepKinematics_ActuatedKinematicPair, anent, ent);
+    RWStepKinematics_RWActuatedKinematicPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 730:
+  {
+    DeclareAndCast(StepKinematics_ContextDependentKinematicLinkRepresentation, anent, ent);
+    RWStepKinematics_RWContextDependentKinematicLinkRepresentation tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 731:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPair, anent, ent);
+    RWStepKinematics_RWCylindricalPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 732:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPairValue, anent, ent);
+    RWStepKinematics_RWCylindricalPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 733:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPairWithRange, anent, ent);
+    RWStepKinematics_RWCylindricalPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 734:
+  {
+    DeclareAndCast(StepKinematics_FullyConstrainedPair, anent, ent);
+    RWStepKinematics_RWFullyConstrainedPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 735:
+  {
+    DeclareAndCast(StepKinematics_GearPair, anent, ent);
+    RWStepKinematics_RWGearPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 736:
+  {
+    DeclareAndCast(StepKinematics_GearPairValue, anent, ent);
+    RWStepKinematics_RWGearPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 737:
+  {
+    DeclareAndCast(StepKinematics_GearPairWithRange, anent, ent);
+    RWStepKinematics_RWGearPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 738:
+  {
+    DeclareAndCast(StepKinematics_HomokineticPair, anent, ent);
+    RWStepKinematics_RWHomokineticPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 739:
+  {
+    DeclareAndCast(StepKinematics_KinematicLink, anent, ent);
+    RWStepKinematics_RWKinematicLink tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 740:
+  {
+    DeclareAndCast(StepKinematics_KinematicLinkRepresentationAssociation, anent, ent);
+    RWStepKinematics_RWKinematicLinkRepresentationAssociation tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 741:
+  {
+    DeclareAndCast(StepKinematics_KinematicPropertyMechanismRepresentation, anent, ent);
+    RWStepKinematics_RWKinematicPropertyMechanismRepresentation tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 742:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyStructure tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 743:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPair, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 744:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPairValue, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 745:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPairWithRange, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 746:
+  {
+    DeclareAndCast(StepKinematics_MechanismRepresentation, anent, ent);
+    RWStepKinematics_RWMechanismRepresentation tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 747:
+  {
+    DeclareAndCast(StepKinematics_OrientedJoint, anent, ent);
+    RWStepKinematics_RWOrientedJoint tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 748:
+  {
+    DeclareAndCast(StepKinematics_PlanarCurvePair, anent, ent);
+    RWStepKinematics_RWPlanarCurvePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 749:
+  {
+    DeclareAndCast(StepKinematics_PlanarCurvePairRange, anent, ent);
+    RWStepKinematics_RWPlanarCurvePairRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 750:
+  {
+    DeclareAndCast(StepKinematics_PlanarPair, anent, ent);
+    RWStepKinematics_RWPlanarPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 751:
+  {
+    DeclareAndCast(StepKinematics_PlanarPairValue, anent, ent);
+    RWStepKinematics_RWPlanarPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 752:
+  {
+    DeclareAndCast(StepKinematics_PlanarPairWithRange, anent, ent);
+    RWStepKinematics_RWPlanarPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 753:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePair, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 754:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePairValue, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 755:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePairWithRange, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 756:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePair, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 757:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePairValue, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 758:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePairWithRange, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 759:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPair, anent, ent);
+    RWStepKinematics_RWPrismaticPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 760:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPairValue, anent, ent);
+    RWStepKinematics_RWPrismaticPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 761:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPairWithRange, anent, ent);
+    RWStepKinematics_RWPrismaticPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 762:
+  {
+    DeclareAndCast(StepKinematics_ProductDefinitionKinematics, anent, ent);
+    RWStepKinematics_RWProductDefinitionKinematics tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 763:
+  {
+    DeclareAndCast(StepKinematics_ProductDefinitionRelationshipKinematics, anent, ent);
+    RWStepKinematics_RWProductDefinitionRelationshipKinematics tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 764:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPair, anent, ent);
+    RWStepKinematics_RWRackAndPinionPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 765:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPairValue, anent, ent);
+    RWStepKinematics_RWRackAndPinionPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 766:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPairWithRange, anent, ent);
+    RWStepKinematics_RWRackAndPinionPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 767:
+  {
+    DeclareAndCast(StepKinematics_RevolutePair, anent, ent);
+    RWStepKinematics_RWRevolutePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 768:
+  {
+    DeclareAndCast(StepKinematics_RevolutePairValue, anent, ent);
+    RWStepKinematics_RWRevolutePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 769:
+  {
+    DeclareAndCast(StepKinematics_RevolutePairWithRange, anent, ent);
+    RWStepKinematics_RWRevolutePairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 770:
+  {
+    DeclareAndCast(StepKinematics_RollingCurvePair, anent, ent);
+    RWStepKinematics_RWRollingCurvePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 771:
+  {
+    DeclareAndCast(StepKinematics_RollingCurvePairValue, anent, ent);
+    RWStepKinematics_RWRollingCurvePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 772:
+  {
+    DeclareAndCast(StepKinematics_RollingSurfacePair, anent, ent);
+    RWStepKinematics_RWRollingSurfacePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 773:
+  {
+    DeclareAndCast(StepKinematics_RollingSurfacePairValue, anent, ent);
+    RWStepKinematics_RWRollingSurfacePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 774:
+  {
+    DeclareAndCast(StepKinematics_ScrewPair, anent, ent);
+    RWStepKinematics_RWScrewPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 775:
+  {
+    DeclareAndCast(StepKinematics_ScrewPairValue, anent, ent);
+    RWStepKinematics_RWScrewPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 776:
+  {
+    DeclareAndCast(StepKinematics_ScrewPairWithRange, anent, ent);
+    RWStepKinematics_RWScrewPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 777:
+  {
+    DeclareAndCast(StepKinematics_SlidingCurvePair, anent, ent);
+    RWStepKinematics_RWSlidingCurvePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 778:
+  {
+    DeclareAndCast(StepKinematics_SlidingCurvePairValue, anent, ent);
+    RWStepKinematics_RWSlidingCurvePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 779:
+  {
+    DeclareAndCast(StepKinematics_SlidingSurfacePair, anent, ent);
+    RWStepKinematics_RWSlidingSurfacePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 780:
+  {
+    DeclareAndCast(StepKinematics_SlidingSurfacePairValue, anent, ent);
+    RWStepKinematics_RWSlidingSurfacePairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 781:
+  {
+    DeclareAndCast(StepKinematics_SphericalPair, anent, ent);
+    RWStepKinematics_RWSphericalPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 782:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairValue, anent, ent);
+    RWStepKinematics_RWSphericalPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 783:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithPin, anent, ent);
+    RWStepKinematics_RWSphericalPairWithPin tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 784:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithPinAndRange, anent, ent);
+    RWStepKinematics_RWSphericalPairWithPinAndRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 785:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithRange, anent, ent);
+    RWStepKinematics_RWSphericalPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 786:
+  {
+    DeclareAndCast(StepKinematics_SurfacePairWithRange, anent, ent);
+    RWStepKinematics_RWSurfacePairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 787:
+  {
+    DeclareAndCast(StepKinematics_UnconstrainedPair, anent, ent);
+    RWStepKinematics_RWUnconstrainedPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 788:
+  {
+    DeclareAndCast(StepKinematics_UnconstrainedPairValue, anent, ent);
+    RWStepKinematics_RWUnconstrainedPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 789:
+  {
+    DeclareAndCast(StepKinematics_UniversalPair, anent, ent);
+    RWStepKinematics_RWUniversalPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 790:
+  {
+    DeclareAndCast(StepKinematics_UniversalPairValue, anent, ent);
+    RWStepKinematics_RWUniversalPairValue tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 791:
+  {
+    DeclareAndCast(StepKinematics_UniversalPairWithRange, anent, ent);
+    RWStepKinematics_RWUniversalPairWithRange tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 792:
+  {
+    DeclareAndCast(StepKinematics_PairRepresentationRelationship, anent, ent);
+    RWStepKinematics_RWPairRepresentationRelationship tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 793:
+  {
+    DeclareAndCast(StepKinematics_RigidLinkRepresentation, anent, ent);
+    RWStepKinematics_RWRigidLinkRepresentation tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 794:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyDirectedStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyDirectedStructure tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 795:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyNetworkStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyNetworkStructure tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 796:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleAndPinionPair, anent, ent);
+    RWStepKinematics_RWLinearFlexibleAndPinionPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 797:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleAndPlanarCurvePair, anent, ent);
+    RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 798:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleLinkRepresentation, anent, ent);
+    RWStepKinematics_RWLinearFlexibleLinkRepresentation tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 800:
+  {
+    DeclareAndCast(StepKinematics_ActuatedKinPairAndOrderKinPair, anent, ent);
+    RWStepKinematics_RWActuatedKinPairAndOrderKinPair tool;
+    tool.ReadStep(data, num, ach, anent);
+  }
+  break;
+
+  default: 
+    ach->AddFail("Type Mismatch when reading - Entity");
+  }
+  return;
+}
+
+
+//=======================================================================
+//function : WriteStep
+//purpose  : Writing of a file
+//=======================================================================
+
+void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
+                                            StepData_StepWriter& SW,
+                                            const Handle(Standard_Transient)&ent) const
+{
+  if (CN == 0) return;
+  switch (CN) {
+  case 1 : 
+    {
+      DeclareAndCast(StepBasic_Address, anent, ent);
+      RWStepBasic_RWAddress tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 2 : 
+    {
+      DeclareAndCast(StepShape_AdvancedBrepShapeRepresentation, anent, ent);
+      RWStepShape_RWAdvancedBrepShapeRepresentation tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 3 : 
+    {
+      DeclareAndCast(StepShape_AdvancedFace, anent, ent);
+      RWStepShape_RWAdvancedFace tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 4 :
+    {
+      DeclareAndCast(StepVisual_AnnotationCurveOccurrence, anent, ent);
+      RWStepVisual_RWAnnotationCurveOccurrence tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 5:
+  {
+    DeclareAndCast(StepVisual_AnnotationFillArea, anent, ent);
+    RWStepVisual_RWAnnotationFillArea tool;
+    tool.WriteStep(SW, anent);
+  }
+    break;
+  case 6:
+  {
+    DeclareAndCast(StepVisual_AnnotationFillAreaOccurrence, anent, ent);
+    RWStepVisual_RWAnnotationFillAreaOccurrence tool;
+    tool.WriteStep(SW, anent);
+  }
+    break;
+  case 7 : 
+    {
+      DeclareAndCast(StepVisual_AnnotationOccurrence, anent, ent);
+      RWStepVisual_RWAnnotationOccurrence tool;
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 11 : 
+    {
+      DeclareAndCast(StepRepr_MappedItem, anent, ent);
+      RWStepRepr_RWMappedItem tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 12 : 
+    {
+      DeclareAndCast(StepVisual_StyledItem, anent, ent);
+      RWStepVisual_RWStyledItem tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 13 : 
+    {
+      DeclareAndCast(StepBasic_ApplicationContext, anent, ent);
+      RWStepBasic_RWApplicationContext tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 14 : 
+    {
+      DeclareAndCast(StepBasic_ApplicationContextElement, anent, ent);
+      RWStepBasic_RWApplicationContextElement tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 15 : 
+    {
+      DeclareAndCast(StepBasic_ApplicationProtocolDefinition, anent, ent);
+      RWStepBasic_RWApplicationProtocolDefinition tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 16 : 
+    {
+      DeclareAndCast(StepBasic_Approval, anent, ent);
+      RWStepBasic_RWApproval tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 18 : 
+    {
+      DeclareAndCast(StepBasic_ApprovalPersonOrganization, anent, ent);
+      RWStepBasic_RWApprovalPersonOrganization tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 19 : 
+    {
+      DeclareAndCast(StepBasic_ApprovalRelationship, anent, ent);
+      RWStepBasic_RWApprovalRelationship tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 20 : 
+    {
+      DeclareAndCast(StepBasic_ApprovalRole, anent, ent);
+      RWStepBasic_RWApprovalRole tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 21 : 
+    {
+      DeclareAndCast(StepBasic_ApprovalStatus, anent, ent);
+      RWStepBasic_RWApprovalStatus tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 22 : 
+    {
+      DeclareAndCast(StepVisual_AreaInSet, anent, ent);
+      RWStepVisual_RWAreaInSet tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 23 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignActualDateAndTimeAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignActualDateAndTimeAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 24 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignActualDateAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignActualDateAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 25 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignApprovalAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignApprovalAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 26 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignDateAndPersonAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignDateAndPersonAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 27 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignGroupAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignGroupAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 28 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignNominalDateAndTimeAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignNominalDateAndTimeAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 29 : 
+    {
+      DeclareAndCast(StepAP214_AutoDesignNominalDateAssignment, anent, ent);
+      RWStepAP214_RWAutoDesignNominalDateAssignment tool;
+//      if (anent.IsNull()) return; 
+      tool.WriteStep (SW,anent);
+    }
+    
+    break;
+  case 30 : 
     {
       DeclareAndCast(StepAP214_AutoDesignOrganizationAssignment, anent, ent);
       RWStepAP214_RWAutoDesignOrganizationAssignment tool;
@@ -14201,197 +15146,730 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
       tool.WriteStep (SW,anent);
     }
     break;
-  case 697:
+  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;
+  case 702:
+    {
+      DeclareAndCast(StepRepr_FeatureForDatumTargetRelationship,anent,ent);
+      RWStepRepr_RWFeatureForDatumTargetRelationship tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 703:
+    {
+      DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent);
+      RWStepAP242_RWDraughtingModelItemAssociation tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 704:
+    {
+      DeclareAndCast(StepVisual_AnnotationPlane,anent,ent);
+      RWStepVisual_RWAnnotationPlane tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 705:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 706:
+    {
+      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthMaxTol,anent,ent);
+      RWStepDimTol_RWGeoTolAndGeoTolWthMaxTol tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+    case 707:
+    {
+      DeclareAndCast(StepVisual_TessellatedAnnotationOccurrence,anent,ent);
+      RWStepVisual_RWTessellatedAnnotationOccurrence tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+
+     case 708:
+    {
+      DeclareAndCast(StepVisual_TessellatedItem,anent,ent);
+      RWStepVisual_RWTessellatedItem tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+
+     case 709:
+    {
+      DeclareAndCast(StepVisual_TessellatedGeometricSet,anent,ent);
+      RWStepVisual_RWTessellatedGeometricSet tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+     case 710:
+    {
+      DeclareAndCast(StepVisual_TessellatedCurveSet,anent,ent);
+      RWStepVisual_RWTessellatedCurveSet tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+      case 711:
+    {
+      DeclareAndCast(StepVisual_CoordinatesList,anent,ent);
+      RWStepVisual_RWCoordinatesList tool;
+      tool.WriteStep(SW,anent);
+    }
+    break;
+      case 712:
     {
-      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol,anent,ent);
-      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepRepr_ConstructiveGeometryRepresentation,anent,ent);
+      RWStepRepr_RWConstructiveGeometryRepresentation tool;
+      tool.WriteStep(SW,anent);
     }
     break;
-  case 698:
+      case 713:
     {
-      DeclareAndCast(StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp,anent,ent);
-      RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepRepr_ConstructiveGeometryRepresentationRelationship,anent,ent);
+      RWStepRepr_RWConstructiveGeometryRepresentationRelationship tool;
+      tool.WriteStep(SW,anent);
     }
     break;
-  case 699:
+      case 714:
     {
-      DeclareAndCast(StepRepr_CompShAspAndDatumFeatAndShAsp,anent,ent);
-      RWStepRepr_RWCompShAspAndDatumFeatAndShAsp tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepRepr_CharacterizedRepresentation, anent, ent);
+      RWStepRepr_RWCharacterizedRepresentation tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-  case 700:
+      case 715:
     {
-      DeclareAndCast(StepRepr_IntegerRepresentationItem,anent,ent);
-      RWStepRepr_RWIntegerRepresentationItem tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_CharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation, anent, ent);
+      RWStepVisual_RWCharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-  case 701:
+      case 716:
     {
-      DeclareAndCast(StepRepr_ValueRepresentationItem,anent,ent);
-      RWStepRepr_RWValueRepresentationItem tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_CameraModelD3MultiClipping, anent, ent);
+      RWStepVisual_RWCameraModelD3MultiClipping tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-  case 702:
+      case 717:
     {
-      DeclareAndCast(StepRepr_FeatureForDatumTargetRelationship,anent,ent);
-      RWStepRepr_RWFeatureForDatumTargetRelationship tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_CameraModelD3MultiClippingIntersection, anent, ent);
+      RWStepVisual_RWCameraModelD3MultiClippingIntersection tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-  case 703:
+      case 718:
     {
-      DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent);
-      RWStepAP242_RWDraughtingModelItemAssociation tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_CameraModelD3MultiClippingUnion, anent, ent);
+      RWStepVisual_RWCameraModelD3MultiClippingUnion tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-  case 704:
+      case 719:
     {
-      DeclareAndCast(StepVisual_AnnotationPlane,anent,ent);
-      RWStepVisual_RWAnnotationPlane tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem, anent, ent);
+      RWStepVisual_RWAnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem tool;
+      tool.WriteStep(SW, anent);
     }
-    break;
-  case 705:
+      break;
+    case 720:
     {
-      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent);
-      RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_SurfaceStyleTransparent, anent, ent);
+      RWStepVisual_RWSurfaceStyleTransparent tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-  case 706:
+    case 721:
     {
-      DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthMaxTol,anent,ent);
-      RWStepDimTol_RWGeoTolAndGeoTolWthMaxTol tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_SurfaceStyleReflectanceAmbient, anent, ent);
+      RWStepVisual_RWSurfaceStyleReflectanceAmbient tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-    case 707:
+    case 722:
     {
-      DeclareAndCast(StepVisual_TessellatedAnnotationOccurrence,anent,ent);
-      RWStepVisual_RWTessellatedAnnotationOccurrence tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_SurfaceStyleRendering, anent, ent);
+      RWStepVisual_RWSurfaceStyleRendering tool;
+      tool.WriteStep(SW, anent);
     }
     break;
-
-     case 708:
+    case 723:
     {
-      DeclareAndCast(StepVisual_TessellatedItem,anent,ent);
-      RWStepVisual_RWTessellatedItem tool;
-      tool.WriteStep (SW,anent);
+      DeclareAndCast(StepVisual_SurfaceStyleRenderingWithProperties, anent, ent);
+      RWStepVisual_RWSurfaceStyleRenderingWithProperties tool;
+      tool.WriteStep(SW, anent);
     }
     break;
+  case 724:
+  {
+    DeclareAndCast(StepRepr_RepresentationContextReference, anent, ent);
+    RWStepRepr_RWRepresentationContextReference tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 725:
+  {
+    DeclareAndCast(StepRepr_RepresentationReference, anent, ent);
+    RWStepRepr_RWRepresentationReference tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 726:
+  {
+    DeclareAndCast(StepKinematics_SuParameters, anent, ent);
+    RWStepKinematics_RWSuParameters tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 727:
+  {
+    DeclareAndCast(StepKinematics_RotationAboutDirection, anent, ent);
+    RWStepKinematics_RWRotationAboutDirection tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 728:
+  {
+    DeclareAndCast(StepKinematics_KinematicJoint, anent, ent);
+    RWStepKinematics_RWKinematicJoint tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 729:
+  {
+    DeclareAndCast(StepKinematics_ActuatedKinematicPair, anent, ent);
+    RWStepKinematics_RWActuatedKinematicPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 730:
+  {
+    DeclareAndCast(StepKinematics_ContextDependentKinematicLinkRepresentation, anent, ent);
+    RWStepKinematics_RWContextDependentKinematicLinkRepresentation tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 731:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPair, anent, ent);
+    RWStepKinematics_RWCylindricalPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 732:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPairValue, anent, ent);
+    RWStepKinematics_RWCylindricalPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 733:
+  {
+    DeclareAndCast(StepKinematics_CylindricalPairWithRange, anent, ent);
+    RWStepKinematics_RWCylindricalPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 734:
+  {
+    DeclareAndCast(StepKinematics_FullyConstrainedPair, anent, ent);
+    RWStepKinematics_RWFullyConstrainedPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 735:
+  {
+    DeclareAndCast(StepKinematics_GearPair, anent, ent);
+    RWStepKinematics_RWGearPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 736:
+  {
+    DeclareAndCast(StepKinematics_GearPairValue, anent, ent);
+    RWStepKinematics_RWGearPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 737:
+  {
+    DeclareAndCast(StepKinematics_GearPairWithRange, anent, ent);
+    RWStepKinematics_RWGearPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 738:
+  {
+    DeclareAndCast(StepKinematics_HomokineticPair, anent, ent);
+    RWStepKinematics_RWHomokineticPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 739:
+  {
+    DeclareAndCast(StepKinematics_KinematicLink, anent, ent);
+    RWStepKinematics_RWKinematicLink tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 740:
+  {
+    DeclareAndCast(StepKinematics_KinematicLinkRepresentationAssociation, anent, ent);
+    RWStepKinematics_RWKinematicLinkRepresentationAssociation tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 741:
+  {
+    DeclareAndCast(StepKinematics_KinematicPropertyMechanismRepresentation, anent, ent);
+    RWStepKinematics_RWKinematicPropertyMechanismRepresentation tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 742:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyStructure tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 743:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPair, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 744:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPairValue, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 745:
+  {
+    DeclareAndCast(StepKinematics_LowOrderKinematicPairWithRange, anent, ent);
+    RWStepKinematics_RWLowOrderKinematicPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 746:
+  {
+    DeclareAndCast(StepKinematics_MechanismRepresentation, anent, ent);
+    RWStepKinematics_RWMechanismRepresentation tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 747:
+  {
+    DeclareAndCast(StepKinematics_OrientedJoint, anent, ent);
+    RWStepKinematics_RWOrientedJoint tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 748:
+  {
+    DeclareAndCast(StepKinematics_PlanarCurvePair, anent, ent);
+    RWStepKinematics_RWPlanarCurvePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 749:
+  {
+    DeclareAndCast(StepKinematics_PlanarCurvePairRange, anent, ent);
+    RWStepKinematics_RWPlanarCurvePairRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 750:
+  {
+    DeclareAndCast(StepKinematics_PlanarPair, anent, ent);
+    RWStepKinematics_RWPlanarPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 751:
+  {
+    DeclareAndCast(StepKinematics_PlanarPairValue, anent, ent);
+    RWStepKinematics_RWPlanarPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 752:
+  {
+    DeclareAndCast(StepKinematics_PlanarPairWithRange, anent, ent);
+    RWStepKinematics_RWPlanarPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 753:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePair, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 754:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePairValue, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 755:
+  {
+    DeclareAndCast(StepKinematics_PointOnPlanarCurvePairWithRange, anent, ent);
+    RWStepKinematics_RWPointOnPlanarCurvePairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 756:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePair, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 757:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePairValue, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 758:
+  {
+    DeclareAndCast(StepKinematics_PointOnSurfacePairWithRange, anent, ent);
+    RWStepKinematics_RWPointOnSurfacePairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 759:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPair, anent, ent);
+    RWStepKinematics_RWPrismaticPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 760:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPairValue, anent, ent);
+    RWStepKinematics_RWPrismaticPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 761:
+  {
+    DeclareAndCast(StepKinematics_PrismaticPairWithRange, anent, ent);
+    RWStepKinematics_RWPrismaticPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 762:
+  {
+    DeclareAndCast(StepKinematics_ProductDefinitionKinematics, anent, ent);
+    RWStepKinematics_RWProductDefinitionKinematics tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 763:
+  {
+    DeclareAndCast(StepKinematics_ProductDefinitionRelationshipKinematics, anent, ent);
+    RWStepKinematics_RWProductDefinitionRelationshipKinematics tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 764:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPair, anent, ent);
+    RWStepKinematics_RWRackAndPinionPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 765:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPairValue, anent, ent);
+    RWStepKinematics_RWRackAndPinionPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 766:
+  {
+    DeclareAndCast(StepKinematics_RackAndPinionPairWithRange, anent, ent);
+    RWStepKinematics_RWRackAndPinionPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 767:
+  {
+    DeclareAndCast(StepKinematics_RevolutePair, anent, ent);
+    RWStepKinematics_RWRevolutePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 768:
+  {
+    DeclareAndCast(StepKinematics_RevolutePairValue, anent, ent);
+    RWStepKinematics_RWRevolutePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 769:
+  {
+    DeclareAndCast(StepKinematics_RevolutePairWithRange, anent, ent);
+    RWStepKinematics_RWRevolutePairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 770:
+  {
+    DeclareAndCast(StepKinematics_RollingCurvePair, anent, ent);
+    RWStepKinematics_RWRollingCurvePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 771:
+  {
+    DeclareAndCast(StepKinematics_RollingCurvePairValue, anent, ent);
+    RWStepKinematics_RWRollingCurvePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 772:
+  {
+    DeclareAndCast(StepKinematics_RollingSurfacePair, anent, ent);
+    RWStepKinematics_RWRollingSurfacePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 773:
+  {
+    DeclareAndCast(StepKinematics_RollingSurfacePairValue, anent, ent);
+    RWStepKinematics_RWRollingSurfacePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 774:
+  {
+    DeclareAndCast(StepKinematics_ScrewPair, anent, ent);
+    RWStepKinematics_RWScrewPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 775:
+  {
+    DeclareAndCast(StepKinematics_ScrewPairValue, anent, ent);
+    RWStepKinematics_RWScrewPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 776:
+  {
+    DeclareAndCast(StepKinematics_ScrewPairWithRange, anent, ent);
+    RWStepKinematics_RWScrewPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 777:
+  {
+    DeclareAndCast(StepKinematics_SlidingCurvePair, anent, ent);
+    RWStepKinematics_RWSlidingCurvePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 778:
+  {
+    DeclareAndCast(StepKinematics_SlidingCurvePairValue, anent, ent);
+    RWStepKinematics_RWSlidingCurvePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 779:
+  {
+    DeclareAndCast(StepKinematics_SlidingSurfacePair, anent, ent);
+    RWStepKinematics_RWSlidingSurfacePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 780:
+  {
+    DeclareAndCast(StepKinematics_SlidingSurfacePairValue, anent, ent);
+    RWStepKinematics_RWSlidingSurfacePairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 781:
+  {
+    DeclareAndCast(StepKinematics_SphericalPair, anent, ent);
+    RWStepKinematics_RWSphericalPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 782:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairValue, anent, ent);
+    RWStepKinematics_RWSphericalPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 783:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithPin, anent, ent);
+    RWStepKinematics_RWSphericalPairWithPin tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 784:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithPinAndRange, anent, ent);
+    RWStepKinematics_RWSphericalPairWithPinAndRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 785:
+  {
+    DeclareAndCast(StepKinematics_SphericalPairWithRange, anent, ent);
+    RWStepKinematics_RWSphericalPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 786:
+  {
+    DeclareAndCast(StepKinematics_SurfacePairWithRange, anent, ent);
+    RWStepKinematics_RWSurfacePairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 787:
+  {
+    DeclareAndCast(StepKinematics_UnconstrainedPair, anent, ent);
+    RWStepKinematics_RWUnconstrainedPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 788:
+  {
+    DeclareAndCast(StepKinematics_UnconstrainedPairValue, anent, ent);
+    RWStepKinematics_RWUnconstrainedPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 789:
+  {
+    DeclareAndCast(StepKinematics_UniversalPair, anent, ent);
+    RWStepKinematics_RWUniversalPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 790:
+  {
+    DeclareAndCast(StepKinematics_UniversalPairValue, anent, ent);
+    RWStepKinematics_RWUniversalPairValue tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 791:
+  {
+    DeclareAndCast(StepKinematics_UniversalPairWithRange, anent, ent);
+    RWStepKinematics_RWUniversalPairWithRange tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 792:
+  {
+    DeclareAndCast(StepKinematics_PairRepresentationRelationship, anent, ent);
+    RWStepKinematics_RWPairRepresentationRelationship tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 793:
+  {
+    DeclareAndCast(StepKinematics_RigidLinkRepresentation, anent, ent);
+    RWStepKinematics_RWRigidLinkRepresentation tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 794:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyDirectedStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyDirectedStructure tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 795:
+  {
+    DeclareAndCast(StepKinematics_KinematicTopologyNetworkStructure, anent, ent);
+    RWStepKinematics_RWKinematicTopologyNetworkStructure tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 796:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleAndPinionPair, anent, ent);
+    RWStepKinematics_RWLinearFlexibleAndPinionPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 797:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleAndPlanarCurvePair, anent, ent);
+    RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 798:
+  {
+    DeclareAndCast(StepKinematics_LinearFlexibleLinkRepresentation, anent, ent);
+    RWStepKinematics_RWLinearFlexibleLinkRepresentation tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
+  case 800:
+  {
+    DeclareAndCast(StepKinematics_ActuatedKinPairAndOrderKinPair, anent, ent);
+    RWStepKinematics_RWActuatedKinPairAndOrderKinPair tool;
+    tool.WriteStep(SW, anent);
+  }
+  break;
 
-     case 709:
-    {
-      DeclareAndCast(StepVisual_TessellatedGeometricSet,anent,ent);
-      RWStepVisual_RWTessellatedGeometricSet tool;
-      tool.WriteStep (SW,anent);
-    }
-    break;
-     case 710:
-    {
-      DeclareAndCast(StepVisual_TessellatedCurveSet,anent,ent);
-      RWStepVisual_RWTessellatedCurveSet tool;
-      tool.WriteStep (SW,anent);
-    }
-    break;
-      case 711:
-    {
-      DeclareAndCast(StepVisual_CoordinatesList,anent,ent);
-      RWStepVisual_RWCoordinatesList tool;
-      tool.WriteStep(SW,anent);
-    }
-    break;
-      case 712:
-    {
-      DeclareAndCast(StepRepr_ConstructiveGeometryRepresentation,anent,ent);
-      RWStepRepr_RWConstructiveGeometryRepresentation tool;
-      tool.WriteStep(SW,anent);
-    }
-    break;
-      case 713:
-    {
-      DeclareAndCast(StepRepr_ConstructiveGeometryRepresentationRelationship,anent,ent);
-      RWStepRepr_RWConstructiveGeometryRepresentationRelationship tool;
-      tool.WriteStep(SW,anent);
-    }
-    break;
-      case 714:
-    {
-      DeclareAndCast(StepRepr_CharacterizedRepresentation, anent, ent);
-      RWStepRepr_RWCharacterizedRepresentation tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-      case 715:
-    {
-      DeclareAndCast(StepVisual_CharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation, anent, ent);
-      RWStepVisual_RWCharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-      case 716:
-    {
-      DeclareAndCast(StepVisual_CameraModelD3MultiClipping, anent, ent);
-      RWStepVisual_RWCameraModelD3MultiClipping tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-      case 717:
-    {
-      DeclareAndCast(StepVisual_CameraModelD3MultiClippingIntersection, anent, ent);
-      RWStepVisual_RWCameraModelD3MultiClippingIntersection tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-      case 718:
-    {
-      DeclareAndCast(StepVisual_CameraModelD3MultiClippingUnion, anent, ent);
-      RWStepVisual_RWCameraModelD3MultiClippingUnion tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-      case 719:
-    {
-      DeclareAndCast(StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem, anent, ent);
-      RWStepVisual_RWAnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem tool;
-      tool.WriteStep(SW, anent);
-    }
-      break;
-    case 720:
-    {
-      DeclareAndCast(StepVisual_SurfaceStyleTransparent, anent, ent);
-      RWStepVisual_RWSurfaceStyleTransparent tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-    case 721:
-    {
-      DeclareAndCast(StepVisual_SurfaceStyleReflectanceAmbient, anent, ent);
-      RWStepVisual_RWSurfaceStyleReflectanceAmbient tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-    case 722:
-    {
-      DeclareAndCast(StepVisual_SurfaceStyleRendering, anent, ent);
-      RWStepVisual_RWSurfaceStyleRendering tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
-    case 723:
-    {
-      DeclareAndCast(StepVisual_SurfaceStyleRenderingWithProperties, anent, ent);
-      RWStepVisual_RWSurfaceStyleRenderingWithProperties tool;
-      tool.WriteStep(SW, anent);
-    }
-    break;
   default: 
     return;
   }
diff --git a/src/RWStepKinematics/FILES b/src/RWStepKinematics/FILES
new file mode 100644 (file)
index 0000000..491b2cc
--- /dev/null
@@ -0,0 +1,148 @@
+RWStepKinematics_RWActuatedKinematicPair.cxx
+RWStepKinematics_RWActuatedKinematicPair.hxx
+RWStepKinematics_RWContextDependentKinematicLinkRepresentation.cxx
+RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx
+RWStepKinematics_RWCylindricalPair.cxx
+RWStepKinematics_RWCylindricalPair.hxx
+RWStepKinematics_RWCylindricalPairValue.cxx
+RWStepKinematics_RWCylindricalPairValue.hxx
+RWStepKinematics_RWCylindricalPairWithRange.cxx
+RWStepKinematics_RWCylindricalPairWithRange.hxx
+RWStepKinematics_RWFullyConstrainedPair.cxx
+RWStepKinematics_RWFullyConstrainedPair.hxx
+RWStepKinematics_RWGearPair.cxx
+RWStepKinematics_RWGearPair.hxx
+RWStepKinematics_RWGearPairValue.cxx
+RWStepKinematics_RWGearPairValue.hxx
+RWStepKinematics_RWGearPairWithRange.cxx
+RWStepKinematics_RWGearPairWithRange.hxx
+RWStepKinematics_RWHomokineticPair.cxx
+RWStepKinematics_RWHomokineticPair.hxx
+RWStepKinematics_RWActuatedKinPairAndOrderKinPair.cxx
+RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx
+RWStepKinematics_RWKinematicJoint.cxx
+RWStepKinematics_RWKinematicJoint.hxx
+RWStepKinematics_RWKinematicLink.cxx
+RWStepKinematics_RWKinematicLink.hxx
+RWStepKinematics_RWKinematicLinkRepresentationAssociation.cxx
+RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx
+RWStepKinematics_RWKinematicPropertyMechanismRepresentation.cxx
+RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx
+RWStepKinematics_RWKinematicTopologyStructure.cxx
+RWStepKinematics_RWKinematicTopologyStructure.hxx
+RWStepKinematics_RWLinearFlexibleAndPinionPair.cxx
+RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx
+RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.cxx
+RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx
+RWStepKinematics_RWLinearFlexibleLinkRepresentation.cxx
+RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx
+RWStepKinematics_RWLowOrderKinematicPair.cxx
+RWStepKinematics_RWLowOrderKinematicPair.hxx
+RWStepKinematics_RWLowOrderKinematicPairValue.cxx
+RWStepKinematics_RWLowOrderKinematicPairValue.hxx
+RWStepKinematics_RWLowOrderKinematicPairWithRange.cxx
+RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx
+RWStepKinematics_RWMechanismRepresentation.cxx
+RWStepKinematics_RWMechanismRepresentation.hxx
+RWStepKinematics_RWOrientedJoint.cxx
+RWStepKinematics_RWOrientedJoint.hxx
+RWStepKinematics_RWPairRepresentationRelationship.cxx
+RWStepKinematics_RWPairRepresentationRelationship.hxx
+RWStepKinematics_RWPlanarCurvePair.cxx
+RWStepKinematics_RWPlanarCurvePair.hxx
+RWStepKinematics_RWPlanarCurvePairRange.cxx
+RWStepKinematics_RWPlanarCurvePairRange.hxx
+RWStepKinematics_RWPlanarPair.cxx
+RWStepKinematics_RWPlanarPair.hxx
+RWStepKinematics_RWPlanarPairValue.cxx
+RWStepKinematics_RWPlanarPairValue.hxx
+RWStepKinematics_RWPlanarPairWithRange.cxx
+RWStepKinematics_RWPlanarPairWithRange.hxx
+RWStepKinematics_RWPointOnPlanarCurvePair.cxx
+RWStepKinematics_RWPointOnPlanarCurvePair.hxx
+RWStepKinematics_RWPointOnPlanarCurvePairValue.cxx
+RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx
+RWStepKinematics_RWPointOnPlanarCurvePairWithRange.cxx
+RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx
+RWStepKinematics_RWPointOnSurfacePair.cxx
+RWStepKinematics_RWPointOnSurfacePair.hxx
+RWStepKinematics_RWPointOnSurfacePairValue.cxx
+RWStepKinematics_RWPointOnSurfacePairValue.hxx
+RWStepKinematics_RWPointOnSurfacePairWithRange.cxx
+RWStepKinematics_RWPointOnSurfacePairWithRange.hxx
+RWStepKinematics_RWPrismaticPair.cxx
+RWStepKinematics_RWPrismaticPair.hxx
+RWStepKinematics_RWPrismaticPairValue.cxx
+RWStepKinematics_RWPrismaticPairValue.hxx
+RWStepKinematics_RWPrismaticPairWithRange.cxx
+RWStepKinematics_RWPrismaticPairWithRange.hxx
+RWStepKinematics_RWProductDefinitionKinematics.cxx
+RWStepKinematics_RWProductDefinitionKinematics.hxx
+RWStepKinematics_RWProductDefinitionRelationshipKinematics.cxx
+RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx
+RWStepKinematics_RWRackAndPinionPair.cxx
+RWStepKinematics_RWRackAndPinionPair.hxx
+RWStepKinematics_RWRackAndPinionPairValue.cxx
+RWStepKinematics_RWRackAndPinionPairValue.hxx
+RWStepKinematics_RWRackAndPinionPairWithRange.cxx
+RWStepKinematics_RWRackAndPinionPairWithRange.hxx
+RWStepKinematics_RWRevolutePair.cxx
+RWStepKinematics_RWRevolutePair.hxx
+RWStepKinematics_RWRevolutePairValue.cxx
+RWStepKinematics_RWRevolutePairValue.hxx
+RWStepKinematics_RWRevolutePairWithRange.cxx
+RWStepKinematics_RWRevolutePairWithRange.hxx
+RWStepKinematics_RWRigidLinkRepresentation.cxx
+RWStepKinematics_RWRigidLinkRepresentation.hxx
+RWStepKinematics_RWRollingCurvePair.cxx
+RWStepKinematics_RWRollingCurvePair.hxx
+RWStepKinematics_RWRollingCurvePairValue.cxx
+RWStepKinematics_RWRollingCurvePairValue.hxx
+RWStepKinematics_RWRollingSurfacePair.cxx
+RWStepKinematics_RWRollingSurfacePair.hxx
+RWStepKinematics_RWRollingSurfacePairValue.cxx
+RWStepKinematics_RWRollingSurfacePairValue.hxx
+RWStepKinematics_RWRotationAboutDirection.cxx
+RWStepKinematics_RWRotationAboutDirection.hxx
+RWStepKinematics_RWScrewPair.cxx
+RWStepKinematics_RWScrewPair.hxx
+RWStepKinematics_RWScrewPairValue.cxx
+RWStepKinematics_RWScrewPairValue.hxx
+RWStepKinematics_RWScrewPairWithRange.cxx
+RWStepKinematics_RWScrewPairWithRange.hxx
+RWStepKinematics_RWSlidingCurvePair.cxx
+RWStepKinematics_RWSlidingCurvePair.hxx
+RWStepKinematics_RWSlidingCurvePairValue.cxx
+RWStepKinematics_RWSlidingCurvePairValue.hxx
+RWStepKinematics_RWSlidingSurfacePair.cxx
+RWStepKinematics_RWSlidingSurfacePair.hxx
+RWStepKinematics_RWSlidingSurfacePairValue.cxx
+RWStepKinematics_RWSlidingSurfacePairValue.hxx
+RWStepKinematics_RWSphericalPair.cxx
+RWStepKinematics_RWSphericalPair.hxx
+RWStepKinematics_RWSphericalPairValue.cxx
+RWStepKinematics_RWSphericalPairValue.hxx
+RWStepKinematics_RWSphericalPairWithPin.cxx
+RWStepKinematics_RWSphericalPairWithPin.hxx
+RWStepKinematics_RWSphericalPairWithPinAndRange.cxx
+RWStepKinematics_RWSphericalPairWithPinAndRange.hxx
+RWStepKinematics_RWSphericalPairWithRange.cxx
+RWStepKinematics_RWSphericalPairWithRange.hxx
+RWStepKinematics_RWSuParameters.cxx
+RWStepKinematics_RWSuParameters.hxx
+RWStepKinematics_RWSurfacePairWithRange.cxx
+RWStepKinematics_RWSurfacePairWithRange.hxx
+RWStepKinematics_RWKinematicTopologyDirectedStructure.cxx
+RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx
+RWStepKinematics_RWKinematicTopologyNetworkStructure.cxx
+RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx
+RWStepKinematics_RWUnconstrainedPair.cxx
+RWStepKinematics_RWUnconstrainedPair.hxx
+RWStepKinematics_RWUnconstrainedPairValue.cxx
+RWStepKinematics_RWUnconstrainedPairValue.hxx
+RWStepKinematics_RWUniversalPair.cxx
+RWStepKinematics_RWUniversalPair.hxx
+RWStepKinematics_RWUniversalPairValue.cxx
+RWStepKinematics_RWUniversalPairValue.hxx
+RWStepKinematics_RWUniversalPairWithRange.cxx
+RWStepKinematics_RWUniversalPairWithRange.hxx
\ No newline at end of file
diff --git a/src/RWStepKinematics/RWStepKinematics_RWActuatedKinPairAndOrderKinPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWActuatedKinPairAndOrderKinPair.cxx
new file mode 100644 (file)
index 0000000..47c0fcf
--- /dev/null
@@ -0,0 +1,2140 @@
+// 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 <RWStepKinematics_RWActuatedKinematicPair.hxx>
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx>
+#include <StepBasic_MeasureWithUnit.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
+#include <StepKinematics_ActuatedDirection.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_CylindricalPair.hxx>
+#include <StepKinematics_CylindricalPairWithRange.hxx>
+#include <StepKinematics_FullyConstrainedPair.hxx>
+#include <StepKinematics_GearPair.hxx>
+#include <StepKinematics_GearPairWithRange.hxx>
+#include <StepKinematics_HomokineticPair.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+#include <StepKinematics_PlanarCurvePairRange.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+#include <StepKinematics_PlanarPairWithRange.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+#include <StepKinematics_PointOnSurfacePairWithRange.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+#include <StepKinematics_PrismaticPairWithRange.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+#include <StepKinematics_RackAndPinionPairWithRange.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+#include <StepKinematics_RevolutePairWithRange.hxx>
+#include <StepKinematics_RollingCurvePair.hxx>
+#include <StepKinematics_RollingSurfacePair.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+#include <StepKinematics_ScrewPairWithRange.hxx>
+#include <StepKinematics_SlidingCurvePair.hxx>
+#include <StepKinematics_SlidingSurfacePair.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+#include <StepKinematics_SphericalPairWithPinAndRange.hxx>
+#include <StepKinematics_SphericalPairWithRange.hxx>
+#include <StepKinematics_SurfacePairWithRange.hxx>
+#include <StepKinematics_UnconstrainedPair.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+#include <StepKinematics_UniversalPairWithRange.hxx>
+#include <RWStepKinematics_RWPrismaticPairWithRange.hxx>
+
+//=======================================================================
+//function : RWStepDimTol_RWGeoTolAndGeoTolWthMod
+//purpose  : 
+//=======================================================================
+RWStepKinematics_RWActuatedKinPairAndOrderKinPair::RWStepKinematics_RWActuatedKinPairAndOrderKinPair()
+{
+}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWActuatedKinPairAndOrderKinPair::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num0, Handle(Interface_Check)& ach,
+   const Handle(StepKinematics_ActuatedKinPairAndOrderKinPair)& ent) const
+{
+  Standard_Integer num = 0;//num0;
+  data->NamedForComplex("ACTUATED_KINEMATIC_PAIR", "ACKNPR", num0, num, ach);
+  if (!data->CheckNbParams(num,6,ach,"kinematic actuated_kinematic_pair")) return;
+  // Own fields of ActuatedKinematicPair
+  Handle(StepKinematics_ActuatedKinematicPair) anActuatedKinematicPair =
+    new StepKinematics_ActuatedKinematicPair;
+  StepKinematics_ActuatedDirection aTX = StepKinematics_adNotActuated;
+  Standard_Boolean hasTX = Standard_True;
+  if (data->IsParamDefined(num, 1)) {
+    if (data->ParamType(num, 1) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 1);
+      if (strcmp(text, ".BIDIRECTIONAL.")) aTX = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aTX = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aTX = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aTX = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #1 (t_x) has not allowed value");
+    }
+    else ach->AddFail("Parameter #1 (t_x) is not enumeration");
+  }
+  else {
+    hasTX = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aTY = StepKinematics_adNotActuated;
+  Standard_Boolean hasTY = Standard_True;
+  if (data->IsParamDefined(num, 2)) {
+    if (data->ParamType(num, 2) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 8);
+      if (strcmp(text, ".BIDIRECTIONAL.")) aTY = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aTY = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aTY = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aTY = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #2 (t_y) has not allowed value");
+    }
+    else ach->AddFail("Parameter #2 (t_y) is not enumeration");
+  }
+  else {
+    hasTY = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aTZ = StepKinematics_adNotActuated;
+  Standard_Boolean hasTZ = Standard_True;
+  if (data->IsParamDefined(num, 3)) {
+    if (data->ParamType(num, 3) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 9);
+      if (strcmp(text, ".BIDIRECTIONAL.")) aTZ = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aTZ = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aTZ = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aTZ = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #3 (t_z) has not allowed value");
+    }
+    else ach->AddFail("Parameter #3 (t_z) is not enumeration");
+  }
+  else {
+    hasTZ = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aRX = StepKinematics_adNotActuated;
+  Standard_Boolean hasRX = Standard_True;
+  if (data->IsParamDefined(num, 4)) {
+    if (data->ParamType(num, 4) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 10);
+      if (strcmp(text, ".BIDIRECTIONAL.")) aRX = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aRX = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aRX = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aRX = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #14 (r_x) has not allowed value");
+    }
+    else ach->AddFail("Parameter #14 (r_x) is not enumeration");
+  }
+  else {
+    hasRX = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aRY = StepKinematics_adNotActuated;
+  Standard_Boolean hasRY = Standard_True;
+  if (data->IsParamDefined(num, 5)) {
+    if (data->ParamType(num, 5) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 11);
+      if (strcmp(text, ".BIDIRECTIONAL.")) aRY = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aRY = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aRY = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aRY = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #5 (r_y) has not allowed value");
+    }
+    else ach->AddFail("Parameter #5 (r_y) is not enumeration");
+  }
+  else {
+    hasRY = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aRZ = StepKinematics_adNotActuated;
+  Standard_Boolean hasRZ = Standard_True;
+  if (data->IsParamDefined(num, 6)) {
+    if (data->ParamType(num, 6) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 12);
+      if (strcmp(text, ".BIDIRECTIONAL.")) aRZ = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aRZ = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aRZ = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aRZ = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #6 (r_z) has not allowed value");
+    }
+    else ach->AddFail("Parameter #6 (r_z) is not enumeration");
+  }
+  else {
+    hasRZ = Standard_False;
+  }
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->NamedForComplex("GEOMETRIC_REPRESENTATION_ITEM", "GMRPIT", num0, num, ach);
+  //geometricrepresentation_item is non-defined
+
+  data->NamedForComplex("ITEM_DEFINED_TRANSFORMATION", "ITDFTR", num0, num, ach);
+  // Own fields of item_defined_transformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  if (strcmp(data->ParamCValue(num, 1), "*"))
+    data->ReadString(num, 1, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if (data->IsParamDefined(num, 2)) {
+    data->ReadString(num, 2, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity(num, 3, "ITEM_DEFINED_TRANSFORMATION", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity(num, 4, "ITEM_DEFINED_TRANSFORMATION", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2); 
+
+  data->NamedForComplex("KINEMATIC_PAIR", "KNMPR", num0, num, ach);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity(num, 1, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  //Select pair supertype 
+  num = data->NextForComplex(num);
+  Standard_CString aPairSuperType = data->CType(num);
+  Handle(StepKinematics_KinematicPair) aKinematicPair;
+  if (!strcmp(aPairSuperType, "LOW_ORDER_KINEMATIC_PAIR"))
+  {
+    // Own fields of low_order_kinematic_pair
+    Standard_Boolean aLowOrderKinematicPair_TX = Standard_True;
+    Standard_Boolean aLowOrderKinematicPair_TY = Standard_True;
+    Standard_Boolean aLowOrderKinematicPair_TZ = Standard_True;
+    Standard_Boolean aLowOrderKinematicPair_RX = Standard_True;
+    Standard_Boolean aLowOrderKinematicPair_RY = Standard_True;
+    Standard_Boolean aLowOrderKinematicPair_RZ = Standard_True;
+    if (data->CheckNbParams(num, 6, ach, "LOW_ORDER_KINEMATIC_PAIR"))
+    {
+      if (strcmp(data->ParamCValue(num, 1), "*"))
+      data->ReadBoolean(num, 1, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+      if (strcmp(data->ParamCValue(num, 2), "*"))
+      data->ReadBoolean(num, 2, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+      if (strcmp(data->ParamCValue(num, 3), "*"))
+      data->ReadBoolean(num, 3, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+      if (strcmp(data->ParamCValue(num, 4), "*"))
+      data->ReadBoolean(num, 4, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+      if (strcmp(data->ParamCValue(num, 5), "*"))
+      data->ReadBoolean(num, 5, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+      if (strcmp(data->ParamCValue(num, 6), "*"))
+      data->ReadBoolean(num, 6, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+    }
+    else ach->AddFail("The supertype of kinematic pair is not supported");
+    aKinematicPair = new StepKinematics_KinematicPair;
+    aKinematicPair->Init(aRepresentationItem_Name,
+      aItemDefinedTransformation_Name, hasItemDefinedTransformation_Description,
+      aItemDefinedTransformation_Description,
+      aItemDefinedTransformation_TransformItem1,
+      aItemDefinedTransformation_TransformItem2,
+      aKinematicPair_Joint);
+    num = data->NextForComplex(num);
+    Standard_CString aPairtype = data->CType(num);
+    if (!strcmp(aPairtype,"REVOLUTE_PAIR"))
+    {
+      // Own fields of revolute_pair is non-defined
+
+      if (data->NamedForComplex("REVOLUTE_PAIR_WITH_RANGE", "RPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "REVOLUTE_PAIR_WITH_RANGE"))
+        {
+          // Own fields of revolute_pair_with_range
+          aKinematicPair = new StepKinematics_RevolutePairWithRange;
+          Standard_Real aLowerLimitActualRotation;
+          Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+          }
+          else {
+            hasLowerLimitActualRotation = Standard_False;
+            aLowerLimitActualRotation = 0;
+          }
+
+          Standard_Real aUpperLimitActualRotation;
+          Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+          }
+          else {
+            hasUpperLimitActualRotation = Standard_False;
+            aUpperLimitActualRotation = 0;
+          }
+          Handle(StepKinematics_RevolutePairWithRange) aLocalPair = Handle(StepKinematics_RevolutePairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+        }
+        else // revolute_pair_with_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_RevolutePair;
+          Handle(StepKinematics_RevolutePair) aLocalPair = Handle(StepKinematics_RevolutePair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "CYLINDRICAL_PAIR"))
+    {
+      // Own fields of cylindrical_pair is non-defined
+
+      if (data->NamedForComplex("CYLINDRICAL_PAIR_WITH_RANGE", "CPW0", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 4, ach, "CYLINDRICAL_PAIR_WITH_RANGE"))
+        {
+          // Own fields of cylindrical_pair_with_range
+          aKinematicPair = new StepKinematics_CylindricalPairWithRange;
+
+          Standard_Real aLowerLimitActualTranslation;
+          Standard_Boolean hasLowerLimitActualTranslation = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_actual_translation", ach, aLowerLimitActualTranslation);
+          }
+          else {
+            hasLowerLimitActualTranslation = Standard_False;
+            aLowerLimitActualTranslation = 0;
+          }
+
+          Standard_Real aUpperLimitActualTranslation;
+          Standard_Boolean hasUpperLimitActualTranslation = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_actual_translation", ach, aUpperLimitActualTranslation);
+          }
+          else {
+            hasUpperLimitActualTranslation = Standard_False;
+            aUpperLimitActualTranslation = 0;
+          }
+
+          Standard_Real aLowerLimitActualRotation;
+          Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+          }
+          else {
+            hasLowerLimitActualRotation = Standard_False;
+            aLowerLimitActualRotation = 0;
+          }
+
+          Standard_Real aUpperLimitActualRotation;
+          Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+          }
+          else {
+            hasUpperLimitActualRotation = Standard_False;
+            aUpperLimitActualRotation = 0;
+          }
+          Handle(StepKinematics_CylindricalPairWithRange) aLocalPair = Handle(StepKinematics_CylindricalPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualTranslation,
+            aLowerLimitActualTranslation,
+            hasUpperLimitActualTranslation,
+            aUpperLimitActualTranslation,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+        }
+        else // cylindrical_pair_with_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_CylindricalPair;
+          Handle(StepKinematics_CylindricalPair) aLocalPair = Handle(StepKinematics_CylindricalPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "SPHERICAL_PAIR"))
+    {
+    // Own fields of cylindrical_pair is non-defined
+
+      if (data->NamedForComplex("SPHERICAL_PAIR_WITH_RANGE", "SPW0", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 6, ach, "SPHERICAL_PAIR_WITH_RANGE"))
+        {
+          // Own fields of spherical_pair_with_range
+          aKinematicPair = new StepKinematics_SphericalPairWithRange;
+
+          Standard_Real aLowerLimitYaw;
+          Standard_Boolean hasLowerLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_yaw", ach, aLowerLimitYaw);
+          }
+          else {
+            hasLowerLimitYaw = Standard_False;
+            aLowerLimitYaw = 0;
+          }
+
+          Standard_Real aUpperLimitYaw;
+          Standard_Boolean hasUpperLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_yaw", ach, aUpperLimitYaw);
+          }
+          else {
+            hasUpperLimitYaw = Standard_False;
+            aUpperLimitYaw = 0;
+          }
+
+          Standard_Real aLowerLimitPitch;
+          Standard_Boolean hasLowerLimitPitch = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "lower_limit_pitch", ach, aLowerLimitPitch);
+          }
+          else {
+            hasLowerLimitPitch = Standard_False;
+            aLowerLimitPitch = 0;
+          }
+
+          Standard_Real aUpperLimitPitch;
+          Standard_Boolean hasUpperLimitPitch = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "upper_limit_pitch", ach, aUpperLimitPitch);
+          }
+          else {
+            hasUpperLimitPitch = Standard_False;
+            aUpperLimitPitch = 0;
+          }
+
+          Standard_Real aLowerLimitRoll;
+          Standard_Boolean hasLowerLimitRoll = Standard_True;
+          if (data->IsParamDefined(num, 5)) {
+            data->ReadReal(num, 5, "lower_limit_roll", ach, aLowerLimitRoll);
+          }
+          else {
+            hasLowerLimitRoll = Standard_False;
+            aLowerLimitRoll = 0;
+          }
+
+          Standard_Real aUpperLimitRoll;
+          Standard_Boolean hasUpperLimitRoll = Standard_True;
+          if (data->IsParamDefined(num, 6)) {
+            data->ReadReal(num, 6, "upper_limit_roll", ach, aUpperLimitRoll);
+          }
+          else {
+            hasUpperLimitRoll = Standard_False;
+            aUpperLimitRoll = 0;
+          }
+          Handle(StepKinematics_SphericalPairWithRange) aLocalPair = Handle(StepKinematics_SphericalPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitPitch,
+            aLowerLimitPitch,
+            hasUpperLimitPitch,
+            aUpperLimitPitch,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+        }
+        else // spherical_pair_with_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_SphericalPair;
+          Handle(StepKinematics_SphericalPair) aLocalPair = Handle(StepKinematics_SphericalPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "SPHERICAL_PAIR_WITH_PIN"))
+    {
+    // Own fields of spherical_pair_with_pin is non-defined
+
+      if (data->NamedForComplex("SPHERICAL_PAIR_WITH_PIN_AND_RANGE", "SPWPAR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 4, ach, "SPHERICAL_PAIR_WITH_PIN_AND_RANGE"))
+        {
+          // Own fields of spherical_pair_with_pin_and_range
+          aKinematicPair = new StepKinematics_SphericalPairWithPinAndRange;
+
+
+          Standard_Real aLowerLimitYaw;
+          Standard_Boolean hasLowerLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_yaw", ach, aLowerLimitYaw);
+          }
+          else {
+            hasLowerLimitYaw = Standard_False;
+            aLowerLimitYaw = 0;
+          }
+
+          Standard_Real aUpperLimitYaw;
+          Standard_Boolean hasUpperLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_yaw", ach, aUpperLimitYaw);
+          }
+          else {
+            hasUpperLimitYaw = Standard_False;
+            aUpperLimitYaw = 0;
+          }
+
+          Standard_Real aLowerLimitRoll;
+          Standard_Boolean hasLowerLimitRoll = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "lower_limit_roll", ach, aLowerLimitRoll);
+          }
+          else {
+            hasLowerLimitRoll = Standard_False;
+            aLowerLimitRoll = 0;
+          }
+
+          Standard_Real aUpperLimitRoll;
+          Standard_Boolean hasUpperLimitRoll = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "upper_limit_roll", ach, aUpperLimitRoll);
+          }
+          else {
+            hasUpperLimitRoll = Standard_False;
+            aUpperLimitRoll = 0;
+          }
+          Handle(StepKinematics_SphericalPairWithPinAndRange) aLocalPair = Handle(StepKinematics_SphericalPairWithPinAndRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+        }
+        else // spherical_pair_with_pin_and_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_SphericalPairWithPin;
+          Handle(StepKinematics_SphericalPairWithPin) aLocalPair = Handle(StepKinematics_SphericalPairWithPin)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+        }
+      }
+      else ach->AddFail("The type of kinematic pair with range is not supported");
+    }
+    else if (!strcmp(aPairtype, "PRISMATIC_PAIR"))
+    {
+    // Own fields of prismatic_pair is non-defined
+
+      if (data->NamedForComplex("PRISMATIC_PAIR_WITH_RANGE", "PPW0", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "PRISMATIC_PAIR_WITH_RANGE"))
+        {
+          aKinematicPair = new StepKinematics_PrismaticPairWithRange;
+          // Own fields of prismatic_pair_with_range
+
+          Standard_Real aLowerLimitActualTranslation;
+          Standard_Boolean hasLowerLimitActualTranslation = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_actual_translation", ach, aLowerLimitActualTranslation);
+          }
+          else {
+            hasLowerLimitActualTranslation = Standard_False;
+            aLowerLimitActualTranslation = 0;
+          }
+
+          Standard_Real aUpperLimitActualTranslation;
+          Standard_Boolean hasUpperLimitActualTranslation = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_actual_translation", ach, aUpperLimitActualTranslation);
+          }
+          else {
+            hasUpperLimitActualTranslation = Standard_False;
+            aUpperLimitActualTranslation = 0;
+          }
+          Handle(StepKinematics_PrismaticPairWithRange) aLocalPair = Handle(StepKinematics_PrismaticPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualTranslation,
+            aLowerLimitActualTranslation,
+            hasUpperLimitActualTranslation,
+            aUpperLimitActualTranslation);
+        }
+        else // prismatic_pair_with_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_PrismaticPair;
+          Handle(StepKinematics_PrismaticPair) aLocalPair = Handle(StepKinematics_PrismaticPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "UNIVERSAL_PAIR"))
+    {
+    // Own fields of universal_pair 
+
+      aKinematicPair = new StepKinematics_UniversalPair;
+      Standard_Real aInputSkewAngle;
+      Standard_Boolean hasInputSkewAngle = Standard_True;
+      if (data->IsParamDefined(num, 1)) {
+        data->ReadReal(num, 1, "input_skew_angle", ach, aInputSkewAngle);
+      }
+      else {
+        hasInputSkewAngle = Standard_False;
+        aInputSkewAngle = 0;
+      }
+
+      if (data->NamedForComplex("UNIVERSAL_PAIR_WITH_RANGE", "UPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 4, ach, "UNIVERSAL_PAIR_WITH_RANGE"))
+        {
+          // Own fields of universal_pair_with_range
+
+          Standard_Real aLowerLimitFirstRotation;
+          Standard_Boolean hasLowerLimitFirstRotation = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_first_rotation", ach, aLowerLimitFirstRotation);
+          }
+          else {
+            hasLowerLimitFirstRotation = Standard_False;
+            aLowerLimitFirstRotation = 0;
+          }
+
+          Standard_Real aUpperLimitFirstRotation;
+          Standard_Boolean hasUpperLimitFirstRotation = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_first_rotation", ach, aUpperLimitFirstRotation);
+          }
+          else {
+            hasUpperLimitFirstRotation = Standard_False;
+            aUpperLimitFirstRotation = 0;
+          }
+
+          Standard_Real aLowerLimitSecondRotation;
+          Standard_Boolean hasLowerLimitSecondRotation = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "lower_limit_second_rotation", ach, aLowerLimitSecondRotation);
+          }
+          else {
+            hasLowerLimitSecondRotation = Standard_False;
+            aLowerLimitSecondRotation = 0;
+          }
+
+          Standard_Real aUpperLimitSecondRotation;
+          Standard_Boolean hasUpperLimitSecondRotation = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "upper_limit_second_rotation", ach, aUpperLimitSecondRotation);
+          }
+          else {
+            hasUpperLimitSecondRotation = Standard_False;
+            aUpperLimitSecondRotation = 0;
+          }
+          aKinematicPair = new StepKinematics_UniversalPairWithRange;
+          Handle(StepKinematics_UniversalPairWithRange) aLocalPair = Handle(StepKinematics_UniversalPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasInputSkewAngle,
+            aInputSkewAngle,
+            hasLowerLimitFirstRotation,
+            aLowerLimitFirstRotation,
+            hasUpperLimitFirstRotation,
+            aUpperLimitFirstRotation,
+            hasLowerLimitSecondRotation,
+            aLowerLimitSecondRotation,
+            hasUpperLimitSecondRotation,
+            aUpperLimitSecondRotation);
+        }
+        else // universal_pair_with_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_UniversalPair;
+          Handle(StepKinematics_UniversalPair) aLocalPair = Handle(StepKinematics_UniversalPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasInputSkewAngle,
+            aInputSkewAngle);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "PLANAR_PAIR"))
+    {
+    // Own fields of planar_pair is non-defined
+
+      if (data->NamedForComplex("PLANAR_PAIR_WITH_RANGE", "PPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 6, ach, "UNIVERSAL_PAIR_WITH_RANGE"))
+        {
+          // Own fields of universal_pair_with_range
+
+          aKinematicPair = new StepKinematics_PlanarPairWithRange;
+          Standard_Real aLowerLimitActualRotation;
+          Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+          }
+          else {
+            hasLowerLimitActualRotation = Standard_False;
+            aLowerLimitActualRotation = 0;
+          }
+
+          Standard_Real aUpperLimitActualRotation;
+          Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+          }
+          else {
+            hasUpperLimitActualRotation = Standard_False;
+            aUpperLimitActualRotation = 0;
+          }
+
+          Standard_Real aLowerLimitActualTranslationX;
+          Standard_Boolean hasLowerLimitActualTranslationX = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "lower_limit_actual_translation_x", ach, aLowerLimitActualTranslationX);
+          }
+          else {
+            hasLowerLimitActualTranslationX = Standard_False;
+            aLowerLimitActualTranslationX = 0;
+          }
+
+          Standard_Real aUpperLimitActualTranslationX;
+          Standard_Boolean hasUpperLimitActualTranslationX = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "upper_limit_actual_translation_x", ach, aUpperLimitActualTranslationX);
+          }
+          else {
+            hasUpperLimitActualTranslationX = Standard_False;
+            aUpperLimitActualTranslationX = 0;
+          }
+
+          Standard_Real aLowerLimitActualTranslationY;
+          Standard_Boolean hasLowerLimitActualTranslationY = Standard_True;
+          if (data->IsParamDefined(num, 5)) {
+            data->ReadReal(num, 5, "lower_limit_actual_translation_y", ach, aLowerLimitActualTranslationY);
+          }
+          else {
+            hasLowerLimitActualTranslationY = Standard_False;
+            aLowerLimitActualTranslationY = 0;
+          }
+
+          Standard_Real aUpperLimitActualTranslationY;
+          Standard_Boolean hasUpperLimitActualTranslationY = Standard_True;
+          if (data->IsParamDefined(num, 6)) {
+            data->ReadReal(num, 6, "upper_limit_actual_translation_y", ach, aUpperLimitActualTranslationY);
+          }
+          else {
+            hasUpperLimitActualTranslationY = Standard_False;
+            aUpperLimitActualTranslationY = 0;
+          }
+          Handle(StepKinematics_PlanarPairWithRange) aLocalPair = Handle(StepKinematics_PlanarPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation,
+            hasLowerLimitActualTranslationX,
+            aLowerLimitActualTranslationX,
+            hasUpperLimitActualTranslationX,
+            aUpperLimitActualTranslationX,
+            hasLowerLimitActualTranslationY,
+            aLowerLimitActualTranslationY,
+            hasUpperLimitActualTranslationY,
+            aUpperLimitActualTranslationY);
+        }
+        else // universal_pair_with_range hasn't params
+        {
+          aKinematicPair = new StepKinematics_PlanarPair;
+          Handle(StepKinematics_PlanarPair) aLocalPair = Handle(StepKinematics_PlanarPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+        }
+      }
+    }
+  }
+  else if (!strcmp(aPairSuperType, "LOW_ORDER_KINEMATIC_PAIR_WITH_MOTION_COUPLING"))
+  {
+    num = data->NextForComplex(num);
+    Standard_CString aPairtype = data->CType(num);
+    if (!strcmp(aPairtype, "GEAR_PAIR"))
+    {
+
+      // Inherited fields of GearPair
+
+      Standard_Real aGearPair_RadiusFirstLink;
+      data->ReadReal(num, 1, "gear_pair.radius_first_link", ach, aGearPair_RadiusFirstLink);
+
+      Standard_Real aGearPair_RadiusSecondLink;
+      data->ReadReal(num, 2, "gear_pair.radius_second_link", ach, aGearPair_RadiusSecondLink);
+
+      Standard_Real aGearPair_Bevel;
+      data->ReadReal(num, 3, "gear_pair.bevel", ach, aGearPair_Bevel);
+
+      Standard_Real aGearPair_HelicalAngle;
+      data->ReadReal(num, 4, "gear_pair.helical_angle", ach, aGearPair_HelicalAngle);
+
+      Standard_Real aGearPair_GearRatio;
+      data->ReadReal(num, 5, "gear_pair.gear_ratio", ach, aGearPair_GearRatio);
+
+      if (data->NamedForComplex("GEAR_PAIR_WITH_RANGE", "GPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "GEAR_PAIR_WITH_RANGE"))
+        {
+          // Own fields of GearPairWithRange
+
+          aKinematicPair = new StepKinematics_GearPairWithRange;
+
+          Standard_Real aLowerLimitActualRotation1;
+          Standard_Boolean hasLowerLimitActualRotation1 = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_actual_rotation1", ach, aLowerLimitActualRotation1);
+          }
+          else {
+            hasLowerLimitActualRotation1 = Standard_False;
+            aLowerLimitActualRotation1 = 0;
+          }
+
+          Standard_Real aUpperLimitActualRotation1;
+          Standard_Boolean hasUpperLimitActualRotation1 = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_actual_rotation1", ach, aUpperLimitActualRotation1);
+          }
+          else {
+            hasUpperLimitActualRotation1 = Standard_False;
+            aUpperLimitActualRotation1 = 0;
+          }
+          Handle(StepKinematics_GearPairWithRange) aLocalPair = Handle(StepKinematics_GearPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aGearPair_RadiusFirstLink,
+            aGearPair_RadiusSecondLink,
+            aGearPair_Bevel,
+            aGearPair_HelicalAngle,
+            aGearPair_GearRatio,
+            hasLowerLimitActualRotation1,
+            aLowerLimitActualRotation1,
+            hasUpperLimitActualRotation1,
+            aUpperLimitActualRotation1);
+
+        }
+        else // StepKinematics_GearPairWithRange hasn't params
+        {
+          aKinematicPair = new StepKinematics_GearPair;
+          Handle(StepKinematics_GearPair) aLocalPair = Handle(StepKinematics_GearPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aGearPair_RadiusFirstLink,
+            aGearPair_RadiusSecondLink,
+            aGearPair_Bevel,
+            aGearPair_HelicalAngle,
+            aGearPair_GearRatio);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "RACK_AND_PINION_PAIR"))
+    {
+
+      // Inherited fields of RackAndPinionPair
+      Standard_Real aRackAndPinionPair_PinionRadius;
+      data->ReadReal(num, 1, "rack_and_pinion_pair.pinion_radius", ach, aRackAndPinionPair_PinionRadius);
+  
+      if (data->NamedForComplex("RACK_AND_PINION_PAIR_WITH_RANGE", "RAPPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "RACK_AND_PINION_PAIR_WITH_RANGE"))
+        {
+          // Own fields of GearPairWithRange
+
+          aKinematicPair = new StepKinematics_RackAndPinionPairWithRange;
+
+
+          Standard_Real aLowerLimitRackDisplacement;
+          Standard_Boolean hasLowerLimitRackDisplacement = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_rack_displacement", ach, aLowerLimitRackDisplacement);
+          }
+          else {
+            hasLowerLimitRackDisplacement = Standard_False;
+            aLowerLimitRackDisplacement = 0;
+          }
+
+          Standard_Real aUpperLimitRackDisplacement;
+          Standard_Boolean hasUpperLimitRackDisplacement = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_rack_displacement", ach, aUpperLimitRackDisplacement);
+          }
+          else {
+            hasUpperLimitRackDisplacement = Standard_False;
+            aUpperLimitRackDisplacement = 0;
+          }
+
+          Handle(StepKinematics_RackAndPinionPairWithRange) aLocalPair = Handle(StepKinematics_RackAndPinionPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aRackAndPinionPair_PinionRadius,
+            hasLowerLimitRackDisplacement,
+            aLowerLimitRackDisplacement,
+            hasUpperLimitRackDisplacement,
+            aUpperLimitRackDisplacement);
+        }
+        else // StepKinematics_RackAndPinionPairWithRange hasn't params
+        {
+          aKinematicPair = new StepKinematics_RackAndPinionPair;
+          Handle(StepKinematics_RackAndPinionPair) aLocalPair = Handle(StepKinematics_RackAndPinionPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aRackAndPinionPair_PinionRadius);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "SCREW_PAIR"))
+    {
+      // Inherited fields of ScrewPair
+
+      Standard_Real aScrewPair_Pitch;
+      data->ReadReal(num, 1, "screw_pair.pitch", ach, aScrewPair_Pitch);
+
+      if (data->NamedForComplex("SCREW_PAIR_WITH_RANGE", "SPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "SCREW_PAIR_WITH_RANGE"))
+        {
+          // Own fields of ScrewPairWithRange
+
+          aKinematicPair = new StepKinematics_ScrewPairWithRange;
+          Standard_Real aLowerLimitActualRotation;
+          Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 1)) {
+            data->ReadReal(num, 1, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+          }
+          else {
+            hasLowerLimitActualRotation = Standard_False;
+            aLowerLimitActualRotation = 0;
+          }
+
+          Standard_Real aUpperLimitActualRotation;
+          Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+          }
+          else {
+            hasUpperLimitActualRotation = Standard_False;
+            aUpperLimitActualRotation = 0;
+          }
+
+          Handle(StepKinematics_ScrewPairWithRange) aLocalPair = Handle(StepKinematics_ScrewPairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aScrewPair_Pitch,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+        }
+        else // StepKinematics_ScrewPairWithRange hasn't params
+        {
+          aKinematicPair = new StepKinematics_ScrewPair;
+          Handle(StepKinematics_ScrewPair) aLocalPair = Handle(StepKinematics_ScrewPair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aScrewPair_Pitch);
+        }
+      }
+    }
+  }
+  else // "HIGH_ORDER_KINEMATIC_PAIR"
+  {
+     num = data->NextForComplex(num);
+     Standard_CString aPairtype = data->CType(num);
+    if (!strcmp(aPairtype, "POINT_ON_PLANAR_CURVE_PAIR"))
+     {
+
+      // Inherited fields of PointOnPlanarCurvePair
+
+      Handle(StepGeom_Curve) aPointOnPlanarCurvePair_PairCurve;
+      data->ReadEntity(num, 1, "point_on_planar_curve_pair.pair_curve", ach, STANDARD_TYPE(StepGeom_Curve), aPointOnPlanarCurvePair_PairCurve);
+
+      Standard_Boolean aPointOnPlanarCurvePair_Orientation;
+      data->ReadBoolean(num, 2, "point_on_planar_curve_pair.orientation", ach, aPointOnPlanarCurvePair_Orientation);
+
+
+      if (data->NamedForComplex("POINT_ON_PLANAR_CURVE_PAIR_WITH_RANGE", "POPCPW", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 7, ach, "POINT_ON_PLANAR_CURVE_PAIR_WITH_RANGE"))
+        {
+          // Own fields of PointOnPlanarCurvePairWithRange
+
+          aKinematicPair = new StepKinematics_PointOnPlanarCurvePairWithRange;
+
+          Handle(StepGeom_TrimmedCurve) aRangeOnPairCurve;
+          data->ReadEntity(num, 1, "range_on_pair_curve", ach, STANDARD_TYPE(StepGeom_TrimmedCurve), aRangeOnPairCurve);
+  
+          Standard_Real aLowerLimitYaw;
+          Standard_Boolean hasLowerLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "lower_limit_yaw", ach, aLowerLimitYaw);
+          }
+          else {
+            hasLowerLimitYaw = Standard_False;
+            aLowerLimitYaw = 0;
+          }
+
+          Standard_Real aUpperLimitYaw;
+          Standard_Boolean hasUpperLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "upper_limit_yaw", ach, aUpperLimitYaw);
+        }
+        else {
+          hasUpperLimitYaw = Standard_False;
+          aUpperLimitYaw = 0;
+        }
+
+        Standard_Real aLowerLimitPitch;
+        Standard_Boolean hasLowerLimitPitch = Standard_True;
+        if (data->IsParamDefined(num, 4)) {
+          data->ReadReal(num, 4, "lower_limit_pitch", ach, aLowerLimitPitch);
+        }
+        else {
+          hasLowerLimitPitch = Standard_False;
+          aLowerLimitPitch = 0;
+        }
+
+        Standard_Real aUpperLimitPitch;
+        Standard_Boolean hasUpperLimitPitch = Standard_True;
+        if (data->IsParamDefined(num, 5)) {
+          data->ReadReal(num, 5, "upper_limit_pitch", ach, aUpperLimitPitch);
+        }
+        else {
+          hasUpperLimitPitch = Standard_False;
+          aUpperLimitPitch = 0;
+        }
+
+        Standard_Real aLowerLimitRoll;
+        Standard_Boolean hasLowerLimitRoll = Standard_True;
+        if (data->IsParamDefined(num, 6)) {
+          data->ReadReal(num, 6, "lower_limit_roll", ach, aLowerLimitRoll);
+        }
+        else {
+          hasLowerLimitRoll = Standard_False;
+          aLowerLimitRoll = 0;
+        }
+
+        Standard_Real aUpperLimitRoll;
+        Standard_Boolean hasUpperLimitRoll = Standard_True;
+        if (data->IsParamDefined(num, 7)) {
+          data->ReadReal(num, 7, "upper_limit_roll", ach, aUpperLimitRoll);
+        }
+        else {
+          hasUpperLimitRoll = Standard_False;
+          aUpperLimitRoll = 0;
+        }
+        Handle(StepKinematics_PointOnPlanarCurvePairWithRange) aLocalPair = Handle(StepKinematics_PointOnPlanarCurvePairWithRange)::DownCast(aKinematicPair);
+        // Initialize kinematic_pair
+        aLocalPair->Init(aRepresentationItem_Name,
+          aItemDefinedTransformation_Name,
+          hasItemDefinedTransformation_Description,
+          aItemDefinedTransformation_Description,
+          aItemDefinedTransformation_TransformItem1,
+          aItemDefinedTransformation_TransformItem2,
+          aKinematicPair_Joint,
+          aPointOnPlanarCurvePair_PairCurve,
+          aPointOnPlanarCurvePair_Orientation,
+          aRangeOnPairCurve,
+          hasLowerLimitYaw,
+          aLowerLimitYaw,
+          hasUpperLimitYaw,
+          aUpperLimitYaw,
+          hasLowerLimitPitch,
+          aLowerLimitPitch,
+          hasUpperLimitPitch,
+          aUpperLimitPitch,
+          hasLowerLimitRoll,
+          aLowerLimitRoll,
+          hasUpperLimitRoll,
+          aUpperLimitRoll);
+
+      }
+      else // point_on_planar_curve_pair_with_range hasn't params
+      {
+        aKinematicPair = new StepKinematics_PointOnPlanarCurvePair;
+        Handle(StepKinematics_PointOnPlanarCurvePair) aLocalPair = Handle(StepKinematics_PointOnPlanarCurvePair)::DownCast(aKinematicPair);
+        // Initialize kinematic_pair
+        aLocalPair->Init(aRepresentationItem_Name,
+          aItemDefinedTransformation_Name,
+          hasItemDefinedTransformation_Description,
+          aItemDefinedTransformation_Description,
+          aItemDefinedTransformation_TransformItem1,
+          aItemDefinedTransformation_TransformItem2,
+          aKinematicPair_Joint,
+          aPointOnPlanarCurvePair_PairCurve,
+          aPointOnPlanarCurvePair_Orientation);
+      }
+    }
+  }
+    else if (!strcmp(aPairtype, "POINT_ON_SURFACE_PAIR"))
+    {
+      // Inherited fields of PointOnSurfacePair
+
+      Handle(StepGeom_Surface) aPointOnSurfacePair_PairSurface;
+      data->ReadEntity(num, 1, "point_on_surface_pair.pair_surface", ach, STANDARD_TYPE(StepGeom_Surface), aPointOnSurfacePair_PairSurface);
+
+      if (data->NamedForComplex("POINT_ON_SURFACE_PAIR_WITH_RANGE ", "RAPPWR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "POINT_ON_SURFACE_PAIR_WITH_RANGE "))
+        {
+          // Own fields of PointOnSurfacePairWithRange
+
+          aKinematicPair = new StepKinematics_PointOnSurfacePairWithRange;
+
+
+          Handle(StepGeom_RectangularTrimmedSurface) aRangeOnPairSurface;
+          data->ReadEntity(num, 1, "range_on_pair_surface", ach, STANDARD_TYPE(StepGeom_RectangularTrimmedSurface), aRangeOnPairSurface);
+
+          Standard_Real aLowerLimitYaw;
+          Standard_Boolean hasLowerLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 2)) {
+            data->ReadReal(num, 2, "lower_limit_yaw", ach, aLowerLimitYaw);
+          }
+          else {
+            hasLowerLimitYaw = Standard_False;
+            aLowerLimitYaw = 0;
+          }
+
+          Standard_Real aUpperLimitYaw;
+          Standard_Boolean hasUpperLimitYaw = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "upper_limit_yaw", ach, aUpperLimitYaw);
+          }
+          else {
+            hasUpperLimitYaw = Standard_False;
+            aUpperLimitYaw = 0;
+          }
+
+          Standard_Real aLowerLimitPitch;
+          Standard_Boolean hasLowerLimitPitch = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "lower_limit_pitch", ach, aLowerLimitPitch);
+          }
+          else {
+            hasLowerLimitPitch = Standard_False;
+            aLowerLimitPitch = 0;
+          }
+
+          Standard_Real aUpperLimitPitch;
+          Standard_Boolean hasUpperLimitPitch = Standard_True;
+          if (data->IsParamDefined(num, 5)) {
+            data->ReadReal(num, 5, "upper_limit_pitch", ach, aUpperLimitPitch);
+          }
+          else {
+            hasUpperLimitPitch = Standard_False;
+            aUpperLimitPitch = 0;
+          }
+
+          Standard_Real aLowerLimitRoll;
+          Standard_Boolean hasLowerLimitRoll = Standard_True;
+          if (data->IsParamDefined(num, 6)) {
+            data->ReadReal(num, 6, "lower_limit_roll", ach, aLowerLimitRoll);
+          }
+          else {
+            hasLowerLimitRoll = Standard_False;
+            aLowerLimitRoll = 0;
+          }
+
+          Standard_Real aUpperLimitRoll;
+          Standard_Boolean hasUpperLimitRoll = Standard_True;
+          if (data->IsParamDefined(num, 7)) {
+            data->ReadReal(num, 7, "upper_limit_roll", ach, aUpperLimitRoll);
+          }
+          else {
+            hasUpperLimitRoll = Standard_False;
+            aUpperLimitRoll = 0;
+          }
+          Handle(StepKinematics_PointOnSurfacePairWithRange) aLocalPair = Handle(StepKinematics_PointOnSurfacePairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPointOnSurfacePair_PairSurface,
+            aRangeOnPairSurface,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitPitch,
+            aLowerLimitPitch,
+            hasUpperLimitPitch,
+            aUpperLimitPitch,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+        }
+        else // StepKinematics_PointOnSurfacePairWithRange hasn't params
+        {
+          aKinematicPair = new StepKinematics_PointOnSurfacePair;
+          Handle(StepKinematics_PointOnSurfacePair) aLocalPair = Handle(StepKinematics_PointOnSurfacePair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPointOnSurfacePair_PairSurface);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "PLANAR_CURVE_PAIR"))
+    {
+      // Inherited fields of PlanarCurvePair
+
+      Handle(StepGeom_Curve) aPlanarCurvePair_Curve1;
+      data->ReadEntity(num, 1, "planar_curve_pair.curve1", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve1);
+
+      Handle(StepGeom_Curve) aPlanarCurvePair_Curve2;
+      data->ReadEntity(num, 2, "planar_curve_pair.curve2", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve2);
+
+      Standard_Boolean aPlanarCurvePair_Orientation;
+      data->ReadBoolean(num, 3, "planar_curve_pair.orientation", ach, aPlanarCurvePair_Orientation);
+
+      if (data->NamedForComplex("PLANAR_CURVE_PAIR_RANGE", "PCPR", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 2, ach, "PLANAR_CURVE_PAIR_RANGE"))
+        {
+          // Own fields of PlanarCurvePairRange
+          aKinematicPair = new StepKinematics_PlanarCurvePairRange;
+
+          Handle(StepGeom_TrimmedCurve) aRangeOnCurve1;
+          data->ReadEntity(num, 1, "range_on_curve1", ach, STANDARD_TYPE(StepGeom_TrimmedCurve), aRangeOnCurve1);
+
+          Handle(StepGeom_TrimmedCurve) aRangeOnCurve2;
+          data->ReadEntity(num, 2, "range_on_curve2", ach, STANDARD_TYPE(StepGeom_TrimmedCurve), aRangeOnCurve2);
+
+
+          Handle(StepKinematics_PlanarCurvePairRange) aLocalPair = Handle(StepKinematics_PlanarCurvePairRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPlanarCurvePair_Curve1,
+            aPlanarCurvePair_Curve2,
+            aPlanarCurvePair_Orientation,
+            aRangeOnCurve1,
+            aRangeOnCurve2);
+        }
+        else // StepKinematics_ScrewPairWithRange hasn't params
+        {
+          aKinematicPair = new StepKinematics_PlanarCurvePair;
+          Handle(StepKinematics_PlanarCurvePair) aLocalPair = Handle(StepKinematics_PlanarCurvePair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPlanarCurvePair_Curve1,
+            aPlanarCurvePair_Curve2,
+            aPlanarCurvePair_Orientation);
+        }
+      }
+    }
+    else if (!strcmp(aPairtype, "SURFACE_PAIR"))
+    {
+    // Inherited fields of SurfacePair
+
+    Handle(StepGeom_Surface) aSurfacePair_Surface1;
+    data->ReadEntity(num, 1, "surface_pair.surface1", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface1);
+
+    Handle(StepGeom_Surface) aSurfacePair_Surface2;
+    data->ReadEntity(num, 2, "surface_pair.surface2", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface2);
+
+    Standard_Boolean aSurfacePair_Orientation;
+    data->ReadBoolean(num, 3, "surface_pair.orientation", ach, aSurfacePair_Orientation);
+
+      if (data->NamedForComplex("SURFACE_PAIR_WITH_RANGE", "SPW1", num0, num, ach))
+      {
+        if (data->CheckNbParams(num, 4, ach, "SURFACE_PAIR_WITH_RANGE"))
+        {
+          aKinematicPair = new StepKinematics_SurfacePairWithRange;
+          // Own fields of SurfacePairWithRange
+
+          Handle(StepGeom_RectangularTrimmedSurface) aRangeOnSurface1;
+          data->ReadEntity(num, 1, "range_on_surface1", ach, STANDARD_TYPE(StepGeom_RectangularTrimmedSurface), aRangeOnSurface1);
+
+          Handle(StepGeom_RectangularTrimmedSurface) aRangeOnSurface2;
+          data->ReadEntity(num, 2, "range_on_surface2", ach, STANDARD_TYPE(StepGeom_RectangularTrimmedSurface), aRangeOnSurface2);
+
+          Standard_Real aLowerLimitActualRotation;
+          Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 3)) {
+            data->ReadReal(num, 3, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+          }
+          else {
+            hasLowerLimitActualRotation = Standard_False;
+            aLowerLimitActualRotation = 0;
+          }
+
+          Standard_Real aUpperLimitActualRotation;
+          Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+          if (data->IsParamDefined(num, 4)) {
+            data->ReadReal(num, 4, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+          }
+          else {
+            hasUpperLimitActualRotation = Standard_False;
+            aUpperLimitActualRotation = 0;
+          }
+
+          Handle(StepKinematics_SurfacePairWithRange) aLocalPair = Handle(StepKinematics_SurfacePairWithRange)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aSurfacePair_Surface1,
+            aSurfacePair_Surface2,
+            aSurfacePair_Orientation,
+            aRangeOnSurface1,
+            aRangeOnSurface2,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+        }
+        else // StepKinematics_SurfacePairWithRange hasn't params
+        {
+          aKinematicPair = new StepKinematics_SurfacePair;
+          Handle(StepKinematics_SurfacePair) aLocalPair = Handle(StepKinematics_SurfacePair)::DownCast(aKinematicPair);
+          // Initialize kinematic_pair
+          aLocalPair->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aSurfacePair_Surface1,
+            aSurfacePair_Surface2,
+            aSurfacePair_Orientation);
+        }
+      }
+    }
+  }
+  data->NamedForComplex("REPRESENTATION_ITEM", "RPRITM", num0, num, ach);
+
+  // Own fields of representation_item
+  data->ReadString(num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+  anActuatedKinematicPair->Init(aRepresentationItem_Name, 
+    aItemDefinedTransformation_Name, hasItemDefinedTransformation_Description,
+    aItemDefinedTransformation_Description, 
+    aItemDefinedTransformation_TransformItem1,
+    aItemDefinedTransformation_TransformItem2, 
+    aKinematicPair_Joint, hasTX, aTX, hasTY, aTY, hasTZ,
+    aTZ, hasRX, aRX, hasRY, aRY, hasRZ, aRZ);
+
+  // Initialize kinematic_pair
+  aKinematicPair->SetName(aRepresentationItem_Name);
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+    aItemDefinedTransformation_Name, 
+    hasItemDefinedTransformation_Description,
+    aItemDefinedTransformation_Description,
+    aItemDefinedTransformation_TransformItem1,
+    aItemDefinedTransformation_TransformItem2,
+    aKinematicPair_Joint,
+    anActuatedKinematicPair, aKinematicPair);
+}
+
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWActuatedKinPairAndOrderKinPair::WriteStep
+(StepData_StepWriter& SW,
+  const Handle(StepKinematics_ActuatedKinPairAndOrderKinPair)& ent) const
+{
+  // --- Instance of plex componant BoundedCurve ---
+
+  SW.StartEntity("(ACTUATED_KINEMATIC_PAIR");
+
+  if (ent->GetActuatedKinematicPair()->HasTX()) {
+    switch (ent->GetActuatedKinematicPair()->TX()) {
+    case StepKinematics_adBidirectional: SW.SendEnum(".BIDIRECTIONAL."); break;
+    case StepKinematics_adPositiveOnly: SW.SendEnum(".POSITIVE_ONLY."); break;
+    case StepKinematics_adNegativeOnly: SW.SendEnum(".NEGATIVE_ONLY."); break;
+    case StepKinematics_adNotActuated: SW.SendEnum(".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if (ent->GetActuatedKinematicPair()->HasTY()) {
+    switch (ent->GetActuatedKinematicPair()->TY()) {
+    case StepKinematics_adBidirectional: SW.SendEnum(".BIDIRECTIONAL."); break;
+    case StepKinematics_adPositiveOnly: SW.SendEnum(".POSITIVE_ONLY."); break;
+    case StepKinematics_adNegativeOnly: SW.SendEnum(".NEGATIVE_ONLY."); break;
+    case StepKinematics_adNotActuated: SW.SendEnum(".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if (ent->GetActuatedKinematicPair()->HasTZ()) {
+    switch (ent->GetActuatedKinematicPair()->TZ()) {
+    case StepKinematics_adBidirectional: SW.SendEnum(".BIDIRECTIONAL."); break;
+    case StepKinematics_adPositiveOnly: SW.SendEnum(".POSITIVE_ONLY."); break;
+    case StepKinematics_adNegativeOnly: SW.SendEnum(".NEGATIVE_ONLY."); break;
+    case StepKinematics_adNotActuated: SW.SendEnum(".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if (ent->GetActuatedKinematicPair()->HasRX()) {
+    switch (ent->GetActuatedKinematicPair()->RX()) {
+    case StepKinematics_adBidirectional: SW.SendEnum(".BIDIRECTIONAL."); break;
+    case StepKinematics_adPositiveOnly: SW.SendEnum(".POSITIVE_ONLY."); break;
+    case StepKinematics_adNegativeOnly: SW.SendEnum(".NEGATIVE_ONLY."); break;
+    case StepKinematics_adNotActuated: SW.SendEnum(".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if (ent->GetActuatedKinematicPair()->HasRY()) {
+    switch (ent->GetActuatedKinematicPair()->RY()) {
+    case StepKinematics_adBidirectional: SW.SendEnum(".BIDIRECTIONAL."); break;
+    case StepKinematics_adPositiveOnly: SW.SendEnum(".POSITIVE_ONLY."); break;
+    case StepKinematics_adNegativeOnly: SW.SendEnum(".NEGATIVE_ONLY."); break;
+    case StepKinematics_adNotActuated: SW.SendEnum(".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if (ent->GetActuatedKinematicPair()->HasRZ()) {
+    switch (ent->GetActuatedKinematicPair()->RZ()) {
+    case StepKinematics_adBidirectional: SW.SendEnum(".BIDIRECTIONAL."); break;
+    case StepKinematics_adPositiveOnly: SW.SendEnum(".POSITIVE_ONLY."); break;
+    case StepKinematics_adNegativeOnly: SW.SendEnum(".NEGATIVE_ONLY."); break;
+    case StepKinematics_adNotActuated: SW.SendEnum(".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+  SW.StartEntity("(GEOMETRIC_REPRESENTATION_ITEM");
+
+  SW.StartEntity("(ITEM_DEFINED_TRANSFORMATION");
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send(ent->ItemDefinedTransformation()->Name());
+
+  if (ent->ItemDefinedTransformation()->HasDescription()) {
+    SW.Send(ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send(ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send(ent->ItemDefinedTransformation()->TransformItem2());
+
+  SW.StartEntity("(KINEMATIC_PAIR");
+
+  // Own fields of KinematicPair
+
+  SW.Send(ent->Joint());
+  if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPair)))
+  {
+    Handle(StepKinematics_LowOrderKinematicPair) aLowOrderKinematicPair = Handle(StepKinematics_LowOrderKinematicPair)::DownCast(ent->GetOrderKinematicPair());
+    SW.StartEntity("(LOW_ORDER_KINEMATIC_PAIR");
+
+    SW.SendBoolean(aLowOrderKinematicPair->TX());
+
+    SW.SendBoolean(aLowOrderKinematicPair->TY());
+
+    SW.SendBoolean(aLowOrderKinematicPair->TZ());
+
+    SW.SendBoolean(aLowOrderKinematicPair->RX());
+
+    SW.SendBoolean(aLowOrderKinematicPair->RY());
+
+    SW.SendBoolean(aLowOrderKinematicPair->RZ());
+
+    if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_RevolutePair)))
+    {
+      SW.StartEntity("(REVOLUTE_PAIR");
+      SW.StartEntity("(REVOLUTE_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_RevolutePairWithRange)))
+      {
+        Handle(StepKinematics_RevolutePairWithRange) aRevolutePairWithRange = Handle(StepKinematics_RevolutePairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of RevolutePairWithRange
+
+        if (aRevolutePairWithRange->HasLowerLimitActualRotation()) {
+          SW.Send(aRevolutePairWithRange->LowerLimitActualRotation());
+        }
+        else SW.SendUndef();
+
+        if (aRevolutePairWithRange->HasUpperLimitActualRotation()) {
+          SW.Send(aRevolutePairWithRange->UpperLimitActualRotation());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_CylindricalPair)))
+    {
+      SW.StartEntity("(CYLINDRICAL_PAIR");
+      SW.StartEntity("(CYLINDRICAL_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_CylindricalPairWithRange)))
+      {
+        Handle(StepKinematics_CylindricalPairWithRange) aCylindricalPairWithRange = Handle(StepKinematics_CylindricalPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of CylindricalPairWithRange
+
+        if (aCylindricalPairWithRange->HasLowerLimitActualTranslation()) {
+          SW.Send(aCylindricalPairWithRange->LowerLimitActualTranslation());
+        }
+        else SW.SendUndef();
+
+        if (aCylindricalPairWithRange->HasUpperLimitActualTranslation()) {
+          SW.Send(aCylindricalPairWithRange->UpperLimitActualTranslation());
+        }
+        else SW.SendUndef();
+
+        if (aCylindricalPairWithRange->HasLowerLimitActualRotation()) {
+          SW.Send(aCylindricalPairWithRange->LowerLimitActualRotation());
+        }
+        else SW.SendUndef();
+
+        if (aCylindricalPairWithRange->HasUpperLimitActualRotation()) {
+          SW.Send(aCylindricalPairWithRange->UpperLimitActualRotation());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_SphericalPair)))
+    {
+      SW.StartEntity("(SPHERICAL_PAIR");
+      SW.StartEntity("(SPHERICAL_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithRange)))
+      {
+        Handle(StepKinematics_SphericalPairWithRange) aSphericalPairWithRange = Handle(StepKinematics_SphericalPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of SphericalPairWithRange
+
+        if (aSphericalPairWithRange->HasLowerLimitYaw()) {
+          SW.Send(aSphericalPairWithRange->LowerLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithRange->HasUpperLimitYaw()) {
+          SW.Send(aSphericalPairWithRange->UpperLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithRange->HasLowerLimitPitch()) {
+          SW.Send(aSphericalPairWithRange->LowerLimitPitch());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithRange->HasUpperLimitPitch()) {
+          SW.Send(aSphericalPairWithRange->UpperLimitPitch());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithRange->HasLowerLimitRoll()) {
+          SW.Send(aSphericalPairWithRange->LowerLimitRoll());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithRange->HasUpperLimitRoll()) {
+          SW.Send(aSphericalPairWithRange->UpperLimitRoll());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithPin)))
+    {
+      SW.StartEntity("(SPHERICAL_PAIR_WITH_PIN");
+      SW.StartEntity("(SPHERICAL_PAIR_WITH_PIN_AND_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithPinAndRange)))
+      {
+        Handle(StepKinematics_SphericalPairWithPinAndRange) aSphericalPairWithPinAndRange = Handle(StepKinematics_SphericalPairWithPinAndRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of SphericalPairWithPinAndRange
+
+        if (aSphericalPairWithPinAndRange->HasLowerLimitYaw()) {
+          SW.Send(aSphericalPairWithPinAndRange->LowerLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithPinAndRange->HasUpperLimitYaw()) {
+          SW.Send(aSphericalPairWithPinAndRange->UpperLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithPinAndRange->HasLowerLimitRoll()) {
+          SW.Send(aSphericalPairWithPinAndRange->LowerLimitRoll());
+        }
+        else SW.SendUndef();
+
+        if (aSphericalPairWithPinAndRange->HasUpperLimitRoll()) {
+          SW.Send(aSphericalPairWithPinAndRange->UpperLimitRoll());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PrismaticPair)))
+    {
+      SW.StartEntity("(PRISMATIC_PAIR");
+      SW.StartEntity("(PRISMATIC_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PrismaticPairWithRange)))
+      {
+        Handle(StepKinematics_PrismaticPairWithRange) aPrismaticPairWithRange = Handle(StepKinematics_PrismaticPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of PrismaticPairWithRange
+
+        if (aPrismaticPairWithRange->HasLowerLimitActualTranslation()) {
+          SW.Send(aPrismaticPairWithRange->LowerLimitActualTranslation());
+        }
+        else SW.SendUndef();
+
+        if (aPrismaticPairWithRange->HasUpperLimitActualTranslation()) {
+          SW.Send(aPrismaticPairWithRange->UpperLimitActualTranslation());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_UniversalPair)))
+    {
+      SW.StartEntity("(UNIVERSAL_PAIR");
+      Handle(StepKinematics_UniversalPair) anUniversalPair = Handle(StepKinematics_UniversalPair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of UniversalPair
+
+      if (anUniversalPair->HasInputSkewAngle()) {
+        SW.Send(anUniversalPair->InputSkewAngle());
+      }
+      else SW.SendUndef();
+
+      SW.StartEntity("(PRISMATIC_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PrismaticPairWithRange)))
+      {
+        Handle(StepKinematics_UniversalPairWithRange) anUniversalPairWithRange = Handle(StepKinematics_UniversalPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of UniversalPairWithRange
+
+        if (anUniversalPairWithRange->HasLowerLimitFirstRotation()) {
+          SW.Send(anUniversalPairWithRange->LowerLimitFirstRotation());
+        }
+        else SW.SendUndef();
+
+        if (anUniversalPairWithRange->HasUpperLimitFirstRotation()) {
+          SW.Send(anUniversalPairWithRange->UpperLimitFirstRotation());
+        }
+        else SW.SendUndef();
+
+        if (anUniversalPairWithRange->HasLowerLimitSecondRotation()) {
+          SW.Send(anUniversalPairWithRange->LowerLimitSecondRotation());
+        }
+        else SW.SendUndef();
+
+        if (anUniversalPairWithRange->HasUpperLimitSecondRotation()) {
+          SW.Send(anUniversalPairWithRange->UpperLimitSecondRotation());
+        }
+        else SW.SendUndef();
+      }
+    }
+  }
+  else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPairWithMotionCoupling)))
+  {
+    if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_GearPair)))
+    {
+      SW.StartEntity("(GEAR_PAIR");
+      Handle(StepKinematics_GearPair) aGearPair = Handle(StepKinematics_GearPair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of GearPair
+
+      SW.Send(aGearPair->RadiusFirstLink());
+
+      SW.Send(aGearPair->RadiusSecondLink());
+
+      SW.Send(aGearPair->Bevel());
+
+      SW.Send(aGearPair->HelicalAngle());
+
+      SW.Send(aGearPair->GearRatio());
+
+      SW.StartEntity("(PRISMATIC_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_GearPairWithRange)))
+      {
+        Handle(StepKinematics_GearPairWithRange) aGearPairWithRange = Handle(StepKinematics_GearPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of GearPairWithRange
+
+        if (aGearPairWithRange->HasLowerLimitActualRotation1()) {
+          SW.Send(aGearPairWithRange->LowerLimitActualRotation1());
+        }
+        else SW.SendUndef();
+
+        if (aGearPairWithRange->HasUpperLimitActualRotation1()) {
+          SW.Send(aGearPairWithRange->UpperLimitActualRotation1());
+        }
+        else SW.SendUndef();
+      }
+    } 
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_RackAndPinionPair)))
+    {
+      SW.StartEntity("RACK_AND_PINION_PAIR");
+      Handle(StepKinematics_RackAndPinionPair) aRackAndPinionPair = Handle(StepKinematics_RackAndPinionPair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of RackAndPinionPair
+
+      SW.Send(aRackAndPinionPair->PinionRadius());
+
+      SW.StartEntity("(RACK_AND_PINION_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_RackAndPinionPairWithRange)))
+      {
+        Handle(StepKinematics_RackAndPinionPairWithRange) aRackAndPinionPairWithRange = Handle(StepKinematics_RackAndPinionPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of aRackAndPinionPairWithRange
+
+        if (aRackAndPinionPairWithRange->HasLowerLimitRackDisplacement()) {
+          SW.Send(aRackAndPinionPairWithRange->LowerLimitRackDisplacement());
+        }
+        else SW.SendUndef();
+
+        if (aRackAndPinionPairWithRange->HasUpperLimitRackDisplacement()) {
+          SW.Send(aRackAndPinionPairWithRange->UpperLimitRackDisplacement());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_ScrewPair)))
+    {
+      SW.StartEntity("SCREW_PAIR");
+      Handle(StepKinematics_ScrewPair) aScrewPair = Handle(StepKinematics_ScrewPair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of ScrewPair
+
+      SW.Send(aScrewPair->Pitch());
+
+      SW.StartEntity("(SCREW_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_ScrewPairWithRange)))
+      {
+        Handle(StepKinematics_ScrewPairWithRange) aScrewPairWithRange = Handle(StepKinematics_ScrewPairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of aRackAndPinionPairWithRange
+
+        if (aScrewPairWithRange->HasLowerLimitActualRotation()) {
+          SW.Send(aScrewPairWithRange->LowerLimitActualRotation());
+        }
+        else SW.SendUndef();
+
+        if (aScrewPairWithRange->HasUpperLimitActualRotation()) {
+          SW.Send(aScrewPairWithRange->UpperLimitActualRotation());
+        }
+        else SW.SendUndef();
+      }
+    }
+  }
+  else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_HighOrderKinematicPair)))
+  {
+    if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_ScrewPair)))
+    {
+      SW.StartEntity("POINT_ON_PLANAR_CURVE_PAIR");
+      Handle(StepKinematics_PointOnPlanarCurvePair) aPointOnPlanarCurvePair = Handle(StepKinematics_PointOnPlanarCurvePair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of PointOnPlanarCurvePair
+
+      SW.Send(aPointOnPlanarCurvePair->PairCurve());
+
+      SW.SendBoolean(aPointOnPlanarCurvePair->Orientation());
+
+      SW.StartEntity("(POINT_ON_PLANAR_CURVE_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePairWithRange)))
+      {
+        Handle(StepKinematics_PointOnPlanarCurvePairWithRange) aPointOnPlanarCurvePairWithRange = Handle(StepKinematics_PointOnPlanarCurvePairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of PointOnPlanarCurvePairWithRange
+
+        SW.Send(aPointOnPlanarCurvePairWithRange->RangeOnPairCurve());
+
+        if (aPointOnPlanarCurvePairWithRange->HasLowerLimitYaw()) {
+          SW.Send(aPointOnPlanarCurvePairWithRange->LowerLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnPlanarCurvePairWithRange->HasUpperLimitYaw()) {
+          SW.Send(aPointOnPlanarCurvePairWithRange->UpperLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnPlanarCurvePairWithRange->HasLowerLimitPitch()) {
+          SW.Send(aPointOnPlanarCurvePairWithRange->LowerLimitPitch());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnPlanarCurvePairWithRange->HasUpperLimitPitch()) {
+          SW.Send(aPointOnPlanarCurvePairWithRange->UpperLimitPitch());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnPlanarCurvePairWithRange->HasLowerLimitRoll()) {
+          SW.Send(aPointOnPlanarCurvePairWithRange->LowerLimitRoll());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnPlanarCurvePairWithRange->HasUpperLimitRoll()) {
+          SW.Send(aPointOnPlanarCurvePairWithRange->UpperLimitRoll());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PointOnSurfacePair)))
+    {
+      SW.StartEntity("POINT_ON_SURFACE_PAIR");
+      Handle(StepKinematics_PointOnSurfacePair) aPointOnSurfacePair = Handle(StepKinematics_PointOnSurfacePair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of PointOnSurfacePair
+
+        SW.Send(aPointOnSurfacePair->PairSurface());
+
+      SW.StartEntity("(SCREW_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PointOnSurfacePairWithRange)))
+      {
+        Handle(StepKinematics_PointOnSurfacePairWithRange) aPointOnSurfacePairWithRange = Handle(StepKinematics_PointOnSurfacePairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of PointOnSurfacePairWithRange
+
+        SW.Send(aPointOnSurfacePairWithRange->RangeOnPairSurface());
+
+        if (aPointOnSurfacePairWithRange->HasLowerLimitYaw()) {
+          SW.Send(aPointOnSurfacePairWithRange->LowerLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnSurfacePairWithRange->HasUpperLimitYaw()) {
+          SW.Send(aPointOnSurfacePairWithRange->UpperLimitYaw());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnSurfacePairWithRange->HasLowerLimitPitch()) {
+          SW.Send(aPointOnSurfacePairWithRange->LowerLimitPitch());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnSurfacePairWithRange->HasUpperLimitPitch()) {
+          SW.Send(aPointOnSurfacePairWithRange->UpperLimitPitch());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnSurfacePairWithRange->HasLowerLimitRoll()) {
+          SW.Send(aPointOnSurfacePairWithRange->LowerLimitRoll());
+        }
+        else SW.SendUndef();
+
+        if (aPointOnSurfacePairWithRange->HasUpperLimitRoll()) {
+          SW.Send(aPointOnSurfacePairWithRange->UpperLimitRoll());
+        }
+        else SW.SendUndef();
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PlanarCurvePair)))
+    {
+      SW.StartEntity("PLANAR_CURVE_PAIR");
+      Handle(StepKinematics_PlanarCurvePair) aPlanarCurvePair = Handle(StepKinematics_PlanarCurvePair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of PlanarCurvePair
+
+      SW.Send(aPlanarCurvePair->Curve1());
+
+      SW.Send(aPlanarCurvePair->Curve2());
+
+      SW.StartEntity("(PLANAR_CURVE_PAIR_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_PlanarCurvePairRange)))
+      {
+        Handle(StepKinematics_PlanarCurvePairRange) aPlanarCurvePairRange = Handle(StepKinematics_PlanarCurvePairRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of PlanarCurvePairRange
+
+        SW.Send(aPlanarCurvePairRange->RangeOnCurve1());
+
+        SW.Send(aPlanarCurvePairRange->RangeOnCurve2());
+      }
+    }
+    else if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_SurfacePair)))
+    {
+      SW.StartEntity("SURFACE_PAIR");
+      Handle(StepKinematics_SurfacePair) aSurfacePair = Handle(StepKinematics_SurfacePair)::DownCast(ent->GetOrderKinematicPair());
+      // Own fields of SurfacePair
+
+      SW.Send(aSurfacePair->Surface1());
+
+      SW.Send(aSurfacePair->Surface2());
+
+      SW.SendBoolean(aSurfacePair->Orientation());
+
+      SW.StartEntity("(SURFACE_PAIR_WITH_RANGE");
+      if (ent->GetOrderKinematicPair()->IsKind(STANDARD_TYPE(StepKinematics_SurfacePairWithRange)))
+      {
+        Handle(StepKinematics_SurfacePairWithRange) aSurfacePairWithRange = Handle(StepKinematics_SurfacePairWithRange)::DownCast(ent->GetOrderKinematicPair());
+        // Own fields of SurfacePairWithRange
+
+        SW.Send(aSurfacePairWithRange->RangeOnSurface1());
+
+        SW.Send(aSurfacePairWithRange->RangeOnSurface2());
+
+        if (aSurfacePairWithRange->HasLowerLimitActualRotation()) {
+          SW.Send(aSurfacePairWithRange->LowerLimitActualRotation());
+        }
+        else SW.SendUndef();
+
+        if (aSurfacePairWithRange->HasUpperLimitActualRotation()) {
+          SW.Send(aSurfacePairWithRange->UpperLimitActualRotation());
+        }
+        else SW.SendUndef();
+      }
+    }
+  }
+
+  // Own fields of RepresentationItem
+  SW.StartEntity("REPRESENTATION_ITEM");
+  SW.Send(ent->Name());
+}
+
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWActuatedKinPairAndOrderKinPair::Share
+  (const Handle(StepKinematics_ActuatedKinPairAndOrderKinPair)& ent,
+   Interface_EntityIterator& iter) const
+{
+  iter.AddItem(ent->GetOrderKinematicPair());
+  iter.AddItem(ent->GetOrderKinematicPair()->Joint());
+  iter.AddItem(ent->GetActuatedKinematicPair());
+  iter.AddItem(ent->GetOrderKinematicPair()->ItemDefinedTransformation());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWActuatedKinPairAndOrderKinPair.hxx
new file mode 100644 (file)
index 0000000..562479e
--- /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 _RWStepKinematics_RWActuatedKinPairAndOrderKinPair_HeaderFile
+#define _RWStepKinematics_RWActuatedKinPairAndOrderKinPair_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ActuatedKinPairAndOrderKinPair;
+
+
+//! Read & Write Module for GeoTolAndGeoTolWthMod
+class RWStepKinematics_RWActuatedKinPairAndOrderKinPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepKinematics_RWActuatedKinPairAndOrderKinPair();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ActuatedKinPairAndOrderKinPair)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepKinematics_ActuatedKinPairAndOrderKinPair)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepKinematics_ActuatedKinPairAndOrderKinPair)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepDimTol_RWGeoTolAndGeoTolWthMod_HeaderFile
diff --git a/src/RWStepKinematics/RWStepKinematics_RWActuatedKinematicPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWActuatedKinematicPair.cxx
new file mode 100644 (file)
index 0000000..f81cb26
--- /dev/null
@@ -0,0 +1,321 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWActuatedKinematicPair.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_ActuatedDirection.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWActuatedKinematicPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWActuatedKinematicPair::RWStepKinematics_RWActuatedKinematicPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWActuatedKinematicPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                         const Standard_Integer num,
+                                                         Handle(Interface_Check)& ach,
+                                                         const Handle(StepKinematics_ActuatedKinematicPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"actuated_kinematic_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of ActuatedKinematicPair
+
+  StepKinematics_ActuatedDirection aTX = StepKinematics_adNotActuated;
+  Standard_Boolean hasTX = Standard_True;
+  if ( data->IsParamDefined (num,7) ) {
+    if (data->ParamType (num, 7) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 7);
+      if      (strcmp(text, ".BIDIRECTIONAL.")) aTX = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aTX = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aTX = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aTX = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #7 (t_x) has not allowed value");
+    }
+    else ach->AddFail("Parameter #7 (t_x) is not enumeration");
+  }
+  else {
+    hasTX = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aTY = StepKinematics_adNotActuated;
+  Standard_Boolean hasTY = Standard_True;
+  if ( data->IsParamDefined (num,8) ) {
+    if (data->ParamType (num, 8) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 8);
+      if      (strcmp(text, ".BIDIRECTIONAL.")) aTY = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aTY = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aTY = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aTY = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #8 (t_y) has not allowed value");
+    }
+    else ach->AddFail("Parameter #8 (t_y) is not enumeration");
+  }
+  else {
+    hasTY = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aTZ = StepKinematics_adNotActuated;
+  Standard_Boolean hasTZ = Standard_True;
+  if ( data->IsParamDefined (num,9) ) {
+    if (data->ParamType (num, 9) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 9);
+      if      (strcmp(text, ".BIDIRECTIONAL.")) aTZ = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aTZ = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aTZ = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aTZ = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #9 (t_z) has not allowed value");
+    }
+    else ach->AddFail("Parameter #9 (t_z) is not enumeration");
+  }
+  else {
+    hasTZ = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aRX = StepKinematics_adNotActuated;
+  Standard_Boolean hasRX = Standard_True;
+  if ( data->IsParamDefined (num,10) ) {
+    if (data->ParamType (num, 10) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 10);
+      if      (strcmp(text, ".BIDIRECTIONAL.")) aRX = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aRX = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aRX = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aRX = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #10 (r_x) has not allowed value");
+    }
+    else ach->AddFail("Parameter #10 (r_x) is not enumeration");
+  }
+  else {
+    hasRX = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aRY = StepKinematics_adNotActuated;
+  Standard_Boolean hasRY = Standard_True;
+  if ( data->IsParamDefined (num,11) ) {
+    if (data->ParamType (num, 11) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 11);
+      if      (strcmp(text, ".BIDIRECTIONAL.")) aRY = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aRY = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aRY = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aRY = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #11 (r_y) has not allowed value");
+    }
+    else ach->AddFail("Parameter #11 (r_y) is not enumeration");
+  }
+  else {
+    hasRY = Standard_False;
+  }
+
+  StepKinematics_ActuatedDirection aRZ = StepKinematics_adNotActuated;
+  Standard_Boolean hasRZ = Standard_True;
+  if ( data->IsParamDefined (num,12) ) {
+    if (data->ParamType (num, 12) == Interface_ParamEnum) {
+      Standard_CString text = data->ParamCValue(num, 12);
+      if      (strcmp(text, ".BIDIRECTIONAL.")) aRZ = StepKinematics_adBidirectional;
+      else if (strcmp(text, ".POSITIVE_ONLY.")) aRZ = StepKinematics_adPositiveOnly;
+      else if (strcmp(text, ".NEGATIVE_ONLY.")) aRZ = StepKinematics_adNegativeOnly;
+      else if (strcmp(text, ".NOT_ACTUATED.")) aRZ = StepKinematics_adNotActuated;
+      else ach->AddFail("Parameter #12 (r_z) has not allowed value");
+    }
+    else ach->AddFail("Parameter #12 (r_z) is not enumeration");
+  }
+  else {
+    hasRZ = Standard_False;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            hasTX,
+            aTX,
+            hasTY,
+            aTY,
+            hasTZ,
+            aTZ,
+            hasRX,
+            aRX,
+            hasRY,
+            aRY,
+            hasRZ,
+            aRZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWActuatedKinematicPair::WriteStep (StepData_StepWriter& SW,
+                                                          const Handle(StepKinematics_ActuatedKinematicPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of ActuatedKinematicPair
+
+  if ( ent->HasTX() ) {
+    switch (ent->TX()) {
+      case StepKinematics_adBidirectional: SW.SendEnum (".BIDIRECTIONAL."); break;
+      case StepKinematics_adPositiveOnly: SW.SendEnum (".POSITIVE_ONLY."); break;
+      case StepKinematics_adNegativeOnly: SW.SendEnum (".NEGATIVE_ONLY."); break;
+      case StepKinematics_adNotActuated: SW.SendEnum (".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasTY() ) {
+    switch (ent->TY()) {
+      case StepKinematics_adBidirectional: SW.SendEnum (".BIDIRECTIONAL."); break;
+      case StepKinematics_adPositiveOnly: SW.SendEnum (".POSITIVE_ONLY."); break;
+      case StepKinematics_adNegativeOnly: SW.SendEnum (".NEGATIVE_ONLY."); break;
+      case StepKinematics_adNotActuated: SW.SendEnum (".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasTZ() ) {
+    switch (ent->TZ()) {
+      case StepKinematics_adBidirectional: SW.SendEnum (".BIDIRECTIONAL."); break;
+      case StepKinematics_adPositiveOnly: SW.SendEnum (".POSITIVE_ONLY."); break;
+      case StepKinematics_adNegativeOnly: SW.SendEnum (".NEGATIVE_ONLY."); break;
+      case StepKinematics_adNotActuated: SW.SendEnum (".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasRX() ) {
+    switch (ent->RX()) {
+      case StepKinematics_adBidirectional: SW.SendEnum (".BIDIRECTIONAL."); break;
+      case StepKinematics_adPositiveOnly: SW.SendEnum (".POSITIVE_ONLY."); break;
+      case StepKinematics_adNegativeOnly: SW.SendEnum (".NEGATIVE_ONLY."); break;
+      case StepKinematics_adNotActuated: SW.SendEnum (".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasRY() ) {
+    switch (ent->RY()) {
+      case StepKinematics_adBidirectional: SW.SendEnum (".BIDIRECTIONAL."); break;
+      case StepKinematics_adPositiveOnly: SW.SendEnum (".POSITIVE_ONLY."); break;
+      case StepKinematics_adNegativeOnly: SW.SendEnum (".NEGATIVE_ONLY."); break;
+      case StepKinematics_adNotActuated: SW.SendEnum (".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasRZ() ) {
+    switch (ent->RZ()) {
+      case StepKinematics_adBidirectional: SW.SendEnum (".BIDIRECTIONAL."); break;
+      case StepKinematics_adPositiveOnly: SW.SendEnum (".POSITIVE_ONLY."); break;
+      case StepKinematics_adNegativeOnly: SW.SendEnum (".NEGATIVE_ONLY."); break;
+      case StepKinematics_adNotActuated: SW.SendEnum (".NOT_ACTUATED."); break;
+    }
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWActuatedKinematicPair::Share (const Handle(StepKinematics_ActuatedKinematicPair)& ent,
+                                                      Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of ActuatedKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWActuatedKinematicPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWActuatedKinematicPair.hxx
new file mode 100644 (file)
index 0000000..6908703
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWActuatedKinematicPair_HeaderFile_
+#define _RWStepKinematics_RWActuatedKinematicPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ActuatedKinematicPair;
+
+//! Read & Write tool for ActuatedKinematicPair
+class RWStepKinematics_RWActuatedKinematicPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWActuatedKinematicPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ActuatedKinematicPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ActuatedKinematicPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ActuatedKinematicPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWActuatedKinematicPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWContextDependentKinematicLinkRepresentation.cxx b/src/RWStepKinematics/RWStepKinematics_RWContextDependentKinematicLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..cb6b178
--- /dev/null
@@ -0,0 +1,89 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx>
+#include <StepKinematics_ContextDependentKinematicLinkRepresentation.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWContextDependentKinematicLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWContextDependentKinematicLinkRepresentation::RWStepKinematics_RWContextDependentKinematicLinkRepresentation() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWContextDependentKinematicLinkRepresentation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                               const Standard_Integer num,
+                                                                               Handle(Interface_Check)& ach,
+                                                                               const Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,2,ach,"context_dependent_kinematic_link_representation") ) return;
+
+  // Own fields of ContextDependentKinematicLinkRepresentation
+
+  Handle(StepKinematics_KinematicLinkRepresentationAssociation) aRepresentationRelation;
+  data->ReadEntity (num, 1, "representation_relation", ach, STANDARD_TYPE(StepKinematics_KinematicLinkRepresentationAssociation), aRepresentationRelation);
+
+  Handle(StepKinematics_ProductDefinitionRelationshipKinematics) aRepresentedProductRelation;
+  data->ReadEntity (num, 2, "represented_product_relation", ach, STANDARD_TYPE(StepKinematics_ProductDefinitionRelationshipKinematics), aRepresentedProductRelation);
+
+  // Initialize entity
+  ent->Init(aRepresentationRelation,
+            aRepresentedProductRelation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWContextDependentKinematicLinkRepresentation::WriteStep (StepData_StepWriter& SW,
+                                                                                const Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)& ent) const
+{
+
+  // Own fields of ContextDependentKinematicLinkRepresentation
+
+  SW.Send (ent->RepresentationRelation());
+
+  SW.Send (ent->RepresentedProductRelation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWContextDependentKinematicLinkRepresentation::Share (const Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)& ent,
+                                                                            Interface_EntityIterator& iter) const
+{
+
+  // Own fields of ContextDependentKinematicLinkRepresentation
+
+  iter.AddItem (ent->RepresentationRelation());
+
+  iter.AddItem (ent->RepresentedProductRelation());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx b/src/RWStepKinematics/RWStepKinematics_RWContextDependentKinematicLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..843fca4
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWContextDependentKinematicLinkRepresentation_HeaderFile_
+#define _RWStepKinematics_RWContextDependentKinematicLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ContextDependentKinematicLinkRepresentation;
+
+//! Read & Write tool for ContextDependentKinematicLinkRepresentation
+class RWStepKinematics_RWContextDependentKinematicLinkRepresentation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWContextDependentKinematicLinkRepresentation();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWContextDependentKinematicLinkRepresentation_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWCylindricalPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWCylindricalPair.cxx
new file mode 100644 (file)
index 0000000..7e0ae59
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWCylindricalPair.hxx>
+#include <StepKinematics_CylindricalPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWCylindricalPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWCylindricalPair::RWStepKinematics_RWCylindricalPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                   const Standard_Integer num,
+                                                   Handle(Interface_Check)& ach,
+                                                   const Handle(StepKinematics_CylindricalPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"cylindrical_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPair::WriteStep (StepData_StepWriter& SW,
+                                                    const Handle(StepKinematics_CylindricalPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPair::Share (const Handle(StepKinematics_CylindricalPair)& ent,
+                                                Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWCylindricalPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWCylindricalPair.hxx
new file mode 100644 (file)
index 0000000..9f8db1d
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWCylindricalPair_HeaderFile_
+#define _RWStepKinematics_RWCylindricalPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_CylindricalPair;
+
+//! Read & Write tool for CylindricalPair
+class RWStepKinematics_RWCylindricalPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWCylindricalPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_CylindricalPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_CylindricalPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_CylindricalPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWCylindricalPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairValue.cxx
new file mode 100644 (file)
index 0000000..d1779d3
--- /dev/null
@@ -0,0 +1,112 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWCylindricalPairValue.hxx>
+#include <StepKinematics_CylindricalPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWCylindricalPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWCylindricalPairValue::RWStepKinematics_RWCylindricalPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                        const Standard_Integer num,
+                                                        Handle(Interface_Check)& ach,
+                                                        const Handle(StepKinematics_CylindricalPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"cylindrical_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of CylindricalPairValue
+
+  Standard_Real aActualTranslation;
+  data->ReadReal (num, 3, "actual_translation", ach, aActualTranslation);
+
+  Standard_Real aActualRotation;
+  data->ReadReal (num, 4, "actual_rotation", ach, aActualRotation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualTranslation,
+            aActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPairValue::WriteStep (StepData_StepWriter& SW,
+                                                         const Handle(StepKinematics_CylindricalPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of CylindricalPairValue
+
+  SW.Send (ent->ActualTranslation());
+
+  SW.Send (ent->ActualRotation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPairValue::Share (const Handle(StepKinematics_CylindricalPairValue)& ent,
+                                                     Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of CylindricalPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairValue.hxx
new file mode 100644 (file)
index 0000000..1be01a0
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWCylindricalPairValue_HeaderFile_
+#define _RWStepKinematics_RWCylindricalPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_CylindricalPairValue;
+
+//! Read & Write tool for CylindricalPairValue
+class RWStepKinematics_RWCylindricalPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWCylindricalPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_CylindricalPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_CylindricalPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_CylindricalPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWCylindricalPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairWithRange.cxx
new file mode 100644 (file)
index 0000000..83e84d9
--- /dev/null
@@ -0,0 +1,258 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWCylindricalPairWithRange.hxx>
+#include <StepKinematics_CylindricalPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWCylindricalPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWCylindricalPairWithRange::RWStepKinematics_RWCylindricalPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                            const Standard_Integer num,
+                                                            Handle(Interface_Check)& ach,
+                                                            const Handle(StepKinematics_CylindricalPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,16,ach,"cylindrical_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of CylindricalPairWithRange
+
+  Standard_Real aLowerLimitActualTranslation;
+  Standard_Boolean hasLowerLimitActualTranslation = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_actual_translation", ach, aLowerLimitActualTranslation);
+  }
+  else {
+    hasLowerLimitActualTranslation = Standard_False;
+    aLowerLimitActualTranslation = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslation;
+  Standard_Boolean hasUpperLimitActualTranslation = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_actual_translation", ach, aUpperLimitActualTranslation);
+  }
+  else {
+    hasUpperLimitActualTranslation = Standard_False;
+    aUpperLimitActualTranslation = 0;
+  }
+
+  Standard_Real aLowerLimitActualRotation;
+  Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+  }
+  else {
+    hasLowerLimitActualRotation = Standard_False;
+    aLowerLimitActualRotation = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotation;
+  Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,16) ) {
+    data->ReadReal (num, 16, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+  }
+  else {
+    hasUpperLimitActualRotation = Standard_False;
+    aUpperLimitActualRotation = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualTranslation,
+            aLowerLimitActualTranslation,
+            hasUpperLimitActualTranslation,
+            aUpperLimitActualTranslation,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                             const Handle(StepKinematics_CylindricalPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of CylindricalPairWithRange
+
+  if ( ent->HasLowerLimitActualTranslation() ) {
+    SW.Send (ent->LowerLimitActualTranslation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslation() ) {
+    SW.Send (ent->UpperLimitActualTranslation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualRotation() ) {
+    SW.Send (ent->LowerLimitActualRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotation() ) {
+    SW.Send (ent->UpperLimitActualRotation());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWCylindricalPairWithRange::Share (const Handle(StepKinematics_CylindricalPairWithRange)& ent,
+                                                         Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of CylindricalPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWCylindricalPairWithRange.hxx
new file mode 100644 (file)
index 0000000..e98b91e
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWCylindricalPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWCylindricalPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_CylindricalPairWithRange;
+
+//! Read & Write tool for CylindricalPairWithRange
+class RWStepKinematics_RWCylindricalPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWCylindricalPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_CylindricalPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_CylindricalPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_CylindricalPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWCylindricalPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWFullyConstrainedPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWFullyConstrainedPair.cxx
new file mode 100644 (file)
index 0000000..56f6c48
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWFullyConstrainedPair.hxx>
+#include <StepKinematics_FullyConstrainedPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWFullyConstrainedPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWFullyConstrainedPair::RWStepKinematics_RWFullyConstrainedPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWFullyConstrainedPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                        const Standard_Integer num,
+                                                        Handle(Interface_Check)& ach,
+                                                        const Handle(StepKinematics_FullyConstrainedPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"fully_constrained_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWFullyConstrainedPair::WriteStep (StepData_StepWriter& SW,
+                                                         const Handle(StepKinematics_FullyConstrainedPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWFullyConstrainedPair::Share (const Handle(StepKinematics_FullyConstrainedPair)& ent,
+                                                     Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWFullyConstrainedPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWFullyConstrainedPair.hxx
new file mode 100644 (file)
index 0000000..8a0c37f
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWFullyConstrainedPair_HeaderFile_
+#define _RWStepKinematics_RWFullyConstrainedPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_FullyConstrainedPair;
+
+//! Read & Write tool for FullyConstrainedPair
+class RWStepKinematics_RWFullyConstrainedPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWFullyConstrainedPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_FullyConstrainedPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_FullyConstrainedPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_FullyConstrainedPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWFullyConstrainedPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWGearPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWGearPair.cxx
new file mode 100644 (file)
index 0000000..cabcc32
--- /dev/null
@@ -0,0 +1,177 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWGearPair.hxx>
+#include <StepKinematics_GearPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWGearPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWGearPair::RWStepKinematics_RWGearPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                            const Standard_Integer num,
+                                            Handle(Interface_Check)& ach,
+                                            const Handle(StepKinematics_GearPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,11,ach,"gear_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of GearPair
+
+  Standard_Real aRadiusFirstLink;
+  data->ReadReal (num, 7, "radius_first_link", ach, aRadiusFirstLink);
+
+  Standard_Real aRadiusSecondLink;
+  data->ReadReal (num, 8, "radius_second_link", ach, aRadiusSecondLink);
+
+  Standard_Real aBevel;
+  data->ReadReal (num, 9, "bevel", ach, aBevel);
+
+  Standard_Real aHelicalAngle;
+  data->ReadReal (num, 10, "helical_angle", ach, aHelicalAngle);
+
+  Standard_Real aGearRatio;
+  data->ReadReal (num, 11, "gear_ratio", ach, aGearRatio);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aRadiusFirstLink,
+            aRadiusSecondLink,
+            aBevel,
+            aHelicalAngle,
+            aGearRatio);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPair::WriteStep (StepData_StepWriter& SW,
+                                             const Handle(StepKinematics_GearPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of GearPair
+
+  SW.Send (ent->RadiusFirstLink());
+
+  SW.Send (ent->RadiusSecondLink());
+
+  SW.Send (ent->Bevel());
+
+  SW.Send (ent->HelicalAngle());
+
+  SW.Send (ent->GearRatio());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPair::Share (const Handle(StepKinematics_GearPair)& ent,
+                                         Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of GearPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWGearPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWGearPair.hxx
new file mode 100644 (file)
index 0000000..baddc73
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWGearPair_HeaderFile_
+#define _RWStepKinematics_RWGearPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_GearPair;
+
+//! Read & Write tool for GearPair
+class RWStepKinematics_RWGearPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWGearPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_GearPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_GearPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_GearPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWGearPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWGearPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWGearPairValue.cxx
new file mode 100644 (file)
index 0000000..0641f30
--- /dev/null
@@ -0,0 +1,106 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWGearPairValue.hxx>
+#include <StepKinematics_GearPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWGearPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWGearPairValue::RWStepKinematics_RWGearPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                 const Standard_Integer num,
+                                                 Handle(Interface_Check)& ach,
+                                                 const Handle(StepKinematics_GearPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"gear_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of GearPairValue
+
+  Standard_Real aActualRotation1;
+  data->ReadReal (num, 3, "actual_rotation1", ach, aActualRotation1);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualRotation1);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPairValue::WriteStep (StepData_StepWriter& SW,
+                                                  const Handle(StepKinematics_GearPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of GearPairValue
+
+  SW.Send (ent->ActualRotation1());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPairValue::Share (const Handle(StepKinematics_GearPairValue)& ent,
+                                              Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of GearPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWGearPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWGearPairValue.hxx
new file mode 100644 (file)
index 0000000..01ed548
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWGearPairValue_HeaderFile_
+#define _RWStepKinematics_RWGearPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_GearPairValue;
+
+//! Read & Write tool for GearPairValue
+class RWStepKinematics_RWGearPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWGearPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_GearPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_GearPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_GearPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWGearPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWGearPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWGearPairWithRange.cxx
new file mode 100644 (file)
index 0000000..30fe254
--- /dev/null
@@ -0,0 +1,217 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWGearPairWithRange.hxx>
+#include <StepKinematics_GearPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWGearPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWGearPairWithRange::RWStepKinematics_RWGearPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepKinematics_GearPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,13,ach,"gear_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of GearPair
+
+  Standard_Real aGearPair_RadiusFirstLink;
+  data->ReadReal (num, 7, "gear_pair.radius_first_link", ach, aGearPair_RadiusFirstLink);
+
+  Standard_Real aGearPair_RadiusSecondLink;
+  data->ReadReal (num, 8, "gear_pair.radius_second_link", ach, aGearPair_RadiusSecondLink);
+
+  Standard_Real aGearPair_Bevel;
+  data->ReadReal (num, 9, "gear_pair.bevel", ach, aGearPair_Bevel);
+
+  Standard_Real aGearPair_HelicalAngle;
+  data->ReadReal (num, 10, "gear_pair.helical_angle", ach, aGearPair_HelicalAngle);
+
+  Standard_Real aGearPair_GearRatio;
+  data->ReadReal (num, 11, "gear_pair.gear_ratio", ach, aGearPair_GearRatio);
+
+  // Own fields of GearPairWithRange
+
+  Standard_Real aLowerLimitActualRotation1;
+  Standard_Boolean hasLowerLimitActualRotation1 = Standard_True;
+  if ( data->IsParamDefined (num,12) ) {
+    data->ReadReal (num, 12, "lower_limit_actual_rotation1", ach, aLowerLimitActualRotation1);
+  }
+  else {
+    hasLowerLimitActualRotation1 = Standard_False;
+    aLowerLimitActualRotation1 = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotation1;
+  Standard_Boolean hasUpperLimitActualRotation1 = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "upper_limit_actual_rotation1", ach, aUpperLimitActualRotation1);
+  }
+  else {
+    hasUpperLimitActualRotation1 = Standard_False;
+    aUpperLimitActualRotation1 = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aGearPair_RadiusFirstLink,
+            aGearPair_RadiusSecondLink,
+            aGearPair_Bevel,
+            aGearPair_HelicalAngle,
+            aGearPair_GearRatio,
+            hasLowerLimitActualRotation1,
+            aLowerLimitActualRotation1,
+            hasUpperLimitActualRotation1,
+            aUpperLimitActualRotation1);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepKinematics_GearPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of GearPair
+
+  SW.Send (ent->RadiusFirstLink());
+
+  SW.Send (ent->RadiusSecondLink());
+
+  SW.Send (ent->Bevel());
+
+  SW.Send (ent->HelicalAngle());
+
+  SW.Send (ent->GearRatio());
+
+  // Own fields of GearPairWithRange
+
+  if ( ent->HasLowerLimitActualRotation1() ) {
+    SW.Send (ent->LowerLimitActualRotation1());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotation1() ) {
+    SW.Send (ent->UpperLimitActualRotation1());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWGearPairWithRange::Share (const Handle(StepKinematics_GearPairWithRange)& ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of GearPair
+
+  // Own fields of GearPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWGearPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWGearPairWithRange.hxx
new file mode 100644 (file)
index 0000000..62583fa
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWGearPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWGearPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_GearPairWithRange;
+
+//! Read & Write tool for GearPairWithRange
+class RWStepKinematics_RWGearPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWGearPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_GearPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_GearPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_GearPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWGearPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWHomokineticPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWHomokineticPair.cxx
new file mode 100644 (file)
index 0000000..7f3f302
--- /dev/null
@@ -0,0 +1,207 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWHomokineticPair.hxx>
+#include <StepKinematics_HomokineticPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWHomokineticPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWHomokineticPair::RWStepKinematics_RWHomokineticPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWHomokineticPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                   const Standard_Integer num,
+                                                   Handle(Interface_Check)& ach,
+                                                   const Handle(StepKinematics_HomokineticPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,13,ach,"homokinetic_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Inherited fields of UniversalPair
+
+  Standard_Real aUniversalPair_InputSkewAngle;
+  Standard_Boolean hasUniversalPair_InputSkewAngle = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "universal_pair.input_skew_angle", ach, aUniversalPair_InputSkewAngle);
+  }
+  else {
+    hasUniversalPair_InputSkewAngle = Standard_False;
+    aUniversalPair_InputSkewAngle = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasUniversalPair_InputSkewAngle,
+            aUniversalPair_InputSkewAngle);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWHomokineticPair::WriteStep (StepData_StepWriter& SW,
+                                                    const Handle(StepKinematics_HomokineticPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of UniversalPair
+
+  if ( ent->HasInputSkewAngle() ) {
+    SW.Send (ent->InputSkewAngle());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWHomokineticPair::Share (const Handle(StepKinematics_HomokineticPair)& ent,
+                                                Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Inherited fields of UniversalPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWHomokineticPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWHomokineticPair.hxx
new file mode 100644 (file)
index 0000000..f222901
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWHomokineticPair_HeaderFile_
+#define _RWStepKinematics_RWHomokineticPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_HomokineticPair;
+
+//! Read & Write tool for HomokineticPair
+class RWStepKinematics_RWHomokineticPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWHomokineticPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_HomokineticPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_HomokineticPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_HomokineticPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWHomokineticPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicJoint.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicJoint.cxx
new file mode 100644 (file)
index 0000000..c22ad9d
--- /dev/null
@@ -0,0 +1,101 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicJoint.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepShape_Vertex.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicJoint
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicJoint::RWStepKinematics_RWKinematicJoint() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicJoint::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                  const Standard_Integer num,
+                                                  Handle(Interface_Check)& ach,
+                                                  const Handle(StepKinematics_KinematicJoint)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"kinematic_joint") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of Edge
+
+  Handle(StepShape_Vertex) aEdge_EdgeStart;
+  data->ReadEntity (num, 2, "edge.edge_start", ach, STANDARD_TYPE(StepShape_Vertex), aEdge_EdgeStart);
+
+  Handle(StepShape_Vertex) aEdge_EdgeEnd;
+  data->ReadEntity (num, 3, "edge.edge_end", ach, STANDARD_TYPE(StepShape_Vertex), aEdge_EdgeEnd);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aEdge_EdgeStart,
+            aEdge_EdgeEnd);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicJoint::WriteStep (StepData_StepWriter& SW,
+                                                   const Handle(StepKinematics_KinematicJoint)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of Edge
+
+  SW.Send (ent->EdgeStart());
+
+  SW.Send (ent->EdgeEnd());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicJoint::Share (const Handle(StepKinematics_KinematicJoint)& ent,
+                                               Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of Edge
+
+  iter.AddItem (ent->StepShape_Edge::EdgeStart());
+
+  iter.AddItem (ent->StepShape_Edge::EdgeEnd());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicJoint.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicJoint.hxx
new file mode 100644 (file)
index 0000000..27479e3
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicJoint_HeaderFile_
+#define _RWStepKinematics_RWKinematicJoint_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicJoint;
+
+//! Read & Write tool for KinematicJoint
+class RWStepKinematics_RWKinematicJoint
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicJoint();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicJoint)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicJoint)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicJoint)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicJoint_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicLink.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicLink.cxx
new file mode 100644 (file)
index 0000000..d2c7be3
--- /dev/null
@@ -0,0 +1,78 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicLink.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicLink
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicLink::RWStepKinematics_RWKinematicLink() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicLink::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                 const Standard_Integer num,
+                                                 Handle(Interface_Check)& ach,
+                                                 const Handle(StepKinematics_KinematicLink)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,1,ach,"kinematic_link") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicLink::WriteStep (StepData_StepWriter& SW,
+                                                  const Handle(StepKinematics_KinematicLink)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicLink::Share (const Handle(StepKinematics_KinematicLink)& /*ent*/,
+                                              Interface_EntityIterator& /*iter*/) const
+{
+
+  // Inherited fields of RepresentationItem
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicLink.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicLink.hxx
new file mode 100644 (file)
index 0000000..039a4f8
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicLink_HeaderFile_
+#define _RWStepKinematics_RWKinematicLink_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicLink;
+
+//! Read & Write tool for KinematicLink
+class RWStepKinematics_RWKinematicLink
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicLink();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicLink)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicLink)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicLink)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicLink_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicLinkRepresentationAssociation.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicLinkRepresentationAssociation.cxx
new file mode 100644 (file)
index 0000000..19bfe7d
--- /dev/null
@@ -0,0 +1,117 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_Representation.hxx>
+#include <StepRepr_RepresentationOrRepresentationReference.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicLinkRepresentationAssociation
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicLinkRepresentationAssociation::RWStepKinematics_RWKinematicLinkRepresentationAssociation() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicLinkRepresentationAssociation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                          const Standard_Integer num,
+                                                                          Handle(Interface_Check)& ach,
+                                                                          const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"kinematic_link_representation_association") ) return;
+
+  // Inherited fields of RepresentationRelationship
+
+  Handle(TCollection_HAsciiString) aRepresentationRelationship_Name;
+  data->ReadString (num, 1, "representation_relationship.name", ach, aRepresentationRelationship_Name);
+
+  Handle(TCollection_HAsciiString) aRepresentationRelationship_Description;
+  Standard_Boolean hasRepresentationRelationship_Description = Standard_True;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "representation_relationship.description", ach, aRepresentationRelationship_Description);
+  }
+  else {
+    hasRepresentationRelationship_Description = Standard_False;
+    aRepresentationRelationship_Description.Nullify();
+  }
+
+  StepRepr_RepresentationOrRepresentationReference aRepresentationRelationship_Rep1;
+  data->ReadEntity (num, 3, "representation_relationship.rep1", ach, aRepresentationRelationship_Rep1);
+
+  StepRepr_RepresentationOrRepresentationReference aRepresentationRelationship_Rep2;
+  data->ReadEntity (num, 4, "representation_relationship.rep2", ach, aRepresentationRelationship_Rep2);
+
+  // Process only one type (Representaion)
+  if (aRepresentationRelationship_Rep1.CaseNumber() != 1 || aRepresentationRelationship_Rep1.CaseNumber() != 1)
+    return;
+
+  // Initialize entity
+  ent->Init(aRepresentationRelationship_Name,
+            /*hasRepresentationRelationship_Description,*/
+            aRepresentationRelationship_Description,
+            aRepresentationRelationship_Rep1.Representation(),
+            aRepresentationRelationship_Rep2.Representation());
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicLinkRepresentationAssociation::WriteStep (StepData_StepWriter& SW,
+                                                                           const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& ent) const
+{
+
+  // Own fields of RepresentationRelationship
+
+  SW.Send (ent->Name());
+
+  if ( ent->HasDescription() ) {
+    SW.Send (ent->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->Rep1());
+
+  SW.Send (ent->Rep2());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicLinkRepresentationAssociation::Share (const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& ent,
+                                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationRelationship
+
+  iter.AddItem (ent->StepRepr_RepresentationRelationship::Rep1());
+
+  iter.AddItem (ent->StepRepr_RepresentationRelationship::Rep2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicLinkRepresentationAssociation.hxx
new file mode 100644 (file)
index 0000000..125c2d9
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicLinkRepresentationAssociation_HeaderFile_
+#define _RWStepKinematics_RWKinematicLinkRepresentationAssociation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicLinkRepresentationAssociation;
+
+//! Read & Write tool for KinematicLinkRepresentationAssociation
+class RWStepKinematics_RWKinematicLinkRepresentationAssociation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicLinkRepresentationAssociation();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicLinkRepresentationAssociation_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicPropertyMechanismRepresentation.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicPropertyMechanismRepresentation.cxx
new file mode 100644 (file)
index 0000000..73b033a
--- /dev/null
@@ -0,0 +1,104 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx>
+#include <StepKinematics_KinematicPropertyMechanismRepresentation.hxx>
+#include <StepRepr_RepresentedDefinition.hxx>
+#include <StepRepr_Representation.hxx>
+#include <StepKinematics_KinematicLinkRepresentation.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicPropertyMechanismRepresentation
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicPropertyMechanismRepresentation::RWStepKinematics_RWKinematicPropertyMechanismRepresentation() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicPropertyMechanismRepresentation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                            const Standard_Integer num,
+                                                                            Handle(Interface_Check)& ach,
+                                                                            const Handle(StepKinematics_KinematicPropertyMechanismRepresentation)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"kinematic_property_mechanism_representation") ) return;
+
+  // Inherited fields of PropertyDefinitionRepresentation
+
+  StepRepr_RepresentedDefinition aPropertyDefinitionRepresentation_Definition;
+  data->ReadEntity (num, 1, "property_definition_representation.definition", ach, aPropertyDefinitionRepresentation_Definition);
+
+  Handle(StepRepr_Representation) aPropertyDefinitionRepresentation_UsedRepresentation;
+  data->ReadEntity (num, 2, "property_definition_representation.used_representation", ach, STANDARD_TYPE(StepRepr_Representation), aPropertyDefinitionRepresentation_UsedRepresentation);
+
+  // Own fields of KinematicPropertyMechanismRepresentation
+
+  Handle(StepKinematics_KinematicLinkRepresentation) aBase;
+  data->ReadEntity (num, 3, "base", ach, STANDARD_TYPE(StepKinematics_KinematicLinkRepresentation), aBase);
+
+  // Initialize entity
+  ent->Init(aPropertyDefinitionRepresentation_Definition,
+            aPropertyDefinitionRepresentation_UsedRepresentation,
+            aBase);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicPropertyMechanismRepresentation::WriteStep (StepData_StepWriter& SW,
+                                                                             const Handle(StepKinematics_KinematicPropertyMechanismRepresentation)& ent) const
+{
+
+  // Own fields of PropertyDefinitionRepresentation
+
+  SW.Send (ent->Definition().Value());
+
+  SW.Send (ent->UsedRepresentation());
+
+  // Own fields of KinematicPropertyMechanismRepresentation
+
+  SW.Send (ent->Base());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicPropertyMechanismRepresentation::Share (const Handle(StepKinematics_KinematicPropertyMechanismRepresentation)& ent,
+                                                                         Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of PropertyDefinitionRepresentation
+
+  iter.AddItem (ent->StepRepr_PropertyDefinitionRepresentation::Definition().Value());
+
+  iter.AddItem (ent->StepRepr_PropertyDefinitionRepresentation::UsedRepresentation());
+
+  // Own fields of KinematicPropertyMechanismRepresentation
+
+  iter.AddItem (ent->Base());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicPropertyMechanismRepresentation.hxx
new file mode 100644 (file)
index 0000000..680ae39
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicPropertyMechanismRepresentation_HeaderFile_
+#define _RWStepKinematics_RWKinematicPropertyMechanismRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicPropertyMechanismRepresentation;
+
+//! Read & Write tool for KinematicPropertyMechanismRepresentation
+class RWStepKinematics_RWKinematicPropertyMechanismRepresentation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicPropertyMechanismRepresentation();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicPropertyMechanismRepresentation)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicPropertyMechanismRepresentation)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicPropertyMechanismRepresentation)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicPropertyMechanismRepresentation_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyDirectedStructure.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyDirectedStructure.cxx
new file mode 100644 (file)
index 0000000..17e8770
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx>
+#include <StepKinematics_KinematicTopologyDirectedStructure.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicTopologyDirectedStructure
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicTopologyDirectedStructure::RWStepKinematics_RWKinematicTopologyDirectedStructure() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyDirectedStructure::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                      const Standard_Integer num,
+                                                                      Handle(Interface_Check)& ach,
+                                                                      const Handle(StepKinematics_KinematicTopologyDirectedStructure)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"kinematic_topology_directed_structure") ) return;
+
+  // Inherited fields of Representation
+
+  Handle(TCollection_HAsciiString) aRepresentation_Name;
+  data->ReadString (num, 1, "representation.name", ach, aRepresentation_Name);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) aRepresentation_Items;
+  Standard_Integer sub2 = 0;
+  if ( data->ReadSubList (num, 2, "representation.items", ach, sub2) ) {
+    Standard_Integer nb0 = data->NbParams(sub2);
+    aRepresentation_Items = new StepRepr_HArray1OfRepresentationItem (1, nb0);
+    Standard_Integer num2 = sub2;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      Handle(StepRepr_RepresentationItem) anIt0;
+      data->ReadEntity (num2, i0, "representation_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anIt0);
+      aRepresentation_Items->SetValue(i0, anIt0);
+    }
+  }
+
+  Handle(StepRepr_RepresentationContext) aRepresentation_ContextOfItems;
+  data->ReadEntity (num, 3, "representation.context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContext), aRepresentation_ContextOfItems);
+
+  // Own fields of KinematicTopologyDirectedStructure
+
+  Handle(StepKinematics_KinematicTopologyStructure) aParent;
+  data->ReadEntity (num, 4, "parent", ach, STANDARD_TYPE(StepKinematics_KinematicTopologyStructure), aParent);
+
+  // Initialize entity
+  ent->Init(aRepresentation_Name,
+            aRepresentation_Items,
+            aRepresentation_ContextOfItems,
+            aParent);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyDirectedStructure::WriteStep (StepData_StepWriter& SW,
+                                                                       const Handle(StepKinematics_KinematicTopologyDirectedStructure)& ent) const
+{
+
+  // Own fields of Representation
+
+  SW.Send (ent->Name());
+
+  SW.OpenSub();
+  for (Standard_Integer i1=1; i1 <= ent->Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->Items()->Value(i1);
+    SW.Send (Var0);
+  }
+  SW.CloseSub();
+
+  SW.Send (ent->ContextOfItems());
+
+  // Own fields of KinematicTopologyDirectedStructure
+
+  SW.Send (ent->Parent());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyDirectedStructure::Share (const Handle(StepKinematics_KinematicTopologyDirectedStructure)& ent,
+                                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of Representation
+
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
+    iter.AddItem (Var0);
+  }
+
+  iter.AddItem (ent->StepRepr_Representation::ContextOfItems());
+
+  // Own fields of KinematicTopologyDirectedStructure
+
+  iter.AddItem (ent->Parent());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyDirectedStructure.hxx
new file mode 100644 (file)
index 0000000..69754dc
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicTopologyDirectedStructure_HeaderFile_
+#define _RWStepKinematics_RWKinematicTopologyDirectedStructure_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicTopologyDirectedStructure;
+
+//! Read & Write tool for KinematicTopologyDirectedStructure
+class RWStepKinematics_RWKinematicTopologyDirectedStructure
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicTopologyDirectedStructure();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicTopologyDirectedStructure)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicTopologyDirectedStructure)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicTopologyDirectedStructure)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicTopologyDirectedStructure_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyNetworkStructure.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyNetworkStructure.cxx
new file mode 100644 (file)
index 0000000..4277216
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx>
+#include <StepKinematics_KinematicTopologyNetworkStructure.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicTopologyNetworkStructure
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicTopologyNetworkStructure::RWStepKinematics_RWKinematicTopologyNetworkStructure() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyNetworkStructure::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                     const Standard_Integer num,
+                                                                     Handle(Interface_Check)& ach,
+                                                                     const Handle(StepKinematics_KinematicTopologyNetworkStructure)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"kinematic_topology_network_structure") ) return;
+
+  // Inherited fields of Representation
+
+  Handle(TCollection_HAsciiString) aRepresentation_Name;
+  data->ReadString (num, 1, "representation.name", ach, aRepresentation_Name);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) aRepresentation_Items;
+  Standard_Integer sub2 = 0;
+  if ( data->ReadSubList (num, 2, "representation.items", ach, sub2) ) {
+    Standard_Integer nb0 = data->NbParams(sub2);
+    aRepresentation_Items = new StepRepr_HArray1OfRepresentationItem (1, nb0);
+    Standard_Integer num2 = sub2;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      Handle(StepRepr_RepresentationItem) anIt0;
+      data->ReadEntity (num2, i0, "representation_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anIt0);
+      aRepresentation_Items->SetValue(i0, anIt0);
+    }
+  }
+
+  Handle(StepRepr_RepresentationContext) aRepresentation_ContextOfItems;
+  data->ReadEntity (num, 3, "representation.context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContext), aRepresentation_ContextOfItems);
+
+  // Own fields of KinematicTopologyNetworkStructure
+
+  Handle(StepKinematics_KinematicTopologyStructure) aParent;
+  data->ReadEntity (num, 4, "parent", ach, STANDARD_TYPE(StepKinematics_KinematicTopologyStructure), aParent);
+
+  // Initialize entity
+  ent->Init(aRepresentation_Name,
+            aRepresentation_Items,
+            aRepresentation_ContextOfItems,
+            aParent);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyNetworkStructure::WriteStep (StepData_StepWriter& SW,
+                                                                      const Handle(StepKinematics_KinematicTopologyNetworkStructure)& ent) const
+{
+
+  // Own fields of Representation
+
+  SW.Send (ent->Name());
+
+  SW.OpenSub();
+  for (Standard_Integer i1=1; i1 <= ent->Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->Items()->Value(i1);
+    SW.Send (Var0);
+  }
+  SW.CloseSub();
+
+  SW.Send (ent->ContextOfItems());
+
+  // Own fields of KinematicTopologyNetworkStructure
+
+  SW.Send (ent->Parent());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyNetworkStructure::Share (const Handle(StepKinematics_KinematicTopologyNetworkStructure)& ent,
+                                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of Representation
+
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
+    iter.AddItem (Var0);
+  }
+
+  iter.AddItem (ent->StepRepr_Representation::ContextOfItems());
+
+  // Own fields of KinematicTopologyNetworkStructure
+
+  iter.AddItem (ent->Parent());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyNetworkStructure.hxx
new file mode 100644 (file)
index 0000000..609858d
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicTopologyNetworkStructure_HeaderFile_
+#define _RWStepKinematics_RWKinematicTopologyNetworkStructure_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicTopologyNetworkStructure;
+
+//! Read & Write tool for KinematicTopologyNetworkStructure
+class RWStepKinematics_RWKinematicTopologyNetworkStructure
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicTopologyNetworkStructure();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicTopologyNetworkStructure)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicTopologyNetworkStructure)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicTopologyNetworkStructure)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicTopologyNetworkStructure_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyStructure.cxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyStructure.cxx
new file mode 100644 (file)
index 0000000..cf63442
--- /dev/null
@@ -0,0 +1,115 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWKinematicTopologyStructure.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWKinematicTopologyStructure
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWKinematicTopologyStructure::RWStepKinematics_RWKinematicTopologyStructure() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyStructure::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                              const Standard_Integer num,
+                                                              Handle(Interface_Check)& ach,
+                                                              const Handle(StepKinematics_KinematicTopologyStructure)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"kinematic_topology_structure") ) return;
+
+  // Inherited fields of Representation
+
+  Handle(TCollection_HAsciiString) aRepresentation_Name;
+  data->ReadString (num, 1, "representation.name", ach, aRepresentation_Name);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) aRepresentation_Items;
+  Standard_Integer sub2 = 0;
+  if ( data->ReadSubList (num, 2, "representation.items", ach, sub2) ) {
+    Standard_Integer nb0 = data->NbParams(sub2);
+    aRepresentation_Items = new StepRepr_HArray1OfRepresentationItem (1, nb0);
+    Standard_Integer num2 = sub2;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      Handle(StepRepr_RepresentationItem) anIt0;
+      data->ReadEntity (num2, i0, "representation_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anIt0);
+      aRepresentation_Items->SetValue(i0, anIt0);
+    }
+  }
+
+  Handle(StepRepr_RepresentationContext) aRepresentation_ContextOfItems;
+  data->ReadEntity (num, 3, "representation.context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContext), aRepresentation_ContextOfItems);
+
+  // Initialize entity
+  ent->Init(aRepresentation_Name,
+            aRepresentation_Items,
+            aRepresentation_ContextOfItems);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyStructure::WriteStep (StepData_StepWriter& SW,
+                                                               const Handle(StepKinematics_KinematicTopologyStructure)& ent) const
+{
+
+  // Own fields of Representation
+
+  SW.Send (ent->Name());
+
+  SW.OpenSub();
+  for (Standard_Integer i1=1; i1 <= ent->Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->Items()->Value(i1);
+    SW.Send (Var0);
+  }
+  SW.CloseSub();
+
+  SW.Send (ent->ContextOfItems());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWKinematicTopologyStructure::Share (const Handle(StepKinematics_KinematicTopologyStructure)& ent,
+                                                           Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of Representation
+
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
+    iter.AddItem (Var0);
+  }
+
+  iter.AddItem (ent->StepRepr_Representation::ContextOfItems());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyStructure.hxx b/src/RWStepKinematics/RWStepKinematics_RWKinematicTopologyStructure.hxx
new file mode 100644 (file)
index 0000000..a391361
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWKinematicTopologyStructure_HeaderFile_
+#define _RWStepKinematics_RWKinematicTopologyStructure_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_KinematicTopologyStructure;
+
+//! Read & Write tool for KinematicTopologyStructure
+class RWStepKinematics_RWKinematicTopologyStructure
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWKinematicTopologyStructure();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_KinematicTopologyStructure)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_KinematicTopologyStructure)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_KinematicTopologyStructure)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWKinematicTopologyStructure_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPinionPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPinionPair.cxx
new file mode 100644 (file)
index 0000000..a40089d
--- /dev/null
@@ -0,0 +1,153 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx>
+#include <StepKinematics_LinearFlexibleAndPinionPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWLinearFlexibleAndPinionPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWLinearFlexibleAndPinionPair::RWStepKinematics_RWLinearFlexibleAndPinionPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleAndPinionPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                               const Standard_Integer num,
+                                                               Handle(Interface_Check)& ach,
+                                                               const Handle(StepKinematics_LinearFlexibleAndPinionPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,7,ach,"linear_flexible_and_pinion_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of LinearFlexibleAndPinionPair
+
+  Standard_Real aPinionRadius;
+  data->ReadReal (num, 7, "pinion_radius", ach, aPinionRadius);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPinionRadius);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleAndPinionPair::WriteStep (StepData_StepWriter& SW,
+                                                                const Handle(StepKinematics_LinearFlexibleAndPinionPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LinearFlexibleAndPinionPair
+
+  SW.Send (ent->PinionRadius());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleAndPinionPair::Share (const Handle(StepKinematics_LinearFlexibleAndPinionPair)& ent,
+                                                            Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of LinearFlexibleAndPinionPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPinionPair.hxx
new file mode 100644 (file)
index 0000000..d7fefd6
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWLinearFlexibleAndPinionPair_HeaderFile_
+#define _RWStepKinematics_RWLinearFlexibleAndPinionPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_LinearFlexibleAndPinionPair;
+
+//! Read & Write tool for LinearFlexibleAndPinionPair
+class RWStepKinematics_RWLinearFlexibleAndPinionPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWLinearFlexibleAndPinionPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_LinearFlexibleAndPinionPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_LinearFlexibleAndPinionPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_LinearFlexibleAndPinionPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWLinearFlexibleAndPinionPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.cxx
new file mode 100644 (file)
index 0000000..0cba842
--- /dev/null
@@ -0,0 +1,162 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx>
+#include <StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair::RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                    const Standard_Integer num,
+                                                                    Handle(Interface_Check)& ach,
+                                                                    const Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,8,ach,"linear_flexible_and_planar_curve_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of LinearFlexibleAndPlanarCurvePair
+
+  Handle(StepGeom_Curve) aPairCurve;
+  data->ReadEntity (num, 7, "pair_curve", ach, STANDARD_TYPE(StepGeom_Curve), aPairCurve);
+
+  Standard_Boolean aOrientation;
+  data->ReadBoolean (num, 8, "orientation", ach, aOrientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPairCurve,
+            aOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair::WriteStep (StepData_StepWriter& SW,
+                                                                     const Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LinearFlexibleAndPlanarCurvePair
+
+  SW.Send (ent->PairCurve());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair::Share (const Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)& ent,
+                                                                 Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of LinearFlexibleAndPlanarCurvePair
+
+  iter.AddItem (ent->PairCurve());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair.hxx
new file mode 100644 (file)
index 0000000..9dbad14
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair_HeaderFile_
+#define _RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_LinearFlexibleAndPlanarCurvePair;
+
+//! Read & Write tool for LinearFlexibleAndPlanarCurvePair
+class RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWLinearFlexibleAndPlanarCurvePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleLinkRepresentation.cxx b/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..4d041dc
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx>
+#include <StepKinematics_LinearFlexibleLinkRepresentation.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWLinearFlexibleLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWLinearFlexibleLinkRepresentation::RWStepKinematics_RWLinearFlexibleLinkRepresentation() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleLinkRepresentation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                    const Standard_Integer num,
+                                                                    Handle(Interface_Check)& ach,
+                                                                    const Handle(StepKinematics_LinearFlexibleLinkRepresentation)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"linear_flexible_link_representation") ) return;
+
+  // Inherited fields of Representation
+
+  Handle(TCollection_HAsciiString) aRepresentation_Name;
+  data->ReadString (num, 1, "representation.name", ach, aRepresentation_Name);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) aRepresentation_Items;
+  Standard_Integer sub2 = 0;
+  if ( data->ReadSubList (num, 2, "representation.items", ach, sub2) ) {
+    Standard_Integer nb0 = data->NbParams(sub2);
+    aRepresentation_Items = new StepRepr_HArray1OfRepresentationItem (1, nb0);
+    Standard_Integer num2 = sub2;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      Handle(StepRepr_RepresentationItem) anIt0;
+      data->ReadEntity (num2, i0, "representation_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anIt0);
+      aRepresentation_Items->SetValue(i0, anIt0);
+    }
+  }
+
+  Handle(StepRepr_RepresentationContext) aRepresentation_ContextOfItems;
+  data->ReadEntity (num, 3, "representation.context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContext), aRepresentation_ContextOfItems);
+
+  // Inherited fields of KinematicLinkRepresentation
+
+  Handle(StepKinematics_KinematicLink) aKinematicLinkRepresentation_RepresentedLink;
+  data->ReadEntity (num, 4, "kinematic_link_representation.represented_link", ach, STANDARD_TYPE(StepKinematics_KinematicLink), aKinematicLinkRepresentation_RepresentedLink);
+
+  // Initialize entity
+  ent->Init(aRepresentation_Name,
+            aRepresentation_Items,
+            aRepresentation_ContextOfItems,
+            aKinematicLinkRepresentation_RepresentedLink);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleLinkRepresentation::WriteStep (StepData_StepWriter& SW,
+                                                                     const Handle(StepKinematics_LinearFlexibleLinkRepresentation)& ent) const
+{
+
+  // Own fields of Representation
+
+  SW.Send (ent->Name());
+
+  SW.OpenSub();
+  for (Standard_Integer i1=1; i1 <= ent->Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->Items()->Value(i1);
+    SW.Send (Var0);
+  }
+  SW.CloseSub();
+
+  SW.Send (ent->ContextOfItems());
+
+  // Own fields of KinematicLinkRepresentation
+
+  SW.Send (ent->RepresentedLink());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLinearFlexibleLinkRepresentation::Share (const Handle(StepKinematics_LinearFlexibleLinkRepresentation)& ent,
+                                                                 Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of Representation
+
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
+    iter.AddItem (Var0);
+  }
+
+  iter.AddItem (ent->StepRepr_Representation::ContextOfItems());
+
+  // Inherited fields of KinematicLinkRepresentation
+
+  iter.AddItem (ent->StepKinematics_KinematicLinkRepresentation::RepresentedLink());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx b/src/RWStepKinematics/RWStepKinematics_RWLinearFlexibleLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..10ab92c
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWLinearFlexibleLinkRepresentation_HeaderFile_
+#define _RWStepKinematics_RWLinearFlexibleLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_LinearFlexibleLinkRepresentation;
+
+//! Read & Write tool for LinearFlexibleLinkRepresentation
+class RWStepKinematics_RWLinearFlexibleLinkRepresentation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWLinearFlexibleLinkRepresentation();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_LinearFlexibleLinkRepresentation)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_LinearFlexibleLinkRepresentation)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_LinearFlexibleLinkRepresentation)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWLinearFlexibleLinkRepresentation_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPair.cxx
new file mode 100644 (file)
index 0000000..3b94a24
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPair.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWLowOrderKinematicPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWLowOrderKinematicPair::RWStepKinematics_RWLowOrderKinematicPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                         const Standard_Integer num,
+                                                         Handle(Interface_Check)& ach,
+                                                         const Handle(StepKinematics_LowOrderKinematicPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"low_order_kinematic_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of LowOrderKinematicPair
+
+  Standard_Boolean aTX;
+  data->ReadBoolean (num, 7, "t_x", ach, aTX);
+
+  Standard_Boolean aTY;
+  data->ReadBoolean (num, 8, "t_y", ach, aTY);
+
+  Standard_Boolean aTZ;
+  data->ReadBoolean (num, 9, "t_z", ach, aTZ);
+
+  Standard_Boolean aRX;
+  data->ReadBoolean (num, 10, "r_x", ach, aRX);
+
+  Standard_Boolean aRY;
+  data->ReadBoolean (num, 11, "r_y", ach, aRY);
+
+  Standard_Boolean aRZ;
+  data->ReadBoolean (num, 12, "r_z", ach, aRZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aTX,
+            aTY,
+            aTZ,
+            aRX,
+            aRY,
+            aRZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPair::WriteStep (StepData_StepWriter& SW,
+                                                          const Handle(StepKinematics_LowOrderKinematicPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPair::Share (const Handle(StepKinematics_LowOrderKinematicPair)& ent,
+                                                      Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPair.hxx
new file mode 100644 (file)
index 0000000..63dc5c0
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWLowOrderKinematicPair_HeaderFile_
+#define _RWStepKinematics_RWLowOrderKinematicPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_LowOrderKinematicPair;
+
+//! Read & Write tool for LowOrderKinematicPair
+class RWStepKinematics_RWLowOrderKinematicPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWLowOrderKinematicPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_LowOrderKinematicPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_LowOrderKinematicPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_LowOrderKinematicPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWLowOrderKinematicPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairValue.cxx
new file mode 100644 (file)
index 0000000..b513c96
--- /dev/null
@@ -0,0 +1,136 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPairValue.hxx>
+#include <StepKinematics_LowOrderKinematicPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWLowOrderKinematicPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWLowOrderKinematicPairValue::RWStepKinematics_RWLowOrderKinematicPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                              const Standard_Integer num,
+                                                              Handle(Interface_Check)& ach,
+                                                              const Handle(StepKinematics_LowOrderKinematicPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,8,ach,"low_order_kinematic_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of LowOrderKinematicPairValue
+
+  Standard_Real aActualTranslationX;
+  data->ReadReal (num, 3, "actual_translation_x", ach, aActualTranslationX);
+
+  Standard_Real aActualTranslationY;
+  data->ReadReal (num, 4, "actual_translation_y", ach, aActualTranslationY);
+
+  Standard_Real aActualTranslationZ;
+  data->ReadReal (num, 5, "actual_translation_z", ach, aActualTranslationZ);
+
+  Standard_Real aActualRotationX;
+  data->ReadReal (num, 6, "actual_rotation_x", ach, aActualRotationX);
+
+  Standard_Real aActualRotationY;
+  data->ReadReal (num, 7, "actual_rotation_y", ach, aActualRotationY);
+
+  Standard_Real aActualRotationZ;
+  data->ReadReal (num, 8, "actual_rotation_z", ach, aActualRotationZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualTranslationX,
+            aActualTranslationY,
+            aActualTranslationZ,
+            aActualRotationX,
+            aActualRotationY,
+            aActualRotationZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPairValue::WriteStep (StepData_StepWriter& SW,
+                                                               const Handle(StepKinematics_LowOrderKinematicPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of LowOrderKinematicPairValue
+
+  SW.Send (ent->ActualTranslationX());
+
+  SW.Send (ent->ActualTranslationY());
+
+  SW.Send (ent->ActualTranslationZ());
+
+  SW.Send (ent->ActualRotationX());
+
+  SW.Send (ent->ActualRotationY());
+
+  SW.Send (ent->ActualRotationZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPairValue::Share (const Handle(StepKinematics_LowOrderKinematicPairValue)& ent,
+                                                           Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of LowOrderKinematicPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairValue.hxx
new file mode 100644 (file)
index 0000000..ede6439
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWLowOrderKinematicPairValue_HeaderFile_
+#define _RWStepKinematics_RWLowOrderKinematicPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_LowOrderKinematicPairValue;
+
+//! Read & Write tool for LowOrderKinematicPairValue
+class RWStepKinematics_RWLowOrderKinematicPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWLowOrderKinematicPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_LowOrderKinematicPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_LowOrderKinematicPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_LowOrderKinematicPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWLowOrderKinematicPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairWithRange.cxx
new file mode 100644 (file)
index 0000000..2fbb4c2
--- /dev/null
@@ -0,0 +1,394 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWLowOrderKinematicPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWLowOrderKinematicPairWithRange::RWStepKinematics_RWLowOrderKinematicPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                  const Standard_Integer num,
+                                                                  Handle(Interface_Check)& ach,
+                                                                  const Handle(StepKinematics_LowOrderKinematicPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,24,ach,"low_order_kinematic_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of LowOrderKinematicPairWithRange
+
+  Standard_Real aLowerLimitActualRotationX;
+  Standard_Boolean hasLowerLimitActualRotationX = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_actual_rotation_x", ach, aLowerLimitActualRotationX);
+  }
+  else {
+    hasLowerLimitActualRotationX = Standard_False;
+    aLowerLimitActualRotationX = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotationX;
+  Standard_Boolean hasUpperLimitActualRotationX = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_actual_rotation_x", ach, aUpperLimitActualRotationX);
+  }
+  else {
+    hasUpperLimitActualRotationX = Standard_False;
+    aUpperLimitActualRotationX = 0;
+  }
+
+  Standard_Real aLowerLimitActualRotationY;
+  Standard_Boolean hasLowerLimitActualRotationY = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "lower_limit_actual_rotation_y", ach, aLowerLimitActualRotationY);
+  }
+  else {
+    hasLowerLimitActualRotationY = Standard_False;
+    aLowerLimitActualRotationY = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotationY;
+  Standard_Boolean hasUpperLimitActualRotationY = Standard_True;
+  if ( data->IsParamDefined (num,16) ) {
+    data->ReadReal (num, 16, "upper_limit_actual_rotation_y", ach, aUpperLimitActualRotationY);
+  }
+  else {
+    hasUpperLimitActualRotationY = Standard_False;
+    aUpperLimitActualRotationY = 0;
+  }
+
+  Standard_Real aLowerLimitActualRotationZ;
+  Standard_Boolean hasLowerLimitActualRotationZ = Standard_True;
+  if ( data->IsParamDefined (num,17) ) {
+    data->ReadReal (num, 17, "lower_limit_actual_rotation_z", ach, aLowerLimitActualRotationZ);
+  }
+  else {
+    hasLowerLimitActualRotationZ = Standard_False;
+    aLowerLimitActualRotationZ = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotationZ;
+  Standard_Boolean hasUpperLimitActualRotationZ = Standard_True;
+  if ( data->IsParamDefined (num,18) ) {
+    data->ReadReal (num, 18, "upper_limit_actual_rotation_z", ach, aUpperLimitActualRotationZ);
+  }
+  else {
+    hasUpperLimitActualRotationZ = Standard_False;
+    aUpperLimitActualRotationZ = 0;
+  }
+
+  Standard_Real aLowerLimitActualTranslationX;
+  Standard_Boolean hasLowerLimitActualTranslationX = Standard_True;
+  if ( data->IsParamDefined (num,19) ) {
+    data->ReadReal (num, 19, "lower_limit_actual_translation_x", ach, aLowerLimitActualTranslationX);
+  }
+  else {
+    hasLowerLimitActualTranslationX = Standard_False;
+    aLowerLimitActualTranslationX = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslationX;
+  Standard_Boolean hasUpperLimitActualTranslationX = Standard_True;
+  if ( data->IsParamDefined (num,20) ) {
+    data->ReadReal (num, 20, "upper_limit_actual_translation_x", ach, aUpperLimitActualTranslationX);
+  }
+  else {
+    hasUpperLimitActualTranslationX = Standard_False;
+    aUpperLimitActualTranslationX = 0;
+  }
+
+  Standard_Real aLowerLimitActualTranslationY;
+  Standard_Boolean hasLowerLimitActualTranslationY = Standard_True;
+  if ( data->IsParamDefined (num,21) ) {
+    data->ReadReal (num, 21, "lower_limit_actual_translation_y", ach, aLowerLimitActualTranslationY);
+  }
+  else {
+    hasLowerLimitActualTranslationY = Standard_False;
+    aLowerLimitActualTranslationY = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslationY;
+  Standard_Boolean hasUpperLimitActualTranslationY = Standard_True;
+  if ( data->IsParamDefined (num,22) ) {
+    data->ReadReal (num, 22, "upper_limit_actual_translation_y", ach, aUpperLimitActualTranslationY);
+  }
+  else {
+    hasUpperLimitActualTranslationY = Standard_False;
+    aUpperLimitActualTranslationY = 0;
+  }
+
+  Standard_Real aLowerLimitActualTranslationZ;
+  Standard_Boolean hasLowerLimitActualTranslationZ = Standard_True;
+  if ( data->IsParamDefined (num,23) ) {
+    data->ReadReal (num, 23, "lower_limit_actual_translation_z", ach, aLowerLimitActualTranslationZ);
+  }
+  else {
+    hasLowerLimitActualTranslationZ = Standard_False;
+    aLowerLimitActualTranslationZ = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslationZ;
+  Standard_Boolean hasUpperLimitActualTranslationZ = Standard_True;
+  if ( data->IsParamDefined (num,24) ) {
+    data->ReadReal (num, 24, "upper_limit_actual_translation_z", ach, aUpperLimitActualTranslationZ);
+  }
+  else {
+    hasUpperLimitActualTranslationZ = Standard_False;
+    aUpperLimitActualTranslationZ = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualRotationX,
+            aLowerLimitActualRotationX,
+            hasUpperLimitActualRotationX,
+            aUpperLimitActualRotationX,
+            hasLowerLimitActualRotationY,
+            aLowerLimitActualRotationY,
+            hasUpperLimitActualRotationY,
+            aUpperLimitActualRotationY,
+            hasLowerLimitActualRotationZ,
+            aLowerLimitActualRotationZ,
+            hasUpperLimitActualRotationZ,
+            aUpperLimitActualRotationZ,
+            hasLowerLimitActualTranslationX,
+            aLowerLimitActualTranslationX,
+            hasUpperLimitActualTranslationX,
+            aUpperLimitActualTranslationX,
+            hasLowerLimitActualTranslationY,
+            aLowerLimitActualTranslationY,
+            hasUpperLimitActualTranslationY,
+            aUpperLimitActualTranslationY,
+            hasLowerLimitActualTranslationZ,
+            aLowerLimitActualTranslationZ,
+            hasUpperLimitActualTranslationZ,
+            aUpperLimitActualTranslationZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                                   const Handle(StepKinematics_LowOrderKinematicPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of LowOrderKinematicPairWithRange
+
+  if ( ent->HasLowerLimitActualRotationX() ) {
+    SW.Send (ent->LowerLimitActualRotationX());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotationX() ) {
+    SW.Send (ent->UpperLimitActualRotationX());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualRotationY() ) {
+    SW.Send (ent->LowerLimitActualRotationY());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotationY() ) {
+    SW.Send (ent->UpperLimitActualRotationY());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualRotationZ() ) {
+    SW.Send (ent->LowerLimitActualRotationZ());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotationZ() ) {
+    SW.Send (ent->UpperLimitActualRotationZ());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualTranslationX() ) {
+    SW.Send (ent->LowerLimitActualTranslationX());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslationX() ) {
+    SW.Send (ent->UpperLimitActualTranslationX());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualTranslationY() ) {
+    SW.Send (ent->LowerLimitActualTranslationY());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslationY() ) {
+    SW.Send (ent->UpperLimitActualTranslationY());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualTranslationZ() ) {
+    SW.Send (ent->LowerLimitActualTranslationZ());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslationZ() ) {
+    SW.Send (ent->UpperLimitActualTranslationZ());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWLowOrderKinematicPairWithRange::Share (const Handle(StepKinematics_LowOrderKinematicPairWithRange)& ent,
+                                                               Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of LowOrderKinematicPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWLowOrderKinematicPairWithRange.hxx
new file mode 100644 (file)
index 0000000..adf572d
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWLowOrderKinematicPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWLowOrderKinematicPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_LowOrderKinematicPairWithRange;
+
+//! Read & Write tool for LowOrderKinematicPairWithRange
+class RWStepKinematics_RWLowOrderKinematicPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWLowOrderKinematicPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_LowOrderKinematicPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_LowOrderKinematicPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_LowOrderKinematicPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWLowOrderKinematicPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWMechanismRepresentation.cxx b/src/RWStepKinematics/RWStepKinematics_RWMechanismRepresentation.cxx
new file mode 100644 (file)
index 0000000..6b32b8b
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWMechanismRepresentation.hxx>
+#include <StepKinematics_MechanismRepresentation.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicTopologyRepresentationSelect.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWMechanismRepresentation
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWMechanismRepresentation::RWStepKinematics_RWMechanismRepresentation() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWMechanismRepresentation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                           const Standard_Integer num,
+                                                           Handle(Interface_Check)& ach,
+                                                           const Handle(StepKinematics_MechanismRepresentation)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"mechanism_representation") ) return;
+
+  // Inherited fields of Representation
+
+  Handle(TCollection_HAsciiString) aRepresentation_Name;
+  data->ReadString (num, 1, "representation.name", ach, aRepresentation_Name);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) aRepresentation_Items;
+  Standard_Integer sub2 = 0;
+  if ( data->ReadSubList (num, 2, "representation.items", ach, sub2) ) {
+    Standard_Integer nb0 = data->NbParams(sub2);
+    aRepresentation_Items = new StepRepr_HArray1OfRepresentationItem (1, nb0);
+    Standard_Integer num2 = sub2;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      Handle(StepRepr_RepresentationItem) anIt0;
+      data->ReadEntity (num2, i0, "representation_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anIt0);
+      aRepresentation_Items->SetValue(i0, anIt0);
+    }
+  }
+
+  Handle(StepRepr_RepresentationContext) aRepresentation_ContextOfItems;
+  data->ReadEntity (num, 3, "representation.context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContext), aRepresentation_ContextOfItems);
+
+  // Own fields of MechanismRepresentation
+
+  StepKinematics_KinematicTopologyRepresentationSelect aRepresentedTopology;
+  data->ReadEntity (num, 4, "represented_topology", ach, aRepresentedTopology);
+
+  // Initialize entity
+  ent->Init(aRepresentation_Name,
+            aRepresentation_Items,
+            aRepresentation_ContextOfItems,
+            aRepresentedTopology);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWMechanismRepresentation::WriteStep (StepData_StepWriter& SW,
+                                                            const Handle(StepKinematics_MechanismRepresentation)& ent) const
+{
+
+  // Own fields of Representation
+
+  SW.Send (ent->Name());
+
+  SW.OpenSub();
+  for (Standard_Integer i1=1; i1 <= ent->Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->Items()->Value(i1);
+    SW.Send (Var0);
+  }
+  SW.CloseSub();
+
+  SW.Send (ent->ContextOfItems());
+
+  // Own fields of MechanismRepresentation
+
+  SW.Send (ent->RepresentedTopology().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWMechanismRepresentation::Share (const Handle(StepKinematics_MechanismRepresentation)& ent,
+                                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of Representation
+
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
+    iter.AddItem (Var0);
+  }
+
+  iter.AddItem (ent->StepRepr_Representation::ContextOfItems());
+
+  // Own fields of MechanismRepresentation
+
+  iter.AddItem (ent->RepresentedTopology().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWMechanismRepresentation.hxx b/src/RWStepKinematics/RWStepKinematics_RWMechanismRepresentation.hxx
new file mode 100644 (file)
index 0000000..35eff25
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWMechanismRepresentation_HeaderFile_
+#define _RWStepKinematics_RWMechanismRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_MechanismRepresentation;
+
+//! Read & Write tool for MechanismRepresentation
+class RWStepKinematics_RWMechanismRepresentation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWMechanismRepresentation();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_MechanismRepresentation)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_MechanismRepresentation)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_MechanismRepresentation)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWMechanismRepresentation_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWOrientedJoint.cxx b/src/RWStepKinematics/RWStepKinematics_RWOrientedJoint.cxx
new file mode 100644 (file)
index 0000000..33f611f
--- /dev/null
@@ -0,0 +1,121 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWOrientedJoint.hxx>
+#include <StepKinematics_OrientedJoint.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepShape_Vertex.hxx>
+#include <StepShape_Edge.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWOrientedJoint
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWOrientedJoint::RWStepKinematics_RWOrientedJoint() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWOrientedJoint::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                 const Standard_Integer num,
+                                                 Handle(Interface_Check)& ach,
+                                                 const Handle(StepKinematics_OrientedJoint)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,5,ach,"oriented_joint") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of Edge
+
+  Handle(StepShape_Vertex) aEdge_EdgeStart;
+  data->ReadEntity (num, 2, "edge.edge_start", ach, STANDARD_TYPE(StepShape_Vertex), aEdge_EdgeStart);
+
+  Handle(StepShape_Vertex) aEdge_EdgeEnd;
+  data->ReadEntity (num, 3, "edge.edge_end", ach, STANDARD_TYPE(StepShape_Vertex), aEdge_EdgeEnd);
+
+  // Inherited fields of OrientedEdge
+
+  Handle(StepShape_Edge) aOrientedEdge_EdgeElement;
+  data->ReadEntity (num, 4, "oriented_edge.edge_element", ach, STANDARD_TYPE(StepShape_Edge), aOrientedEdge_EdgeElement);
+
+  Standard_Boolean aOrientedEdge_Orientation;
+  data->ReadBoolean (num, 5, "oriented_edge.orientation", ach, aOrientedEdge_Orientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aOrientedEdge_EdgeElement,
+            aOrientedEdge_Orientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWOrientedJoint::WriteStep (StepData_StepWriter& SW,
+                                                  const Handle(StepKinematics_OrientedJoint)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of Edge
+
+  SW.Send (ent->EdgeStart());
+
+  SW.Send (ent->EdgeEnd());
+
+  // Own fields of OrientedEdge
+
+  SW.Send (ent->EdgeElement());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWOrientedJoint::Share (const Handle(StepKinematics_OrientedJoint)& ent,
+                                              Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of Edge
+
+  iter.AddItem (ent->StepShape_Edge::EdgeStart());
+
+  iter.AddItem (ent->StepShape_Edge::EdgeEnd());
+
+  // Inherited fields of OrientedEdge
+
+  iter.AddItem (ent->StepShape_OrientedEdge::EdgeElement());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWOrientedJoint.hxx b/src/RWStepKinematics/RWStepKinematics_RWOrientedJoint.hxx
new file mode 100644 (file)
index 0000000..999eafb
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWOrientedJoint_HeaderFile_
+#define _RWStepKinematics_RWOrientedJoint_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_OrientedJoint;
+
+//! Read & Write tool for OrientedJoint
+class RWStepKinematics_RWOrientedJoint
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWOrientedJoint();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_OrientedJoint)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_OrientedJoint)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_OrientedJoint)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWOrientedJoint_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPairRepresentationRelationship.cxx b/src/RWStepKinematics/RWStepKinematics_RWPairRepresentationRelationship.cxx
new file mode 100644 (file)
index 0000000..cad4605
--- /dev/null
@@ -0,0 +1,141 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPairRepresentationRelationship.hxx>
+#include <StepKinematics_PairRepresentationRelationship.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_Representation.hxx>
+#include <StepRepr_RepresentationRelationshipWithTransformation.hxx>
+#include <StepRepr_RepresentationOrRepresentationReference.hxx>
+#include <StepRepr_Transformation.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPairRepresentationRelationship
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPairRepresentationRelationship::RWStepKinematics_RWPairRepresentationRelationship() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPairRepresentationRelationship::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                  const Standard_Integer num,
+                                                                  Handle(Interface_Check)& ach,
+                                                                  const Handle(StepKinematics_PairRepresentationRelationship)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,6,ach,"pair_representation_relationship") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of RepresentationRelationship
+
+  Handle(TCollection_HAsciiString) aRepresentationRelationship_Name;
+  data->ReadString (num, 2, "representation_relationship.name", ach, aRepresentationRelationship_Name);
+
+  Handle(TCollection_HAsciiString) aRepresentationRelationship_Description;
+  Standard_Boolean hasRepresentationRelationship_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "representation_relationship.description", ach, aRepresentationRelationship_Description);
+  }
+  else {
+    hasRepresentationRelationship_Description = Standard_False;
+    aRepresentationRelationship_Description.Nullify();
+  }
+
+  StepRepr_RepresentationOrRepresentationReference aRepresentationRelationship_Rep1;
+  data->ReadEntity (num, 4, "representation_relationship.rep1", ach, aRepresentationRelationship_Rep1);
+
+  StepRepr_RepresentationOrRepresentationReference aRepresentationRelationship_Rep2;
+  data->ReadEntity (num, 5, "representation_relationship.rep2", ach, aRepresentationRelationship_Rep2);
+
+  // Inherited fields of RepresentationRelationshipWithTransformation
+
+  StepRepr_Transformation aRepresentationRelationshipWithTransformation_TransformationOperator;
+  data->ReadEntity (num, 6, "representation_relationship_with_transformation.transformation_operator", ach, aRepresentationRelationshipWithTransformation_TransformationOperator);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aRepresentationRelationship_Name,
+            hasRepresentationRelationship_Description,
+            aRepresentationRelationship_Description,
+            aRepresentationRelationship_Rep1,
+            aRepresentationRelationship_Rep2,
+            aRepresentationRelationshipWithTransformation_TransformationOperator);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPairRepresentationRelationship::WriteStep (StepData_StepWriter& SW,
+                                                                   const Handle(StepKinematics_PairRepresentationRelationship)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of RepresentationRelationship
+
+  SW.Send (ent->Name());
+
+
+  if (ent->RepresentationRelationshipWithTransformation()->HasDescription())
+    SW.Send (ent->RepresentationRelationshipWithTransformation()->Description());
+  else SW.SendUndef();
+
+  SW.Send (ent->RepresentationRelationshipWithTransformation()->Rep1());
+
+  SW.Send (ent->RepresentationRelationshipWithTransformation()->Rep2());
+
+  // Inherited fields of RepresentationRelationshipWithTransformation
+
+  SW.Send (ent->RepresentationRelationshipWithTransformation()->TransformationOperator().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPairRepresentationRelationship::Share (const Handle(StepKinematics_PairRepresentationRelationship)& ent,
+                                                               Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of RepresentationRelationship
+
+  iter.AddItem (ent->RepresentationRelationshipWithTransformation()->Rep1());
+
+  iter.AddItem (ent->RepresentationRelationshipWithTransformation()->Rep2());
+
+  // Inherited fields of RepresentationRelationshipWithTransformation
+
+  iter.AddItem (ent->RepresentationRelationshipWithTransformation()->TransformationOperator().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPairRepresentationRelationship.hxx b/src/RWStepKinematics/RWStepKinematics_RWPairRepresentationRelationship.hxx
new file mode 100644 (file)
index 0000000..abb2185
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPairRepresentationRelationship_HeaderFile_
+#define _RWStepKinematics_RWPairRepresentationRelationship_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PairRepresentationRelationship;
+
+//! Read & Write tool for PairRepresentationRelationship
+class RWStepKinematics_RWPairRepresentationRelationship
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPairRepresentationRelationship();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PairRepresentationRelationship)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PairRepresentationRelationship)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PairRepresentationRelationship)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPairRepresentationRelationship_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePair.cxx
new file mode 100644 (file)
index 0000000..a5968f0
--- /dev/null
@@ -0,0 +1,170 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPlanarCurvePair.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPlanarCurvePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPlanarCurvePair::RWStepKinematics_RWPlanarCurvePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarCurvePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                   const Standard_Integer num,
+                                                   Handle(Interface_Check)& ach,
+                                                   const Handle(StepKinematics_PlanarCurvePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"planar_curve_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of PlanarCurvePair
+
+  Handle(StepGeom_Curve) aCurve1;
+  data->ReadEntity (num, 7, "curve1", ach, STANDARD_TYPE(StepGeom_Curve), aCurve1);
+
+  Handle(StepGeom_Curve) aCurve2;
+  data->ReadEntity (num, 8, "curve2", ach, STANDARD_TYPE(StepGeom_Curve), aCurve2);
+
+  Standard_Boolean aOrientation;
+  data->ReadBoolean (num, 9, "orientation", ach, aOrientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aCurve1,
+            aCurve2,
+            aOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarCurvePair::WriteStep (StepData_StepWriter& SW,
+                                                    const Handle(StepKinematics_PlanarCurvePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PlanarCurvePair
+
+  SW.Send (ent->Curve1());
+
+  SW.Send (ent->Curve2());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarCurvePair::Share (const Handle(StepKinematics_PlanarCurvePair)& ent,
+                                                Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of PlanarCurvePair
+
+  iter.AddItem (ent->Curve1());
+
+  iter.AddItem (ent->Curve2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePair.hxx
new file mode 100644 (file)
index 0000000..e819590
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPlanarCurvePair_HeaderFile_
+#define _RWStepKinematics_RWPlanarCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PlanarCurvePair;
+
+//! Read & Write tool for PlanarCurvePair
+class RWStepKinematics_RWPlanarCurvePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPlanarCurvePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PlanarCurvePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PlanarCurvePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PlanarCurvePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPlanarCurvePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePairRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePairRange.cxx
new file mode 100644 (file)
index 0000000..44b395c
--- /dev/null
@@ -0,0 +1,193 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPlanarCurvePairRange.hxx>
+#include <StepKinematics_PlanarCurvePairRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+#include <StepGeom_TrimmedCurve.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPlanarCurvePairRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPlanarCurvePairRange::RWStepKinematics_RWPlanarCurvePairRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarCurvePairRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                        const Standard_Integer num,
+                                                        Handle(Interface_Check)& ach,
+                                                        const Handle(StepKinematics_PlanarCurvePairRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,11,ach,"planar_curve_pair_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of PlanarCurvePair
+
+  Handle(StepGeom_Curve) aPlanarCurvePair_Curve1;
+  data->ReadEntity (num, 7, "planar_curve_pair.curve1", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve1);
+
+  Handle(StepGeom_Curve) aPlanarCurvePair_Curve2;
+  data->ReadEntity (num, 8, "planar_curve_pair.curve2", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve2);
+
+  Standard_Boolean aPlanarCurvePair_Orientation;
+  data->ReadBoolean (num, 9, "planar_curve_pair.orientation", ach, aPlanarCurvePair_Orientation);
+
+  // Own fields of PlanarCurvePairRange
+
+  Handle(StepGeom_TrimmedCurve) aRangeOnCurve1;
+  data->ReadEntity (num, 10, "range_on_curve1", ach, STANDARD_TYPE(StepGeom_TrimmedCurve), aRangeOnCurve1);
+
+  Handle(StepGeom_TrimmedCurve) aRangeOnCurve2;
+  data->ReadEntity (num, 11, "range_on_curve2", ach, STANDARD_TYPE(StepGeom_TrimmedCurve), aRangeOnCurve2);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPlanarCurvePair_Curve1,
+            aPlanarCurvePair_Curve2,
+            aPlanarCurvePair_Orientation,
+            aRangeOnCurve1,
+            aRangeOnCurve2);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarCurvePairRange::WriteStep (StepData_StepWriter& SW,
+                                                         const Handle(StepKinematics_PlanarCurvePairRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PlanarCurvePair
+
+  SW.Send (ent->Curve1());
+
+  SW.Send (ent->Curve2());
+
+  SW.SendBoolean (ent->Orientation());
+
+  // Own fields of PlanarCurvePairRange
+
+  SW.Send (ent->RangeOnCurve1());
+
+  SW.Send (ent->RangeOnCurve2());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarCurvePairRange::Share (const Handle(StepKinematics_PlanarCurvePairRange)& ent,
+                                                     Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of PlanarCurvePair
+
+  iter.AddItem (ent->StepKinematics_PlanarCurvePair::Curve1());
+
+  iter.AddItem (ent->StepKinematics_PlanarCurvePair::Curve2());
+
+  // Own fields of PlanarCurvePairRange
+
+  iter.AddItem (ent->RangeOnCurve1());
+
+  iter.AddItem (ent->RangeOnCurve2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePairRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarCurvePairRange.hxx
new file mode 100644 (file)
index 0000000..dea9d1d
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPlanarCurvePairRange_HeaderFile_
+#define _RWStepKinematics_RWPlanarCurvePairRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PlanarCurvePairRange;
+
+//! Read & Write tool for PlanarCurvePairRange
+class RWStepKinematics_RWPlanarCurvePairRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPlanarCurvePairRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PlanarCurvePairRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PlanarCurvePairRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PlanarCurvePairRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPlanarCurvePairRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarPair.cxx
new file mode 100644 (file)
index 0000000..48fe0d0
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPlanarPair.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPlanarPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPlanarPair::RWStepKinematics_RWPlanarPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                              const Standard_Integer num,
+                                              Handle(Interface_Check)& ach,
+                                              const Handle(StepKinematics_PlanarPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"planar_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPair::WriteStep (StepData_StepWriter& SW,
+                                               const Handle(StepKinematics_PlanarPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPair::Share (const Handle(StepKinematics_PlanarPair)& ent,
+                                           Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarPair.hxx
new file mode 100644 (file)
index 0000000..3f00e50
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPlanarPair_HeaderFile_
+#define _RWStepKinematics_RWPlanarPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PlanarPair;
+
+//! Read & Write tool for PlanarPair
+class RWStepKinematics_RWPlanarPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPlanarPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PlanarPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PlanarPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PlanarPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPlanarPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarPairValue.cxx
new file mode 100644 (file)
index 0000000..098fade
--- /dev/null
@@ -0,0 +1,118 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPlanarPairValue.hxx>
+#include <StepKinematics_PlanarPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPlanarPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPlanarPairValue::RWStepKinematics_RWPlanarPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                   const Standard_Integer num,
+                                                   Handle(Interface_Check)& ach,
+                                                   const Handle(StepKinematics_PlanarPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,5,ach,"planar_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of PlanarPairValue
+
+  Standard_Real aActualRotation;
+  data->ReadReal (num, 3, "actual_rotation", ach, aActualRotation);
+
+  Standard_Real aActualTranslationX;
+  data->ReadReal (num, 4, "actual_translation_x", ach, aActualTranslationX);
+
+  Standard_Real aActualTranslationY;
+  data->ReadReal (num, 5, "actual_translation_y", ach, aActualTranslationY);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualRotation,
+            aActualTranslationX,
+            aActualTranslationY);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPairValue::WriteStep (StepData_StepWriter& SW,
+                                                    const Handle(StepKinematics_PlanarPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of PlanarPairValue
+
+  SW.Send (ent->ActualRotation());
+
+  SW.Send (ent->ActualTranslationX());
+
+  SW.Send (ent->ActualTranslationY());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPairValue::Share (const Handle(StepKinematics_PlanarPairValue)& ent,
+                                                Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of PlanarPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarPairValue.hxx
new file mode 100644 (file)
index 0000000..e14abee
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPlanarPairValue_HeaderFile_
+#define _RWStepKinematics_RWPlanarPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PlanarPairValue;
+
+//! Read & Write tool for PlanarPairValue
+class RWStepKinematics_RWPlanarPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPlanarPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PlanarPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PlanarPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PlanarPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPlanarPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarPairWithRange.cxx
new file mode 100644 (file)
index 0000000..6fc617e
--- /dev/null
@@ -0,0 +1,292 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPlanarPairWithRange.hxx>
+#include <StepKinematics_PlanarPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPlanarPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPlanarPairWithRange::RWStepKinematics_RWPlanarPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                       const Standard_Integer num,
+                                                       Handle(Interface_Check)& ach,
+                                                       const Handle(StepKinematics_PlanarPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,18,ach,"planar_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of PlanarPairWithRange
+
+  Standard_Real aLowerLimitActualRotation;
+  Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+  }
+  else {
+    hasLowerLimitActualRotation = Standard_False;
+    aLowerLimitActualRotation = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotation;
+  Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+  }
+  else {
+    hasUpperLimitActualRotation = Standard_False;
+    aUpperLimitActualRotation = 0;
+  }
+
+  Standard_Real aLowerLimitActualTranslationX;
+  Standard_Boolean hasLowerLimitActualTranslationX = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "lower_limit_actual_translation_x", ach, aLowerLimitActualTranslationX);
+  }
+  else {
+    hasLowerLimitActualTranslationX = Standard_False;
+    aLowerLimitActualTranslationX = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslationX;
+  Standard_Boolean hasUpperLimitActualTranslationX = Standard_True;
+  if ( data->IsParamDefined (num,16) ) {
+    data->ReadReal (num, 16, "upper_limit_actual_translation_x", ach, aUpperLimitActualTranslationX);
+  }
+  else {
+    hasUpperLimitActualTranslationX = Standard_False;
+    aUpperLimitActualTranslationX = 0;
+  }
+
+  Standard_Real aLowerLimitActualTranslationY;
+  Standard_Boolean hasLowerLimitActualTranslationY = Standard_True;
+  if ( data->IsParamDefined (num,17) ) {
+    data->ReadReal (num, 17, "lower_limit_actual_translation_y", ach, aLowerLimitActualTranslationY);
+  }
+  else {
+    hasLowerLimitActualTranslationY = Standard_False;
+    aLowerLimitActualTranslationY = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslationY;
+  Standard_Boolean hasUpperLimitActualTranslationY = Standard_True;
+  if ( data->IsParamDefined (num,18) ) {
+    data->ReadReal (num, 18, "upper_limit_actual_translation_y", ach, aUpperLimitActualTranslationY);
+  }
+  else {
+    hasUpperLimitActualTranslationY = Standard_False;
+    aUpperLimitActualTranslationY = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation,
+            hasLowerLimitActualTranslationX,
+            aLowerLimitActualTranslationX,
+            hasUpperLimitActualTranslationX,
+            aUpperLimitActualTranslationX,
+            hasLowerLimitActualTranslationY,
+            aLowerLimitActualTranslationY,
+            hasUpperLimitActualTranslationY,
+            aUpperLimitActualTranslationY);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                        const Handle(StepKinematics_PlanarPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of PlanarPairWithRange
+
+  if ( ent->HasLowerLimitActualRotation() ) {
+    SW.Send (ent->LowerLimitActualRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotation() ) {
+    SW.Send (ent->UpperLimitActualRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualTranslationX() ) {
+    SW.Send (ent->LowerLimitActualTranslationX());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslationX() ) {
+    SW.Send (ent->UpperLimitActualTranslationX());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitActualTranslationY() ) {
+    SW.Send (ent->LowerLimitActualTranslationY());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslationY() ) {
+    SW.Send (ent->UpperLimitActualTranslationY());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPlanarPairWithRange::Share (const Handle(StepKinematics_PlanarPairWithRange)& ent,
+                                                    Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of PlanarPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPlanarPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWPlanarPairWithRange.hxx
new file mode 100644 (file)
index 0000000..4836aca
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPlanarPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWPlanarPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PlanarPairWithRange;
+
+//! Read & Write tool for PlanarPairWithRange
+class RWStepKinematics_RWPlanarPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPlanarPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PlanarPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PlanarPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PlanarPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPlanarPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePair.cxx
new file mode 100644 (file)
index 0000000..e8958fb
--- /dev/null
@@ -0,0 +1,162 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePair.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPointOnPlanarCurvePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPointOnPlanarCurvePair::RWStepKinematics_RWPointOnPlanarCurvePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_PointOnPlanarCurvePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,8,ach,"point_on_planar_curve_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of PointOnPlanarCurvePair
+
+  Handle(StepGeom_Curve) aPairCurve;
+  data->ReadEntity (num, 7, "pair_curve", ach, STANDARD_TYPE(StepGeom_Curve), aPairCurve);
+
+  Standard_Boolean aOrientation;
+  data->ReadBoolean (num, 8, "orientation", ach, aOrientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPairCurve,
+            aOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePair::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_PointOnPlanarCurvePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PointOnPlanarCurvePair
+
+  SW.Send (ent->PairCurve());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePair::Share (const Handle(StepKinematics_PointOnPlanarCurvePair)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of PointOnPlanarCurvePair
+
+  iter.AddItem (ent->PairCurve());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePair.hxx
new file mode 100644 (file)
index 0000000..8507967
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPointOnPlanarCurvePair_HeaderFile_
+#define _RWStepKinematics_RWPointOnPlanarCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PointOnPlanarCurvePair;
+
+//! Read & Write tool for PointOnPlanarCurvePair
+class RWStepKinematics_RWPointOnPlanarCurvePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPointOnPlanarCurvePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PointOnPlanarCurvePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PointOnPlanarCurvePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PointOnPlanarCurvePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPointOnPlanarCurvePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairValue.cxx
new file mode 100644 (file)
index 0000000..a9a8b2f
--- /dev/null
@@ -0,0 +1,117 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnCurve.hxx>
+#include <StepKinematics_SpatialRotation.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPointOnPlanarCurvePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPointOnPlanarCurvePairValue::RWStepKinematics_RWPointOnPlanarCurvePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                               const Standard_Integer num,
+                                                               Handle(Interface_Check)& ach,
+                                                               const Handle(StepKinematics_PointOnPlanarCurvePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"point_on_planar_curve_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of PointOnPlanarCurvePairValue
+
+  Handle(StepGeom_PointOnCurve) aActualPointOnCurve;
+  data->ReadEntity (num, 3, "actual_point_on_curve", ach, STANDARD_TYPE(StepGeom_PointOnCurve), aActualPointOnCurve);
+
+  StepKinematics_SpatialRotation aInputOrientation;
+  data->ReadEntity (num, 4, "input_orientation", ach, aInputOrientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPointOnCurve,
+            aInputOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePairValue::WriteStep (StepData_StepWriter& SW,
+                                                                const Handle(StepKinematics_PointOnPlanarCurvePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of PointOnPlanarCurvePairValue
+
+  SW.Send (ent->ActualPointOnCurve());
+
+  SW.Send (ent->InputOrientation().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePairValue::Share (const Handle(StepKinematics_PointOnPlanarCurvePairValue)& ent,
+                                                            Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of PointOnPlanarCurvePairValue
+
+  iter.AddItem (ent->ActualPointOnCurve());
+
+  iter.AddItem (ent->InputOrientation().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairValue.hxx
new file mode 100644 (file)
index 0000000..138c836
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPointOnPlanarCurvePairValue_HeaderFile_
+#define _RWStepKinematics_RWPointOnPlanarCurvePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PointOnPlanarCurvePairValue;
+
+//! Read & Write tool for PointOnPlanarCurvePairValue
+class RWStepKinematics_RWPointOnPlanarCurvePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPointOnPlanarCurvePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PointOnPlanarCurvePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PointOnPlanarCurvePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PointOnPlanarCurvePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPointOnPlanarCurvePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairWithRange.cxx
new file mode 100644 (file)
index 0000000..e5516da
--- /dev/null
@@ -0,0 +1,280 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+#include <StepGeom_TrimmedCurve.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPointOnPlanarCurvePairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPointOnPlanarCurvePairWithRange::RWStepKinematics_RWPointOnPlanarCurvePairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                   const Standard_Integer num,
+                                                                   Handle(Interface_Check)& ach,
+                                                                   const Handle(StepKinematics_PointOnPlanarCurvePairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,15,ach,"point_on_planar_curve_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of PointOnPlanarCurvePair
+
+  Handle(StepGeom_Curve) aPointOnPlanarCurvePair_PairCurve;
+  data->ReadEntity (num, 7, "point_on_planar_curve_pair.pair_curve", ach, STANDARD_TYPE(StepGeom_Curve), aPointOnPlanarCurvePair_PairCurve);
+
+  Standard_Boolean aPointOnPlanarCurvePair_Orientation;
+  data->ReadBoolean (num, 8, "point_on_planar_curve_pair.orientation", ach, aPointOnPlanarCurvePair_Orientation);
+
+  // Own fields of PointOnPlanarCurvePairWithRange
+
+  Handle(StepGeom_TrimmedCurve) aRangeOnPairCurve;
+  data->ReadEntity (num, 9, "range_on_pair_curve", ach, STANDARD_TYPE(StepGeom_TrimmedCurve), aRangeOnPairCurve);
+
+  Standard_Real aLowerLimitYaw;
+  Standard_Boolean hasLowerLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,10) ) {
+    data->ReadReal (num, 10, "lower_limit_yaw", ach, aLowerLimitYaw);
+  }
+  else {
+    hasLowerLimitYaw = Standard_False;
+    aLowerLimitYaw = 0;
+  }
+
+  Standard_Real aUpperLimitYaw;
+  Standard_Boolean hasUpperLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,11) ) {
+    data->ReadReal (num, 11, "upper_limit_yaw", ach, aUpperLimitYaw);
+  }
+  else {
+    hasUpperLimitYaw = Standard_False;
+    aUpperLimitYaw = 0;
+  }
+
+  Standard_Real aLowerLimitPitch;
+  Standard_Boolean hasLowerLimitPitch = Standard_True;
+  if ( data->IsParamDefined (num,12) ) {
+    data->ReadReal (num, 12, "lower_limit_pitch", ach, aLowerLimitPitch);
+  }
+  else {
+    hasLowerLimitPitch = Standard_False;
+    aLowerLimitPitch = 0;
+  }
+
+  Standard_Real aUpperLimitPitch;
+  Standard_Boolean hasUpperLimitPitch = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "upper_limit_pitch", ach, aUpperLimitPitch);
+  }
+  else {
+    hasUpperLimitPitch = Standard_False;
+    aUpperLimitPitch = 0;
+  }
+
+  Standard_Real aLowerLimitRoll;
+  Standard_Boolean hasLowerLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "lower_limit_roll", ach, aLowerLimitRoll);
+  }
+  else {
+    hasLowerLimitRoll = Standard_False;
+    aLowerLimitRoll = 0;
+  }
+
+  Standard_Real aUpperLimitRoll;
+  Standard_Boolean hasUpperLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "upper_limit_roll", ach, aUpperLimitRoll);
+  }
+  else {
+    hasUpperLimitRoll = Standard_False;
+    aUpperLimitRoll = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPointOnPlanarCurvePair_PairCurve,
+            aPointOnPlanarCurvePair_Orientation,
+            aRangeOnPairCurve,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitPitch,
+            aLowerLimitPitch,
+            hasUpperLimitPitch,
+            aUpperLimitPitch,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                                    const Handle(StepKinematics_PointOnPlanarCurvePairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PointOnPlanarCurvePair
+
+  SW.Send (ent->PairCurve());
+
+  SW.SendBoolean (ent->Orientation());
+
+  // Own fields of PointOnPlanarCurvePairWithRange
+
+  SW.Send (ent->RangeOnPairCurve());
+
+  if ( ent->HasLowerLimitYaw() ) {
+    SW.Send (ent->LowerLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitYaw() ) {
+    SW.Send (ent->UpperLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitPitch() ) {
+    SW.Send (ent->LowerLimitPitch());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitPitch() ) {
+    SW.Send (ent->UpperLimitPitch());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitRoll() ) {
+    SW.Send (ent->LowerLimitRoll());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitRoll() ) {
+    SW.Send (ent->UpperLimitRoll());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnPlanarCurvePairWithRange::Share (const Handle(StepKinematics_PointOnPlanarCurvePairWithRange)& ent,
+                                                                Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of PointOnPlanarCurvePair
+
+  iter.AddItem (ent->StepKinematics_PointOnPlanarCurvePair::PairCurve());
+
+  // Own fields of PointOnPlanarCurvePairWithRange
+
+  iter.AddItem (ent->RangeOnPairCurve());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnPlanarCurvePairWithRange.hxx
new file mode 100644 (file)
index 0000000..33076f8
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPointOnPlanarCurvePairWithRange_HeaderFile_
+#define _RWStepKinematics_RWPointOnPlanarCurvePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PointOnPlanarCurvePairWithRange;
+
+//! Read & Write tool for PointOnPlanarCurvePairWithRange
+class RWStepKinematics_RWPointOnPlanarCurvePairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPointOnPlanarCurvePairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PointOnPlanarCurvePairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PointOnPlanarCurvePairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PointOnPlanarCurvePairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPointOnPlanarCurvePairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePair.cxx
new file mode 100644 (file)
index 0000000..a8be229
--- /dev/null
@@ -0,0 +1,155 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePair.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPointOnSurfacePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPointOnSurfacePair::RWStepKinematics_RWPointOnSurfacePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_PointOnSurfacePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,7,ach,"point_on_surface_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of PointOnSurfacePair
+
+  Handle(StepGeom_Surface) aPairSurface;
+  data->ReadEntity (num, 7, "pair_surface", ach, STANDARD_TYPE(StepGeom_Surface), aPairSurface);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPairSurface);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePair::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_PointOnSurfacePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PointOnSurfacePair
+
+  SW.Send (ent->PairSurface());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePair::Share (const Handle(StepKinematics_PointOnSurfacePair)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of PointOnSurfacePair
+
+  iter.AddItem (ent->PairSurface());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePair.hxx
new file mode 100644 (file)
index 0000000..3c5bc41
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPointOnSurfacePair_HeaderFile_
+#define _RWStepKinematics_RWPointOnSurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PointOnSurfacePair;
+
+//! Read & Write tool for PointOnSurfacePair
+class RWStepKinematics_RWPointOnSurfacePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPointOnSurfacePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PointOnSurfacePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PointOnSurfacePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PointOnSurfacePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPointOnSurfacePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairValue.cxx
new file mode 100644 (file)
index 0000000..b1ccd24
--- /dev/null
@@ -0,0 +1,117 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePairValue.hxx>
+#include <StepKinematics_PointOnSurfacePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnSurface.hxx>
+#include <StepKinematics_SpatialRotation.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPointOnSurfacePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPointOnSurfacePairValue::RWStepKinematics_RWPointOnSurfacePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                           const Standard_Integer num,
+                                                           Handle(Interface_Check)& ach,
+                                                           const Handle(StepKinematics_PointOnSurfacePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"point_on_surface_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of PointOnSurfacePairValue
+
+  Handle(StepGeom_PointOnSurface) aActualPointOnSurface;
+  data->ReadEntity (num, 3, "actual_point_on_surface", ach, STANDARD_TYPE(StepGeom_PointOnSurface), aActualPointOnSurface);
+
+  StepKinematics_SpatialRotation aInputOrientation;
+  data->ReadEntity (num, 4, "input_orientation", ach, aInputOrientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPointOnSurface,
+            aInputOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePairValue::WriteStep (StepData_StepWriter& SW,
+                                                            const Handle(StepKinematics_PointOnSurfacePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of PointOnSurfacePairValue
+
+  SW.Send (ent->ActualPointOnSurface());
+
+  SW.Send (ent->InputOrientation().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePairValue::Share (const Handle(StepKinematics_PointOnSurfacePairValue)& ent,
+                                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of PointOnSurfacePairValue
+
+  iter.AddItem (ent->ActualPointOnSurface());
+
+  iter.AddItem (ent->InputOrientation().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairValue.hxx
new file mode 100644 (file)
index 0000000..edcbb81
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPointOnSurfacePairValue_HeaderFile_
+#define _RWStepKinematics_RWPointOnSurfacePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PointOnSurfacePairValue;
+
+//! Read & Write tool for PointOnSurfacePairValue
+class RWStepKinematics_RWPointOnSurfacePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPointOnSurfacePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PointOnSurfacePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PointOnSurfacePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PointOnSurfacePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPointOnSurfacePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairWithRange.cxx
new file mode 100644 (file)
index 0000000..9152346
--- /dev/null
@@ -0,0 +1,273 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPointOnSurfacePairWithRange.hxx>
+#include <StepKinematics_PointOnSurfacePairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+#include <StepGeom_RectangularTrimmedSurface.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPointOnSurfacePairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPointOnSurfacePairWithRange::RWStepKinematics_RWPointOnSurfacePairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                               const Standard_Integer num,
+                                                               Handle(Interface_Check)& ach,
+                                                               const Handle(StepKinematics_PointOnSurfacePairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,14,ach,"point_on_surface_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of PointOnSurfacePair
+
+  Handle(StepGeom_Surface) aPointOnSurfacePair_PairSurface;
+  data->ReadEntity (num, 7, "point_on_surface_pair.pair_surface", ach, STANDARD_TYPE(StepGeom_Surface), aPointOnSurfacePair_PairSurface);
+
+  // Own fields of PointOnSurfacePairWithRange
+
+  Handle(StepGeom_RectangularTrimmedSurface) aRangeOnPairSurface;
+  data->ReadEntity (num, 8, "range_on_pair_surface", ach, STANDARD_TYPE(StepGeom_RectangularTrimmedSurface), aRangeOnPairSurface);
+
+  Standard_Real aLowerLimitYaw;
+  Standard_Boolean hasLowerLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,9) ) {
+    data->ReadReal (num, 9, "lower_limit_yaw", ach, aLowerLimitYaw);
+  }
+  else {
+    hasLowerLimitYaw = Standard_False;
+    aLowerLimitYaw = 0;
+  }
+
+  Standard_Real aUpperLimitYaw;
+  Standard_Boolean hasUpperLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,10) ) {
+    data->ReadReal (num, 10, "upper_limit_yaw", ach, aUpperLimitYaw);
+  }
+  else {
+    hasUpperLimitYaw = Standard_False;
+    aUpperLimitYaw = 0;
+  }
+
+  Standard_Real aLowerLimitPitch;
+  Standard_Boolean hasLowerLimitPitch = Standard_True;
+  if ( data->IsParamDefined (num,11) ) {
+    data->ReadReal (num, 11, "lower_limit_pitch", ach, aLowerLimitPitch);
+  }
+  else {
+    hasLowerLimitPitch = Standard_False;
+    aLowerLimitPitch = 0;
+  }
+
+  Standard_Real aUpperLimitPitch;
+  Standard_Boolean hasUpperLimitPitch = Standard_True;
+  if ( data->IsParamDefined (num,12) ) {
+    data->ReadReal (num, 12, "upper_limit_pitch", ach, aUpperLimitPitch);
+  }
+  else {
+    hasUpperLimitPitch = Standard_False;
+    aUpperLimitPitch = 0;
+  }
+
+  Standard_Real aLowerLimitRoll;
+  Standard_Boolean hasLowerLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_roll", ach, aLowerLimitRoll);
+  }
+  else {
+    hasLowerLimitRoll = Standard_False;
+    aLowerLimitRoll = 0;
+  }
+
+  Standard_Real aUpperLimitRoll;
+  Standard_Boolean hasUpperLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_roll", ach, aUpperLimitRoll);
+  }
+  else {
+    hasUpperLimitRoll = Standard_False;
+    aUpperLimitRoll = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPointOnSurfacePair_PairSurface,
+            aRangeOnPairSurface,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitPitch,
+            aLowerLimitPitch,
+            hasUpperLimitPitch,
+            aUpperLimitPitch,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                                const Handle(StepKinematics_PointOnSurfacePairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PointOnSurfacePair
+
+  SW.Send (ent->PairSurface());
+
+  // Own fields of PointOnSurfacePairWithRange
+
+  SW.Send (ent->RangeOnPairSurface());
+
+  if ( ent->HasLowerLimitYaw() ) {
+    SW.Send (ent->LowerLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitYaw() ) {
+    SW.Send (ent->UpperLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitPitch() ) {
+    SW.Send (ent->LowerLimitPitch());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitPitch() ) {
+    SW.Send (ent->UpperLimitPitch());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitRoll() ) {
+    SW.Send (ent->LowerLimitRoll());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitRoll() ) {
+    SW.Send (ent->UpperLimitRoll());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPointOnSurfacePairWithRange::Share (const Handle(StepKinematics_PointOnSurfacePairWithRange)& ent,
+                                                            Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of PointOnSurfacePair
+
+  iter.AddItem (ent->StepKinematics_PointOnSurfacePair::PairSurface());
+
+  // Own fields of PointOnSurfacePairWithRange
+
+  iter.AddItem (ent->RangeOnPairSurface());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWPointOnSurfacePairWithRange.hxx
new file mode 100644 (file)
index 0000000..d787c51
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPointOnSurfacePairWithRange_HeaderFile_
+#define _RWStepKinematics_RWPointOnSurfacePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PointOnSurfacePairWithRange;
+
+//! Read & Write tool for PointOnSurfacePairWithRange
+class RWStepKinematics_RWPointOnSurfacePairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPointOnSurfacePairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PointOnSurfacePairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PointOnSurfacePairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PointOnSurfacePairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPointOnSurfacePairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPrismaticPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWPrismaticPair.cxx
new file mode 100644 (file)
index 0000000..a6042e5
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPrismaticPair.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPrismaticPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPrismaticPair::RWStepKinematics_RWPrismaticPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                 const Standard_Integer num,
+                                                 Handle(Interface_Check)& ach,
+                                                 const Handle(StepKinematics_PrismaticPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"prismatic_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPair::WriteStep (StepData_StepWriter& SW,
+                                                  const Handle(StepKinematics_PrismaticPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPair::Share (const Handle(StepKinematics_PrismaticPair)& ent,
+                                              Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPrismaticPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWPrismaticPair.hxx
new file mode 100644 (file)
index 0000000..976c761
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPrismaticPair_HeaderFile_
+#define _RWStepKinematics_RWPrismaticPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PrismaticPair;
+
+//! Read & Write tool for PrismaticPair
+class RWStepKinematics_RWPrismaticPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPrismaticPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PrismaticPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PrismaticPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PrismaticPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPrismaticPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairValue.cxx
new file mode 100644 (file)
index 0000000..9bc5b5a
--- /dev/null
@@ -0,0 +1,106 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPrismaticPairValue.hxx>
+#include <StepKinematics_PrismaticPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPrismaticPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPrismaticPairValue::RWStepKinematics_RWPrismaticPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_PrismaticPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"prismatic_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of PrismaticPairValue
+
+  Standard_Real aActualTranslation;
+  data->ReadReal (num, 3, "actual_translation", ach, aActualTranslation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualTranslation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPairValue::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_PrismaticPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of PrismaticPairValue
+
+  SW.Send (ent->ActualTranslation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPairValue::Share (const Handle(StepKinematics_PrismaticPairValue)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of PrismaticPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairValue.hxx
new file mode 100644 (file)
index 0000000..b0a8150
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPrismaticPairValue_HeaderFile_
+#define _RWStepKinematics_RWPrismaticPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PrismaticPairValue;
+
+//! Read & Write tool for PrismaticPairValue
+class RWStepKinematics_RWPrismaticPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPrismaticPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PrismaticPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PrismaticPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PrismaticPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPrismaticPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairWithRange.cxx
new file mode 100644 (file)
index 0000000..c5b6421
--- /dev/null
@@ -0,0 +1,224 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWPrismaticPairWithRange.hxx>
+#include <StepKinematics_PrismaticPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWPrismaticPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWPrismaticPairWithRange::RWStepKinematics_RWPrismaticPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_PrismaticPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,14,ach,"prismatic_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of PrismaticPairWithRange
+
+  Standard_Real aLowerLimitActualTranslation;
+  Standard_Boolean hasLowerLimitActualTranslation = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_actual_translation", ach, aLowerLimitActualTranslation);
+  }
+  else {
+    hasLowerLimitActualTranslation = Standard_False;
+    aLowerLimitActualTranslation = 0;
+  }
+
+  Standard_Real aUpperLimitActualTranslation;
+  Standard_Boolean hasUpperLimitActualTranslation = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_actual_translation", ach, aUpperLimitActualTranslation);
+  }
+  else {
+    hasUpperLimitActualTranslation = Standard_False;
+    aUpperLimitActualTranslation = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualTranslation,
+            aLowerLimitActualTranslation,
+            hasUpperLimitActualTranslation,
+            aUpperLimitActualTranslation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_PrismaticPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of PrismaticPairWithRange
+
+  if ( ent->HasLowerLimitActualTranslation() ) {
+    SW.Send (ent->LowerLimitActualTranslation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualTranslation() ) {
+    SW.Send (ent->UpperLimitActualTranslation());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWPrismaticPairWithRange::Share (const Handle(StepKinematics_PrismaticPairWithRange)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of PrismaticPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWPrismaticPairWithRange.hxx
new file mode 100644 (file)
index 0000000..dd8093d
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWPrismaticPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWPrismaticPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_PrismaticPairWithRange;
+
+//! Read & Write tool for PrismaticPairWithRange
+class RWStepKinematics_RWPrismaticPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWPrismaticPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_PrismaticPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_PrismaticPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_PrismaticPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWPrismaticPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionKinematics.cxx b/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionKinematics.cxx
new file mode 100644 (file)
index 0000000..3934c35
--- /dev/null
@@ -0,0 +1,104 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWProductDefinitionKinematics.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_CharacterizedDefinition.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWProductDefinitionKinematics
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWProductDefinitionKinematics::RWStepKinematics_RWProductDefinitionKinematics() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWProductDefinitionKinematics::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                               const Standard_Integer num,
+                                                               Handle(Interface_Check)& ach,
+                                                               const Handle(StepKinematics_ProductDefinitionKinematics)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"product_definition_kinematics") ) return;
+
+  // Inherited fields of PropertyDefinition
+
+  Handle(TCollection_HAsciiString) aPropertyDefinition_Name;
+  data->ReadString (num, 1, "property_definition.name", ach, aPropertyDefinition_Name);
+
+  Handle(TCollection_HAsciiString) aPropertyDefinition_Description;
+  Standard_Boolean hasPropertyDefinition_Description = Standard_True;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "property_definition.description", ach, aPropertyDefinition_Description);
+  }
+  else {
+    hasPropertyDefinition_Description = Standard_False;
+    aPropertyDefinition_Description.Nullify();
+  }
+
+  StepRepr_CharacterizedDefinition aPropertyDefinition_Definition;
+  data->ReadEntity (num, 3, "property_definition.definition", ach, aPropertyDefinition_Definition);
+
+  // Initialize entity
+  ent->Init(aPropertyDefinition_Name,
+            hasPropertyDefinition_Description,
+            aPropertyDefinition_Description,
+            aPropertyDefinition_Definition);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWProductDefinitionKinematics::WriteStep (StepData_StepWriter& SW,
+                                                                const Handle(StepKinematics_ProductDefinitionKinematics)& ent) const
+{
+
+  // Own fields of PropertyDefinition
+
+  SW.Send (ent->Name());
+
+  if ( ent->HasDescription() ) {
+    SW.Send (ent->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->Definition().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWProductDefinitionKinematics::Share (const Handle(StepKinematics_ProductDefinitionKinematics)& ent,
+                                                            Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of PropertyDefinition
+
+  iter.AddItem (ent->StepRepr_PropertyDefinition::Definition().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionKinematics.hxx b/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionKinematics.hxx
new file mode 100644 (file)
index 0000000..2271e67
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWProductDefinitionKinematics_HeaderFile_
+#define _RWStepKinematics_RWProductDefinitionKinematics_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ProductDefinitionKinematics;
+
+//! Read & Write tool for ProductDefinitionKinematics
+class RWStepKinematics_RWProductDefinitionKinematics
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWProductDefinitionKinematics();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ProductDefinitionKinematics)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ProductDefinitionKinematics)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ProductDefinitionKinematics)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWProductDefinitionKinematics_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionRelationshipKinematics.cxx b/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionRelationshipKinematics.cxx
new file mode 100644 (file)
index 0000000..8437ae4
--- /dev/null
@@ -0,0 +1,104 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_CharacterizedDefinition.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWProductDefinitionRelationshipKinematics
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWProductDefinitionRelationshipKinematics::RWStepKinematics_RWProductDefinitionRelationshipKinematics() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWProductDefinitionRelationshipKinematics::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                           const Standard_Integer num,
+                                                                           Handle(Interface_Check)& ach,
+                                                                           const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"product_definition_relationship_kinematics") ) return;
+
+  // Inherited fields of PropertyDefinition
+
+  Handle(TCollection_HAsciiString) aPropertyDefinition_Name;
+  data->ReadString (num, 1, "property_definition.name", ach, aPropertyDefinition_Name);
+
+  Handle(TCollection_HAsciiString) aPropertyDefinition_Description;
+  Standard_Boolean hasPropertyDefinition_Description = Standard_True;
+  if ( data->IsParamDefined (num,2) ) {
+    data->ReadString (num, 2, "property_definition.description", ach, aPropertyDefinition_Description);
+  }
+  else {
+    hasPropertyDefinition_Description = Standard_False;
+    aPropertyDefinition_Description.Nullify();
+  }
+
+  StepRepr_CharacterizedDefinition aPropertyDefinition_Definition;
+  data->ReadEntity (num, 3, "property_definition.definition", ach, aPropertyDefinition_Definition);
+
+  // Initialize entity
+  ent->Init(aPropertyDefinition_Name,
+            hasPropertyDefinition_Description,
+            aPropertyDefinition_Description,
+            aPropertyDefinition_Definition);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWProductDefinitionRelationshipKinematics::WriteStep (StepData_StepWriter& SW,
+                                                                            const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& ent) const
+{
+
+  // Own fields of PropertyDefinition
+
+  SW.Send (ent->Name());
+
+  if ( ent->HasDescription() ) {
+    SW.Send (ent->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->Definition().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWProductDefinitionRelationshipKinematics::Share (const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& ent,
+                                                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of PropertyDefinition
+
+  iter.AddItem (ent->StepRepr_PropertyDefinition::Definition().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx b/src/RWStepKinematics/RWStepKinematics_RWProductDefinitionRelationshipKinematics.hxx
new file mode 100644 (file)
index 0000000..e39c464
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWProductDefinitionRelationshipKinematics_HeaderFile_
+#define _RWStepKinematics_RWProductDefinitionRelationshipKinematics_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ProductDefinitionRelationshipKinematics;
+
+//! Read & Write tool for ProductDefinitionRelationshipKinematics
+class RWStepKinematics_RWProductDefinitionRelationshipKinematics
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWProductDefinitionRelationshipKinematics();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWProductDefinitionRelationshipKinematics_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPair.cxx
new file mode 100644 (file)
index 0000000..f87e86a
--- /dev/null
@@ -0,0 +1,153 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRackAndPinionPair.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRackAndPinionPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRackAndPinionPair::RWStepKinematics_RWRackAndPinionPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepKinematics_RackAndPinionPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,7,ach,"rack_and_pinion_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of RackAndPinionPair
+
+  Standard_Real aPinionRadius;
+  data->ReadReal (num, 7, "pinion_radius", ach, aPinionRadius);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPinionRadius);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPair::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepKinematics_RackAndPinionPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of RackAndPinionPair
+
+  SW.Send (ent->PinionRadius());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPair::Share (const Handle(StepKinematics_RackAndPinionPair)& ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of RackAndPinionPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPair.hxx
new file mode 100644 (file)
index 0000000..6ebe4e5
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRackAndPinionPair_HeaderFile_
+#define _RWStepKinematics_RWRackAndPinionPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RackAndPinionPair;
+
+//! Read & Write tool for RackAndPinionPair
+class RWStepKinematics_RWRackAndPinionPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRackAndPinionPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RackAndPinionPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RackAndPinionPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RackAndPinionPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRackAndPinionPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairValue.cxx
new file mode 100644 (file)
index 0000000..af28e5a
--- /dev/null
@@ -0,0 +1,106 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRackAndPinionPairValue.hxx>
+#include <StepKinematics_RackAndPinionPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRackAndPinionPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRackAndPinionPairValue::RWStepKinematics_RWRackAndPinionPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_RackAndPinionPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"rack_and_pinion_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of RackAndPinionPairValue
+
+  Standard_Real aActualDisplacement;
+  data->ReadReal (num, 3, "actual_displacement", ach, aActualDisplacement);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualDisplacement);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPairValue::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_RackAndPinionPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of RackAndPinionPairValue
+
+  SW.Send (ent->ActualDisplacement());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPairValue::Share (const Handle(StepKinematics_RackAndPinionPairValue)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of RackAndPinionPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairValue.hxx
new file mode 100644 (file)
index 0000000..4698e16
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRackAndPinionPairValue_HeaderFile_
+#define _RWStepKinematics_RWRackAndPinionPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RackAndPinionPairValue;
+
+//! Read & Write tool for RackAndPinionPairValue
+class RWStepKinematics_RWRackAndPinionPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRackAndPinionPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RackAndPinionPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RackAndPinionPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RackAndPinionPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRackAndPinionPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairWithRange.cxx
new file mode 100644 (file)
index 0000000..6cd4410
--- /dev/null
@@ -0,0 +1,193 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRackAndPinionPairWithRange.hxx>
+#include <StepKinematics_RackAndPinionPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRackAndPinionPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRackAndPinionPairWithRange::RWStepKinematics_RWRackAndPinionPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                              const Standard_Integer num,
+                                                              Handle(Interface_Check)& ach,
+                                                              const Handle(StepKinematics_RackAndPinionPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"rack_and_pinion_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of RackAndPinionPair
+
+  Standard_Real aRackAndPinionPair_PinionRadius;
+  data->ReadReal (num, 7, "rack_and_pinion_pair.pinion_radius", ach, aRackAndPinionPair_PinionRadius);
+
+  // Own fields of RackAndPinionPairWithRange
+
+  Standard_Real aLowerLimitRackDisplacement;
+  Standard_Boolean hasLowerLimitRackDisplacement = Standard_True;
+  if ( data->IsParamDefined (num,8) ) {
+    data->ReadReal (num, 8, "lower_limit_rack_displacement", ach, aLowerLimitRackDisplacement);
+  }
+  else {
+    hasLowerLimitRackDisplacement = Standard_False;
+    aLowerLimitRackDisplacement = 0;
+  }
+
+  Standard_Real aUpperLimitRackDisplacement;
+  Standard_Boolean hasUpperLimitRackDisplacement = Standard_True;
+  if ( data->IsParamDefined (num,9) ) {
+    data->ReadReal (num, 9, "upper_limit_rack_displacement", ach, aUpperLimitRackDisplacement);
+  }
+  else {
+    hasUpperLimitRackDisplacement = Standard_False;
+    aUpperLimitRackDisplacement = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aRackAndPinionPair_PinionRadius,
+            hasLowerLimitRackDisplacement,
+            aLowerLimitRackDisplacement,
+            hasUpperLimitRackDisplacement,
+            aUpperLimitRackDisplacement);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                               const Handle(StepKinematics_RackAndPinionPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of RackAndPinionPair
+
+  SW.Send (ent->PinionRadius());
+
+  // Own fields of RackAndPinionPairWithRange
+
+  if ( ent->HasLowerLimitRackDisplacement() ) {
+    SW.Send (ent->LowerLimitRackDisplacement());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitRackDisplacement() ) {
+    SW.Send (ent->UpperLimitRackDisplacement());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRackAndPinionPairWithRange::Share (const Handle(StepKinematics_RackAndPinionPairWithRange)& ent,
+                                                           Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of RackAndPinionPair
+
+  // Own fields of RackAndPinionPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWRackAndPinionPairWithRange.hxx
new file mode 100644 (file)
index 0000000..136b4fd
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRackAndPinionPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWRackAndPinionPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RackAndPinionPairWithRange;
+
+//! Read & Write tool for RackAndPinionPairWithRange
+class RWStepKinematics_RWRackAndPinionPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRackAndPinionPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RackAndPinionPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RackAndPinionPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RackAndPinionPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRackAndPinionPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRevolutePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWRevolutePair.cxx
new file mode 100644 (file)
index 0000000..7ccb3c7
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRevolutePair.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRevolutePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRevolutePair::RWStepKinematics_RWRevolutePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                const Standard_Integer num,
+                                                Handle(Interface_Check)& ach,
+                                                const Handle(StepKinematics_RevolutePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"revolute_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePair::WriteStep (StepData_StepWriter& SW,
+                                                 const Handle(StepKinematics_RevolutePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePair::Share (const Handle(StepKinematics_RevolutePair)& ent,
+                                             Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRevolutePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWRevolutePair.hxx
new file mode 100644 (file)
index 0000000..8e19191
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRevolutePair_HeaderFile_
+#define _RWStepKinematics_RWRevolutePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RevolutePair;
+
+//! Read & Write tool for RevolutePair
+class RWStepKinematics_RWRevolutePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRevolutePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RevolutePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RevolutePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RevolutePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRevolutePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRevolutePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWRevolutePairValue.cxx
new file mode 100644 (file)
index 0000000..91b538b
--- /dev/null
@@ -0,0 +1,106 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRevolutePairValue.hxx>
+#include <StepKinematics_RevolutePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRevolutePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRevolutePairValue::RWStepKinematics_RWRevolutePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepKinematics_RevolutePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"revolute_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of RevolutePairValue
+
+  Standard_Real aActualRotation;
+  data->ReadReal (num, 3, "actual_rotation", ach, aActualRotation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePairValue::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepKinematics_RevolutePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of RevolutePairValue
+
+  SW.Send (ent->ActualRotation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePairValue::Share (const Handle(StepKinematics_RevolutePairValue)& ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of RevolutePairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRevolutePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWRevolutePairValue.hxx
new file mode 100644 (file)
index 0000000..b5ab32c
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRevolutePairValue_HeaderFile_
+#define _RWStepKinematics_RWRevolutePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RevolutePairValue;
+
+//! Read & Write tool for RevolutePairValue
+class RWStepKinematics_RWRevolutePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRevolutePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RevolutePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RevolutePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RevolutePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRevolutePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRevolutePairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWRevolutePairWithRange.cxx
new file mode 100644 (file)
index 0000000..0c9449e
--- /dev/null
@@ -0,0 +1,224 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRevolutePairWithRange.hxx>
+#include <StepKinematics_RevolutePairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRevolutePairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRevolutePairWithRange::RWStepKinematics_RWRevolutePairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                         const Standard_Integer num,
+                                                         Handle(Interface_Check)& ach,
+                                                         const Handle(StepKinematics_RevolutePairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,14,ach,"revolute_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of RevolutePairWithRange
+
+  Standard_Real aLowerLimitActualRotation;
+  Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+  }
+  else {
+    hasLowerLimitActualRotation = Standard_False;
+    aLowerLimitActualRotation = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotation;
+  Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+  }
+  else {
+    hasUpperLimitActualRotation = Standard_False;
+    aUpperLimitActualRotation = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                          const Handle(StepKinematics_RevolutePairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of RevolutePairWithRange
+
+  if ( ent->HasLowerLimitActualRotation() ) {
+    SW.Send (ent->LowerLimitActualRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotation() ) {
+    SW.Send (ent->UpperLimitActualRotation());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRevolutePairWithRange::Share (const Handle(StepKinematics_RevolutePairWithRange)& ent,
+                                                      Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of RevolutePairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRevolutePairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWRevolutePairWithRange.hxx
new file mode 100644 (file)
index 0000000..26c8ebb
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRevolutePairWithRange_HeaderFile_
+#define _RWStepKinematics_RWRevolutePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RevolutePairWithRange;
+
+//! Read & Write tool for RevolutePairWithRange
+class RWStepKinematics_RWRevolutePairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRevolutePairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RevolutePairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RevolutePairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RevolutePairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRevolutePairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRigidLinkRepresentation.cxx b/src/RWStepKinematics/RWStepKinematics_RWRigidLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..fc36f3c
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRigidLinkRepresentation.hxx>
+#include <StepKinematics_RigidLinkRepresentation.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRigidLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRigidLinkRepresentation::RWStepKinematics_RWRigidLinkRepresentation() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRigidLinkRepresentation::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                           const Standard_Integer num,
+                                                           Handle(Interface_Check)& ach,
+                                                           const Handle(StepKinematics_RigidLinkRepresentation)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"rigid_link_representation") ) return;
+
+  // Inherited fields of Representation
+
+  Handle(TCollection_HAsciiString) aRepresentation_Name;
+  data->ReadString (num, 1, "representation.name", ach, aRepresentation_Name);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) aRepresentation_Items;
+  Standard_Integer sub2 = 0;
+  if ( data->ReadSubList (num, 2, "representation.items", ach, sub2) ) {
+    Standard_Integer nb0 = data->NbParams(sub2);
+    aRepresentation_Items = new StepRepr_HArray1OfRepresentationItem (1, nb0);
+    Standard_Integer num2 = sub2;
+    for ( Standard_Integer i0=1; i0 <= nb0; i0++ ) {
+      Handle(StepRepr_RepresentationItem) anIt0;
+      data->ReadEntity (num2, i0, "representation_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anIt0);
+      aRepresentation_Items->SetValue(i0, anIt0);
+    }
+  }
+
+  Handle(StepRepr_RepresentationContext) aRepresentation_ContextOfItems;
+  data->ReadEntity (num, 3, "representation.context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContext), aRepresentation_ContextOfItems);
+
+  // Inherited fields of KinematicLinkRepresentation
+
+  Handle(StepKinematics_KinematicLink) aKinematicLinkRepresentation_RepresentedLink;
+  data->ReadEntity (num, 4, "kinematic_link_representation.represented_link", ach, STANDARD_TYPE(StepKinematics_KinematicLink), aKinematicLinkRepresentation_RepresentedLink);
+
+  // Initialize entity
+  ent->Init(aRepresentation_Name,
+            aRepresentation_Items,
+            aRepresentation_ContextOfItems,
+            aKinematicLinkRepresentation_RepresentedLink);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRigidLinkRepresentation::WriteStep (StepData_StepWriter& SW,
+                                                            const Handle(StepKinematics_RigidLinkRepresentation)& ent) const
+{
+
+  // Own fields of Representation
+
+  SW.Send (ent->Name());
+
+  SW.OpenSub();
+  for (Standard_Integer i1=1; i1 <= ent->Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->Items()->Value(i1);
+    SW.Send (Var0);
+  }
+  SW.CloseSub();
+
+  SW.Send (ent->ContextOfItems());
+
+  // Own fields of KinematicLinkRepresentation
+
+  SW.Send (ent->RepresentedLink());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRigidLinkRepresentation::Share (const Handle(StepKinematics_RigidLinkRepresentation)& ent,
+                                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of Representation
+
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
+    iter.AddItem (Var0);
+  }
+
+  iter.AddItem (ent->StepRepr_Representation::ContextOfItems());
+
+  // Inherited fields of KinematicLinkRepresentation
+
+  iter.AddItem (ent->StepKinematics_KinematicLinkRepresentation::RepresentedLink());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRigidLinkRepresentation.hxx b/src/RWStepKinematics/RWStepKinematics_RWRigidLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..097ba73
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRigidLinkRepresentation_HeaderFile_
+#define _RWStepKinematics_RWRigidLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RigidLinkRepresentation;
+
+//! Read & Write tool for RigidLinkRepresentation
+class RWStepKinematics_RWRigidLinkRepresentation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRigidLinkRepresentation();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RigidLinkRepresentation)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RigidLinkRepresentation)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RigidLinkRepresentation)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRigidLinkRepresentation_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePair.cxx
new file mode 100644 (file)
index 0000000..bad3e1e
--- /dev/null
@@ -0,0 +1,170 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRollingCurvePair.hxx>
+#include <StepKinematics_RollingCurvePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRollingCurvePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRollingCurvePair::RWStepKinematics_RWRollingCurvePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingCurvePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                    const Standard_Integer num,
+                                                    Handle(Interface_Check)& ach,
+                                                    const Handle(StepKinematics_RollingCurvePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"rolling_curve_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of PlanarCurvePair
+
+  Handle(StepGeom_Curve) aPlanarCurvePair_Curve1;
+  data->ReadEntity (num, 7, "planar_curve_pair.curve1", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve1);
+
+  Handle(StepGeom_Curve) aPlanarCurvePair_Curve2;
+  data->ReadEntity (num, 8, "planar_curve_pair.curve2", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve2);
+
+  Standard_Boolean aPlanarCurvePair_Orientation;
+  data->ReadBoolean (num, 9, "planar_curve_pair.orientation", ach, aPlanarCurvePair_Orientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPlanarCurvePair_Curve1,
+            aPlanarCurvePair_Curve2,
+            aPlanarCurvePair_Orientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingCurvePair::WriteStep (StepData_StepWriter& SW,
+                                                     const Handle(StepKinematics_RollingCurvePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PlanarCurvePair
+
+  SW.Send (ent->Curve1());
+
+  SW.Send (ent->Curve2());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingCurvePair::Share (const Handle(StepKinematics_RollingCurvePair)& ent,
+                                                 Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of PlanarCurvePair
+
+  iter.AddItem (ent->StepKinematics_PlanarCurvePair::Curve1());
+
+  iter.AddItem (ent->StepKinematics_PlanarCurvePair::Curve2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePair.hxx
new file mode 100644 (file)
index 0000000..5814ea6
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRollingCurvePair_HeaderFile_
+#define _RWStepKinematics_RWRollingCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RollingCurvePair;
+
+//! Read & Write tool for RollingCurvePair
+class RWStepKinematics_RWRollingCurvePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRollingCurvePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RollingCurvePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RollingCurvePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RollingCurvePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRollingCurvePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePairValue.cxx
new file mode 100644 (file)
index 0000000..2113772
--- /dev/null
@@ -0,0 +1,108 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRollingCurvePairValue.hxx>
+#include <StepKinematics_RollingCurvePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnCurve.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRollingCurvePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRollingCurvePairValue::RWStepKinematics_RWRollingCurvePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingCurvePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                         const Standard_Integer num,
+                                                         Handle(Interface_Check)& ach,
+                                                         const Handle(StepKinematics_RollingCurvePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"rolling_curve_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of RollingCurvePairValue
+
+  Handle(StepGeom_PointOnCurve) aActualPointOnCurve1;
+  data->ReadEntity (num, 3, "actual_point_on_curve1", ach, STANDARD_TYPE(StepGeom_PointOnCurve), aActualPointOnCurve1);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPointOnCurve1);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingCurvePairValue::WriteStep (StepData_StepWriter& SW,
+                                                          const Handle(StepKinematics_RollingCurvePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of RollingCurvePairValue
+
+  SW.Send (ent->ActualPointOnCurve1());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingCurvePairValue::Share (const Handle(StepKinematics_RollingCurvePairValue)& ent,
+                                                      Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of RollingCurvePairValue
+
+  iter.AddItem (ent->ActualPointOnCurve1());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWRollingCurvePairValue.hxx
new file mode 100644 (file)
index 0000000..b2eb463
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRollingCurvePairValue_HeaderFile_
+#define _RWStepKinematics_RWRollingCurvePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RollingCurvePairValue;
+
+//! Read & Write tool for RollingCurvePairValue
+class RWStepKinematics_RWRollingCurvePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRollingCurvePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RollingCurvePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RollingCurvePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RollingCurvePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRollingCurvePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePair.cxx
new file mode 100644 (file)
index 0000000..999fac5
--- /dev/null
@@ -0,0 +1,170 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRollingSurfacePair.hxx>
+#include <StepKinematics_RollingSurfacePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRollingSurfacePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRollingSurfacePair::RWStepKinematics_RWRollingSurfacePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingSurfacePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_RollingSurfacePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"rolling_surface_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of SurfacePair
+
+  Handle(StepGeom_Surface) aSurfacePair_Surface1;
+  data->ReadEntity (num, 7, "surface_pair.surface1", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface1);
+
+  Handle(StepGeom_Surface) aSurfacePair_Surface2;
+  data->ReadEntity (num, 8, "surface_pair.surface2", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface2);
+
+  Standard_Boolean aSurfacePair_Orientation;
+  data->ReadBoolean (num, 9, "surface_pair.orientation", ach, aSurfacePair_Orientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aSurfacePair_Surface1,
+            aSurfacePair_Surface2,
+            aSurfacePair_Orientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingSurfacePair::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_RollingSurfacePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of SurfacePair
+
+  SW.Send (ent->Surface1());
+
+  SW.Send (ent->Surface2());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingSurfacePair::Share (const Handle(StepKinematics_RollingSurfacePair)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of SurfacePair
+
+  iter.AddItem (ent->StepKinematics_SurfacePair::Surface1());
+
+  iter.AddItem (ent->StepKinematics_SurfacePair::Surface2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePair.hxx
new file mode 100644 (file)
index 0000000..dd5bbf7
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRollingSurfacePair_HeaderFile_
+#define _RWStepKinematics_RWRollingSurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RollingSurfacePair;
+
+//! Read & Write tool for RollingSurfacePair
+class RWStepKinematics_RWRollingSurfacePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRollingSurfacePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RollingSurfacePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RollingSurfacePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RollingSurfacePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRollingSurfacePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePairValue.cxx
new file mode 100644 (file)
index 0000000..c6e09c9
--- /dev/null
@@ -0,0 +1,115 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRollingSurfacePairValue.hxx>
+#include <StepKinematics_RollingSurfacePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnSurface.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRollingSurfacePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRollingSurfacePairValue::RWStepKinematics_RWRollingSurfacePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingSurfacePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                           const Standard_Integer num,
+                                                           Handle(Interface_Check)& ach,
+                                                           const Handle(StepKinematics_RollingSurfacePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"rolling_surface_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of RollingSurfacePairValue
+
+  Handle(StepGeom_PointOnSurface) aActualPointOnSurface;
+  data->ReadEntity (num, 3, "actual_point_on_surface", ach, STANDARD_TYPE(StepGeom_PointOnSurface), aActualPointOnSurface);
+
+  Standard_Real aActualRotation;
+  data->ReadReal (num, 4, "actual_rotation", ach, aActualRotation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPointOnSurface,
+            aActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingSurfacePairValue::WriteStep (StepData_StepWriter& SW,
+                                                            const Handle(StepKinematics_RollingSurfacePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of RollingSurfacePairValue
+
+  SW.Send (ent->ActualPointOnSurface());
+
+  SW.Send (ent->ActualRotation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRollingSurfacePairValue::Share (const Handle(StepKinematics_RollingSurfacePairValue)& ent,
+                                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of RollingSurfacePairValue
+
+  iter.AddItem (ent->ActualPointOnSurface());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWRollingSurfacePairValue.hxx
new file mode 100644 (file)
index 0000000..a19aed7
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRollingSurfacePairValue_HeaderFile_
+#define _RWStepKinematics_RWRollingSurfacePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RollingSurfacePairValue;
+
+//! Read & Write tool for RollingSurfacePairValue
+class RWStepKinematics_RWRollingSurfacePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRollingSurfacePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RollingSurfacePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RollingSurfacePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RollingSurfacePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRollingSurfacePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRotationAboutDirection.cxx b/src/RWStepKinematics/RWStepKinematics_RWRotationAboutDirection.cxx
new file mode 100644 (file)
index 0000000..3066e58
--- /dev/null
@@ -0,0 +1,100 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWRotationAboutDirection.hxx>
+#include <StepKinematics_RotationAboutDirection.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepGeom_Direction.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWRotationAboutDirection
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWRotationAboutDirection::RWStepKinematics_RWRotationAboutDirection() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRotationAboutDirection::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_RotationAboutDirection)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"rotation_about_direction") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Own fields of RotationAboutDirection
+
+  Handle(StepGeom_Direction) aDirectionOfAxis;
+  data->ReadEntity (num, 2, "direction_of_axis", ach, STANDARD_TYPE(StepGeom_Direction), aDirectionOfAxis);
+
+  Standard_Real aRotationAngle;
+  data->ReadReal (num, 3, "rotation_angle", ach, aRotationAngle);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aDirectionOfAxis,
+            aRotationAngle);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRotationAboutDirection::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_RotationAboutDirection)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of RotationAboutDirection
+
+  SW.Send (ent->DirectionOfAxis());
+
+  SW.Send (ent->RotationAngle());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWRotationAboutDirection::Share (const Handle(StepKinematics_RotationAboutDirection)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Own fields of RotationAboutDirection
+
+  iter.AddItem (ent->DirectionOfAxis());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWRotationAboutDirection.hxx b/src/RWStepKinematics/RWStepKinematics_RWRotationAboutDirection.hxx
new file mode 100644 (file)
index 0000000..e53cc61
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWRotationAboutDirection_HeaderFile_
+#define _RWStepKinematics_RWRotationAboutDirection_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_RotationAboutDirection;
+
+//! Read & Write tool for RotationAboutDirection
+class RWStepKinematics_RWRotationAboutDirection
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWRotationAboutDirection();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_RotationAboutDirection)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_RotationAboutDirection)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_RotationAboutDirection)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWRotationAboutDirection_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWScrewPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWScrewPair.cxx
new file mode 100644 (file)
index 0000000..c4d2c74
--- /dev/null
@@ -0,0 +1,153 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWScrewPair.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWScrewPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWScrewPair::RWStepKinematics_RWScrewPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                             const Standard_Integer num,
+                                             Handle(Interface_Check)& ach,
+                                             const Handle(StepKinematics_ScrewPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,7,ach,"screw_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Own fields of ScrewPair
+
+  Standard_Real aPitch;
+  data->ReadReal (num, 7, "pitch", ach, aPitch);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPitch);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPair::WriteStep (StepData_StepWriter& SW,
+                                              const Handle(StepKinematics_ScrewPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of ScrewPair
+
+  SW.Send (ent->Pitch());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPair::Share (const Handle(StepKinematics_ScrewPair)& ent,
+                                          Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Own fields of ScrewPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWScrewPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWScrewPair.hxx
new file mode 100644 (file)
index 0000000..205ca89
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWScrewPair_HeaderFile_
+#define _RWStepKinematics_RWScrewPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ScrewPair;
+
+//! Read & Write tool for ScrewPair
+class RWStepKinematics_RWScrewPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWScrewPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ScrewPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ScrewPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ScrewPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWScrewPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWScrewPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWScrewPairValue.cxx
new file mode 100644 (file)
index 0000000..e2c023e
--- /dev/null
@@ -0,0 +1,106 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWScrewPairValue.hxx>
+#include <StepKinematics_ScrewPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWScrewPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWScrewPairValue::RWStepKinematics_RWScrewPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                  const Standard_Integer num,
+                                                  Handle(Interface_Check)& ach,
+                                                  const Handle(StepKinematics_ScrewPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"screw_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of ScrewPairValue
+
+  Standard_Real aActualRotation;
+  data->ReadReal (num, 3, "actual_rotation", ach, aActualRotation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPairValue::WriteStep (StepData_StepWriter& SW,
+                                                   const Handle(StepKinematics_ScrewPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of ScrewPairValue
+
+  SW.Send (ent->ActualRotation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPairValue::Share (const Handle(StepKinematics_ScrewPairValue)& ent,
+                                               Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of ScrewPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWScrewPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWScrewPairValue.hxx
new file mode 100644 (file)
index 0000000..02a6166
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWScrewPairValue_HeaderFile_
+#define _RWStepKinematics_RWScrewPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ScrewPairValue;
+
+//! Read & Write tool for ScrewPairValue
+class RWStepKinematics_RWScrewPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWScrewPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ScrewPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ScrewPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ScrewPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWScrewPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWScrewPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWScrewPairWithRange.cxx
new file mode 100644 (file)
index 0000000..19948bf
--- /dev/null
@@ -0,0 +1,193 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWScrewPairWithRange.hxx>
+#include <StepKinematics_ScrewPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWScrewPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWScrewPairWithRange::RWStepKinematics_RWScrewPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_ScrewPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"screw_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of ScrewPair
+
+  Standard_Real aScrewPair_Pitch;
+  data->ReadReal (num, 7, "screw_pair.pitch", ach, aScrewPair_Pitch);
+
+  // Own fields of ScrewPairWithRange
+
+  Standard_Real aLowerLimitActualRotation;
+  Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,8) ) {
+    data->ReadReal (num, 8, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+  }
+  else {
+    hasLowerLimitActualRotation = Standard_False;
+    aLowerLimitActualRotation = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotation;
+  Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,9) ) {
+    data->ReadReal (num, 9, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+  }
+  else {
+    hasUpperLimitActualRotation = Standard_False;
+    aUpperLimitActualRotation = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aScrewPair_Pitch,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_ScrewPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of ScrewPair
+
+  SW.Send (ent->Pitch());
+
+  // Own fields of ScrewPairWithRange
+
+  if ( ent->HasLowerLimitActualRotation() ) {
+    SW.Send (ent->LowerLimitActualRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotation() ) {
+    SW.Send (ent->UpperLimitActualRotation());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWScrewPairWithRange::Share (const Handle(StepKinematics_ScrewPairWithRange)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of ScrewPair
+
+  // Own fields of ScrewPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWScrewPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWScrewPairWithRange.hxx
new file mode 100644 (file)
index 0000000..0e7eebe
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWScrewPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWScrewPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_ScrewPairWithRange;
+
+//! Read & Write tool for ScrewPairWithRange
+class RWStepKinematics_RWScrewPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWScrewPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_ScrewPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_ScrewPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_ScrewPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWScrewPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePair.cxx
new file mode 100644 (file)
index 0000000..2c9c173
--- /dev/null
@@ -0,0 +1,170 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSlidingCurvePair.hxx>
+#include <StepKinematics_SlidingCurvePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSlidingCurvePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSlidingCurvePair::RWStepKinematics_RWSlidingCurvePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingCurvePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                    const Standard_Integer num,
+                                                    Handle(Interface_Check)& ach,
+                                                    const Handle(StepKinematics_SlidingCurvePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"sliding_curve_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of PlanarCurvePair
+
+  Handle(StepGeom_Curve) aPlanarCurvePair_Curve1;
+  data->ReadEntity (num, 7, "planar_curve_pair.curve1", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve1);
+
+  Handle(StepGeom_Curve) aPlanarCurvePair_Curve2;
+  data->ReadEntity (num, 8, "planar_curve_pair.curve2", ach, STANDARD_TYPE(StepGeom_Curve), aPlanarCurvePair_Curve2);
+
+  Standard_Boolean aPlanarCurvePair_Orientation;
+  data->ReadBoolean (num, 9, "planar_curve_pair.orientation", ach, aPlanarCurvePair_Orientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aPlanarCurvePair_Curve1,
+            aPlanarCurvePair_Curve2,
+            aPlanarCurvePair_Orientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingCurvePair::WriteStep (StepData_StepWriter& SW,
+                                                     const Handle(StepKinematics_SlidingCurvePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of PlanarCurvePair
+
+  SW.Send (ent->Curve1());
+
+  SW.Send (ent->Curve2());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingCurvePair::Share (const Handle(StepKinematics_SlidingCurvePair)& ent,
+                                                 Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of PlanarCurvePair
+
+  iter.AddItem (ent->StepKinematics_PlanarCurvePair::Curve1());
+
+  iter.AddItem (ent->StepKinematics_PlanarCurvePair::Curve2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePair.hxx
new file mode 100644 (file)
index 0000000..b160497
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSlidingCurvePair_HeaderFile_
+#define _RWStepKinematics_RWSlidingCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SlidingCurvePair;
+
+//! Read & Write tool for SlidingCurvePair
+class RWStepKinematics_RWSlidingCurvePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSlidingCurvePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SlidingCurvePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SlidingCurvePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SlidingCurvePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSlidingCurvePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePairValue.cxx
new file mode 100644 (file)
index 0000000..09ff708
--- /dev/null
@@ -0,0 +1,116 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSlidingCurvePairValue.hxx>
+#include <StepKinematics_SlidingCurvePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnCurve.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSlidingCurvePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSlidingCurvePairValue::RWStepKinematics_RWSlidingCurvePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingCurvePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                         const Standard_Integer num,
+                                                         Handle(Interface_Check)& ach,
+                                                         const Handle(StepKinematics_SlidingCurvePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"sliding_curve_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of SlidingCurvePairValue
+
+  Handle(StepGeom_PointOnCurve) aActualPointOnCurve1;
+  data->ReadEntity (num, 3, "actual_point_on_curve1", ach, STANDARD_TYPE(StepGeom_PointOnCurve), aActualPointOnCurve1);
+
+  Handle(StepGeom_PointOnCurve) aActualPointOnCurve2;
+  data->ReadEntity (num, 4, "actual_point_on_curve2", ach, STANDARD_TYPE(StepGeom_PointOnCurve), aActualPointOnCurve2);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPointOnCurve1,
+            aActualPointOnCurve2);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingCurvePairValue::WriteStep (StepData_StepWriter& SW,
+                                                          const Handle(StepKinematics_SlidingCurvePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of SlidingCurvePairValue
+
+  SW.Send (ent->ActualPointOnCurve1());
+
+  SW.Send (ent->ActualPointOnCurve2());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingCurvePairValue::Share (const Handle(StepKinematics_SlidingCurvePairValue)& ent,
+                                                      Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of SlidingCurvePairValue
+
+  iter.AddItem (ent->ActualPointOnCurve1());
+
+  iter.AddItem (ent->ActualPointOnCurve2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingCurvePairValue.hxx
new file mode 100644 (file)
index 0000000..203b7be
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSlidingCurvePairValue_HeaderFile_
+#define _RWStepKinematics_RWSlidingCurvePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SlidingCurvePairValue;
+
+//! Read & Write tool for SlidingCurvePairValue
+class RWStepKinematics_RWSlidingCurvePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSlidingCurvePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SlidingCurvePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SlidingCurvePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SlidingCurvePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSlidingCurvePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePair.cxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePair.cxx
new file mode 100644 (file)
index 0000000..0cec465
--- /dev/null
@@ -0,0 +1,170 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSlidingSurfacePair.hxx>
+#include <StepKinematics_SlidingSurfacePair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSlidingSurfacePair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSlidingSurfacePair::RWStepKinematics_RWSlidingSurfacePair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingSurfacePair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_SlidingSurfacePair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,9,ach,"sliding_surface_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of SurfacePair
+
+  Handle(StepGeom_Surface) aSurfacePair_Surface1;
+  data->ReadEntity (num, 7, "surface_pair.surface1", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface1);
+
+  Handle(StepGeom_Surface) aSurfacePair_Surface2;
+  data->ReadEntity (num, 8, "surface_pair.surface2", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface2);
+
+  Standard_Boolean aSurfacePair_Orientation;
+  data->ReadBoolean (num, 9, "surface_pair.orientation", ach, aSurfacePair_Orientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aSurfacePair_Surface1,
+            aSurfacePair_Surface2,
+            aSurfacePair_Orientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingSurfacePair::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_SlidingSurfacePair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of SurfacePair
+
+  SW.Send (ent->Surface1());
+
+  SW.Send (ent->Surface2());
+
+  SW.SendBoolean (ent->Orientation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingSurfacePair::Share (const Handle(StepKinematics_SlidingSurfacePair)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of SurfacePair
+
+  iter.AddItem (ent->StepKinematics_SurfacePair::Surface1());
+
+  iter.AddItem (ent->StepKinematics_SurfacePair::Surface2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePair.hxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePair.hxx
new file mode 100644 (file)
index 0000000..5bdc134
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSlidingSurfacePair_HeaderFile_
+#define _RWStepKinematics_RWSlidingSurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SlidingSurfacePair;
+
+//! Read & Write tool for SlidingSurfacePair
+class RWStepKinematics_RWSlidingSurfacePair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSlidingSurfacePair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SlidingSurfacePair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SlidingSurfacePair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SlidingSurfacePair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSlidingSurfacePair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePairValue.cxx
new file mode 100644 (file)
index 0000000..d5b24b7
--- /dev/null
@@ -0,0 +1,123 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSlidingSurfacePairValue.hxx>
+#include <StepKinematics_SlidingSurfacePairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnSurface.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSlidingSurfacePairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSlidingSurfacePairValue::RWStepKinematics_RWSlidingSurfacePairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingSurfacePairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                           const Standard_Integer num,
+                                                           Handle(Interface_Check)& ach,
+                                                           const Handle(StepKinematics_SlidingSurfacePairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,5,ach,"sliding_surface_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of SlidingSurfacePairValue
+
+  Handle(StepGeom_PointOnSurface) aActualPointOnSurface1;
+  data->ReadEntity (num, 3, "actual_point_on_surface1", ach, STANDARD_TYPE(StepGeom_PointOnSurface), aActualPointOnSurface1);
+
+  Handle(StepGeom_PointOnSurface) aActualPointOnSurface2;
+  data->ReadEntity (num, 4, "actual_point_on_surface2", ach, STANDARD_TYPE(StepGeom_PointOnSurface), aActualPointOnSurface2);
+
+  Standard_Real aActualRotation;
+  data->ReadReal (num, 5, "actual_rotation", ach, aActualRotation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPointOnSurface1,
+            aActualPointOnSurface2,
+            aActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingSurfacePairValue::WriteStep (StepData_StepWriter& SW,
+                                                            const Handle(StepKinematics_SlidingSurfacePairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of SlidingSurfacePairValue
+
+  SW.Send (ent->ActualPointOnSurface1());
+
+  SW.Send (ent->ActualPointOnSurface2());
+
+  SW.Send (ent->ActualRotation());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSlidingSurfacePairValue::Share (const Handle(StepKinematics_SlidingSurfacePairValue)& ent,
+                                                        Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of SlidingSurfacePairValue
+
+  iter.AddItem (ent->ActualPointOnSurface1());
+
+  iter.AddItem (ent->ActualPointOnSurface2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWSlidingSurfacePairValue.hxx
new file mode 100644 (file)
index 0000000..bf43c16
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSlidingSurfacePairValue_HeaderFile_
+#define _RWStepKinematics_RWSlidingSurfacePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SlidingSurfacePairValue;
+
+//! Read & Write tool for SlidingSurfacePairValue
+class RWStepKinematics_RWSlidingSurfacePairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSlidingSurfacePairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SlidingSurfacePairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SlidingSurfacePairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SlidingSurfacePairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSlidingSurfacePairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPair.cxx
new file mode 100644 (file)
index 0000000..b87494c
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSphericalPair.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSphericalPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSphericalPair::RWStepKinematics_RWSphericalPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                 const Standard_Integer num,
+                                                 Handle(Interface_Check)& ach,
+                                                 const Handle(StepKinematics_SphericalPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"spherical_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPair::WriteStep (StepData_StepWriter& SW,
+                                                  const Handle(StepKinematics_SphericalPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPair::Share (const Handle(StepKinematics_SphericalPair)& ent,
+                                              Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPair.hxx
new file mode 100644 (file)
index 0000000..15599cd
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSphericalPair_HeaderFile_
+#define _RWStepKinematics_RWSphericalPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SphericalPair;
+
+//! Read & Write tool for SphericalPair
+class RWStepKinematics_RWSphericalPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSphericalPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SphericalPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SphericalPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SphericalPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSphericalPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairValue.cxx
new file mode 100644 (file)
index 0000000..b439977
--- /dev/null
@@ -0,0 +1,108 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSphericalPairValue.hxx>
+#include <StepKinematics_SphericalPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepKinematics_SpatialRotation.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSphericalPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSphericalPairValue::RWStepKinematics_RWSphericalPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_SphericalPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"spherical_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of SphericalPairValue
+
+  StepKinematics_SpatialRotation aInputOrientation;
+  data->ReadEntity (num, 3, "input_orientation", ach, aInputOrientation);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aInputOrientation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairValue::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_SphericalPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of SphericalPairValue
+
+  SW.Send (ent->InputOrientation().Value());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairValue::Share (const Handle(StepKinematics_SphericalPairValue)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of SphericalPairValue
+
+  iter.AddItem (ent->InputOrientation().Value());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairValue.hxx
new file mode 100644 (file)
index 0000000..a60fc7a
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSphericalPairValue_HeaderFile_
+#define _RWStepKinematics_RWSphericalPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SphericalPairValue;
+
+//! Read & Write tool for SphericalPairValue
+class RWStepKinematics_RWSphericalPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSphericalPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SphericalPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SphericalPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SphericalPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSphericalPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPin.cxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPin.cxx
new file mode 100644 (file)
index 0000000..3288860
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSphericalPairWithPin.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSphericalPairWithPin
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSphericalPairWithPin::RWStepKinematics_RWSphericalPairWithPin() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithPin::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                        const Standard_Integer num,
+                                                        Handle(Interface_Check)& ach,
+                                                        const Handle(StepKinematics_SphericalPairWithPin)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"spherical_pair_with_pin") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithPin::WriteStep (StepData_StepWriter& SW,
+                                                         const Handle(StepKinematics_SphericalPairWithPin)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithPin::Share (const Handle(StepKinematics_SphericalPairWithPin)& ent,
+                                                     Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPin.hxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPin.hxx
new file mode 100644 (file)
index 0000000..8cc5cf0
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSphericalPairWithPin_HeaderFile_
+#define _RWStepKinematics_RWSphericalPairWithPin_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SphericalPairWithPin;
+
+//! Read & Write tool for SphericalPairWithPin
+class RWStepKinematics_RWSphericalPairWithPin
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSphericalPairWithPin();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SphericalPairWithPin)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SphericalPairWithPin)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SphericalPairWithPin)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSphericalPairWithPin_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPinAndRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPinAndRange.cxx
new file mode 100644 (file)
index 0000000..49550bb
--- /dev/null
@@ -0,0 +1,258 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSphericalPairWithPinAndRange.hxx>
+#include <StepKinematics_SphericalPairWithPinAndRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSphericalPairWithPinAndRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSphericalPairWithPinAndRange::RWStepKinematics_RWSphericalPairWithPinAndRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithPinAndRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                                const Standard_Integer num,
+                                                                Handle(Interface_Check)& ach,
+                                                                const Handle(StepKinematics_SphericalPairWithPinAndRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,16,ach,"spherical_pair_with_pin_and_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of SphericalPairWithPinAndRange
+
+  Standard_Real aLowerLimitYaw;
+  Standard_Boolean hasLowerLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_yaw", ach, aLowerLimitYaw);
+  }
+  else {
+    hasLowerLimitYaw = Standard_False;
+    aLowerLimitYaw = 0;
+  }
+
+  Standard_Real aUpperLimitYaw;
+  Standard_Boolean hasUpperLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_yaw", ach, aUpperLimitYaw);
+  }
+  else {
+    hasUpperLimitYaw = Standard_False;
+    aUpperLimitYaw = 0;
+  }
+
+  Standard_Real aLowerLimitRoll;
+  Standard_Boolean hasLowerLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "lower_limit_roll", ach, aLowerLimitRoll);
+  }
+  else {
+    hasLowerLimitRoll = Standard_False;
+    aLowerLimitRoll = 0;
+  }
+
+  Standard_Real aUpperLimitRoll;
+  Standard_Boolean hasUpperLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,16) ) {
+    data->ReadReal (num, 16, "upper_limit_roll", ach, aUpperLimitRoll);
+  }
+  else {
+    hasUpperLimitRoll = Standard_False;
+    aUpperLimitRoll = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithPinAndRange::WriteStep (StepData_StepWriter& SW,
+                                                                 const Handle(StepKinematics_SphericalPairWithPinAndRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of SphericalPairWithPinAndRange
+
+  if ( ent->HasLowerLimitYaw() ) {
+    SW.Send (ent->LowerLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitYaw() ) {
+    SW.Send (ent->UpperLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitRoll() ) {
+    SW.Send (ent->LowerLimitRoll());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitRoll() ) {
+    SW.Send (ent->UpperLimitRoll());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithPinAndRange::Share (const Handle(StepKinematics_SphericalPairWithPinAndRange)& ent,
+                                                             Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of SphericalPairWithPinAndRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPinAndRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithPinAndRange.hxx
new file mode 100644 (file)
index 0000000..2b41521
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSphericalPairWithPinAndRange_HeaderFile_
+#define _RWStepKinematics_RWSphericalPairWithPinAndRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SphericalPairWithPinAndRange;
+
+//! Read & Write tool for SphericalPairWithPinAndRange
+class RWStepKinematics_RWSphericalPairWithPinAndRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSphericalPairWithPinAndRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SphericalPairWithPinAndRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SphericalPairWithPinAndRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SphericalPairWithPinAndRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSphericalPairWithPinAndRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithRange.cxx
new file mode 100644 (file)
index 0000000..0c5ddb9
--- /dev/null
@@ -0,0 +1,292 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSphericalPairWithRange.hxx>
+#include <StepKinematics_SphericalPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSphericalPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSphericalPairWithRange::RWStepKinematics_RWSphericalPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_SphericalPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,18,ach,"spherical_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of SphericalPairWithRange
+
+  Standard_Real aLowerLimitYaw;
+  Standard_Boolean hasLowerLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "lower_limit_yaw", ach, aLowerLimitYaw);
+  }
+  else {
+    hasLowerLimitYaw = Standard_False;
+    aLowerLimitYaw = 0;
+  }
+
+  Standard_Real aUpperLimitYaw;
+  Standard_Boolean hasUpperLimitYaw = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "upper_limit_yaw", ach, aUpperLimitYaw);
+  }
+  else {
+    hasUpperLimitYaw = Standard_False;
+    aUpperLimitYaw = 0;
+  }
+
+  Standard_Real aLowerLimitPitch;
+  Standard_Boolean hasLowerLimitPitch = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "lower_limit_pitch", ach, aLowerLimitPitch);
+  }
+  else {
+    hasLowerLimitPitch = Standard_False;
+    aLowerLimitPitch = 0;
+  }
+
+  Standard_Real aUpperLimitPitch;
+  Standard_Boolean hasUpperLimitPitch = Standard_True;
+  if ( data->IsParamDefined (num,16) ) {
+    data->ReadReal (num, 16, "upper_limit_pitch", ach, aUpperLimitPitch);
+  }
+  else {
+    hasUpperLimitPitch = Standard_False;
+    aUpperLimitPitch = 0;
+  }
+
+  Standard_Real aLowerLimitRoll;
+  Standard_Boolean hasLowerLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,17) ) {
+    data->ReadReal (num, 17, "lower_limit_roll", ach, aLowerLimitRoll);
+  }
+  else {
+    hasLowerLimitRoll = Standard_False;
+    aLowerLimitRoll = 0;
+  }
+
+  Standard_Real aUpperLimitRoll;
+  Standard_Boolean hasUpperLimitRoll = Standard_True;
+  if ( data->IsParamDefined (num,18) ) {
+    data->ReadReal (num, 18, "upper_limit_roll", ach, aUpperLimitRoll);
+  }
+  else {
+    hasUpperLimitRoll = Standard_False;
+    aUpperLimitRoll = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasLowerLimitYaw,
+            aLowerLimitYaw,
+            hasUpperLimitYaw,
+            aUpperLimitYaw,
+            hasLowerLimitPitch,
+            aLowerLimitPitch,
+            hasUpperLimitPitch,
+            aUpperLimitPitch,
+            hasLowerLimitRoll,
+            aLowerLimitRoll,
+            hasUpperLimitRoll,
+            aUpperLimitRoll);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_SphericalPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of SphericalPairWithRange
+
+  if ( ent->HasLowerLimitYaw() ) {
+    SW.Send (ent->LowerLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitYaw() ) {
+    SW.Send (ent->UpperLimitYaw());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitPitch() ) {
+    SW.Send (ent->LowerLimitPitch());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitPitch() ) {
+    SW.Send (ent->UpperLimitPitch());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitRoll() ) {
+    SW.Send (ent->LowerLimitRoll());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitRoll() ) {
+    SW.Send (ent->UpperLimitRoll());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSphericalPairWithRange::Share (const Handle(StepKinematics_SphericalPairWithRange)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of SphericalPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWSphericalPairWithRange.hxx
new file mode 100644 (file)
index 0000000..c0f9d40
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSphericalPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWSphericalPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SphericalPairWithRange;
+
+//! Read & Write tool for SphericalPairWithRange
+class RWStepKinematics_RWSphericalPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSphericalPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SphericalPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SphericalPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SphericalPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSphericalPairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSuParameters.cxx b/src/RWStepKinematics/RWStepKinematics_RWSuParameters.cxx
new file mode 100644 (file)
index 0000000..e09db55
--- /dev/null
@@ -0,0 +1,121 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSuParameters.hxx>
+#include <StepKinematics_SuParameters.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSuParameters
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSuParameters::RWStepKinematics_RWSuParameters() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSuParameters::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                const Standard_Integer num,
+                                                Handle(Interface_Check)& ach,
+                                                const Handle(StepKinematics_SuParameters)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,7,ach,"su_parameters") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Own fields of SuParameters
+
+  Standard_Real aA;
+  data->ReadReal (num, 2, "a", ach, aA);
+
+  Standard_Real aAlpha;
+  data->ReadReal (num, 3, "alpha", ach, aAlpha);
+
+  Standard_Real aB;
+  data->ReadReal (num, 4, "b", ach, aB);
+
+  Standard_Real aBeta;
+  data->ReadReal (num, 5, "beta", ach, aBeta);
+
+  Standard_Real aC;
+  data->ReadReal (num, 6, "c", ach, aC);
+
+  Standard_Real aGamma;
+  data->ReadReal (num, 7, "gamma", ach, aGamma);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aA,
+            aAlpha,
+            aB,
+            aBeta,
+            aC,
+            aGamma);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSuParameters::WriteStep (StepData_StepWriter& SW,
+                                                 const Handle(StepKinematics_SuParameters)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of SuParameters
+
+  SW.Send (ent->A());
+
+  SW.Send (ent->Alpha());
+
+  SW.Send (ent->B());
+
+  SW.Send (ent->Beta());
+
+  SW.Send (ent->C());
+
+  SW.Send (ent->Gamma());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSuParameters::Share (const Handle(StepKinematics_SuParameters)& /*ent*/,
+                                             Interface_EntityIterator& /*iter*/) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Own fields of SuParameters
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSuParameters.hxx b/src/RWStepKinematics/RWStepKinematics_RWSuParameters.hxx
new file mode 100644 (file)
index 0000000..61abdce
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSuParameters_HeaderFile_
+#define _RWStepKinematics_RWSuParameters_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SuParameters;
+
+//! Read & Write tool for SuParameters
+class RWStepKinematics_RWSuParameters
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSuParameters();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SuParameters)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SuParameters)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SuParameters)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSuParameters_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSurfacePairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWSurfacePairWithRange.cxx
new file mode 100644 (file)
index 0000000..2931390
--- /dev/null
@@ -0,0 +1,228 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWSurfacePairWithRange.hxx>
+#include <StepKinematics_SurfacePairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+#include <Standard_Boolean.hxx>
+#include <StepGeom_RectangularTrimmedSurface.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWSurfacePairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWSurfacePairWithRange::RWStepKinematics_RWSurfacePairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSurfacePairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                        const Standard_Integer num,
+                                                        Handle(Interface_Check)& ach,
+                                                        const Handle(StepKinematics_SurfacePairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,13,ach,"surface_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of SurfacePair
+
+  Handle(StepGeom_Surface) aSurfacePair_Surface1;
+  data->ReadEntity (num, 7, "surface_pair.surface1", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface1);
+
+  Handle(StepGeom_Surface) aSurfacePair_Surface2;
+  data->ReadEntity (num, 8, "surface_pair.surface2", ach, STANDARD_TYPE(StepGeom_Surface), aSurfacePair_Surface2);
+
+  Standard_Boolean aSurfacePair_Orientation;
+  data->ReadBoolean (num, 9, "surface_pair.orientation", ach, aSurfacePair_Orientation);
+
+  // Own fields of SurfacePairWithRange
+
+  Handle(StepGeom_RectangularTrimmedSurface) aRangeOnSurface1;
+  data->ReadEntity (num, 10, "range_on_surface1", ach, STANDARD_TYPE(StepGeom_RectangularTrimmedSurface), aRangeOnSurface1);
+
+  Handle(StepGeom_RectangularTrimmedSurface) aRangeOnSurface2;
+  data->ReadEntity (num, 11, "range_on_surface2", ach, STANDARD_TYPE(StepGeom_RectangularTrimmedSurface), aRangeOnSurface2);
+
+  Standard_Real aLowerLimitActualRotation;
+  Standard_Boolean hasLowerLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,12) ) {
+    data->ReadReal (num, 12, "lower_limit_actual_rotation", ach, aLowerLimitActualRotation);
+  }
+  else {
+    hasLowerLimitActualRotation = Standard_False;
+    aLowerLimitActualRotation = 0;
+  }
+
+  Standard_Real aUpperLimitActualRotation;
+  Standard_Boolean hasUpperLimitActualRotation = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "upper_limit_actual_rotation", ach, aUpperLimitActualRotation);
+  }
+  else {
+    hasUpperLimitActualRotation = Standard_False;
+    aUpperLimitActualRotation = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aSurfacePair_Surface1,
+            aSurfacePair_Surface2,
+            aSurfacePair_Orientation,
+            aRangeOnSurface1,
+            aRangeOnSurface2,
+            hasLowerLimitActualRotation,
+            aLowerLimitActualRotation,
+            hasUpperLimitActualRotation,
+            aUpperLimitActualRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSurfacePairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                         const Handle(StepKinematics_SurfacePairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of SurfacePair
+
+  SW.Send (ent->Surface1());
+
+  SW.Send (ent->Surface2());
+
+  SW.SendBoolean (ent->Orientation());
+
+  // Own fields of SurfacePairWithRange
+
+  SW.Send (ent->RangeOnSurface1());
+
+  SW.Send (ent->RangeOnSurface2());
+
+  if ( ent->HasLowerLimitActualRotation() ) {
+    SW.Send (ent->LowerLimitActualRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitActualRotation() ) {
+    SW.Send (ent->UpperLimitActualRotation());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWSurfacePairWithRange::Share (const Handle(StepKinematics_SurfacePairWithRange)& ent,
+                                                     Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of SurfacePair
+
+  iter.AddItem (ent->StepKinematics_SurfacePair::Surface1());
+
+  iter.AddItem (ent->StepKinematics_SurfacePair::Surface2());
+
+  // Own fields of SurfacePairWithRange
+
+  iter.AddItem (ent->RangeOnSurface1());
+
+  iter.AddItem (ent->RangeOnSurface2());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWSurfacePairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWSurfacePairWithRange.hxx
new file mode 100644 (file)
index 0000000..de9a226
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWSurfacePairWithRange_HeaderFile_
+#define _RWStepKinematics_RWSurfacePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_SurfacePairWithRange;
+
+//! Read & Write tool for SurfacePairWithRange
+class RWStepKinematics_RWSurfacePairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWSurfacePairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_SurfacePairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_SurfacePairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_SurfacePairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWSurfacePairWithRange_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPair.cxx
new file mode 100644 (file)
index 0000000..a6bd498
--- /dev/null
@@ -0,0 +1,183 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWUnconstrainedPair.hxx>
+#include <StepKinematics_UnconstrainedPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWUnconstrainedPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWUnconstrainedPair::RWStepKinematics_RWUnconstrainedPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUnconstrainedPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepKinematics_UnconstrainedPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,12,ach,"unconstrained_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUnconstrainedPair::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepKinematics_UnconstrainedPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUnconstrainedPair::Share (const Handle(StepKinematics_UnconstrainedPair)& ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPair.hxx
new file mode 100644 (file)
index 0000000..374feb8
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWUnconstrainedPair_HeaderFile_
+#define _RWStepKinematics_RWUnconstrainedPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_UnconstrainedPair;
+
+//! Read & Write tool for UnconstrainedPair
+class RWStepKinematics_RWUnconstrainedPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWUnconstrainedPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_UnconstrainedPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_UnconstrainedPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_UnconstrainedPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWUnconstrainedPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPairValue.cxx
new file mode 100644 (file)
index 0000000..79b7648
--- /dev/null
@@ -0,0 +1,108 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWUnconstrainedPairValue.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_Axis2Placement3d.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWUnconstrainedPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWUnconstrainedPairValue::RWStepKinematics_RWUnconstrainedPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUnconstrainedPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_UnconstrainedPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,3,ach,"unconstrained_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of UnconstrainedPairValue
+
+  Handle(StepGeom_Axis2Placement3d) aActualPlacement;
+  data->ReadEntity (num, 3, "actual_placement", ach, STANDARD_TYPE(StepGeom_Axis2Placement3d), aActualPlacement);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aActualPlacement);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUnconstrainedPairValue::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_UnconstrainedPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of UnconstrainedPairValue
+
+  SW.Send (ent->ActualPlacement());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUnconstrainedPairValue::Share (const Handle(StepKinematics_UnconstrainedPairValue)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of UnconstrainedPairValue
+
+  iter.AddItem (ent->ActualPlacement());
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWUnconstrainedPairValue.hxx
new file mode 100644 (file)
index 0000000..67a9dd9
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWUnconstrainedPairValue_HeaderFile_
+#define _RWStepKinematics_RWUnconstrainedPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_UnconstrainedPairValue;
+
+//! Read & Write tool for UnconstrainedPairValue
+class RWStepKinematics_RWUnconstrainedPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWUnconstrainedPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_UnconstrainedPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_UnconstrainedPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_UnconstrainedPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWUnconstrainedPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUniversalPair.cxx b/src/RWStepKinematics/RWStepKinematics_RWUniversalPair.cxx
new file mode 100644 (file)
index 0000000..9fd00ab
--- /dev/null
@@ -0,0 +1,207 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWUniversalPair.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWUniversalPair
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWUniversalPair::RWStepKinematics_RWUniversalPair() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPair::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                 const Standard_Integer num,
+                                                 Handle(Interface_Check)& ach,
+                                                 const Handle(StepKinematics_UniversalPair)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,13,ach,"universal_pair") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Own fields of UniversalPair
+
+  Standard_Real aInputSkewAngle;
+  Standard_Boolean hasInputSkewAngle = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "input_skew_angle", ach, aInputSkewAngle);
+  }
+  else {
+    hasInputSkewAngle = Standard_False;
+    aInputSkewAngle = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasInputSkewAngle,
+            aInputSkewAngle);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPair::WriteStep (StepData_StepWriter& SW,
+                                                  const Handle(StepKinematics_UniversalPair)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of UniversalPair
+
+  if ( ent->HasInputSkewAngle() ) {
+    SW.Send (ent->InputSkewAngle());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPair::Share (const Handle(StepKinematics_UniversalPair)& ent,
+                                              Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Own fields of UniversalPair
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUniversalPair.hxx b/src/RWStepKinematics/RWStepKinematics_RWUniversalPair.hxx
new file mode 100644 (file)
index 0000000..0d57d40
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWUniversalPair_HeaderFile_
+#define _RWStepKinematics_RWUniversalPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_UniversalPair;
+
+//! Read & Write tool for UniversalPair
+class RWStepKinematics_RWUniversalPair
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWUniversalPair();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_UniversalPair)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_UniversalPair)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_UniversalPair)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWUniversalPair_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUniversalPairValue.cxx b/src/RWStepKinematics/RWStepKinematics_RWUniversalPairValue.cxx
new file mode 100644 (file)
index 0000000..7ce5190
--- /dev/null
@@ -0,0 +1,112 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWUniversalPairValue.hxx>
+#include <StepKinematics_UniversalPairValue.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWUniversalPairValue
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWUniversalPairValue::RWStepKinematics_RWUniversalPairValue() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPairValue::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                      const Standard_Integer num,
+                                                      Handle(Interface_Check)& ach,
+                                                      const Handle(StepKinematics_UniversalPairValue)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,4,ach,"universal_pair_value") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of PairValue
+
+  Handle(StepKinematics_KinematicPair) aPairValue_AppliesToPair;
+  data->ReadEntity (num, 2, "pair_value.applies_to_pair", ach, STANDARD_TYPE(StepKinematics_KinematicPair), aPairValue_AppliesToPair);
+
+  // Own fields of UniversalPairValue
+
+  Standard_Real aFirstRotationAngle;
+  data->ReadReal (num, 3, "first_rotation_angle", ach, aFirstRotationAngle);
+
+  Standard_Real aSecondRotationAngle;
+  data->ReadReal (num, 4, "second_rotation_angle", ach, aSecondRotationAngle);
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aPairValue_AppliesToPair,
+            aFirstRotationAngle,
+            aSecondRotationAngle);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPairValue::WriteStep (StepData_StepWriter& SW,
+                                                       const Handle(StepKinematics_UniversalPairValue)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Own fields of PairValue
+
+  SW.Send (ent->AppliesToPair());
+
+  // Own fields of UniversalPairValue
+
+  SW.Send (ent->FirstRotationAngle());
+
+  SW.Send (ent->SecondRotationAngle());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPairValue::Share (const Handle(StepKinematics_UniversalPairValue)& ent,
+                                                   Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of PairValue
+
+  iter.AddItem (ent->StepKinematics_PairValue::AppliesToPair());
+
+  // Own fields of UniversalPairValue
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUniversalPairValue.hxx b/src/RWStepKinematics/RWStepKinematics_RWUniversalPairValue.hxx
new file mode 100644 (file)
index 0000000..40a6ffb
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWUniversalPairValue_HeaderFile_
+#define _RWStepKinematics_RWUniversalPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_UniversalPairValue;
+
+//! Read & Write tool for UniversalPairValue
+class RWStepKinematics_RWUniversalPairValue
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWUniversalPairValue();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_UniversalPairValue)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_UniversalPairValue)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_UniversalPairValue)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWUniversalPairValue_HeaderFile_
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUniversalPairWithRange.cxx b/src/RWStepKinematics/RWStepKinematics_RWUniversalPairWithRange.cxx
new file mode 100644 (file)
index 0000000..88828d7
--- /dev/null
@@ -0,0 +1,281 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepKinematics_RWUniversalPairWithRange.hxx>
+#include <StepKinematics_UniversalPairWithRange.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+
+//=======================================================================
+//function : RWStepKinematics_RWUniversalPairWithRange
+//purpose  : 
+//=======================================================================
+
+RWStepKinematics_RWUniversalPairWithRange::RWStepKinematics_RWUniversalPairWithRange() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPairWithRange::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                          const Standard_Integer num,
+                                                          Handle(Interface_Check)& ach,
+                                                          const Handle(StepKinematics_UniversalPairWithRange)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,17,ach,"universal_pair_with_range") ) return;
+
+  // Inherited fields of RepresentationItem
+
+  Handle(TCollection_HAsciiString) aRepresentationItem_Name;
+  data->ReadString (num, 1, "representation_item.name", ach, aRepresentationItem_Name);
+
+  // Inherited fields of ItemDefinedTransformation
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Name;
+  data->ReadString (num, 2, "item_defined_transformation.name", ach, aItemDefinedTransformation_Name);
+
+  Handle(TCollection_HAsciiString) aItemDefinedTransformation_Description;
+  Standard_Boolean hasItemDefinedTransformation_Description = Standard_True;
+  if ( data->IsParamDefined (num,3) ) {
+    data->ReadString (num, 3, "item_defined_transformation.description", ach, aItemDefinedTransformation_Description);
+  }
+  else {
+    hasItemDefinedTransformation_Description = Standard_False;
+    aItemDefinedTransformation_Description.Nullify();
+  }
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem1;
+  data->ReadEntity (num, 4, "item_defined_transformation.transform_item1", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem1);
+
+  Handle(StepRepr_RepresentationItem) aItemDefinedTransformation_TransformItem2;
+  data->ReadEntity (num, 5, "item_defined_transformation.transform_item2", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItemDefinedTransformation_TransformItem2);
+
+  // Inherited fields of KinematicPair
+
+  Handle(StepKinematics_KinematicJoint) aKinematicPair_Joint;
+  data->ReadEntity (num, 6, "kinematic_pair.joint", ach, STANDARD_TYPE(StepKinematics_KinematicJoint), aKinematicPair_Joint);
+
+  // Inherited fields of LowOrderKinematicPair
+
+  Standard_Boolean aLowOrderKinematicPair_TX;
+  data->ReadBoolean (num, 7, "low_order_kinematic_pair.t_x", ach, aLowOrderKinematicPair_TX);
+
+  Standard_Boolean aLowOrderKinematicPair_TY;
+  data->ReadBoolean (num, 8, "low_order_kinematic_pair.t_y", ach, aLowOrderKinematicPair_TY);
+
+  Standard_Boolean aLowOrderKinematicPair_TZ;
+  data->ReadBoolean (num, 9, "low_order_kinematic_pair.t_z", ach, aLowOrderKinematicPair_TZ);
+
+  Standard_Boolean aLowOrderKinematicPair_RX;
+  data->ReadBoolean (num, 10, "low_order_kinematic_pair.r_x", ach, aLowOrderKinematicPair_RX);
+
+  Standard_Boolean aLowOrderKinematicPair_RY;
+  data->ReadBoolean (num, 11, "low_order_kinematic_pair.r_y", ach, aLowOrderKinematicPair_RY);
+
+  Standard_Boolean aLowOrderKinematicPair_RZ;
+  data->ReadBoolean (num, 12, "low_order_kinematic_pair.r_z", ach, aLowOrderKinematicPair_RZ);
+
+  // Inherited fields of UniversalPair
+
+  Standard_Real aUniversalPair_InputSkewAngle;
+  Standard_Boolean hasUniversalPair_InputSkewAngle = Standard_True;
+  if ( data->IsParamDefined (num,13) ) {
+    data->ReadReal (num, 13, "universal_pair.input_skew_angle", ach, aUniversalPair_InputSkewAngle);
+  }
+  else {
+    hasUniversalPair_InputSkewAngle = Standard_False;
+    aUniversalPair_InputSkewAngle = 0;
+  }
+
+  // Own fields of UniversalPairWithRange
+
+  Standard_Real aLowerLimitFirstRotation;
+  Standard_Boolean hasLowerLimitFirstRotation = Standard_True;
+  if ( data->IsParamDefined (num,14) ) {
+    data->ReadReal (num, 14, "lower_limit_first_rotation", ach, aLowerLimitFirstRotation);
+  }
+  else {
+    hasLowerLimitFirstRotation = Standard_False;
+    aLowerLimitFirstRotation = 0;
+  }
+
+  Standard_Real aUpperLimitFirstRotation;
+  Standard_Boolean hasUpperLimitFirstRotation = Standard_True;
+  if ( data->IsParamDefined (num,15) ) {
+    data->ReadReal (num, 15, "upper_limit_first_rotation", ach, aUpperLimitFirstRotation);
+  }
+  else {
+    hasUpperLimitFirstRotation = Standard_False;
+    aUpperLimitFirstRotation = 0;
+  }
+
+  Standard_Real aLowerLimitSecondRotation;
+  Standard_Boolean hasLowerLimitSecondRotation = Standard_True;
+  if ( data->IsParamDefined (num,16) ) {
+    data->ReadReal (num, 16, "lower_limit_second_rotation", ach, aLowerLimitSecondRotation);
+  }
+  else {
+    hasLowerLimitSecondRotation = Standard_False;
+    aLowerLimitSecondRotation = 0;
+  }
+
+  Standard_Real aUpperLimitSecondRotation;
+  Standard_Boolean hasUpperLimitSecondRotation = Standard_True;
+  if ( data->IsParamDefined (num,17) ) {
+    data->ReadReal (num, 17, "upper_limit_second_rotation", ach, aUpperLimitSecondRotation);
+  }
+  else {
+    hasUpperLimitSecondRotation = Standard_False;
+    aUpperLimitSecondRotation = 0;
+  }
+
+  // Initialize entity
+  ent->Init(aRepresentationItem_Name,
+            aItemDefinedTransformation_Name,
+            hasItemDefinedTransformation_Description,
+            aItemDefinedTransformation_Description,
+            aItemDefinedTransformation_TransformItem1,
+            aItemDefinedTransformation_TransformItem2,
+            aKinematicPair_Joint,
+            aLowOrderKinematicPair_TX,
+            aLowOrderKinematicPair_TY,
+            aLowOrderKinematicPair_TZ,
+            aLowOrderKinematicPair_RX,
+            aLowOrderKinematicPair_RY,
+            aLowOrderKinematicPair_RZ,
+            hasUniversalPair_InputSkewAngle,
+            aUniversalPair_InputSkewAngle,
+            hasLowerLimitFirstRotation,
+            aLowerLimitFirstRotation,
+            hasUpperLimitFirstRotation,
+            aUpperLimitFirstRotation,
+            hasLowerLimitSecondRotation,
+            aLowerLimitSecondRotation,
+            hasUpperLimitSecondRotation,
+            aUpperLimitSecondRotation);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPairWithRange::WriteStep (StepData_StepWriter& SW,
+                                                           const Handle(StepKinematics_UniversalPairWithRange)& ent) const
+{
+
+  // Own fields of RepresentationItem
+
+  SW.Send (ent->Name());
+
+  // Inherited fields of ItemDefinedTransformation
+
+  SW.Send (ent->ItemDefinedTransformation()->Name());
+
+  if ( ent->ItemDefinedTransformation()->HasDescription() ) {
+    SW.Send (ent->ItemDefinedTransformation()->Description());
+  }
+  else SW.SendUndef();
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem1());
+
+  SW.Send (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Own fields of KinematicPair
+
+  SW.Send (ent->Joint());
+
+  // Own fields of LowOrderKinematicPair
+
+  SW.SendBoolean (ent->TX());
+
+  SW.SendBoolean (ent->TY());
+
+  SW.SendBoolean (ent->TZ());
+
+  SW.SendBoolean (ent->RX());
+
+  SW.SendBoolean (ent->RY());
+
+  SW.SendBoolean (ent->RZ());
+
+  // Own fields of UniversalPair
+
+  if ( ent->HasInputSkewAngle() ) {
+    SW.Send (ent->InputSkewAngle());
+  }
+  else SW.SendUndef();
+
+  // Own fields of UniversalPairWithRange
+
+  if ( ent->HasLowerLimitFirstRotation() ) {
+    SW.Send (ent->LowerLimitFirstRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitFirstRotation() ) {
+    SW.Send (ent->UpperLimitFirstRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasLowerLimitSecondRotation() ) {
+    SW.Send (ent->LowerLimitSecondRotation());
+  }
+  else SW.SendUndef();
+
+  if ( ent->HasUpperLimitSecondRotation() ) {
+    SW.Send (ent->UpperLimitSecondRotation());
+  }
+  else SW.SendUndef();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepKinematics_RWUniversalPairWithRange::Share (const Handle(StepKinematics_UniversalPairWithRange)& ent,
+                                                       Interface_EntityIterator& iter) const
+{
+
+  // Inherited fields of RepresentationItem
+
+  // Inherited fields of ItemDefinedTransformation
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem1());
+
+  iter.AddItem (ent->ItemDefinedTransformation()->TransformItem2());
+
+  // Inherited fields of KinematicPair
+
+  iter.AddItem (ent->StepKinematics_KinematicPair::Joint());
+
+  // Inherited fields of LowOrderKinematicPair
+
+  // Inherited fields of UniversalPair
+
+  // Own fields of UniversalPairWithRange
+}
diff --git a/src/RWStepKinematics/RWStepKinematics_RWUniversalPairWithRange.hxx b/src/RWStepKinematics/RWStepKinematics_RWUniversalPairWithRange.hxx
new file mode 100644 (file)
index 0000000..82e88dc
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepKinematics_RWUniversalPairWithRange_HeaderFile_
+#define _RWStepKinematics_RWUniversalPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepKinematics_UniversalPairWithRange;
+
+//! Read & Write tool for UniversalPairWithRange
+class RWStepKinematics_RWUniversalPairWithRange
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepKinematics_RWUniversalPairWithRange();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepKinematics_UniversalPairWithRange)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepKinematics_UniversalPairWithRange)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepKinematics_UniversalPairWithRange)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepKinematics_RWUniversalPairWithRange_HeaderFile_
index e1dc12da999823c844a2500677bc6b517a46f3cc..3dab65285424cb558178dbd1e6d090e0536f35a6 100644 (file)
@@ -92,10 +92,14 @@ RWStepRepr_RWRepresentation.cxx
 RWStepRepr_RWRepresentation.hxx
 RWStepRepr_RWRepresentationContext.cxx
 RWStepRepr_RWRepresentationContext.hxx
+RWStepRepr_RWRepresentationContextReference.cxx
+RWStepRepr_RWRepresentationContextReference.hxx
 RWStepRepr_RWRepresentationItem.cxx
 RWStepRepr_RWRepresentationItem.hxx
 RWStepRepr_RWRepresentationMap.cxx
 RWStepRepr_RWRepresentationMap.hxx
+RWStepRepr_RWRepresentationReference.cxx
+RWStepRepr_RWRepresentationReference.hxx
 RWStepRepr_RWRepresentationRelationship.cxx
 RWStepRepr_RWRepresentationRelationship.hxx
 RWStepRepr_RWRepresentationRelationshipWithTransformation.cxx
diff --git a/src/RWStepRepr/RWStepRepr_RWRepresentationContextReference.cxx b/src/RWStepRepr/RWStepRepr_RWRepresentationContextReference.cxx
new file mode 100644 (file)
index 0000000..35d3634
--- /dev/null
@@ -0,0 +1,78 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepRepr_RWRepresentationContextReference.hxx>
+#include <StepRepr_RepresentationContextReference.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+//=======================================================================
+//function : RWStepRepr_RWRepresentationContextReference
+//purpose  : 
+//=======================================================================
+
+RWStepRepr_RWRepresentationContextReference::RWStepRepr_RWRepresentationContextReference() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepRepr_RWRepresentationContextReference::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                            const Standard_Integer num,
+                                                            Handle(Interface_Check)& ach,
+                                                            const Handle(StepRepr_RepresentationContextReference)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,1,ach,"representation_context_reference") ) return;
+
+  // Own fields of RepresentationContextReference
+
+  Handle(TCollection_HAsciiString) aContextIdentifier;
+  data->ReadString (num, 1, "context_identifier", ach, aContextIdentifier);
+
+  // Initialize entity
+  ent->Init(aContextIdentifier);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepRepr_RWRepresentationContextReference::WriteStep (StepData_StepWriter& SW,
+                                                             const Handle(StepRepr_RepresentationContextReference)& ent) const
+{
+
+  // Own fields of RepresentationContextReference
+
+  SW.Send (ent->ContextIdentifier());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepRepr_RWRepresentationContextReference::Share (const Handle(StepRepr_RepresentationContextReference)& /*ent*/,
+                                                         Interface_EntityIterator& /*iter*/) const
+{
+
+  // Own fields of RepresentationContextReference
+}
diff --git a/src/RWStepRepr/RWStepRepr_RWRepresentationContextReference.hxx b/src/RWStepRepr/RWStepRepr_RWRepresentationContextReference.hxx
new file mode 100644 (file)
index 0000000..2b9f5f2
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepRepr_RWRepresentationContextReference_HeaderFile_
+#define _RWStepRepr_RWRepresentationContextReference_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepRepr_RepresentationContextReference;
+
+//! Read & Write tool for RepresentationContextReference
+class RWStepRepr_RWRepresentationContextReference
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepRepr_RWRepresentationContextReference();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepRepr_RepresentationContextReference)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepRepr_RepresentationContextReference)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepRepr_RepresentationContextReference)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepRepr_RWRepresentationContextReference_HeaderFile_
diff --git a/src/RWStepRepr/RWStepRepr_RWRepresentationReference.cxx b/src/RWStepRepr/RWStepRepr_RWRepresentationReference.cxx
new file mode 100644 (file)
index 0000000..7936795
--- /dev/null
@@ -0,0 +1,87 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <RWStepRepr_RWRepresentationReference.hxx>
+#include <StepRepr_RepresentationReference.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationContextReference.hxx>
+
+//=======================================================================
+//function : RWStepRepr_RWRepresentationReference
+//purpose  : 
+//=======================================================================
+
+RWStepRepr_RWRepresentationReference::RWStepRepr_RWRepresentationReference() {}
+
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+
+void RWStepRepr_RWRepresentationReference::ReadStep (const Handle(StepData_StepReaderData)& data,
+                                                     const Standard_Integer num,
+                                                     Handle(Interface_Check)& ach,
+                                                     const Handle(StepRepr_RepresentationReference)& ent) const
+{
+  // Check number of parameters
+  if ( ! data->CheckNbParams(num,2,ach,"representation_reference") ) return;
+
+  // Own fields of RepresentationReference
+
+  Handle(TCollection_HAsciiString) aId;
+  data->ReadString (num, 1, "id", ach, aId);
+
+  Handle(StepRepr_RepresentationContextReference) aContextOfItems;
+  data->ReadEntity (num, 2, "context_of_items", ach, STANDARD_TYPE(StepRepr_RepresentationContextReference), aContextOfItems);
+
+  // Initialize entity
+  ent->Init(aId,
+            aContextOfItems);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+
+void RWStepRepr_RWRepresentationReference::WriteStep (StepData_StepWriter& SW,
+                                                      const Handle(StepRepr_RepresentationReference)& ent) const
+{
+
+  // Own fields of RepresentationReference
+
+  SW.Send (ent->Id());
+
+  SW.Send (ent->ContextOfItems());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepRepr_RWRepresentationReference::Share (const Handle(StepRepr_RepresentationReference)& ent,
+                                                  Interface_EntityIterator& iter) const
+{
+
+  // Own fields of RepresentationReference
+
+  iter.AddItem (ent->ContextOfItems());
+}
diff --git a/src/RWStepRepr/RWStepRepr_RWRepresentationReference.hxx b/src/RWStepRepr/RWStepRepr_RWRepresentationReference.hxx
new file mode 100644 (file)
index 0000000..296d609
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _RWStepRepr_RWRepresentationReference_HeaderFile_
+#define _RWStepRepr_RWRepresentationReference_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+class StepRepr_RepresentationReference;
+
+//! Read & Write tool for RepresentationReference
+class RWStepRepr_RWRepresentationReference
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepRepr_RWRepresentationReference();
+
+  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepRepr_RepresentationReference)& ent) const;
+
+  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(StepRepr_RepresentationReference)& ent) const;
+
+  Standard_EXPORT void Share(const Handle(StepRepr_RepresentationReference)& ent, Interface_EntityIterator& iter) const;
+
+};
+#endif // _RWStepRepr_RWRepresentationReference_HeaderFile_
index 77dcf0de3053e6c1a698b2198ce0b040ddc45898..1e3abf704d4ce4c2e635bd657648336fe5ae1a6b 100644 (file)
 #include <StepRepr_PropertyDefinitionRepresentation.hxx>
 #include <StepRepr_Representation.hxx>
 #include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_Transformation.hxx>
 #include <StepRepr_HArray1OfRepresentationItem.hxx>
 #include <StepRepr_RepresentationMap.hxx>
 #include <StepRepr_RepresentationRelationship.hxx>
 #include <StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI.hxx>
 #include <StepRepr_ReprItemAndPlaneAngleMeasureWithUnit.hxx>
 #include <StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI.hxx>
+#include <StepRepr_ShapeRepresentationRelationshipWithTransformation.hxx>
 #include <StepRepr_SequenceOfRepresentationItem.hxx>
 #include <StepRepr_ShapeAspect.hxx>
 #include <StepRepr_ShapeAspectDerivingRelationship.hxx>
 #include <XCAFDoc_ShapeTool.hxx>
 #include <XCAFDoc_View.hxx>
 #include <XCAFDoc_ViewTool.hxx>
+#include <XCAFDoc_KinematicPair.hxx>
 #include <XCAFDoc_Volume.hxx>
+#include <XCAFKinematics_PairObject.hxx>
 #include <XCAFDimTolObjects_DimensionModifiersSequence.hxx>
 #include <XCAFDimTolObjects_GeomToleranceType.hxx>
 #include <XCAFDimTolObjects_DimensionObject.hxx>
 #include <StepVisual_TessellatedItem.hxx>
 #include <StepVisual_TessellatedGeometricSet.hxx>
 #include <StepVisual_TessellatedCurveSet.hxx>
-#include <StepVisual_CoordinatesList.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+#include <StepKinematics_PairValue.hxx>
+#include <StepKinematics_KinematicPropertyMechanismRepresentation.hxx>
+#include <StepKinematics_MechanismRepresentation.hxx>
+#include <StepKinematics_PairRepresentationRelationship.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_PairValue.hxx>
+#include <XCAFDoc_KinematicPairValue.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+#include <XCAFDoc_KinematicTool.hxx>
+#include <XCAFKinematics_PairObject.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+#include <StepKinematics_RigidLinkRepresentation.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <StepShape_Vertex.hxx>
+#include <XCAFKinematics_PairValueObject.hxx>
+#include <StepKinematics_KinematicLinkRepresentation.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <StepKinematics_SuParameters.hxx>
 #include <NCollection_Vector.hxx>
+#include <StepKinematics_ContextDependentKinematicLinkRepresentation.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+//
+#include <StepKinematics_CylindricalPair.hxx>
+#include <StepKinematics_CylindricalPairWithRange.hxx>
+#include <StepKinematics_FullyConstrainedPair.hxx>
+#include <StepKinematics_GearPair.hxx>
+#include <StepKinematics_GearPairWithRange.hxx>
+#include <StepKinematics_HomokineticPair.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+#include <StepKinematics_PlanarCurvePairRange.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+#include <StepKinematics_PlanarPairWithRange.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+#include <StepKinematics_PointOnSurfacePairWithRange.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+#include <StepKinematics_PrismaticPairWithRange.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+#include <StepKinematics_RackAndPinionPairWithRange.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+#include <StepKinematics_RevolutePairWithRange.hxx>
+#include <StepKinematics_RollingCurvePair.hxx>
+#include <StepKinematics_RollingSurfacePair.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+#include <StepKinematics_ScrewPairWithRange.hxx>
+#include <StepKinematics_SlidingCurvePair.hxx>
+#include <StepKinematics_SlidingSurfacePair.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+#include <StepKinematics_SphericalPairWithPinAndRange.hxx>
+#include <StepKinematics_SphericalPairWithRange.hxx>
+#include <StepKinematics_SurfacePairWithRange.hxx>
+#include <StepKinematics_UnconstrainedPair.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+#include <StepKinematics_UniversalPairWithRange.hxx>
+#include <XCAFKinematics_LowOrderPairObject.hxx>
+#include <XCAFKinematics_LowOrderPairObjectWithCoupling.hxx>
+#include <XCAFKinematics_HighOrderPairObject.hxx>
+     //sliding_surface_pair_value, a rolling_surface_pair_value, a revolute_pair_value, 
+     //a prismatic_pair_value, a screw_pair_value, a cylindrical_pair_value,
+     //a spherical_pair_value, a sliding_curve_pair_value, a rolling_curve_pair_value,
+     //a gear_pair_value, a rack_and_pinion_pair_value, an universal_pair_value, a planar_pair_value,
+     //an unconstrained_pair_value, a point_on_surface_pair_value, or a point_on_planar_curve_pair_value.
+#include <StepKinematics_SlidingSurfacePairValue.hxx>
+#include <StepKinematics_RollingSurfacePairValue.hxx>
+#include <StepKinematics_RevolutePairValue.hxx>
+#include <StepKinematics_PrismaticPairValue.hxx>
+#include <StepKinematics_ScrewPairValue.hxx>
+#include <StepKinematics_CylindricalPairValue.hxx>
+#include <StepKinematics_SphericalPairValue.hxx>
+#include <StepKinematics_SlidingCurvePairValue.hxx>
+#include <StepKinematics_RollingCurvePairValue.hxx>
+#include <StepKinematics_GearPairValue.hxx>
+#include <StepKinematics_RackAndPinionPairValue.hxx>
+#include <StepKinematics_UniversalPairValue.hxx>
+#include <StepKinematics_PlanarPairValue.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <StepKinematics_PointOnSurfacePairValue.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairValue.hxx>
+#include <StepKinematics_LinearFlexibleAndPinionPair.hxx>
+#include <StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx>
+#include <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
+
 
 #include <TColgp_HArray1OfXYZ.hxx>
 #include <BRepBuilderAPI_MakeEdge.hxx>
@@ -349,7 +445,8 @@ STEPCAFControl_Reader::STEPCAFControl_Reader(const Handle(XSControl_WorkSession)
   mySHUOMode(Standard_False),
   myGDTMode(Standard_True),
   myMatMode(Standard_True),
-  myViewMode(Standard_True)
+  myViewMode(Standard_True),
+  myKinematicMode(Standard_True)
 {
   STEPCAFControl_Controller::Init();
   mySourceCodePage = (Resource_FormatType )Interface_Static::IVal ("read.stepcaf.codepage");
@@ -708,10 +805,11 @@ Standard_Boolean STEPCAFControl_Reader::Transfer(STEPControl_Reader &reader,
   // read View entities from STEP model
   if (GetViewMode())
     ReadViews(reader.WS(), doc);
-
   // Expand resulting CAF structure for sub-shapes (optionally with their
   // names) if requested
   ExpandSubShapes(STool, map, ShapePDMap);
+  if (GetKinematicMode())
+    ReadKinematics(reader.WS(), doc,map);
 
   // Update assembly compounds
   STool->UpdateAssemblies();
@@ -4220,6 +4318,538 @@ void collectViewShapes(const Handle(XSControl_WorkSession)& theWS,
   }
 }
 
+//=======================================================================
+//function : linkShapeWithJoint
+//purpose  : collect all labels of representations in given representation
+//=======================================================================
+void linkShapeWithJoint(const Handle(XSControl_WorkSession)& theWS,
+  const Handle(TDocStd_Document)& theDoc,
+  const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& theRAssociation,
+  TDF_LabelSequence& theShapes,
+  const XCAFDoc_DataMapOfShapeLabel& aMap)
+{
+  Handle(XSControl_TransferReader) aTR = theWS->TransferReader();
+  Handle(Transfer_TransientProcess) aTP = aTR->TransientProcess();
+  const Interface_Graph& aGraph = aTP->Graph();
+  Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool(theDoc->Main());
+  Handle(StepKinematics_ContextDependentKinematicLinkRepresentation) aCDKLR;
+  Interface_EntityIterator entIt = aGraph.Sharings(theRAssociation);
+  for (entIt.Start(); entIt.More()&aCDKLR.IsNull(); entIt.Next())
+  {
+    aCDKLR = Handle(StepKinematics_ContextDependentKinematicLinkRepresentation)::DownCast(entIt.Value());
+  }
+  Handle(StepRepr_NextAssemblyUsageOccurrence) aNAUO= 
+    Handle(StepRepr_NextAssemblyUsageOccurrence)::DownCast(aCDKLR->RepresentedProductRelation()->Definition().ProductDefinitionRelationship());
+  TDF_Label aShapeLabel;
+  Handle(Transfer_Binder) binder = aTP->Find(aNAUO);
+  TopoDS_Shape aShape = TransferBRep::ShapeResult(aTP, binder);
+  if (aShape.IsNull())
+    return;
+  if (aMap.IsBound(aShape))
+    aShapeLabel = aMap(aShape);
+  else
+    aSTool->Search(aShape, aShapeLabel, Standard_True, Standard_True, Standard_True);
+  theShapes.Append(aShapeLabel);
+}
+
+//=======================================================================
+//function : getKinematicType
+//purpose  : get type of the Kinematic Pair
+//=======================================================================
+XCAFKinematics_PairType getKinematicType(const Handle(StepKinematics_KinematicPair)& aKP)
+{
+  // Low order pairs
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_FullyConstrainedPair)))
+    return XCAFKinematics_PairType_FullyConstrained; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RevolutePair)))
+    return  XCAFKinematics_PairType_Revolute; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PrismaticPair)))
+    return XCAFKinematics_PairType_Prismatic; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_CylindricalPair)))
+    return XCAFKinematics_PairType_Cylindrical; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_UniversalPair)))
+    return XCAFKinematics_PairType_Universal; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_HomokineticPair)))
+    return XCAFKinematics_PairType_Homokinetic; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithPin)))
+    return XCAFKinematics_PairType_SphericalWithPin; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SphericalPair)))
+    return XCAFKinematics_PairType_Spherical; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PlanarPair)))
+    return XCAFKinematics_PairType_Planar; 
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_UnconstrainedPair)))
+    return XCAFKinematics_PairType_Unconstrained;
+
+    // Low order pairs with motion coupling
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_ScrewPair)))
+    return XCAFKinematics_PairType_Screw;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RackAndPinionPair)))
+    return XCAFKinematics_PairType_RackAndPinion;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_GearPair)))
+    return XCAFKinematics_PairType_Gear;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LinearFlexibleAndPinionPair)))
+    return  XCAFKinematics_LinearFlexibleAndPinionPair;
+
+  // High order pairs
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PointOnSurfacePair)))
+    return XCAFKinematics_PairType_PointOnSurface;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SlidingSurfacePair)))
+    return XCAFKinematics_PairType_SlidingSurface;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RollingSurfacePair)))
+    return XCAFKinematics_PairType_RollingSurface;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePair)))
+    return XCAFKinematics_PairType_PointOnPlanarCurve;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SlidingCurvePair)))
+    return XCAFKinematics_PairType_SlidingCurve;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RollingCurvePair)))
+    return  XCAFKinematics_PairType_RollingCurve;
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LinearFlexibleAndPlanarCurvePair)))
+    return  XCAFKinematics_PairType_LinearFlexibleAndPlanarCurvePair;
+  return  XCAFKinematics_PairType_NoType;
+}
+
+//======================== ===============================================
+//function : setKinematicPairLimits
+//purpose  : set limits of the Kinematic Pair on the OCAF
+//=======================================================================
+Standard_Boolean setKinematicPairLimits(Handle(XCAFKinematics_PairObject)& aKinematicPairObj,
+  const Handle(StepKinematics_KinematicPair)& aKP)
+{
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_FullyConstrainedPair)))
+    return Standard_False; // no DOF
+    // Low order pairs
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPair))) 
+  {
+    Handle(XCAFKinematics_LowOrderPairObject) anObj = Handle(XCAFKinematics_LowOrderPairObject)::DownCast(aKinematicPairObj);
+    if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RevolutePairWithRange))) // one rotation DOF
+    {
+      Handle(StepKinematics_RevolutePairWithRange) aRevolutePairWithRange = Handle(StepKinematics_RevolutePairWithRange)::DownCast(aKP);
+      anObj->SetMaxRotationZ(aRevolutePairWithRange->UpperLimitActualRotation());
+      anObj->SetMinRotationZ(aRevolutePairWithRange->LowerLimitActualRotation());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PrismaticPairWithRange)))// one translation DOF
+    {
+      Handle(StepKinematics_PrismaticPairWithRange) aPrismaticPairWithRange = Handle(StepKinematics_PrismaticPairWithRange)::DownCast(aKP);
+      anObj->SetMaxTranslationX(aPrismaticPairWithRange->UpperLimitActualTranslation());
+      anObj->SetMinTranslationX(aPrismaticPairWithRange->LowerLimitActualTranslation());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_CylindricalPairWithRange)))//one rotation and one translation DOF
+    {
+      Handle(StepKinematics_CylindricalPairWithRange) aCylindricalPairWithRange = Handle(StepKinematics_CylindricalPairWithRange)::DownCast(aKP);
+      anObj->SetMaxRotationZ(aCylindricalPairWithRange->UpperLimitActualRotation());
+      anObj->SetMinRotationZ(aCylindricalPairWithRange->LowerLimitActualRotation());
+      anObj->SetMaxTranslationZ(aCylindricalPairWithRange->UpperLimitActualTranslation());
+      anObj->SetMinTranslationZ(aCylindricalPairWithRange->LowerLimitActualTranslation());
+
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_UniversalPairWithRange)))// two rotation DOF
+    {
+      Handle(StepKinematics_UniversalPairWithRange) aUniversalPairWithRange = Handle(StepKinematics_UniversalPairWithRange)::DownCast(aKP);
+      anObj->SetMaxRotationX(aUniversalPairWithRange->UpperLimitFirstRotation());
+      anObj->SetMinRotationX(aUniversalPairWithRange->LowerLimitFirstRotation());
+      anObj->SetMaxRotationZ(aUniversalPairWithRange->UpperLimitSecondRotation());
+      anObj->SetMinRotationZ(aUniversalPairWithRange->LowerLimitSecondRotation());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithPinAndRange)))// two rotation DOF
+    {
+      Handle(StepKinematics_SphericalPairWithPinAndRange) aSphericalPairWithPinAndRange = Handle(StepKinematics_SphericalPairWithPinAndRange)::DownCast(aKP);
+      //Pitch Yaw Roll (Y Z X) <angle>
+      anObj->SetMaxRotationZ(aSphericalPairWithPinAndRange->UpperLimitYaw());
+      anObj->SetMinRotationZ(aSphericalPairWithPinAndRange->LowerLimitYaw());
+      anObj->SetMaxRotationX(aSphericalPairWithPinAndRange->UpperLimitRoll());
+      anObj->SetMinRotationX(aSphericalPairWithPinAndRange->LowerLimitRoll());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithRange)))// three rotation DOF
+    {
+      //Pitch Yaw Roll (Y Z X) <angle>
+      Handle(StepKinematics_SphericalPairWithRange) aSphericalPairWithRange = Handle(StepKinematics_SphericalPairWithRange)::DownCast(aKP);
+      anObj->SetMaxRotationZ(aSphericalPairWithRange->UpperLimitYaw());
+      anObj->SetMinRotationZ(aSphericalPairWithRange->LowerLimitYaw());
+      anObj->SetMaxRotationX(aSphericalPairWithRange->UpperLimitRoll());
+      anObj->SetMinRotationX(aSphericalPairWithRange->LowerLimitRoll());
+      anObj->SetMaxRotationY(aSphericalPairWithRange->UpperLimitPitch());
+      anObj->SetMinRotationY(aSphericalPairWithRange->LowerLimitPitch());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PlanarPairWithRange))) // one rotation and two translation DOF
+    {
+      Handle(StepKinematics_PlanarPairWithRange) aPlanarPairWithRange = Handle(StepKinematics_PlanarPairWithRange)::DownCast(aKP);
+      anObj->SetMaxRotationZ(aPlanarPairWithRange->UpperLimitActualRotation());
+      anObj->SetMinRotationZ(aPlanarPairWithRange->LowerLimitActualRotation());
+      anObj->SetMaxTranslationX(aPlanarPairWithRange->UpperLimitActualTranslationX());
+      anObj->SetMinTranslationX(aPlanarPairWithRange->LowerLimitActualTranslationX());
+      anObj->SetMaxTranslationY(aPlanarPairWithRange->UpperLimitActualTranslationY());
+      anObj->SetMinTranslationY(aPlanarPairWithRange->LowerLimitActualTranslationY());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_UnconstrainedPair)))// three rotation and three translation DOF
+    {
+      Handle(StepKinematics_LowOrderKinematicPairWithRange) anUnconstrainedPair = Handle(StepKinematics_LowOrderKinematicPairWithRange)::DownCast(aKP);
+      anObj->SetMaxRotationX(anUnconstrainedPair->UpperLimitActualRotationX());
+      anObj->SetMinRotationX(anUnconstrainedPair->LowerLimitActualRotationX());
+      anObj->SetMaxRotationY(anUnconstrainedPair->UpperLimitActualRotationY());
+      anObj->SetMinRotationY(anUnconstrainedPair->LowerLimitActualRotationY());
+      anObj->SetMaxRotationZ(anUnconstrainedPair->UpperLimitActualRotationZ());
+      anObj->SetMinRotationZ(anUnconstrainedPair->LowerLimitActualRotationZ());
+      anObj->SetMaxTranslationX(anUnconstrainedPair->UpperLimitActualTranslationX());
+      anObj->SetMinTranslationX(anUnconstrainedPair->LowerLimitActualTranslationX());
+      anObj->SetMaxTranslationY(anUnconstrainedPair->UpperLimitActualTranslationY());
+      anObj->SetMinTranslationY(anUnconstrainedPair->LowerLimitActualTranslationY());
+      anObj->SetMaxTranslationZ(anUnconstrainedPair->UpperLimitActualTranslationZ());
+      anObj->SetMinTranslationZ(anUnconstrainedPair->LowerLimitActualTranslationZ());
+    }
+    return Standard_True;
+  }
+  // Low order pairs with motion coupling
+  else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPairWithMotionCoupling))) 
+  {
+    Handle(XCAFKinematics_LowOrderPairObjectWithCoupling) anObj = Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)::DownCast(aKinematicPairObj);//new XCAFKinematics_LowOrderPairObjectWithCoupling;
+    anObj->SetType(getKinematicType(aKP));
+    if (aKP->IsKind(STANDARD_TYPE(StepKinematics_ScrewPairWithRange)))
+    {
+      Handle(StepKinematics_ScrewPairWithRange) aScrewPairWithRange = Handle(StepKinematics_ScrewPairWithRange)::DownCast(aKP);
+      anObj->SetLowLimit(aScrewPairWithRange->LowerLimitActualRotation());
+      anObj->SetUpperLimit(aScrewPairWithRange->UpperLimitActualRotation());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RackAndPinionPairWithRange)))
+    {
+      Handle(StepKinematics_RackAndPinionPairWithRange) aRackAndPinionPairWithRange = Handle(StepKinematics_RackAndPinionPairWithRange)::DownCast(aKP);
+      anObj->SetUpperLimit(aRackAndPinionPairWithRange->UpperLimitRackDisplacement());
+      anObj->SetLowLimit(aRackAndPinionPairWithRange->LowerLimitRackDisplacement());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_GearPairWithRange)))
+    {
+      Handle(StepKinematics_GearPairWithRange) aGearPairWithRange = Handle(StepKinematics_GearPairWithRange)::DownCast(aKP);
+      anObj->SetLowLimit(aGearPairWithRange->LowerLimitActualRotation1());
+      anObj->SetUpperLimit(aGearPairWithRange->UpperLimitActualRotation1());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LinearFlexibleAndPinionPair)))
+    {
+      Handle(StepKinematics_LinearFlexibleAndPinionPair) aLinearFlexibleAndPinionPair = Handle(StepKinematics_LinearFlexibleAndPinionPair)::DownCast(aKP);
+      anObj->SetPinionRadius(aLinearFlexibleAndPinionPair->PinionRadius());
+    }
+    return Standard_True;
+  }
+  // High order pairs
+  else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_HighOrderKinematicPair))) 
+  {
+  Handle(XCAFKinematics_HighOrderPairObject) anObj = Handle(XCAFKinematics_HighOrderPairObject)::DownCast(aKinematicPairObj);//new XCAFKinematics_HighOrderPairObject;
+    anObj->SetType(getKinematicType(aKP));
+    if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PointOnSurfacePairWithRange)))
+    {
+      Handle(StepKinematics_PointOnSurfacePairWithRange) aPointOnSurfacePairWithRange = Handle(StepKinematics_PointOnSurfacePairWithRange)::DownCast(aKP);
+      anObj->SetLowLimitYaw(aPointOnSurfacePairWithRange->LowerLimitYaw());
+      anObj->SetUpperLimitYaw(aPointOnSurfacePairWithRange->UpperLimitYaw());
+      anObj->SetLowLimitPitch(aPointOnSurfacePairWithRange->LowerLimitPitch());
+      anObj->SetUpperLimitPitch(aPointOnSurfacePairWithRange->UpperLimitPitch());
+      anObj->SetLowLimitRoll(aPointOnSurfacePairWithRange->LowerLimitRoll());
+      anObj->SetUpperLimitRoll(aPointOnSurfacePairWithRange->UpperLimitRoll());
+      anObj->SetSurface(StepToGeom::MakeSurface(aPointOnSurfacePairWithRange->RangeOnPairSurface()));
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SurfacePairWithRange)))
+    {
+      Handle(StepKinematics_SurfacePairWithRange) aSurfacePairWithRange = Handle(StepKinematics_SurfacePairWithRange)::DownCast(aKP);
+      anObj->SetRotationLowLimit(aSurfacePairWithRange->LowerLimitActualRotation());
+      anObj->SetRotationUpperLimit(aSurfacePairWithRange->UpperLimitActualRotation());
+      anObj->SetFirstSurface(StepToGeom::MakeSurface(aSurfacePairWithRange->RangeOnSurface1()));
+      anObj->SetSecondSurface(StepToGeom::MakeSurface(aSurfacePairWithRange->RangeOnSurface2()));
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePairWithRange)))
+    {
+      Handle(StepKinematics_PointOnPlanarCurvePairWithRange) aPointOnPlanarCurvePairWithRange = Handle(StepKinematics_PointOnPlanarCurvePairWithRange)::DownCast(aKP);
+      anObj->SetLowLimitYaw(aPointOnPlanarCurvePairWithRange->LowerLimitYaw());
+      anObj->SetUpperLimitYaw(aPointOnPlanarCurvePairWithRange->UpperLimitYaw());
+      anObj->SetLowLimitPitch(aPointOnPlanarCurvePairWithRange->LowerLimitPitch());
+      anObj->SetUpperLimitPitch(aPointOnPlanarCurvePairWithRange->UpperLimitPitch());
+      anObj->SetLowLimitRoll(aPointOnPlanarCurvePairWithRange->LowerLimitRoll());
+      anObj->SetUpperLimitRoll(aPointOnPlanarCurvePairWithRange->UpperLimitRoll());
+      anObj->SetCurve(StepToGeom::MakeCurve(aPointOnPlanarCurvePairWithRange->RangeOnPairCurve()));
+
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PlanarCurvePairRange)))
+    {
+      Handle(StepKinematics_PlanarCurvePairRange) aPlanarCurvePairRange = Handle(StepKinematics_PlanarCurvePairRange)::DownCast(aKP);
+      anObj->SetFirstCurve(StepToGeom::MakeCurve(aPlanarCurvePairRange->RangeOnCurve1()));
+      anObj->SetSecondCurve(StepToGeom::MakeCurve(aPlanarCurvePairRange->RangeOnCurve2()));
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LinearFlexibleAndPlanarCurvePair)))
+    {
+      Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair) aLinearFlexibleAndPlanarCurvePair = Handle(StepKinematics_LinearFlexibleAndPlanarCurvePair)::DownCast(aKP);
+      anObj->SetOrientation(aLinearFlexibleAndPlanarCurvePair->Orientation());
+      anObj->SetCurve(StepToGeom::MakeCurve(aLinearFlexibleAndPlanarCurvePair->PairCurve()));
+    }
+    return Standard_True;
+  }
+  return Standard_False;
+}
+
+
+//=======================================================================
+//function : createXCAFKinematicPairObject
+//purpose  : create XCAFKinematicPairObject with main parameters of the Kinematic Pair
+//=======================================================================
+Handle(XCAFKinematics_PairObject) createXCAFKinematicPairObject(const Handle(StepKinematics_KinematicPair)& aKP)
+{
+  Handle(XCAFKinematics_PairObject) anObj;
+  // Low order pairs
+  if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPair)))
+  {
+    anObj = new XCAFKinematics_LowOrderPairObject;
+    anObj->SetType(getKinematicType(aKP));
+    Handle(XCAFKinematics_LowOrderPairObject) anLowOrderKinPairObj = Handle(XCAFKinematics_LowOrderPairObject)::DownCast(anObj);
+    if (aKP->IsKind(STANDARD_TYPE(StepKinematics_UniversalPair)))
+    {
+      Handle(StepKinematics_UniversalPair) anUniversalPair = Handle(StepKinematics_UniversalPair)::DownCast(aKP);
+      anLowOrderKinPairObj->SetSkewAngle(anUniversalPair->InputSkewAngle());
+    }
+  }
+  // Low order pairs with motion coupling
+  else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPairWithMotionCoupling)))
+  {
+    anObj = new XCAFKinematics_LowOrderPairObjectWithCoupling;
+    anObj->SetType(getKinematicType(aKP));
+    Handle(XCAFKinematics_LowOrderPairObjectWithCoupling) anLowOrderKinPairWthCouplingObj = Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)::DownCast(anObj);
+    if (aKP->IsKind(STANDARD_TYPE(StepKinematics_ScrewPair)))
+    {
+      Handle(StepKinematics_ScrewPair) aScrewPair = Handle(StepKinematics_ScrewPair)::DownCast(aKP);
+      anLowOrderKinPairWthCouplingObj->SetPitch(aScrewPair->Pitch());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_RackAndPinionPair)))
+    {
+      Handle(StepKinematics_RackAndPinionPair) aRackAndPinionPair = Handle(StepKinematics_RackAndPinionPair)::DownCast(aKP);
+      anLowOrderKinPairWthCouplingObj->SetPinionRadius(aRackAndPinionPair->PinionRadius());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_GearPair)))
+    {
+      Handle(StepKinematics_GearPair) aGearPair = Handle(StepKinematics_GearPair)::DownCast(aKP);
+      anLowOrderKinPairWthCouplingObj->SetBevel(aGearPair->Bevel());
+      anLowOrderKinPairWthCouplingObj->SetGearRatio(aGearPair->GearRatio());
+      anLowOrderKinPairWthCouplingObj->SetHelicalAngle(aGearPair->HelicalAngle());
+      anLowOrderKinPairWthCouplingObj->SetRadiusFirstLink(aGearPair->RadiusFirstLink());
+      anLowOrderKinPairWthCouplingObj->SetRadiusSecondLink(aGearPair->RadiusSecondLink());
+    }
+  }
+  // High order pairs
+  else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_HighOrderKinematicPair)))
+  {
+    anObj = new XCAFKinematics_HighOrderPairObject;
+    anObj->SetType(getKinematicType(aKP));
+    Handle(XCAFKinematics_HighOrderPairObject) aHighOrderPairObject = Handle(XCAFKinematics_HighOrderPairObject)::DownCast(anObj);
+    if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PointOnSurfacePair)))
+    {
+      Handle(StepKinematics_PointOnSurfacePair) aPointOnSurfacePair = Handle(StepKinematics_PointOnSurfacePair)::DownCast(aKP);
+      aHighOrderPairObject->SetSurface(StepToGeom::MakeSurface(aPointOnSurfacePair->PairSurface()));
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_SurfacePair)))
+    {
+      Handle(StepKinematics_SurfacePair) aSurfacePair = Handle(StepKinematics_SurfacePair)::DownCast(aKP);
+      aHighOrderPairObject->SetFirstSurface(StepToGeom::MakeSurface(aSurfacePair->Surface1()));
+      aHighOrderPairObject->SetSecondSurface(StepToGeom::MakeSurface(aSurfacePair->Surface2()));
+      aHighOrderPairObject->SetOrientation(aSurfacePair->Orientation());
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePair)))
+    {
+      Handle(StepKinematics_PointOnPlanarCurvePair) aPointOnPlanarCurvePair = Handle(StepKinematics_PointOnPlanarCurvePair)::DownCast(aKP);
+      aHighOrderPairObject->SetOrientation(aPointOnPlanarCurvePair->Orientation());
+      aHighOrderPairObject->SetCurve(StepToGeom::MakeCurve(aPointOnPlanarCurvePair->PairCurve()));
+
+    }
+    else if (aKP->IsKind(STANDARD_TYPE(StepKinematics_PlanarCurvePair)))
+    {
+      Handle(StepKinematics_PlanarCurvePair) aPlanarCurvePair = Handle(StepKinematics_PlanarCurvePair)::DownCast(aKP);
+      aHighOrderPairObject->SetFirstCurve(StepToGeom::MakeCurve(aPlanarCurvePair->Curve1()));
+      aHighOrderPairObject->SetSecondCurve(StepToGeom::MakeCurve(aPlanarCurvePair->Curve2()));
+      aHighOrderPairObject->SetOrientation(aPlanarCurvePair->Orientation());
+    }
+  }
+  if (!anObj.IsNull())
+  {
+    Handle(StepRepr_RepresentationItem) aTransformItem1 = aKP->ItemDefinedTransformation()->TransformItem1();
+    Handle(StepRepr_RepresentationItem) aTransformItem2 = aKP->ItemDefinedTransformation()->TransformItem2();
+    Handle(Geom_Axis2Placement) aPlacementFirst;
+    Handle(Geom_Axis2Placement) aPlacementSecond;
+    if (aTransformItem1->IsKind(STANDARD_TYPE(StepKinematics_SuParameters)))
+      aPlacementFirst = StepToGeom::MakeAxis2Placement(Handle(StepKinematics_SuParameters)::DownCast(aTransformItem1));
+    else
+      aPlacementFirst = StepToGeom::MakeAxis2Placement(Handle(StepGeom_Axis2Placement3d)::DownCast(aTransformItem1));
+    if (aTransformItem2->IsKind(STANDARD_TYPE(StepKinematics_SuParameters)))
+      aPlacementSecond = StepToGeom::MakeAxis2Placement(Handle(StepKinematics_SuParameters)::DownCast(aTransformItem2));
+    else
+      aPlacementSecond = StepToGeom::MakeAxis2Placement(Handle(StepGeom_Axis2Placement3d)::DownCast(aTransformItem2));
+    if (!aKP->Joint()->Name()->IsEmpty())
+      anObj->SetName(aKP->Joint()->Name()->String());
+    anObj->SetFirstTransformation(aPlacementFirst->Ax2());
+    anObj->SetSecondTransformation(aPlacementSecond->Ax2());
+  }
+  return anObj;
+}
+
+//=======================================================================
+//function : setPairValue
+//purpose  : set pair Value of the kinematic pair on OCAF
+//=======================================================================
+ Standard_Boolean setKinematicPairValue(const Handle(XSControl_WorkSession)& theWS,
+   const Handle(TDocStd_Document)& theDoc, const Handle(StepKinematics_KinematicPair)& theKP,
+   TDF_Label& theJoint)
+ { 
+   Handle(XSControl_TransferReader) aTR = theWS->TransferReader();
+   Handle(Transfer_TransientProcess) aTP = aTR->TransientProcess();
+   const Interface_Graph& aGraph = aTP->Graph();
+   Handle(XCAFDoc_KinematicTool) aKTool = XCAFDoc_DocumentTool::KinematicTool(theDoc->Main());
+   Handle(StepKinematics_KinematicPair) aKP=theKP;
+   //find father kinematicPair if pair is complex
+   for (Interface_EntityIterator anIter = aGraph.Sharings(theKP->Joint()); anIter.More(); anIter.Next()) {
+     if (!anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_KinematicPair)) || anIter.Value() == aKP)
+       continue;
+     aKP = Handle(StepKinematics_KinematicPair)::DownCast(anIter.Value());
+   }
+   Interface_EntityIterator anIter = aGraph.Sharings(aKP);
+   for (; anIter.More(); anIter.Next()) {
+     if (!anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_PairValue)))
+       continue;
+     else
+     {
+       Handle(XCAFKinematics_PairValueObject) aValueObject;
+       // Low order pairs
+       if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_RevolutePairValue)))
+       {
+         Handle(StepKinematics_RevolutePairValue) aRevolutePairValue = Handle(StepKinematics_RevolutePairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetRotation(aRevolutePairValue->ActualRotation());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_PrismaticPairValue)))
+       {
+         Handle(StepKinematics_PrismaticPairValue) aPrismaticPairValue = Handle(StepKinematics_PrismaticPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetTranslation(aPrismaticPairValue->ActualTranslation());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_CylindricalPairValue)))
+       {
+         Handle(StepKinematics_CylindricalPairValue) aCylindricalPairValue = Handle(StepKinematics_CylindricalPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetTranslation(aCylindricalPairValue->ActualTranslation());
+         aValueObject->SetRotation(aCylindricalPairValue->ActualRotation());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairValue)))
+       {
+         Handle(StepKinematics_SphericalPairValue) aSphericalPairValue = Handle(StepKinematics_SphericalPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetYPR(aSphericalPairValue->InputOrientation().YprRotation()->Value(1),
+           aSphericalPairValue->InputOrientation().YprRotation()->Value(2), aSphericalPairValue->InputOrientation().YprRotation()->Value(3));
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_UniversalPairValue)))
+       {
+         Handle(StepKinematics_UniversalPairValue) aUniversalPairValue = Handle(StepKinematics_UniversalPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetFirstRotation(aUniversalPairValue->FirstRotationAngle());
+         aValueObject->SetSecondRotation(aUniversalPairValue->SecondRotationAngle()); //CHECK
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_UnconstrainedPairValue)))
+       {
+         Handle(StepKinematics_UnconstrainedPairValue) anUnconstrainedPairValue = Handle(StepKinematics_UnconstrainedPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetTransformation(StepToGeom::MakeAxis2Placement(anUnconstrainedPairValue->ActualPlacement())->Ax2());
+       }
+       // Low order pairs with motion coupling
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_ScrewPairValue)))
+       {
+         Handle(StepKinematics_ScrewPairValue) aScrewPairValue = Handle(StepKinematics_ScrewPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetRotation(aScrewPairValue->ActualRotation());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_GearPairValue)))
+       {
+         Handle(StepKinematics_GearPairValue) aGearPairValue = Handle(StepKinematics_GearPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetRotation(aGearPairValue->ActualRotation1());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_RackAndPinionPairValue)))
+       {
+         Handle(StepKinematics_RackAndPinionPairValue) aRackAndPinionPairValue = Handle(StepKinematics_RackAndPinionPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetTranslation(aRackAndPinionPairValue->ActualDisplacement());
+       }
+       // High order pairs
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_SlidingSurfacePairValue)))
+       {
+         Handle(StepKinematics_SlidingSurfacePairValue) aSlidingSurfacePairValue = Handle(StepKinematics_SlidingSurfacePairValue)::DownCast(anIter.Value());
+         aValueObject= new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetFirstPointOnSurface(aSlidingSurfacePairValue->ActualPointOnSurface1()->PointParameterU(), aSlidingSurfacePairValue->ActualPointOnSurface1()->PointParameterV());
+         aValueObject->SetSecondPointOnSurface(aSlidingSurfacePairValue->ActualPointOnSurface2()->PointParameterU(), aSlidingSurfacePairValue->ActualPointOnSurface2()->PointParameterV());
+         aValueObject->SetRotation(aSlidingSurfacePairValue->ActualRotation());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_RollingSurfacePairValue)))
+       {
+         Handle(StepKinematics_RollingSurfacePairValue) aRollingSurfacePairValue = Handle(StepKinematics_RollingSurfacePairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetRotation(aRollingSurfacePairValue->ActualRotation());
+         aValueObject->SetFirstPointOnSurface(aRollingSurfacePairValue->ActualPointOnSurface()->PointParameterU(), aRollingSurfacePairValue->ActualPointOnSurface()->PointParameterV());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_SlidingCurvePairValue)))
+       {
+         Handle(StepKinematics_SlidingCurvePairValue) aSlidingCurvePairValue = Handle(StepKinematics_SlidingCurvePairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetFirstPointOnCurve(aSlidingCurvePairValue->ActualPointOnCurve1()->PointParameter());
+         aValueObject->SetSecondPointOnCurve(aSlidingCurvePairValue->ActualPointOnCurve2()->PointParameter());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_RollingCurvePairValue)))
+       {
+         Handle(StepKinematics_RollingCurvePairValue) aRollingCurvePairValue = Handle(StepKinematics_RollingCurvePairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetPointOnCurve(aRollingCurvePairValue->ActualPointOnCurve1()->PointParameter());
+       }
+
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_PlanarPairValue)))
+       {
+         Handle(StepKinematics_PlanarPairValue) aPlanarPairValue = Handle(StepKinematics_PlanarPairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetRotation(aPlanarPairValue->ActualRotation());
+         aValueObject->SetFirstTranslation(aPlanarPairValue->ActualTranslationX());
+         aValueObject->SetSecondTranslation(aPlanarPairValue->ActualTranslationY());
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_PointOnSurfacePairValue)))
+       {
+         Handle(StepKinematics_PointOnSurfacePairValue) aPointOnSurfacePairValue = Handle(StepKinematics_PointOnSurfacePairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetPointOnSurface(aPointOnSurfacePairValue->ActualPointOnSurface()->PointParameterU(), 
+           aPointOnSurfacePairValue->ActualPointOnSurface()->PointParameterV());
+         aValueObject->SetYPR(aPointOnSurfacePairValue->InputOrientation().YprRotation()->Value(1),
+           aPointOnSurfacePairValue->InputOrientation().YprRotation()->Value(2), aPointOnSurfacePairValue->InputOrientation().YprRotation()->Value(3));
+       }
+       else if (anIter.Value()->IsKind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePairValue)))
+       {
+         Handle(StepKinematics_PointOnPlanarCurvePairValue) aPointOnPlanarCurvePairValue = Handle(StepKinematics_PointOnPlanarCurvePairValue)::DownCast(anIter.Value());
+         aValueObject = new XCAFKinematics_PairValueObject();
+         aValueObject->SetType(getKinematicType(theKP));
+         aValueObject->SetFirstPointOnCurve(aPointOnPlanarCurvePairValue->ActualPointOnCurve()->PointParameter());
+         aValueObject->SetYPR(aPointOnPlanarCurvePairValue->InputOrientation().YprRotation()->Value(1),
+           aPointOnPlanarCurvePairValue->InputOrientation().YprRotation()->Value(2), aPointOnPlanarCurvePairValue->InputOrientation().YprRotation()->Value(3));
+       }
+       if (!aValueObject.IsNull())
+       {
+         Handle(XCAFDoc_KinematicPairValue) aCAFKinematicPairValue = XCAFDoc_KinematicPairValue::Set(theJoint);
+         aCAFKinematicPairValue->SetObject(aValueObject);
+         return Standard_True;
+       }
+       return Standard_False;
+     }
+   }
+   return Standard_False;
+}
+
 //=======================================================================
 //function : buildClippingPlanes
 //purpose  :
@@ -4419,6 +5049,105 @@ Standard_Boolean STEPCAFControl_Reader::ReadViews(const Handle(XSControl_WorkSes
   return Standard_True;
 }
 
+//=======================================================================
+//function : ReadKinematics
+//purpose  :
+//=======================================================================
+Standard_Boolean STEPCAFControl_Reader::ReadKinematics(const Handle(XSControl_WorkSession)& theWS,
+  Handle(TDocStd_Document)& theDoc,
+  const XCAFDoc_DataMapOfShapeLabel& aShapeLabelMap) const
+{
+  const Handle(Interface_InterfaceModel)& aModel = theWS->Model();
+  const Interface_Graph& aGraph = theWS->Graph();
+  Handle(XCAFDoc_KinematicTool)  aKTool = XCAFDoc_DocumentTool::KinematicTool(theDoc->Main());
+  Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool(theDoc->Main());
+  if (aKTool.IsNull()) return Standard_False;
+  Standard_Integer nb = aModel->NbEntities();
+  for (Standard_Integer i = 1; i <= nb; i++)
+  {
+    Handle(Standard_Transient) anEnt = aModel->Value(i);
+    if (anEnt->IsKind(STANDARD_TYPE(StepKinematics_KinematicPropertyMechanismRepresentation)))
+    {
+      Handle(StepKinematics_KinematicPropertyMechanismRepresentation) aKPMR =
+        Handle(StepKinematics_KinematicPropertyMechanismRepresentation)::DownCast(anEnt);
+      Handle(StepKinematics_MechanismRepresentation) aKMR =
+        Handle(StepKinematics_MechanismRepresentation)::DownCast(aKPMR->UsedRepresentation());
+      TDF_Label aMechanism;
+      if (aKMR.IsNull())
+        continue;
+      aMechanism = aKTool->AddMechanism();
+      if (!aKMR->Name()->IsEmpty())
+        TDataStd_Name::Set(aMechanism, aKMR->Name()->String());
+      for (Standard_Integer aMechanismIndex = 1 ; aMechanismIndex <=aKMR->NbItems();++aMechanismIndex)
+      {
+        if (!aKMR->ItemsValue(aMechanismIndex)->IsKind(STANDARD_TYPE(StepKinematics_PairRepresentationRelationship)))
+          continue;
+        Handle(StepKinematics_PairRepresentationRelationship) aPRR =
+          Handle(StepKinematics_PairRepresentationRelationship)::DownCast(aKMR->ItemsValue(aMechanismIndex));
+        if (aPRR.IsNull()) continue;
+        Handle(StepKinematics_KinematicPair) aKinematicPair
+          = Handle(StepKinematics_KinematicPair)::DownCast(aPRR->RepresentationRelationshipWithTransformation()->TransformationOperator().KinematicPair());
+        if (aKinematicPair.IsNull()) 
+          continue;
+        //find joint & links
+        Handle(StepKinematics_KinematicJoint) aKinematicJoint = aKinematicPair->Joint();
+        if (aKinematicJoint.IsNull())
+          continue;
+        Handle(StepKinematics_KinematicLink) aKinematicLinkStart, aKinematicLinkEnd;
+        TDF_Label aJoint, aLinkStart, aLinkEnd;
+        TDF_LabelSequence aShapeArrayStart, aShapeArrayEnd;
+        //lins inizialise
+        aKinematicLinkStart = Handle(StepKinematics_KinematicLink)::DownCast(aKinematicJoint->EdgeStart());
+        aKinematicLinkEnd = Handle(StepKinematics_KinematicLink)::DownCast(aKinematicJoint->EdgeEnd());
+        //for the start
+        Handle(StepKinematics_KinematicLinkRepresentation) aLinkRepresentationStart
+          = Handle(StepKinematics_KinematicLinkRepresentation)::DownCast(aPRR->RepresentationRelationshipWithTransformation()->Rep1());
+        if (aLinkRepresentationStart.IsNull()) continue;
+        Handle(StepKinematics_KinematicLinkRepresentationAssociation) aKLRepresentationAssociationStart;
+        for (Interface_EntityIterator anIterLinks = aGraph.Sharings(aLinkRepresentationStart);
+          anIterLinks.More() && aKLRepresentationAssociationStart.IsNull(); anIterLinks.Next())
+        {
+          if (!anIterLinks.Value()->IsKind(STANDARD_TYPE(StepKinematics_KinematicLinkRepresentationAssociation)))
+            continue;
+          aKLRepresentationAssociationStart = Handle(StepKinematics_KinematicLinkRepresentationAssociation)::DownCast(anIterLinks.Value());
+        }
+        if (aKLRepresentationAssociationStart.IsNull()) 
+          continue;
+        linkShapeWithJoint(theWS, theDoc, aKLRepresentationAssociationStart, aShapeArrayStart, aShapeLabelMap);
+        //for the end
+        Handle(StepKinematics_KinematicLinkRepresentation) aLinkRepresentationEnd
+          = Handle(StepKinematics_KinematicLinkRepresentation)::DownCast(aPRR->RepresentationRelationshipWithTransformation()->Rep2());;
+        if (aLinkRepresentationEnd.IsNull()) continue;
+        Handle(StepKinematics_KinematicLinkRepresentationAssociation) aKLRepresentationAssociationEnd;
+        for (Interface_EntityIterator anIterLinks = aGraph.Sharings(aLinkRepresentationEnd);
+          anIterLinks.More() && aKLRepresentationAssociationEnd.IsNull(); anIterLinks.Next())
+        {
+          if (!anIterLinks.Value()->IsKind(STANDARD_TYPE(StepKinematics_KinematicLinkRepresentationAssociation)))
+            continue;
+          aKLRepresentationAssociationEnd = Handle(StepKinematics_KinematicLinkRepresentationAssociation)::DownCast(anIterLinks.Value());
+        }
+        if (aKLRepresentationAssociationEnd.IsNull()) continue;
+        linkShapeWithJoint(theWS, theDoc, aKLRepresentationAssociationEnd, aShapeArrayEnd, aShapeLabelMap);
+        //Setting info
+        aLinkStart = aKTool->AddLink(aMechanism, aShapeArrayStart);
+        if (!aKinematicLinkStart->Name()->IsEmpty())
+          TDataStd_Name::Set(aLinkStart, aKinematicLinkStart->Name()->String());
+        aLinkEnd = aKTool->AddLink(aMechanism, aShapeArrayEnd);
+        if (!aKinematicLinkEnd->Name()->IsEmpty())
+          TDataStd_Name::Set(aLinkEnd, aKinematicLinkEnd->Name()->String());
+        aJoint = aKTool->AddJoint(aMechanism, aLinkStart, aLinkEnd);
+        Handle(XCAFDoc_KinematicPair) aCAFKinPair = XCAFDoc_KinematicPair::Set(aJoint);
+        Handle(XCAFKinematics_PairObject) aPairObject = createXCAFKinematicPairObject(aKinematicPair);
+        if (aPairObject.IsNull())
+          continue;
+        setKinematicPairLimits(aPairObject, aKinematicPair);
+        aCAFKinPair->SetObject(aPairObject);
+        setKinematicPairValue(theWS, theDoc, aKinematicPair, aJoint);
+      }
+    }
+  }
+  return Standard_True;
+}
 //=======================================================================
 //function : SettleShapeData
 //purpose  :
@@ -4857,3 +5586,13 @@ Standard_Boolean STEPCAFControl_Reader::GetViewMode() const
 {
   return myViewMode;
 }
+
+void STEPCAFControl_Reader::SetKinematicMode(const Standard_Boolean kinematicmode)
+{
+  myKinematicMode = kinematicmode;
+}
+
+Standard_Boolean STEPCAFControl_Reader::GetKinematicMode() const
+{
+  return myKinematicMode;
+}
index b37c05d7c66df52dfc43e8a80bbdb10b1094cbb9..1271962e260b62cf3094f8d74735b7d858cd6494 100644 (file)
@@ -169,7 +169,11 @@ public:
   //! Get View mode
   Standard_EXPORT Standard_Boolean GetViewMode() const;
 
+  //! Set Kinematic mode
+  Standard_EXPORT void SetKinematicMode(const Standard_Boolean kinematicmode);
 
+  //! Get Kinematic mode
+  Standard_EXPORT Standard_Boolean GetKinematicMode() const;
 
 
 protected:
@@ -228,6 +232,9 @@ protected:
   //! Reads Views for instances defined in the STEP model
   Standard_EXPORT Standard_Boolean ReadViews(const Handle(XSControl_WorkSession)& theWS, Handle(TDocStd_Document)& theDoc) const;
 
+  //!Reads Kinematic Pairs for instances defined in the STEP model
+  Standard_EXPORT Standard_Boolean ReadKinematics(const Handle(XSControl_WorkSession)& theWS, Handle(TDocStd_Document)& theDoc, const XCAFDoc_DataMapOfShapeLabel& ShapeLabelMap) const;
+
   //! Populates the sub-Label of the passed TDF Label with shape
   //! data associated with the given STEP Representation Item,
   //! including naming and topological information.
@@ -292,6 +299,7 @@ private:
   Standard_Boolean myGDTMode;
   Standard_Boolean myMatMode;
   Standard_Boolean myViewMode;
+  Standard_Boolean myKinematicMode;
   NCollection_DataMap<Handle(Standard_Transient), TDF_Label> myGDTMap;
 
 };
index e638995c6c4191a8ec26392ce0250d30aae55d9c..1ec1aade17ada214f00191af3495d072eab985a7 100644 (file)
@@ -749,6 +749,83 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
 #include <StepVisual_CameraModelD3MultiClippingIntersection.hxx>
 #include <StepVisual_CameraModelD3MultiClippingUnion.hxx>
 #include <StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem.hxx>
+// Added for kinematics implementation
+#include <StepRepr_RepresentationContextReference.hxx>
+#include <StepRepr_RepresentationReference.hxx>
+#include <StepKinematics_SuParameters.hxx>
+#include <StepKinematics_RotationAboutDirection.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+#include <StepKinematics_ContextDependentKinematicLinkRepresentation.hxx>
+#include <StepKinematics_CylindricalPair.hxx>
+#include <StepKinematics_CylindricalPairValue.hxx>
+#include <StepKinematics_CylindricalPairWithRange.hxx>
+#include <StepKinematics_FullyConstrainedPair.hxx>
+#include <StepKinematics_GearPair.hxx>
+#include <StepKinematics_GearPairValue.hxx>
+#include <StepKinematics_GearPairWithRange.hxx>
+#include <StepKinematics_HomokineticPair.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_KinematicPropertyMechanismRepresentation.hxx>
+#include <StepKinematics_KinematicTopologyDirectedStructure.hxx>
+#include <StepKinematics_KinematicTopologyNetworkStructure.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+#include <StepKinematics_LinearFlexibleAndPinionPair.hxx>
+#include <StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx>
+#include <StepKinematics_LinearFlexibleLinkRepresentation.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+#include <StepKinematics_LowOrderKinematicPairValue.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+#include <StepKinematics_MechanismRepresentation.hxx>
+#include <StepKinematics_OrientedJoint.hxx>
+#include <StepKinematics_PairRepresentationRelationship.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+#include <StepKinematics_PlanarCurvePairRange.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+#include <StepKinematics_PlanarPairValue.hxx>
+#include <StepKinematics_PlanarPairWithRange.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairValue.hxx>
+#include <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+#include <StepKinematics_PointOnSurfacePairValue.hxx>
+#include <StepKinematics_PointOnSurfacePairWithRange.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+#include <StepKinematics_PrismaticPairValue.hxx>
+#include <StepKinematics_PrismaticPairWithRange.hxx>
+#include <StepKinematics_ProductDefinitionKinematics.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+#include <StepKinematics_RackAndPinionPairValue.hxx>
+#include <StepKinematics_RackAndPinionPairWithRange.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+#include <StepKinematics_RevolutePairValue.hxx>
+#include <StepKinematics_RevolutePairWithRange.hxx>
+#include <StepKinematics_RigidLinkRepresentation.hxx>
+#include <StepKinematics_RollingCurvePair.hxx>
+#include <StepKinematics_RollingCurvePairValue.hxx>
+#include <StepKinematics_RollingSurfacePair.hxx>
+#include <StepKinematics_RollingSurfacePairValue.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+#include <StepKinematics_ScrewPairValue.hxx>
+#include <StepKinematics_ScrewPairWithRange.hxx>
+#include <StepKinematics_SlidingCurvePair.hxx>
+#include <StepKinematics_SlidingCurvePairValue.hxx>
+#include <StepKinematics_SlidingSurfacePair.hxx>
+#include <StepKinematics_SlidingSurfacePairValue.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <StepKinematics_SphericalPairValue.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+#include <StepKinematics_SphericalPairWithPinAndRange.hxx>
+#include <StepKinematics_SphericalPairWithRange.hxx>
+#include <StepKinematics_SurfacePairWithRange.hxx>
+#include <StepKinematics_UnconstrainedPair.hxx>
+#include <StepKinematics_UnconstrainedPairValue.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+#include <StepKinematics_UniversalPairValue.hxx>
+#include <StepKinematics_UniversalPairWithRange.hxx>
+#include <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
 
 #include <StepVisual_SurfaceStyleTransparent.hxx>
 #include <StepVisual_SurfaceStyleReflectanceAmbient.hxx>
@@ -756,7 +833,7 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
 #include <StepVisual_SurfaceStyleRenderingWithProperties.hxx>
 
 static int THE_StepAP214_Protocol_init = 0;
-static Interface_DataMapOfTransientInteger types(800);
+static Interface_DataMapOfTransientInteger types(801);
 
 //=======================================================================
 //function : StepAP214_Protocol
@@ -1464,10 +1541,88 @@ StepAP214_Protocol::StepAP214_Protocol ()
   types.Bind (STANDARD_TYPE(StepVisual_CameraModelD3MultiClippingIntersection), 717);
   types.Bind (STANDARD_TYPE(StepVisual_CameraModelD3MultiClippingUnion), 718);
   types.Bind (STANDARD_TYPE(StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem), 719);
-  types.Bind (STANDARD_TYPE(StepVisual_SurfaceStyleTransparent), 720);
-  types.Bind (STANDARD_TYPE(StepVisual_SurfaceStyleReflectanceAmbient), 721);
-  types.Bind (STANDARD_TYPE(StepVisual_SurfaceStyleRendering), 722);
-  types.Bind (STANDARD_TYPE(StepVisual_SurfaceStyleRenderingWithProperties), 723);
+  types.Bind(STANDARD_TYPE(StepVisual_SurfaceStyleTransparent), 720);
+  types.Bind(STANDARD_TYPE(StepVisual_SurfaceStyleReflectanceAmbient), 721);
+  types.Bind(STANDARD_TYPE(StepVisual_SurfaceStyleRendering), 722);
+  types.Bind(STANDARD_TYPE(StepVisual_SurfaceStyleRenderingWithProperties), 723);
+
+  // Added for kinematics implementation
+  types.Bind(STANDARD_TYPE(StepRepr_RepresentationContextReference), 724);
+  types.Bind(STANDARD_TYPE(StepRepr_RepresentationReference), 725);
+  types.Bind(STANDARD_TYPE(StepKinematics_SuParameters), 726);
+  types.Bind(STANDARD_TYPE(StepKinematics_RotationAboutDirection), 727);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicJoint), 728);
+  types.Bind(STANDARD_TYPE(StepKinematics_ActuatedKinematicPair), 729);
+  types.Bind(STANDARD_TYPE(StepKinematics_ContextDependentKinematicLinkRepresentation), 730);
+  types.Bind(STANDARD_TYPE(StepKinematics_CylindricalPair), 731);
+  types.Bind(STANDARD_TYPE(StepKinematics_CylindricalPairValue), 732);
+  types.Bind(STANDARD_TYPE(StepKinematics_CylindricalPairWithRange), 733);
+  types.Bind(STANDARD_TYPE(StepKinematics_FullyConstrainedPair), 734);
+  types.Bind(STANDARD_TYPE(StepKinematics_GearPair), 735);
+  types.Bind(STANDARD_TYPE(StepKinematics_GearPairValue), 736);
+  types.Bind(STANDARD_TYPE(StepKinematics_GearPairWithRange), 737);
+  types.Bind(STANDARD_TYPE(StepKinematics_HomokineticPair), 738);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicLink), 739);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicLinkRepresentationAssociation), 740);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicPropertyMechanismRepresentation), 741);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicTopologyStructure), 742);
+  types.Bind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPair), 743);
+  types.Bind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPairValue), 744);
+  types.Bind(STANDARD_TYPE(StepKinematics_LowOrderKinematicPairWithRange), 745);
+  types.Bind(STANDARD_TYPE(StepKinematics_MechanismRepresentation), 746);
+  types.Bind(STANDARD_TYPE(StepKinematics_OrientedJoint), 747);
+  types.Bind(STANDARD_TYPE(StepKinematics_PlanarCurvePair), 748);
+  types.Bind(STANDARD_TYPE(StepKinematics_PlanarCurvePairRange), 749);
+  types.Bind(STANDARD_TYPE(StepKinematics_PlanarPair), 750);
+  types.Bind(STANDARD_TYPE(StepKinematics_PlanarPairValue), 751);
+  types.Bind(STANDARD_TYPE(StepKinematics_PlanarPairWithRange), 752);
+  types.Bind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePair), 753);
+  types.Bind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePairValue), 754);
+  types.Bind(STANDARD_TYPE(StepKinematics_PointOnPlanarCurvePairWithRange), 755);
+  types.Bind(STANDARD_TYPE(StepKinematics_PointOnSurfacePair), 756);
+  types.Bind(STANDARD_TYPE(StepKinematics_PointOnSurfacePairValue), 757);
+  types.Bind(STANDARD_TYPE(StepKinematics_PointOnSurfacePairWithRange), 758);
+  types.Bind(STANDARD_TYPE(StepKinematics_PrismaticPair), 759);
+  types.Bind(STANDARD_TYPE(StepKinematics_PrismaticPairValue), 760);
+  types.Bind(STANDARD_TYPE(StepKinematics_PrismaticPairWithRange), 761);
+  types.Bind(STANDARD_TYPE(StepKinematics_ProductDefinitionKinematics), 762);
+  types.Bind(STANDARD_TYPE(StepKinematics_ProductDefinitionRelationshipKinematics), 763);
+  types.Bind(STANDARD_TYPE(StepKinematics_RackAndPinionPair), 764);
+  types.Bind(STANDARD_TYPE(StepKinematics_RackAndPinionPairValue), 765);
+  types.Bind(STANDARD_TYPE(StepKinematics_RackAndPinionPairWithRange), 766);
+  types.Bind(STANDARD_TYPE(StepKinematics_RevolutePair), 767);
+  types.Bind(STANDARD_TYPE(StepKinematics_RevolutePairValue), 768);
+  types.Bind(STANDARD_TYPE(StepKinematics_RevolutePairWithRange), 769);
+  types.Bind(STANDARD_TYPE(StepKinematics_RollingCurvePair), 770);
+  types.Bind(STANDARD_TYPE(StepKinematics_RollingCurvePairValue), 771);
+  types.Bind(STANDARD_TYPE(StepKinematics_RollingSurfacePair), 772);
+  types.Bind(STANDARD_TYPE(StepKinematics_RollingSurfacePairValue), 773);
+  types.Bind(STANDARD_TYPE(StepKinematics_ScrewPair), 774);
+  types.Bind(STANDARD_TYPE(StepKinematics_ScrewPairValue), 775);
+  types.Bind(STANDARD_TYPE(StepKinematics_ScrewPairWithRange), 776);
+  types.Bind(STANDARD_TYPE(StepKinematics_SlidingCurvePair), 777);
+  types.Bind(STANDARD_TYPE(StepKinematics_SlidingCurvePairValue), 778);
+  types.Bind(STANDARD_TYPE(StepKinematics_SlidingSurfacePair), 779);
+  types.Bind(STANDARD_TYPE(StepKinematics_SlidingSurfacePairValue), 780);
+  types.Bind(STANDARD_TYPE(StepKinematics_SphericalPair), 781);
+  types.Bind(STANDARD_TYPE(StepKinematics_SphericalPairValue), 782);
+  types.Bind(STANDARD_TYPE(StepKinematics_SphericalPairWithPin), 783);
+  types.Bind(STANDARD_TYPE(StepKinematics_SphericalPairWithPinAndRange), 784);
+  types.Bind(STANDARD_TYPE(StepKinematics_SphericalPairWithRange), 785);
+  types.Bind(STANDARD_TYPE(StepKinematics_SurfacePairWithRange), 786);
+  types.Bind(STANDARD_TYPE(StepKinematics_UnconstrainedPair), 787);
+  types.Bind(STANDARD_TYPE(StepKinematics_UnconstrainedPairValue), 788);
+  types.Bind(STANDARD_TYPE(StepKinematics_UniversalPair), 789);
+  types.Bind(STANDARD_TYPE(StepKinematics_UniversalPairValue), 790);
+  types.Bind(STANDARD_TYPE(StepKinematics_UniversalPairWithRange), 791);
+  types.Bind(STANDARD_TYPE(StepKinematics_PairRepresentationRelationship), 792);
+  types.Bind(STANDARD_TYPE(StepKinematics_RigidLinkRepresentation), 793);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicTopologyDirectedStructure), 794);
+  types.Bind(STANDARD_TYPE(StepKinematics_KinematicTopologyNetworkStructure), 795);
+  types.Bind(STANDARD_TYPE(StepKinematics_LinearFlexibleAndPinionPair), 796);
+  types.Bind(STANDARD_TYPE(StepKinematics_LinearFlexibleAndPlanarCurvePair), 797);
+  types.Bind(STANDARD_TYPE(StepKinematics_LinearFlexibleLinkRepresentation), 798);
+  types.Bind(STANDARD_TYPE(StepKinematics_ActuatedKinPairAndOrderKinPair), 800);
 }
 
 
diff --git a/src/StepKinematics/FILES b/src/StepKinematics/FILES
new file mode 100644 (file)
index 0000000..1df7719
--- /dev/null
@@ -0,0 +1,171 @@
+StepKinematics_ActuatedDirection.hxx
+StepKinematics_ActuatedKinematicPair.cxx
+StepKinematics_ActuatedKinematicPair.hxx
+StepKinematics_ContextDependentKinematicLinkRepresentation.cxx
+StepKinematics_ContextDependentKinematicLinkRepresentation.hxx
+StepKinematics_CylindricalPair.cxx
+StepKinematics_CylindricalPair.hxx
+StepKinematics_CylindricalPairValue.cxx
+StepKinematics_CylindricalPairValue.hxx
+StepKinematics_CylindricalPairWithRange.cxx
+StepKinematics_CylindricalPairWithRange.hxx
+StepKinematics_FullyConstrainedPair.cxx
+StepKinematics_FullyConstrainedPair.hxx
+StepKinematics_GearPair.cxx
+StepKinematics_GearPair.hxx
+StepKinematics_GearPairValue.cxx
+StepKinematics_GearPairValue.hxx
+StepKinematics_GearPairWithRange.cxx
+StepKinematics_GearPairWithRange.hxx
+StepKinematics_HighOrderKinematicPair.cxx
+StepKinematics_HighOrderKinematicPair.hxx
+StepKinematics_HomokineticPair.cxx
+StepKinematics_HomokineticPair.hxx
+StepKinematics_KinematicJoint.cxx
+StepKinematics_KinematicJoint.hxx
+StepKinematics_KinematicLink.cxx
+StepKinematics_KinematicLink.hxx
+StepKinematics_KinematicLinkRepresentation.cxx
+StepKinematics_KinematicLinkRepresentation.hxx
+StepKinematics_KinematicLinkRepresentationAssociation.cxx
+StepKinematics_KinematicLinkRepresentationAssociation.hxx
+StepKinematics_KinematicPair.cxx
+StepKinematics_KinematicPair.hxx
+StepKinematics_ActuatedKinPairAndOrderKinPair.cxx
+StepKinematics_ActuatedKinPairAndOrderKinPair.hxx
+StepKinematics_KinematicPropertyDefinitionRepresentation.cxx
+StepKinematics_KinematicPropertyDefinitionRepresentation.hxx
+StepKinematics_KinematicPropertyMechanismRepresentation.cxx
+StepKinematics_KinematicPropertyMechanismRepresentation.hxx
+StepKinematics_KinematicTopologyStructure.cxx
+StepKinematics_KinematicTopologyStructure.hxx
+StepKinematics_LinearFlexibleAndPinionPair.cxx
+StepKinematics_LinearFlexibleAndPinionPair.hxx
+StepKinematics_LinearFlexibleAndPlanarCurvePair.cxx
+StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx
+StepKinematics_LinearFlexibleLinkRepresentation.cxx
+StepKinematics_LinearFlexibleLinkRepresentation.hxx
+StepKinematics_LowOrderKinematicPair.cxx
+StepKinematics_LowOrderKinematicPair.hxx
+StepKinematics_LowOrderKinematicPairValue.cxx
+StepKinematics_LowOrderKinematicPairValue.hxx
+StepKinematics_LowOrderKinematicPairWithMotionCoupling.cxx
+StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx
+StepKinematics_LowOrderKinematicPairWithRange.cxx
+StepKinematics_LowOrderKinematicPairWithRange.hxx
+StepKinematics_MechanismRepresentation.cxx
+StepKinematics_MechanismRepresentation.hxx
+StepKinematics_OrientedJoint.cxx
+StepKinematics_OrientedJoint.hxx
+StepKinematics_PairRepresentationRelationship.cxx
+StepKinematics_PairRepresentationRelationship.hxx
+StepKinematics_PairValue.cxx
+StepKinematics_PairValue.hxx
+StepKinematics_PlanarCurvePair.cxx
+StepKinematics_PlanarCurvePair.hxx
+StepKinematics_PlanarCurvePairRange.cxx
+StepKinematics_PlanarCurvePairRange.hxx
+StepKinematics_PlanarPair.cxx
+StepKinematics_PlanarPair.hxx
+StepKinematics_PlanarPairValue.cxx
+StepKinematics_PlanarPairValue.hxx
+StepKinematics_PlanarPairWithRange.cxx
+StepKinematics_PlanarPairWithRange.hxx
+StepKinematics_PointOnPlanarCurvePair.cxx
+StepKinematics_PointOnPlanarCurvePair.hxx
+StepKinematics_PointOnPlanarCurvePairValue.cxx
+StepKinematics_PointOnPlanarCurvePairValue.hxx
+StepKinematics_PointOnPlanarCurvePairWithRange.cxx
+StepKinematics_PointOnPlanarCurvePairWithRange.hxx
+StepKinematics_PointOnSurfacePair.cxx
+StepKinematics_PointOnSurfacePair.hxx
+StepKinematics_PointOnSurfacePairValue.cxx
+StepKinematics_PointOnSurfacePairValue.hxx
+StepKinematics_PointOnSurfacePairWithRange.cxx
+StepKinematics_PointOnSurfacePairWithRange.hxx
+StepKinematics_PrismaticPair.cxx
+StepKinematics_PrismaticPair.hxx
+StepKinematics_PrismaticPairValue.cxx
+StepKinematics_PrismaticPairValue.hxx
+StepKinematics_PrismaticPairWithRange.cxx
+StepKinematics_PrismaticPairWithRange.hxx
+StepKinematics_ProductDefinitionKinematics.cxx
+StepKinematics_ProductDefinitionKinematics.hxx
+StepKinematics_ProductDefinitionRelationshipKinematics.cxx
+StepKinematics_ProductDefinitionRelationshipKinematics.hxx
+StepKinematics_RackAndPinionPair.cxx
+StepKinematics_RackAndPinionPair.hxx
+StepKinematics_RackAndPinionPairValue.cxx
+StepKinematics_RackAndPinionPairValue.hxx
+StepKinematics_RackAndPinionPairWithRange.cxx
+StepKinematics_RackAndPinionPairWithRange.hxx
+StepKinematics_RevolutePair.cxx
+StepKinematics_RevolutePair.hxx
+StepKinematics_RevolutePairValue.cxx
+StepKinematics_RevolutePairValue.hxx
+StepKinematics_RevolutePairWithRange.cxx
+StepKinematics_RevolutePairWithRange.hxx
+StepKinematics_RigidLinkRepresentation.cxx
+StepKinematics_RigidLinkRepresentation.hxx
+StepKinematics_RigidPlacement.cxx
+StepKinematics_RigidPlacement.hxx
+StepKinematics_RollingCurvePair.cxx
+StepKinematics_RollingCurvePair.hxx
+StepKinematics_RollingCurvePairValue.cxx
+StepKinematics_RollingCurvePairValue.hxx
+StepKinematics_RollingSurfacePair.cxx
+StepKinematics_RollingSurfacePair.hxx
+StepKinematics_RollingSurfacePairValue.cxx
+StepKinematics_RollingSurfacePairValue.hxx
+StepKinematics_RotationAboutDirection.cxx
+StepKinematics_RotationAboutDirection.hxx
+StepKinematics_ScrewPair.cxx
+StepKinematics_ScrewPair.hxx
+StepKinematics_ScrewPairValue.cxx
+StepKinematics_ScrewPairValue.hxx
+StepKinematics_ScrewPairWithRange.cxx
+StepKinematics_ScrewPairWithRange.hxx
+StepKinematics_SlidingCurvePair.cxx
+StepKinematics_SlidingCurvePair.hxx
+StepKinematics_SlidingCurvePairValue.cxx
+StepKinematics_SlidingCurvePairValue.hxx
+StepKinematics_SlidingSurfacePair.cxx
+StepKinematics_SlidingSurfacePair.hxx
+StepKinematics_SlidingSurfacePairValue.cxx
+StepKinematics_SlidingSurfacePairValue.hxx
+StepKinematics_SpatialRotation.cxx
+StepKinematics_SpatialRotation.hxx
+StepKinematics_SphericalPair.cxx
+StepKinematics_SphericalPair.hxx
+StepKinematics_SphericalPairSelect.cxx
+StepKinematics_SphericalPairSelect.hxx
+StepKinematics_SphericalPairValue.cxx
+StepKinematics_SphericalPairValue.hxx
+StepKinematics_SphericalPairWithPin.cxx
+StepKinematics_SphericalPairWithPin.hxx
+StepKinematics_SphericalPairWithPinAndRange.cxx
+StepKinematics_SphericalPairWithPinAndRange.hxx
+StepKinematics_SphericalPairWithRange.cxx
+StepKinematics_SphericalPairWithRange.hxx
+StepKinematics_SuParameters.cxx
+StepKinematics_SuParameters.hxx
+StepKinematics_SurfacePair.cxx
+StepKinematics_SurfacePair.hxx
+StepKinematics_SurfacePairWithRange.cxx
+StepKinematics_SurfacePairWithRange.hxx
+StepKinematics_KinematicTopologyDirectedStructure.cxx
+StepKinematics_KinematicTopologyDirectedStructure.hxx
+StepKinematics_KinematicTopologyNetworkStructure.cxx
+StepKinematics_KinematicTopologyNetworkStructure.hxx
+StepKinematics_KinematicTopologyRepresentationSelect.cxx
+StepKinematics_KinematicTopologyRepresentationSelect.hxx
+StepKinematics_UnconstrainedPair.cxx
+StepKinematics_UnconstrainedPair.hxx
+StepKinematics_UnconstrainedPairValue.cxx
+StepKinematics_UnconstrainedPairValue.hxx
+StepKinematics_UniversalPair.cxx
+StepKinematics_UniversalPair.hxx
+StepKinematics_UniversalPairValue.cxx
+StepKinematics_UniversalPairValue.hxx
+StepKinematics_UniversalPairWithRange.cxx
+StepKinematics_UniversalPairWithRange.hxx
\ No newline at end of file
diff --git a/src/StepKinematics/StepKinematics_ActuatedDirection.hxx b/src/StepKinematics/StepKinematics_ActuatedDirection.hxx
new file mode 100644 (file)
index 0000000..81c3ca5
--- /dev/null
@@ -0,0 +1,27 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ActuatedDirection_HeaderFile
+#define _StepKinematics_ActuatedDirection_HeaderFile
+
+enum StepKinematics_ActuatedDirection
+{
+  StepKinematics_adBidirectional,
+  StepKinematics_adPositiveOnly,
+  StepKinematics_adNegativeOnly,
+  StepKinematics_adNotActuated
+};
+#endif // _StepKinematics_ActuatedDirection_HeaderFile
diff --git a/src/StepKinematics/StepKinematics_ActuatedKinPairAndOrderKinPair.cxx b/src/StepKinematics/StepKinematics_ActuatedKinPairAndOrderKinPair.cxx
new file mode 100644 (file)
index 0000000..ec55f80
--- /dev/null
@@ -0,0 +1,57 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepKinematics_ActuatedKinematicPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ActuatedKinPairAndOrderKinPair, StepKinematics_KinematicPair)
+
+//=======================================================================
+//function : StepKinematics_ActuatedKinPairAndOrderKinPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedKinPairAndOrderKinPair::StepKinematics_ActuatedKinPairAndOrderKinPair()
+{}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinPairAndOrderKinPair::Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                         const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                         const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                         const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                         const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                         const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                         const Handle(StepKinematics_KinematicJoint)& theJoint,
+                                                         const Handle(StepKinematics_ActuatedKinematicPair)& theActuatedKinematicPair,
+                                                         const Handle(StepKinematics_KinematicPair)& theOrderKinematicPair)
+{
+  StepKinematics_KinematicPair::Init(theRepresentationItem_Name,
+    theItemDefinedTransformation_Name,
+    hasItemDefinedTransformation_Description,
+    theItemDefinedTransformation_Description,
+    theItemDefinedTransformation_TransformItem1,
+    theItemDefinedTransformation_TransformItem2,
+    theJoint);
+  SetActuatedKinematicPair(theActuatedKinematicPair);
+  SetOrderKinematicPair(theOrderKinematicPair);
+}
\ No newline at end of file
diff --git a/src/StepKinematics/StepKinematics_ActuatedKinPairAndOrderKinPair.hxx b/src/StepKinematics/StepKinematics_ActuatedKinPairAndOrderKinPair.hxx
new file mode 100644 (file)
index 0000000..41addfa
--- /dev/null
@@ -0,0 +1,202 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ActuatedKinPairAndOrderKinPair_HeaderFile_
+#define _StepKinematics_ActuatedKinPairAndOrderKinPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <Standard_Transient.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+class StepRepr_RepresentationItem;
+class StepKinematics_ActuatedKinematicPair;
+class StepKinematics_ActuatedKinPairAndOrderKinPair;
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ActuatedKinPairAndOrderKinPair, StepKinematics_KinematicPair)
+
+//! Representation of STEP entity ActuatedKinPairAndOrderKinPair
+class StepKinematics_ActuatedKinPairAndOrderKinPair : public StepKinematics_KinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ActuatedKinPairAndOrderKinPair();
+
+
+  Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                            const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                            const Standard_Boolean hasItemDefinedTransformation_Description,
+                            const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                            const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                            const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                            const Handle(StepKinematics_KinematicJoint)& theJoint,
+                            const Handle(StepKinematics_ActuatedKinematicPair)& theActuatedKinematicPair,
+                            const Handle(StepKinematics_KinematicPair)& theOrderKinematicPair);
+  ////! Initialize all fields for low order kinematic pair
+  //Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+  //                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+  //                          const Standard_Boolean hasItemDefinedTransformation_Description,
+  //                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+  //                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+  //                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+  //                          const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+  //                          const Standard_Boolean theLowOrderKinematicPair_TX,
+  //                          const Standard_Boolean theLowOrderKinematicPair_TY,
+  //                          const Standard_Boolean theLowOrderKinematicPair_TZ,
+  //                          const Standard_Boolean theLowOrderKinematicPair_RX,
+  //                          const Standard_Boolean theLowOrderKinematicPair_RY,
+  //                          const Standard_Boolean theLowOrderKinematicPair_RZ,
+  //                          const Standard_Boolean hasUniversalPair_InputSkewAngle,
+  //                          const Standard_Real theUniversalPair_InputSkewAngle,
+  //                          const Standard_Boolean hasLowerLimitFirstRotation,
+  //                          const Standard_Real theLowerLimitFirstRotation,
+  //                          const Standard_Boolean hasUpperLimitFirstRotation,
+  //                          const Standard_Real theUpperLimitFirstRotation,
+  //                          const Standard_Boolean hasLowerLimitSecondRotation,
+  //                          const Standard_Real theLowerLimitSecondRotation,
+  //                          const Standard_Boolean hasUpperLimitSecondRotation,
+  //                          const Standard_Real theUpperLimitSecondRotation);
+
+  ////! Initialize all fields for low order kinematic pair with motions coupling
+  //Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+  //                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+  //                          const Standard_Boolean hasItemDefinedTransformation_Description,
+  //                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+  //                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+  //                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+  //                          const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+  //                          const Standard_Real theScrewPair_Pitch,
+  //                          const Standard_Real theGearPair_RadiusFirstLink,
+  //                          const Standard_Real theGearPair_RadiusSecondLink,
+  //                          const Standard_Real theGearPair_Bevel,
+  //                          const Standard_Real theGearPair_HelicalAngle,
+  //                          const Standard_Real theGearPair_GearRatio,
+  //                          const Standard_Boolean hasLowerLimitActualRotation1,
+  //                          const Standard_Real theLowerLimitActualRotation1,
+  //                          const Standard_Boolean hasUpperLimitActualRotation1,
+  //                          const Standard_Real theUpperLimitActualRotation1,
+  //                          const Handle(TColStd_HArray1OfReal) theParams);
+
+  ////! Initialize all fields for high order kinematic pair
+  //Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+  //                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+  //                          const Standard_Boolean hasItemDefinedTransformation_Description,
+  //                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+  //                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+  //                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+  //                          const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+  //                          const Standard_Boolean theOrientation,
+  //                          const Handle(TColStd_HArray1OfReal) theLimits,
+  //                          const NCollection_Array1<Handle(Geom_Geometry)> theGeom);
+
+  inline void SetActuatedKinematicPair(const Handle(StepKinematics_ActuatedKinematicPair)& aKP) {
+    myActuatedKinematicPair = aKP;
+  }
+
+  inline Handle(StepKinematics_ActuatedKinematicPair) GetActuatedKinematicPair() const {
+    return myActuatedKinematicPair;
+  }
+  inline void SetOrderKinematicPair(const Handle(StepKinematics_KinematicPair)& aKP) {
+    myOrderKinematicPair = aKP;
+  }
+
+  inline Handle(StepKinematics_KinematicPair) GetOrderKinematicPair() const {
+    return myOrderKinematicPair;
+  }
+  ////! Returns field LowerLimitFirstRotation
+  //Standard_EXPORT Standard_Real LowerLimitFirstRotation() const;
+  ////! Sets field LowerLimitFirstRotation
+  //Standard_EXPORT void SetLowerLimitFirstRotation(const Standard_Real theLowerLimitFirstRotation);
+  ////! Returns True if optional field LowerLimitFirstRotation is defined
+  //Standard_EXPORT Standard_Boolean HasLowerLimitFirstRotation() const;
+
+  ////! Returns field UpperLimitFirstRotation
+  //Standard_EXPORT Standard_Real UpperLimitFirstRotation() const;
+  ////! Sets field UpperLimitFirstRotation
+  //Standard_EXPORT void SetUpperLimitFirstRotation(const Standard_Real theUpperLimitFirstRotation);
+  ////! Returns True if optional field UpperLimitFirstRotation is defined
+  //Standard_EXPORT Standard_Boolean HasUpperLimitFirstRotation() const;
+
+  ////! Returns field LowerLimitSecondRotation
+  //Standard_EXPORT Standard_Real LowerLimitSecondRotation() const;
+  ////! Sets field LowerLimitSecondRotation
+  //Standard_EXPORT void SetLowerLimitSecondRotation(const Standard_Real theLowerLimitSecondRotation);
+  ////! Returns True if optional field LowerLimitSecondRotation is defined
+  //Standard_EXPORT Standard_Boolean HasLowerLimitSecondRotation() const;
+
+  ////! Returns field UpperLimitSecondRotation
+  //Standard_EXPORT Standard_Real UpperLimitSecondRotation() const;
+  ////! Sets field UpperLimitSecondRotation
+  //Standard_EXPORT void SetUpperLimitSecondRotation(const Standard_Real theUpperLimitSecondRotation);
+  ////! Returns True if optional field UpperLimitSecondRotation is defined
+  //Standard_EXPORT Standard_Boolean HasUpperLimitSecondRotation() const;
+
+  ////! Returns field InputSkewAngle
+  //Standard_EXPORT Standard_Real InputSkewAngle() const;
+  ////! Sets field InputSkewAngle
+  //Standard_EXPORT void SetInputSkewAngle(const Standard_Real theInputSkewAngle);
+  ////! Returns True if optional field InputSkewAngle is defined
+  //Standard_EXPORT Standard_Boolean HasInputSkewAngle() const;
+
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ActuatedKinPairAndOrderKinPair, StepKinematics_KinematicPair)
+
+private:
+  Handle(StepKinematics_ActuatedKinematicPair) myActuatedKinematicPair;
+  Handle(StepKinematics_KinematicPair) myOrderKinematicPair;
+  //Standard_Boolean myTX;
+  //Standard_Boolean myTY;
+  //Standard_Boolean myTZ;
+  //Standard_Boolean myRX;
+  //Standard_Boolean myRY;
+  //Standard_Boolean myRZ;
+  //Standard_Boolean defInputSkewAngle; //!< flag "is InputSkewAngle defined"
+  //Standard_Real myMinRotationX;    //!< minimum value of the yaw angle
+  //Standard_Real myMaxRotationX;    //!< maximum value of the yaw angle
+  //Standard_Real myMinRotationY;    //!< minimum value of the pitch angle
+  //Standard_Real myMaxRotationY;    //!< maximum value of the pitch angle
+  //Standard_Real myMinRotationZ;    //!< minimum value of the roll angle
+  //Standard_Real myMaxRotationZ;    //!< maximum value of the roll angle
+  //Standard_Real myMinTranslationX; //!< minimum value of translation in x-direction
+  //Standard_Real myMaxTranslationX; //!< maximum value of translation in x-direction
+  //Standard_Real myMinTranslationY; //!< minimum value of translation in y-direction
+  //Standard_Real myMaxTranslationY; //!< maximum value of translation in y-direction
+  //Standard_Real myMinTranslationZ; //!< minimum value of translation in z-direction
+  //Standard_Real myMaxTranslationZ; //!< maximum value of translation in z-direction
+  //Standard_Real myLowerLimitFirstRotation; //!< optional
+  //Standard_Real myUpperLimitFirstRotation; //!< optional
+  //Standard_Real myLowerLimitSecondRotation; //!< optional
+  //Standard_Real myUpperLimitSecondRotation; //!< optional
+  //Standard_Boolean defLowerLimitFirstRotation; //!< flag "is LowerLimitFirstRotation defined"
+  //Standard_Boolean defUpperLimitFirstRotation; //!< flag "is UpperLimitFirstRotation defined"
+  //Standard_Boolean defLowerLimitSecondRotation; //!< flag "is LowerLimitSecondRotation defined"
+  //Standard_Boolean defUpperLimitSecondRotation; //!< flag "is UpperLimitSecondRotation defined"
+  //Standard_Real myRadiusFirstLink;
+  //Standard_Real myRadiusSecondLink;
+  //Standard_Real myBevel;
+  //Standard_Real myHelicalAngle;
+  //Standard_Real myGearRatio;
+  //Standard_Real mySkewAngle;       //!< param for universal/homokinetic pair
+  //Standard_Real myLowLimit;               //!< low limit of motion range
+  //Standard_Real myUpperLimit;             //!< upper limit of motion range
+  //Handle(TColStd_HArray1OfReal) myParams; //!< additional parameters of kinematic pair
+  //Standard_Boolean myOrientation;                   //!< orientation
+  //Handle(TColStd_HArray1OfReal) myLimits;           //!< array of limits, size depends on type
+  //NCollection_Array1<Handle(Geom_Geometry)> myGeom; //!< curve(s) or surface(s) attributes
+};
+#endif // StepKinematics_ActuatedKinPairAndOrderKinPair
diff --git a/src/StepKinematics/StepKinematics_ActuatedKinematicPair.cxx b/src/StepKinematics/StepKinematics_ActuatedKinematicPair.cxx
new file mode 100644 (file)
index 0000000..e709ea5
--- /dev/null
@@ -0,0 +1,284 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ActuatedKinematicPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ActuatedKinematicPair, StepKinematics_KinematicPair)
+
+//=======================================================================
+//function : StepKinematics_ActuatedKinematicPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedKinematicPair::StepKinematics_ActuatedKinematicPair ()
+{
+  defTX = Standard_False;
+  defTY = Standard_False;
+  defTZ = Standard_False;
+  defRX = Standard_False;
+  defRY = Standard_False;
+  defRZ = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                 const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                 const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                 const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                 const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                 const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                 const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                 const Standard_Boolean hasTX,
+                                                 const StepKinematics_ActuatedDirection theTX,
+                                                 const Standard_Boolean hasTY,
+                                                 const StepKinematics_ActuatedDirection theTY,
+                                                 const Standard_Boolean hasTZ,
+                                                 const StepKinematics_ActuatedDirection theTZ,
+                                                 const Standard_Boolean hasRX,
+                                                 const StepKinematics_ActuatedDirection theRX,
+                                                 const Standard_Boolean hasRY,
+                                                 const StepKinematics_ActuatedDirection theRY,
+                                                 const Standard_Boolean hasRZ,
+                                                 const StepKinematics_ActuatedDirection theRZ)
+{
+  StepKinematics_KinematicPair::Init(theRepresentationItem_Name,
+                                     theItemDefinedTransformation_Name,
+                                     hasItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_TransformItem1,
+                                     theItemDefinedTransformation_TransformItem2,
+                                     theKinematicPair_Joint);
+
+  defTX = hasTX;
+  if (defTX) {
+    myTX = theTX;
+  }
+  else myTX = StepKinematics_ActuatedDirection();
+
+  defTY = hasTY;
+  if (defTY) {
+    myTY = theTY;
+  }
+  else myTY = StepKinematics_ActuatedDirection();
+
+  defTZ = hasTZ;
+  if (defTZ) {
+    myTZ = theTZ;
+  }
+  else myTZ = StepKinematics_ActuatedDirection();
+
+  defRX = hasRX;
+  if (defRX) {
+    myRX = theRX;
+  }
+  else myRX = StepKinematics_ActuatedDirection();
+
+  defRY = hasRY;
+  if (defRY) {
+    myRY = theRY;
+  }
+  else myRY = StepKinematics_ActuatedDirection();
+
+  defRZ = hasRZ;
+  if (defRZ) {
+    myRZ = theRZ;
+  }
+  else myRZ = StepKinematics_ActuatedDirection();
+}
+
+//=======================================================================
+//function : TX
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedDirection StepKinematics_ActuatedKinematicPair::TX () const
+{
+  return myTX;
+}
+
+//=======================================================================
+//function : SetTX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::SetTX (const StepKinematics_ActuatedDirection theTX)
+{
+  myTX = theTX;
+}
+
+//=======================================================================
+//function : HasTX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ActuatedKinematicPair::HasTX () const
+{
+  return defTX;
+}
+
+//=======================================================================
+//function : TY
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedDirection StepKinematics_ActuatedKinematicPair::TY () const
+{
+  return myTY;
+}
+
+//=======================================================================
+//function : SetTY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::SetTY (const StepKinematics_ActuatedDirection theTY)
+{
+  myTY = theTY;
+}
+
+//=======================================================================
+//function : HasTY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ActuatedKinematicPair::HasTY () const
+{
+  return defTY;
+}
+
+//=======================================================================
+//function : TZ
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedDirection StepKinematics_ActuatedKinematicPair::TZ () const
+{
+  return myTZ;
+}
+
+//=======================================================================
+//function : SetTZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::SetTZ (const StepKinematics_ActuatedDirection theTZ)
+{
+  myTZ = theTZ;
+}
+
+//=======================================================================
+//function : HasTZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ActuatedKinematicPair::HasTZ () const
+{
+  return defTZ;
+}
+
+//=======================================================================
+//function : RX
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedDirection StepKinematics_ActuatedKinematicPair::RX () const
+{
+  return myRX;
+}
+
+//=======================================================================
+//function : SetRX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::SetRX (const StepKinematics_ActuatedDirection theRX)
+{
+  myRX = theRX;
+}
+
+//=======================================================================
+//function : HasRX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ActuatedKinematicPair::HasRX () const
+{
+  return defRX;
+}
+
+//=======================================================================
+//function : RY
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedDirection StepKinematics_ActuatedKinematicPair::RY () const
+{
+  return myRY;
+}
+
+//=======================================================================
+//function : SetRY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::SetRY (const StepKinematics_ActuatedDirection theRY)
+{
+  myRY = theRY;
+}
+
+//=======================================================================
+//function : HasRY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ActuatedKinematicPair::HasRY () const
+{
+  return defRY;
+}
+
+//=======================================================================
+//function : RZ
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ActuatedDirection StepKinematics_ActuatedKinematicPair::RZ () const
+{
+  return myRZ;
+}
+
+//=======================================================================
+//function : SetRZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ActuatedKinematicPair::SetRZ (const StepKinematics_ActuatedDirection theRZ)
+{
+  myRZ = theRZ;
+}
+
+//=======================================================================
+//function : HasRZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ActuatedKinematicPair::HasRZ () const
+{
+  return defRZ;
+}
diff --git a/src/StepKinematics/StepKinematics_ActuatedKinematicPair.hxx b/src/StepKinematics/StepKinematics_ActuatedKinematicPair.hxx
new file mode 100644 (file)
index 0000000..d7360a6
--- /dev/null
@@ -0,0 +1,121 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ActuatedKinematicPair_HeaderFile_
+#define _StepKinematics_ActuatedKinematicPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepKinematics_ActuatedDirection.hxx>
+#include <StepKinematics_ActuatedDirection.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ActuatedKinematicPair, StepKinematics_KinematicPair)
+
+//! Representation of STEP entity ActuatedKinematicPair
+class StepKinematics_ActuatedKinematicPair : public StepKinematics_KinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ActuatedKinematicPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean hasTX,
+                           const StepKinematics_ActuatedDirection theTX,
+                           const Standard_Boolean hasTY,
+                           const StepKinematics_ActuatedDirection theTY,
+                           const Standard_Boolean hasTZ,
+                           const StepKinematics_ActuatedDirection theTZ,
+                           const Standard_Boolean hasRX,
+                           const StepKinematics_ActuatedDirection theRX,
+                           const Standard_Boolean hasRY,
+                           const StepKinematics_ActuatedDirection theRY,
+                           const Standard_Boolean hasRZ,
+                           const StepKinematics_ActuatedDirection theRZ);
+
+  //! Returns field TX
+  Standard_EXPORT StepKinematics_ActuatedDirection TX() const;
+  //! Sets field TX
+  Standard_EXPORT void SetTX (const StepKinematics_ActuatedDirection theTX);
+  //! Returns True if optional field TX is defined
+  Standard_EXPORT Standard_Boolean HasTX() const;
+
+  //! Returns field TY
+  Standard_EXPORT StepKinematics_ActuatedDirection TY() const;
+  //! Sets field TY
+  Standard_EXPORT void SetTY (const StepKinematics_ActuatedDirection theTY);
+  //! Returns True if optional field TY is defined
+  Standard_EXPORT Standard_Boolean HasTY() const;
+
+  //! Returns field TZ
+  Standard_EXPORT StepKinematics_ActuatedDirection TZ() const;
+  //! Sets field TZ
+  Standard_EXPORT void SetTZ (const StepKinematics_ActuatedDirection theTZ);
+  //! Returns True if optional field TZ is defined
+  Standard_EXPORT Standard_Boolean HasTZ() const;
+
+  //! Returns field RX
+  Standard_EXPORT StepKinematics_ActuatedDirection RX() const;
+  //! Sets field RX
+  Standard_EXPORT void SetRX (const StepKinematics_ActuatedDirection theRX);
+  //! Returns True if optional field RX is defined
+  Standard_EXPORT Standard_Boolean HasRX() const;
+
+  //! Returns field RY
+  Standard_EXPORT StepKinematics_ActuatedDirection RY() const;
+  //! Sets field RY
+  Standard_EXPORT void SetRY (const StepKinematics_ActuatedDirection theRY);
+  //! Returns True if optional field RY is defined
+  Standard_EXPORT Standard_Boolean HasRY() const;
+
+  //! Returns field RZ
+  Standard_EXPORT StepKinematics_ActuatedDirection RZ() const;
+  //! Sets field RZ
+  Standard_EXPORT void SetRZ (const StepKinematics_ActuatedDirection theRZ);
+  //! Returns True if optional field RZ is defined
+  Standard_EXPORT Standard_Boolean HasRZ() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ActuatedKinematicPair, StepKinematics_KinematicPair)
+
+private:
+  StepKinematics_ActuatedDirection myTX; //!< optional
+  StepKinematics_ActuatedDirection myTY; //!< optional
+  StepKinematics_ActuatedDirection myTZ; //!< optional
+  StepKinematics_ActuatedDirection myRX; //!< optional
+  StepKinematics_ActuatedDirection myRY; //!< optional
+  StepKinematics_ActuatedDirection myRZ; //!< optional
+  Standard_Boolean defTX; //!< flag "is TX defined"
+  Standard_Boolean defTY; //!< flag "is TY defined"
+  Standard_Boolean defTZ; //!< flag "is TZ defined"
+  Standard_Boolean defRX; //!< flag "is RX defined"
+  Standard_Boolean defRY; //!< flag "is RY defined"
+  Standard_Boolean defRZ; //!< flag "is RZ defined"
+
+};
+#endif // _StepKinematics_ActuatedKinematicPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_ContextDependentKinematicLinkRepresentation.cxx b/src/StepKinematics/StepKinematics_ContextDependentKinematicLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..3c3d73b
--- /dev/null
@@ -0,0 +1,82 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ContextDependentKinematicLinkRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ContextDependentKinematicLinkRepresentation, Standard_Transient)
+
+//=======================================================================
+//function : StepKinematics_ContextDependentKinematicLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ContextDependentKinematicLinkRepresentation::StepKinematics_ContextDependentKinematicLinkRepresentation ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ContextDependentKinematicLinkRepresentation::Init (const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& theRepresentationRelation,
+                                                                       const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& theRepresentedProductRelation)
+{
+
+  myRepresentationRelation = theRepresentationRelation;
+
+  myRepresentedProductRelation = theRepresentedProductRelation;
+}
+
+//=======================================================================
+//function : RepresentationRelation
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicLinkRepresentationAssociation) StepKinematics_ContextDependentKinematicLinkRepresentation::RepresentationRelation () const
+{
+  return myRepresentationRelation;
+}
+
+//=======================================================================
+//function : SetRepresentationRelation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ContextDependentKinematicLinkRepresentation::SetRepresentationRelation (const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& theRepresentationRelation)
+{
+  myRepresentationRelation = theRepresentationRelation;
+}
+
+//=======================================================================
+//function : RepresentedProductRelation
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_ProductDefinitionRelationshipKinematics) StepKinematics_ContextDependentKinematicLinkRepresentation::RepresentedProductRelation () const
+{
+  return myRepresentedProductRelation;
+}
+
+//=======================================================================
+//function : SetRepresentedProductRelation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ContextDependentKinematicLinkRepresentation::SetRepresentedProductRelation (const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& theRepresentedProductRelation)
+{
+  myRepresentedProductRelation = theRepresentedProductRelation;
+}
diff --git a/src/StepKinematics/StepKinematics_ContextDependentKinematicLinkRepresentation.hxx b/src/StepKinematics/StepKinematics_ContextDependentKinematicLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..fe94b4c
--- /dev/null
@@ -0,0 +1,58 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ContextDependentKinematicLinkRepresentation_HeaderFile_
+#define _StepKinematics_ContextDependentKinematicLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <Standard_Transient.hxx>
+
+#include <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+#include <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ContextDependentKinematicLinkRepresentation, Standard_Transient)
+
+//! Representation of STEP entity ContextDependentKinematicLinkRepresentation
+class StepKinematics_ContextDependentKinematicLinkRepresentation : public Standard_Transient
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ContextDependentKinematicLinkRepresentation();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& theRepresentationRelation,
+                           const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& theRepresentedProductRelation);
+
+  //! Returns field RepresentationRelation
+  Standard_EXPORT Handle(StepKinematics_KinematicLinkRepresentationAssociation) RepresentationRelation() const;
+  //! Sets field RepresentationRelation
+  Standard_EXPORT void SetRepresentationRelation (const Handle(StepKinematics_KinematicLinkRepresentationAssociation)& theRepresentationRelation);
+
+  //! Returns field RepresentedProductRelation
+  Standard_EXPORT Handle(StepKinematics_ProductDefinitionRelationshipKinematics) RepresentedProductRelation() const;
+  //! Sets field RepresentedProductRelation
+  Standard_EXPORT void SetRepresentedProductRelation (const Handle(StepKinematics_ProductDefinitionRelationshipKinematics)& theRepresentedProductRelation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ContextDependentKinematicLinkRepresentation, Standard_Transient)
+
+private:
+  Handle(StepKinematics_KinematicLinkRepresentationAssociation) myRepresentationRelation;
+  Handle(StepKinematics_ProductDefinitionRelationshipKinematics) myRepresentedProductRelation;
+
+};
+#endif // _StepKinematics_ContextDependentKinematicLinkRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_CylindricalPair.cxx b/src/StepKinematics/StepKinematics_CylindricalPair.cxx
new file mode 100644 (file)
index 0000000..246c39f
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_CylindricalPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_CylindricalPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_CylindricalPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_CylindricalPair::StepKinematics_CylindricalPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_CylindricalPair.hxx b/src/StepKinematics/StepKinematics_CylindricalPair.hxx
new file mode 100644 (file)
index 0000000..4c27408
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_CylindricalPair_HeaderFile_
+#define _StepKinematics_CylindricalPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_CylindricalPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity CylindricalPair
+class StepKinematics_CylindricalPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_CylindricalPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_CylindricalPair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_CylindricalPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_CylindricalPairValue.cxx b/src/StepKinematics/StepKinematics_CylindricalPairValue.cxx
new file mode 100644 (file)
index 0000000..c81fa74
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_CylindricalPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_CylindricalPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_CylindricalPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_CylindricalPairValue::StepKinematics_CylindricalPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                const Standard_Real theActualTranslation,
+                                                const Standard_Real theActualRotation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualTranslation = theActualTranslation;
+
+  myActualRotation = theActualRotation;
+}
+
+//=======================================================================
+//function : ActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_CylindricalPairValue::ActualTranslation () const
+{
+  return myActualTranslation;
+}
+
+//=======================================================================
+//function : SetActualTranslation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairValue::SetActualTranslation (const Standard_Real theActualTranslation)
+{
+  myActualTranslation = theActualTranslation;
+}
+
+//=======================================================================
+//function : ActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_CylindricalPairValue::ActualRotation () const
+{
+  return myActualRotation;
+}
+
+//=======================================================================
+//function : SetActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairValue::SetActualRotation (const Standard_Real theActualRotation)
+{
+  myActualRotation = theActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_CylindricalPairValue.hxx b/src/StepKinematics/StepKinematics_CylindricalPairValue.hxx
new file mode 100644 (file)
index 0000000..2222a87
--- /dev/null
@@ -0,0 +1,60 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_CylindricalPairValue_HeaderFile_
+#define _StepKinematics_CylindricalPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_CylindricalPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity CylindricalPairValue
+class StepKinematics_CylindricalPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_CylindricalPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualTranslation,
+                           const Standard_Real theActualRotation);
+
+  //! Returns field ActualTranslation
+  Standard_EXPORT Standard_Real ActualTranslation() const;
+  //! Sets field ActualTranslation
+  Standard_EXPORT void SetActualTranslation (const Standard_Real theActualTranslation);
+
+  //! Returns field ActualRotation
+  Standard_EXPORT Standard_Real ActualRotation() const;
+  //! Sets field ActualRotation
+  Standard_EXPORT void SetActualRotation (const Standard_Real theActualRotation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_CylindricalPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualTranslation;
+  Standard_Real myActualRotation;
+
+};
+#endif // _StepKinematics_CylindricalPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_CylindricalPairWithRange.cxx b/src/StepKinematics/StepKinematics_CylindricalPairWithRange.cxx
new file mode 100644 (file)
index 0000000..d20b45d
--- /dev/null
@@ -0,0 +1,218 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_CylindricalPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_CylindricalPairWithRange, StepKinematics_CylindricalPair)
+
+//=======================================================================
+//function : StepKinematics_CylindricalPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_CylindricalPairWithRange::StepKinematics_CylindricalPairWithRange ()
+{
+  defLowerLimitActualTranslation = Standard_False;
+  defUpperLimitActualTranslation = Standard_False;
+  defLowerLimitActualRotation = Standard_False;
+  defUpperLimitActualRotation = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                    const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                    const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                    const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                    const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                    const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                    const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                    const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                    const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                    const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                    const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                    const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                    const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                    const Standard_Boolean hasLowerLimitActualTranslation,
+                                                    const Standard_Real theLowerLimitActualTranslation,
+                                                    const Standard_Boolean hasUpperLimitActualTranslation,
+                                                    const Standard_Real theUpperLimitActualTranslation,
+                                                    const Standard_Boolean hasLowerLimitActualRotation,
+                                                    const Standard_Real theLowerLimitActualRotation,
+                                                    const Standard_Boolean hasUpperLimitActualRotation,
+                                                    const Standard_Real theUpperLimitActualRotation)
+{
+  StepKinematics_CylindricalPair::Init(theRepresentationItem_Name,
+                                       theItemDefinedTransformation_Name,
+                                       hasItemDefinedTransformation_Description,
+                                       theItemDefinedTransformation_Description,
+                                       theItemDefinedTransformation_TransformItem1,
+                                       theItemDefinedTransformation_TransformItem2,
+                                       theKinematicPair_Joint,
+                                       theLowOrderKinematicPair_TX,
+                                       theLowOrderKinematicPair_TY,
+                                       theLowOrderKinematicPair_TZ,
+                                       theLowOrderKinematicPair_RX,
+                                       theLowOrderKinematicPair_RY,
+                                       theLowOrderKinematicPair_RZ);
+
+  defLowerLimitActualTranslation = hasLowerLimitActualTranslation;
+  if (defLowerLimitActualTranslation) {
+    myLowerLimitActualTranslation = theLowerLimitActualTranslation;
+  }
+  else myLowerLimitActualTranslation = 0;
+
+  defUpperLimitActualTranslation = hasUpperLimitActualTranslation;
+  if (defUpperLimitActualTranslation) {
+    myUpperLimitActualTranslation = theUpperLimitActualTranslation;
+  }
+  else myUpperLimitActualTranslation = 0;
+
+  defLowerLimitActualRotation = hasLowerLimitActualRotation;
+  if (defLowerLimitActualRotation) {
+    myLowerLimitActualRotation = theLowerLimitActualRotation;
+  }
+  else myLowerLimitActualRotation = 0;
+
+  defUpperLimitActualRotation = hasUpperLimitActualRotation;
+  if (defUpperLimitActualRotation) {
+    myUpperLimitActualRotation = theUpperLimitActualRotation;
+  }
+  else myUpperLimitActualRotation = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_CylindricalPairWithRange::LowerLimitActualTranslation () const
+{
+  return myLowerLimitActualTranslation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairWithRange::SetLowerLimitActualTranslation (const Standard_Real theLowerLimitActualTranslation)
+{
+  myLowerLimitActualTranslation = theLowerLimitActualTranslation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_CylindricalPairWithRange::HasLowerLimitActualTranslation () const
+{
+  return defLowerLimitActualTranslation;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_CylindricalPairWithRange::UpperLimitActualTranslation () const
+{
+  return myUpperLimitActualTranslation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairWithRange::SetUpperLimitActualTranslation (const Standard_Real theUpperLimitActualTranslation)
+{
+  myUpperLimitActualTranslation = theUpperLimitActualTranslation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_CylindricalPairWithRange::HasUpperLimitActualTranslation () const
+{
+  return defUpperLimitActualTranslation;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_CylindricalPairWithRange::LowerLimitActualRotation () const
+{
+  return myLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairWithRange::SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation)
+{
+  myLowerLimitActualRotation = theLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_CylindricalPairWithRange::HasLowerLimitActualRotation () const
+{
+  return defLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_CylindricalPairWithRange::UpperLimitActualRotation () const
+{
+  return myUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_CylindricalPairWithRange::SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation)
+{
+  myUpperLimitActualRotation = theUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_CylindricalPairWithRange::HasUpperLimitActualRotation () const
+{
+  return defUpperLimitActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_CylindricalPairWithRange.hxx b/src/StepKinematics/StepKinematics_CylindricalPairWithRange.hxx
new file mode 100644 (file)
index 0000000..74393e4
--- /dev/null
@@ -0,0 +1,103 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_CylindricalPairWithRange_HeaderFile_
+#define _StepKinematics_CylindricalPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_CylindricalPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_CylindricalPairWithRange, StepKinematics_CylindricalPair)
+
+//! Representation of STEP entity CylindricalPairWithRange
+class StepKinematics_CylindricalPairWithRange : public StepKinematics_CylindricalPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_CylindricalPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitActualTranslation,
+                           const Standard_Real theLowerLimitActualTranslation,
+                           const Standard_Boolean hasUpperLimitActualTranslation,
+                           const Standard_Real theUpperLimitActualTranslation,
+                           const Standard_Boolean hasLowerLimitActualRotation,
+                           const Standard_Real theLowerLimitActualRotation,
+                           const Standard_Boolean hasUpperLimitActualRotation,
+                           const Standard_Real theUpperLimitActualRotation);
+
+  //! Returns field LowerLimitActualTranslation
+  Standard_EXPORT Standard_Real LowerLimitActualTranslation() const;
+  //! Sets field LowerLimitActualTranslation
+  Standard_EXPORT void SetLowerLimitActualTranslation (const Standard_Real theLowerLimitActualTranslation);
+  //! Returns True if optional field LowerLimitActualTranslation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslation() const;
+
+  //! Returns field UpperLimitActualTranslation
+  Standard_EXPORT Standard_Real UpperLimitActualTranslation() const;
+  //! Sets field UpperLimitActualTranslation
+  Standard_EXPORT void SetUpperLimitActualTranslation (const Standard_Real theUpperLimitActualTranslation);
+  //! Returns True if optional field UpperLimitActualTranslation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslation() const;
+
+  //! Returns field LowerLimitActualRotation
+  Standard_EXPORT Standard_Real LowerLimitActualRotation() const;
+  //! Sets field LowerLimitActualRotation
+  Standard_EXPORT void SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation);
+  //! Returns True if optional field LowerLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotation() const;
+
+  //! Returns field UpperLimitActualRotation
+  Standard_EXPORT Standard_Real UpperLimitActualRotation() const;
+  //! Sets field UpperLimitActualRotation
+  Standard_EXPORT void SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation);
+  //! Returns True if optional field UpperLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotation() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_CylindricalPairWithRange, StepKinematics_CylindricalPair)
+
+private:
+  Standard_Real myLowerLimitActualTranslation; //!< optional
+  Standard_Real myUpperLimitActualTranslation; //!< optional
+  Standard_Real myLowerLimitActualRotation; //!< optional
+  Standard_Real myUpperLimitActualRotation; //!< optional
+  Standard_Boolean defLowerLimitActualTranslation; //!< flag "is LowerLimitActualTranslation defined"
+  Standard_Boolean defUpperLimitActualTranslation; //!< flag "is UpperLimitActualTranslation defined"
+  Standard_Boolean defLowerLimitActualRotation; //!< flag "is LowerLimitActualRotation defined"
+  Standard_Boolean defUpperLimitActualRotation; //!< flag "is UpperLimitActualRotation defined"
+
+};
+#endif // _StepKinematics_CylindricalPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_FullyConstrainedPair.cxx b/src/StepKinematics/StepKinematics_FullyConstrainedPair.cxx
new file mode 100644 (file)
index 0000000..e75afe1
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_FullyConstrainedPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_FullyConstrainedPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_FullyConstrainedPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_FullyConstrainedPair::StepKinematics_FullyConstrainedPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_FullyConstrainedPair.hxx b/src/StepKinematics/StepKinematics_FullyConstrainedPair.hxx
new file mode 100644 (file)
index 0000000..573f7cc
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_FullyConstrainedPair_HeaderFile_
+#define _StepKinematics_FullyConstrainedPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_FullyConstrainedPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity FullyConstrainedPair
+class StepKinematics_FullyConstrainedPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_FullyConstrainedPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_FullyConstrainedPair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_FullyConstrainedPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_GearPair.cxx b/src/StepKinematics/StepKinematics_GearPair.cxx
new file mode 100644 (file)
index 0000000..1518d1b
--- /dev/null
@@ -0,0 +1,165 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_GearPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_GearPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//=======================================================================
+//function : StepKinematics_GearPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_GearPair::StepKinematics_GearPair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                    const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                    const Standard_Boolean hasItemDefinedTransformation_Description,
+                                    const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                    const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                    const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                    const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                    const Standard_Real theRadiusFirstLink,
+                                    const Standard_Real theRadiusSecondLink,
+                                    const Standard_Real theBevel,
+                                    const Standard_Real theHelicalAngle,
+                                    const Standard_Real theGearRatio)
+{
+  StepKinematics_LowOrderKinematicPairWithMotionCoupling::Init(theRepresentationItem_Name,
+                                                               theItemDefinedTransformation_Name,
+                                                               hasItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_TransformItem1,
+                                                               theItemDefinedTransformation_TransformItem2,
+                                                               theKinematicPair_Joint);
+
+  myRadiusFirstLink = theRadiusFirstLink;
+
+  myRadiusSecondLink = theRadiusSecondLink;
+
+  myBevel = theBevel;
+
+  myHelicalAngle = theHelicalAngle;
+
+  myGearRatio = theGearRatio;
+}
+
+//=======================================================================
+//function : RadiusFirstLink
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPair::RadiusFirstLink () const
+{
+  return myRadiusFirstLink;
+}
+
+//=======================================================================
+//function : SetRadiusFirstLink
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPair::SetRadiusFirstLink (const Standard_Real theRadiusFirstLink)
+{
+  myRadiusFirstLink = theRadiusFirstLink;
+}
+
+//=======================================================================
+//function : RadiusSecondLink
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPair::RadiusSecondLink () const
+{
+  return myRadiusSecondLink;
+}
+
+//=======================================================================
+//function : SetRadiusSecondLink
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPair::SetRadiusSecondLink (const Standard_Real theRadiusSecondLink)
+{
+  myRadiusSecondLink = theRadiusSecondLink;
+}
+
+//=======================================================================
+//function : Bevel
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPair::Bevel () const
+{
+  return myBevel;
+}
+
+//=======================================================================
+//function : SetBevel
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPair::SetBevel (const Standard_Real theBevel)
+{
+  myBevel = theBevel;
+}
+
+//=======================================================================
+//function : HelicalAngle
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPair::HelicalAngle () const
+{
+  return myHelicalAngle;
+}
+
+//=======================================================================
+//function : SetHelicalAngle
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPair::SetHelicalAngle (const Standard_Real theHelicalAngle)
+{
+  myHelicalAngle = theHelicalAngle;
+}
+
+//=======================================================================
+//function : GearRatio
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPair::GearRatio () const
+{
+  return myGearRatio;
+}
+
+//=======================================================================
+//function : SetGearRatio
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPair::SetGearRatio (const Standard_Real theGearRatio)
+{
+  myGearRatio = theGearRatio;
+}
diff --git a/src/StepKinematics/StepKinematics_GearPair.hxx b/src/StepKinematics/StepKinematics_GearPair.hxx
new file mode 100644 (file)
index 0000000..493a7d3
--- /dev/null
@@ -0,0 +1,88 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_GearPair_HeaderFile_
+#define _StepKinematics_GearPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_GearPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//! Representation of STEP entity GearPair
+class StepKinematics_GearPair : public StepKinematics_LowOrderKinematicPairWithMotionCoupling
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_GearPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real theRadiusFirstLink,
+                           const Standard_Real theRadiusSecondLink,
+                           const Standard_Real theBevel,
+                           const Standard_Real theHelicalAngle,
+                           const Standard_Real theGearRatio);
+
+  //! Returns field RadiusFirstLink
+  Standard_EXPORT Standard_Real RadiusFirstLink() const;
+  //! Sets field RadiusFirstLink
+  Standard_EXPORT void SetRadiusFirstLink (const Standard_Real theRadiusFirstLink);
+
+  //! Returns field RadiusSecondLink
+  Standard_EXPORT Standard_Real RadiusSecondLink() const;
+  //! Sets field RadiusSecondLink
+  Standard_EXPORT void SetRadiusSecondLink (const Standard_Real theRadiusSecondLink);
+
+  //! Returns field Bevel
+  Standard_EXPORT Standard_Real Bevel() const;
+  //! Sets field Bevel
+  Standard_EXPORT void SetBevel (const Standard_Real theBevel);
+
+  //! Returns field HelicalAngle
+  Standard_EXPORT Standard_Real HelicalAngle() const;
+  //! Sets field HelicalAngle
+  Standard_EXPORT void SetHelicalAngle (const Standard_Real theHelicalAngle);
+
+  //! Returns field GearRatio
+  Standard_EXPORT Standard_Real GearRatio() const;
+  //! Sets field GearRatio
+  Standard_EXPORT void SetGearRatio (const Standard_Real theGearRatio);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_GearPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+private:
+  Standard_Real myRadiusFirstLink;
+  Standard_Real myRadiusSecondLink;
+  Standard_Real myBevel;
+  Standard_Real myHelicalAngle;
+  Standard_Real myGearRatio;
+
+};
+#endif // _StepKinematics_GearPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_GearPairValue.cxx b/src/StepKinematics/StepKinematics_GearPairValue.cxx
new file mode 100644 (file)
index 0000000..457e525
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_GearPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_GearPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_GearPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_GearPairValue::StepKinematics_GearPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                         const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                         const Standard_Real theActualRotation1)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualRotation1 = theActualRotation1;
+}
+
+//=======================================================================
+//function : ActualRotation1
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPairValue::ActualRotation1 () const
+{
+  return myActualRotation1;
+}
+
+//=======================================================================
+//function : SetActualRotation1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPairValue::SetActualRotation1 (const Standard_Real theActualRotation1)
+{
+  myActualRotation1 = theActualRotation1;
+}
diff --git a/src/StepKinematics/StepKinematics_GearPairValue.hxx b/src/StepKinematics/StepKinematics_GearPairValue.hxx
new file mode 100644 (file)
index 0000000..8c8a2eb
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_GearPairValue_HeaderFile_
+#define _StepKinematics_GearPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_GearPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity GearPairValue
+class StepKinematics_GearPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_GearPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualRotation1);
+
+  //! Returns field ActualRotation1
+  Standard_EXPORT Standard_Real ActualRotation1() const;
+  //! Sets field ActualRotation1
+  Standard_EXPORT void SetActualRotation1 (const Standard_Real theActualRotation1);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_GearPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualRotation1;
+
+};
+#endif // _StepKinematics_GearPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_GearPairWithRange.cxx b/src/StepKinematics/StepKinematics_GearPairWithRange.cxx
new file mode 100644 (file)
index 0000000..9587b78
--- /dev/null
@@ -0,0 +1,138 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_GearPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_GearPairWithRange, StepKinematics_GearPair)
+
+//=======================================================================
+//function : StepKinematics_GearPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_GearPairWithRange::StepKinematics_GearPairWithRange ()
+{
+  defLowerLimitActualRotation1 = Standard_False;
+  defUpperLimitActualRotation1 = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                             const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                             const Standard_Boolean hasItemDefinedTransformation_Description,
+                                             const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                             const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                             const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                             const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                             const Standard_Real theGearPair_RadiusFirstLink,
+                                             const Standard_Real theGearPair_RadiusSecondLink,
+                                             const Standard_Real theGearPair_Bevel,
+                                             const Standard_Real theGearPair_HelicalAngle,
+                                             const Standard_Real theGearPair_GearRatio,
+                                             const Standard_Boolean hasLowerLimitActualRotation1,
+                                             const Standard_Real theLowerLimitActualRotation1,
+                                             const Standard_Boolean hasUpperLimitActualRotation1,
+                                             const Standard_Real theUpperLimitActualRotation1)
+{
+  StepKinematics_GearPair::Init(theRepresentationItem_Name,
+                                theItemDefinedTransformation_Name,
+                                hasItemDefinedTransformation_Description,
+                                theItemDefinedTransformation_Description,
+                                theItemDefinedTransformation_TransformItem1,
+                                theItemDefinedTransformation_TransformItem2,
+                                theKinematicPair_Joint,
+                                theGearPair_RadiusFirstLink,
+                                theGearPair_RadiusSecondLink,
+                                theGearPair_Bevel,
+                                theGearPair_HelicalAngle,
+                                theGearPair_GearRatio);
+
+  defLowerLimitActualRotation1 = hasLowerLimitActualRotation1;
+  if (defLowerLimitActualRotation1) {
+    myLowerLimitActualRotation1 = theLowerLimitActualRotation1;
+  }
+  else myLowerLimitActualRotation1 = 0;
+
+  defUpperLimitActualRotation1 = hasUpperLimitActualRotation1;
+  if (defUpperLimitActualRotation1) {
+    myUpperLimitActualRotation1 = theUpperLimitActualRotation1;
+  }
+  else myUpperLimitActualRotation1 = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotation1
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPairWithRange::LowerLimitActualRotation1 () const
+{
+  return myLowerLimitActualRotation1;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotation1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPairWithRange::SetLowerLimitActualRotation1 (const Standard_Real theLowerLimitActualRotation1)
+{
+  myLowerLimitActualRotation1 = theLowerLimitActualRotation1;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotation1
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_GearPairWithRange::HasLowerLimitActualRotation1 () const
+{
+  return defLowerLimitActualRotation1;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotation1
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_GearPairWithRange::UpperLimitActualRotation1 () const
+{
+  return myUpperLimitActualRotation1;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotation1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_GearPairWithRange::SetUpperLimitActualRotation1 (const Standard_Real theUpperLimitActualRotation1)
+{
+  myUpperLimitActualRotation1 = theUpperLimitActualRotation1;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotation1
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_GearPairWithRange::HasUpperLimitActualRotation1 () const
+{
+  return defUpperLimitActualRotation1;
+}
diff --git a/src/StepKinematics/StepKinematics_GearPairWithRange.hxx b/src/StepKinematics/StepKinematics_GearPairWithRange.hxx
new file mode 100644 (file)
index 0000000..8f011aa
--- /dev/null
@@ -0,0 +1,80 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_GearPairWithRange_HeaderFile_
+#define _StepKinematics_GearPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_GearPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_GearPairWithRange, StepKinematics_GearPair)
+
+//! Representation of STEP entity GearPairWithRange
+class StepKinematics_GearPairWithRange : public StepKinematics_GearPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_GearPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real theGearPair_RadiusFirstLink,
+                           const Standard_Real theGearPair_RadiusSecondLink,
+                           const Standard_Real theGearPair_Bevel,
+                           const Standard_Real theGearPair_HelicalAngle,
+                           const Standard_Real theGearPair_GearRatio,
+                           const Standard_Boolean hasLowerLimitActualRotation1,
+                           const Standard_Real theLowerLimitActualRotation1,
+                           const Standard_Boolean hasUpperLimitActualRotation1,
+                           const Standard_Real theUpperLimitActualRotation1);
+
+  //! Returns field LowerLimitActualRotation1
+  Standard_EXPORT Standard_Real LowerLimitActualRotation1() const;
+  //! Sets field LowerLimitActualRotation1
+  Standard_EXPORT void SetLowerLimitActualRotation1 (const Standard_Real theLowerLimitActualRotation1);
+  //! Returns True if optional field LowerLimitActualRotation1 is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotation1() const;
+
+  //! Returns field UpperLimitActualRotation1
+  Standard_EXPORT Standard_Real UpperLimitActualRotation1() const;
+  //! Sets field UpperLimitActualRotation1
+  Standard_EXPORT void SetUpperLimitActualRotation1 (const Standard_Real theUpperLimitActualRotation1);
+  //! Returns True if optional field UpperLimitActualRotation1 is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotation1() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_GearPairWithRange, StepKinematics_GearPair)
+
+private:
+  Standard_Real myLowerLimitActualRotation1; //!< optional
+  Standard_Real myUpperLimitActualRotation1; //!< optional
+  Standard_Boolean defLowerLimitActualRotation1; //!< flag "is LowerLimitActualRotation1 defined"
+  Standard_Boolean defUpperLimitActualRotation1; //!< flag "is UpperLimitActualRotation1 defined"
+
+};
+#endif // _StepKinematics_GearPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_HighOrderKinematicPair.cxx b/src/StepKinematics/StepKinematics_HighOrderKinematicPair.cxx
new file mode 100644 (file)
index 0000000..28c4798
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_HighOrderKinematicPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_HighOrderKinematicPair, StepKinematics_KinematicPair)
+
+//=======================================================================
+//function : StepKinematics_HighOrderKinematicPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_HighOrderKinematicPair::StepKinematics_HighOrderKinematicPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_HighOrderKinematicPair.hxx b/src/StepKinematics/StepKinematics_HighOrderKinematicPair.hxx
new file mode 100644 (file)
index 0000000..40930a8
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_HighOrderKinematicPair_HeaderFile_
+#define _StepKinematics_HighOrderKinematicPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_HighOrderKinematicPair, StepKinematics_KinematicPair)
+
+//! Representation of STEP entity HighOrderKinematicPair
+class StepKinematics_HighOrderKinematicPair : public StepKinematics_KinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_HighOrderKinematicPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_HighOrderKinematicPair, StepKinematics_KinematicPair)
+
+};
+#endif // _StepKinematics_HighOrderKinematicPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_HomokineticPair.cxx b/src/StepKinematics/StepKinematics_HomokineticPair.cxx
new file mode 100644 (file)
index 0000000..940875f
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_HomokineticPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_HomokineticPair, StepKinematics_UniversalPair)
+
+//=======================================================================
+//function : StepKinematics_HomokineticPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_HomokineticPair::StepKinematics_HomokineticPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_HomokineticPair.hxx b/src/StepKinematics/StepKinematics_HomokineticPair.hxx
new file mode 100644 (file)
index 0000000..fa60e49
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_HomokineticPair_HeaderFile_
+#define _StepKinematics_HomokineticPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_HomokineticPair, StepKinematics_UniversalPair)
+
+//! Representation of STEP entity HomokineticPair
+class StepKinematics_HomokineticPair : public StepKinematics_UniversalPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_HomokineticPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_HomokineticPair, StepKinematics_UniversalPair)
+
+};
+#endif // _StepKinematics_HomokineticPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicJoint.cxx b/src/StepKinematics/StepKinematics_KinematicJoint.cxx
new file mode 100644 (file)
index 0000000..61083b7
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicJoint.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicJoint, StepShape_Edge)
+
+//=======================================================================
+//function : StepKinematics_KinematicJoint
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicJoint::StepKinematics_KinematicJoint ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicJoint.hxx b/src/StepKinematics/StepKinematics_KinematicJoint.hxx
new file mode 100644 (file)
index 0000000..be7a262
--- /dev/null
@@ -0,0 +1,40 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicJoint_HeaderFile_
+#define _StepKinematics_KinematicJoint_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepShape_Edge.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepShape_Vertex.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicJoint, StepShape_Edge)
+
+//! Representation of STEP entity KinematicJoint
+class StepKinematics_KinematicJoint : public StepShape_Edge
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicJoint();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicJoint, StepShape_Edge)
+
+};
+#endif // _StepKinematics_KinematicJoint_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicLink.cxx b/src/StepKinematics/StepKinematics_KinematicLink.cxx
new file mode 100644 (file)
index 0000000..2685c39
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicLink.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicLink, StepShape_Vertex)
+
+//=======================================================================
+//function : StepKinematics_KinematicLink
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicLink::StepKinematics_KinematicLink ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicLink.hxx b/src/StepKinematics/StepKinematics_KinematicLink.hxx
new file mode 100644 (file)
index 0000000..14ed0da
--- /dev/null
@@ -0,0 +1,39 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicLink_HeaderFile_
+#define _StepKinematics_KinematicLink_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepShape_Vertex.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicLink, StepShape_Vertex)
+
+//! Representation of STEP entity KinematicLink
+class StepKinematics_KinematicLink : public StepShape_Vertex
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicLink();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicLink, StepShape_Vertex)
+
+};
+#endif // _StepKinematics_KinematicLink_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicLinkRepresentation.cxx b/src/StepKinematics/StepKinematics_KinematicLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..7ad5513
--- /dev/null
@@ -0,0 +1,65 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicLinkRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicLinkRepresentation, StepRepr_Representation)
+
+//=======================================================================
+//function : StepKinematics_KinematicLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicLinkRepresentation::StepKinematics_KinematicLinkRepresentation ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicLinkRepresentation::Init (const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                                                       const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                                                       const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                                                       const Handle(StepKinematics_KinematicLink)& theRepresentedLink)
+{
+  StepRepr_Representation::Init(theRepresentation_Name,
+                                theRepresentation_Items,
+                                theRepresentation_ContextOfItems);
+
+  myRepresentedLink = theRepresentedLink;
+}
+
+//=======================================================================
+//function : RepresentedLink
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicLink) StepKinematics_KinematicLinkRepresentation::RepresentedLink () const
+{
+  return myRepresentedLink;
+}
+
+//=======================================================================
+//function : SetRepresentedLink
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicLinkRepresentation::SetRepresentedLink (const Handle(StepKinematics_KinematicLink)& theRepresentedLink)
+{
+  myRepresentedLink = theRepresentedLink;
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicLinkRepresentation.hxx b/src/StepKinematics/StepKinematics_KinematicLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..e042105
--- /dev/null
@@ -0,0 +1,56 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicLinkRepresentation_HeaderFile_
+#define _StepKinematics_KinematicLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_Representation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicLinkRepresentation, StepRepr_Representation)
+
+//! Representation of STEP entity KinematicLinkRepresentation
+class StepKinematics_KinematicLinkRepresentation : public StepRepr_Representation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicLinkRepresentation();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                           const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                           const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                           const Handle(StepKinematics_KinematicLink)& theRepresentedLink);
+
+  //! Returns field RepresentedLink
+  Standard_EXPORT Handle(StepKinematics_KinematicLink) RepresentedLink() const;
+  //! Sets field RepresentedLink
+  Standard_EXPORT void SetRepresentedLink (const Handle(StepKinematics_KinematicLink)& theRepresentedLink);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicLinkRepresentation, StepRepr_Representation)
+
+private:
+  Handle(StepKinematics_KinematicLink) myRepresentedLink;
+
+};
+#endif // _StepKinematics_KinematicLinkRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicLinkRepresentationAssociation.cxx b/src/StepKinematics/StepKinematics_KinematicLinkRepresentationAssociation.cxx
new file mode 100644 (file)
index 0000000..b52203f
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicLinkRepresentationAssociation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicLinkRepresentationAssociation, StepRepr_RepresentationRelationship)
+
+//=======================================================================
+//function : StepKinematics_KinematicLinkRepresentationAssociation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicLinkRepresentationAssociation::StepKinematics_KinematicLinkRepresentationAssociation ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicLinkRepresentationAssociation.hxx b/src/StepKinematics/StepKinematics_KinematicLinkRepresentationAssociation.hxx
new file mode 100644 (file)
index 0000000..e20ccad
--- /dev/null
@@ -0,0 +1,40 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicLinkRepresentationAssociation_HeaderFile_
+#define _StepKinematics_KinematicLinkRepresentationAssociation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_RepresentationRelationship.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationOrRepresentationReference.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicLinkRepresentationAssociation, StepRepr_RepresentationRelationship)
+
+//! Representation of STEP entity KinematicLinkRepresentationAssociation
+class StepKinematics_KinematicLinkRepresentationAssociation : public StepRepr_RepresentationRelationship
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicLinkRepresentationAssociation();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicLinkRepresentationAssociation, StepRepr_RepresentationRelationship)
+
+};
+#endif // _StepKinematics_KinematicLinkRepresentationAssociation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicPair.cxx b/src/StepKinematics/StepKinematics_KinematicPair.cxx
new file mode 100644 (file)
index 0000000..53a4181
--- /dev/null
@@ -0,0 +1,92 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicPair, StepGeom_GeometricRepresentationItem)
+
+//=======================================================================
+//function : StepKinematics_KinematicPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicPair::StepKinematics_KinematicPair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                         const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                         const Standard_Boolean /*hasItemDefinedTransformation_Description*/,
+                                         const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                         const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                         const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                         const Handle(StepKinematics_KinematicJoint)& theJoint)
+{
+  StepGeom_GeometricRepresentationItem::Init(theRepresentationItem_Name);
+  myItemDefinedTransformation = new StepRepr_ItemDefinedTransformation;
+  myItemDefinedTransformation->Init(theItemDefinedTransformation_Name,
+                                     /*hasItemDefinedTransformation_Description,*/
+                                     theItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_TransformItem1,
+                                     theItemDefinedTransformation_TransformItem2);
+
+  myJoint = theJoint;
+}
+
+//=======================================================================
+//function : ItemDefinedTransformation
+//purpose  : 
+//=======================================================================
+
+Handle(StepRepr_ItemDefinedTransformation) StepKinematics_KinematicPair::ItemDefinedTransformation () const
+{
+  return myItemDefinedTransformation;
+}
+
+//=======================================================================
+//function : SetItemDefinedTransformation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicPair::SetItemDefinedTransformation (const Handle(StepRepr_ItemDefinedTransformation)& theItemDefinedTransformation)
+{
+  myItemDefinedTransformation = theItemDefinedTransformation;
+}
+
+//=======================================================================
+//function : Joint
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicJoint) StepKinematics_KinematicPair::Joint () const
+{
+  return myJoint;
+}
+
+//=======================================================================
+//function : SetJoint
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicPair::SetJoint (const Handle(StepKinematics_KinematicJoint)& theJoint)
+{
+  myJoint = theJoint;
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicPair.hxx b/src/StepKinematics/StepKinematics_KinematicPair.hxx
new file mode 100644 (file)
index 0000000..8e34b16
--- /dev/null
@@ -0,0 +1,65 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicPair_HeaderFile_
+#define _StepKinematics_KinematicPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepGeom_GeometricRepresentationItem.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicPair, StepGeom_GeometricRepresentationItem)
+
+//! Representation of STEP entity KinematicPair
+class StepKinematics_KinematicPair : public StepGeom_GeometricRepresentationItem
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theJoint);
+
+  //! Returns data for supertype ItemDefinedTransformation
+  Standard_EXPORT Handle(StepRepr_ItemDefinedTransformation) ItemDefinedTransformation() const;
+  //! Sets data for supertype ItemDefinedTransformation
+  Standard_EXPORT void SetItemDefinedTransformation (const Handle(StepRepr_ItemDefinedTransformation)& theItemDefinedTransformation);
+
+  //! Returns field Joint
+  Standard_EXPORT Handle(StepKinematics_KinematicJoint) Joint() const;
+  //! Sets field Joint
+  Standard_EXPORT void SetJoint (const Handle(StepKinematics_KinematicJoint)& theJoint);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicPair, StepGeom_GeometricRepresentationItem)
+
+private:
+  Handle(StepRepr_ItemDefinedTransformation) myItemDefinedTransformation; //!< supertype
+  Handle(StepKinematics_KinematicJoint) myJoint;
+
+};
+#endif // _StepKinematics_KinematicPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicPropertyDefinitionRepresentation.cxx b/src/StepKinematics/StepKinematics_KinematicPropertyDefinitionRepresentation.cxx
new file mode 100644 (file)
index 0000000..b2b7359
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicPropertyDefinitionRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicPropertyDefinitionRepresentation, StepRepr_PropertyDefinitionRepresentation)
+
+//=======================================================================
+//function : StepKinematics_KinematicPropertyDefinitionRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicPropertyDefinitionRepresentation::StepKinematics_KinematicPropertyDefinitionRepresentation ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicPropertyDefinitionRepresentation.hxx b/src/StepKinematics/StepKinematics_KinematicPropertyDefinitionRepresentation.hxx
new file mode 100644 (file)
index 0000000..d292449
--- /dev/null
@@ -0,0 +1,40 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicPropertyDefinitionRepresentation_HeaderFile_
+#define _StepKinematics_KinematicPropertyDefinitionRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_PropertyDefinitionRepresentation.hxx>
+
+#include <StepRepr_RepresentedDefinition.hxx>
+#include <StepRepr_Representation.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicPropertyDefinitionRepresentation, StepRepr_PropertyDefinitionRepresentation)
+
+//! Representation of STEP entity KinematicPropertyDefinitionRepresentation
+class StepKinematics_KinematicPropertyDefinitionRepresentation : public StepRepr_PropertyDefinitionRepresentation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicPropertyDefinitionRepresentation();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicPropertyDefinitionRepresentation, StepRepr_PropertyDefinitionRepresentation)
+
+};
+#endif // _StepKinematics_KinematicPropertyDefinitionRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicPropertyMechanismRepresentation.cxx b/src/StepKinematics/StepKinematics_KinematicPropertyMechanismRepresentation.cxx
new file mode 100644 (file)
index 0000000..c8c3843
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicPropertyMechanismRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicPropertyMechanismRepresentation, StepKinematics_KinematicPropertyDefinitionRepresentation)
+
+//=======================================================================
+//function : StepKinematics_KinematicPropertyMechanismRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicPropertyMechanismRepresentation::StepKinematics_KinematicPropertyMechanismRepresentation ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicPropertyMechanismRepresentation::Init (const StepRepr_RepresentedDefinition& thePropertyDefinitionRepresentation_Definition,
+                                                                    const Handle(StepRepr_Representation)& thePropertyDefinitionRepresentation_UsedRepresentation,
+                                                                    const Handle(StepKinematics_KinematicLinkRepresentation)& theBase)
+{
+  StepKinematics_KinematicPropertyDefinitionRepresentation::Init(thePropertyDefinitionRepresentation_Definition,
+                                                                 thePropertyDefinitionRepresentation_UsedRepresentation);
+
+  myBase = theBase;
+}
+
+//=======================================================================
+//function : Base
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicLinkRepresentation) StepKinematics_KinematicPropertyMechanismRepresentation::Base () const
+{
+  return myBase;
+}
+
+//=======================================================================
+//function : SetBase
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicPropertyMechanismRepresentation::SetBase (const Handle(StepKinematics_KinematicLinkRepresentation)& theBase)
+{
+  myBase = theBase;
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicPropertyMechanismRepresentation.hxx b/src/StepKinematics/StepKinematics_KinematicPropertyMechanismRepresentation.hxx
new file mode 100644 (file)
index 0000000..9eb6cc6
--- /dev/null
@@ -0,0 +1,54 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicPropertyMechanismRepresentation_HeaderFile_
+#define _StepKinematics_KinematicPropertyMechanismRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicPropertyDefinitionRepresentation.hxx>
+
+#include <StepRepr_RepresentedDefinition.hxx>
+#include <StepRepr_Representation.hxx>
+#include <StepKinematics_KinematicLinkRepresentation.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicPropertyMechanismRepresentation, StepKinematics_KinematicPropertyDefinitionRepresentation)
+
+//! Representation of STEP entity KinematicPropertyMechanismRepresentation
+class StepKinematics_KinematicPropertyMechanismRepresentation : public StepKinematics_KinematicPropertyDefinitionRepresentation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicPropertyMechanismRepresentation();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const StepRepr_RepresentedDefinition& thePropertyDefinitionRepresentation_Definition,
+                           const Handle(StepRepr_Representation)& thePropertyDefinitionRepresentation_UsedRepresentation,
+                           const Handle(StepKinematics_KinematicLinkRepresentation)& theBase);
+
+  //! Returns field Base
+  Standard_EXPORT Handle(StepKinematics_KinematicLinkRepresentation) Base() const;
+  //! Sets field Base
+  Standard_EXPORT void SetBase (const Handle(StepKinematics_KinematicLinkRepresentation)& theBase);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicPropertyMechanismRepresentation, StepKinematics_KinematicPropertyDefinitionRepresentation)
+
+private:
+  Handle(StepKinematics_KinematicLinkRepresentation) myBase;
+
+};
+#endif // _StepKinematics_KinematicPropertyMechanismRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyDirectedStructure.cxx b/src/StepKinematics/StepKinematics_KinematicTopologyDirectedStructure.cxx
new file mode 100644 (file)
index 0000000..4fa7bc2
--- /dev/null
@@ -0,0 +1,65 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicTopologyDirectedStructure.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicTopologyDirectedStructure, StepRepr_Representation)
+
+//=======================================================================
+//function : StepKinematics_KinematicTopologyDirectedStructure
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicTopologyDirectedStructure::StepKinematics_KinematicTopologyDirectedStructure ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicTopologyDirectedStructure::Init (const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                                                              const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                                                              const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                                                              const Handle(StepKinematics_KinematicTopologyStructure)& theParent)
+{
+  StepRepr_Representation::Init(theRepresentation_Name,
+                                theRepresentation_Items,
+                                theRepresentation_ContextOfItems);
+
+  myParent = theParent;
+}
+
+//=======================================================================
+//function : Parent
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicTopologyStructure) StepKinematics_KinematicTopologyDirectedStructure::Parent () const
+{
+  return myParent;
+}
+
+//=======================================================================
+//function : SetParent
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicTopologyDirectedStructure::SetParent (const Handle(StepKinematics_KinematicTopologyStructure)& theParent)
+{
+  myParent = theParent;
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyDirectedStructure.hxx b/src/StepKinematics/StepKinematics_KinematicTopologyDirectedStructure.hxx
new file mode 100644 (file)
index 0000000..1ff25be
--- /dev/null
@@ -0,0 +1,56 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicTopologyDirectedStructure_HeaderFile_
+#define _StepKinematics_KinematicTopologyDirectedStructure_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_Representation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicTopologyDirectedStructure, StepRepr_Representation)
+
+//! Representation of STEP entity KinematicTopologyDirectedStructure
+class StepKinematics_KinematicTopologyDirectedStructure : public StepRepr_Representation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicTopologyDirectedStructure();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                           const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                           const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                           const Handle(StepKinematics_KinematicTopologyStructure)& theParent);
+
+  //! Returns field Parent
+  Standard_EXPORT Handle(StepKinematics_KinematicTopologyStructure) Parent() const;
+  //! Sets field Parent
+  Standard_EXPORT void SetParent (const Handle(StepKinematics_KinematicTopologyStructure)& theParent);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicTopologyDirectedStructure, StepRepr_Representation)
+
+private:
+  Handle(StepKinematics_KinematicTopologyStructure) myParent;
+
+};
+#endif // _StepKinematics_KinematicTopologyDirectedStructure_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyNetworkStructure.cxx b/src/StepKinematics/StepKinematics_KinematicTopologyNetworkStructure.cxx
new file mode 100644 (file)
index 0000000..b8354bb
--- /dev/null
@@ -0,0 +1,65 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicTopologyNetworkStructure.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicTopologyNetworkStructure, StepRepr_Representation)
+
+//=======================================================================
+//function : StepKinematics_KinematicTopologyNetworkStructure
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicTopologyNetworkStructure::StepKinematics_KinematicTopologyNetworkStructure ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicTopologyNetworkStructure::Init (const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                                                             const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                                                             const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                                                             const Handle(StepKinematics_KinematicTopologyStructure)& theParent)
+{
+  StepRepr_Representation::Init(theRepresentation_Name,
+                                theRepresentation_Items,
+                                theRepresentation_ContextOfItems);
+
+  myParent = theParent;
+}
+
+//=======================================================================
+//function : Parent
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicTopologyStructure) StepKinematics_KinematicTopologyNetworkStructure::Parent () const
+{
+  return myParent;
+}
+
+//=======================================================================
+//function : SetParent
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_KinematicTopologyNetworkStructure::SetParent (const Handle(StepKinematics_KinematicTopologyStructure)& theParent)
+{
+  myParent = theParent;
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyNetworkStructure.hxx b/src/StepKinematics/StepKinematics_KinematicTopologyNetworkStructure.hxx
new file mode 100644 (file)
index 0000000..4a28016
--- /dev/null
@@ -0,0 +1,56 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicTopologyNetworkStructure_HeaderFile_
+#define _StepKinematics_KinematicTopologyNetworkStructure_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_Representation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicTopologyNetworkStructure, StepRepr_Representation)
+
+//! Representation of STEP entity KinematicTopologyNetworkStructure
+class StepKinematics_KinematicTopologyNetworkStructure : public StepRepr_Representation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicTopologyNetworkStructure();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                           const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                           const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                           const Handle(StepKinematics_KinematicTopologyStructure)& theParent);
+
+  //! Returns field Parent
+  Standard_EXPORT Handle(StepKinematics_KinematicTopologyStructure) Parent() const;
+  //! Sets field Parent
+  Standard_EXPORT void SetParent (const Handle(StepKinematics_KinematicTopologyStructure)& theParent);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicTopologyNetworkStructure, StepRepr_Representation)
+
+private:
+  Handle(StepKinematics_KinematicTopologyStructure) myParent;
+
+};
+#endif // _StepKinematics_KinematicTopologyNetworkStructure_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyRepresentationSelect.cxx b/src/StepKinematics/StepKinematics_KinematicTopologyRepresentationSelect.cxx
new file mode 100644 (file)
index 0000000..cf975ad
--- /dev/null
@@ -0,0 +1,73 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicTopologyRepresentationSelect.hxx>
+#include <StepKinematics_KinematicTopologyDirectedStructure.hxx>
+#include <StepKinematics_KinematicTopologyNetworkStructure.hxx>
+#include <StepKinematics_KinematicTopologyStructure.hxx>
+
+//=======================================================================
+//function : StepKinematics_KinematicTopologyRepresentationSelect
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicTopologyRepresentationSelect::StepKinematics_KinematicTopologyRepresentationSelect ()
+{
+}
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepKinematics_KinematicTopologyRepresentationSelect::CaseNum (const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_KinematicTopologyDirectedStructure))) return 1;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_KinematicTopologyNetworkStructure))) return 2;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_KinematicTopologyStructure))) return 3;
+  return 0;
+}
+
+//=======================================================================
+//function : KinematicTopologyDirectedStructure
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicTopologyDirectedStructure) StepKinematics_KinematicTopologyRepresentationSelect::KinematicTopologyDirectedStructure () const
+{
+  return Handle(StepKinematics_KinematicTopologyDirectedStructure)::DownCast(Value());
+}
+
+//=======================================================================
+//function : KinematicTopologyNetworkStructure
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicTopologyNetworkStructure) StepKinematics_KinematicTopologyRepresentationSelect::KinematicTopologyNetworkStructure () const
+{
+  return Handle(StepKinematics_KinematicTopologyNetworkStructure)::DownCast(Value());
+}
+
+//=======================================================================
+//function : KinematicTopologyStructure
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicTopologyStructure) StepKinematics_KinematicTopologyRepresentationSelect::KinematicTopologyStructure () const
+{
+  return Handle(StepKinematics_KinematicTopologyStructure)::DownCast(Value());
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyRepresentationSelect.hxx b/src/StepKinematics/StepKinematics_KinematicTopologyRepresentationSelect.hxx
new file mode 100644 (file)
index 0000000..3d6d89c
--- /dev/null
@@ -0,0 +1,58 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicTopologyRepresentationSelect_HeaderFile
+#define _StepKinematics_KinematicTopologyRepresentationSelect_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+
+class Standard_Transient;
+class StepKinematics_KinematicTopologyDirectedStructure;
+class StepKinematics_KinematicTopologyNetworkStructure;
+class StepKinematics_KinematicTopologyStructure;
+
+//! Representation of STEP SELECT type KinematicTopologyRepresentationSelect
+class StepKinematics_KinematicTopologyRepresentationSelect : public StepData_SelectType
+{
+
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT StepKinematics_KinematicTopologyRepresentationSelect();
+
+  //! Recognizes a kind of KinematicTopologyRepresentationSelect select type
+  //! -- 1 -> KinematicTopologyDirectedStructure
+  //! -- 2 -> KinematicTopologyNetworkStructure
+  //! -- 3 -> KinematicTopologyStructure
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
+
+  //! Returns Value as KinematicTopologyDirectedStructure (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_KinematicTopologyDirectedStructure) KinematicTopologyDirectedStructure() const;
+
+  //! Returns Value as KinematicTopologyNetworkStructure (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_KinematicTopologyNetworkStructure) KinematicTopologyNetworkStructure() const;
+
+  //! Returns Value as KinematicTopologyStructure (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_KinematicTopologyStructure) KinematicTopologyStructure() const;
+
+};
+#endif // _StepKinematics_KinematicTopologyRepresentationSelect_HeaderFile
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyStructure.cxx b/src/StepKinematics/StepKinematics_KinematicTopologyStructure.cxx
new file mode 100644 (file)
index 0000000..68b8777
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_KinematicTopologyStructure.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_KinematicTopologyStructure, StepRepr_Representation)
+
+//=======================================================================
+//function : StepKinematics_KinematicTopologyStructure
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicTopologyStructure::StepKinematics_KinematicTopologyStructure ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_KinematicTopologyStructure.hxx b/src/StepKinematics/StepKinematics_KinematicTopologyStructure.hxx
new file mode 100644 (file)
index 0000000..8359003
--- /dev/null
@@ -0,0 +1,41 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_KinematicTopologyStructure_HeaderFile_
+#define _StepKinematics_KinematicTopologyStructure_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_Representation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_KinematicTopologyStructure, StepRepr_Representation)
+
+//! Representation of STEP entity KinematicTopologyStructure
+class StepKinematics_KinematicTopologyStructure : public StepRepr_Representation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_KinematicTopologyStructure();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_KinematicTopologyStructure, StepRepr_Representation)
+
+};
+#endif // _StepKinematics_KinematicTopologyStructure_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LinearFlexibleAndPinionPair.cxx b/src/StepKinematics/StepKinematics_LinearFlexibleAndPinionPair.cxx
new file mode 100644 (file)
index 0000000..65ce02c
--- /dev/null
@@ -0,0 +1,73 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LinearFlexibleAndPinionPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LinearFlexibleAndPinionPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//=======================================================================
+//function : StepKinematics_LinearFlexibleAndPinionPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LinearFlexibleAndPinionPair::StepKinematics_LinearFlexibleAndPinionPair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LinearFlexibleAndPinionPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                       const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                       const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                       const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                       const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                       const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                       const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                       const Standard_Real thePinionRadius)
+{
+  StepKinematics_LowOrderKinematicPairWithMotionCoupling::Init(theRepresentationItem_Name,
+                                                               theItemDefinedTransformation_Name,
+                                                               hasItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_TransformItem1,
+                                                               theItemDefinedTransformation_TransformItem2,
+                                                               theKinematicPair_Joint);
+
+  myPinionRadius = thePinionRadius;
+}
+
+//=======================================================================
+//function : PinionRadius
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LinearFlexibleAndPinionPair::PinionRadius () const
+{
+  return myPinionRadius;
+}
+
+//=======================================================================
+//function : SetPinionRadius
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LinearFlexibleAndPinionPair::SetPinionRadius (const Standard_Real thePinionRadius)
+{
+  myPinionRadius = thePinionRadius;
+}
diff --git a/src/StepKinematics/StepKinematics_LinearFlexibleAndPinionPair.hxx b/src/StepKinematics/StepKinematics_LinearFlexibleAndPinionPair.hxx
new file mode 100644 (file)
index 0000000..966e285
--- /dev/null
@@ -0,0 +1,60 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LinearFlexibleAndPinionPair_HeaderFile_
+#define _StepKinematics_LinearFlexibleAndPinionPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LinearFlexibleAndPinionPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//! Representation of STEP entity LinearFlexibleAndPinionPair
+class StepKinematics_LinearFlexibleAndPinionPair : public StepKinematics_LowOrderKinematicPairWithMotionCoupling
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LinearFlexibleAndPinionPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real thePinionRadius);
+
+  //! Returns field PinionRadius
+  Standard_EXPORT Standard_Real PinionRadius() const;
+  //! Sets field PinionRadius
+  Standard_EXPORT void SetPinionRadius (const Standard_Real thePinionRadius);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LinearFlexibleAndPinionPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+private:
+  Standard_Real myPinionRadius;
+
+};
+#endif // _StepKinematics_LinearFlexibleAndPinionPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LinearFlexibleAndPlanarCurvePair.cxx b/src/StepKinematics/StepKinematics_LinearFlexibleAndPlanarCurvePair.cxx
new file mode 100644 (file)
index 0000000..96c307a
--- /dev/null
@@ -0,0 +1,96 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LinearFlexibleAndPlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_LinearFlexibleAndPlanarCurvePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LinearFlexibleAndPlanarCurvePair::StepKinematics_LinearFlexibleAndPlanarCurvePair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LinearFlexibleAndPlanarCurvePair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                            const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                            const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                            const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                            const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                            const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                            const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                            const Handle(StepGeom_Curve)& thePairCurve,
+                                                            const Standard_Boolean theOrientation)
+{
+  StepKinematics_HighOrderKinematicPair::Init(theRepresentationItem_Name,
+                                              theItemDefinedTransformation_Name,
+                                              hasItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_TransformItem1,
+                                              theItemDefinedTransformation_TransformItem2,
+                                              theKinematicPair_Joint);
+
+  myPairCurve = thePairCurve;
+
+  myOrientation = theOrientation;
+}
+
+//=======================================================================
+//function : PairCurve
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Curve) StepKinematics_LinearFlexibleAndPlanarCurvePair::PairCurve () const
+{
+  return myPairCurve;
+}
+
+//=======================================================================
+//function : SetPairCurve
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LinearFlexibleAndPlanarCurvePair::SetPairCurve (const Handle(StepGeom_Curve)& thePairCurve)
+{
+  myPairCurve = thePairCurve;
+}
+
+//=======================================================================
+//function : Orientation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LinearFlexibleAndPlanarCurvePair::Orientation () const
+{
+  return myOrientation;
+}
+
+//=======================================================================
+//function : SetOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LinearFlexibleAndPlanarCurvePair::SetOrientation (const Standard_Boolean theOrientation)
+{
+  myOrientation = theOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx b/src/StepKinematics/StepKinematics_LinearFlexibleAndPlanarCurvePair.hxx
new file mode 100644 (file)
index 0000000..22c4b3c
--- /dev/null
@@ -0,0 +1,68 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LinearFlexibleAndPlanarCurvePair_HeaderFile_
+#define _StepKinematics_LinearFlexibleAndPlanarCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_HighOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LinearFlexibleAndPlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+//! Representation of STEP entity LinearFlexibleAndPlanarCurvePair
+class StepKinematics_LinearFlexibleAndPlanarCurvePair : public StepKinematics_HighOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LinearFlexibleAndPlanarCurvePair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Curve)& thePairCurve,
+                           const Standard_Boolean theOrientation);
+
+  //! Returns field PairCurve
+  Standard_EXPORT Handle(StepGeom_Curve) PairCurve() const;
+  //! Sets field PairCurve
+  Standard_EXPORT void SetPairCurve (const Handle(StepGeom_Curve)& thePairCurve);
+
+  //! Returns field Orientation
+  Standard_EXPORT Standard_Boolean Orientation() const;
+  //! Sets field Orientation
+  Standard_EXPORT void SetOrientation (const Standard_Boolean theOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LinearFlexibleAndPlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+private:
+  Handle(StepGeom_Curve) myPairCurve;
+  Standard_Boolean myOrientation;
+
+};
+#endif // _StepKinematics_LinearFlexibleAndPlanarCurvePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LinearFlexibleLinkRepresentation.cxx b/src/StepKinematics/StepKinematics_LinearFlexibleLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..8659b60
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LinearFlexibleLinkRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LinearFlexibleLinkRepresentation, StepKinematics_KinematicLinkRepresentation)
+
+//=======================================================================
+//function : StepKinematics_LinearFlexibleLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LinearFlexibleLinkRepresentation::StepKinematics_LinearFlexibleLinkRepresentation ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_LinearFlexibleLinkRepresentation.hxx b/src/StepKinematics/StepKinematics_LinearFlexibleLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..de0a6c2
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Fri May 08 19:02:07 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LinearFlexibleLinkRepresentation_HeaderFile_
+#define _StepKinematics_LinearFlexibleLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicLinkRepresentation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LinearFlexibleLinkRepresentation, StepKinematics_KinematicLinkRepresentation)
+
+//! Representation of STEP entity LinearFlexibleLinkRepresentation
+class StepKinematics_LinearFlexibleLinkRepresentation : public StepKinematics_KinematicLinkRepresentation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LinearFlexibleLinkRepresentation();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LinearFlexibleLinkRepresentation, StepKinematics_KinematicLinkRepresentation)
+
+};
+#endif // _StepKinematics_LinearFlexibleLinkRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPair.cxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPair.cxx
new file mode 100644 (file)
index 0000000..28d7bc3
--- /dev/null
@@ -0,0 +1,188 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LowOrderKinematicPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPair, StepKinematics_KinematicPair)
+
+//=======================================================================
+//function : StepKinematics_LowOrderKinematicPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LowOrderKinematicPair::StepKinematics_LowOrderKinematicPair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                 const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                 const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                 const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                 const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                 const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                 const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                 const Standard_Boolean theTX,
+                                                 const Standard_Boolean theTY,
+                                                 const Standard_Boolean theTZ,
+                                                 const Standard_Boolean theRX,
+                                                 const Standard_Boolean theRY,
+                                                 const Standard_Boolean theRZ)
+{
+  StepKinematics_KinematicPair::Init(theRepresentationItem_Name,
+                                     theItemDefinedTransformation_Name,
+                                     hasItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_TransformItem1,
+                                     theItemDefinedTransformation_TransformItem2,
+                                     theKinematicPair_Joint);
+
+  myTX = theTX;
+
+  myTY = theTY;
+
+  myTZ = theTZ;
+
+  myRX = theRX;
+
+  myRY = theRY;
+
+  myRZ = theRZ;
+}
+
+//=======================================================================
+//function : TX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPair::TX () const
+{
+  return myTX;
+}
+
+//=======================================================================
+//function : SetTX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::SetTX (const Standard_Boolean theTX)
+{
+  myTX = theTX;
+}
+
+//=======================================================================
+//function : TY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPair::TY () const
+{
+  return myTY;
+}
+
+//=======================================================================
+//function : SetTY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::SetTY (const Standard_Boolean theTY)
+{
+  myTY = theTY;
+}
+
+//=======================================================================
+//function : TZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPair::TZ () const
+{
+  return myTZ;
+}
+
+//=======================================================================
+//function : SetTZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::SetTZ (const Standard_Boolean theTZ)
+{
+  myTZ = theTZ;
+}
+
+//=======================================================================
+//function : RX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPair::RX () const
+{
+  return myRX;
+}
+
+//=======================================================================
+//function : SetRX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::SetRX (const Standard_Boolean theRX)
+{
+  myRX = theRX;
+}
+
+//=======================================================================
+//function : RY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPair::RY () const
+{
+  return myRY;
+}
+
+//=======================================================================
+//function : SetRY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::SetRY (const Standard_Boolean theRY)
+{
+  myRY = theRY;
+}
+
+//=======================================================================
+//function : RZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPair::RZ () const
+{
+  return myRZ;
+}
+
+//=======================================================================
+//function : SetRZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPair::SetRZ (const Standard_Boolean theRZ)
+{
+  myRZ = theRZ;
+}
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPair.hxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPair.hxx
new file mode 100644 (file)
index 0000000..55ca99c
--- /dev/null
@@ -0,0 +1,95 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LowOrderKinematicPair_HeaderFile_
+#define _StepKinematics_LowOrderKinematicPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LowOrderKinematicPair, StepKinematics_KinematicPair)
+
+//! Representation of STEP entity LowOrderKinematicPair
+class StepKinematics_LowOrderKinematicPair : public StepKinematics_KinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LowOrderKinematicPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theTX,
+                           const Standard_Boolean theTY,
+                           const Standard_Boolean theTZ,
+                           const Standard_Boolean theRX,
+                           const Standard_Boolean theRY,
+                           const Standard_Boolean theRZ);
+
+  //! Returns field TX
+  Standard_EXPORT Standard_Boolean TX() const;
+  //! Sets field TX
+  Standard_EXPORT void SetTX (const Standard_Boolean theTX);
+
+  //! Returns field TY
+  Standard_EXPORT Standard_Boolean TY() const;
+  //! Sets field TY
+  Standard_EXPORT void SetTY (const Standard_Boolean theTY);
+
+  //! Returns field TZ
+  Standard_EXPORT Standard_Boolean TZ() const;
+  //! Sets field TZ
+  Standard_EXPORT void SetTZ (const Standard_Boolean theTZ);
+
+  //! Returns field RX
+  Standard_EXPORT Standard_Boolean RX() const;
+  //! Sets field RX
+  Standard_EXPORT void SetRX (const Standard_Boolean theRX);
+
+  //! Returns field RY
+  Standard_EXPORT Standard_Boolean RY() const;
+  //! Sets field RY
+  Standard_EXPORT void SetRY (const Standard_Boolean theRY);
+
+  //! Returns field RZ
+  Standard_EXPORT Standard_Boolean RZ() const;
+  //! Sets field RZ
+  Standard_EXPORT void SetRZ (const Standard_Boolean theRZ);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPair, StepKinematics_KinematicPair)
+
+private:
+  Standard_Boolean myTX;
+  Standard_Boolean myTY;
+  Standard_Boolean myTZ;
+  Standard_Boolean myRX;
+  Standard_Boolean myRY;
+  Standard_Boolean myRZ;
+
+};
+#endif // _StepKinematics_LowOrderKinematicPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPairValue.cxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPairValue.cxx
new file mode 100644 (file)
index 0000000..da168c6
--- /dev/null
@@ -0,0 +1,178 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LowOrderKinematicPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_LowOrderKinematicPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LowOrderKinematicPairValue::StepKinematics_LowOrderKinematicPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                      const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                      const Standard_Real theActualTranslationX,
+                                                      const Standard_Real theActualTranslationY,
+                                                      const Standard_Real theActualTranslationZ,
+                                                      const Standard_Real theActualRotationX,
+                                                      const Standard_Real theActualRotationY,
+                                                      const Standard_Real theActualRotationZ)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualTranslationX = theActualTranslationX;
+
+  myActualTranslationY = theActualTranslationY;
+
+  myActualTranslationZ = theActualTranslationZ;
+
+  myActualRotationX = theActualRotationX;
+
+  myActualRotationY = theActualRotationY;
+
+  myActualRotationZ = theActualRotationZ;
+}
+
+//=======================================================================
+//function : ActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairValue::ActualTranslationX () const
+{
+  return myActualTranslationX;
+}
+
+//=======================================================================
+//function : SetActualTranslationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::SetActualTranslationX (const Standard_Real theActualTranslationX)
+{
+  myActualTranslationX = theActualTranslationX;
+}
+
+//=======================================================================
+//function : ActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairValue::ActualTranslationY () const
+{
+  return myActualTranslationY;
+}
+
+//=======================================================================
+//function : SetActualTranslationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::SetActualTranslationY (const Standard_Real theActualTranslationY)
+{
+  myActualTranslationY = theActualTranslationY;
+}
+
+//=======================================================================
+//function : ActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairValue::ActualTranslationZ () const
+{
+  return myActualTranslationZ;
+}
+
+//=======================================================================
+//function : SetActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::SetActualTranslationZ (const Standard_Real theActualTranslationZ)
+{
+  myActualTranslationZ = theActualTranslationZ;
+}
+
+//=======================================================================
+//function : ActualRotationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairValue::ActualRotationX () const
+{
+  return myActualRotationX;
+}
+
+//=======================================================================
+//function : SetActualRotationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::SetActualRotationX (const Standard_Real theActualRotationX)
+{
+  myActualRotationX = theActualRotationX;
+}
+
+//=======================================================================
+//function : ActualRotationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairValue::ActualRotationY () const
+{
+  return myActualRotationY;
+}
+
+//=======================================================================
+//function : SetActualRotationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::SetActualRotationY (const Standard_Real theActualRotationY)
+{
+  myActualRotationY = theActualRotationY;
+}
+
+//=======================================================================
+//function : ActualRotationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairValue::ActualRotationZ () const
+{
+  return myActualRotationZ;
+}
+
+//=======================================================================
+//function : SetActualRotationZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairValue::SetActualRotationZ (const Standard_Real theActualRotationZ)
+{
+  myActualRotationZ = theActualRotationZ;
+}
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPairValue.hxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPairValue.hxx
new file mode 100644 (file)
index 0000000..0591a3a
--- /dev/null
@@ -0,0 +1,88 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LowOrderKinematicPairValue_HeaderFile_
+#define _StepKinematics_LowOrderKinematicPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LowOrderKinematicPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity LowOrderKinematicPairValue
+class StepKinematics_LowOrderKinematicPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LowOrderKinematicPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualTranslationX,
+                           const Standard_Real theActualTranslationY,
+                           const Standard_Real theActualTranslationZ,
+                           const Standard_Real theActualRotationX,
+                           const Standard_Real theActualRotationY,
+                           const Standard_Real theActualRotationZ);
+
+  //! Returns field ActualTranslationX
+  Standard_EXPORT Standard_Real ActualTranslationX() const;
+  //! Sets field ActualTranslationX
+  Standard_EXPORT void SetActualTranslationX (const Standard_Real theActualTranslationX);
+
+  //! Returns field ActualTranslationY
+  Standard_EXPORT Standard_Real ActualTranslationY() const;
+  //! Sets field ActualTranslationY
+  Standard_EXPORT void SetActualTranslationY (const Standard_Real theActualTranslationY);
+
+  //! Returns field ActualTranslationZ
+  Standard_EXPORT Standard_Real ActualTranslationZ() const;
+  //! Sets field ActualTranslationZ
+  Standard_EXPORT void SetActualTranslationZ (const Standard_Real theActualTranslationZ);
+
+  //! Returns field ActualRotationX
+  Standard_EXPORT Standard_Real ActualRotationX() const;
+  //! Sets field ActualRotationX
+  Standard_EXPORT void SetActualRotationX (const Standard_Real theActualRotationX);
+
+  //! Returns field ActualRotationY
+  Standard_EXPORT Standard_Real ActualRotationY() const;
+  //! Sets field ActualRotationY
+  Standard_EXPORT void SetActualRotationY (const Standard_Real theActualRotationY);
+
+  //! Returns field ActualRotationZ
+  Standard_EXPORT Standard_Real ActualRotationZ() const;
+  //! Sets field ActualRotationZ
+  Standard_EXPORT void SetActualRotationZ (const Standard_Real theActualRotationZ);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualTranslationX;
+  Standard_Real myActualTranslationY;
+  Standard_Real myActualTranslationZ;
+  Standard_Real myActualRotationX;
+  Standard_Real myActualRotationY;
+  Standard_Real myActualRotationZ;
+
+};
+#endif // _StepKinematics_LowOrderKinematicPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithMotionCoupling.cxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithMotionCoupling.cxx
new file mode 100644 (file)
index 0000000..8fbcfeb
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPairWithMotionCoupling, StepKinematics_KinematicPair)
+
+//=======================================================================
+//function : StepKinematics_LowOrderKinematicPairWithMotionCoupling
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LowOrderKinematicPairWithMotionCoupling::StepKinematics_LowOrderKinematicPairWithMotionCoupling ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx
new file mode 100644 (file)
index 0000000..d85ecc6
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LowOrderKinematicPairWithMotionCoupling_HeaderFile_
+#define _StepKinematics_LowOrderKinematicPairWithMotionCoupling_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LowOrderKinematicPairWithMotionCoupling, StepKinematics_KinematicPair)
+
+//! Representation of STEP entity LowOrderKinematicPairWithMotionCoupling
+class StepKinematics_LowOrderKinematicPairWithMotionCoupling : public StepKinematics_KinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LowOrderKinematicPairWithMotionCoupling();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPairWithMotionCoupling, StepKinematics_KinematicPair)
+
+};
+#endif // _StepKinematics_LowOrderKinematicPairWithMotionCoupling_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithRange.cxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithRange.cxx
new file mode 100644 (file)
index 0000000..12cb655
--- /dev/null
@@ -0,0 +1,530 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_LowOrderKinematicPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPairWithRange, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_LowOrderKinematicPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_LowOrderKinematicPairWithRange::StepKinematics_LowOrderKinematicPairWithRange ()
+{
+  defLowerLimitActualRotationX = Standard_False;
+  defUpperLimitActualRotationX = Standard_False;
+  defLowerLimitActualRotationY = Standard_False;
+  defUpperLimitActualRotationY = Standard_False;
+  defLowerLimitActualRotationZ = Standard_False;
+  defUpperLimitActualRotationZ = Standard_False;
+  defLowerLimitActualTranslationX = Standard_False;
+  defUpperLimitActualTranslationX = Standard_False;
+  defLowerLimitActualTranslationY = Standard_False;
+  defUpperLimitActualTranslationY = Standard_False;
+  defLowerLimitActualTranslationZ = Standard_False;
+  defUpperLimitActualTranslationZ = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                          const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                          const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                          const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                          const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                          const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                          const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                          const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                          const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                          const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                          const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                          const Standard_Boolean hasLowerLimitActualRotationX,
+                                                          const Standard_Real theLowerLimitActualRotationX,
+                                                          const Standard_Boolean hasUpperLimitActualRotationX,
+                                                          const Standard_Real theUpperLimitActualRotationX,
+                                                          const Standard_Boolean hasLowerLimitActualRotationY,
+                                                          const Standard_Real theLowerLimitActualRotationY,
+                                                          const Standard_Boolean hasUpperLimitActualRotationY,
+                                                          const Standard_Real theUpperLimitActualRotationY,
+                                                          const Standard_Boolean hasLowerLimitActualRotationZ,
+                                                          const Standard_Real theLowerLimitActualRotationZ,
+                                                          const Standard_Boolean hasUpperLimitActualRotationZ,
+                                                          const Standard_Real theUpperLimitActualRotationZ,
+                                                          const Standard_Boolean hasLowerLimitActualTranslationX,
+                                                          const Standard_Real theLowerLimitActualTranslationX,
+                                                          const Standard_Boolean hasUpperLimitActualTranslationX,
+                                                          const Standard_Real theUpperLimitActualTranslationX,
+                                                          const Standard_Boolean hasLowerLimitActualTranslationY,
+                                                          const Standard_Real theLowerLimitActualTranslationY,
+                                                          const Standard_Boolean hasUpperLimitActualTranslationY,
+                                                          const Standard_Real theUpperLimitActualTranslationY,
+                                                          const Standard_Boolean hasLowerLimitActualTranslationZ,
+                                                          const Standard_Real theLowerLimitActualTranslationZ,
+                                                          const Standard_Boolean hasUpperLimitActualTranslationZ,
+                                                          const Standard_Real theUpperLimitActualTranslationZ)
+{
+  StepKinematics_LowOrderKinematicPair::Init(theRepresentationItem_Name,
+                                             theItemDefinedTransformation_Name,
+                                             hasItemDefinedTransformation_Description,
+                                             theItemDefinedTransformation_Description,
+                                             theItemDefinedTransformation_TransformItem1,
+                                             theItemDefinedTransformation_TransformItem2,
+                                             theKinematicPair_Joint,
+                                             theLowOrderKinematicPair_TX,
+                                             theLowOrderKinematicPair_TY,
+                                             theLowOrderKinematicPair_TZ,
+                                             theLowOrderKinematicPair_RX,
+                                             theLowOrderKinematicPair_RY,
+                                             theLowOrderKinematicPair_RZ);
+
+  defLowerLimitActualRotationX = hasLowerLimitActualRotationX;
+  if (defLowerLimitActualRotationX) {
+    myLowerLimitActualRotationX = theLowerLimitActualRotationX;
+  }
+  else myLowerLimitActualRotationX = 0;
+
+  defUpperLimitActualRotationX = hasUpperLimitActualRotationX;
+  if (defUpperLimitActualRotationX) {
+    myUpperLimitActualRotationX = theUpperLimitActualRotationX;
+  }
+  else myUpperLimitActualRotationX = 0;
+
+  defLowerLimitActualRotationY = hasLowerLimitActualRotationY;
+  if (defLowerLimitActualRotationY) {
+    myLowerLimitActualRotationY = theLowerLimitActualRotationY;
+  }
+  else myLowerLimitActualRotationY = 0;
+
+  defUpperLimitActualRotationY = hasUpperLimitActualRotationY;
+  if (defUpperLimitActualRotationY) {
+    myUpperLimitActualRotationY = theUpperLimitActualRotationY;
+  }
+  else myUpperLimitActualRotationY = 0;
+
+  defLowerLimitActualRotationZ = hasLowerLimitActualRotationZ;
+  if (defLowerLimitActualRotationZ) {
+    myLowerLimitActualRotationZ = theLowerLimitActualRotationZ;
+  }
+  else myLowerLimitActualRotationZ = 0;
+
+  defUpperLimitActualRotationZ = hasUpperLimitActualRotationZ;
+  if (defUpperLimitActualRotationZ) {
+    myUpperLimitActualRotationZ = theUpperLimitActualRotationZ;
+  }
+  else myUpperLimitActualRotationZ = 0;
+
+  defLowerLimitActualTranslationX = hasLowerLimitActualTranslationX;
+  if (defLowerLimitActualTranslationX) {
+    myLowerLimitActualTranslationX = theLowerLimitActualTranslationX;
+  }
+  else myLowerLimitActualTranslationX = 0;
+
+  defUpperLimitActualTranslationX = hasUpperLimitActualTranslationX;
+  if (defUpperLimitActualTranslationX) {
+    myUpperLimitActualTranslationX = theUpperLimitActualTranslationX;
+  }
+  else myUpperLimitActualTranslationX = 0;
+
+  defLowerLimitActualTranslationY = hasLowerLimitActualTranslationY;
+  if (defLowerLimitActualTranslationY) {
+    myLowerLimitActualTranslationY = theLowerLimitActualTranslationY;
+  }
+  else myLowerLimitActualTranslationY = 0;
+
+  defUpperLimitActualTranslationY = hasUpperLimitActualTranslationY;
+  if (defUpperLimitActualTranslationY) {
+    myUpperLimitActualTranslationY = theUpperLimitActualTranslationY;
+  }
+  else myUpperLimitActualTranslationY = 0;
+
+  defLowerLimitActualTranslationZ = hasLowerLimitActualTranslationZ;
+  if (defLowerLimitActualTranslationZ) {
+    myLowerLimitActualTranslationZ = theLowerLimitActualTranslationZ;
+  }
+  else myLowerLimitActualTranslationZ = 0;
+
+  defUpperLimitActualTranslationZ = hasUpperLimitActualTranslationZ;
+  if (defUpperLimitActualTranslationZ) {
+    myUpperLimitActualTranslationZ = theUpperLimitActualTranslationZ;
+  }
+  else myUpperLimitActualTranslationZ = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::LowerLimitActualRotationX () const
+{
+  return myLowerLimitActualRotationX;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetLowerLimitActualRotationX (const Standard_Real theLowerLimitActualRotationX)
+{
+  myLowerLimitActualRotationX = theLowerLimitActualRotationX;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotationX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasLowerLimitActualRotationX () const
+{
+  return defLowerLimitActualRotationX;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::UpperLimitActualRotationX () const
+{
+  return myUpperLimitActualRotationX;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetUpperLimitActualRotationX (const Standard_Real theUpperLimitActualRotationX)
+{
+  myUpperLimitActualRotationX = theUpperLimitActualRotationX;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotationX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasUpperLimitActualRotationX () const
+{
+  return defUpperLimitActualRotationX;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::LowerLimitActualRotationY () const
+{
+  return myLowerLimitActualRotationY;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetLowerLimitActualRotationY (const Standard_Real theLowerLimitActualRotationY)
+{
+  myLowerLimitActualRotationY = theLowerLimitActualRotationY;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotationY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasLowerLimitActualRotationY () const
+{
+  return defLowerLimitActualRotationY;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::UpperLimitActualRotationY () const
+{
+  return myUpperLimitActualRotationY;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetUpperLimitActualRotationY (const Standard_Real theUpperLimitActualRotationY)
+{
+  myUpperLimitActualRotationY = theUpperLimitActualRotationY;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotationY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasUpperLimitActualRotationY () const
+{
+  return defUpperLimitActualRotationY;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::LowerLimitActualRotationZ () const
+{
+  return myLowerLimitActualRotationZ;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotationZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetLowerLimitActualRotationZ (const Standard_Real theLowerLimitActualRotationZ)
+{
+  myLowerLimitActualRotationZ = theLowerLimitActualRotationZ;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasLowerLimitActualRotationZ () const
+{
+  return defLowerLimitActualRotationZ;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::UpperLimitActualRotationZ () const
+{
+  return myUpperLimitActualRotationZ;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotationZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetUpperLimitActualRotationZ (const Standard_Real theUpperLimitActualRotationZ)
+{
+  myUpperLimitActualRotationZ = theUpperLimitActualRotationZ;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasUpperLimitActualRotationZ () const
+{
+  return defUpperLimitActualRotationZ;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::LowerLimitActualTranslationX () const
+{
+  return myLowerLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetLowerLimitActualTranslationX (const Standard_Real theLowerLimitActualTranslationX)
+{
+  myLowerLimitActualTranslationX = theLowerLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasLowerLimitActualTranslationX () const
+{
+  return defLowerLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::UpperLimitActualTranslationX () const
+{
+  return myUpperLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetUpperLimitActualTranslationX (const Standard_Real theUpperLimitActualTranslationX)
+{
+  myUpperLimitActualTranslationX = theUpperLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasUpperLimitActualTranslationX () const
+{
+  return defUpperLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::LowerLimitActualTranslationY () const
+{
+  return myLowerLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetLowerLimitActualTranslationY (const Standard_Real theLowerLimitActualTranslationY)
+{
+  myLowerLimitActualTranslationY = theLowerLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasLowerLimitActualTranslationY () const
+{
+  return defLowerLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::UpperLimitActualTranslationY () const
+{
+  return myUpperLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetUpperLimitActualTranslationY (const Standard_Real theUpperLimitActualTranslationY)
+{
+  myUpperLimitActualTranslationY = theUpperLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasUpperLimitActualTranslationY () const
+{
+  return defUpperLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::LowerLimitActualTranslationZ () const
+{
+  return myLowerLimitActualTranslationZ;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetLowerLimitActualTranslationZ (const Standard_Real theLowerLimitActualTranslationZ)
+{
+  myLowerLimitActualTranslationZ = theLowerLimitActualTranslationZ;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasLowerLimitActualTranslationZ () const
+{
+  return defLowerLimitActualTranslationZ;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_LowOrderKinematicPairWithRange::UpperLimitActualTranslationZ () const
+{
+  return myUpperLimitActualTranslationZ;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_LowOrderKinematicPairWithRange::SetUpperLimitActualTranslationZ (const Standard_Real theUpperLimitActualTranslationZ)
+{
+  myUpperLimitActualTranslationZ = theUpperLimitActualTranslationZ;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslationZ
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_LowOrderKinematicPairWithRange::HasUpperLimitActualTranslationZ () const
+{
+  return defUpperLimitActualTranslationZ;
+}
diff --git a/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithRange.hxx b/src/StepKinematics/StepKinematics_LowOrderKinematicPairWithRange.hxx
new file mode 100644 (file)
index 0000000..f715290
--- /dev/null
@@ -0,0 +1,191 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_LowOrderKinematicPairWithRange_HeaderFile_
+#define _StepKinematics_LowOrderKinematicPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_LowOrderKinematicPairWithRange, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity LowOrderKinematicPairWithRange
+class StepKinematics_LowOrderKinematicPairWithRange : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_LowOrderKinematicPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitActualRotationX,
+                           const Standard_Real theLowerLimitActualRotationX,
+                           const Standard_Boolean hasUpperLimitActualRotationX,
+                           const Standard_Real theUpperLimitActualRotationX,
+                           const Standard_Boolean hasLowerLimitActualRotationY,
+                           const Standard_Real theLowerLimitActualRotationY,
+                           const Standard_Boolean hasUpperLimitActualRotationY,
+                           const Standard_Real theUpperLimitActualRotationY,
+                           const Standard_Boolean hasLowerLimitActualRotationZ,
+                           const Standard_Real theLowerLimitActualRotationZ,
+                           const Standard_Boolean hasUpperLimitActualRotationZ,
+                           const Standard_Real theUpperLimitActualRotationZ,
+                           const Standard_Boolean hasLowerLimitActualTranslationX,
+                           const Standard_Real theLowerLimitActualTranslationX,
+                           const Standard_Boolean hasUpperLimitActualTranslationX,
+                           const Standard_Real theUpperLimitActualTranslationX,
+                           const Standard_Boolean hasLowerLimitActualTranslationY,
+                           const Standard_Real theLowerLimitActualTranslationY,
+                           const Standard_Boolean hasUpperLimitActualTranslationY,
+                           const Standard_Real theUpperLimitActualTranslationY,
+                           const Standard_Boolean hasLowerLimitActualTranslationZ,
+                           const Standard_Real theLowerLimitActualTranslationZ,
+                           const Standard_Boolean hasUpperLimitActualTranslationZ,
+                           const Standard_Real theUpperLimitActualTranslationZ);
+
+  //! Returns field LowerLimitActualRotationX
+  Standard_EXPORT Standard_Real LowerLimitActualRotationX() const;
+  //! Sets field LowerLimitActualRotationX
+  Standard_EXPORT void SetLowerLimitActualRotationX (const Standard_Real theLowerLimitActualRotationX);
+  //! Returns True if optional field LowerLimitActualRotationX is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotationX() const;
+
+  //! Returns field UpperLimitActualRotationX
+  Standard_EXPORT Standard_Real UpperLimitActualRotationX() const;
+  //! Sets field UpperLimitActualRotationX
+  Standard_EXPORT void SetUpperLimitActualRotationX (const Standard_Real theUpperLimitActualRotationX);
+  //! Returns True if optional field UpperLimitActualRotationX is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotationX() const;
+
+  //! Returns field LowerLimitActualRotationY
+  Standard_EXPORT Standard_Real LowerLimitActualRotationY() const;
+  //! Sets field LowerLimitActualRotationY
+  Standard_EXPORT void SetLowerLimitActualRotationY (const Standard_Real theLowerLimitActualRotationY);
+  //! Returns True if optional field LowerLimitActualRotationY is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotationY() const;
+
+  //! Returns field UpperLimitActualRotationY
+  Standard_EXPORT Standard_Real UpperLimitActualRotationY() const;
+  //! Sets field UpperLimitActualRotationY
+  Standard_EXPORT void SetUpperLimitActualRotationY (const Standard_Real theUpperLimitActualRotationY);
+  //! Returns True if optional field UpperLimitActualRotationY is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotationY() const;
+
+  //! Returns field LowerLimitActualRotationZ
+  Standard_EXPORT Standard_Real LowerLimitActualRotationZ() const;
+  //! Sets field LowerLimitActualRotationZ
+  Standard_EXPORT void SetLowerLimitActualRotationZ (const Standard_Real theLowerLimitActualRotationZ);
+  //! Returns True if optional field LowerLimitActualRotationZ is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotationZ() const;
+
+  //! Returns field UpperLimitActualRotationZ
+  Standard_EXPORT Standard_Real UpperLimitActualRotationZ() const;
+  //! Sets field UpperLimitActualRotationZ
+  Standard_EXPORT void SetUpperLimitActualRotationZ (const Standard_Real theUpperLimitActualRotationZ);
+  //! Returns True if optional field UpperLimitActualRotationZ is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotationZ() const;
+
+  //! Returns field LowerLimitActualTranslationX
+  Standard_EXPORT Standard_Real LowerLimitActualTranslationX() const;
+  //! Sets field LowerLimitActualTranslationX
+  Standard_EXPORT void SetLowerLimitActualTranslationX (const Standard_Real theLowerLimitActualTranslationX);
+  //! Returns True if optional field LowerLimitActualTranslationX is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslationX() const;
+
+  //! Returns field UpperLimitActualTranslationX
+  Standard_EXPORT Standard_Real UpperLimitActualTranslationX() const;
+  //! Sets field UpperLimitActualTranslationX
+  Standard_EXPORT void SetUpperLimitActualTranslationX (const Standard_Real theUpperLimitActualTranslationX);
+  //! Returns True if optional field UpperLimitActualTranslationX is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslationX() const;
+
+  //! Returns field LowerLimitActualTranslationY
+  Standard_EXPORT Standard_Real LowerLimitActualTranslationY() const;
+  //! Sets field LowerLimitActualTranslationY
+  Standard_EXPORT void SetLowerLimitActualTranslationY (const Standard_Real theLowerLimitActualTranslationY);
+  //! Returns True if optional field LowerLimitActualTranslationY is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslationY() const;
+
+  //! Returns field UpperLimitActualTranslationY
+  Standard_EXPORT Standard_Real UpperLimitActualTranslationY() const;
+  //! Sets field UpperLimitActualTranslationY
+  Standard_EXPORT void SetUpperLimitActualTranslationY (const Standard_Real theUpperLimitActualTranslationY);
+  //! Returns True if optional field UpperLimitActualTranslationY is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslationY() const;
+
+  //! Returns field LowerLimitActualTranslationZ
+  Standard_EXPORT Standard_Real LowerLimitActualTranslationZ() const;
+  //! Sets field LowerLimitActualTranslationZ
+  Standard_EXPORT void SetLowerLimitActualTranslationZ (const Standard_Real theLowerLimitActualTranslationZ);
+  //! Returns True if optional field LowerLimitActualTranslationZ is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslationZ() const;
+
+  //! Returns field UpperLimitActualTranslationZ
+  Standard_EXPORT Standard_Real UpperLimitActualTranslationZ() const;
+  //! Sets field UpperLimitActualTranslationZ
+  Standard_EXPORT void SetUpperLimitActualTranslationZ (const Standard_Real theUpperLimitActualTranslationZ);
+  //! Returns True if optional field UpperLimitActualTranslationZ is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslationZ() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_LowOrderKinematicPairWithRange, StepKinematics_LowOrderKinematicPair)
+
+private:
+  Standard_Real myLowerLimitActualRotationX; //!< optional
+  Standard_Real myUpperLimitActualRotationX; //!< optional
+  Standard_Real myLowerLimitActualRotationY; //!< optional
+  Standard_Real myUpperLimitActualRotationY; //!< optional
+  Standard_Real myLowerLimitActualRotationZ; //!< optional
+  Standard_Real myUpperLimitActualRotationZ; //!< optional
+  Standard_Real myLowerLimitActualTranslationX; //!< optional
+  Standard_Real myUpperLimitActualTranslationX; //!< optional
+  Standard_Real myLowerLimitActualTranslationY; //!< optional
+  Standard_Real myUpperLimitActualTranslationY; //!< optional
+  Standard_Real myLowerLimitActualTranslationZ; //!< optional
+  Standard_Real myUpperLimitActualTranslationZ; //!< optional
+  Standard_Boolean defLowerLimitActualRotationX; //!< flag "is LowerLimitActualRotationX defined"
+  Standard_Boolean defUpperLimitActualRotationX; //!< flag "is UpperLimitActualRotationX defined"
+  Standard_Boolean defLowerLimitActualRotationY; //!< flag "is LowerLimitActualRotationY defined"
+  Standard_Boolean defUpperLimitActualRotationY; //!< flag "is UpperLimitActualRotationY defined"
+  Standard_Boolean defLowerLimitActualRotationZ; //!< flag "is LowerLimitActualRotationZ defined"
+  Standard_Boolean defUpperLimitActualRotationZ; //!< flag "is UpperLimitActualRotationZ defined"
+  Standard_Boolean defLowerLimitActualTranslationX; //!< flag "is LowerLimitActualTranslationX defined"
+  Standard_Boolean defUpperLimitActualTranslationX; //!< flag "is UpperLimitActualTranslationX defined"
+  Standard_Boolean defLowerLimitActualTranslationY; //!< flag "is LowerLimitActualTranslationY defined"
+  Standard_Boolean defUpperLimitActualTranslationY; //!< flag "is UpperLimitActualTranslationY defined"
+  Standard_Boolean defLowerLimitActualTranslationZ; //!< flag "is LowerLimitActualTranslationZ defined"
+  Standard_Boolean defUpperLimitActualTranslationZ; //!< flag "is UpperLimitActualTranslationZ defined"
+
+};
+#endif // _StepKinematics_LowOrderKinematicPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_MechanismRepresentation.cxx b/src/StepKinematics/StepKinematics_MechanismRepresentation.cxx
new file mode 100644 (file)
index 0000000..2b77d26
--- /dev/null
@@ -0,0 +1,65 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_MechanismRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_MechanismRepresentation, StepRepr_Representation)
+
+//=======================================================================
+//function : StepKinematics_MechanismRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_MechanismRepresentation::StepKinematics_MechanismRepresentation ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_MechanismRepresentation::Init (const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                                                   const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                                                   const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                                                   const StepKinematics_KinematicTopologyRepresentationSelect& theRepresentedTopology)
+{
+  StepRepr_Representation::Init(theRepresentation_Name,
+                                theRepresentation_Items,
+                                theRepresentation_ContextOfItems);
+
+  myRepresentedTopology = theRepresentedTopology;
+}
+
+//=======================================================================
+//function : RepresentedTopology
+//purpose  : 
+//=======================================================================
+
+StepKinematics_KinematicTopologyRepresentationSelect StepKinematics_MechanismRepresentation::RepresentedTopology () const
+{
+  return myRepresentedTopology;
+}
+
+//=======================================================================
+//function : SetRepresentedTopology
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_MechanismRepresentation::SetRepresentedTopology (const StepKinematics_KinematicTopologyRepresentationSelect& theRepresentedTopology)
+{
+  myRepresentedTopology = theRepresentedTopology;
+}
diff --git a/src/StepKinematics/StepKinematics_MechanismRepresentation.hxx b/src/StepKinematics/StepKinematics_MechanismRepresentation.hxx
new file mode 100644 (file)
index 0000000..cfaa582
--- /dev/null
@@ -0,0 +1,56 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_MechanismRepresentation_HeaderFile_
+#define _StepKinematics_MechanismRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_Representation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicTopologyRepresentationSelect.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_MechanismRepresentation, StepRepr_Representation)
+
+//! Representation of STEP entity MechanismRepresentation
+class StepKinematics_MechanismRepresentation : public StepRepr_Representation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_MechanismRepresentation();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentation_Name,
+                           const Handle(StepRepr_HArray1OfRepresentationItem)& theRepresentation_Items,
+                           const Handle(StepRepr_RepresentationContext)& theRepresentation_ContextOfItems,
+                           const StepKinematics_KinematicTopologyRepresentationSelect& theRepresentedTopology);
+
+  //! Returns field RepresentedTopology
+  Standard_EXPORT StepKinematics_KinematicTopologyRepresentationSelect RepresentedTopology() const;
+  //! Sets field RepresentedTopology
+  Standard_EXPORT void SetRepresentedTopology (const StepKinematics_KinematicTopologyRepresentationSelect& theRepresentedTopology);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_MechanismRepresentation, StepRepr_Representation)
+
+private:
+  StepKinematics_KinematicTopologyRepresentationSelect myRepresentedTopology;
+
+};
+#endif // _StepKinematics_MechanismRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_OrientedJoint.cxx b/src/StepKinematics/StepKinematics_OrientedJoint.cxx
new file mode 100644 (file)
index 0000000..fdd15cf
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_OrientedJoint.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_OrientedJoint, StepShape_OrientedEdge)
+
+//=======================================================================
+//function : StepKinematics_OrientedJoint
+//purpose  : 
+//=======================================================================
+
+StepKinematics_OrientedJoint::StepKinematics_OrientedJoint ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_OrientedJoint.hxx b/src/StepKinematics/StepKinematics_OrientedJoint.hxx
new file mode 100644 (file)
index 0000000..17ef0fe
--- /dev/null
@@ -0,0 +1,41 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_OrientedJoint_HeaderFile_
+#define _StepKinematics_OrientedJoint_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepShape_OrientedEdge.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepShape_Vertex.hxx>
+#include <StepShape_Edge.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_OrientedJoint, StepShape_OrientedEdge)
+
+//! Representation of STEP entity OrientedJoint
+class StepKinematics_OrientedJoint : public StepShape_OrientedEdge
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_OrientedJoint();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_OrientedJoint, StepShape_OrientedEdge)
+
+};
+#endif // _StepKinematics_OrientedJoint_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PairRepresentationRelationship.cxx b/src/StepKinematics/StepKinematics_PairRepresentationRelationship.cxx
new file mode 100644 (file)
index 0000000..682f2ca
--- /dev/null
@@ -0,0 +1,71 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PairRepresentationRelationship.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PairRepresentationRelationship, StepGeom_GeometricRepresentationItem)
+
+//=======================================================================
+//function : StepKinematics_PairRepresentationRelationship
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PairRepresentationRelationship::StepKinematics_PairRepresentationRelationship ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PairRepresentationRelationship::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                          const Handle(TCollection_HAsciiString)& theRepresentationRelationship_Name,
+                                                          const Standard_Boolean /*hasRepresentationRelationship_Description*/,
+                                                          const Handle(TCollection_HAsciiString)& theRepresentationRelationship_Description,
+                                                          const StepRepr_RepresentationOrRepresentationReference& theRepresentationRelationship_Rep1,
+                                                          const StepRepr_RepresentationOrRepresentationReference& theRepresentationRelationship_Rep2,
+                                                          const StepRepr_Transformation& theRepresentationRelationshipWithTransformation_TransformationOperator)
+{
+  StepGeom_GeometricRepresentationItem::Init(theRepresentationItem_Name);
+  myRepresentationRelationshipWithTransformation = new StepRepr_RepresentationRelationshipWithTransformation;
+  myRepresentationRelationshipWithTransformation->Init(theRepresentationRelationship_Name,
+                                                        /*hasRepresentationRelationship_Description,*/
+                                                        theRepresentationRelationship_Description,
+                                                        theRepresentationRelationship_Rep1.Representation(),
+                                                        theRepresentationRelationship_Rep2.Representation(),
+                                                        theRepresentationRelationshipWithTransformation_TransformationOperator);
+}
+
+//=======================================================================
+//function : RepresentationRelationshipWithTransformation
+//purpose  : 
+//=======================================================================
+
+Handle(StepRepr_RepresentationRelationshipWithTransformation) StepKinematics_PairRepresentationRelationship::RepresentationRelationshipWithTransformation () const
+{
+  return myRepresentationRelationshipWithTransformation;
+}
+
+//=======================================================================
+//function : SetRepresentationRelationshipWithTransformation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PairRepresentationRelationship::SetRepresentationRelationshipWithTransformation (const Handle(StepRepr_RepresentationRelationshipWithTransformation)& theRepresentationRelationshipWithTransformation)
+{
+  myRepresentationRelationshipWithTransformation = theRepresentationRelationshipWithTransformation;
+}
diff --git a/src/StepKinematics/StepKinematics_PairRepresentationRelationship.hxx b/src/StepKinematics/StepKinematics_PairRepresentationRelationship.hxx
new file mode 100644 (file)
index 0000000..289f133
--- /dev/null
@@ -0,0 +1,59 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PairRepresentationRelationship_HeaderFile_
+#define _StepKinematics_PairRepresentationRelationship_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepGeom_GeometricRepresentationItem.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationOrRepresentationReference.hxx>
+#include <StepRepr_Transformation.hxx>
+#include <StepRepr_RepresentationRelationshipWithTransformation.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PairRepresentationRelationship, StepGeom_GeometricRepresentationItem)
+
+//! Representation of STEP entity PairRepresentationRelationship
+class StepKinematics_PairRepresentationRelationship : public StepGeom_GeometricRepresentationItem
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PairRepresentationRelationship();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theRepresentationRelationship_Name,
+                           const Standard_Boolean hasRepresentationRelationship_Description,
+                           const Handle(TCollection_HAsciiString)& theRepresentationRelationship_Description,
+                           const StepRepr_RepresentationOrRepresentationReference& theRepresentationRelationship_Rep1,
+                           const StepRepr_RepresentationOrRepresentationReference& theRepresentationRelationship_Rep2,
+                           const StepRepr_Transformation& theRepresentationRelationshipWithTransformation_TransformationOperator);
+
+  //! Returns data for supertype RepresentationRelationshipWithTransformation
+  Standard_EXPORT Handle(StepRepr_RepresentationRelationshipWithTransformation) RepresentationRelationshipWithTransformation() const;
+  //! Sets data for supertype RepresentationRelationshipWithTransformation
+  Standard_EXPORT void SetRepresentationRelationshipWithTransformation (const Handle(StepRepr_RepresentationRelationshipWithTransformation)& theRepresentationRelationshipWithTransformation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PairRepresentationRelationship, StepGeom_GeometricRepresentationItem)
+
+private:
+  Handle(StepRepr_RepresentationRelationshipWithTransformation) myRepresentationRelationshipWithTransformation; //!< supertype
+
+};
+#endif // _StepKinematics_PairRepresentationRelationship_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PairValue.cxx b/src/StepKinematics/StepKinematics_PairValue.cxx
new file mode 100644 (file)
index 0000000..a192977
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PairValue, StepGeom_GeometricRepresentationItem)
+
+//=======================================================================
+//function : StepKinematics_PairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PairValue::StepKinematics_PairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                     const Handle(StepKinematics_KinematicPair)& theAppliesToPair)
+{
+  StepGeom_GeometricRepresentationItem::Init(theRepresentationItem_Name);
+
+  myAppliesToPair = theAppliesToPair;
+}
+
+//=======================================================================
+//function : AppliesToPair
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_KinematicPair) StepKinematics_PairValue::AppliesToPair () const
+{
+  return myAppliesToPair;
+}
+
+//=======================================================================
+//function : SetAppliesToPair
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PairValue::SetAppliesToPair (const Handle(StepKinematics_KinematicPair)& theAppliesToPair)
+{
+  myAppliesToPair = theAppliesToPair;
+}
diff --git a/src/StepKinematics/StepKinematics_PairValue.hxx b/src/StepKinematics/StepKinematics_PairValue.hxx
new file mode 100644 (file)
index 0000000..ec6e683
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PairValue_HeaderFile_
+#define _StepKinematics_PairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepGeom_GeometricRepresentationItem.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PairValue, StepGeom_GeometricRepresentationItem)
+
+//! Representation of STEP entity PairValue
+class StepKinematics_PairValue : public StepGeom_GeometricRepresentationItem
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& theAppliesToPair);
+
+  //! Returns field AppliesToPair
+  Standard_EXPORT Handle(StepKinematics_KinematicPair) AppliesToPair() const;
+  //! Sets field AppliesToPair
+  Standard_EXPORT void SetAppliesToPair (const Handle(StepKinematics_KinematicPair)& theAppliesToPair);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PairValue, StepGeom_GeometricRepresentationItem)
+
+private:
+  Handle(StepKinematics_KinematicPair) myAppliesToPair;
+
+};
+#endif // _StepKinematics_PairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PlanarCurvePair.cxx b/src/StepKinematics/StepKinematics_PlanarCurvePair.cxx
new file mode 100644 (file)
index 0000000..2c2b6b9
--- /dev/null
@@ -0,0 +1,119 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PlanarCurvePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_PlanarCurvePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PlanarCurvePair::StepKinematics_PlanarCurvePair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                           const Handle(StepGeom_Curve)& theCurve1,
+                                           const Handle(StepGeom_Curve)& theCurve2,
+                                           const Standard_Boolean theOrientation)
+{
+  StepKinematics_HighOrderKinematicPair::Init(theRepresentationItem_Name,
+                                              theItemDefinedTransformation_Name,
+                                              hasItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_TransformItem1,
+                                              theItemDefinedTransformation_TransformItem2,
+                                              theKinematicPair_Joint);
+
+  myCurve1 = theCurve1;
+
+  myCurve2 = theCurve2;
+
+  myOrientation = theOrientation;
+}
+
+//=======================================================================
+//function : Curve1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Curve) StepKinematics_PlanarCurvePair::Curve1 () const
+{
+  return myCurve1;
+}
+
+//=======================================================================
+//function : SetCurve1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePair::SetCurve1 (const Handle(StepGeom_Curve)& theCurve1)
+{
+  myCurve1 = theCurve1;
+}
+
+//=======================================================================
+//function : Curve2
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Curve) StepKinematics_PlanarCurvePair::Curve2 () const
+{
+  return myCurve2;
+}
+
+//=======================================================================
+//function : SetCurve2
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePair::SetCurve2 (const Handle(StepGeom_Curve)& theCurve2)
+{
+  myCurve2 = theCurve2;
+}
+
+//=======================================================================
+//function : Orientation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarCurvePair::Orientation () const
+{
+  return myOrientation;
+}
+
+//=======================================================================
+//function : SetOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePair::SetOrientation (const Standard_Boolean theOrientation)
+{
+  myOrientation = theOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_PlanarCurvePair.hxx b/src/StepKinematics/StepKinematics_PlanarCurvePair.hxx
new file mode 100644 (file)
index 0000000..cf379d3
--- /dev/null
@@ -0,0 +1,75 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PlanarCurvePair_HeaderFile_
+#define _StepKinematics_PlanarCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_HighOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+//! Representation of STEP entity PlanarCurvePair
+class StepKinematics_PlanarCurvePair : public StepKinematics_HighOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PlanarCurvePair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Curve)& theCurve1,
+                           const Handle(StepGeom_Curve)& theCurve2,
+                           const Standard_Boolean theOrientation);
+
+  //! Returns field Curve1
+  Standard_EXPORT Handle(StepGeom_Curve) Curve1() const;
+  //! Sets field Curve1
+  Standard_EXPORT void SetCurve1 (const Handle(StepGeom_Curve)& theCurve1);
+
+  //! Returns field Curve2
+  Standard_EXPORT Handle(StepGeom_Curve) Curve2() const;
+  //! Sets field Curve2
+  Standard_EXPORT void SetCurve2 (const Handle(StepGeom_Curve)& theCurve2);
+
+  //! Returns field Orientation
+  Standard_EXPORT Standard_Boolean Orientation() const;
+  //! Sets field Orientation
+  Standard_EXPORT void SetOrientation (const Standard_Boolean theOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+private:
+  Handle(StepGeom_Curve) myCurve1;
+  Handle(StepGeom_Curve) myCurve2;
+  Standard_Boolean myOrientation;
+
+};
+#endif // _StepKinematics_PlanarCurvePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PlanarCurvePairRange.cxx b/src/StepKinematics/StepKinematics_PlanarCurvePairRange.cxx
new file mode 100644 (file)
index 0000000..b110702
--- /dev/null
@@ -0,0 +1,102 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PlanarCurvePairRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PlanarCurvePairRange, StepKinematics_PlanarCurvePair)
+
+//=======================================================================
+//function : StepKinematics_PlanarCurvePairRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PlanarCurvePairRange::StepKinematics_PlanarCurvePairRange ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePairRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                const Handle(StepGeom_Curve)& thePlanarCurvePair_Curve1,
+                                                const Handle(StepGeom_Curve)& thePlanarCurvePair_Curve2,
+                                                const Standard_Boolean thePlanarCurvePair_Orientation,
+                                                const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve1,
+                                                const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve2)
+{
+  StepKinematics_PlanarCurvePair::Init(theRepresentationItem_Name,
+                                       theItemDefinedTransformation_Name,
+                                       hasItemDefinedTransformation_Description,
+                                       theItemDefinedTransformation_Description,
+                                       theItemDefinedTransformation_TransformItem1,
+                                       theItemDefinedTransformation_TransformItem2,
+                                       theKinematicPair_Joint,
+                                       thePlanarCurvePair_Curve1,
+                                       thePlanarCurvePair_Curve2,
+                                       thePlanarCurvePair_Orientation);
+
+  myRangeOnCurve1 = theRangeOnCurve1;
+
+  myRangeOnCurve2 = theRangeOnCurve2;
+}
+
+//=======================================================================
+//function : RangeOnCurve1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_TrimmedCurve) StepKinematics_PlanarCurvePairRange::RangeOnCurve1 () const
+{
+  return myRangeOnCurve1;
+}
+
+//=======================================================================
+//function : SetRangeOnCurve1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePairRange::SetRangeOnCurve1 (const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve1)
+{
+  myRangeOnCurve1 = theRangeOnCurve1;
+}
+
+//=======================================================================
+//function : RangeOnCurve2
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_TrimmedCurve) StepKinematics_PlanarCurvePairRange::RangeOnCurve2 () const
+{
+  return myRangeOnCurve2;
+}
+
+//=======================================================================
+//function : SetRangeOnCurve2
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarCurvePairRange::SetRangeOnCurve2 (const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve2)
+{
+  myRangeOnCurve2 = theRangeOnCurve2;
+}
diff --git a/src/StepKinematics/StepKinematics_PlanarCurvePairRange.hxx b/src/StepKinematics/StepKinematics_PlanarCurvePairRange.hxx
new file mode 100644 (file)
index 0000000..fd7b526
--- /dev/null
@@ -0,0 +1,72 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PlanarCurvePairRange_HeaderFile_
+#define _StepKinematics_PlanarCurvePairRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <StepGeom_TrimmedCurve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PlanarCurvePairRange, StepKinematics_PlanarCurvePair)
+
+//! Representation of STEP entity PlanarCurvePairRange
+class StepKinematics_PlanarCurvePairRange : public StepKinematics_PlanarCurvePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PlanarCurvePairRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Curve)& thePlanarCurvePair_Curve1,
+                           const Handle(StepGeom_Curve)& thePlanarCurvePair_Curve2,
+                           const Standard_Boolean thePlanarCurvePair_Orientation,
+                           const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve1,
+                           const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve2);
+
+  //! Returns field RangeOnCurve1
+  Standard_EXPORT Handle(StepGeom_TrimmedCurve) RangeOnCurve1() const;
+  //! Sets field RangeOnCurve1
+  Standard_EXPORT void SetRangeOnCurve1 (const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve1);
+
+  //! Returns field RangeOnCurve2
+  Standard_EXPORT Handle(StepGeom_TrimmedCurve) RangeOnCurve2() const;
+  //! Sets field RangeOnCurve2
+  Standard_EXPORT void SetRangeOnCurve2 (const Handle(StepGeom_TrimmedCurve)& theRangeOnCurve2);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PlanarCurvePairRange, StepKinematics_PlanarCurvePair)
+
+private:
+  Handle(StepGeom_TrimmedCurve) myRangeOnCurve1;
+  Handle(StepGeom_TrimmedCurve) myRangeOnCurve2;
+
+};
+#endif // _StepKinematics_PlanarCurvePairRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PlanarPair.cxx b/src/StepKinematics/StepKinematics_PlanarPair.cxx
new file mode 100644 (file)
index 0000000..74832c4
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PlanarPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PlanarPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_PlanarPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PlanarPair::StepKinematics_PlanarPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_PlanarPair.hxx b/src/StepKinematics/StepKinematics_PlanarPair.hxx
new file mode 100644 (file)
index 0000000..f419fca
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PlanarPair_HeaderFile_
+#define _StepKinematics_PlanarPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PlanarPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity PlanarPair
+class StepKinematics_PlanarPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PlanarPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PlanarPair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_PlanarPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PlanarPairValue.cxx b/src/StepKinematics/StepKinematics_PlanarPairValue.cxx
new file mode 100644 (file)
index 0000000..559ce86
--- /dev/null
@@ -0,0 +1,109 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PlanarPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PlanarPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_PlanarPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PlanarPairValue::StepKinematics_PlanarPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                           const Standard_Real theActualRotation,
+                                           const Standard_Real theActualTranslationX,
+                                           const Standard_Real theActualTranslationY)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualRotation = theActualRotation;
+
+  myActualTranslationX = theActualTranslationX;
+
+  myActualTranslationY = theActualTranslationY;
+}
+
+//=======================================================================
+//function : ActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairValue::ActualRotation () const
+{
+  return myActualRotation;
+}
+
+//=======================================================================
+//function : SetActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairValue::SetActualRotation (const Standard_Real theActualRotation)
+{
+  myActualRotation = theActualRotation;
+}
+
+//=======================================================================
+//function : ActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairValue::ActualTranslationX () const
+{
+  return myActualTranslationX;
+}
+
+//=======================================================================
+//function : SetActualTranslationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairValue::SetActualTranslationX (const Standard_Real theActualTranslationX)
+{
+  myActualTranslationX = theActualTranslationX;
+}
+
+//=======================================================================
+//function : ActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairValue::ActualTranslationY () const
+{
+  return myActualTranslationY;
+}
+
+//=======================================================================
+//function : SetActualTranslationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairValue::SetActualTranslationY (const Standard_Real theActualTranslationY)
+{
+  myActualTranslationY = theActualTranslationY;
+}
diff --git a/src/StepKinematics/StepKinematics_PlanarPairValue.hxx b/src/StepKinematics/StepKinematics_PlanarPairValue.hxx
new file mode 100644 (file)
index 0000000..87c682a
--- /dev/null
@@ -0,0 +1,67 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PlanarPairValue_HeaderFile_
+#define _StepKinematics_PlanarPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PlanarPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity PlanarPairValue
+class StepKinematics_PlanarPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PlanarPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualRotation,
+                           const Standard_Real theActualTranslationX,
+                           const Standard_Real theActualTranslationY);
+
+  //! Returns field ActualRotation
+  Standard_EXPORT Standard_Real ActualRotation() const;
+  //! Sets field ActualRotation
+  Standard_EXPORT void SetActualRotation (const Standard_Real theActualRotation);
+
+  //! Returns field ActualTranslationX
+  Standard_EXPORT Standard_Real ActualTranslationX() const;
+  //! Sets field ActualTranslationX
+  Standard_EXPORT void SetActualTranslationX (const Standard_Real theActualTranslationX);
+
+  //! Returns field ActualTranslationY
+  Standard_EXPORT Standard_Real ActualTranslationY() const;
+  //! Sets field ActualTranslationY
+  Standard_EXPORT void SetActualTranslationY (const Standard_Real theActualTranslationY);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PlanarPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualRotation;
+  Standard_Real myActualTranslationX;
+  Standard_Real myActualTranslationY;
+
+};
+#endif // _StepKinematics_PlanarPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PlanarPairWithRange.cxx b/src/StepKinematics/StepKinematics_PlanarPairWithRange.cxx
new file mode 100644 (file)
index 0000000..fe41a11
--- /dev/null
@@ -0,0 +1,296 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PlanarPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PlanarPairWithRange, StepKinematics_PlanarPair)
+
+//=======================================================================
+//function : StepKinematics_PlanarPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PlanarPairWithRange::StepKinematics_PlanarPairWithRange ()
+{
+  defLowerLimitActualRotation = Standard_False;
+  defUpperLimitActualRotation = Standard_False;
+  defLowerLimitActualTranslationX = Standard_False;
+  defUpperLimitActualTranslationX = Standard_False;
+  defLowerLimitActualTranslationY = Standard_False;
+  defUpperLimitActualTranslationY = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                               const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                               const Standard_Boolean hasItemDefinedTransformation_Description,
+                                               const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                               const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                               const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                               const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                               const Standard_Boolean theLowOrderKinematicPair_TX,
+                                               const Standard_Boolean theLowOrderKinematicPair_TY,
+                                               const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                               const Standard_Boolean theLowOrderKinematicPair_RX,
+                                               const Standard_Boolean theLowOrderKinematicPair_RY,
+                                               const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                               const Standard_Boolean hasLowerLimitActualRotation,
+                                               const Standard_Real theLowerLimitActualRotation,
+                                               const Standard_Boolean hasUpperLimitActualRotation,
+                                               const Standard_Real theUpperLimitActualRotation,
+                                               const Standard_Boolean hasLowerLimitActualTranslationX,
+                                               const Standard_Real theLowerLimitActualTranslationX,
+                                               const Standard_Boolean hasUpperLimitActualTranslationX,
+                                               const Standard_Real theUpperLimitActualTranslationX,
+                                               const Standard_Boolean hasLowerLimitActualTranslationY,
+                                               const Standard_Real theLowerLimitActualTranslationY,
+                                               const Standard_Boolean hasUpperLimitActualTranslationY,
+                                               const Standard_Real theUpperLimitActualTranslationY)
+{
+  StepKinematics_PlanarPair::Init(theRepresentationItem_Name,
+                                  theItemDefinedTransformation_Name,
+                                  hasItemDefinedTransformation_Description,
+                                  theItemDefinedTransformation_Description,
+                                  theItemDefinedTransformation_TransformItem1,
+                                  theItemDefinedTransformation_TransformItem2,
+                                  theKinematicPair_Joint,
+                                  theLowOrderKinematicPair_TX,
+                                  theLowOrderKinematicPair_TY,
+                                  theLowOrderKinematicPair_TZ,
+                                  theLowOrderKinematicPair_RX,
+                                  theLowOrderKinematicPair_RY,
+                                  theLowOrderKinematicPair_RZ);
+
+  defLowerLimitActualRotation = hasLowerLimitActualRotation;
+  if (defLowerLimitActualRotation) {
+    myLowerLimitActualRotation = theLowerLimitActualRotation;
+  }
+  else myLowerLimitActualRotation = 0;
+
+  defUpperLimitActualRotation = hasUpperLimitActualRotation;
+  if (defUpperLimitActualRotation) {
+    myUpperLimitActualRotation = theUpperLimitActualRotation;
+  }
+  else myUpperLimitActualRotation = 0;
+
+  defLowerLimitActualTranslationX = hasLowerLimitActualTranslationX;
+  if (defLowerLimitActualTranslationX) {
+    myLowerLimitActualTranslationX = theLowerLimitActualTranslationX;
+  }
+  else myLowerLimitActualTranslationX = 0;
+
+  defUpperLimitActualTranslationX = hasUpperLimitActualTranslationX;
+  if (defUpperLimitActualTranslationX) {
+    myUpperLimitActualTranslationX = theUpperLimitActualTranslationX;
+  }
+  else myUpperLimitActualTranslationX = 0;
+
+  defLowerLimitActualTranslationY = hasLowerLimitActualTranslationY;
+  if (defLowerLimitActualTranslationY) {
+    myLowerLimitActualTranslationY = theLowerLimitActualTranslationY;
+  }
+  else myLowerLimitActualTranslationY = 0;
+
+  defUpperLimitActualTranslationY = hasUpperLimitActualTranslationY;
+  if (defUpperLimitActualTranslationY) {
+    myUpperLimitActualTranslationY = theUpperLimitActualTranslationY;
+  }
+  else myUpperLimitActualTranslationY = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairWithRange::LowerLimitActualRotation () const
+{
+  return myLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation)
+{
+  myLowerLimitActualRotation = theLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarPairWithRange::HasLowerLimitActualRotation () const
+{
+  return defLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairWithRange::UpperLimitActualRotation () const
+{
+  return myUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation)
+{
+  myUpperLimitActualRotation = theUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarPairWithRange::HasUpperLimitActualRotation () const
+{
+  return defUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairWithRange::LowerLimitActualTranslationX () const
+{
+  return myLowerLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::SetLowerLimitActualTranslationX (const Standard_Real theLowerLimitActualTranslationX)
+{
+  myLowerLimitActualTranslationX = theLowerLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarPairWithRange::HasLowerLimitActualTranslationX () const
+{
+  return defLowerLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairWithRange::UpperLimitActualTranslationX () const
+{
+  return myUpperLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::SetUpperLimitActualTranslationX (const Standard_Real theUpperLimitActualTranslationX)
+{
+  myUpperLimitActualTranslationX = theUpperLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslationX
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarPairWithRange::HasUpperLimitActualTranslationX () const
+{
+  return defUpperLimitActualTranslationX;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairWithRange::LowerLimitActualTranslationY () const
+{
+  return myLowerLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::SetLowerLimitActualTranslationY (const Standard_Real theLowerLimitActualTranslationY)
+{
+  myLowerLimitActualTranslationY = theLowerLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarPairWithRange::HasLowerLimitActualTranslationY () const
+{
+  return defLowerLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PlanarPairWithRange::UpperLimitActualTranslationY () const
+{
+  return myUpperLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PlanarPairWithRange::SetUpperLimitActualTranslationY (const Standard_Real theUpperLimitActualTranslationY)
+{
+  myUpperLimitActualTranslationY = theUpperLimitActualTranslationY;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslationY
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PlanarPairWithRange::HasUpperLimitActualTranslationY () const
+{
+  return defUpperLimitActualTranslationY;
+}
diff --git a/src/StepKinematics/StepKinematics_PlanarPairWithRange.hxx b/src/StepKinematics/StepKinematics_PlanarPairWithRange.hxx
new file mode 100644 (file)
index 0000000..c7e9e9e
--- /dev/null
@@ -0,0 +1,125 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PlanarPairWithRange_HeaderFile_
+#define _StepKinematics_PlanarPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PlanarPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PlanarPairWithRange, StepKinematics_PlanarPair)
+
+//! Representation of STEP entity PlanarPairWithRange
+class StepKinematics_PlanarPairWithRange : public StepKinematics_PlanarPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PlanarPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitActualRotation,
+                           const Standard_Real theLowerLimitActualRotation,
+                           const Standard_Boolean hasUpperLimitActualRotation,
+                           const Standard_Real theUpperLimitActualRotation,
+                           const Standard_Boolean hasLowerLimitActualTranslationX,
+                           const Standard_Real theLowerLimitActualTranslationX,
+                           const Standard_Boolean hasUpperLimitActualTranslationX,
+                           const Standard_Real theUpperLimitActualTranslationX,
+                           const Standard_Boolean hasLowerLimitActualTranslationY,
+                           const Standard_Real theLowerLimitActualTranslationY,
+                           const Standard_Boolean hasUpperLimitActualTranslationY,
+                           const Standard_Real theUpperLimitActualTranslationY);
+
+  //! Returns field LowerLimitActualRotation
+  Standard_EXPORT Standard_Real LowerLimitActualRotation() const;
+  //! Sets field LowerLimitActualRotation
+  Standard_EXPORT void SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation);
+  //! Returns True if optional field LowerLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotation() const;
+
+  //! Returns field UpperLimitActualRotation
+  Standard_EXPORT Standard_Real UpperLimitActualRotation() const;
+  //! Sets field UpperLimitActualRotation
+  Standard_EXPORT void SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation);
+  //! Returns True if optional field UpperLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotation() const;
+
+  //! Returns field LowerLimitActualTranslationX
+  Standard_EXPORT Standard_Real LowerLimitActualTranslationX() const;
+  //! Sets field LowerLimitActualTranslationX
+  Standard_EXPORT void SetLowerLimitActualTranslationX (const Standard_Real theLowerLimitActualTranslationX);
+  //! Returns True if optional field LowerLimitActualTranslationX is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslationX() const;
+
+  //! Returns field UpperLimitActualTranslationX
+  Standard_EXPORT Standard_Real UpperLimitActualTranslationX() const;
+  //! Sets field UpperLimitActualTranslationX
+  Standard_EXPORT void SetUpperLimitActualTranslationX (const Standard_Real theUpperLimitActualTranslationX);
+  //! Returns True if optional field UpperLimitActualTranslationX is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslationX() const;
+
+  //! Returns field LowerLimitActualTranslationY
+  Standard_EXPORT Standard_Real LowerLimitActualTranslationY() const;
+  //! Sets field LowerLimitActualTranslationY
+  Standard_EXPORT void SetLowerLimitActualTranslationY (const Standard_Real theLowerLimitActualTranslationY);
+  //! Returns True if optional field LowerLimitActualTranslationY is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslationY() const;
+
+  //! Returns field UpperLimitActualTranslationY
+  Standard_EXPORT Standard_Real UpperLimitActualTranslationY() const;
+  //! Sets field UpperLimitActualTranslationY
+  Standard_EXPORT void SetUpperLimitActualTranslationY (const Standard_Real theUpperLimitActualTranslationY);
+  //! Returns True if optional field UpperLimitActualTranslationY is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslationY() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PlanarPairWithRange, StepKinematics_PlanarPair)
+
+private:
+  Standard_Real myLowerLimitActualRotation; //!< optional
+  Standard_Real myUpperLimitActualRotation; //!< optional
+  Standard_Real myLowerLimitActualTranslationX; //!< optional
+  Standard_Real myUpperLimitActualTranslationX; //!< optional
+  Standard_Real myLowerLimitActualTranslationY; //!< optional
+  Standard_Real myUpperLimitActualTranslationY; //!< optional
+  Standard_Boolean defLowerLimitActualRotation; //!< flag "is LowerLimitActualRotation defined"
+  Standard_Boolean defUpperLimitActualRotation; //!< flag "is UpperLimitActualRotation defined"
+  Standard_Boolean defLowerLimitActualTranslationX; //!< flag "is LowerLimitActualTranslationX defined"
+  Standard_Boolean defUpperLimitActualTranslationX; //!< flag "is UpperLimitActualTranslationX defined"
+  Standard_Boolean defLowerLimitActualTranslationY; //!< flag "is LowerLimitActualTranslationY defined"
+  Standard_Boolean defUpperLimitActualTranslationY; //!< flag "is UpperLimitActualTranslationY defined"
+
+};
+#endif // _StepKinematics_PlanarPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PointOnPlanarCurvePair.cxx b/src/StepKinematics/StepKinematics_PointOnPlanarCurvePair.cxx
new file mode 100644 (file)
index 0000000..e3f4c7e
--- /dev/null
@@ -0,0 +1,96 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PointOnPlanarCurvePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PointOnPlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_PointOnPlanarCurvePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PointOnPlanarCurvePair::StepKinematics_PointOnPlanarCurvePair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                  const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                  const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                  const Handle(StepGeom_Curve)& thePairCurve,
+                                                  const Standard_Boolean theOrientation)
+{
+  StepKinematics_HighOrderKinematicPair::Init(theRepresentationItem_Name,
+                                              theItemDefinedTransformation_Name,
+                                              hasItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_TransformItem1,
+                                              theItemDefinedTransformation_TransformItem2,
+                                              theKinematicPair_Joint);
+
+  myPairCurve = thePairCurve;
+
+  myOrientation = theOrientation;
+}
+
+//=======================================================================
+//function : PairCurve
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Curve) StepKinematics_PointOnPlanarCurvePair::PairCurve () const
+{
+  return myPairCurve;
+}
+
+//=======================================================================
+//function : SetPairCurve
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePair::SetPairCurve (const Handle(StepGeom_Curve)& thePairCurve)
+{
+  myPairCurve = thePairCurve;
+}
+
+//=======================================================================
+//function : Orientation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePair::Orientation () const
+{
+  return myOrientation;
+}
+
+//=======================================================================
+//function : SetOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePair::SetOrientation (const Standard_Boolean theOrientation)
+{
+  myOrientation = theOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_PointOnPlanarCurvePair.hxx b/src/StepKinematics/StepKinematics_PointOnPlanarCurvePair.hxx
new file mode 100644 (file)
index 0000000..c01368a
--- /dev/null
@@ -0,0 +1,68 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PointOnPlanarCurvePair_HeaderFile_
+#define _StepKinematics_PointOnPlanarCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_HighOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PointOnPlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+//! Representation of STEP entity PointOnPlanarCurvePair
+class StepKinematics_PointOnPlanarCurvePair : public StepKinematics_HighOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PointOnPlanarCurvePair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Curve)& thePairCurve,
+                           const Standard_Boolean theOrientation);
+
+  //! Returns field PairCurve
+  Standard_EXPORT Handle(StepGeom_Curve) PairCurve() const;
+  //! Sets field PairCurve
+  Standard_EXPORT void SetPairCurve (const Handle(StepGeom_Curve)& thePairCurve);
+
+  //! Returns field Orientation
+  Standard_EXPORT Standard_Boolean Orientation() const;
+  //! Sets field Orientation
+  Standard_EXPORT void SetOrientation (const Standard_Boolean theOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PointOnPlanarCurvePair, StepKinematics_HighOrderKinematicPair)
+
+private:
+  Handle(StepGeom_Curve) myPairCurve;
+  Standard_Boolean myOrientation;
+
+};
+#endif // _StepKinematics_PointOnPlanarCurvePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairValue.cxx b/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairValue.cxx
new file mode 100644 (file)
index 0000000..52d6594
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PointOnPlanarCurvePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PointOnPlanarCurvePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_PointOnPlanarCurvePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PointOnPlanarCurvePairValue::StepKinematics_PointOnPlanarCurvePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                       const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                       const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve,
+                                                       const StepKinematics_SpatialRotation& theInputOrientation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPointOnCurve = theActualPointOnCurve;
+
+  myInputOrientation = theInputOrientation;
+}
+
+//=======================================================================
+//function : ActualPointOnCurve
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnCurve) StepKinematics_PointOnPlanarCurvePairValue::ActualPointOnCurve () const
+{
+  return myActualPointOnCurve;
+}
+
+//=======================================================================
+//function : SetActualPointOnCurve
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairValue::SetActualPointOnCurve (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve)
+{
+  myActualPointOnCurve = theActualPointOnCurve;
+}
+
+//=======================================================================
+//function : InputOrientation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SpatialRotation StepKinematics_PointOnPlanarCurvePairValue::InputOrientation () const
+{
+  return myInputOrientation;
+}
+
+//=======================================================================
+//function : SetInputOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairValue::SetInputOrientation (const StepKinematics_SpatialRotation& theInputOrientation)
+{
+  myInputOrientation = theInputOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairValue.hxx b/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairValue.hxx
new file mode 100644 (file)
index 0000000..264620b
--- /dev/null
@@ -0,0 +1,62 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PointOnPlanarCurvePairValue_HeaderFile_
+#define _StepKinematics_PointOnPlanarCurvePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnCurve.hxx>
+#include <StepKinematics_SpatialRotation.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PointOnPlanarCurvePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity PointOnPlanarCurvePairValue
+class StepKinematics_PointOnPlanarCurvePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PointOnPlanarCurvePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve,
+                           const StepKinematics_SpatialRotation& theInputOrientation);
+
+  //! Returns field ActualPointOnCurve
+  Standard_EXPORT Handle(StepGeom_PointOnCurve) ActualPointOnCurve() const;
+  //! Sets field ActualPointOnCurve
+  Standard_EXPORT void SetActualPointOnCurve (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve);
+
+  //! Returns field InputOrientation
+  Standard_EXPORT StepKinematics_SpatialRotation InputOrientation() const;
+  //! Sets field InputOrientation
+  Standard_EXPORT void SetInputOrientation (const StepKinematics_SpatialRotation& theInputOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PointOnPlanarCurvePairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_PointOnCurve) myActualPointOnCurve;
+  StepKinematics_SpatialRotation myInputOrientation;
+
+};
+#endif // _StepKinematics_PointOnPlanarCurvePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairWithRange.cxx b/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairWithRange.cxx
new file mode 100644 (file)
index 0000000..f171bc2
--- /dev/null
@@ -0,0 +1,311 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PointOnPlanarCurvePairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PointOnPlanarCurvePairWithRange, StepKinematics_PointOnPlanarCurvePair)
+
+//=======================================================================
+//function : StepKinematics_PointOnPlanarCurvePairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PointOnPlanarCurvePairWithRange::StepKinematics_PointOnPlanarCurvePairWithRange ()
+{
+  defLowerLimitYaw = Standard_False;
+  defUpperLimitYaw = Standard_False;
+  defLowerLimitPitch = Standard_False;
+  defUpperLimitPitch = Standard_False;
+  defLowerLimitRoll = Standard_False;
+  defUpperLimitRoll = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                           const Handle(StepGeom_Curve)& thePointOnPlanarCurvePair_PairCurve,
+                                                           const Standard_Boolean thePointOnPlanarCurvePair_Orientation,
+                                                           const Handle(StepGeom_TrimmedCurve)& theRangeOnPairCurve,
+                                                           const Standard_Boolean hasLowerLimitYaw,
+                                                           const Standard_Real theLowerLimitYaw,
+                                                           const Standard_Boolean hasUpperLimitYaw,
+                                                           const Standard_Real theUpperLimitYaw,
+                                                           const Standard_Boolean hasLowerLimitPitch,
+                                                           const Standard_Real theLowerLimitPitch,
+                                                           const Standard_Boolean hasUpperLimitPitch,
+                                                           const Standard_Real theUpperLimitPitch,
+                                                           const Standard_Boolean hasLowerLimitRoll,
+                                                           const Standard_Real theLowerLimitRoll,
+                                                           const Standard_Boolean hasUpperLimitRoll,
+                                                           const Standard_Real theUpperLimitRoll)
+{
+  StepKinematics_PointOnPlanarCurvePair::Init(theRepresentationItem_Name,
+                                              theItemDefinedTransformation_Name,
+                                              hasItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_TransformItem1,
+                                              theItemDefinedTransformation_TransformItem2,
+                                              theKinematicPair_Joint,
+                                              thePointOnPlanarCurvePair_PairCurve,
+                                              thePointOnPlanarCurvePair_Orientation);
+
+  myRangeOnPairCurve = theRangeOnPairCurve;
+
+  defLowerLimitYaw = hasLowerLimitYaw;
+  if (defLowerLimitYaw) {
+    myLowerLimitYaw = theLowerLimitYaw;
+  }
+  else myLowerLimitYaw = 0;
+
+  defUpperLimitYaw = hasUpperLimitYaw;
+  if (defUpperLimitYaw) {
+    myUpperLimitYaw = theUpperLimitYaw;
+  }
+  else myUpperLimitYaw = 0;
+
+  defLowerLimitPitch = hasLowerLimitPitch;
+  if (defLowerLimitPitch) {
+    myLowerLimitPitch = theLowerLimitPitch;
+  }
+  else myLowerLimitPitch = 0;
+
+  defUpperLimitPitch = hasUpperLimitPitch;
+  if (defUpperLimitPitch) {
+    myUpperLimitPitch = theUpperLimitPitch;
+  }
+  else myUpperLimitPitch = 0;
+
+  defLowerLimitRoll = hasLowerLimitRoll;
+  if (defLowerLimitRoll) {
+    myLowerLimitRoll = theLowerLimitRoll;
+  }
+  else myLowerLimitRoll = 0;
+
+  defUpperLimitRoll = hasUpperLimitRoll;
+  if (defUpperLimitRoll) {
+    myUpperLimitRoll = theUpperLimitRoll;
+  }
+  else myUpperLimitRoll = 0;
+}
+
+//=======================================================================
+//function : RangeOnPairCurve
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_TrimmedCurve) StepKinematics_PointOnPlanarCurvePairWithRange::RangeOnPairCurve () const
+{
+  return myRangeOnPairCurve;
+}
+
+//=======================================================================
+//function : SetRangeOnPairCurve
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetRangeOnPairCurve (const Handle(StepGeom_TrimmedCurve)& theRangeOnPairCurve)
+{
+  myRangeOnPairCurve = theRangeOnPairCurve;
+}
+
+//=======================================================================
+//function : LowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnPlanarCurvePairWithRange::LowerLimitYaw () const
+{
+  return myLowerLimitYaw;
+}
+
+//=======================================================================
+//function : SetLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetLowerLimitYaw (const Standard_Real theLowerLimitYaw)
+{
+  myLowerLimitYaw = theLowerLimitYaw;
+}
+
+//=======================================================================
+//function : HasLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePairWithRange::HasLowerLimitYaw () const
+{
+  return defLowerLimitYaw;
+}
+
+//=======================================================================
+//function : UpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnPlanarCurvePairWithRange::UpperLimitYaw () const
+{
+  return myUpperLimitYaw;
+}
+
+//=======================================================================
+//function : SetUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetUpperLimitYaw (const Standard_Real theUpperLimitYaw)
+{
+  myUpperLimitYaw = theUpperLimitYaw;
+}
+
+//=======================================================================
+//function : HasUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePairWithRange::HasUpperLimitYaw () const
+{
+  return defUpperLimitYaw;
+}
+
+//=======================================================================
+//function : LowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnPlanarCurvePairWithRange::LowerLimitPitch () const
+{
+  return myLowerLimitPitch;
+}
+
+//=======================================================================
+//function : SetLowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetLowerLimitPitch (const Standard_Real theLowerLimitPitch)
+{
+  myLowerLimitPitch = theLowerLimitPitch;
+}
+
+//=======================================================================
+//function : HasLowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePairWithRange::HasLowerLimitPitch () const
+{
+  return defLowerLimitPitch;
+}
+
+//=======================================================================
+//function : UpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnPlanarCurvePairWithRange::UpperLimitPitch () const
+{
+  return myUpperLimitPitch;
+}
+
+//=======================================================================
+//function : SetUpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetUpperLimitPitch (const Standard_Real theUpperLimitPitch)
+{
+  myUpperLimitPitch = theUpperLimitPitch;
+}
+
+//=======================================================================
+//function : HasUpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePairWithRange::HasUpperLimitPitch () const
+{
+  return defUpperLimitPitch;
+}
+
+//=======================================================================
+//function : LowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnPlanarCurvePairWithRange::LowerLimitRoll () const
+{
+  return myLowerLimitRoll;
+}
+
+//=======================================================================
+//function : SetLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetLowerLimitRoll (const Standard_Real theLowerLimitRoll)
+{
+  myLowerLimitRoll = theLowerLimitRoll;
+}
+
+//=======================================================================
+//function : HasLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePairWithRange::HasLowerLimitRoll () const
+{
+  return defLowerLimitRoll;
+}
+
+//=======================================================================
+//function : UpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnPlanarCurvePairWithRange::UpperLimitRoll () const
+{
+  return myUpperLimitRoll;
+}
+
+//=======================================================================
+//function : SetUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnPlanarCurvePairWithRange::SetUpperLimitRoll (const Standard_Real theUpperLimitRoll)
+{
+  myUpperLimitRoll = theUpperLimitRoll;
+}
+
+//=======================================================================
+//function : HasUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnPlanarCurvePairWithRange::HasUpperLimitRoll () const
+{
+  return defUpperLimitRoll;
+}
diff --git a/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairWithRange.hxx b/src/StepKinematics/StepKinematics_PointOnPlanarCurvePairWithRange.hxx
new file mode 100644 (file)
index 0000000..0289cfe
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PointOnPlanarCurvePairWithRange_HeaderFile_
+#define _StepKinematics_PointOnPlanarCurvePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PointOnPlanarCurvePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+#include <StepGeom_TrimmedCurve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PointOnPlanarCurvePairWithRange, StepKinematics_PointOnPlanarCurvePair)
+
+//! Representation of STEP entity PointOnPlanarCurvePairWithRange
+class StepKinematics_PointOnPlanarCurvePairWithRange : public StepKinematics_PointOnPlanarCurvePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PointOnPlanarCurvePairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Curve)& thePointOnPlanarCurvePair_PairCurve,
+                           const Standard_Boolean thePointOnPlanarCurvePair_Orientation,
+                           const Handle(StepGeom_TrimmedCurve)& theRangeOnPairCurve,
+                           const Standard_Boolean hasLowerLimitYaw,
+                           const Standard_Real theLowerLimitYaw,
+                           const Standard_Boolean hasUpperLimitYaw,
+                           const Standard_Real theUpperLimitYaw,
+                           const Standard_Boolean hasLowerLimitPitch,
+                           const Standard_Real theLowerLimitPitch,
+                           const Standard_Boolean hasUpperLimitPitch,
+                           const Standard_Real theUpperLimitPitch,
+                           const Standard_Boolean hasLowerLimitRoll,
+                           const Standard_Real theLowerLimitRoll,
+                           const Standard_Boolean hasUpperLimitRoll,
+                           const Standard_Real theUpperLimitRoll);
+
+  //! Returns field RangeOnPairCurve
+  Standard_EXPORT Handle(StepGeom_TrimmedCurve) RangeOnPairCurve() const;
+  //! Sets field RangeOnPairCurve
+  Standard_EXPORT void SetRangeOnPairCurve (const Handle(StepGeom_TrimmedCurve)& theRangeOnPairCurve);
+
+  //! Returns field LowerLimitYaw
+  Standard_EXPORT Standard_Real LowerLimitYaw() const;
+  //! Sets field LowerLimitYaw
+  Standard_EXPORT void SetLowerLimitYaw (const Standard_Real theLowerLimitYaw);
+  //! Returns True if optional field LowerLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitYaw() const;
+
+  //! Returns field UpperLimitYaw
+  Standard_EXPORT Standard_Real UpperLimitYaw() const;
+  //! Sets field UpperLimitYaw
+  Standard_EXPORT void SetUpperLimitYaw (const Standard_Real theUpperLimitYaw);
+  //! Returns True if optional field UpperLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitYaw() const;
+
+  //! Returns field LowerLimitPitch
+  Standard_EXPORT Standard_Real LowerLimitPitch() const;
+  //! Sets field LowerLimitPitch
+  Standard_EXPORT void SetLowerLimitPitch (const Standard_Real theLowerLimitPitch);
+  //! Returns True if optional field LowerLimitPitch is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitPitch() const;
+
+  //! Returns field UpperLimitPitch
+  Standard_EXPORT Standard_Real UpperLimitPitch() const;
+  //! Sets field UpperLimitPitch
+  Standard_EXPORT void SetUpperLimitPitch (const Standard_Real theUpperLimitPitch);
+  //! Returns True if optional field UpperLimitPitch is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitPitch() const;
+
+  //! Returns field LowerLimitRoll
+  Standard_EXPORT Standard_Real LowerLimitRoll() const;
+  //! Sets field LowerLimitRoll
+  Standard_EXPORT void SetLowerLimitRoll (const Standard_Real theLowerLimitRoll);
+  //! Returns True if optional field LowerLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitRoll() const;
+
+  //! Returns field UpperLimitRoll
+  Standard_EXPORT Standard_Real UpperLimitRoll() const;
+  //! Sets field UpperLimitRoll
+  Standard_EXPORT void SetUpperLimitRoll (const Standard_Real theUpperLimitRoll);
+  //! Returns True if optional field UpperLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitRoll() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PointOnPlanarCurvePairWithRange, StepKinematics_PointOnPlanarCurvePair)
+
+private:
+  Handle(StepGeom_TrimmedCurve) myRangeOnPairCurve;
+  Standard_Real myLowerLimitYaw; //!< optional
+  Standard_Real myUpperLimitYaw; //!< optional
+  Standard_Real myLowerLimitPitch; //!< optional
+  Standard_Real myUpperLimitPitch; //!< optional
+  Standard_Real myLowerLimitRoll; //!< optional
+  Standard_Real myUpperLimitRoll; //!< optional
+  Standard_Boolean defLowerLimitYaw; //!< flag "is LowerLimitYaw defined"
+  Standard_Boolean defUpperLimitYaw; //!< flag "is UpperLimitYaw defined"
+  Standard_Boolean defLowerLimitPitch; //!< flag "is LowerLimitPitch defined"
+  Standard_Boolean defUpperLimitPitch; //!< flag "is UpperLimitPitch defined"
+  Standard_Boolean defLowerLimitRoll; //!< flag "is LowerLimitRoll defined"
+  Standard_Boolean defUpperLimitRoll; //!< flag "is UpperLimitRoll defined"
+
+};
+#endif // _StepKinematics_PointOnPlanarCurvePairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PointOnSurfacePair.cxx b/src/StepKinematics/StepKinematics_PointOnSurfacePair.cxx
new file mode 100644 (file)
index 0000000..c007d6d
--- /dev/null
@@ -0,0 +1,73 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PointOnSurfacePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PointOnSurfacePair, StepKinematics_HighOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_PointOnSurfacePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PointOnSurfacePair::StepKinematics_PointOnSurfacePair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                              const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                              const Standard_Boolean hasItemDefinedTransformation_Description,
+                                              const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                              const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                              const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                              const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                              const Handle(StepGeom_Surface)& thePairSurface)
+{
+  StepKinematics_HighOrderKinematicPair::Init(theRepresentationItem_Name,
+                                              theItemDefinedTransformation_Name,
+                                              hasItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_TransformItem1,
+                                              theItemDefinedTransformation_TransformItem2,
+                                              theKinematicPair_Joint);
+
+  myPairSurface = thePairSurface;
+}
+
+//=======================================================================
+//function : PairSurface
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Surface) StepKinematics_PointOnSurfacePair::PairSurface () const
+{
+  return myPairSurface;
+}
+
+//=======================================================================
+//function : SetPairSurface
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePair::SetPairSurface (const Handle(StepGeom_Surface)& thePairSurface)
+{
+  myPairSurface = thePairSurface;
+}
diff --git a/src/StepKinematics/StepKinematics_PointOnSurfacePair.hxx b/src/StepKinematics/StepKinematics_PointOnSurfacePair.hxx
new file mode 100644 (file)
index 0000000..b54396e
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PointOnSurfacePair_HeaderFile_
+#define _StepKinematics_PointOnSurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_HighOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PointOnSurfacePair, StepKinematics_HighOrderKinematicPair)
+
+//! Representation of STEP entity PointOnSurfacePair
+class StepKinematics_PointOnSurfacePair : public StepKinematics_HighOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PointOnSurfacePair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Surface)& thePairSurface);
+
+  //! Returns field PairSurface
+  Standard_EXPORT Handle(StepGeom_Surface) PairSurface() const;
+  //! Sets field PairSurface
+  Standard_EXPORT void SetPairSurface (const Handle(StepGeom_Surface)& thePairSurface);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PointOnSurfacePair, StepKinematics_HighOrderKinematicPair)
+
+private:
+  Handle(StepGeom_Surface) myPairSurface;
+
+};
+#endif // _StepKinematics_PointOnSurfacePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PointOnSurfacePairValue.cxx b/src/StepKinematics/StepKinematics_PointOnSurfacePairValue.cxx
new file mode 100644 (file)
index 0000000..878adf4
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PointOnSurfacePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PointOnSurfacePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_PointOnSurfacePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PointOnSurfacePairValue::StepKinematics_PointOnSurfacePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                   const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                   const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface,
+                                                   const StepKinematics_SpatialRotation& theInputOrientation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPointOnSurface = theActualPointOnSurface;
+
+  myInputOrientation = theInputOrientation;
+}
+
+//=======================================================================
+//function : ActualPointOnSurface
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnSurface) StepKinematics_PointOnSurfacePairValue::ActualPointOnSurface () const
+{
+  return myActualPointOnSurface;
+}
+
+//=======================================================================
+//function : SetActualPointOnSurface
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairValue::SetActualPointOnSurface (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface)
+{
+  myActualPointOnSurface = theActualPointOnSurface;
+}
+
+//=======================================================================
+//function : InputOrientation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SpatialRotation StepKinematics_PointOnSurfacePairValue::InputOrientation () const
+{
+  return myInputOrientation;
+}
+
+//=======================================================================
+//function : SetInputOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairValue::SetInputOrientation (const StepKinematics_SpatialRotation& theInputOrientation)
+{
+  myInputOrientation = theInputOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_PointOnSurfacePairValue.hxx b/src/StepKinematics/StepKinematics_PointOnSurfacePairValue.hxx
new file mode 100644 (file)
index 0000000..68a3396
--- /dev/null
@@ -0,0 +1,62 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PointOnSurfacePairValue_HeaderFile_
+#define _StepKinematics_PointOnSurfacePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnSurface.hxx>
+#include <StepKinematics_SpatialRotation.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PointOnSurfacePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity PointOnSurfacePairValue
+class StepKinematics_PointOnSurfacePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PointOnSurfacePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface,
+                           const StepKinematics_SpatialRotation& theInputOrientation);
+
+  //! Returns field ActualPointOnSurface
+  Standard_EXPORT Handle(StepGeom_PointOnSurface) ActualPointOnSurface() const;
+  //! Sets field ActualPointOnSurface
+  Standard_EXPORT void SetActualPointOnSurface (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface);
+
+  //! Returns field InputOrientation
+  Standard_EXPORT StepKinematics_SpatialRotation InputOrientation() const;
+  //! Sets field InputOrientation
+  Standard_EXPORT void SetInputOrientation (const StepKinematics_SpatialRotation& theInputOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PointOnSurfacePairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_PointOnSurface) myActualPointOnSurface;
+  StepKinematics_SpatialRotation myInputOrientation;
+
+};
+#endif // _StepKinematics_PointOnSurfacePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PointOnSurfacePairWithRange.cxx b/src/StepKinematics/StepKinematics_PointOnSurfacePairWithRange.cxx
new file mode 100644 (file)
index 0000000..86a983f
--- /dev/null
@@ -0,0 +1,309 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PointOnSurfacePairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PointOnSurfacePairWithRange, StepKinematics_PointOnSurfacePair)
+
+//=======================================================================
+//function : StepKinematics_PointOnSurfacePairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PointOnSurfacePairWithRange::StepKinematics_PointOnSurfacePairWithRange ()
+{
+  defLowerLimitYaw = Standard_False;
+  defUpperLimitYaw = Standard_False;
+  defLowerLimitPitch = Standard_False;
+  defUpperLimitPitch = Standard_False;
+  defLowerLimitRoll = Standard_False;
+  defUpperLimitRoll = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                       const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                       const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                       const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                       const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                       const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                       const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                       const Handle(StepGeom_Surface)& thePointOnSurfacePair_PairSurface,
+                                                       const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnPairSurface,
+                                                       const Standard_Boolean hasLowerLimitYaw,
+                                                       const Standard_Real theLowerLimitYaw,
+                                                       const Standard_Boolean hasUpperLimitYaw,
+                                                       const Standard_Real theUpperLimitYaw,
+                                                       const Standard_Boolean hasLowerLimitPitch,
+                                                       const Standard_Real theLowerLimitPitch,
+                                                       const Standard_Boolean hasUpperLimitPitch,
+                                                       const Standard_Real theUpperLimitPitch,
+                                                       const Standard_Boolean hasLowerLimitRoll,
+                                                       const Standard_Real theLowerLimitRoll,
+                                                       const Standard_Boolean hasUpperLimitRoll,
+                                                       const Standard_Real theUpperLimitRoll)
+{
+  StepKinematics_PointOnSurfacePair::Init(theRepresentationItem_Name,
+                                          theItemDefinedTransformation_Name,
+                                          hasItemDefinedTransformation_Description,
+                                          theItemDefinedTransformation_Description,
+                                          theItemDefinedTransformation_TransformItem1,
+                                          theItemDefinedTransformation_TransformItem2,
+                                          theKinematicPair_Joint,
+                                          thePointOnSurfacePair_PairSurface);
+
+  myRangeOnPairSurface = theRangeOnPairSurface;
+
+  defLowerLimitYaw = hasLowerLimitYaw;
+  if (defLowerLimitYaw) {
+    myLowerLimitYaw = theLowerLimitYaw;
+  }
+  else myLowerLimitYaw = 0;
+
+  defUpperLimitYaw = hasUpperLimitYaw;
+  if (defUpperLimitYaw) {
+    myUpperLimitYaw = theUpperLimitYaw;
+  }
+  else myUpperLimitYaw = 0;
+
+  defLowerLimitPitch = hasLowerLimitPitch;
+  if (defLowerLimitPitch) {
+    myLowerLimitPitch = theLowerLimitPitch;
+  }
+  else myLowerLimitPitch = 0;
+
+  defUpperLimitPitch = hasUpperLimitPitch;
+  if (defUpperLimitPitch) {
+    myUpperLimitPitch = theUpperLimitPitch;
+  }
+  else myUpperLimitPitch = 0;
+
+  defLowerLimitRoll = hasLowerLimitRoll;
+  if (defLowerLimitRoll) {
+    myLowerLimitRoll = theLowerLimitRoll;
+  }
+  else myLowerLimitRoll = 0;
+
+  defUpperLimitRoll = hasUpperLimitRoll;
+  if (defUpperLimitRoll) {
+    myUpperLimitRoll = theUpperLimitRoll;
+  }
+  else myUpperLimitRoll = 0;
+}
+
+//=======================================================================
+//function : RangeOnPairSurface
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_RectangularTrimmedSurface) StepKinematics_PointOnSurfacePairWithRange::RangeOnPairSurface () const
+{
+  return myRangeOnPairSurface;
+}
+
+//=======================================================================
+//function : SetRangeOnPairSurface
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetRangeOnPairSurface (const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnPairSurface)
+{
+  myRangeOnPairSurface = theRangeOnPairSurface;
+}
+
+//=======================================================================
+//function : LowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnSurfacePairWithRange::LowerLimitYaw () const
+{
+  return myLowerLimitYaw;
+}
+
+//=======================================================================
+//function : SetLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetLowerLimitYaw (const Standard_Real theLowerLimitYaw)
+{
+  myLowerLimitYaw = theLowerLimitYaw;
+}
+
+//=======================================================================
+//function : HasLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnSurfacePairWithRange::HasLowerLimitYaw () const
+{
+  return defLowerLimitYaw;
+}
+
+//=======================================================================
+//function : UpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnSurfacePairWithRange::UpperLimitYaw () const
+{
+  return myUpperLimitYaw;
+}
+
+//=======================================================================
+//function : SetUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetUpperLimitYaw (const Standard_Real theUpperLimitYaw)
+{
+  myUpperLimitYaw = theUpperLimitYaw;
+}
+
+//=======================================================================
+//function : HasUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnSurfacePairWithRange::HasUpperLimitYaw () const
+{
+  return defUpperLimitYaw;
+}
+
+//=======================================================================
+//function : LowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnSurfacePairWithRange::LowerLimitPitch () const
+{
+  return myLowerLimitPitch;
+}
+
+//=======================================================================
+//function : SetLowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetLowerLimitPitch (const Standard_Real theLowerLimitPitch)
+{
+  myLowerLimitPitch = theLowerLimitPitch;
+}
+
+//=======================================================================
+//function : HasLowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnSurfacePairWithRange::HasLowerLimitPitch () const
+{
+  return defLowerLimitPitch;
+}
+
+//=======================================================================
+//function : UpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnSurfacePairWithRange::UpperLimitPitch () const
+{
+  return myUpperLimitPitch;
+}
+
+//=======================================================================
+//function : SetUpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetUpperLimitPitch (const Standard_Real theUpperLimitPitch)
+{
+  myUpperLimitPitch = theUpperLimitPitch;
+}
+
+//=======================================================================
+//function : HasUpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnSurfacePairWithRange::HasUpperLimitPitch () const
+{
+  return defUpperLimitPitch;
+}
+
+//=======================================================================
+//function : LowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnSurfacePairWithRange::LowerLimitRoll () const
+{
+  return myLowerLimitRoll;
+}
+
+//=======================================================================
+//function : SetLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetLowerLimitRoll (const Standard_Real theLowerLimitRoll)
+{
+  myLowerLimitRoll = theLowerLimitRoll;
+}
+
+//=======================================================================
+//function : HasLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnSurfacePairWithRange::HasLowerLimitRoll () const
+{
+  return defLowerLimitRoll;
+}
+
+//=======================================================================
+//function : UpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PointOnSurfacePairWithRange::UpperLimitRoll () const
+{
+  return myUpperLimitRoll;
+}
+
+//=======================================================================
+//function : SetUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PointOnSurfacePairWithRange::SetUpperLimitRoll (const Standard_Real theUpperLimitRoll)
+{
+  myUpperLimitRoll = theUpperLimitRoll;
+}
+
+//=======================================================================
+//function : HasUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PointOnSurfacePairWithRange::HasUpperLimitRoll () const
+{
+  return defUpperLimitRoll;
+}
diff --git a/src/StepKinematics/StepKinematics_PointOnSurfacePairWithRange.hxx b/src/StepKinematics/StepKinematics_PointOnSurfacePairWithRange.hxx
new file mode 100644 (file)
index 0000000..390f0ba
--- /dev/null
@@ -0,0 +1,129 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PointOnSurfacePairWithRange_HeaderFile_
+#define _StepKinematics_PointOnSurfacePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PointOnSurfacePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+#include <StepGeom_RectangularTrimmedSurface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PointOnSurfacePairWithRange, StepKinematics_PointOnSurfacePair)
+
+//! Representation of STEP entity PointOnSurfacePairWithRange
+class StepKinematics_PointOnSurfacePairWithRange : public StepKinematics_PointOnSurfacePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PointOnSurfacePairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Surface)& thePointOnSurfacePair_PairSurface,
+                           const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnPairSurface,
+                           const Standard_Boolean hasLowerLimitYaw,
+                           const Standard_Real theLowerLimitYaw,
+                           const Standard_Boolean hasUpperLimitYaw,
+                           const Standard_Real theUpperLimitYaw,
+                           const Standard_Boolean hasLowerLimitPitch,
+                           const Standard_Real theLowerLimitPitch,
+                           const Standard_Boolean hasUpperLimitPitch,
+                           const Standard_Real theUpperLimitPitch,
+                           const Standard_Boolean hasLowerLimitRoll,
+                           const Standard_Real theLowerLimitRoll,
+                           const Standard_Boolean hasUpperLimitRoll,
+                           const Standard_Real theUpperLimitRoll);
+
+  //! Returns field RangeOnPairSurface
+  Standard_EXPORT Handle(StepGeom_RectangularTrimmedSurface) RangeOnPairSurface() const;
+  //! Sets field RangeOnPairSurface
+  Standard_EXPORT void SetRangeOnPairSurface (const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnPairSurface);
+
+  //! Returns field LowerLimitYaw
+  Standard_EXPORT Standard_Real LowerLimitYaw() const;
+  //! Sets field LowerLimitYaw
+  Standard_EXPORT void SetLowerLimitYaw (const Standard_Real theLowerLimitYaw);
+  //! Returns True if optional field LowerLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitYaw() const;
+
+  //! Returns field UpperLimitYaw
+  Standard_EXPORT Standard_Real UpperLimitYaw() const;
+  //! Sets field UpperLimitYaw
+  Standard_EXPORT void SetUpperLimitYaw (const Standard_Real theUpperLimitYaw);
+  //! Returns True if optional field UpperLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitYaw() const;
+
+  //! Returns field LowerLimitPitch
+  Standard_EXPORT Standard_Real LowerLimitPitch() const;
+  //! Sets field LowerLimitPitch
+  Standard_EXPORT void SetLowerLimitPitch (const Standard_Real theLowerLimitPitch);
+  //! Returns True if optional field LowerLimitPitch is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitPitch() const;
+
+  //! Returns field UpperLimitPitch
+  Standard_EXPORT Standard_Real UpperLimitPitch() const;
+  //! Sets field UpperLimitPitch
+  Standard_EXPORT void SetUpperLimitPitch (const Standard_Real theUpperLimitPitch);
+  //! Returns True if optional field UpperLimitPitch is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitPitch() const;
+
+  //! Returns field LowerLimitRoll
+  Standard_EXPORT Standard_Real LowerLimitRoll() const;
+  //! Sets field LowerLimitRoll
+  Standard_EXPORT void SetLowerLimitRoll (const Standard_Real theLowerLimitRoll);
+  //! Returns True if optional field LowerLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitRoll() const;
+
+  //! Returns field UpperLimitRoll
+  Standard_EXPORT Standard_Real UpperLimitRoll() const;
+  //! Sets field UpperLimitRoll
+  Standard_EXPORT void SetUpperLimitRoll (const Standard_Real theUpperLimitRoll);
+  //! Returns True if optional field UpperLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitRoll() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PointOnSurfacePairWithRange, StepKinematics_PointOnSurfacePair)
+
+private:
+  Handle(StepGeom_RectangularTrimmedSurface) myRangeOnPairSurface;
+  Standard_Real myLowerLimitYaw; //!< optional
+  Standard_Real myUpperLimitYaw; //!< optional
+  Standard_Real myLowerLimitPitch; //!< optional
+  Standard_Real myUpperLimitPitch; //!< optional
+  Standard_Real myLowerLimitRoll; //!< optional
+  Standard_Real myUpperLimitRoll; //!< optional
+  Standard_Boolean defLowerLimitYaw; //!< flag "is LowerLimitYaw defined"
+  Standard_Boolean defUpperLimitYaw; //!< flag "is UpperLimitYaw defined"
+  Standard_Boolean defLowerLimitPitch; //!< flag "is LowerLimitPitch defined"
+  Standard_Boolean defUpperLimitPitch; //!< flag "is UpperLimitPitch defined"
+  Standard_Boolean defLowerLimitRoll; //!< flag "is LowerLimitRoll defined"
+  Standard_Boolean defUpperLimitRoll; //!< flag "is UpperLimitRoll defined"
+
+};
+#endif // _StepKinematics_PointOnSurfacePairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PrismaticPair.cxx b/src/StepKinematics/StepKinematics_PrismaticPair.cxx
new file mode 100644 (file)
index 0000000..edfa8f1
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PrismaticPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PrismaticPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_PrismaticPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PrismaticPair::StepKinematics_PrismaticPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_PrismaticPair.hxx b/src/StepKinematics/StepKinematics_PrismaticPair.hxx
new file mode 100644 (file)
index 0000000..5fd5144
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PrismaticPair_HeaderFile_
+#define _StepKinematics_PrismaticPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PrismaticPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity PrismaticPair
+class StepKinematics_PrismaticPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PrismaticPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PrismaticPair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_PrismaticPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PrismaticPairValue.cxx b/src/StepKinematics/StepKinematics_PrismaticPairValue.cxx
new file mode 100644 (file)
index 0000000..c24d75b
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PrismaticPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PrismaticPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_PrismaticPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PrismaticPairValue::StepKinematics_PrismaticPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PrismaticPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                              const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                              const Standard_Real theActualTranslation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualTranslation = theActualTranslation;
+}
+
+//=======================================================================
+//function : ActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PrismaticPairValue::ActualTranslation () const
+{
+  return myActualTranslation;
+}
+
+//=======================================================================
+//function : SetActualTranslation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PrismaticPairValue::SetActualTranslation (const Standard_Real theActualTranslation)
+{
+  myActualTranslation = theActualTranslation;
+}
diff --git a/src/StepKinematics/StepKinematics_PrismaticPairValue.hxx b/src/StepKinematics/StepKinematics_PrismaticPairValue.hxx
new file mode 100644 (file)
index 0000000..758288a
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PrismaticPairValue_HeaderFile_
+#define _StepKinematics_PrismaticPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PrismaticPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity PrismaticPairValue
+class StepKinematics_PrismaticPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PrismaticPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualTranslation);
+
+  //! Returns field ActualTranslation
+  Standard_EXPORT Standard_Real ActualTranslation() const;
+  //! Sets field ActualTranslation
+  Standard_EXPORT void SetActualTranslation (const Standard_Real theActualTranslation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PrismaticPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualTranslation;
+
+};
+#endif // _StepKinematics_PrismaticPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_PrismaticPairWithRange.cxx b/src/StepKinematics/StepKinematics_PrismaticPairWithRange.cxx
new file mode 100644 (file)
index 0000000..b5b1f9a
--- /dev/null
@@ -0,0 +1,140 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_PrismaticPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_PrismaticPairWithRange, StepKinematics_PrismaticPair)
+
+//=======================================================================
+//function : StepKinematics_PrismaticPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_PrismaticPairWithRange::StepKinematics_PrismaticPairWithRange ()
+{
+  defLowerLimitActualTranslation = Standard_False;
+  defUpperLimitActualTranslation = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PrismaticPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                  const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                  const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                  const Standard_Boolean hasLowerLimitActualTranslation,
+                                                  const Standard_Real theLowerLimitActualTranslation,
+                                                  const Standard_Boolean hasUpperLimitActualTranslation,
+                                                  const Standard_Real theUpperLimitActualTranslation)
+{
+  StepKinematics_PrismaticPair::Init(theRepresentationItem_Name,
+                                     theItemDefinedTransformation_Name,
+                                     hasItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_TransformItem1,
+                                     theItemDefinedTransformation_TransformItem2,
+                                     theKinematicPair_Joint,
+                                     theLowOrderKinematicPair_TX,
+                                     theLowOrderKinematicPair_TY,
+                                     theLowOrderKinematicPair_TZ,
+                                     theLowOrderKinematicPair_RX,
+                                     theLowOrderKinematicPair_RY,
+                                     theLowOrderKinematicPair_RZ);
+
+  defLowerLimitActualTranslation = hasLowerLimitActualTranslation;
+  if (defLowerLimitActualTranslation) {
+    myLowerLimitActualTranslation = theLowerLimitActualTranslation;
+  }
+  else myLowerLimitActualTranslation = 0;
+
+  defUpperLimitActualTranslation = hasUpperLimitActualTranslation;
+  if (defUpperLimitActualTranslation) {
+    myUpperLimitActualTranslation = theUpperLimitActualTranslation;
+  }
+  else myUpperLimitActualTranslation = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PrismaticPairWithRange::LowerLimitActualTranslation () const
+{
+  return myLowerLimitActualTranslation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PrismaticPairWithRange::SetLowerLimitActualTranslation (const Standard_Real theLowerLimitActualTranslation)
+{
+  myLowerLimitActualTranslation = theLowerLimitActualTranslation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PrismaticPairWithRange::HasLowerLimitActualTranslation () const
+{
+  return defLowerLimitActualTranslation;
+}
+
+//=======================================================================
+//function : UpperLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_PrismaticPairWithRange::UpperLimitActualTranslation () const
+{
+  return myUpperLimitActualTranslation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_PrismaticPairWithRange::SetUpperLimitActualTranslation (const Standard_Real theUpperLimitActualTranslation)
+{
+  myUpperLimitActualTranslation = theUpperLimitActualTranslation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualTranslation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_PrismaticPairWithRange::HasUpperLimitActualTranslation () const
+{
+  return defUpperLimitActualTranslation;
+}
diff --git a/src/StepKinematics/StepKinematics_PrismaticPairWithRange.hxx b/src/StepKinematics/StepKinematics_PrismaticPairWithRange.hxx
new file mode 100644 (file)
index 0000000..11bb017
--- /dev/null
@@ -0,0 +1,81 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_PrismaticPairWithRange_HeaderFile_
+#define _StepKinematics_PrismaticPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PrismaticPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_PrismaticPairWithRange, StepKinematics_PrismaticPair)
+
+//! Representation of STEP entity PrismaticPairWithRange
+class StepKinematics_PrismaticPairWithRange : public StepKinematics_PrismaticPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_PrismaticPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitActualTranslation,
+                           const Standard_Real theLowerLimitActualTranslation,
+                           const Standard_Boolean hasUpperLimitActualTranslation,
+                           const Standard_Real theUpperLimitActualTranslation);
+
+  //! Returns field LowerLimitActualTranslation
+  Standard_EXPORT Standard_Real LowerLimitActualTranslation() const;
+  //! Sets field LowerLimitActualTranslation
+  Standard_EXPORT void SetLowerLimitActualTranslation (const Standard_Real theLowerLimitActualTranslation);
+  //! Returns True if optional field LowerLimitActualTranslation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualTranslation() const;
+
+  //! Returns field UpperLimitActualTranslation
+  Standard_EXPORT Standard_Real UpperLimitActualTranslation() const;
+  //! Sets field UpperLimitActualTranslation
+  Standard_EXPORT void SetUpperLimitActualTranslation (const Standard_Real theUpperLimitActualTranslation);
+  //! Returns True if optional field UpperLimitActualTranslation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualTranslation() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_PrismaticPairWithRange, StepKinematics_PrismaticPair)
+
+private:
+  Standard_Real myLowerLimitActualTranslation; //!< optional
+  Standard_Real myUpperLimitActualTranslation; //!< optional
+  Standard_Boolean defLowerLimitActualTranslation; //!< flag "is LowerLimitActualTranslation defined"
+  Standard_Boolean defUpperLimitActualTranslation; //!< flag "is UpperLimitActualTranslation defined"
+
+};
+#endif // _StepKinematics_PrismaticPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_ProductDefinitionKinematics.cxx b/src/StepKinematics/StepKinematics_ProductDefinitionKinematics.cxx
new file mode 100644 (file)
index 0000000..1f4ba6b
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ProductDefinitionKinematics.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ProductDefinitionKinematics, StepRepr_PropertyDefinition)
+
+//=======================================================================
+//function : StepKinematics_ProductDefinitionKinematics
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ProductDefinitionKinematics::StepKinematics_ProductDefinitionKinematics ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_ProductDefinitionKinematics.hxx b/src/StepKinematics/StepKinematics_ProductDefinitionKinematics.hxx
new file mode 100644 (file)
index 0000000..ed10781
--- /dev/null
@@ -0,0 +1,40 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ProductDefinitionKinematics_HeaderFile_
+#define _StepKinematics_ProductDefinitionKinematics_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_PropertyDefinition.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_CharacterizedDefinition.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ProductDefinitionKinematics, StepRepr_PropertyDefinition)
+
+//! Representation of STEP entity ProductDefinitionKinematics
+class StepKinematics_ProductDefinitionKinematics : public StepRepr_PropertyDefinition
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ProductDefinitionKinematics();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ProductDefinitionKinematics, StepRepr_PropertyDefinition)
+
+};
+#endif // _StepKinematics_ProductDefinitionKinematics_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_ProductDefinitionRelationshipKinematics.cxx b/src/StepKinematics/StepKinematics_ProductDefinitionRelationshipKinematics.cxx
new file mode 100644 (file)
index 0000000..25bf520
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ProductDefinitionRelationshipKinematics.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ProductDefinitionRelationshipKinematics, StepRepr_PropertyDefinition)
+
+//=======================================================================
+//function : StepKinematics_ProductDefinitionRelationshipKinematics
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ProductDefinitionRelationshipKinematics::StepKinematics_ProductDefinitionRelationshipKinematics ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_ProductDefinitionRelationshipKinematics.hxx b/src/StepKinematics/StepKinematics_ProductDefinitionRelationshipKinematics.hxx
new file mode 100644 (file)
index 0000000..1c4717e
--- /dev/null
@@ -0,0 +1,40 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ProductDefinitionRelationshipKinematics_HeaderFile_
+#define _StepKinematics_ProductDefinitionRelationshipKinematics_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepRepr_PropertyDefinition.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_CharacterizedDefinition.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ProductDefinitionRelationshipKinematics, StepRepr_PropertyDefinition)
+
+//! Representation of STEP entity ProductDefinitionRelationshipKinematics
+class StepKinematics_ProductDefinitionRelationshipKinematics : public StepRepr_PropertyDefinition
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ProductDefinitionRelationshipKinematics();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ProductDefinitionRelationshipKinematics, StepRepr_PropertyDefinition)
+
+};
+#endif // _StepKinematics_ProductDefinitionRelationshipKinematics_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RackAndPinionPair.cxx b/src/StepKinematics/StepKinematics_RackAndPinionPair.cxx
new file mode 100644 (file)
index 0000000..b713836
--- /dev/null
@@ -0,0 +1,73 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RackAndPinionPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RackAndPinionPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//=======================================================================
+//function : StepKinematics_RackAndPinionPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RackAndPinionPair::StepKinematics_RackAndPinionPair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                             const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                             const Standard_Boolean hasItemDefinedTransformation_Description,
+                                             const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                             const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                             const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                             const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                             const Standard_Real thePinionRadius)
+{
+  StepKinematics_LowOrderKinematicPairWithMotionCoupling::Init(theRepresentationItem_Name,
+                                                               theItemDefinedTransformation_Name,
+                                                               hasItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_TransformItem1,
+                                                               theItemDefinedTransformation_TransformItem2,
+                                                               theKinematicPair_Joint);
+
+  myPinionRadius = thePinionRadius;
+}
+
+//=======================================================================
+//function : PinionRadius
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RackAndPinionPair::PinionRadius () const
+{
+  return myPinionRadius;
+}
+
+//=======================================================================
+//function : SetPinionRadius
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPair::SetPinionRadius (const Standard_Real thePinionRadius)
+{
+  myPinionRadius = thePinionRadius;
+}
diff --git a/src/StepKinematics/StepKinematics_RackAndPinionPair.hxx b/src/StepKinematics/StepKinematics_RackAndPinionPair.hxx
new file mode 100644 (file)
index 0000000..35e0996
--- /dev/null
@@ -0,0 +1,60 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RackAndPinionPair_HeaderFile_
+#define _StepKinematics_RackAndPinionPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RackAndPinionPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//! Representation of STEP entity RackAndPinionPair
+class StepKinematics_RackAndPinionPair : public StepKinematics_LowOrderKinematicPairWithMotionCoupling
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RackAndPinionPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real thePinionRadius);
+
+  //! Returns field PinionRadius
+  Standard_EXPORT Standard_Real PinionRadius() const;
+  //! Sets field PinionRadius
+  Standard_EXPORT void SetPinionRadius (const Standard_Real thePinionRadius);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RackAndPinionPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+private:
+  Standard_Real myPinionRadius;
+
+};
+#endif // _StepKinematics_RackAndPinionPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RackAndPinionPairValue.cxx b/src/StepKinematics/StepKinematics_RackAndPinionPairValue.cxx
new file mode 100644 (file)
index 0000000..d3052f9
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RackAndPinionPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RackAndPinionPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_RackAndPinionPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RackAndPinionPairValue::StepKinematics_RackAndPinionPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                  const Standard_Real theActualDisplacement)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualDisplacement = theActualDisplacement;
+}
+
+//=======================================================================
+//function : ActualDisplacement
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RackAndPinionPairValue::ActualDisplacement () const
+{
+  return myActualDisplacement;
+}
+
+//=======================================================================
+//function : SetActualDisplacement
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPairValue::SetActualDisplacement (const Standard_Real theActualDisplacement)
+{
+  myActualDisplacement = theActualDisplacement;
+}
diff --git a/src/StepKinematics/StepKinematics_RackAndPinionPairValue.hxx b/src/StepKinematics/StepKinematics_RackAndPinionPairValue.hxx
new file mode 100644 (file)
index 0000000..695cace
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RackAndPinionPairValue_HeaderFile_
+#define _StepKinematics_RackAndPinionPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RackAndPinionPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity RackAndPinionPairValue
+class StepKinematics_RackAndPinionPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RackAndPinionPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualDisplacement);
+
+  //! Returns field ActualDisplacement
+  Standard_EXPORT Standard_Real ActualDisplacement() const;
+  //! Sets field ActualDisplacement
+  Standard_EXPORT void SetActualDisplacement (const Standard_Real theActualDisplacement);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RackAndPinionPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualDisplacement;
+
+};
+#endif // _StepKinematics_RackAndPinionPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RackAndPinionPairWithRange.cxx b/src/StepKinematics/StepKinematics_RackAndPinionPairWithRange.cxx
new file mode 100644 (file)
index 0000000..dba3069
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RackAndPinionPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RackAndPinionPairWithRange, StepKinematics_RackAndPinionPair)
+
+//=======================================================================
+//function : StepKinematics_RackAndPinionPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RackAndPinionPairWithRange::StepKinematics_RackAndPinionPairWithRange ()
+{
+  defLowerLimitRackDisplacement = Standard_False;
+  defUpperLimitRackDisplacement = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                      const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                      const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                      const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                      const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                      const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                      const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                      const Standard_Real theRackAndPinionPair_PinionRadius,
+                                                      const Standard_Boolean hasLowerLimitRackDisplacement,
+                                                      const Standard_Real theLowerLimitRackDisplacement,
+                                                      const Standard_Boolean hasUpperLimitRackDisplacement,
+                                                      const Standard_Real theUpperLimitRackDisplacement)
+{
+  StepKinematics_RackAndPinionPair::Init(theRepresentationItem_Name,
+                                         theItemDefinedTransformation_Name,
+                                         hasItemDefinedTransformation_Description,
+                                         theItemDefinedTransformation_Description,
+                                         theItemDefinedTransformation_TransformItem1,
+                                         theItemDefinedTransformation_TransformItem2,
+                                         theKinematicPair_Joint,
+                                         theRackAndPinionPair_PinionRadius);
+
+  defLowerLimitRackDisplacement = hasLowerLimitRackDisplacement;
+  if (defLowerLimitRackDisplacement) {
+    myLowerLimitRackDisplacement = theLowerLimitRackDisplacement;
+  }
+  else myLowerLimitRackDisplacement = 0;
+
+  defUpperLimitRackDisplacement = hasUpperLimitRackDisplacement;
+  if (defUpperLimitRackDisplacement) {
+    myUpperLimitRackDisplacement = theUpperLimitRackDisplacement;
+  }
+  else myUpperLimitRackDisplacement = 0;
+}
+
+//=======================================================================
+//function : LowerLimitRackDisplacement
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RackAndPinionPairWithRange::LowerLimitRackDisplacement () const
+{
+  return myLowerLimitRackDisplacement;
+}
+
+//=======================================================================
+//function : SetLowerLimitRackDisplacement
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPairWithRange::SetLowerLimitRackDisplacement (const Standard_Real theLowerLimitRackDisplacement)
+{
+  myLowerLimitRackDisplacement = theLowerLimitRackDisplacement;
+}
+
+//=======================================================================
+//function : HasLowerLimitRackDisplacement
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_RackAndPinionPairWithRange::HasLowerLimitRackDisplacement () const
+{
+  return defLowerLimitRackDisplacement;
+}
+
+//=======================================================================
+//function : UpperLimitRackDisplacement
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RackAndPinionPairWithRange::UpperLimitRackDisplacement () const
+{
+  return myUpperLimitRackDisplacement;
+}
+
+//=======================================================================
+//function : SetUpperLimitRackDisplacement
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RackAndPinionPairWithRange::SetUpperLimitRackDisplacement (const Standard_Real theUpperLimitRackDisplacement)
+{
+  myUpperLimitRackDisplacement = theUpperLimitRackDisplacement;
+}
+
+//=======================================================================
+//function : HasUpperLimitRackDisplacement
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_RackAndPinionPairWithRange::HasUpperLimitRackDisplacement () const
+{
+  return defUpperLimitRackDisplacement;
+}
diff --git a/src/StepKinematics/StepKinematics_RackAndPinionPairWithRange.hxx b/src/StepKinematics/StepKinematics_RackAndPinionPairWithRange.hxx
new file mode 100644 (file)
index 0000000..356a0ff
--- /dev/null
@@ -0,0 +1,76 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RackAndPinionPairWithRange_HeaderFile_
+#define _StepKinematics_RackAndPinionPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_RackAndPinionPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RackAndPinionPairWithRange, StepKinematics_RackAndPinionPair)
+
+//! Representation of STEP entity RackAndPinionPairWithRange
+class StepKinematics_RackAndPinionPairWithRange : public StepKinematics_RackAndPinionPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RackAndPinionPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real theRackAndPinionPair_PinionRadius,
+                           const Standard_Boolean hasLowerLimitRackDisplacement,
+                           const Standard_Real theLowerLimitRackDisplacement,
+                           const Standard_Boolean hasUpperLimitRackDisplacement,
+                           const Standard_Real theUpperLimitRackDisplacement);
+
+  //! Returns field LowerLimitRackDisplacement
+  Standard_EXPORT Standard_Real LowerLimitRackDisplacement() const;
+  //! Sets field LowerLimitRackDisplacement
+  Standard_EXPORT void SetLowerLimitRackDisplacement (const Standard_Real theLowerLimitRackDisplacement);
+  //! Returns True if optional field LowerLimitRackDisplacement is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitRackDisplacement() const;
+
+  //! Returns field UpperLimitRackDisplacement
+  Standard_EXPORT Standard_Real UpperLimitRackDisplacement() const;
+  //! Sets field UpperLimitRackDisplacement
+  Standard_EXPORT void SetUpperLimitRackDisplacement (const Standard_Real theUpperLimitRackDisplacement);
+  //! Returns True if optional field UpperLimitRackDisplacement is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitRackDisplacement() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RackAndPinionPairWithRange, StepKinematics_RackAndPinionPair)
+
+private:
+  Standard_Real myLowerLimitRackDisplacement; //!< optional
+  Standard_Real myUpperLimitRackDisplacement; //!< optional
+  Standard_Boolean defLowerLimitRackDisplacement; //!< flag "is LowerLimitRackDisplacement defined"
+  Standard_Boolean defUpperLimitRackDisplacement; //!< flag "is UpperLimitRackDisplacement defined"
+
+};
+#endif // _StepKinematics_RackAndPinionPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RevolutePair.cxx b/src/StepKinematics/StepKinematics_RevolutePair.cxx
new file mode 100644 (file)
index 0000000..9a094b2
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RevolutePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RevolutePair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_RevolutePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RevolutePair::StepKinematics_RevolutePair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_RevolutePair.hxx b/src/StepKinematics/StepKinematics_RevolutePair.hxx
new file mode 100644 (file)
index 0000000..58da2ee
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RevolutePair_HeaderFile_
+#define _StepKinematics_RevolutePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RevolutePair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity RevolutePair
+class StepKinematics_RevolutePair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RevolutePair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RevolutePair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_RevolutePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RevolutePairValue.cxx b/src/StepKinematics/StepKinematics_RevolutePairValue.cxx
new file mode 100644 (file)
index 0000000..5de002e
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RevolutePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RevolutePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_RevolutePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RevolutePairValue::StepKinematics_RevolutePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RevolutePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                             const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                             const Standard_Real theActualRotation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualRotation = theActualRotation;
+}
+
+//=======================================================================
+//function : ActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RevolutePairValue::ActualRotation () const
+{
+  return myActualRotation;
+}
+
+//=======================================================================
+//function : SetActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RevolutePairValue::SetActualRotation (const Standard_Real theActualRotation)
+{
+  myActualRotation = theActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_RevolutePairValue.hxx b/src/StepKinematics/StepKinematics_RevolutePairValue.hxx
new file mode 100644 (file)
index 0000000..eb261a1
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RevolutePairValue_HeaderFile_
+#define _StepKinematics_RevolutePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RevolutePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity RevolutePairValue
+class StepKinematics_RevolutePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RevolutePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualRotation);
+
+  //! Returns field ActualRotation
+  Standard_EXPORT Standard_Real ActualRotation() const;
+  //! Sets field ActualRotation
+  Standard_EXPORT void SetActualRotation (const Standard_Real theActualRotation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RevolutePairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualRotation;
+
+};
+#endif // _StepKinematics_RevolutePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RevolutePairWithRange.cxx b/src/StepKinematics/StepKinematics_RevolutePairWithRange.cxx
new file mode 100644 (file)
index 0000000..06a1075
--- /dev/null
@@ -0,0 +1,140 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RevolutePairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RevolutePairWithRange, StepKinematics_RevolutePair)
+
+//=======================================================================
+//function : StepKinematics_RevolutePairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RevolutePairWithRange::StepKinematics_RevolutePairWithRange ()
+{
+  defLowerLimitActualRotation = Standard_False;
+  defUpperLimitActualRotation = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RevolutePairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                 const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                 const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                 const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                 const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                 const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                 const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                 const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                 const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                 const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                 const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                 const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                 const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                 const Standard_Boolean hasLowerLimitActualRotation,
+                                                 const Standard_Real theLowerLimitActualRotation,
+                                                 const Standard_Boolean hasUpperLimitActualRotation,
+                                                 const Standard_Real theUpperLimitActualRotation)
+{
+  StepKinematics_RevolutePair::Init(theRepresentationItem_Name,
+                                    theItemDefinedTransformation_Name,
+                                    hasItemDefinedTransformation_Description,
+                                    theItemDefinedTransformation_Description,
+                                    theItemDefinedTransformation_TransformItem1,
+                                    theItemDefinedTransformation_TransformItem2,
+                                    theKinematicPair_Joint,
+                                    theLowOrderKinematicPair_TX,
+                                    theLowOrderKinematicPair_TY,
+                                    theLowOrderKinematicPair_TZ,
+                                    theLowOrderKinematicPair_RX,
+                                    theLowOrderKinematicPair_RY,
+                                    theLowOrderKinematicPair_RZ);
+
+  defLowerLimitActualRotation = hasLowerLimitActualRotation;
+  if (defLowerLimitActualRotation) {
+    myLowerLimitActualRotation = theLowerLimitActualRotation;
+  }
+  else myLowerLimitActualRotation = 0;
+
+  defUpperLimitActualRotation = hasUpperLimitActualRotation;
+  if (defUpperLimitActualRotation) {
+    myUpperLimitActualRotation = theUpperLimitActualRotation;
+  }
+  else myUpperLimitActualRotation = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RevolutePairWithRange::LowerLimitActualRotation () const
+{
+  return myLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RevolutePairWithRange::SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation)
+{
+  myLowerLimitActualRotation = theLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_RevolutePairWithRange::HasLowerLimitActualRotation () const
+{
+  return defLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RevolutePairWithRange::UpperLimitActualRotation () const
+{
+  return myUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RevolutePairWithRange::SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation)
+{
+  myUpperLimitActualRotation = theUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_RevolutePairWithRange::HasUpperLimitActualRotation () const
+{
+  return defUpperLimitActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_RevolutePairWithRange.hxx b/src/StepKinematics/StepKinematics_RevolutePairWithRange.hxx
new file mode 100644 (file)
index 0000000..93a2559
--- /dev/null
@@ -0,0 +1,81 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RevolutePairWithRange_HeaderFile_
+#define _StepKinematics_RevolutePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_RevolutePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RevolutePairWithRange, StepKinematics_RevolutePair)
+
+//! Representation of STEP entity RevolutePairWithRange
+class StepKinematics_RevolutePairWithRange : public StepKinematics_RevolutePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RevolutePairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitActualRotation,
+                           const Standard_Real theLowerLimitActualRotation,
+                           const Standard_Boolean hasUpperLimitActualRotation,
+                           const Standard_Real theUpperLimitActualRotation);
+
+  //! Returns field LowerLimitActualRotation
+  Standard_EXPORT Standard_Real LowerLimitActualRotation() const;
+  //! Sets field LowerLimitActualRotation
+  Standard_EXPORT void SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation);
+  //! Returns True if optional field LowerLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotation() const;
+
+  //! Returns field UpperLimitActualRotation
+  Standard_EXPORT Standard_Real UpperLimitActualRotation() const;
+  //! Sets field UpperLimitActualRotation
+  Standard_EXPORT void SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation);
+  //! Returns True if optional field UpperLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotation() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RevolutePairWithRange, StepKinematics_RevolutePair)
+
+private:
+  Standard_Real myLowerLimitActualRotation; //!< optional
+  Standard_Real myUpperLimitActualRotation; //!< optional
+  Standard_Boolean defLowerLimitActualRotation; //!< flag "is LowerLimitActualRotation defined"
+  Standard_Boolean defUpperLimitActualRotation; //!< flag "is UpperLimitActualRotation defined"
+
+};
+#endif // _StepKinematics_RevolutePairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RigidLinkRepresentation.cxx b/src/StepKinematics/StepKinematics_RigidLinkRepresentation.cxx
new file mode 100644 (file)
index 0000000..389ec98
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RigidLinkRepresentation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RigidLinkRepresentation, StepKinematics_KinematicLinkRepresentation)
+
+//=======================================================================
+//function : StepKinematics_RigidLinkRepresentation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RigidLinkRepresentation::StepKinematics_RigidLinkRepresentation ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_RigidLinkRepresentation.hxx b/src/StepKinematics/StepKinematics_RigidLinkRepresentation.hxx
new file mode 100644 (file)
index 0000000..abae00e
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:15 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RigidLinkRepresentation_HeaderFile_
+#define _StepKinematics_RigidLinkRepresentation_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_KinematicLinkRepresentation.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_RepresentationContext.hxx>
+#include <StepKinematics_KinematicLink.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RigidLinkRepresentation, StepKinematics_KinematicLinkRepresentation)
+
+//! Representation of STEP entity RigidLinkRepresentation
+class StepKinematics_RigidLinkRepresentation : public StepKinematics_KinematicLinkRepresentation
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RigidLinkRepresentation();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RigidLinkRepresentation, StepKinematics_KinematicLinkRepresentation)
+
+};
+#endif // _StepKinematics_RigidLinkRepresentation_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RigidPlacement.cxx b/src/StepKinematics/StepKinematics_RigidPlacement.cxx
new file mode 100644 (file)
index 0000000..7e55d99
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RigidPlacement.hxx>
+#include <StepGeom_Axis2Placement3d.hxx>
+#include <StepKinematics_SuParameters.hxx>
+
+//=======================================================================
+//function : StepKinematics_RigidPlacement
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RigidPlacement::StepKinematics_RigidPlacement ()
+{
+}
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepKinematics_RigidPlacement::CaseNum (const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepGeom_Axis2Placement3d))) return 1;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_SuParameters))) return 2;
+  return 0;
+}
+
+//=======================================================================
+//function : Axis2Placement3d
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Axis2Placement3d) StepKinematics_RigidPlacement::Axis2Placement3d () const
+{
+  return Handle(StepGeom_Axis2Placement3d)::DownCast(Value());
+}
+
+//=======================================================================
+//function : SuParameters
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_SuParameters) StepKinematics_RigidPlacement::SuParameters () const
+{
+  return Handle(StepKinematics_SuParameters)::DownCast(Value());
+}
diff --git a/src/StepKinematics/StepKinematics_RigidPlacement.hxx b/src/StepKinematics/StepKinematics_RigidPlacement.hxx
new file mode 100644 (file)
index 0000000..59e41ac
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RigidPlacement_HeaderFile
+#define _StepKinematics_RigidPlacement_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+
+class Standard_Transient;
+class StepGeom_Axis2Placement3d;
+class StepKinematics_SuParameters;
+
+//! Representation of STEP SELECT type RigidPlacement
+class StepKinematics_RigidPlacement : public StepData_SelectType
+{
+
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT StepKinematics_RigidPlacement();
+
+  //! Recognizes a kind of RigidPlacement select type
+  //! -- 1 -> Axis2Placement3d
+  //! -- 2 -> SuParameters
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
+
+  //! Returns Value as Axis2Placement3d (or Null if another type)
+  Standard_EXPORT Handle(StepGeom_Axis2Placement3d) Axis2Placement3d() const;
+
+  //! Returns Value as SuParameters (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_SuParameters) SuParameters() const;
+
+};
+#endif // _StepKinematics_RigidPlacement_HeaderFile
diff --git a/src/StepKinematics/StepKinematics_RollingCurvePair.cxx b/src/StepKinematics/StepKinematics_RollingCurvePair.cxx
new file mode 100644 (file)
index 0000000..59fe063
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RollingCurvePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RollingCurvePair, StepKinematics_PlanarCurvePair)
+
+//=======================================================================
+//function : StepKinematics_RollingCurvePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RollingCurvePair::StepKinematics_RollingCurvePair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_RollingCurvePair.hxx b/src/StepKinematics/StepKinematics_RollingCurvePair.hxx
new file mode 100644 (file)
index 0000000..e839cfe
--- /dev/null
@@ -0,0 +1,43 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RollingCurvePair_HeaderFile_
+#define _StepKinematics_RollingCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RollingCurvePair, StepKinematics_PlanarCurvePair)
+
+//! Representation of STEP entity RollingCurvePair
+class StepKinematics_RollingCurvePair : public StepKinematics_PlanarCurvePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RollingCurvePair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RollingCurvePair, StepKinematics_PlanarCurvePair)
+
+};
+#endif // _StepKinematics_RollingCurvePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RollingCurvePairValue.cxx b/src/StepKinematics/StepKinematics_RollingCurvePairValue.cxx
new file mode 100644 (file)
index 0000000..d746da6
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RollingCurvePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RollingCurvePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_RollingCurvePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RollingCurvePairValue::StepKinematics_RollingCurvePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RollingCurvePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                 const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                 const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPointOnCurve1 = theActualPointOnCurve1;
+}
+
+//=======================================================================
+//function : ActualPointOnCurve1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnCurve) StepKinematics_RollingCurvePairValue::ActualPointOnCurve1 () const
+{
+  return myActualPointOnCurve1;
+}
+
+//=======================================================================
+//function : SetActualPointOnCurve1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RollingCurvePairValue::SetActualPointOnCurve1 (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1)
+{
+  myActualPointOnCurve1 = theActualPointOnCurve1;
+}
diff --git a/src/StepKinematics/StepKinematics_RollingCurvePairValue.hxx b/src/StepKinematics/StepKinematics_RollingCurvePairValue.hxx
new file mode 100644 (file)
index 0000000..c00671d
--- /dev/null
@@ -0,0 +1,54 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RollingCurvePairValue_HeaderFile_
+#define _StepKinematics_RollingCurvePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnCurve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RollingCurvePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity RollingCurvePairValue
+class StepKinematics_RollingCurvePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RollingCurvePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1);
+
+  //! Returns field ActualPointOnCurve1
+  Standard_EXPORT Handle(StepGeom_PointOnCurve) ActualPointOnCurve1() const;
+  //! Sets field ActualPointOnCurve1
+  Standard_EXPORT void SetActualPointOnCurve1 (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RollingCurvePairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_PointOnCurve) myActualPointOnCurve1;
+
+};
+#endif // _StepKinematics_RollingCurvePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RollingSurfacePair.cxx b/src/StepKinematics/StepKinematics_RollingSurfacePair.cxx
new file mode 100644 (file)
index 0000000..67e1cd5
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RollingSurfacePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RollingSurfacePair, StepKinematics_SurfacePair)
+
+//=======================================================================
+//function : StepKinematics_RollingSurfacePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RollingSurfacePair::StepKinematics_RollingSurfacePair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_RollingSurfacePair.hxx b/src/StepKinematics/StepKinematics_RollingSurfacePair.hxx
new file mode 100644 (file)
index 0000000..6a389c7
--- /dev/null
@@ -0,0 +1,43 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RollingSurfacePair_HeaderFile_
+#define _StepKinematics_RollingSurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_SurfacePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RollingSurfacePair, StepKinematics_SurfacePair)
+
+//! Representation of STEP entity RollingSurfacePair
+class StepKinematics_RollingSurfacePair : public StepKinematics_SurfacePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RollingSurfacePair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RollingSurfacePair, StepKinematics_SurfacePair)
+
+};
+#endif // _StepKinematics_RollingSurfacePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RollingSurfacePairValue.cxx b/src/StepKinematics/StepKinematics_RollingSurfacePairValue.cxx
new file mode 100644 (file)
index 0000000..decf3ef
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RollingSurfacePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RollingSurfacePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_RollingSurfacePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RollingSurfacePairValue::StepKinematics_RollingSurfacePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RollingSurfacePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                   const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                   const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface,
+                                                   const Standard_Real theActualRotation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPointOnSurface = theActualPointOnSurface;
+
+  myActualRotation = theActualRotation;
+}
+
+//=======================================================================
+//function : ActualPointOnSurface
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnSurface) StepKinematics_RollingSurfacePairValue::ActualPointOnSurface () const
+{
+  return myActualPointOnSurface;
+}
+
+//=======================================================================
+//function : SetActualPointOnSurface
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RollingSurfacePairValue::SetActualPointOnSurface (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface)
+{
+  myActualPointOnSurface = theActualPointOnSurface;
+}
+
+//=======================================================================
+//function : ActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RollingSurfacePairValue::ActualRotation () const
+{
+  return myActualRotation;
+}
+
+//=======================================================================
+//function : SetActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RollingSurfacePairValue::SetActualRotation (const Standard_Real theActualRotation)
+{
+  myActualRotation = theActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_RollingSurfacePairValue.hxx b/src/StepKinematics/StepKinematics_RollingSurfacePairValue.hxx
new file mode 100644 (file)
index 0000000..ab7ef66
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RollingSurfacePairValue_HeaderFile_
+#define _StepKinematics_RollingSurfacePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnSurface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RollingSurfacePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity RollingSurfacePairValue
+class StepKinematics_RollingSurfacePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RollingSurfacePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface,
+                           const Standard_Real theActualRotation);
+
+  //! Returns field ActualPointOnSurface
+  Standard_EXPORT Handle(StepGeom_PointOnSurface) ActualPointOnSurface() const;
+  //! Sets field ActualPointOnSurface
+  Standard_EXPORT void SetActualPointOnSurface (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface);
+
+  //! Returns field ActualRotation
+  Standard_EXPORT Standard_Real ActualRotation() const;
+  //! Sets field ActualRotation
+  Standard_EXPORT void SetActualRotation (const Standard_Real theActualRotation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RollingSurfacePairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_PointOnSurface) myActualPointOnSurface;
+  Standard_Real myActualRotation;
+
+};
+#endif // _StepKinematics_RollingSurfacePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_RotationAboutDirection.cxx b/src/StepKinematics/StepKinematics_RotationAboutDirection.cxx
new file mode 100644 (file)
index 0000000..da5e1ff
--- /dev/null
@@ -0,0 +1,84 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_RotationAboutDirection.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_RotationAboutDirection, StepGeom_GeometricRepresentationItem)
+
+//=======================================================================
+//function : StepKinematics_RotationAboutDirection
+//purpose  : 
+//=======================================================================
+
+StepKinematics_RotationAboutDirection::StepKinematics_RotationAboutDirection ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RotationAboutDirection::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(StepGeom_Direction)& theDirectionOfAxis,
+                                                  const Standard_Real theRotationAngle)
+{
+  StepGeom_GeometricRepresentationItem::Init(theRepresentationItem_Name);
+
+  myDirectionOfAxis = theDirectionOfAxis;
+
+  myRotationAngle = theRotationAngle;
+}
+
+//=======================================================================
+//function : DirectionOfAxis
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Direction) StepKinematics_RotationAboutDirection::DirectionOfAxis () const
+{
+  return myDirectionOfAxis;
+}
+
+//=======================================================================
+//function : SetDirectionOfAxis
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RotationAboutDirection::SetDirectionOfAxis (const Handle(StepGeom_Direction)& theDirectionOfAxis)
+{
+  myDirectionOfAxis = theDirectionOfAxis;
+}
+
+//=======================================================================
+//function : RotationAngle
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_RotationAboutDirection::RotationAngle () const
+{
+  return myRotationAngle;
+}
+
+//=======================================================================
+//function : SetRotationAngle
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_RotationAboutDirection::SetRotationAngle (const Standard_Real theRotationAngle)
+{
+  myRotationAngle = theRotationAngle;
+}
diff --git a/src/StepKinematics/StepKinematics_RotationAboutDirection.hxx b/src/StepKinematics/StepKinematics_RotationAboutDirection.hxx
new file mode 100644 (file)
index 0000000..54e8240
--- /dev/null
@@ -0,0 +1,59 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_RotationAboutDirection_HeaderFile_
+#define _StepKinematics_RotationAboutDirection_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepGeom_GeometricRepresentationItem.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepGeom_Direction.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_RotationAboutDirection, StepGeom_GeometricRepresentationItem)
+
+//! Representation of STEP entity RotationAboutDirection
+class StepKinematics_RotationAboutDirection : public StepGeom_GeometricRepresentationItem
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_RotationAboutDirection();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepGeom_Direction)& theDirectionOfAxis,
+                           const Standard_Real theRotationAngle);
+
+  //! Returns field DirectionOfAxis
+  Standard_EXPORT Handle(StepGeom_Direction) DirectionOfAxis() const;
+  //! Sets field DirectionOfAxis
+  Standard_EXPORT void SetDirectionOfAxis (const Handle(StepGeom_Direction)& theDirectionOfAxis);
+
+  //! Returns field RotationAngle
+  Standard_EXPORT Standard_Real RotationAngle() const;
+  //! Sets field RotationAngle
+  Standard_EXPORT void SetRotationAngle (const Standard_Real theRotationAngle);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_RotationAboutDirection, StepGeom_GeometricRepresentationItem)
+
+private:
+  Handle(StepGeom_Direction) myDirectionOfAxis;
+  Standard_Real myRotationAngle;
+
+};
+#endif // _StepKinematics_RotationAboutDirection_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_ScrewPair.cxx b/src/StepKinematics/StepKinematics_ScrewPair.cxx
new file mode 100644 (file)
index 0000000..9ba571d
--- /dev/null
@@ -0,0 +1,73 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ScrewPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ScrewPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//=======================================================================
+//function : StepKinematics_ScrewPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ScrewPair::StepKinematics_ScrewPair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                     const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                     const Standard_Boolean hasItemDefinedTransformation_Description,
+                                     const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                     const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                     const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                     const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                     const Standard_Real thePitch)
+{
+  StepKinematics_LowOrderKinematicPairWithMotionCoupling::Init(theRepresentationItem_Name,
+                                                               theItemDefinedTransformation_Name,
+                                                               hasItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_Description,
+                                                               theItemDefinedTransformation_TransformItem1,
+                                                               theItemDefinedTransformation_TransformItem2,
+                                                               theKinematicPair_Joint);
+
+  myPitch = thePitch;
+}
+
+//=======================================================================
+//function : Pitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_ScrewPair::Pitch () const
+{
+  return myPitch;
+}
+
+//=======================================================================
+//function : SetPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPair::SetPitch (const Standard_Real thePitch)
+{
+  myPitch = thePitch;
+}
diff --git a/src/StepKinematics/StepKinematics_ScrewPair.hxx b/src/StepKinematics/StepKinematics_ScrewPair.hxx
new file mode 100644 (file)
index 0000000..ddc6be1
--- /dev/null
@@ -0,0 +1,60 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ScrewPair_HeaderFile_
+#define _StepKinematics_ScrewPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPairWithMotionCoupling.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ScrewPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+//! Representation of STEP entity ScrewPair
+class StepKinematics_ScrewPair : public StepKinematics_LowOrderKinematicPairWithMotionCoupling
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ScrewPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real thePitch);
+
+  //! Returns field Pitch
+  Standard_EXPORT Standard_Real Pitch() const;
+  //! Sets field Pitch
+  Standard_EXPORT void SetPitch (const Standard_Real thePitch);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ScrewPair, StepKinematics_LowOrderKinematicPairWithMotionCoupling)
+
+private:
+  Standard_Real myPitch;
+
+};
+#endif // _StepKinematics_ScrewPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_ScrewPairValue.cxx b/src/StepKinematics/StepKinematics_ScrewPairValue.cxx
new file mode 100644 (file)
index 0000000..d5c69ed
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ScrewPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ScrewPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_ScrewPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ScrewPairValue::StepKinematics_ScrewPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                          const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                          const Standard_Real theActualRotation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualRotation = theActualRotation;
+}
+
+//=======================================================================
+//function : ActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_ScrewPairValue::ActualRotation () const
+{
+  return myActualRotation;
+}
+
+//=======================================================================
+//function : SetActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPairValue::SetActualRotation (const Standard_Real theActualRotation)
+{
+  myActualRotation = theActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_ScrewPairValue.hxx b/src/StepKinematics/StepKinematics_ScrewPairValue.hxx
new file mode 100644 (file)
index 0000000..eb90500
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ScrewPairValue_HeaderFile_
+#define _StepKinematics_ScrewPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ScrewPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity ScrewPairValue
+class StepKinematics_ScrewPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ScrewPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theActualRotation);
+
+  //! Returns field ActualRotation
+  Standard_EXPORT Standard_Real ActualRotation() const;
+  //! Sets field ActualRotation
+  Standard_EXPORT void SetActualRotation (const Standard_Real theActualRotation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ScrewPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myActualRotation;
+
+};
+#endif // _StepKinematics_ScrewPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_ScrewPairWithRange.cxx b/src/StepKinematics/StepKinematics_ScrewPairWithRange.cxx
new file mode 100644 (file)
index 0000000..bc5e963
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_ScrewPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_ScrewPairWithRange, StepKinematics_ScrewPair)
+
+//=======================================================================
+//function : StepKinematics_ScrewPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_ScrewPairWithRange::StepKinematics_ScrewPairWithRange ()
+{
+  defLowerLimitActualRotation = Standard_False;
+  defUpperLimitActualRotation = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                              const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                              const Standard_Boolean hasItemDefinedTransformation_Description,
+                                              const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                              const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                              const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                              const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                              const Standard_Real theScrewPair_Pitch,
+                                              const Standard_Boolean hasLowerLimitActualRotation,
+                                              const Standard_Real theLowerLimitActualRotation,
+                                              const Standard_Boolean hasUpperLimitActualRotation,
+                                              const Standard_Real theUpperLimitActualRotation)
+{
+  StepKinematics_ScrewPair::Init(theRepresentationItem_Name,
+                                 theItemDefinedTransformation_Name,
+                                 hasItemDefinedTransformation_Description,
+                                 theItemDefinedTransformation_Description,
+                                 theItemDefinedTransformation_TransformItem1,
+                                 theItemDefinedTransformation_TransformItem2,
+                                 theKinematicPair_Joint,
+                                 theScrewPair_Pitch);
+
+  defLowerLimitActualRotation = hasLowerLimitActualRotation;
+  if (defLowerLimitActualRotation) {
+    myLowerLimitActualRotation = theLowerLimitActualRotation;
+  }
+  else myLowerLimitActualRotation = 0;
+
+  defUpperLimitActualRotation = hasUpperLimitActualRotation;
+  if (defUpperLimitActualRotation) {
+    myUpperLimitActualRotation = theUpperLimitActualRotation;
+  }
+  else myUpperLimitActualRotation = 0;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_ScrewPairWithRange::LowerLimitActualRotation () const
+{
+  return myLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPairWithRange::SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation)
+{
+  myLowerLimitActualRotation = theLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ScrewPairWithRange::HasLowerLimitActualRotation () const
+{
+  return defLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_ScrewPairWithRange::UpperLimitActualRotation () const
+{
+  return myUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_ScrewPairWithRange::SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation)
+{
+  myUpperLimitActualRotation = theUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_ScrewPairWithRange::HasUpperLimitActualRotation () const
+{
+  return defUpperLimitActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_ScrewPairWithRange.hxx b/src/StepKinematics/StepKinematics_ScrewPairWithRange.hxx
new file mode 100644 (file)
index 0000000..da227fa
--- /dev/null
@@ -0,0 +1,76 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_ScrewPairWithRange_HeaderFile_
+#define _StepKinematics_ScrewPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_ScrewPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_ScrewPairWithRange, StepKinematics_ScrewPair)
+
+//! Representation of STEP entity ScrewPairWithRange
+class StepKinematics_ScrewPairWithRange : public StepKinematics_ScrewPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_ScrewPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Real theScrewPair_Pitch,
+                           const Standard_Boolean hasLowerLimitActualRotation,
+                           const Standard_Real theLowerLimitActualRotation,
+                           const Standard_Boolean hasUpperLimitActualRotation,
+                           const Standard_Real theUpperLimitActualRotation);
+
+  //! Returns field LowerLimitActualRotation
+  Standard_EXPORT Standard_Real LowerLimitActualRotation() const;
+  //! Sets field LowerLimitActualRotation
+  Standard_EXPORT void SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation);
+  //! Returns True if optional field LowerLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotation() const;
+
+  //! Returns field UpperLimitActualRotation
+  Standard_EXPORT Standard_Real UpperLimitActualRotation() const;
+  //! Sets field UpperLimitActualRotation
+  Standard_EXPORT void SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation);
+  //! Returns True if optional field UpperLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotation() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_ScrewPairWithRange, StepKinematics_ScrewPair)
+
+private:
+  Standard_Real myLowerLimitActualRotation; //!< optional
+  Standard_Real myUpperLimitActualRotation; //!< optional
+  Standard_Boolean defLowerLimitActualRotation; //!< flag "is LowerLimitActualRotation defined"
+  Standard_Boolean defUpperLimitActualRotation; //!< flag "is UpperLimitActualRotation defined"
+
+};
+#endif // _StepKinematics_ScrewPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SlidingCurvePair.cxx b/src/StepKinematics/StepKinematics_SlidingCurvePair.cxx
new file mode 100644 (file)
index 0000000..8eb0012
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SlidingCurvePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SlidingCurvePair, StepKinematics_PlanarCurvePair)
+
+//=======================================================================
+//function : StepKinematics_SlidingCurvePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SlidingCurvePair::StepKinematics_SlidingCurvePair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_SlidingCurvePair.hxx b/src/StepKinematics/StepKinematics_SlidingCurvePair.hxx
new file mode 100644 (file)
index 0000000..93d6112
--- /dev/null
@@ -0,0 +1,43 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SlidingCurvePair_HeaderFile_
+#define _StepKinematics_SlidingCurvePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PlanarCurvePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Curve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SlidingCurvePair, StepKinematics_PlanarCurvePair)
+
+//! Representation of STEP entity SlidingCurvePair
+class StepKinematics_SlidingCurvePair : public StepKinematics_PlanarCurvePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SlidingCurvePair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SlidingCurvePair, StepKinematics_PlanarCurvePair)
+
+};
+#endif // _StepKinematics_SlidingCurvePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SlidingCurvePairValue.cxx b/src/StepKinematics/StepKinematics_SlidingCurvePairValue.cxx
new file mode 100644 (file)
index 0000000..f39dfd3
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SlidingCurvePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SlidingCurvePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_SlidingCurvePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SlidingCurvePairValue::StepKinematics_SlidingCurvePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingCurvePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                 const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                 const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1,
+                                                 const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve2)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPointOnCurve1 = theActualPointOnCurve1;
+
+  myActualPointOnCurve2 = theActualPointOnCurve2;
+}
+
+//=======================================================================
+//function : ActualPointOnCurve1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnCurve) StepKinematics_SlidingCurvePairValue::ActualPointOnCurve1 () const
+{
+  return myActualPointOnCurve1;
+}
+
+//=======================================================================
+//function : SetActualPointOnCurve1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingCurvePairValue::SetActualPointOnCurve1 (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1)
+{
+  myActualPointOnCurve1 = theActualPointOnCurve1;
+}
+
+//=======================================================================
+//function : ActualPointOnCurve2
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnCurve) StepKinematics_SlidingCurvePairValue::ActualPointOnCurve2 () const
+{
+  return myActualPointOnCurve2;
+}
+
+//=======================================================================
+//function : SetActualPointOnCurve2
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingCurvePairValue::SetActualPointOnCurve2 (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve2)
+{
+  myActualPointOnCurve2 = theActualPointOnCurve2;
+}
diff --git a/src/StepKinematics/StepKinematics_SlidingCurvePairValue.hxx b/src/StepKinematics/StepKinematics_SlidingCurvePairValue.hxx
new file mode 100644 (file)
index 0000000..1ef1356
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SlidingCurvePairValue_HeaderFile_
+#define _StepKinematics_SlidingCurvePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnCurve.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SlidingCurvePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity SlidingCurvePairValue
+class StepKinematics_SlidingCurvePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SlidingCurvePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1,
+                           const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve2);
+
+  //! Returns field ActualPointOnCurve1
+  Standard_EXPORT Handle(StepGeom_PointOnCurve) ActualPointOnCurve1() const;
+  //! Sets field ActualPointOnCurve1
+  Standard_EXPORT void SetActualPointOnCurve1 (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve1);
+
+  //! Returns field ActualPointOnCurve2
+  Standard_EXPORT Handle(StepGeom_PointOnCurve) ActualPointOnCurve2() const;
+  //! Sets field ActualPointOnCurve2
+  Standard_EXPORT void SetActualPointOnCurve2 (const Handle(StepGeom_PointOnCurve)& theActualPointOnCurve2);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SlidingCurvePairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_PointOnCurve) myActualPointOnCurve1;
+  Handle(StepGeom_PointOnCurve) myActualPointOnCurve2;
+
+};
+#endif // _StepKinematics_SlidingCurvePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SlidingSurfacePair.cxx b/src/StepKinematics/StepKinematics_SlidingSurfacePair.cxx
new file mode 100644 (file)
index 0000000..b0e803a
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SlidingSurfacePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SlidingSurfacePair, StepKinematics_SurfacePair)
+
+//=======================================================================
+//function : StepKinematics_SlidingSurfacePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SlidingSurfacePair::StepKinematics_SlidingSurfacePair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_SlidingSurfacePair.hxx b/src/StepKinematics/StepKinematics_SlidingSurfacePair.hxx
new file mode 100644 (file)
index 0000000..4130201
--- /dev/null
@@ -0,0 +1,43 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SlidingSurfacePair_HeaderFile_
+#define _StepKinematics_SlidingSurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_SurfacePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SlidingSurfacePair, StepKinematics_SurfacePair)
+
+//! Representation of STEP entity SlidingSurfacePair
+class StepKinematics_SlidingSurfacePair : public StepKinematics_SurfacePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SlidingSurfacePair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SlidingSurfacePair, StepKinematics_SurfacePair)
+
+};
+#endif // _StepKinematics_SlidingSurfacePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SlidingSurfacePairValue.cxx b/src/StepKinematics/StepKinematics_SlidingSurfacePairValue.cxx
new file mode 100644 (file)
index 0000000..b889830
--- /dev/null
@@ -0,0 +1,109 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SlidingSurfacePairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SlidingSurfacePairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_SlidingSurfacePairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SlidingSurfacePairValue::StepKinematics_SlidingSurfacePairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingSurfacePairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                   const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                   const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface1,
+                                                   const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface2,
+                                                   const Standard_Real theActualRotation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPointOnSurface1 = theActualPointOnSurface1;
+
+  myActualPointOnSurface2 = theActualPointOnSurface2;
+
+  myActualRotation = theActualRotation;
+}
+
+//=======================================================================
+//function : ActualPointOnSurface1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnSurface) StepKinematics_SlidingSurfacePairValue::ActualPointOnSurface1 () const
+{
+  return myActualPointOnSurface1;
+}
+
+//=======================================================================
+//function : SetActualPointOnSurface1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingSurfacePairValue::SetActualPointOnSurface1 (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface1)
+{
+  myActualPointOnSurface1 = theActualPointOnSurface1;
+}
+
+//=======================================================================
+//function : ActualPointOnSurface2
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_PointOnSurface) StepKinematics_SlidingSurfacePairValue::ActualPointOnSurface2 () const
+{
+  return myActualPointOnSurface2;
+}
+
+//=======================================================================
+//function : SetActualPointOnSurface2
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingSurfacePairValue::SetActualPointOnSurface2 (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface2)
+{
+  myActualPointOnSurface2 = theActualPointOnSurface2;
+}
+
+//=======================================================================
+//function : ActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SlidingSurfacePairValue::ActualRotation () const
+{
+  return myActualRotation;
+}
+
+//=======================================================================
+//function : SetActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SlidingSurfacePairValue::SetActualRotation (const Standard_Real theActualRotation)
+{
+  myActualRotation = theActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_SlidingSurfacePairValue.hxx b/src/StepKinematics/StepKinematics_SlidingSurfacePairValue.hxx
new file mode 100644 (file)
index 0000000..9c54281
--- /dev/null
@@ -0,0 +1,68 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SlidingSurfacePairValue_HeaderFile_
+#define _StepKinematics_SlidingSurfacePairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_PointOnSurface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SlidingSurfacePairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity SlidingSurfacePairValue
+class StepKinematics_SlidingSurfacePairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SlidingSurfacePairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface1,
+                           const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface2,
+                           const Standard_Real theActualRotation);
+
+  //! Returns field ActualPointOnSurface1
+  Standard_EXPORT Handle(StepGeom_PointOnSurface) ActualPointOnSurface1() const;
+  //! Sets field ActualPointOnSurface1
+  Standard_EXPORT void SetActualPointOnSurface1 (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface1);
+
+  //! Returns field ActualPointOnSurface2
+  Standard_EXPORT Handle(StepGeom_PointOnSurface) ActualPointOnSurface2() const;
+  //! Sets field ActualPointOnSurface2
+  Standard_EXPORT void SetActualPointOnSurface2 (const Handle(StepGeom_PointOnSurface)& theActualPointOnSurface2);
+
+  //! Returns field ActualRotation
+  Standard_EXPORT Standard_Real ActualRotation() const;
+  //! Sets field ActualRotation
+  Standard_EXPORT void SetActualRotation (const Standard_Real theActualRotation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SlidingSurfacePairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_PointOnSurface) myActualPointOnSurface1;
+  Handle(StepGeom_PointOnSurface) myActualPointOnSurface2;
+  Standard_Real myActualRotation;
+
+};
+#endif // _StepKinematics_SlidingSurfacePairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SpatialRotation.cxx b/src/StepKinematics/StepKinematics_SpatialRotation.cxx
new file mode 100644 (file)
index 0000000..3ea600c
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SpatialRotation.hxx>
+#include <StepKinematics_RotationAboutDirection.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+
+//=======================================================================
+//function : StepKinematics_SpatialRotation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SpatialRotation::StepKinematics_SpatialRotation ()
+{
+}
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepKinematics_SpatialRotation::CaseNum (const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_RotationAboutDirection))) return 1;
+  if (ent->IsKind(STANDARD_TYPE(TColStd_HArray1OfReal))) return 2;
+  return 0;
+}
+
+//=======================================================================
+//function : RotationAboutDirection
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_RotationAboutDirection) StepKinematics_SpatialRotation::RotationAboutDirection () const
+{
+  return Handle(StepKinematics_RotationAboutDirection)::DownCast(Value());
+}
+
+//=======================================================================
+//function : YprRotation
+//purpose  : 
+//=======================================================================
+
+Handle(TColStd_HArray1OfReal) StepKinematics_SpatialRotation::YprRotation () const
+{
+  return Handle(TColStd_HArray1OfReal)::DownCast(Value());
+}
diff --git a/src/StepKinematics/StepKinematics_SpatialRotation.hxx b/src/StepKinematics/StepKinematics_SpatialRotation.hxx
new file mode 100644 (file)
index 0000000..314268c
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SpatialRotation_HeaderFile
+#define _StepKinematics_SpatialRotation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+
+class Standard_Transient;
+class StepKinematics_RotationAboutDirection;
+class TColStd_HArray1OfReal;
+
+//! Representation of STEP SELECT type SpatialRotation
+class StepKinematics_SpatialRotation : public StepData_SelectType
+{
+
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT StepKinematics_SpatialRotation();
+
+  //! Recognizes a kind of SpatialRotation select type
+  //! -- 1 -> RotationAboutDirection
+  //! -- 2 -> YprRotation
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
+
+  //! Returns Value as RotationAboutDirection (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_RotationAboutDirection) RotationAboutDirection() const;
+
+  //! Returns Value as YprRotation (or Null if another type)
+  Standard_EXPORT Handle(TColStd_HArray1OfReal) YprRotation() const;
+
+};
+#endif // _StepKinematics_SpatialRotation_HeaderFile
diff --git a/src/StepKinematics/StepKinematics_SphericalPair.cxx b/src/StepKinematics/StepKinematics_SphericalPair.cxx
new file mode 100644 (file)
index 0000000..9a1f5d2
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SphericalPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SphericalPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_SphericalPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SphericalPair::StepKinematics_SphericalPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_SphericalPair.hxx b/src/StepKinematics/StepKinematics_SphericalPair.hxx
new file mode 100644 (file)
index 0000000..37fa34d
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SphericalPair_HeaderFile_
+#define _StepKinematics_SphericalPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SphericalPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity SphericalPair
+class StepKinematics_SphericalPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SphericalPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SphericalPair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_SphericalPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SphericalPairSelect.cxx b/src/StepKinematics/StepKinematics_SphericalPairSelect.cxx
new file mode 100644 (file)
index 0000000..7f5df92
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SphericalPairSelect.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+
+//=======================================================================
+//function : StepKinematics_SphericalPairSelect
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SphericalPairSelect::StepKinematics_SphericalPairSelect ()
+{
+}
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepKinematics_SphericalPairSelect::CaseNum (const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_SphericalPair))) return 1;
+  if (ent->IsKind(STANDARD_TYPE(StepKinematics_SphericalPairWithPin))) return 2;
+  return 0;
+}
+
+//=======================================================================
+//function : SphericalPair
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_SphericalPair) StepKinematics_SphericalPairSelect::SphericalPair () const
+{
+  return Handle(StepKinematics_SphericalPair)::DownCast(Value());
+}
+
+//=======================================================================
+//function : SphericalPairWithPin
+//purpose  : 
+//=======================================================================
+
+Handle(StepKinematics_SphericalPairWithPin) StepKinematics_SphericalPairSelect::SphericalPairWithPin () const
+{
+  return Handle(StepKinematics_SphericalPairWithPin)::DownCast(Value());
+}
diff --git a/src/StepKinematics/StepKinematics_SphericalPairSelect.hxx b/src/StepKinematics/StepKinematics_SphericalPairSelect.hxx
new file mode 100644 (file)
index 0000000..f340701
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SphericalPairSelect_HeaderFile
+#define _StepKinematics_SphericalPairSelect_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+
+class Standard_Transient;
+class StepKinematics_SphericalPair;
+class StepKinematics_SphericalPairWithPin;
+
+//! Representation of STEP SELECT type SphericalPairSelect
+class StepKinematics_SphericalPairSelect : public StepData_SelectType
+{
+
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT StepKinematics_SphericalPairSelect();
+
+  //! Recognizes a kind of SphericalPairSelect select type
+  //! -- 1 -> SphericalPair
+  //! -- 2 -> SphericalPairWithPin
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
+
+  //! Returns Value as SphericalPair (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_SphericalPair) SphericalPair() const;
+
+  //! Returns Value as SphericalPairWithPin (or Null if another type)
+  Standard_EXPORT Handle(StepKinematics_SphericalPairWithPin) SphericalPairWithPin() const;
+
+};
+#endif // _StepKinematics_SphericalPairSelect_HeaderFile
diff --git a/src/StepKinematics/StepKinematics_SphericalPairValue.cxx b/src/StepKinematics/StepKinematics_SphericalPairValue.cxx
new file mode 100644 (file)
index 0000000..c897583
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SphericalPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SphericalPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_SphericalPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SphericalPairValue::StepKinematics_SphericalPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                              const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                              const StepKinematics_SpatialRotation& theInputOrientation)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myInputOrientation = theInputOrientation;
+}
+
+//=======================================================================
+//function : InputOrientation
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SpatialRotation StepKinematics_SphericalPairValue::InputOrientation () const
+{
+  return myInputOrientation;
+}
+
+//=======================================================================
+//function : SetInputOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairValue::SetInputOrientation (const StepKinematics_SpatialRotation& theInputOrientation)
+{
+  myInputOrientation = theInputOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_SphericalPairValue.hxx b/src/StepKinematics/StepKinematics_SphericalPairValue.hxx
new file mode 100644 (file)
index 0000000..4ebd832
--- /dev/null
@@ -0,0 +1,54 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SphericalPairValue_HeaderFile_
+#define _StepKinematics_SphericalPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepKinematics_SpatialRotation.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SphericalPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity SphericalPairValue
+class StepKinematics_SphericalPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SphericalPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const StepKinematics_SpatialRotation& theInputOrientation);
+
+  //! Returns field InputOrientation
+  Standard_EXPORT StepKinematics_SpatialRotation InputOrientation() const;
+  //! Sets field InputOrientation
+  Standard_EXPORT void SetInputOrientation (const StepKinematics_SpatialRotation& theInputOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SphericalPairValue, StepKinematics_PairValue)
+
+private:
+  StepKinematics_SpatialRotation myInputOrientation;
+
+};
+#endif // _StepKinematics_SphericalPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SphericalPairWithPin.cxx b/src/StepKinematics/StepKinematics_SphericalPairWithPin.cxx
new file mode 100644 (file)
index 0000000..2b48abf
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SphericalPairWithPin.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SphericalPairWithPin, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_SphericalPairWithPin
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SphericalPairWithPin::StepKinematics_SphericalPairWithPin ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_SphericalPairWithPin.hxx b/src/StepKinematics/StepKinematics_SphericalPairWithPin.hxx
new file mode 100644 (file)
index 0000000..f41db13
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SphericalPairWithPin_HeaderFile_
+#define _StepKinematics_SphericalPairWithPin_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SphericalPairWithPin, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity SphericalPairWithPin
+class StepKinematics_SphericalPairWithPin : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SphericalPairWithPin();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SphericalPairWithPin, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_SphericalPairWithPin_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SphericalPairWithPinAndRange.cxx b/src/StepKinematics/StepKinematics_SphericalPairWithPinAndRange.cxx
new file mode 100644 (file)
index 0000000..0949f57
--- /dev/null
@@ -0,0 +1,218 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SphericalPairWithPinAndRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SphericalPairWithPinAndRange, StepKinematics_SphericalPairWithPin)
+
+//=======================================================================
+//function : StepKinematics_SphericalPairWithPinAndRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SphericalPairWithPinAndRange::StepKinematics_SphericalPairWithPinAndRange ()
+{
+  defLowerLimitYaw = Standard_False;
+  defUpperLimitYaw = Standard_False;
+  defLowerLimitRoll = Standard_False;
+  defUpperLimitRoll = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithPinAndRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                        const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                        const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                        const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                        const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                        const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                        const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                        const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                        const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                        const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                        const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                        const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                        const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                        const Standard_Boolean hasLowerLimitYaw,
+                                                        const Standard_Real theLowerLimitYaw,
+                                                        const Standard_Boolean hasUpperLimitYaw,
+                                                        const Standard_Real theUpperLimitYaw,
+                                                        const Standard_Boolean hasLowerLimitRoll,
+                                                        const Standard_Real theLowerLimitRoll,
+                                                        const Standard_Boolean hasUpperLimitRoll,
+                                                        const Standard_Real theUpperLimitRoll)
+{
+  StepKinematics_SphericalPairWithPin::Init(theRepresentationItem_Name,
+                                            theItemDefinedTransformation_Name,
+                                            hasItemDefinedTransformation_Description,
+                                            theItemDefinedTransformation_Description,
+                                            theItemDefinedTransformation_TransformItem1,
+                                            theItemDefinedTransformation_TransformItem2,
+                                            theKinematicPair_Joint,
+                                            theLowOrderKinematicPair_TX,
+                                            theLowOrderKinematicPair_TY,
+                                            theLowOrderKinematicPair_TZ,
+                                            theLowOrderKinematicPair_RX,
+                                            theLowOrderKinematicPair_RY,
+                                            theLowOrderKinematicPair_RZ);
+
+  defLowerLimitYaw = hasLowerLimitYaw;
+  if (defLowerLimitYaw) {
+    myLowerLimitYaw = theLowerLimitYaw;
+  }
+  else myLowerLimitYaw = 0;
+
+  defUpperLimitYaw = hasUpperLimitYaw;
+  if (defUpperLimitYaw) {
+    myUpperLimitYaw = theUpperLimitYaw;
+  }
+  else myUpperLimitYaw = 0;
+
+  defLowerLimitRoll = hasLowerLimitRoll;
+  if (defLowerLimitRoll) {
+    myLowerLimitRoll = theLowerLimitRoll;
+  }
+  else myLowerLimitRoll = 0;
+
+  defUpperLimitRoll = hasUpperLimitRoll;
+  if (defUpperLimitRoll) {
+    myUpperLimitRoll = theUpperLimitRoll;
+  }
+  else myUpperLimitRoll = 0;
+}
+
+//=======================================================================
+//function : LowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithPinAndRange::LowerLimitYaw () const
+{
+  return myLowerLimitYaw;
+}
+
+//=======================================================================
+//function : SetLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithPinAndRange::SetLowerLimitYaw (const Standard_Real theLowerLimitYaw)
+{
+  myLowerLimitYaw = theLowerLimitYaw;
+}
+
+//=======================================================================
+//function : HasLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithPinAndRange::HasLowerLimitYaw () const
+{
+  return defLowerLimitYaw;
+}
+
+//=======================================================================
+//function : UpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithPinAndRange::UpperLimitYaw () const
+{
+  return myUpperLimitYaw;
+}
+
+//=======================================================================
+//function : SetUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithPinAndRange::SetUpperLimitYaw (const Standard_Real theUpperLimitYaw)
+{
+  myUpperLimitYaw = theUpperLimitYaw;
+}
+
+//=======================================================================
+//function : HasUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithPinAndRange::HasUpperLimitYaw () const
+{
+  return defUpperLimitYaw;
+}
+
+//=======================================================================
+//function : LowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithPinAndRange::LowerLimitRoll () const
+{
+  return myLowerLimitRoll;
+}
+
+//=======================================================================
+//function : SetLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithPinAndRange::SetLowerLimitRoll (const Standard_Real theLowerLimitRoll)
+{
+  myLowerLimitRoll = theLowerLimitRoll;
+}
+
+//=======================================================================
+//function : HasLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithPinAndRange::HasLowerLimitRoll () const
+{
+  return defLowerLimitRoll;
+}
+
+//=======================================================================
+//function : UpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithPinAndRange::UpperLimitRoll () const
+{
+  return myUpperLimitRoll;
+}
+
+//=======================================================================
+//function : SetUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithPinAndRange::SetUpperLimitRoll (const Standard_Real theUpperLimitRoll)
+{
+  myUpperLimitRoll = theUpperLimitRoll;
+}
+
+//=======================================================================
+//function : HasUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithPinAndRange::HasUpperLimitRoll () const
+{
+  return defUpperLimitRoll;
+}
diff --git a/src/StepKinematics/StepKinematics_SphericalPairWithPinAndRange.hxx b/src/StepKinematics/StepKinematics_SphericalPairWithPinAndRange.hxx
new file mode 100644 (file)
index 0000000..c10e089
--- /dev/null
@@ -0,0 +1,103 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SphericalPairWithPinAndRange_HeaderFile_
+#define _StepKinematics_SphericalPairWithPinAndRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_SphericalPairWithPin.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SphericalPairWithPinAndRange, StepKinematics_SphericalPairWithPin)
+
+//! Representation of STEP entity SphericalPairWithPinAndRange
+class StepKinematics_SphericalPairWithPinAndRange : public StepKinematics_SphericalPairWithPin
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SphericalPairWithPinAndRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitYaw,
+                           const Standard_Real theLowerLimitYaw,
+                           const Standard_Boolean hasUpperLimitYaw,
+                           const Standard_Real theUpperLimitYaw,
+                           const Standard_Boolean hasLowerLimitRoll,
+                           const Standard_Real theLowerLimitRoll,
+                           const Standard_Boolean hasUpperLimitRoll,
+                           const Standard_Real theUpperLimitRoll);
+
+  //! Returns field LowerLimitYaw
+  Standard_EXPORT Standard_Real LowerLimitYaw() const;
+  //! Sets field LowerLimitYaw
+  Standard_EXPORT void SetLowerLimitYaw (const Standard_Real theLowerLimitYaw);
+  //! Returns True if optional field LowerLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitYaw() const;
+
+  //! Returns field UpperLimitYaw
+  Standard_EXPORT Standard_Real UpperLimitYaw() const;
+  //! Sets field UpperLimitYaw
+  Standard_EXPORT void SetUpperLimitYaw (const Standard_Real theUpperLimitYaw);
+  //! Returns True if optional field UpperLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitYaw() const;
+
+  //! Returns field LowerLimitRoll
+  Standard_EXPORT Standard_Real LowerLimitRoll() const;
+  //! Sets field LowerLimitRoll
+  Standard_EXPORT void SetLowerLimitRoll (const Standard_Real theLowerLimitRoll);
+  //! Returns True if optional field LowerLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitRoll() const;
+
+  //! Returns field UpperLimitRoll
+  Standard_EXPORT Standard_Real UpperLimitRoll() const;
+  //! Sets field UpperLimitRoll
+  Standard_EXPORT void SetUpperLimitRoll (const Standard_Real theUpperLimitRoll);
+  //! Returns True if optional field UpperLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitRoll() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SphericalPairWithPinAndRange, StepKinematics_SphericalPairWithPin)
+
+private:
+  Standard_Real myLowerLimitYaw; //!< optional
+  Standard_Real myUpperLimitYaw; //!< optional
+  Standard_Real myLowerLimitRoll; //!< optional
+  Standard_Real myUpperLimitRoll; //!< optional
+  Standard_Boolean defLowerLimitYaw; //!< flag "is LowerLimitYaw defined"
+  Standard_Boolean defUpperLimitYaw; //!< flag "is UpperLimitYaw defined"
+  Standard_Boolean defLowerLimitRoll; //!< flag "is LowerLimitRoll defined"
+  Standard_Boolean defUpperLimitRoll; //!< flag "is UpperLimitRoll defined"
+
+};
+#endif // _StepKinematics_SphericalPairWithPinAndRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SphericalPairWithRange.cxx b/src/StepKinematics/StepKinematics_SphericalPairWithRange.cxx
new file mode 100644 (file)
index 0000000..a5c0ae1
--- /dev/null
@@ -0,0 +1,296 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SphericalPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SphericalPairWithRange, StepKinematics_SphericalPair)
+
+//=======================================================================
+//function : StepKinematics_SphericalPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SphericalPairWithRange::StepKinematics_SphericalPairWithRange ()
+{
+  defLowerLimitYaw = Standard_False;
+  defUpperLimitYaw = Standard_False;
+  defLowerLimitPitch = Standard_False;
+  defUpperLimitPitch = Standard_False;
+  defLowerLimitRoll = Standard_False;
+  defUpperLimitRoll = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                  const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                  const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                  const Standard_Boolean hasLowerLimitYaw,
+                                                  const Standard_Real theLowerLimitYaw,
+                                                  const Standard_Boolean hasUpperLimitYaw,
+                                                  const Standard_Real theUpperLimitYaw,
+                                                  const Standard_Boolean hasLowerLimitPitch,
+                                                  const Standard_Real theLowerLimitPitch,
+                                                  const Standard_Boolean hasUpperLimitPitch,
+                                                  const Standard_Real theUpperLimitPitch,
+                                                  const Standard_Boolean hasLowerLimitRoll,
+                                                  const Standard_Real theLowerLimitRoll,
+                                                  const Standard_Boolean hasUpperLimitRoll,
+                                                  const Standard_Real theUpperLimitRoll)
+{
+  StepKinematics_SphericalPair::Init(theRepresentationItem_Name,
+                                     theItemDefinedTransformation_Name,
+                                     hasItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_TransformItem1,
+                                     theItemDefinedTransformation_TransformItem2,
+                                     theKinematicPair_Joint,
+                                     theLowOrderKinematicPair_TX,
+                                     theLowOrderKinematicPair_TY,
+                                     theLowOrderKinematicPair_TZ,
+                                     theLowOrderKinematicPair_RX,
+                                     theLowOrderKinematicPair_RY,
+                                     theLowOrderKinematicPair_RZ);
+
+  defLowerLimitYaw = hasLowerLimitYaw;
+  if (defLowerLimitYaw) {
+    myLowerLimitYaw = theLowerLimitYaw;
+  }
+  else myLowerLimitYaw = 0;
+
+  defUpperLimitYaw = hasUpperLimitYaw;
+  if (defUpperLimitYaw) {
+    myUpperLimitYaw = theUpperLimitYaw;
+  }
+  else myUpperLimitYaw = 0;
+
+  defLowerLimitPitch = hasLowerLimitPitch;
+  if (defLowerLimitPitch) {
+    myLowerLimitPitch = theLowerLimitPitch;
+  }
+  else myLowerLimitPitch = 0;
+
+  defUpperLimitPitch = hasUpperLimitPitch;
+  if (defUpperLimitPitch) {
+    myUpperLimitPitch = theUpperLimitPitch;
+  }
+  else myUpperLimitPitch = 0;
+
+  defLowerLimitRoll = hasLowerLimitRoll;
+  if (defLowerLimitRoll) {
+    myLowerLimitRoll = theLowerLimitRoll;
+  }
+  else myLowerLimitRoll = 0;
+
+  defUpperLimitRoll = hasUpperLimitRoll;
+  if (defUpperLimitRoll) {
+    myUpperLimitRoll = theUpperLimitRoll;
+  }
+  else myUpperLimitRoll = 0;
+}
+
+//=======================================================================
+//function : LowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithRange::LowerLimitYaw () const
+{
+  return myLowerLimitYaw;
+}
+
+//=======================================================================
+//function : SetLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::SetLowerLimitYaw (const Standard_Real theLowerLimitYaw)
+{
+  myLowerLimitYaw = theLowerLimitYaw;
+}
+
+//=======================================================================
+//function : HasLowerLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithRange::HasLowerLimitYaw () const
+{
+  return defLowerLimitYaw;
+}
+
+//=======================================================================
+//function : UpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithRange::UpperLimitYaw () const
+{
+  return myUpperLimitYaw;
+}
+
+//=======================================================================
+//function : SetUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::SetUpperLimitYaw (const Standard_Real theUpperLimitYaw)
+{
+  myUpperLimitYaw = theUpperLimitYaw;
+}
+
+//=======================================================================
+//function : HasUpperLimitYaw
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithRange::HasUpperLimitYaw () const
+{
+  return defUpperLimitYaw;
+}
+
+//=======================================================================
+//function : LowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithRange::LowerLimitPitch () const
+{
+  return myLowerLimitPitch;
+}
+
+//=======================================================================
+//function : SetLowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::SetLowerLimitPitch (const Standard_Real theLowerLimitPitch)
+{
+  myLowerLimitPitch = theLowerLimitPitch;
+}
+
+//=======================================================================
+//function : HasLowerLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithRange::HasLowerLimitPitch () const
+{
+  return defLowerLimitPitch;
+}
+
+//=======================================================================
+//function : UpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithRange::UpperLimitPitch () const
+{
+  return myUpperLimitPitch;
+}
+
+//=======================================================================
+//function : SetUpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::SetUpperLimitPitch (const Standard_Real theUpperLimitPitch)
+{
+  myUpperLimitPitch = theUpperLimitPitch;
+}
+
+//=======================================================================
+//function : HasUpperLimitPitch
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithRange::HasUpperLimitPitch () const
+{
+  return defUpperLimitPitch;
+}
+
+//=======================================================================
+//function : LowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithRange::LowerLimitRoll () const
+{
+  return myLowerLimitRoll;
+}
+
+//=======================================================================
+//function : SetLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::SetLowerLimitRoll (const Standard_Real theLowerLimitRoll)
+{
+  myLowerLimitRoll = theLowerLimitRoll;
+}
+
+//=======================================================================
+//function : HasLowerLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithRange::HasLowerLimitRoll () const
+{
+  return defLowerLimitRoll;
+}
+
+//=======================================================================
+//function : UpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SphericalPairWithRange::UpperLimitRoll () const
+{
+  return myUpperLimitRoll;
+}
+
+//=======================================================================
+//function : SetUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SphericalPairWithRange::SetUpperLimitRoll (const Standard_Real theUpperLimitRoll)
+{
+  myUpperLimitRoll = theUpperLimitRoll;
+}
+
+//=======================================================================
+//function : HasUpperLimitRoll
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SphericalPairWithRange::HasUpperLimitRoll () const
+{
+  return defUpperLimitRoll;
+}
diff --git a/src/StepKinematics/StepKinematics_SphericalPairWithRange.hxx b/src/StepKinematics/StepKinematics_SphericalPairWithRange.hxx
new file mode 100644 (file)
index 0000000..9e771f9
--- /dev/null
@@ -0,0 +1,125 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SphericalPairWithRange_HeaderFile_
+#define _StepKinematics_SphericalPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_SphericalPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SphericalPairWithRange, StepKinematics_SphericalPair)
+
+//! Representation of STEP entity SphericalPairWithRange
+class StepKinematics_SphericalPairWithRange : public StepKinematics_SphericalPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SphericalPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasLowerLimitYaw,
+                           const Standard_Real theLowerLimitYaw,
+                           const Standard_Boolean hasUpperLimitYaw,
+                           const Standard_Real theUpperLimitYaw,
+                           const Standard_Boolean hasLowerLimitPitch,
+                           const Standard_Real theLowerLimitPitch,
+                           const Standard_Boolean hasUpperLimitPitch,
+                           const Standard_Real theUpperLimitPitch,
+                           const Standard_Boolean hasLowerLimitRoll,
+                           const Standard_Real theLowerLimitRoll,
+                           const Standard_Boolean hasUpperLimitRoll,
+                           const Standard_Real theUpperLimitRoll);
+
+  //! Returns field LowerLimitYaw
+  Standard_EXPORT Standard_Real LowerLimitYaw() const;
+  //! Sets field LowerLimitYaw
+  Standard_EXPORT void SetLowerLimitYaw (const Standard_Real theLowerLimitYaw);
+  //! Returns True if optional field LowerLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitYaw() const;
+
+  //! Returns field UpperLimitYaw
+  Standard_EXPORT Standard_Real UpperLimitYaw() const;
+  //! Sets field UpperLimitYaw
+  Standard_EXPORT void SetUpperLimitYaw (const Standard_Real theUpperLimitYaw);
+  //! Returns True if optional field UpperLimitYaw is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitYaw() const;
+
+  //! Returns field LowerLimitPitch
+  Standard_EXPORT Standard_Real LowerLimitPitch() const;
+  //! Sets field LowerLimitPitch
+  Standard_EXPORT void SetLowerLimitPitch (const Standard_Real theLowerLimitPitch);
+  //! Returns True if optional field LowerLimitPitch is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitPitch() const;
+
+  //! Returns field UpperLimitPitch
+  Standard_EXPORT Standard_Real UpperLimitPitch() const;
+  //! Sets field UpperLimitPitch
+  Standard_EXPORT void SetUpperLimitPitch (const Standard_Real theUpperLimitPitch);
+  //! Returns True if optional field UpperLimitPitch is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitPitch() const;
+
+  //! Returns field LowerLimitRoll
+  Standard_EXPORT Standard_Real LowerLimitRoll() const;
+  //! Sets field LowerLimitRoll
+  Standard_EXPORT void SetLowerLimitRoll (const Standard_Real theLowerLimitRoll);
+  //! Returns True if optional field LowerLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitRoll() const;
+
+  //! Returns field UpperLimitRoll
+  Standard_EXPORT Standard_Real UpperLimitRoll() const;
+  //! Sets field UpperLimitRoll
+  Standard_EXPORT void SetUpperLimitRoll (const Standard_Real theUpperLimitRoll);
+  //! Returns True if optional field UpperLimitRoll is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitRoll() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SphericalPairWithRange, StepKinematics_SphericalPair)
+
+private:
+  Standard_Real myLowerLimitYaw; //!< optional
+  Standard_Real myUpperLimitYaw; //!< optional
+  Standard_Real myLowerLimitPitch; //!< optional
+  Standard_Real myUpperLimitPitch; //!< optional
+  Standard_Real myLowerLimitRoll; //!< optional
+  Standard_Real myUpperLimitRoll; //!< optional
+  Standard_Boolean defLowerLimitYaw; //!< flag "is LowerLimitYaw defined"
+  Standard_Boolean defUpperLimitYaw; //!< flag "is UpperLimitYaw defined"
+  Standard_Boolean defLowerLimitPitch; //!< flag "is LowerLimitPitch defined"
+  Standard_Boolean defUpperLimitPitch; //!< flag "is UpperLimitPitch defined"
+  Standard_Boolean defLowerLimitRoll; //!< flag "is LowerLimitRoll defined"
+  Standard_Boolean defUpperLimitRoll; //!< flag "is UpperLimitRoll defined"
+
+};
+#endif // _StepKinematics_SphericalPairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SuParameters.cxx b/src/StepKinematics/StepKinematics_SuParameters.cxx
new file mode 100644 (file)
index 0000000..3911883
--- /dev/null
@@ -0,0 +1,176 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SuParameters.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SuParameters, StepGeom_GeometricRepresentationItem)
+
+//=======================================================================
+//function : StepKinematics_SuParameters
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SuParameters::StepKinematics_SuParameters ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                        const Standard_Real theA,
+                                        const Standard_Real theAlpha,
+                                        const Standard_Real theB,
+                                        const Standard_Real theBeta,
+                                        const Standard_Real theC,
+                                        const Standard_Real theGamma)
+{
+  StepGeom_GeometricRepresentationItem::Init(theRepresentationItem_Name);
+
+  myA = theA;
+
+  myAlpha = theAlpha;
+
+  myB = theB;
+
+  myBeta = theBeta;
+
+  myC = theC;
+
+  myGamma = theGamma;
+}
+
+//=======================================================================
+//function : A
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SuParameters::A () const
+{
+  return myA;
+}
+
+//=======================================================================
+//function : SetA
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::SetA (const Standard_Real theA)
+{
+  myA = theA;
+}
+
+//=======================================================================
+//function : Alpha
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SuParameters::Alpha () const
+{
+  return myAlpha;
+}
+
+//=======================================================================
+//function : SetAlpha
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::SetAlpha (const Standard_Real theAlpha)
+{
+  myAlpha = theAlpha;
+}
+
+//=======================================================================
+//function : B
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SuParameters::B () const
+{
+  return myB;
+}
+
+//=======================================================================
+//function : SetB
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::SetB (const Standard_Real theB)
+{
+  myB = theB;
+}
+
+//=======================================================================
+//function : Beta
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SuParameters::Beta () const
+{
+  return myBeta;
+}
+
+//=======================================================================
+//function : SetBeta
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::SetBeta (const Standard_Real theBeta)
+{
+  myBeta = theBeta;
+}
+
+//=======================================================================
+//function : C
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SuParameters::C () const
+{
+  return myC;
+}
+
+//=======================================================================
+//function : SetC
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::SetC (const Standard_Real theC)
+{
+  myC = theC;
+}
+
+//=======================================================================
+//function : Gamma
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SuParameters::Gamma () const
+{
+  return myGamma;
+}
+
+//=======================================================================
+//function : SetGamma
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SuParameters::SetGamma (const Standard_Real theGamma)
+{
+  myGamma = theGamma;
+}
diff --git a/src/StepKinematics/StepKinematics_SuParameters.hxx b/src/StepKinematics/StepKinematics_SuParameters.hxx
new file mode 100644 (file)
index 0000000..00bf3b0
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SuParameters_HeaderFile_
+#define _StepKinematics_SuParameters_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepGeom_GeometricRepresentationItem.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SuParameters, StepGeom_GeometricRepresentationItem)
+
+//! Representation of STEP entity SuParameters
+class StepKinematics_SuParameters : public StepGeom_GeometricRepresentationItem
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SuParameters();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Standard_Real theA,
+                           const Standard_Real theAlpha,
+                           const Standard_Real theB,
+                           const Standard_Real theBeta,
+                           const Standard_Real theC,
+                           const Standard_Real theGamma);
+
+  //! Returns field A
+  Standard_EXPORT Standard_Real A() const;
+  //! Sets field A
+  Standard_EXPORT void SetA (const Standard_Real theA);
+
+  //! Returns field Alpha
+  Standard_EXPORT Standard_Real Alpha() const;
+  //! Sets field Alpha
+  Standard_EXPORT void SetAlpha (const Standard_Real theAlpha);
+
+  //! Returns field B
+  Standard_EXPORT Standard_Real B() const;
+  //! Sets field B
+  Standard_EXPORT void SetB (const Standard_Real theB);
+
+  //! Returns field Beta
+  Standard_EXPORT Standard_Real Beta() const;
+  //! Sets field Beta
+  Standard_EXPORT void SetBeta (const Standard_Real theBeta);
+
+  //! Returns field C
+  Standard_EXPORT Standard_Real C() const;
+  //! Sets field C
+  Standard_EXPORT void SetC (const Standard_Real theC);
+
+  //! Returns field Gamma
+  Standard_EXPORT Standard_Real Gamma() const;
+  //! Sets field Gamma
+  Standard_EXPORT void SetGamma (const Standard_Real theGamma);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SuParameters, StepGeom_GeometricRepresentationItem)
+
+private:
+  Standard_Real myA;
+  Standard_Real myAlpha;
+  Standard_Real myB;
+  Standard_Real myBeta;
+  Standard_Real myC;
+  Standard_Real myGamma;
+
+};
+#endif // _StepKinematics_SuParameters_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SurfacePair.cxx b/src/StepKinematics/StepKinematics_SurfacePair.cxx
new file mode 100644 (file)
index 0000000..0183282
--- /dev/null
@@ -0,0 +1,119 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SurfacePair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SurfacePair, StepKinematics_HighOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_SurfacePair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SurfacePair::StepKinematics_SurfacePair ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                       const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                       const Standard_Boolean hasItemDefinedTransformation_Description,
+                                       const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                       const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                       const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                       const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                       const Handle(StepGeom_Surface)& theSurface1,
+                                       const Handle(StepGeom_Surface)& theSurface2,
+                                       const Standard_Boolean theOrientation)
+{
+  StepKinematics_HighOrderKinematicPair::Init(theRepresentationItem_Name,
+                                              theItemDefinedTransformation_Name,
+                                              hasItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_Description,
+                                              theItemDefinedTransformation_TransformItem1,
+                                              theItemDefinedTransformation_TransformItem2,
+                                              theKinematicPair_Joint);
+
+  mySurface1 = theSurface1;
+
+  mySurface2 = theSurface2;
+
+  myOrientation = theOrientation;
+}
+
+//=======================================================================
+//function : Surface1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Surface) StepKinematics_SurfacePair::Surface1 () const
+{
+  return mySurface1;
+}
+
+//=======================================================================
+//function : SetSurface1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePair::SetSurface1 (const Handle(StepGeom_Surface)& theSurface1)
+{
+  mySurface1 = theSurface1;
+}
+
+//=======================================================================
+//function : Surface2
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Surface) StepKinematics_SurfacePair::Surface2 () const
+{
+  return mySurface2;
+}
+
+//=======================================================================
+//function : SetSurface2
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePair::SetSurface2 (const Handle(StepGeom_Surface)& theSurface2)
+{
+  mySurface2 = theSurface2;
+}
+
+//=======================================================================
+//function : Orientation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SurfacePair::Orientation () const
+{
+  return myOrientation;
+}
+
+//=======================================================================
+//function : SetOrientation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePair::SetOrientation (const Standard_Boolean theOrientation)
+{
+  myOrientation = theOrientation;
+}
diff --git a/src/StepKinematics/StepKinematics_SurfacePair.hxx b/src/StepKinematics/StepKinematics_SurfacePair.hxx
new file mode 100644 (file)
index 0000000..54b1904
--- /dev/null
@@ -0,0 +1,75 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SurfacePair_HeaderFile_
+#define _StepKinematics_SurfacePair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_HighOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SurfacePair, StepKinematics_HighOrderKinematicPair)
+
+//! Representation of STEP entity SurfacePair
+class StepKinematics_SurfacePair : public StepKinematics_HighOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SurfacePair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Surface)& theSurface1,
+                           const Handle(StepGeom_Surface)& theSurface2,
+                           const Standard_Boolean theOrientation);
+
+  //! Returns field Surface1
+  Standard_EXPORT Handle(StepGeom_Surface) Surface1() const;
+  //! Sets field Surface1
+  Standard_EXPORT void SetSurface1 (const Handle(StepGeom_Surface)& theSurface1);
+
+  //! Returns field Surface2
+  Standard_EXPORT Handle(StepGeom_Surface) Surface2() const;
+  //! Sets field Surface2
+  Standard_EXPORT void SetSurface2 (const Handle(StepGeom_Surface)& theSurface2);
+
+  //! Returns field Orientation
+  Standard_EXPORT Standard_Boolean Orientation() const;
+  //! Sets field Orientation
+  Standard_EXPORT void SetOrientation (const Standard_Boolean theOrientation);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SurfacePair, StepKinematics_HighOrderKinematicPair)
+
+private:
+  Handle(StepGeom_Surface) mySurface1;
+  Handle(StepGeom_Surface) mySurface2;
+  Standard_Boolean myOrientation;
+
+};
+#endif // _StepKinematics_SurfacePair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_SurfacePairWithRange.cxx b/src/StepKinematics/StepKinematics_SurfacePairWithRange.cxx
new file mode 100644 (file)
index 0000000..89efec8
--- /dev/null
@@ -0,0 +1,180 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_SurfacePairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_SurfacePairWithRange, StepKinematics_SurfacePair)
+
+//=======================================================================
+//function : StepKinematics_SurfacePairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_SurfacePairWithRange::StepKinematics_SurfacePairWithRange ()
+{
+  defLowerLimitActualRotation = Standard_False;
+  defUpperLimitActualRotation = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                const Handle(StepGeom_Surface)& theSurfacePair_Surface1,
+                                                const Handle(StepGeom_Surface)& theSurfacePair_Surface2,
+                                                const Standard_Boolean theSurfacePair_Orientation,
+                                                const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface1,
+                                                const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface2,
+                                                const Standard_Boolean hasLowerLimitActualRotation,
+                                                const Standard_Real theLowerLimitActualRotation,
+                                                const Standard_Boolean hasUpperLimitActualRotation,
+                                                const Standard_Real theUpperLimitActualRotation)
+{
+  StepKinematics_SurfacePair::Init(theRepresentationItem_Name,
+                                   theItemDefinedTransformation_Name,
+                                   hasItemDefinedTransformation_Description,
+                                   theItemDefinedTransformation_Description,
+                                   theItemDefinedTransformation_TransformItem1,
+                                   theItemDefinedTransformation_TransformItem2,
+                                   theKinematicPair_Joint,
+                                   theSurfacePair_Surface1,
+                                   theSurfacePair_Surface2,
+                                   theSurfacePair_Orientation);
+
+  myRangeOnSurface1 = theRangeOnSurface1;
+
+  myRangeOnSurface2 = theRangeOnSurface2;
+
+  defLowerLimitActualRotation = hasLowerLimitActualRotation;
+  if (defLowerLimitActualRotation) {
+    myLowerLimitActualRotation = theLowerLimitActualRotation;
+  }
+  else myLowerLimitActualRotation = 0;
+
+  defUpperLimitActualRotation = hasUpperLimitActualRotation;
+  if (defUpperLimitActualRotation) {
+    myUpperLimitActualRotation = theUpperLimitActualRotation;
+  }
+  else myUpperLimitActualRotation = 0;
+}
+
+//=======================================================================
+//function : RangeOnSurface1
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_RectangularTrimmedSurface) StepKinematics_SurfacePairWithRange::RangeOnSurface1 () const
+{
+  return myRangeOnSurface1;
+}
+
+//=======================================================================
+//function : SetRangeOnSurface1
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePairWithRange::SetRangeOnSurface1 (const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface1)
+{
+  myRangeOnSurface1 = theRangeOnSurface1;
+}
+
+//=======================================================================
+//function : RangeOnSurface2
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_RectangularTrimmedSurface) StepKinematics_SurfacePairWithRange::RangeOnSurface2 () const
+{
+  return myRangeOnSurface2;
+}
+
+//=======================================================================
+//function : SetRangeOnSurface2
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePairWithRange::SetRangeOnSurface2 (const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface2)
+{
+  myRangeOnSurface2 = theRangeOnSurface2;
+}
+
+//=======================================================================
+//function : LowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SurfacePairWithRange::LowerLimitActualRotation () const
+{
+  return myLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePairWithRange::SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation)
+{
+  myLowerLimitActualRotation = theLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SurfacePairWithRange::HasLowerLimitActualRotation () const
+{
+  return defLowerLimitActualRotation;
+}
+
+//=======================================================================
+//function : UpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_SurfacePairWithRange::UpperLimitActualRotation () const
+{
+  return myUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_SurfacePairWithRange::SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation)
+{
+  myUpperLimitActualRotation = theUpperLimitActualRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitActualRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_SurfacePairWithRange::HasUpperLimitActualRotation () const
+{
+  return defUpperLimitActualRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_SurfacePairWithRange.hxx b/src/StepKinematics/StepKinematics_SurfacePairWithRange.hxx
new file mode 100644 (file)
index 0000000..3c75f3f
--- /dev/null
@@ -0,0 +1,94 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_SurfacePairWithRange_HeaderFile_
+#define _StepKinematics_SurfacePairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_SurfacePair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+#include <StepGeom_Surface.hxx>
+#include <StepGeom_RectangularTrimmedSurface.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_SurfacePairWithRange, StepKinematics_SurfacePair)
+
+//! Representation of STEP entity SurfacePairWithRange
+class StepKinematics_SurfacePairWithRange : public StepKinematics_SurfacePair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_SurfacePairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Handle(StepGeom_Surface)& theSurfacePair_Surface1,
+                           const Handle(StepGeom_Surface)& theSurfacePair_Surface2,
+                           const Standard_Boolean theSurfacePair_Orientation,
+                           const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface1,
+                           const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface2,
+                           const Standard_Boolean hasLowerLimitActualRotation,
+                           const Standard_Real theLowerLimitActualRotation,
+                           const Standard_Boolean hasUpperLimitActualRotation,
+                           const Standard_Real theUpperLimitActualRotation);
+
+  //! Returns field RangeOnSurface1
+  Standard_EXPORT Handle(StepGeom_RectangularTrimmedSurface) RangeOnSurface1() const;
+  //! Sets field RangeOnSurface1
+  Standard_EXPORT void SetRangeOnSurface1 (const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface1);
+
+  //! Returns field RangeOnSurface2
+  Standard_EXPORT Handle(StepGeom_RectangularTrimmedSurface) RangeOnSurface2() const;
+  //! Sets field RangeOnSurface2
+  Standard_EXPORT void SetRangeOnSurface2 (const Handle(StepGeom_RectangularTrimmedSurface)& theRangeOnSurface2);
+
+  //! Returns field LowerLimitActualRotation
+  Standard_EXPORT Standard_Real LowerLimitActualRotation() const;
+  //! Sets field LowerLimitActualRotation
+  Standard_EXPORT void SetLowerLimitActualRotation (const Standard_Real theLowerLimitActualRotation);
+  //! Returns True if optional field LowerLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitActualRotation() const;
+
+  //! Returns field UpperLimitActualRotation
+  Standard_EXPORT Standard_Real UpperLimitActualRotation() const;
+  //! Sets field UpperLimitActualRotation
+  Standard_EXPORT void SetUpperLimitActualRotation (const Standard_Real theUpperLimitActualRotation);
+  //! Returns True if optional field UpperLimitActualRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitActualRotation() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_SurfacePairWithRange, StepKinematics_SurfacePair)
+
+private:
+  Handle(StepGeom_RectangularTrimmedSurface) myRangeOnSurface1;
+  Handle(StepGeom_RectangularTrimmedSurface) myRangeOnSurface2;
+  Standard_Real myLowerLimitActualRotation; //!< optional
+  Standard_Real myUpperLimitActualRotation; //!< optional
+  Standard_Boolean defLowerLimitActualRotation; //!< flag "is LowerLimitActualRotation defined"
+  Standard_Boolean defUpperLimitActualRotation; //!< flag "is UpperLimitActualRotation defined"
+
+};
+#endif // _StepKinematics_SurfacePairWithRange_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_UnconstrainedPair.cxx b/src/StepKinematics/StepKinematics_UnconstrainedPair.cxx
new file mode 100644 (file)
index 0000000..ad744e3
--- /dev/null
@@ -0,0 +1,28 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_UnconstrainedPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_UnconstrainedPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_UnconstrainedPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_UnconstrainedPair::StepKinematics_UnconstrainedPair ()
+{
+}
diff --git a/src/StepKinematics/StepKinematics_UnconstrainedPair.hxx b/src/StepKinematics/StepKinematics_UnconstrainedPair.hxx
new file mode 100644 (file)
index 0000000..f3b4f81
--- /dev/null
@@ -0,0 +1,42 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_UnconstrainedPair_HeaderFile_
+#define _StepKinematics_UnconstrainedPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_UnconstrainedPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity UnconstrainedPair
+class StepKinematics_UnconstrainedPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_UnconstrainedPair();
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_UnconstrainedPair, StepKinematics_LowOrderKinematicPair)
+
+};
+#endif // _StepKinematics_UnconstrainedPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_UnconstrainedPairValue.cxx b/src/StepKinematics/StepKinematics_UnconstrainedPairValue.cxx
new file mode 100644 (file)
index 0000000..78b36fd
--- /dev/null
@@ -0,0 +1,63 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_UnconstrainedPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_UnconstrainedPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_UnconstrainedPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_UnconstrainedPairValue::StepKinematics_UnconstrainedPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UnconstrainedPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                                  const Handle(StepGeom_Axis2Placement3d)& theActualPlacement)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myActualPlacement = theActualPlacement;
+}
+
+//=======================================================================
+//function : ActualPlacement
+//purpose  : 
+//=======================================================================
+
+Handle(StepGeom_Axis2Placement3d) StepKinematics_UnconstrainedPairValue::ActualPlacement () const
+{
+  return myActualPlacement;
+}
+
+//=======================================================================
+//function : SetActualPlacement
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UnconstrainedPairValue::SetActualPlacement (const Handle(StepGeom_Axis2Placement3d)& theActualPlacement)
+{
+  myActualPlacement = theActualPlacement;
+}
diff --git a/src/StepKinematics/StepKinematics_UnconstrainedPairValue.hxx b/src/StepKinematics/StepKinematics_UnconstrainedPairValue.hxx
new file mode 100644 (file)
index 0000000..3597852
--- /dev/null
@@ -0,0 +1,54 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_UnconstrainedPairValue_HeaderFile_
+#define _StepKinematics_UnconstrainedPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepGeom_Axis2Placement3d.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_UnconstrainedPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity UnconstrainedPairValue
+class StepKinematics_UnconstrainedPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_UnconstrainedPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Handle(StepGeom_Axis2Placement3d)& theActualPlacement);
+
+  //! Returns field ActualPlacement
+  Standard_EXPORT Handle(StepGeom_Axis2Placement3d) ActualPlacement() const;
+  //! Sets field ActualPlacement
+  Standard_EXPORT void SetActualPlacement (const Handle(StepGeom_Axis2Placement3d)& theActualPlacement);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_UnconstrainedPairValue, StepKinematics_PairValue)
+
+private:
+  Handle(StepGeom_Axis2Placement3d) myActualPlacement;
+
+};
+#endif // _StepKinematics_UnconstrainedPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_UniversalPair.cxx b/src/StepKinematics/StepKinematics_UniversalPair.cxx
new file mode 100644 (file)
index 0000000..43675a4
--- /dev/null
@@ -0,0 +1,101 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_UniversalPair.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_UniversalPair, StepKinematics_LowOrderKinematicPair)
+
+//=======================================================================
+//function : StepKinematics_UniversalPair
+//purpose  : 
+//=======================================================================
+
+StepKinematics_UniversalPair::StepKinematics_UniversalPair ()
+{
+  defInputSkewAngle = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPair::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                         const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                         const Standard_Boolean hasItemDefinedTransformation_Description,
+                                         const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                         const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                         const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                         const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                         const Standard_Boolean theLowOrderKinematicPair_TX,
+                                         const Standard_Boolean theLowOrderKinematicPair_TY,
+                                         const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                         const Standard_Boolean theLowOrderKinematicPair_RX,
+                                         const Standard_Boolean theLowOrderKinematicPair_RY,
+                                         const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                         const Standard_Boolean hasInputSkewAngle,
+                                         const Standard_Real theInputSkewAngle)
+{
+  StepKinematics_LowOrderKinematicPair::Init(theRepresentationItem_Name,
+                                             theItemDefinedTransformation_Name,
+                                             hasItemDefinedTransformation_Description,
+                                             theItemDefinedTransformation_Description,
+                                             theItemDefinedTransformation_TransformItem1,
+                                             theItemDefinedTransformation_TransformItem2,
+                                             theKinematicPair_Joint,
+                                             theLowOrderKinematicPair_TX,
+                                             theLowOrderKinematicPair_TY,
+                                             theLowOrderKinematicPair_TZ,
+                                             theLowOrderKinematicPair_RX,
+                                             theLowOrderKinematicPair_RY,
+                                             theLowOrderKinematicPair_RZ);
+
+  defInputSkewAngle = hasInputSkewAngle;
+  if (defInputSkewAngle) {
+    myInputSkewAngle = theInputSkewAngle;
+  }
+  else myInputSkewAngle = 0;
+}
+
+//=======================================================================
+//function : InputSkewAngle
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPair::InputSkewAngle () const
+{
+  return myInputSkewAngle;
+}
+
+//=======================================================================
+//function : SetInputSkewAngle
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPair::SetInputSkewAngle (const Standard_Real theInputSkewAngle)
+{
+  myInputSkewAngle = theInputSkewAngle;
+}
+
+//=======================================================================
+//function : HasInputSkewAngle
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_UniversalPair::HasInputSkewAngle () const
+{
+  return defInputSkewAngle;
+}
diff --git a/src/StepKinematics/StepKinematics_UniversalPair.hxx b/src/StepKinematics/StepKinematics_UniversalPair.hxx
new file mode 100644 (file)
index 0000000..af35c66
--- /dev/null
@@ -0,0 +1,70 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_UniversalPair_HeaderFile_
+#define _StepKinematics_UniversalPair_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_LowOrderKinematicPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_UniversalPair, StepKinematics_LowOrderKinematicPair)
+
+//! Representation of STEP entity UniversalPair
+class StepKinematics_UniversalPair : public StepKinematics_LowOrderKinematicPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_UniversalPair();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasInputSkewAngle,
+                           const Standard_Real theInputSkewAngle);
+
+  //! Returns field InputSkewAngle
+  Standard_EXPORT Standard_Real InputSkewAngle() const;
+  //! Sets field InputSkewAngle
+  Standard_EXPORT void SetInputSkewAngle (const Standard_Real theInputSkewAngle);
+  //! Returns True if optional field InputSkewAngle is defined
+  Standard_EXPORT Standard_Boolean HasInputSkewAngle() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_UniversalPair, StepKinematics_LowOrderKinematicPair)
+
+private:
+  Standard_Real myInputSkewAngle; //!< optional
+  Standard_Boolean defInputSkewAngle; //!< flag "is InputSkewAngle defined"
+
+};
+#endif // _StepKinematics_UniversalPair_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_UniversalPairValue.cxx b/src/StepKinematics/StepKinematics_UniversalPairValue.cxx
new file mode 100644 (file)
index 0000000..d4315d9
--- /dev/null
@@ -0,0 +1,86 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_UniversalPairValue.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_UniversalPairValue, StepKinematics_PairValue)
+
+//=======================================================================
+//function : StepKinematics_UniversalPairValue
+//purpose  : 
+//=======================================================================
+
+StepKinematics_UniversalPairValue::StepKinematics_UniversalPairValue ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairValue::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                              const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                                              const Standard_Real theFirstRotationAngle,
+                                              const Standard_Real theSecondRotationAngle)
+{
+  StepKinematics_PairValue::Init(theRepresentationItem_Name,
+                                 thePairValue_AppliesToPair);
+
+  myFirstRotationAngle = theFirstRotationAngle;
+
+  mySecondRotationAngle = theSecondRotationAngle;
+}
+
+//=======================================================================
+//function : FirstRotationAngle
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPairValue::FirstRotationAngle () const
+{
+  return myFirstRotationAngle;
+}
+
+//=======================================================================
+//function : SetFirstRotationAngle
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairValue::SetFirstRotationAngle (const Standard_Real theFirstRotationAngle)
+{
+  myFirstRotationAngle = theFirstRotationAngle;
+}
+
+//=======================================================================
+//function : SecondRotationAngle
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPairValue::SecondRotationAngle () const
+{
+  return mySecondRotationAngle;
+}
+
+//=======================================================================
+//function : SetSecondRotationAngle
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairValue::SetSecondRotationAngle (const Standard_Real theSecondRotationAngle)
+{
+  mySecondRotationAngle = theSecondRotationAngle;
+}
diff --git a/src/StepKinematics/StepKinematics_UniversalPairValue.hxx b/src/StepKinematics/StepKinematics_UniversalPairValue.hxx
new file mode 100644 (file)
index 0000000..e132930
--- /dev/null
@@ -0,0 +1,60 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_UniversalPairValue_HeaderFile_
+#define _StepKinematics_UniversalPairValue_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_PairValue.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_UniversalPairValue, StepKinematics_PairValue)
+
+//! Representation of STEP entity UniversalPairValue
+class StepKinematics_UniversalPairValue : public StepKinematics_PairValue
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_UniversalPairValue();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(StepKinematics_KinematicPair)& thePairValue_AppliesToPair,
+                           const Standard_Real theFirstRotationAngle,
+                           const Standard_Real theSecondRotationAngle);
+
+  //! Returns field FirstRotationAngle
+  Standard_EXPORT Standard_Real FirstRotationAngle() const;
+  //! Sets field FirstRotationAngle
+  Standard_EXPORT void SetFirstRotationAngle (const Standard_Real theFirstRotationAngle);
+
+  //! Returns field SecondRotationAngle
+  Standard_EXPORT Standard_Real SecondRotationAngle() const;
+  //! Sets field SecondRotationAngle
+  Standard_EXPORT void SetSecondRotationAngle (const Standard_Real theSecondRotationAngle);
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_UniversalPairValue, StepKinematics_PairValue)
+
+private:
+  Standard_Real myFirstRotationAngle;
+  Standard_Real mySecondRotationAngle;
+
+};
+#endif // _StepKinematics_UniversalPairValue_HeaderFile_
diff --git a/src/StepKinematics/StepKinematics_UniversalPairWithRange.cxx b/src/StepKinematics/StepKinematics_UniversalPairWithRange.cxx
new file mode 100644 (file)
index 0000000..44ceefd
--- /dev/null
@@ -0,0 +1,222 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepKinematics_UniversalPairWithRange.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepKinematics_UniversalPairWithRange, StepKinematics_UniversalPair)
+
+//=======================================================================
+//function : StepKinematics_UniversalPairWithRange
+//purpose  : 
+//=======================================================================
+
+StepKinematics_UniversalPairWithRange::StepKinematics_UniversalPairWithRange ()
+{
+  defLowerLimitFirstRotation = Standard_False;
+  defUpperLimitFirstRotation = Standard_False;
+  defLowerLimitSecondRotation = Standard_False;
+  defUpperLimitSecondRotation = Standard_False;
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairWithRange::Init (const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                                                  const Standard_Boolean hasItemDefinedTransformation_Description,
+                                                  const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                                                  const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                                                  const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TX,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TY,
+                                                  const Standard_Boolean theLowOrderKinematicPair_TZ,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RX,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RY,
+                                                  const Standard_Boolean theLowOrderKinematicPair_RZ,
+                                                  const Standard_Boolean hasUniversalPair_InputSkewAngle,
+                                                  const Standard_Real theUniversalPair_InputSkewAngle,
+                                                  const Standard_Boolean hasLowerLimitFirstRotation,
+                                                  const Standard_Real theLowerLimitFirstRotation,
+                                                  const Standard_Boolean hasUpperLimitFirstRotation,
+                                                  const Standard_Real theUpperLimitFirstRotation,
+                                                  const Standard_Boolean hasLowerLimitSecondRotation,
+                                                  const Standard_Real theLowerLimitSecondRotation,
+                                                  const Standard_Boolean hasUpperLimitSecondRotation,
+                                                  const Standard_Real theUpperLimitSecondRotation)
+{
+  StepKinematics_UniversalPair::Init(theRepresentationItem_Name,
+                                     theItemDefinedTransformation_Name,
+                                     hasItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_Description,
+                                     theItemDefinedTransformation_TransformItem1,
+                                     theItemDefinedTransformation_TransformItem2,
+                                     theKinematicPair_Joint,
+                                     theLowOrderKinematicPair_TX,
+                                     theLowOrderKinematicPair_TY,
+                                     theLowOrderKinematicPair_TZ,
+                                     theLowOrderKinematicPair_RX,
+                                     theLowOrderKinematicPair_RY,
+                                     theLowOrderKinematicPair_RZ,
+                                     hasUniversalPair_InputSkewAngle,
+                                     theUniversalPair_InputSkewAngle);
+
+  defLowerLimitFirstRotation = hasLowerLimitFirstRotation;
+  if (defLowerLimitFirstRotation) {
+    myLowerLimitFirstRotation = theLowerLimitFirstRotation;
+  }
+  else myLowerLimitFirstRotation = 0;
+
+  defUpperLimitFirstRotation = hasUpperLimitFirstRotation;
+  if (defUpperLimitFirstRotation) {
+    myUpperLimitFirstRotation = theUpperLimitFirstRotation;
+  }
+  else myUpperLimitFirstRotation = 0;
+
+  defLowerLimitSecondRotation = hasLowerLimitSecondRotation;
+  if (defLowerLimitSecondRotation) {
+    myLowerLimitSecondRotation = theLowerLimitSecondRotation;
+  }
+  else myLowerLimitSecondRotation = 0;
+
+  defUpperLimitSecondRotation = hasUpperLimitSecondRotation;
+  if (defUpperLimitSecondRotation) {
+    myUpperLimitSecondRotation = theUpperLimitSecondRotation;
+  }
+  else myUpperLimitSecondRotation = 0;
+}
+
+//=======================================================================
+//function : LowerLimitFirstRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPairWithRange::LowerLimitFirstRotation () const
+{
+  return myLowerLimitFirstRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitFirstRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairWithRange::SetLowerLimitFirstRotation (const Standard_Real theLowerLimitFirstRotation)
+{
+  myLowerLimitFirstRotation = theLowerLimitFirstRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitFirstRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_UniversalPairWithRange::HasLowerLimitFirstRotation () const
+{
+  return defLowerLimitFirstRotation;
+}
+
+//=======================================================================
+//function : UpperLimitFirstRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPairWithRange::UpperLimitFirstRotation () const
+{
+  return myUpperLimitFirstRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitFirstRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairWithRange::SetUpperLimitFirstRotation (const Standard_Real theUpperLimitFirstRotation)
+{
+  myUpperLimitFirstRotation = theUpperLimitFirstRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitFirstRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_UniversalPairWithRange::HasUpperLimitFirstRotation () const
+{
+  return defUpperLimitFirstRotation;
+}
+
+//=======================================================================
+//function : LowerLimitSecondRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPairWithRange::LowerLimitSecondRotation () const
+{
+  return myLowerLimitSecondRotation;
+}
+
+//=======================================================================
+//function : SetLowerLimitSecondRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairWithRange::SetLowerLimitSecondRotation (const Standard_Real theLowerLimitSecondRotation)
+{
+  myLowerLimitSecondRotation = theLowerLimitSecondRotation;
+}
+
+//=======================================================================
+//function : HasLowerLimitSecondRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_UniversalPairWithRange::HasLowerLimitSecondRotation () const
+{
+  return defLowerLimitSecondRotation;
+}
+
+//=======================================================================
+//function : UpperLimitSecondRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Real StepKinematics_UniversalPairWithRange::UpperLimitSecondRotation () const
+{
+  return myUpperLimitSecondRotation;
+}
+
+//=======================================================================
+//function : SetUpperLimitSecondRotation
+//purpose  : 
+//=======================================================================
+
+void StepKinematics_UniversalPairWithRange::SetUpperLimitSecondRotation (const Standard_Real theUpperLimitSecondRotation)
+{
+  myUpperLimitSecondRotation = theUpperLimitSecondRotation;
+}
+
+//=======================================================================
+//function : HasUpperLimitSecondRotation
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean StepKinematics_UniversalPairWithRange::HasUpperLimitSecondRotation () const
+{
+  return defUpperLimitSecondRotation;
+}
diff --git a/src/StepKinematics/StepKinematics_UniversalPairWithRange.hxx b/src/StepKinematics/StepKinematics_UniversalPairWithRange.hxx
new file mode 100644 (file)
index 0000000..3aa2ee8
--- /dev/null
@@ -0,0 +1,105 @@
+// Created on : Sat May 02 12:41:16 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepKinematics_UniversalPairWithRange_HeaderFile_
+#define _StepKinematics_UniversalPairWithRange_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <StepKinematics_UniversalPair.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepKinematics_KinematicJoint.hxx>
+
+DEFINE_STANDARD_HANDLE(StepKinematics_UniversalPairWithRange, StepKinematics_UniversalPair)
+
+//! Representation of STEP entity UniversalPairWithRange
+class StepKinematics_UniversalPairWithRange : public StepKinematics_UniversalPair
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepKinematics_UniversalPairWithRange();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theRepresentationItem_Name,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Name,
+                           const Standard_Boolean hasItemDefinedTransformation_Description,
+                           const Handle(TCollection_HAsciiString)& theItemDefinedTransformation_Description,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem1,
+                           const Handle(StepRepr_RepresentationItem)& theItemDefinedTransformation_TransformItem2,
+                           const Handle(StepKinematics_KinematicJoint)& theKinematicPair_Joint,
+                           const Standard_Boolean theLowOrderKinematicPair_TX,
+                           const Standard_Boolean theLowOrderKinematicPair_TY,
+                           const Standard_Boolean theLowOrderKinematicPair_TZ,
+                           const Standard_Boolean theLowOrderKinematicPair_RX,
+                           const Standard_Boolean theLowOrderKinematicPair_RY,
+                           const Standard_Boolean theLowOrderKinematicPair_RZ,
+                           const Standard_Boolean hasUniversalPair_InputSkewAngle,
+                           const Standard_Real theUniversalPair_InputSkewAngle,
+                           const Standard_Boolean hasLowerLimitFirstRotation,
+                           const Standard_Real theLowerLimitFirstRotation,
+                           const Standard_Boolean hasUpperLimitFirstRotation,
+                           const Standard_Real theUpperLimitFirstRotation,
+                           const Standard_Boolean hasLowerLimitSecondRotation,
+                           const Standard_Real theLowerLimitSecondRotation,
+                           const Standard_Boolean hasUpperLimitSecondRotation,
+                           const Standard_Real theUpperLimitSecondRotation);
+
+  //! Returns field LowerLimitFirstRotation
+  Standard_EXPORT Standard_Real LowerLimitFirstRotation() const;
+  //! Sets field LowerLimitFirstRotation
+  Standard_EXPORT void SetLowerLimitFirstRotation (const Standard_Real theLowerLimitFirstRotation);
+  //! Returns True if optional field LowerLimitFirstRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitFirstRotation() const;
+
+  //! Returns field UpperLimitFirstRotation
+  Standard_EXPORT Standard_Real UpperLimitFirstRotation() const;
+  //! Sets field UpperLimitFirstRotation
+  Standard_EXPORT void SetUpperLimitFirstRotation (const Standard_Real theUpperLimitFirstRotation);
+  //! Returns True if optional field UpperLimitFirstRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitFirstRotation() const;
+
+  //! Returns field LowerLimitSecondRotation
+  Standard_EXPORT Standard_Real LowerLimitSecondRotation() const;
+  //! Sets field LowerLimitSecondRotation
+  Standard_EXPORT void SetLowerLimitSecondRotation (const Standard_Real theLowerLimitSecondRotation);
+  //! Returns True if optional field LowerLimitSecondRotation is defined
+  Standard_EXPORT Standard_Boolean HasLowerLimitSecondRotation() const;
+
+  //! Returns field UpperLimitSecondRotation
+  Standard_EXPORT Standard_Real UpperLimitSecondRotation() const;
+  //! Sets field UpperLimitSecondRotation
+  Standard_EXPORT void SetUpperLimitSecondRotation (const Standard_Real theUpperLimitSecondRotation);
+  //! Returns True if optional field UpperLimitSecondRotation is defined
+  Standard_EXPORT Standard_Boolean HasUpperLimitSecondRotation() const;
+
+DEFINE_STANDARD_RTTIEXT(StepKinematics_UniversalPairWithRange, StepKinematics_UniversalPair)
+
+private:
+  Standard_Real myLowerLimitFirstRotation; //!< optional
+  Standard_Real myUpperLimitFirstRotation; //!< optional
+  Standard_Real myLowerLimitSecondRotation; //!< optional
+  Standard_Real myUpperLimitSecondRotation; //!< optional
+  Standard_Boolean defLowerLimitFirstRotation; //!< flag "is LowerLimitFirstRotation defined"
+  Standard_Boolean defUpperLimitFirstRotation; //!< flag "is UpperLimitFirstRotation defined"
+  Standard_Boolean defLowerLimitSecondRotation; //!< flag "is LowerLimitSecondRotation defined"
+  Standard_Boolean defUpperLimitSecondRotation; //!< flag "is UpperLimitSecondRotation defined"
+
+};
+#endif // _StepKinematics_UniversalPairWithRange_HeaderFile_
index 39c589d91eae929d87ac86d54f71cf467a52591c..ab9522c9e3fc7480929d307d73a1ac7217377fb8 100644 (file)
@@ -114,10 +114,16 @@ StepRepr_Representation.cxx
 StepRepr_Representation.hxx
 StepRepr_RepresentationContext.cxx
 StepRepr_RepresentationContext.hxx
+StepRepr_RepresentationContextReference.cxx
+StepRepr_RepresentationContextReference.hxx
 StepRepr_RepresentationItem.cxx
 StepRepr_RepresentationItem.hxx
 StepRepr_RepresentationMap.cxx
 StepRepr_RepresentationMap.hxx
+StepRepr_RepresentationOrRepresentationReference.cxx
+StepRepr_RepresentationOrRepresentationReference.hxx
+StepRepr_RepresentationReference.cxx
+StepRepr_RepresentationReference.hxx
 StepRepr_RepresentationRelationship.cxx
 StepRepr_RepresentationRelationship.hxx
 StepRepr_RepresentationRelationshipWithTransformation.cxx
index 71b35685c20daecfd2a6d8c99a652ee1772bd7dd..0dc93d7878de9eaddc4c88628205f7478cc2fb66 100644 (file)
@@ -42,6 +42,11 @@ public:
   Standard_EXPORT void SetName (const Handle(TCollection_HAsciiString)& aName);
   
   Standard_EXPORT Handle(TCollection_HAsciiString) Name() const;
+
+  Standard_EXPORT Standard_Boolean HasDescription()
+  {
+    return !theDescription.IsNull();
+  }
   
   Standard_EXPORT void SetDescription (const Handle(TCollection_HAsciiString)& aDescription);
   
diff --git a/src/StepRepr/StepRepr_RepresentationContextReference.cxx b/src/StepRepr/StepRepr_RepresentationContextReference.cxx
new file mode 100644 (file)
index 0000000..6f1aa37
--- /dev/null
@@ -0,0 +1,59 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepRepr_RepresentationContextReference.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepRepr_RepresentationContextReference, Standard_Transient)
+
+//=======================================================================
+//function : StepRepr_RepresentationContextReference
+//purpose  : 
+//=======================================================================
+
+StepRepr_RepresentationContextReference::StepRepr_RepresentationContextReference ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepRepr_RepresentationContextReference::Init (const Handle(TCollection_HAsciiString)& theContextIdentifier)
+{
+
+  myContextIdentifier = theContextIdentifier;
+}
+
+//=======================================================================
+//function : ContextIdentifier
+//purpose  : 
+//=======================================================================
+
+Handle(TCollection_HAsciiString) StepRepr_RepresentationContextReference::ContextIdentifier () const
+{
+  return myContextIdentifier;
+}
+
+//=======================================================================
+//function : SetContextIdentifier
+//purpose  : 
+//=======================================================================
+
+void StepRepr_RepresentationContextReference::SetContextIdentifier (const Handle(TCollection_HAsciiString)& theContextIdentifier)
+{
+  myContextIdentifier = theContextIdentifier;
+}
diff --git a/src/StepRepr/StepRepr_RepresentationContextReference.hxx b/src/StepRepr/StepRepr_RepresentationContextReference.hxx
new file mode 100644 (file)
index 0000000..7572465
--- /dev/null
@@ -0,0 +1,50 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepRepr_RepresentationContextReference_HeaderFile_
+#define _StepRepr_RepresentationContextReference_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <Standard_Transient.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+
+DEFINE_STANDARD_HANDLE(StepRepr_RepresentationContextReference, Standard_Transient)
+
+//! Representation of STEP entity RepresentationContextReference
+class StepRepr_RepresentationContextReference : public Standard_Transient
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepRepr_RepresentationContextReference();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theContextIdentifier);
+
+  //! Returns field ContextIdentifier
+  Standard_EXPORT Handle(TCollection_HAsciiString) ContextIdentifier() const;
+  //! Sets field ContextIdentifier
+  Standard_EXPORT void SetContextIdentifier (const Handle(TCollection_HAsciiString)& theContextIdentifier);
+
+DEFINE_STANDARD_RTTIEXT(StepRepr_RepresentationContextReference, Standard_Transient)
+
+private:
+  Handle(TCollection_HAsciiString) myContextIdentifier;
+
+};
+#endif // _StepRepr_RepresentationContextReference_HeaderFile_
diff --git a/src/StepRepr/StepRepr_RepresentationOrRepresentationReference.cxx b/src/StepRepr/StepRepr_RepresentationOrRepresentationReference.cxx
new file mode 100644 (file)
index 0000000..2232141
--- /dev/null
@@ -0,0 +1,61 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepRepr_RepresentationOrRepresentationReference.hxx>
+#include <StepRepr_Representation.hxx>
+#include <StepRepr_RepresentationReference.hxx>
+
+//=======================================================================
+//function : StepRepr_RepresentationOrRepresentationReference
+//purpose  : 
+//=======================================================================
+
+StepRepr_RepresentationOrRepresentationReference::StepRepr_RepresentationOrRepresentationReference ()
+{
+}
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepRepr_RepresentationOrRepresentationReference::CaseNum (const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepRepr_Representation))) return 1;
+  if (ent->IsKind(STANDARD_TYPE(StepRepr_RepresentationReference))) return 2;
+  return 0;
+}
+
+//=======================================================================
+//function : Representation
+//purpose  : 
+//=======================================================================
+
+Handle(StepRepr_Representation) StepRepr_RepresentationOrRepresentationReference::Representation () const
+{
+  return Handle(StepRepr_Representation)::DownCast(Value());
+}
+
+//=======================================================================
+//function : RepresentationReference
+//purpose  : 
+//=======================================================================
+
+Handle(StepRepr_RepresentationReference) StepRepr_RepresentationOrRepresentationReference::RepresentationReference () const
+{
+  return Handle(StepRepr_RepresentationReference)::DownCast(Value());
+}
diff --git a/src/StepRepr/StepRepr_RepresentationOrRepresentationReference.hxx b/src/StepRepr/StepRepr_RepresentationOrRepresentationReference.hxx
new file mode 100644 (file)
index 0000000..bad4a60
--- /dev/null
@@ -0,0 +1,53 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepRepr_RepresentationOrRepresentationReference_HeaderFile
+#define _StepRepr_RepresentationOrRepresentationReference_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+
+class Standard_Transient;
+class StepRepr_Representation;
+class StepRepr_RepresentationReference;
+
+//! Representation of STEP SELECT type RepresentationOrRepresentationReference
+class StepRepr_RepresentationOrRepresentationReference : public StepData_SelectType
+{
+
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT StepRepr_RepresentationOrRepresentationReference();
+
+  //! Recognizes a kind of RepresentationOrRepresentationReference select type
+  //! -- 1 -> Representation
+  //! -- 2 -> RepresentationReference
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
+
+  //! Returns Value as Representation (or Null if another type)
+  Standard_EXPORT Handle(StepRepr_Representation) Representation() const;
+
+  //! Returns Value as RepresentationReference (or Null if another type)
+  Standard_EXPORT Handle(StepRepr_RepresentationReference) RepresentationReference() const;
+
+};
+#endif // _StepRepr_RepresentationOrRepresentationReference_HeaderFile
diff --git a/src/StepRepr/StepRepr_RepresentationReference.cxx b/src/StepRepr/StepRepr_RepresentationReference.cxx
new file mode 100644 (file)
index 0000000..16d392b
--- /dev/null
@@ -0,0 +1,82 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 <StepRepr_RepresentationReference.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepRepr_RepresentationReference, Standard_Transient)
+
+//=======================================================================
+//function : StepRepr_RepresentationReference
+//purpose  : 
+//=======================================================================
+
+StepRepr_RepresentationReference::StepRepr_RepresentationReference ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+void StepRepr_RepresentationReference::Init (const Handle(TCollection_HAsciiString)& theId,
+                                             const Handle(StepRepr_RepresentationContextReference)& theContextOfItems)
+{
+
+  myId = theId;
+
+  myContextOfItems = theContextOfItems;
+}
+
+//=======================================================================
+//function : Id
+//purpose  : 
+//=======================================================================
+
+Handle(TCollection_HAsciiString) StepRepr_RepresentationReference::Id () const
+{
+  return myId;
+}
+
+//=======================================================================
+//function : SetId
+//purpose  : 
+//=======================================================================
+
+void StepRepr_RepresentationReference::SetId (const Handle(TCollection_HAsciiString)& theId)
+{
+  myId = theId;
+}
+
+//=======================================================================
+//function : ContextOfItems
+//purpose  : 
+//=======================================================================
+
+Handle(StepRepr_RepresentationContextReference) StepRepr_RepresentationReference::ContextOfItems () const
+{
+  return myContextOfItems;
+}
+
+//=======================================================================
+//function : SetContextOfItems
+//purpose  : 
+//=======================================================================
+
+void StepRepr_RepresentationReference::SetContextOfItems (const Handle(StepRepr_RepresentationContextReference)& theContextOfItems)
+{
+  myContextOfItems = theContextOfItems;
+}
diff --git a/src/StepRepr/StepRepr_RepresentationReference.hxx b/src/StepRepr/StepRepr_RepresentationReference.hxx
new file mode 100644 (file)
index 0000000..24088a2
--- /dev/null
@@ -0,0 +1,58 @@
+// Created on : Sat May 02 12:41:14 2020 
+// Created by: Irina KRYLOVA
+// Generator:  Express (EXPRESS -> CASCADE/XSTEP Translator) V3.0
+// Copyright (c) Open CASCADE 2020
+//
+// 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 _StepRepr_RepresentationReference_HeaderFile_
+#define _StepRepr_RepresentationReference_HeaderFile_
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <Standard_Transient.hxx>
+
+#include <TCollection_HAsciiString.hxx>
+#include <StepRepr_RepresentationContextReference.hxx>
+
+DEFINE_STANDARD_HANDLE(StepRepr_RepresentationReference, Standard_Transient)
+
+//! Representation of STEP entity RepresentationReference
+class StepRepr_RepresentationReference : public Standard_Transient
+{
+public :
+
+  //! default constructor
+  Standard_EXPORT StepRepr_RepresentationReference();
+
+  //! Initialize all fields (own and inherited)
+ Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& theId,
+                           const Handle(StepRepr_RepresentationContextReference)& theContextOfItems);
+
+  //! Returns field Id
+  Standard_EXPORT Handle(TCollection_HAsciiString) Id() const;
+  //! Sets field Id
+  Standard_EXPORT void SetId (const Handle(TCollection_HAsciiString)& theId);
+
+  //! Returns field ContextOfItems
+  Standard_EXPORT Handle(StepRepr_RepresentationContextReference) ContextOfItems() const;
+  //! Sets field ContextOfItems
+  Standard_EXPORT void SetContextOfItems (const Handle(StepRepr_RepresentationContextReference)& theContextOfItems);
+
+DEFINE_STANDARD_RTTIEXT(StepRepr_RepresentationReference, Standard_Transient)
+
+private:
+  Handle(TCollection_HAsciiString) myId;
+  Handle(StepRepr_RepresentationContextReference) myContextOfItems;
+
+};
+#endif // _StepRepr_RepresentationReference_HeaderFile_
index 3577e2784ade6c3ca849895f6d2b8721492126ba..ad953cc35d8530923e62125da0b432df45f85eb3 100644 (file)
@@ -43,6 +43,11 @@ public:
   Standard_EXPORT void SetName (const Handle(TCollection_HAsciiString)& aName);
   
   Standard_EXPORT Handle(TCollection_HAsciiString) Name() const;
+
+  Standard_EXPORT Standard_Boolean HasDescription()
+  {
+    return !description.IsNull();
+  }
   
   Standard_EXPORT void SetDescription (const Handle(TCollection_HAsciiString)& aDescription);
   
index ea334447089a6967bf12088d11cb5d932a00a393..576bd0e808cc1546587ab05eb20675fd311456b7 100644 (file)
 
 #include <Interface_Macros.hxx>
 #include <Standard_Transient.hxx>
+#include <Standard_Type.hxx>
 #include <StepRepr_FunctionallyDefinedTransformation.hxx>
 #include <StepRepr_ItemDefinedTransformation.hxx>
 #include <StepRepr_Transformation.hxx>
+#include <StepKinematics_KinematicPair.hxx>
+#include <StepKinematics_ActuatedKinPairAndOrderKinPair.hxx>
 
 StepRepr_Transformation::StepRepr_Transformation () {  }
 
@@ -25,6 +28,7 @@ Standard_Integer StepRepr_Transformation::CaseNum(const Handle(Standard_Transien
        if (ent.IsNull()) return 0;
        if (ent->IsKind(STANDARD_TYPE(StepRepr_ItemDefinedTransformation))) return 1;
        if (ent->IsKind(STANDARD_TYPE(StepRepr_FunctionallyDefinedTransformation))) return 2;
+       if (ent->IsKind(STANDARD_TYPE(StepGeom_GeometricRepresentationItem))) return 1;
        return 0;
 }
 
@@ -37,3 +41,12 @@ Handle(StepRepr_FunctionallyDefinedTransformation) StepRepr_Transformation::Func
 {
        return GetCasted(StepRepr_FunctionallyDefinedTransformation,Value());
 }
+
+Handle(StepKinematics_KinematicPair) StepRepr_Transformation::KinematicPair() const
+{
+       Handle(StepKinematics_ActuatedKinPairAndOrderKinPair) aComplexPair = GetCasted(StepKinematics_ActuatedKinPairAndOrderKinPair, Value());
+       if (aComplexPair.IsNull())
+               return  GetCasted(StepKinematics_KinematicPair, Value());
+       return GetCasted(StepKinematics_KinematicPair, aComplexPair->GetOrderKinematicPair());
+}
+
index b4d59c045d9afb55a36f4730abbf116736da3b4f..b7e084394de33d49d42f741f103614efd6c8d1cf 100644 (file)
@@ -26,6 +26,7 @@
 class Standard_Transient;
 class StepRepr_ItemDefinedTransformation;
 class StepRepr_FunctionallyDefinedTransformation;
+class StepKinematics_KinematicPair;
 
 
 
@@ -51,7 +52,8 @@ public:
   //! returns Value as a FunctionallyDefinedTransformation (Null if another type)
   Standard_EXPORT Handle(StepRepr_FunctionallyDefinedTransformation) FunctionallyDefinedTransformation() const;
 
-
+  //! returns Value as a StepKinematics_KinematicPair (Null if another type)
+  Standard_EXPORT Handle(StepKinematics_KinematicPair) KinematicPair() const;
 
 
 protected:
index 7b9c3777794a3abd96c33f74a46c1c2e909a48c3..e16fc3a903c022417f5a91aa8e506e80a76b3d73 100644 (file)
 #include <StepGeom_UniformSurface.hxx>
 #include <StepGeom_UniformSurfaceAndRationalBSplineSurface.hxx>
 #include <StepGeom_Vector.hxx>
+#include <StepKinematics_SuParameters.hxx>
 
 #include <TopoDS.hxx>
 #include <TopoDS_Face.hxx>
@@ -202,6 +203,28 @@ Handle(Geom_Axis2Placement) StepToGeom::MakeAxis2Placement (const Handle(StepGeo
   return 0;
 }
 
+//=============================================================================
+// Creation d' un AxisPlacement de Geom2d a partir d' un SuParameters de Step
+//=============================================================================
+
+Handle(Geom_Axis2Placement) StepToGeom::MakeAxis2Placement(const Handle(StepKinematics_SuParameters)& SP)
+{
+  Standard_Real aLocX = SP->A() * cos(SP->Gamma()) + SP->B() * sin(SP->Gamma()) * sin(SP->Alpha());
+  Standard_Real aLocY = SP->A() * sin(SP->Gamma()) - SP->B() * cos(SP->Gamma()) * sin(SP->Alpha());
+  Standard_Real aLocZ = SP->C() + SP->B() * cos(SP->Alpha());
+  Standard_Real anAsisX = sin(SP->Gamma()) * sin(SP->Alpha());
+  Standard_Real anAxisY = -cos(SP->Gamma()) * sin(SP->Alpha());
+  Standard_Real anAxisZ = cos(SP->Alpha());
+  Standard_Real aDirX = cos(SP->Gamma()) * cos(SP->Beta()) - sin(SP->Gamma()) * cos(SP->Alpha()) * sin(SP->Beta());
+  Standard_Real aDirY = sin(SP->Gamma()) * cos(SP->Beta()) + cos(SP->Gamma()) * cos(SP->Alpha()) * sin(SP->Beta());
+  Standard_Real aDirZ = sin(SP->Alpha())*sin(SP->Beta());
+  const gp_Pnt Pgp (aLocX, aLocY, aLocZ);
+  const gp_Dir Ngp (anAsisX,anAxisY,anAxisZ);
+  const gp_Dir Vxgp(aDirX, aDirY, aDirZ);
+  gp_Ax2 gpAx2 = gp_Ax2(Pgp, Ngp, Vxgp);
+    return new Geom_Axis2Placement(gpAx2);
+}
+
 //=============================================================================
 // Creation d' un AxisPlacement de Geom2d a partir d' un axis2_placement_3d de Step
 //=============================================================================
index d95d975597d0baec396562f158ca35b93d62e725..ac89d1c085faa50a374c36460ceeef3eb57d68bb 100644 (file)
@@ -100,6 +100,7 @@ class StepGeom_CartesianTransformationOperator2d;
 class StepGeom_CartesianTransformationOperator3d;
 class StepGeom_TrimmedCurve;
 class StepGeom_Vector;
+class StepKinematics_SuParameters;
 
 //! This class provides static methods to convert STEP geometric entities to OCCT.
 //! The methods returning handles will return null handle in case of error.
@@ -111,6 +112,7 @@ public:
 
   Standard_EXPORT static Handle(Geom_Axis1Placement) MakeAxis1Placement (const Handle(StepGeom_Axis1Placement)& SA);
   Standard_EXPORT static Handle(Geom_Axis2Placement) MakeAxis2Placement (const Handle(StepGeom_Axis2Placement3d)& SA);
+  Standard_EXPORT static Handle(Geom_Axis2Placement) MakeAxis2Placement (const Handle(StepKinematics_SuParameters)& SP);
   Standard_EXPORT static Handle(Geom2d_AxisPlacement) MakeAxisPlacement (const Handle(StepGeom_Axis2Placement2d)& SA);
   Standard_EXPORT static Handle(Geom_BoundedCurve) MakeBoundedCurve (const Handle(StepGeom_BoundedCurve)& SC);
   Standard_EXPORT static Handle(Geom2d_BoundedCurve) MakeBoundedCurve2d (const Handle(StepGeom_BoundedCurve)& SC);
index fcd9709c455fb0f32c8209cf80a696a891e4bd94..b6bf50c60d4791dcd3ee343abaa3e686194b9a65 100755 (executable)
@@ -2,3 +2,5 @@ StepVisual
 RWStepVisual
 StepDimTol
 RWStepDimTol
+StepKinematics
+RWStepKinematics
index 740c0b62d1ab83a231be9aa1d4201dccef9698cf..b84ce40a8ebd96abb9350405992a3fb1b92d8744 100755 (executable)
@@ -4,3 +4,4 @@ XCAFNoteObjects
 XCAFDoc
 XCAFPrs
 XCAFView
+XCAFKinematics
index 5b3030fdd8a75a1ccb640420582b346076a929f8..bcf30280b9c56a21fa6d23df11a5b000deff424c 100755 (executable)
@@ -37,6 +37,12 @@ XCAFDoc_Editor.hxx
 XCAFDoc_GraphNode.cxx
 XCAFDoc_GraphNode.hxx
 XCAFDoc_GraphNodeSequence.hxx
+XCAFDoc_KinematicPair.cxx
+XCAFDoc_KinematicPair.hxx
+XCAFDoc_KinematicPairValue.cxx
+XCAFDoc_KinematicPairValue.hxx
+XCAFDoc_KinematicTool.cxx
+XCAFDoc_KinematicTool.hxx
 XCAFDoc_LayerTool.cxx
 XCAFDoc_LayerTool.hxx
 XCAFDoc_Location.cxx
index 737000ee84e9b15735dc5372541794abf5753ca7..8baa4fc485c1a4005b72d18f269950adc7085c64 100755 (executable)
@@ -47,3 +47,11 @@ efd212f4-6dfd-11d4-b9c8-0060b0ee281b: LayerTool attribute
 efd212f5-6dfd-11d4-b9c8-0060b0ee281b: GraphNode attribute
 efd212f6-6dfd-11d4-b9c8-0060b0ee281b
 efd212f7-6dfd-11d4-b9c8-0060b0ee281b
+
+CD65A782-448C-4935-8499-2210D970C175: Kinematics attributes
+35FF1462-E684-465F-B0B9-5CAD14B5018F
+6AA96F91-7436-46F9-A955-4B3CCC42592B
+89FB0996-A8B8-4085-87A9-63AB5D56D8C1
+8A9E9B60-7CA1-45F1-882A-42390D4DB894
+6BE4AAD0-36BE-4D17-B65C-0B2062E04D92
+4F451E46-0AC9-4270-90E4-D96605CDE635
index d00a8d281ac0bfb7d2c219a9a8f4ab944ca0e806..bb8fc4d06ddecfd160e29e09504f34d63a7655c6 100644 (file)
@@ -303,3 +303,37 @@ const Standard_GUID& XCAFDoc::LockGUID()
   static const Standard_GUID ID("efd213eb-6dfd-11d4-b9c8-0060b0ee281b");
   return ID;
 }
+
+//=======================================================================
+//function : KinematicRefShapeGUID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& XCAFDoc::KinematicRefShapeGUID()
+{
+  static const Standard_GUID ID("CD65A782-448C-4935-8499-2210D970C175");
+  return ID;
+}
+
+//=======================================================================
+//function : KinematicRefLink1GUID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& XCAFDoc::KinematicRefLink1GUID()
+{
+  static const Standard_GUID ID("35FF1462-E684-465F-B0B9-5CAD14B5018F");
+  return ID;
+}
+
+//=======================================================================
+//function : KinematicRefLink2GUID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& XCAFDoc::KinematicRefLink2GUID()
+{
+  static const Standard_GUID ID("6AA96F91-7436-46F9-A955-4B3CCC42592B");
+  return ID;
+}
+
index c4bc8f29965c3dc51b059418412d3b87dad1f2f5..9574cbcf703bbe66a8446dd6525c6000397bc0f6 100644 (file)
@@ -43,6 +43,7 @@ class XCAFDoc_MaterialTool;
 class XCAFDoc_GraphNode;
 class XCAFDoc_Editor;
 class XCAFDoc_ViewTool;
+class XCAFDoc_KinematicTool;
 
 
 //! Definition of general structure of DECAF document
@@ -133,6 +134,15 @@ public:
   //! Returns GUID for UAttribute identifying lock flag
   Standard_EXPORT static const Standard_GUID& LockGUID();
 
+  //! Return GUIDs for GraphNode representing specified types of Kinematics
+  Standard_EXPORT static const Standard_GUID& KinematicRefShapeGUID();
+
+  //! Return GUIDs for TreeNode representing specified types of Kinematics
+  Standard_EXPORT static const Standard_GUID& KinematicRefLink1GUID();
+
+  //! Return GUIDs for TreeNode representing specified types of Kinematics
+  Standard_EXPORT static const Standard_GUID& KinematicRefLink2GUID();
+
 };
 
 #endif // _XCAFDoc_HeaderFile
index 5ed422354fd65aaffd6bce6b7bf835cd2b40e740..e61218cc8d19584356f9e73d8bf41fb8a433ae63 100644 (file)
@@ -28,6 +28,7 @@
 #include <XCAFDoc_ColorTool.hxx>
 #include <XCAFDoc_ClippingPlaneTool.hxx>
 #include <XCAFDoc_DimTolTool.hxx>
+#include <XCAFDoc_KinematicTool.hxx>
 #include <XCAFDoc_LayerTool.hxx>
 #include <XCAFDoc_MaterialTool.hxx>
 #include <XCAFDoc_NotesTool.hxx>
@@ -88,6 +89,7 @@ Handle(XCAFDoc_DocumentTool) XCAFDoc_DocumentTool::Set(const TDF_Label& L,
     XCAFDoc_NotesTool::Set(NotesLabel(L));
     XCAFDoc_ViewTool::Set(ViewsLabel(L));
     XCAFDoc_ClippingPlaneTool::Set(ClippingPlanesLabel(L));
+    XCAFDoc_KinematicTool::Set(KinematicsLabel(L));
   }
   return A;
 }
@@ -237,6 +239,18 @@ TDF_Label XCAFDoc_DocumentTool::VisMaterialLabel (const TDF_Label& theLabel)
   return aLabel;
 }
 
+//=======================================================================
+//function : KinematicsLabel
+//purpose  : 
+//=======================================================================
+
+TDF_Label XCAFDoc_DocumentTool::KinematicsLabel(const TDF_Label& acces)
+{
+  TDF_Label L = DocLabel(acces).FindChild(11, Standard_True);
+  TDataStd_Name::Set(L, "Kinematics");
+  return L;
+}
+
 //=======================================================================
 //function : ShapeTool
 //purpose  : 
@@ -329,6 +343,16 @@ Handle(XCAFDoc_NotesTool) XCAFDoc_DocumentTool::NotesTool(const TDF_Label& acces
   return XCAFDoc_NotesTool::Set(NotesLabel(acces));
 }
 
+//=======================================================================
+//function : KinematicTool
+//purpose  : 
+//=======================================================================
+
+Handle(XCAFDoc_KinematicTool) XCAFDoc_DocumentTool::KinematicTool(const TDF_Label& acces)
+{
+  return XCAFDoc_KinematicTool::Set(KinematicsLabel(acces));
+}
+
 //=======================================================================
 //function : ID
 //purpose  : 
index 0690323d231465c988fa894565acfda8b1d20306..070dec51f2bca57da5ec9b341c3d9854f4bdcaaf 100644 (file)
@@ -33,6 +33,7 @@ class XCAFDoc_MaterialTool;
 class XCAFDoc_NotesTool;
 class XCAFDoc_ViewTool;
 class XCAFDoc_VisMaterialTool;
+class XCAFDoc_KinematicTool;
 class TDF_Attribute;
 class TDF_RelocationTable;
 
@@ -92,6 +93,9 @@ public:
   //! Returns sub-label of DocLabel() with tag 10.
   Standard_EXPORT static TDF_Label VisMaterialLabel (const TDF_Label& theLabel);
 
+  //! Returns sub-label of DocLabel() with tag 11.
+  Standard_EXPORT static TDF_Label KinematicsLabel (const TDF_Label& acces);
+
   //! Creates (if it does not exist) ShapeTool attribute on ShapesLabel().
   Standard_EXPORT static Handle(XCAFDoc_ShapeTool) ShapeTool (const TDF_Label& acces);
   
@@ -120,6 +124,9 @@ public:
   //! Creates (if it does not exist) NotesTool attribute on NotesLabel().
   Standard_EXPORT static Handle(XCAFDoc_NotesTool) NotesTool(const TDF_Label& acces);
 
+  //! Creates (if it does not exist) KinematicTool attribute on KinematicsLabel().
+  Standard_EXPORT static Handle(XCAFDoc_KinematicTool) KinematicTool(const TDF_Label& acces);
+
 public:
 
   Standard_EXPORT XCAFDoc_DocumentTool();
diff --git a/src/XCAFDoc/XCAFDoc_KinematicPair.cxx b/src/XCAFDoc/XCAFDoc_KinematicPair.cxx
new file mode 100644 (file)
index 0000000..13914a7
--- /dev/null
@@ -0,0 +1,396 @@
+// Created on: 2020-03-17
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFDoc_KinematicPair.hxx>
+
+#include <BRep_Builder.hxx>
+#include <gp_Pln.hxx>
+#include <Standard_Dump.hxx>
+#include <Standard_GUID.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <TDataStd_AsciiString.hxx>
+#include <TDataStd_Integer.hxx>
+#include <TDataStd_Name.hxx>
+#include <TDataStd_Real.hxx>
+#include <TDataStd_RealArray.hxx>
+#include <TDataXtd_Geometry.hxx>
+#include <TDataXtd_Plane.hxx>
+#include <TDF_ChildIterator.hxx>
+#include <TNaming_Builder.hxx>
+#include <TNaming_Tool.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <XCAFDoc.hxx>
+#include <XCAFKinematics_HighOrderPairObject.hxx>
+#include <XCAFKinematics_LowOrderPairObject.hxx>
+#include <XCAFKinematics_LowOrderPairObjectWithCoupling.hxx>
+#include <XCAFKinematics_PairObject.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_KinematicPair, TDF_Attribute)
+
+enum ChildLab
+{
+  ChildLab_FirstTrsf = 1,
+  ChildLab_SecondTrsf,
+  ChildLab_FirstGeomParam,
+  ChildLab_SecondGeomParam,
+  ChildLab_Value
+};
+
+//=======================================================================
+//function : XCAFDoc_KinematicPair
+//purpose  : 
+//=======================================================================
+XCAFDoc_KinematicPair::XCAFDoc_KinematicPair()
+{
+}
+
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicPair::GetID()
+{
+  static Standard_GUID PairID ("89FB0996-A8B8-4085-87A9-63AB5D56D8C1");
+  return PairID; 
+}
+
+//=======================================================================
+//function : getLimitsID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicPair::getLimitsID()
+{
+  static Standard_GUID KinematicLimitsID("8A9E9B60-7CA1-45F1-882A-42390D4DB894");
+  return KinematicLimitsID;
+}
+
+//=======================================================================
+//function : getParamsID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicPair::getParamsID()
+{
+  static Standard_GUID KinematicParamsID("6BE4AAD0-36BE-4D17-B65C-0B2062E04D92");
+  return KinematicParamsID;
+}
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+Handle(XCAFDoc_KinematicPair) XCAFDoc_KinematicPair::Set(const TDF_Label& theLabel)
+{
+  Handle(XCAFDoc_KinematicPair) anAttr;
+  if (!theLabel.FindAttribute(XCAFDoc_KinematicPair::GetID(), anAttr)) {
+    anAttr = new XCAFDoc_KinematicPair();
+    theLabel.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+//=======================================================================
+//function : SetObject
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPair::SetObject(const Handle(XCAFKinematics_PairObject)& theObject)
+{
+  Backup();
+
+  for (TDF_ChildIterator anIter(Label()); anIter.More(); anIter.Next())
+  {
+    // Check if it needs to clear value label
+    if (anIter.Value().IsEqual(Label().FindChild(ChildLab_Value))) {
+      Handle(TDataStd_Integer) aTypeAttr;
+      if (Label().FindAttribute(TDataStd_Integer::GetID(), aTypeAttr))
+      {
+        int aType = aTypeAttr->Get();
+        if (aType != theObject->Type())
+          anIter.Value().ForgetAllAttributes();
+      }
+    }
+    else
+      anIter.Value().ForgetAllAttributes();
+  }
+
+  // Common attributes
+  TDataStd_Name::Set(Label(), theObject->Name());
+  TDataStd_Integer::Set(Label(), theObject->Type());
+  TDataXtd_Plane::Set(Label().FindChild(ChildLab_FirstTrsf), gp_Pln(theObject->FirstTransformation()));
+  TDataXtd_Plane::Set(Label().FindChild(ChildLab_SecondTrsf), gp_Pln(theObject->SecondTransformation()));
+
+  if (!theObject->GetAllLimits().IsNull() && theObject->GetAllLimits()->Length() > 0) {
+    Handle(TDataStd_RealArray) aLimitsAttr;
+    aLimitsAttr = TDataStd_RealArray::Set(Label(), getLimitsID(), 1, theObject->GetAllLimits()->Length());
+    aLimitsAttr->ChangeArray(theObject->GetAllLimits());
+  }
+
+  // Low order pairs
+  if (theObject->Type() == XCAFKinematics_PairType_Universal ||
+      theObject->Type() == XCAFKinematics_PairType_Homokinetic) {
+    Handle(XCAFKinematics_LowOrderPairObject) anObject =
+      Handle(XCAFKinematics_LowOrderPairObject)::DownCast(theObject);
+    TDataStd_Real::Set(Label(), getParamsID(), anObject->SkewAngle());
+  }
+
+  // Low order pairs with motion coupling
+  if (theObject->Type() >= XCAFKinematics_PairType_Screw &&
+      theObject->Type() <= XCAFKinematics_PairType_Gear) {
+    Handle(XCAFKinematics_LowOrderPairObjectWithCoupling) anObject =
+      Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)::DownCast(theObject);
+    if (!anObject->GetAllParams().IsNull() && anObject->GetAllParams()->Upper() > 0) {
+      Handle(TDataStd_RealArray) aParamsAttr;
+      aParamsAttr = TDataStd_RealArray::Set(Label(), getParamsID(), 1, anObject->GetAllParams()->Upper());
+      aParamsAttr->ChangeArray(anObject->GetAllParams());
+    }
+  }
+
+  // High order pairs
+  if (theObject->Type() >= XCAFKinematics_PairType_PointOnSurface &&
+      theObject->Type() <= XCAFKinematics_PairType_RollingCurve) {
+    Handle(XCAFKinematics_HighOrderPairObject) anObject =
+      Handle(XCAFKinematics_HighOrderPairObject)::DownCast(theObject);
+    TDataStd_Integer::Set(Label(), getParamsID(), (Standard_Integer)anObject->Orientation());
+    BRep_Builder aBuilder;
+    if (theObject->Type() >= XCAFKinematics_PairType_PointOnSurface && !anObject->Surface().IsNull())
+    {
+      TopoDS_Face aFace;
+      aBuilder.MakeFace(aFace, anObject->Surface(), Precision::Confusion());
+      TNaming_Builder aTNBuild(Label().FindChild(ChildLab_FirstGeomParam));
+      aTNBuild.Generated(aFace);
+    }
+    if (theObject->Type() == XCAFKinematics_PairType_SlidingSurface ||
+        theObject->Type() == XCAFKinematics_PairType_RollingSurface)
+    {
+      TopoDS_Face aFace1, aFace2;
+      if (!anObject->FirstSurface().IsNull()) {
+        aBuilder.MakeFace(aFace1, anObject->FirstSurface(), Precision::Confusion());
+        TNaming_Builder aTNBuild1(Label().FindChild(ChildLab_FirstGeomParam));
+        aTNBuild1.Generated(aFace1);
+      }
+      if (!anObject->SecondSurface().IsNull()) {
+        aBuilder.MakeFace(aFace2, anObject->SecondSurface(), Precision::Confusion());
+        TNaming_Builder aTNBuild2(Label().FindChild(ChildLab_SecondGeomParam));
+        aTNBuild2.Generated(aFace2);
+      }
+    }
+    if (theObject->Type() == XCAFKinematics_PairType_PointOnPlanarCurve && !anObject->Curve().IsNull())
+    {
+      TopoDS_Edge anEdge;
+      aBuilder.MakeEdge(anEdge, anObject->Curve(), Precision::Confusion());
+      TNaming_Builder aTNBuild(Label().FindChild(ChildLab_FirstGeomParam));
+      aTNBuild.Generated(anEdge);
+    }
+    if (theObject->Type() == XCAFKinematics_PairType_SlidingCurve ||
+        theObject->Type() == XCAFKinematics_PairType_RollingCurve)
+    {
+      TopoDS_Edge anEdge1, anEdge2;
+      if (!anObject->FirstCurve().IsNull()) {
+        aBuilder.MakeEdge(anEdge1, anObject->FirstCurve(), Precision::Confusion());
+        TNaming_Builder aTNBuild1(Label().FindChild(ChildLab_FirstGeomParam));
+        aTNBuild1.Generated(anEdge1);
+      }
+      if (!anObject->SecondCurve().IsNull()) {
+        aBuilder.MakeEdge(anEdge2, anObject->SecondCurve(), Precision::Confusion());
+        TNaming_Builder aTNBuild2(Label().FindChild(ChildLab_SecondGeomParam));
+        aTNBuild2.Generated(anEdge2);
+      }
+    }
+  }
+}
+
+//=======================================================================
+//function : GetObject
+//purpose  : 
+//=======================================================================
+Handle(XCAFKinematics_PairObject) XCAFDoc_KinematicPair::GetObject()  const
+{
+  // Type
+  Handle(TDataStd_Integer) aTypeAttr;
+  Handle(XCAFKinematics_PairObject) anObject = new XCAFKinematics_PairObject();
+  if (Label().FindAttribute(TDataStd_Integer::GetID(), aTypeAttr))
+  {
+    int aType = aTypeAttr->Get();
+    if (aType >= XCAFKinematics_PairType_FullyConstrained &&
+        aType <= XCAFKinematics_PairType_Unconstrained)
+      anObject = new XCAFKinematics_LowOrderPairObject();
+    else if (aType >= XCAFKinematics_PairType_Screw &&
+             aType <= XCAFKinematics_PairType_Gear)
+      anObject = new XCAFKinematics_LowOrderPairObjectWithCoupling();
+    else if (aType >= XCAFKinematics_PairType_PointOnSurface &&
+             aType <= XCAFKinematics_PairType_RollingCurve)
+      anObject = new XCAFKinematics_HighOrderPairObject();
+    anObject->SetType((XCAFKinematics_PairType)aType);
+  }
+
+  // Name
+  Handle(TDataStd_Name) aNameAttr;
+  if (Label().FindAttribute(TDataStd_Name::GetID(), aNameAttr))
+    anObject->SetName(aNameAttr->Get());
+
+  //Transformations
+  Handle(TDataXtd_Plane) aTrsfAttr;
+  if (Label().FindChild(ChildLab_FirstTrsf).FindAttribute(TDataXtd_Plane::GetID(), aTrsfAttr)) {
+    gp_Pln aPlane;
+    TDataXtd_Geometry::Plane(aTrsfAttr->Label(), aPlane);
+    anObject->SetFirstTransformation(aPlane.Position());
+  }
+  if (Label().FindChild(ChildLab_SecondTrsf).FindAttribute(TDataXtd_Plane::GetID(), aTrsfAttr)) {
+    gp_Pln aPlane;
+    TDataXtd_Geometry::Plane(aTrsfAttr->Label(), aPlane);
+    anObject->SetSecondTransformation(aPlane.Position());
+  }
+
+  // Limits
+  Handle(TDataStd_RealArray) aLimitsAttr;
+  if (Label().FindAttribute(getLimitsID(), aLimitsAttr)) {
+    Handle(TColStd_HArray1OfReal) aLimitsArray = aLimitsAttr->Array();
+    anObject->SetAllLimits(aLimitsArray);
+  }
+
+  // Low order pairs
+  if (anObject->Type() == XCAFKinematics_PairType_Universal ||
+      anObject->Type() == XCAFKinematics_PairType_Homokinetic) {
+    Handle(XCAFKinematics_LowOrderPairObject) aDefObject =
+      Handle(XCAFKinematics_LowOrderPairObject)::DownCast(anObject);
+    Handle(TDataStd_Real) aParamAttr;
+    if (Label().FindAttribute(getParamsID(), aParamAttr)) {
+      aDefObject->SetSkewAngle(aParamAttr->Get());
+    }
+  }
+
+  // Low order pairs with motion coupling
+  if (anObject->Type() >= XCAFKinematics_PairType_Screw &&
+      anObject->Type() <= XCAFKinematics_PairType_Gear) {
+    Handle(XCAFKinematics_LowOrderPairObjectWithCoupling) aDefObject =
+      Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)::DownCast(anObject);
+    Handle(TDataStd_RealArray) aParamsAttr;
+    if (Label().FindAttribute(getParamsID(), aParamsAttr)) {
+      Handle(TColStd_HArray1OfReal) aParamsArray = aParamsAttr->Array();
+      aDefObject->SetAllParams(aParamsAttr->Array());
+    }
+  }
+
+  // High order pairs
+  if (anObject->Type() >= XCAFKinematics_PairType_PointOnSurface &&
+      anObject->Type() <= XCAFKinematics_PairType_RollingCurve) {
+    Handle(XCAFKinematics_HighOrderPairObject) aDefObject =
+      Handle(XCAFKinematics_HighOrderPairObject)::DownCast(anObject);
+    Handle(TDataStd_Integer) anOrienAttr;
+    if (Label().FindAttribute(getParamsID(), anOrienAttr)) {
+      aDefObject->SetOrientation(anOrienAttr->Get() != 0);
+    }
+
+    Handle(TNaming_NamedShape) aNS;
+    if (anObject->Type() == XCAFKinematics_PairType_PointOnSurface)
+    {
+      if (Label().FindChild(ChildLab_FirstGeomParam).FindAttribute(TNaming_NamedShape::GetID(), aNS))
+      {
+        TopoDS_Face aFace = TopoDS::Face(TNaming_Tool::GetShape(aNS));
+        aDefObject->SetSurface(BRep_Tool::Surface(aFace));
+      }
+    }
+    if (anObject->Type() == XCAFKinematics_PairType_SlidingSurface ||
+        anObject->Type() == XCAFKinematics_PairType_RollingSurface)
+    {
+      if (Label().FindChild(ChildLab_FirstGeomParam).FindAttribute(TNaming_NamedShape::GetID(), aNS))
+      {
+        TopoDS_Face aFace = TopoDS::Face(TNaming_Tool::GetShape(aNS));
+        aDefObject->SetFirstSurface(BRep_Tool::Surface(aFace));
+      }
+      if (Label().FindChild(ChildLab_SecondGeomParam).FindAttribute(TNaming_NamedShape::GetID(), aNS))
+      {
+        TopoDS_Face aFace = TopoDS::Face(TNaming_Tool::GetShape(aNS));
+        aDefObject->SetSecondSurface(BRep_Tool::Surface(aFace));
+      }
+    }
+    if (anObject->Type() == XCAFKinematics_PairType_PointOnPlanarCurve)
+    {
+      if (Label().FindChild(ChildLab_FirstGeomParam).FindAttribute(TNaming_NamedShape::GetID(), aNS))
+      {
+        TopoDS_Edge anEdge = TopoDS::Edge(TNaming_Tool::GetShape(aNS));
+        Standard_Real aFirst, aLast;
+        aDefObject->SetCurve(BRep_Tool::Curve(anEdge, aFirst, aLast));
+      }
+    }
+    if (anObject->Type() == XCAFKinematics_PairType_SlidingCurve ||
+        anObject->Type() == XCAFKinematics_PairType_RollingCurve)
+    {
+      if (Label().FindChild(ChildLab_FirstGeomParam).FindAttribute(TNaming_NamedShape::GetID(), aNS))
+      {
+        TopoDS_Edge anEdge = TopoDS::Edge(TNaming_Tool::GetShape(aNS));
+        Standard_Real aFirst, aLast;
+        aDefObject->SetFirstCurve(BRep_Tool::Curve(anEdge, aFirst, aLast));
+      }
+      if (Label().FindChild(ChildLab_SecondGeomParam).FindAttribute(TNaming_NamedShape::GetID(), aNS))
+      {
+        TopoDS_Edge anEdge = TopoDS::Edge(TNaming_Tool::GetShape(aNS));
+        Standard_Real aFirst, aLast;
+        aDefObject->SetSecondCurve(BRep_Tool::Curve(anEdge, aFirst, aLast));
+      }
+    }
+  }
+
+  return anObject;
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicPair::ID() const
+{
+  return GetID();
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPair::Restore(const Handle(TDF_Attribute)& /*With*/)
+{
+}
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) XCAFDoc_KinematicPair::NewEmpty() const
+{
+  return new XCAFDoc_KinematicPair();
+}
+
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPair::Paste(const Handle(TDF_Attribute)& /*Into*/,
+                                  const Handle(TDF_RelocationTable)& /*RT*/) const
+{
+}
+
+//=======================================================================
+//function : DumpJson
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPair::DumpJson(Standard_OStream& theOStream, Standard_Integer theDepth) const
+{
+  OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
+
+  OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute)
+}
diff --git a/src/XCAFDoc/XCAFDoc_KinematicPair.hxx b/src/XCAFDoc/XCAFDoc_KinematicPair.hxx
new file mode 100644 (file)
index 0000000..8b929c9
--- /dev/null
@@ -0,0 +1,77 @@
+// Created on: 2020-03-17
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFDoc_KinematicPair_HeaderFile
+#define _XCAFDoc_KinematicPair_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <TDF_Attribute.hxx>
+class Standard_GUID;
+class TDF_Label;
+class TDF_Attribute;
+class TDF_RelocationTable;
+class XCAFKinematics_PairObject;
+
+// resolve name collisions with WinAPI headers
+#ifdef GetObject
+  #undef GetObject
+#endif
+
+class XCAFDoc_KinematicPair;
+DEFINE_STANDARD_HANDLE(XCAFDoc_KinematicPair, TDF_Attribute)
+
+//! Attribute to store kinematic pair
+class XCAFDoc_KinematicPair : public TDF_Attribute
+{
+
+public:
+
+  Standard_EXPORT XCAFDoc_KinematicPair();
+  
+  Standard_EXPORT static const Standard_GUID& GetID();
+  
+  Standard_EXPORT static Handle(XCAFDoc_KinematicPair) Set (const TDF_Label& theLabel);
+  
+  Standard_EXPORT const Standard_GUID& ID() const Standard_OVERRIDE;
+  
+  Standard_EXPORT void Restore (const Handle(TDF_Attribute)& With) Standard_OVERRIDE;
+  
+  Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT void Paste(const Handle(TDF_Attribute)& Into, const Handle(TDF_RelocationTable)& RT) const Standard_OVERRIDE;
+  
+  //! Updates parent's label and its sub-labels with data taken from thePairObject.
+  //! Old data associated with the label will be lost.
+  Standard_EXPORT void SetObject(const Handle(XCAFKinematics_PairObject)& thePairObject);
+  
+  //! Returns kinematic pair object data taken from the parent's label and its sub-labels.
+  Standard_EXPORT Handle(XCAFKinematics_PairObject) GetObject() const;
+  
+  //! Dumps the content of me into the stream
+  Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
+
+private:
+
+  Standard_EXPORT static const Standard_GUID& getLimitsID();
+
+  Standard_EXPORT static const Standard_GUID& getParamsID();
+
+  DEFINE_STANDARD_RTTIEXT(XCAFDoc_KinematicPair, TDF_Attribute)
+
+};
+
+#endif
diff --git a/src/XCAFDoc/XCAFDoc_KinematicPairValue.cxx b/src/XCAFDoc/XCAFDoc_KinematicPairValue.cxx
new file mode 100644 (file)
index 0000000..069115e
--- /dev/null
@@ -0,0 +1,175 @@
+// Created on: 2020-03-30
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFDoc_KinematicPairValue.hxx>
+
+#include <Standard_Dump.hxx>
+#include <Standard_GUID.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <TDataStd_Name.hxx>
+#include <TDataStd_Integer.hxx>
+#include <TDataStd_RealArray.hxx>
+#include <TDF_ChildIterator.hxx>
+#include <XCAFDoc.hxx>
+#include <XCAFDoc_KinematicPair.hxx>
+#include <XCAFKinematics_PairValueObject.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_KinematicPairValue, TDF_Attribute)
+
+// Gor first children are reserved for kinematic pair parameters
+enum ValueLab
+{
+  ValueLab_Values = 5
+};
+
+//=======================================================================
+//function : XCAFDoc_KinematicPairValue
+//purpose  : 
+//=======================================================================
+XCAFDoc_KinematicPairValue::XCAFDoc_KinematicPairValue()
+{
+}
+
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicPairValue::GetID()
+{
+  static Standard_GUID PairValueID ("4F451E46-0AC9-4270-90E4-D96605CDE635");
+  return PairValueID; 
+}
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+Handle(XCAFDoc_KinematicPairValue) XCAFDoc_KinematicPairValue::Set(const TDF_Label& theLabel)
+{
+  Handle(XCAFDoc_KinematicPairValue) anAttr;
+  if (!theLabel.FindAttribute(XCAFDoc_KinematicPairValue::GetID(), anAttr)) {
+    anAttr = new XCAFDoc_KinematicPairValue();
+    theLabel.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+//=======================================================================
+//function : SetObject
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPairValue::SetObject(const Handle(XCAFKinematics_PairValueObject)& theObject)
+{
+  Backup();
+
+  Label().FindChild(ValueLab_Values).ForgetAllAttributes();
+
+  // Check if kinematic pair and pair value on the given label are consistent
+  Handle(XCAFDoc_KinematicPair) aPairAttr;
+  if (!Label().FindAttribute(XCAFDoc_KinematicPair::GetID(), aPairAttr))
+    return;
+  Handle(TDataStd_Integer) aMainTypeAttr;
+  if (Label().FindAttribute(TDataStd_Integer::GetID(), aMainTypeAttr))
+  {
+    int aType = aMainTypeAttr->Get();
+    if (aType != theObject->Type())
+      return;
+  }
+
+  // Check validity of object
+  if (theObject->GetAllValues()->Length() == 0)
+    return;
+
+  TDataStd_Name::Set(Label().FindChild(ValueLab_Values), "Value");
+  TDataStd_Integer::Set(Label().FindChild(ValueLab_Values), theObject->Type());
+
+  Handle(TDataStd_RealArray) aValuesAttr;
+  aValuesAttr = TDataStd_RealArray::Set(Label().FindChild(ValueLab_Values), 1, theObject->GetAllValues()->Length());
+  aValuesAttr->ChangeArray(theObject->GetAllValues());
+}
+
+//=======================================================================
+//function : GetObject
+//purpose  : 
+//=======================================================================
+Handle(XCAFKinematics_PairValueObject) XCAFDoc_KinematicPairValue::GetObject()  const
+{
+  // Type
+  Handle(TDataStd_Integer) aTypeAttr;
+  Handle(XCAFKinematics_PairValueObject) anObject = new XCAFKinematics_PairValueObject();
+  if (Label().FindChild(ValueLab_Values).FindAttribute(TDataStd_Integer::GetID(), aTypeAttr))
+  {
+    int aType = aTypeAttr->Get();
+    anObject->SetType((XCAFKinematics_PairType)aType);
+  }
+
+  // Values
+  Handle(TDataStd_RealArray) aValuesAttr;
+  if (Label().FindChild(ValueLab_Values).FindAttribute(TDataStd_RealArray::GetID(), aValuesAttr)) {
+    Handle(TColStd_HArray1OfReal) aValuesArray = aValuesAttr->Array();
+    anObject->SetAllValues(aValuesArray);
+  }
+
+  return anObject;
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicPairValue::ID() const
+{
+  return GetID();
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPairValue::Restore(const Handle(TDF_Attribute)& /*With*/)
+{
+}
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) XCAFDoc_KinematicPairValue::NewEmpty() const
+{
+  return new XCAFDoc_KinematicPairValue();
+}
+
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPairValue::Paste(const Handle(TDF_Attribute)& /*Into*/,
+                                       const Handle(TDF_RelocationTable)& /*RT*/) const
+{
+}
+
+//=======================================================================
+//function : DumpJson
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicPairValue::DumpJson(Standard_OStream& theOStream, Standard_Integer theDepth) const
+{
+  OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
+
+  OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute)
+}
diff --git a/src/XCAFDoc/XCAFDoc_KinematicPairValue.hxx b/src/XCAFDoc/XCAFDoc_KinematicPairValue.hxx
new file mode 100644 (file)
index 0000000..9acfc24
--- /dev/null
@@ -0,0 +1,77 @@
+// Created on: 2020-03-30
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFDoc_KinematicPairValue_HeaderFile
+#define _XCAFDoc_KinematicPairValue_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <TDF_Attribute.hxx>
+class Standard_GUID;
+class TDF_Label;
+class TDF_Attribute;
+class TDF_RelocationTable;
+class XCAFKinematics_PairValueObject;
+
+// resolve name collisions with WinAPI headers
+#ifdef GetObject
+  #undef GetObject
+#endif
+
+class XCAFDoc_KinematicPairValue;
+DEFINE_STANDARD_HANDLE(XCAFDoc_KinematicPairValue, TDF_Attribute)
+
+//! Attribute to store kinematic pair value.
+//! This parameter is an additional attribute for kinematic pair attribute
+//! It is prohibited to store inconsistent data:
+//! - to store this attribute without kinematic value attribute
+//! - to store attributes with different types
+class XCAFDoc_KinematicPairValue : public TDF_Attribute
+{
+
+public:
+
+  Standard_EXPORT XCAFDoc_KinematicPairValue();
+  
+  Standard_EXPORT static const Standard_GUID& GetID();
+  
+  Standard_EXPORT static Handle(XCAFDoc_KinematicPairValue) Set (const TDF_Label& theLabel);
+  
+  Standard_EXPORT const Standard_GUID& ID() const Standard_OVERRIDE;
+  
+  Standard_EXPORT void Restore (const Handle(TDF_Attribute)& With) Standard_OVERRIDE;
+  
+  Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT void Paste(const Handle(TDF_Attribute)& Into, const Handle(TDF_RelocationTable)& RT) const Standard_OVERRIDE;
+  
+  //! Updates parent's label and its sub-labels with data taken from thePairValueObject.
+  //! Old data associated with the label will be lost.
+  Standard_EXPORT void SetObject(const Handle(XCAFKinematics_PairValueObject)& thePairValueObject);
+  
+  //! Returns kinematic pair value object data taken from the parent's label and its sub-labels.
+  Standard_EXPORT Handle(XCAFKinematics_PairValueObject) GetObject() const;
+  
+  //! Dumps the content of me into the stream
+  Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
+
+private:
+
+  DEFINE_STANDARD_RTTIEXT(XCAFDoc_KinematicPairValue, TDF_Attribute)
+
+};
+
+#endif
diff --git a/src/XCAFDoc/XCAFDoc_KinematicTool.cxx b/src/XCAFDoc/XCAFDoc_KinematicTool.cxx
new file mode 100644 (file)
index 0000000..e389209
--- /dev/null
@@ -0,0 +1,529 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFDoc_KinematicTool.hxx>
+
+#include <Standard_GUID.hxx>
+#include <Standard_Type.hxx>
+#include <TDataStd_Name.hxx>
+#include <TDataStd_TreeNode.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_ChildIDIterator.hxx>
+#include <TDF_Label.hxx>
+#include <XCAFDoc.hxx>
+#include <XCAFDoc_DocumentTool.hxx>
+#include <XCAFDoc_GraphNode.hxx>
+#include <XCAFDoc_KinematicPair.hxx>
+#include <XCAFDoc_ShapeTool.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_KinematicTool, TDF_Attribute)
+
+//=======================================================================
+//function : XCAFDoc_KinematicTool
+//purpose  : 
+//=======================================================================
+XCAFDoc_KinematicTool::XCAFDoc_KinematicTool()
+{
+}
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+Handle(XCAFDoc_KinematicTool) XCAFDoc_KinematicTool::Set(const TDF_Label& theLabel) 
+{
+  Handle(XCAFDoc_KinematicTool) anAttr;
+  if (!theLabel.FindAttribute(XCAFDoc_KinematicTool::GetID(), anAttr)) {
+    anAttr = new XCAFDoc_KinematicTool();
+    theLabel.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicTool::GetID() 
+{
+  static Standard_GUID KinematicToolID("322D8F8D-8E93-4F6A-A98B-CCC2EBBCC34D");
+  return KinematicToolID; 
+}
+
+
+//=======================================================================
+//function : BaseLabel
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::BaseLabel() const
+{
+  return Label();
+}
+
+//=======================================================================
+//function : AddMechanism
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::AddMechanism()
+{
+  TDF_TagSource aTag;
+  TDF_Label aMechanismL = aTag.NewChild(Label());
+  TCollection_AsciiString aName = "Mechanism ";
+  aName.AssignCat(TCollection_AsciiString(Label().NbChildren()));
+  TDataStd_Name::Set(aMechanismL, aName);
+  TDF_Label aRootOfLinks = aMechanismL.FindChild(1);
+  TDataStd_Name::Set(aRootOfLinks, "Links");
+  TDF_Label aRootOfJoints = aMechanismL.FindChild(2);
+  TDataStd_Name::Set(aRootOfJoints, "Joints");
+  return aMechanismL;
+}
+
+//=======================================================================
+//function : IsMechanism
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFDoc_KinematicTool::IsMechanism(const TDF_Label& theLabel) const
+{
+  if (!Label().IsEqual(theLabel.Father()))
+    return Standard_False;
+
+  return (theLabel.NbChildren() == 2);
+}
+
+//=======================================================================
+//function : RemoveMechanism
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::RemoveMechanism(const TDF_Label& theLabel)
+{
+  if (!IsMechanism(theLabel))
+    return;
+
+  for (TDF_ChildIterator aLinkIt(getRootOfLinks(theLabel)); aLinkIt.More(); aLinkIt.Next())
+    RemoveLink(aLinkIt.Value());
+  for (TDF_ChildIterator aJointIt(getRootOfJoints(theLabel)); aJointIt.More(); aJointIt.Next())
+    RemoveJoint(aJointIt.Value());
+
+  theLabel.ForgetAllAttributes();
+}
+
+//=======================================================================
+//function : AddLink
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::AddLink(const TDF_Label& theMechanism)
+{
+  if (!IsMechanism(theMechanism))
+    return TDF_Label();
+
+  TDF_TagSource aTag;
+  return aTag.NewChild(getRootOfLinks(theMechanism));
+}
+
+//=======================================================================
+//function : AddLink
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::AddLink(const TDF_Label& theMechanism,
+                                         const TDF_LabelSequence& theShapes)
+{
+  TDF_Label aNewLink = AddLink(theMechanism);
+  if (aNewLink.IsNull() || theShapes.Length() == 0)
+    return aNewLink;
+
+  SetLink(aNewLink, theShapes);
+  return aNewLink;
+}
+
+//=======================================================================
+//function : AddLink
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::AddLink(const TDF_Label& theMechanism,
+                                         const TDF_Label& theShape)
+{
+  TDF_LabelSequence anAuxSequence;
+  anAuxSequence.Append(theShape);
+  return AddLink(theMechanism, anAuxSequence);
+}
+
+//=======================================================================
+//function : SetLink
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFDoc_KinematicTool::SetLink(const TDF_Label& theLink,
+                                                const TDF_LabelSequence& theShapes)
+{
+  if (theShapes.Length() == 0)
+    return Standard_False;
+
+  Handle(XCAFDoc_GraphNode) aLinkGNode;
+  Handle(XCAFDoc_GraphNode) aShapesGNode;
+
+  // Clear link from old references to shapes
+  if (theLink.FindAttribute(XCAFDoc::KinematicRefShapeGUID(), aLinkGNode)) {
+    while (aLinkGNode->NbFathers() > 0) {
+      aShapesGNode = aLinkGNode->GetFather(1);
+      aShapesGNode->UnSetChild(aLinkGNode);
+      if (aShapesGNode->NbChildren() == 0)
+        aShapesGNode->ForgetAttribute(XCAFDoc::KinematicRefShapeGUID());
+    }
+    theLink.ForgetAttribute(XCAFDoc::KinematicRefShapeGUID());
+  }
+
+  // Create new references
+  aLinkGNode = new XCAFDoc_GraphNode;
+  aLinkGNode = XCAFDoc_GraphNode::Set(theLink);
+  aLinkGNode->SetGraphID(XCAFDoc::KinematicRefShapeGUID());
+
+  for (Standard_Integer i = theShapes.Lower(); i <= theShapes.Upper(); i++) {
+    if (!theShapes.Value(i).FindAttribute(XCAFDoc::KinematicRefShapeGUID(), aShapesGNode)) {
+      aShapesGNode = new XCAFDoc_GraphNode;
+      aShapesGNode = XCAFDoc_GraphNode::Set(theShapes.Value(i));
+      aShapesGNode->SetGraphID(XCAFDoc::KinematicRefShapeGUID());
+    }
+    aShapesGNode->SetChild(aLinkGNode);
+    aLinkGNode->SetFather(aShapesGNode);
+  }
+
+  return Standard_True;
+}
+
+//=======================================================================
+//function : SetLink
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFDoc_KinematicTool::SetLink(const TDF_Label& theMechanism,
+                                                const TDF_Label& theShape)
+{
+  TDF_LabelSequence anAuxSequence;
+  anAuxSequence.Append(theShape);
+  return SetLink(theMechanism, anAuxSequence);
+}
+
+//=======================================================================
+//function : IsLink
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFDoc_KinematicTool::IsLink(const TDF_Label& theLink) const
+{
+  Handle(XCAFDoc_GraphNode) aLinkGNode;
+  return theLink.FindAttribute(XCAFDoc::KinematicRefShapeGUID(), aLinkGNode);
+}
+
+//=======================================================================
+//function : RemoveLink
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::RemoveLink(const TDF_Label& theLink)
+{
+  if (!IsLink(theLink))
+    return;
+
+  Handle(XCAFDoc_GraphNode) aLinkGNode;
+  Handle(XCAFDoc_GraphNode) aShapesGNode;
+
+  // Remove all referenced joints
+  TDF_LabelSequence aRefJoints = GetJointsOfLink(theLink);
+  for (TDF_LabelSequence::Iterator anIt(aRefJoints); anIt.More(); anIt.Next())
+    RemoveJoint(anIt.Value());
+
+  // Clear link from old references to shapes
+  if (theLink.FindAttribute(XCAFDoc::KinematicRefShapeGUID(), aLinkGNode)) {
+    while (aLinkGNode->NbFathers() > 0) {
+      aShapesGNode = aLinkGNode->GetFather(1);
+      aShapesGNode->UnSetChild(aLinkGNode);
+      if (aShapesGNode->NbChildren() == 0)
+        aShapesGNode->ForgetAttribute(XCAFDoc::KinematicRefShapeGUID());
+    }
+  }
+  theLink.ForgetAllAttributes();
+}
+
+//=======================================================================
+//function : AddJoint
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::AddJoint(const TDF_Label& theMechanism)
+{
+  if (!IsMechanism(theMechanism))
+    return TDF_Label();
+
+  TDF_TagSource aTag;
+  TDF_Label aJoint = aTag.NewChild(getRootOfJoints(theMechanism));
+  Handle(XCAFDoc_KinematicPair) aPair = XCAFDoc_KinematicPair::Set(aJoint);
+  return aJoint;
+}
+
+//=======================================================================
+//function : AddJoint
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::AddJoint(const TDF_Label& theMechanism,
+                                          const TDF_Label& theLink1,
+                                          const TDF_Label& theLink2)
+{
+  TDF_Label aNewJoint = AddJoint(theMechanism);
+  if (aNewJoint.IsNull())
+    return TDF_Label();
+
+  SetJoint(aNewJoint, theLink1, theLink2);
+  return aNewJoint;
+}
+
+//=======================================================================
+//function : IsJoint
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFDoc_KinematicTool::IsJoint(const TDF_Label& theJoint) const
+{
+  Handle(TDataStd_TreeNode) anAuxAttr;
+  return (theJoint.FindAttribute(XCAFDoc::KinematicRefLink1GUID(), anAuxAttr) &&
+          theJoint.FindAttribute(XCAFDoc::KinematicRefLink2GUID(), anAuxAttr));
+}
+
+//=======================================================================
+//function : SetJoint
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFDoc_KinematicTool::SetJoint(const TDF_Label& theJoint,
+                                                 const TDF_Label& theLink1,
+                                                 const TDF_Label& theLink2)
+{
+  if (!IsLink(theLink1) || !IsLink(theLink2))
+    return Standard_False;
+
+  Handle(TDataStd_TreeNode) aJointNode, aLinkNode;
+  // Add reference to first link
+  aJointNode = TDataStd_TreeNode::Set(theJoint, XCAFDoc::KinematicRefLink1GUID());
+  aLinkNode = TDataStd_TreeNode::Set(theLink1, XCAFDoc::KinematicRefLink1GUID());
+  aJointNode->Remove(); // fix against bug in TreeNode::Append()
+  aLinkNode->Append(aJointNode);
+
+  // Add reference to second link
+  aJointNode = TDataStd_TreeNode::Set(theJoint, XCAFDoc::KinematicRefLink2GUID());
+  aLinkNode = TDataStd_TreeNode::Set(theLink2, XCAFDoc::KinematicRefLink2GUID());
+  aJointNode->Remove(); // fix against bug in TreeNode::Append()
+  aLinkNode->Append(aJointNode);
+  return Standard_True;
+}
+
+//=======================================================================
+//function : RemoveJoint
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::RemoveJoint(const TDF_Label& theJoint)
+{
+  if (!IsJoint(theJoint))
+    return;
+
+  Handle(TDataStd_TreeNode) aNode;
+  theJoint.FindAttribute(XCAFDoc::KinematicRefLink1GUID(), aNode);
+  aNode->Remove();
+  theJoint.FindAttribute(XCAFDoc::KinematicRefLink2GUID(), aNode);
+  aNode->Remove();
+
+  theJoint.ForgetAllAttributes();
+
+}
+
+//=======================================================================
+//function : GetMechanisms
+//purpose  : 
+//=======================================================================
+TDF_LabelSequence XCAFDoc_KinematicTool::GetMechanisms() const
+{
+  TDF_LabelSequence aMechArray;
+  for (TDF_ChildIterator anIt(Label()); anIt.More(); anIt.Next()) {
+    TDF_Label aMechanism = anIt.Value();
+    if (IsMechanism(aMechanism))
+      aMechArray.Append(aMechanism);
+  }
+
+  return aMechArray;
+}
+
+//=======================================================================
+//function : GetLinks
+//purpose  : 
+//=======================================================================
+TDF_LabelSequence XCAFDoc_KinematicTool::GetLinks(const TDF_Label& theMechanism) const
+{
+  TDF_LabelSequence aLinkArray;
+  if (!IsMechanism(theMechanism))
+    return aLinkArray;
+
+  for (TDF_ChildIterator anIt(getRootOfLinks(theMechanism)); anIt.More(); anIt.Next()) {
+    TDF_Label aLink = anIt.Value();
+    if (IsLink(aLink))
+      aLinkArray.Append(aLink);
+  }
+
+  return aLinkArray;
+}
+
+//=======================================================================
+//function : GetJoints
+//purpose  : 
+//=======================================================================
+TDF_LabelSequence XCAFDoc_KinematicTool::GetJoints(const TDF_Label& theMechanism) const
+{
+  TDF_LabelSequence aJointArray;
+  if (!IsMechanism(theMechanism))
+    return aJointArray;
+
+  for (TDF_ChildIterator anIt(getRootOfJoints(theMechanism)); anIt.More(); anIt.Next()) {
+    TDF_Label aJoint = anIt.Value();
+    if (IsJoint(aJoint))
+      aJointArray.Append(aJoint);
+  }
+
+  return aJointArray;
+}
+
+//=======================================================================
+//function : GetLinksOfJoint
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::GetLinksOfJoint(const TDF_Label& theJoint,
+                                            TDF_Label& theLink1,
+                                            TDF_Label& theLink2) const
+{
+  if (!IsJoint(theJoint))
+    return;
+
+  Handle(TDataStd_TreeNode) aNode;
+
+  if (theJoint.FindAttribute(XCAFDoc::KinematicRefLink1GUID(), aNode))
+    theLink1 = aNode->Father()->Label();
+
+  if (theJoint.FindAttribute(XCAFDoc::KinematicRefLink2GUID(), aNode))
+    theLink2 = aNode->Father()->Label();
+}
+
+//=======================================================================
+//function : GetJointsOfLink
+//purpose  : 
+//=======================================================================
+TDF_LabelSequence XCAFDoc_KinematicTool::GetJointsOfLink(const TDF_Label& theLink) const
+{
+  TDF_LabelSequence aJointsArray;
+  if (!IsLink(theLink))
+    return aJointsArray;
+
+  Handle(TDataStd_TreeNode) aNode, aChildNode;
+
+  if (theLink.FindAttribute(XCAFDoc::KinematicRefLink1GUID(), aNode)) {
+    aChildNode = aNode->First();
+    while (!aChildNode.IsNull()) {
+      aJointsArray.Append(aChildNode->Label());
+      aChildNode = aChildNode->Next();
+    }
+  }
+
+  if (theLink.FindAttribute(XCAFDoc::KinematicRefLink2GUID(), aNode)) {
+    aChildNode = aNode->First();
+    while (!aChildNode.IsNull()) {
+      aJointsArray.Append(aChildNode->Label());
+      aChildNode = aChildNode->Next();
+    }
+  }
+
+  return aJointsArray;
+}
+
+//=======================================================================
+//function : GetRefShapes
+//purpose  : 
+//=======================================================================
+TDF_LabelSequence XCAFDoc_KinematicTool::GetRefShapes(const TDF_Label& theLink) const
+{
+  Handle(XCAFDoc_GraphNode) aGNode;
+  TDF_LabelSequence aShapeArray;
+  if (theLink.FindAttribute(XCAFDoc::KinematicRefShapeGUID(), aGNode) && aGNode->NbFathers() > 0) {
+    for(Standard_Integer i = 1; i <= aGNode->NbFathers(); i++)
+      aShapeArray.Append(aGNode->GetFather(i)->Label());
+  }
+  return aShapeArray;
+}
+
+//=======================================================================
+//function : getRootOfLinks
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::getRootOfLinks(const TDF_Label& theMechanism) const
+{
+  return theMechanism.FindChild(1, Standard_False);
+}
+
+//=======================================================================
+//function : getRootOfJoints
+//purpose  : 
+//=======================================================================
+TDF_Label XCAFDoc_KinematicTool::getRootOfJoints(const TDF_Label& theMechanism) const
+{
+  return theMechanism.FindChild(2, Standard_False);
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& XCAFDoc_KinematicTool::ID() const
+{
+  return GetID();
+}
+
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::Restore(const Handle(TDF_Attribute)& /*with*/) 
+{
+}
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) XCAFDoc_KinematicTool::NewEmpty() const
+{
+  return new XCAFDoc_KinematicTool;
+}
+
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::Paste(const Handle(TDF_Attribute)& /*into*/,
+                             const Handle(TDF_RelocationTable)& /*RT*/) const
+{
+}
+
+//=======================================================================
+//function : DumpJson
+//purpose  : 
+//=======================================================================
+void XCAFDoc_KinematicTool::DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth) const
+{
+  OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
+
+  OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute)
+}
diff --git a/src/XCAFDoc/XCAFDoc_KinematicTool.hxx b/src/XCAFDoc/XCAFDoc_KinematicTool.hxx
new file mode 100644 (file)
index 0000000..383b865
--- /dev/null
@@ -0,0 +1,188 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2016 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 _XCAFDoc_KinematicTool_HeaderFile
+#define _XCAFDoc_KinematicTool_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <TDF_Attribute.hxx>
+#include <Standard_Boolean.hxx>
+#include <TDF_LabelSequence.hxx>
+#include <Standard_Integer.hxx>
+
+class XCAFDoc_ShapeTool;
+class TDF_Label;
+class Standard_GUID;
+class TDF_Attribute;
+
+
+class XCAFDoc_KinematicTool;
+DEFINE_STANDARD_HANDLE(XCAFDoc_KinematicTool, TDF_Attribute)
+
+//! Provides tools to store and retrieve Kinematics in and from TDocStd_Document.
+//! Kinematics data storage consists of several mechanisms,
+//! each mechanish has its ows sets of links and joints.
+class XCAFDoc_KinematicTool : public TDF_Attribute
+{
+
+public:
+
+  
+  Standard_EXPORT XCAFDoc_KinematicTool();
+  
+  //! Creates (if not exist) KinematicTool
+  Standard_EXPORT static Handle(XCAFDoc_KinematicTool) Set(const TDF_Label& theLabel);
+  
+  Standard_EXPORT static const Standard_GUID& GetID();
+  
+  //! Returns the label under which Kinematics is stored
+  Standard_EXPORT TDF_Label BaseLabel() const;
+
+  //! Creates new mechanism - a child under BaseLabel
+  Standard_EXPORT TDF_Label AddMechanism();
+
+  //! Checks is the given label a mechanism
+  Standard_EXPORT Standard_Boolean IsMechanism(const TDF_Label& theLabel) const;
+
+  //! Removes given mechanism with all underlying information
+  Standard_EXPORT void RemoveMechanism(const TDF_Label& theLabel);
+
+  //! Adds new empty label for link.
+  //! \param[in] theMechanism parent mechanism
+  //! \return created link label
+  Standard_EXPORT TDF_Label AddLink(const TDF_Label& theMechanism);
+
+  //! Adds new label with link.
+  //! param[in] theMechanism parent mechanism
+  //! param[in] theShapes all details of link
+  //! \return created link label
+  Standard_EXPORT TDF_Label AddLink(const TDF_Label& theMechanism,
+                                    const TDF_LabelSequence& theShapes);
+
+  //! Adds new label with link.
+  //! \param[in] theMechanism parent mechanism
+  //! \param[in] theShape singular detail of link
+  //! \return created link label
+  Standard_EXPORT TDF_Label AddLink(const TDF_Label& theMechanism,
+                                    const TDF_Label& theShape);
+
+  //! Checks is the given label a link
+  //! \return the result of check
+  Standard_EXPORT Standard_Boolean IsLink(const TDF_Label& theLink) const;
+
+  //! Sets shapes references for link
+  //! param[in] theLink link to set shapes
+  //! param[in] theShapes all details of link
+  //! \return true in case of success, false otherwise
+  Standard_EXPORT Standard_Boolean SetLink(const TDF_Label& theLink,
+                                           const TDF_LabelSequence& theShapes);
+
+  //! Sets shape reference for link
+  //! \param[in] theLink link to set shape
+  //! \param[in] theShape singular detail of link
+  //! \return true in case of success, false otherwise
+  Standard_EXPORT Standard_Boolean SetLink(const TDF_Label& theLink,
+                                           const TDF_Label& theShape);
+
+  //! Removes the given link
+  //! \param[in] theLink link to remove
+  Standard_EXPORT void RemoveLink(const TDF_Label& theLink);
+
+  //! Adds new empty label for joint.
+  //! \param[in] theMechanism parent mechanism
+  //! \return created joint label
+  Standard_EXPORT TDF_Label AddJoint(const TDF_Label& theMechanism);
+
+  //! Adds new label with joint.
+  //! \param[in] theMechanism parent mechanism
+  //! \param[in] theLink1 first link
+  //! \param[in] theLink2 second link
+  //! \return created joint label
+  Standard_EXPORT TDF_Label AddJoint(const TDF_Label& theMechanism,
+                                     const TDF_Label& theLink1,
+                                     const TDF_Label& theLink2);
+
+  //! Checks is the given label a joint
+  //! \return the result of check
+  Standard_EXPORT Standard_Boolean IsJoint(const TDF_Label& theJoint) const;
+
+  //! Sets references to links to joint.
+  //! \param[in] theJoint joint to set
+  //! \param[in] theLink1 first link of joint
+  //! \param[in] theLink2 second link of joint
+  //! \return true in case of success, false otherwise
+  Standard_EXPORT Standard_Boolean SetJoint(const TDF_Label& theJoint,
+                                            const TDF_Label& theLink1,
+                                            const TDF_Label& theLink2);
+
+  //! Removes the given joint
+  //! \param[in] thejoint joint to remove
+  Standard_EXPORT void RemoveJoint(const TDF_Label& theJoint);
+
+  //! Retrieves all mechanisms labels
+  //! \return mechanisms set
+  Standard_EXPORT TDF_LabelSequence GetMechanisms() const;
+
+  //! Retrieves all links labels of the given mechanism
+  //! \param[in] theMechanism parent mechanism
+  //! \return links set
+  Standard_EXPORT TDF_LabelSequence GetLinks(const TDF_Label& theMechanism) const;
+
+  // Retrieves all joints labels of the given mechanism
+  //! \param[in] theMechanism parent mechanism
+  //! \return joints set
+  Standard_EXPORT TDF_LabelSequence GetJoints(const TDF_Label& theMechanism) const;
+
+  //! Gets references to links of the given joint.
+  //! \param[in] theJoint joint to get
+  //! \param[out] theLink1 first link of joint
+  //! \param[out] theLink2 second link of joint
+  Standard_EXPORT void GetLinksOfJoint(const TDF_Label& theJoint,
+                                       TDF_Label& theLink1,
+                                       TDF_Label& theLink2) const;
+
+  //! Gets references to joints of the given link.
+  //! \param[in] theLink link to get
+  //! \return set of joints
+  Standard_EXPORT TDF_LabelSequence GetJointsOfLink(const TDF_Label& theLink) const;
+
+  //! Gets reference shapes of the given link.
+  //! \param[in] theLink link to get
+  //! \return set of shapes
+  Standard_EXPORT TDF_LabelSequence GetRefShapes(const TDF_Label& theLink) const;
+
+  Standard_EXPORT const Standard_GUID& ID() const Standard_OVERRIDE;
+  
+  Standard_EXPORT void Restore (const Handle(TDF_Attribute)& with) Standard_OVERRIDE;
+  
+  Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT void Paste (const Handle(TDF_Attribute)& into, const Handle(TDF_RelocationTable)& RT) const Standard_OVERRIDE;
+  
+  //! Dumps the content of me into the stream
+  Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
+
+  private:
+  
+  Standard_EXPORT TDF_Label getRootOfLinks(const TDF_Label& theMechanism) const;
+  
+  Standard_EXPORT TDF_Label getRootOfJoints(const TDF_Label& theMechanism) const;
+
+  DEFINE_STANDARD_RTTIEXT(XCAFDoc_KinematicTool, TDF_Attribute)
+
+};
+#endif // _XCAFDoc_KinematicTool_HeaderFile
diff --git a/src/XCAFKinematics/FILES b/src/XCAFKinematics/FILES
new file mode 100644 (file)
index 0000000..6b9f877
--- /dev/null
@@ -0,0 +1,11 @@
+XCAFKinematics_HighOrderPairObject.cxx
+XCAFKinematics_HighOrderPairObject.hxx
+XCAFKinematics_LowOrderPairObject.cxx
+XCAFKinematics_LowOrderPairObject.hxx
+XCAFKinematics_LowOrderPairObjectWithCoupling.cxx
+XCAFKinematics_LowOrderPairObjectWithCoupling.hxx
+XCAFKinematics_PairObject.cxx
+XCAFKinematics_PairObject.hxx
+XCAFKinematics_PairType.hxx
+XCAFKinematics_PairValueObject.cxx
+XCAFKinematics_PairValueObject.hxx
diff --git a/src/XCAFKinematics/XCAFKinematics_HighOrderPairObject.cxx b/src/XCAFKinematics/XCAFKinematics_HighOrderPairObject.cxx
new file mode 100644 (file)
index 0000000..eaeb089
--- /dev/null
@@ -0,0 +1,411 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFKinematics_HighOrderPairObject.hxx>
+#include <Geom_Curve.hxx>
+#include <Geom_Surface.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFKinematics_HighOrderPairObject, XCAFKinematics_PairObject)
+
+//=======================================================================
+//function : XCAFKinematics_HighOrderPairObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_HighOrderPairObject::
+XCAFKinematics_HighOrderPairObject()
+{
+  myLimits = NULL;
+}
+
+//=======================================================================
+//function : XCAFKinematics_HighOrderPairObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_HighOrderPairObject::
+XCAFKinematics_HighOrderPairObject(const Handle(XCAFKinematics_HighOrderPairObject)& theObj)
+{
+  SetName(theObj->Name());
+  SetType(theObj->Type());
+  SetFirstTransformation(theObj->FirstTransformation());
+  SetSecondTransformation(theObj->SecondTransformation());
+  myOrientation = theObj->myOrientation;
+  myLimits = theObj->myLimits;
+  myGeom = theObj->myGeom;
+}
+
+//=======================================================================
+//function : SetType
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetType(const XCAFKinematics_PairType theType)
+{
+  XCAFKinematics_PairObject::SetType(theType);
+  switch (theType) {
+  case XCAFKinematics_PairType_PointOnSurface: {
+    myLimits = new TColStd_HArray1OfReal(1, 6);
+    myGeom = NCollection_Array1<Handle(Geom_Geometry)>(1, 1);
+    break;
+  }
+  case XCAFKinematics_PairType_SlidingSurface: {
+    myLimits = new TColStd_HArray1OfReal(1, 2);
+    myGeom = NCollection_Array1<Handle(Geom_Geometry)>(1, 2);
+    break;
+  }
+  case XCAFKinematics_PairType_RollingSurface: {
+    myLimits = new TColStd_HArray1OfReal(1, 2);
+    myGeom = NCollection_Array1<Handle(Geom_Geometry)>(1, 2);
+    break;
+  }
+  case XCAFKinematics_PairType_PointOnPlanarCurve: {
+    myLimits = new TColStd_HArray1OfReal(1, 6);
+    myGeom = NCollection_Array1<Handle(Geom_Geometry)>(1, 1);
+    break;
+  }
+  case XCAFKinematics_PairType_SlidingCurve: {
+    myLimits = NULL;
+    myGeom = NCollection_Array1<Handle(Geom_Geometry)>(1, 2);
+    break;
+  }
+  case XCAFKinematics_PairType_RollingCurve: {
+    myLimits = NULL;
+    myGeom = NCollection_Array1<Handle(Geom_Geometry)>(1, 2);
+    break;
+  }
+  }
+}
+
+//=======================================================================
+//function : SetAllLimits
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetAllLimits(const Handle(TColStd_HArray1OfReal)& theLimits)
+{
+  Standard_Integer aNbLimits = 0;
+  switch (Type()) {
+  case XCAFKinematics_PairType_PointOnSurface: {
+    aNbLimits = 6;
+    break;
+  }
+  case XCAFKinematics_PairType_SlidingSurface: {
+    aNbLimits = 2;
+    break;
+  }
+  case XCAFKinematics_PairType_RollingSurface: {
+    aNbLimits = 2;
+    break;
+  }
+  case XCAFKinematics_PairType_PointOnPlanarCurve: {
+    aNbLimits = 6;
+    break;
+  }
+  }
+
+  if (theLimits->Length() == aNbLimits)
+    myLimits = theLimits;
+}
+
+//=======================================================================
+//function : SetRotationLowLimit
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetRotationLowLimit(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    myLimits->ChangeValue(1) = theLimit;
+}
+
+//=======================================================================
+//function : RotationLowLimit
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::RotationLowLimit()
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    return myLimits->Value(1);
+  return 0;
+}
+
+//=======================================================================
+//function : SetRotationUpperLimit
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetRotationUpperLimit(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    myLimits->ChangeValue(2) = theLimit;
+}
+
+//=======================================================================
+//function : RotationUpperLimit
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::RotationUpperLimit()
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    return myLimits->Value(2);
+  return 0;
+}
+
+//=======================================================================
+//function : SetLowLimitYaw
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetLowLimitYaw(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    myLimits->ChangeValue(1) = theLimit;
+}
+
+//=======================================================================
+//function : LowLimitYaw
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::LowLimitYaw()
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    return myLimits->Value(1);
+  return 0;
+}
+
+//=======================================================================
+//function : SetUpperLimitYaw
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetUpperLimitYaw(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    myLimits->ChangeValue(2) = theLimit;
+}
+
+//=======================================================================
+//function : UpperLimitYaw
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::UpperLimitYaw()
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    return myLimits->Value(2);
+  return 0;
+}
+
+//=======================================================================
+//function : SetLowLimitRoll
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetLowLimitRoll(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    myLimits->ChangeValue(3) = theLimit;
+}
+
+//=======================================================================
+//function : LowLimitRoll
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::LowLimitRoll()
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    return myLimits->Value(3);
+  return 0;
+}
+
+//=======================================================================
+//function : SetUpperLimitRoll
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetUpperLimitRoll(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    myLimits->ChangeValue(4) = theLimit;
+}
+
+//=======================================================================
+//function : UpperLimitRoll
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::UpperLimitRoll()
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    return myLimits->Value(4);
+  return 0;
+}
+
+//=======================================================================
+//function : SetLowLimitPitch
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetLowLimitPitch(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    myLimits->ChangeValue(5) = theLimit;
+}
+
+//=======================================================================
+//function : LowLimitPitch
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::LowLimitPitch()
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    return myLimits->Value(5);
+  return 0;
+}
+
+//=======================================================================
+//function : SetUpperLimitPitch
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetUpperLimitPitch(const Standard_Real theLimit)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    myLimits->ChangeValue(6) = theLimit;
+}
+
+//=======================================================================
+//function : UpperLimitPitch
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_HighOrderPairObject::UpperLimitPitch()
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve || Type() == XCAFKinematics_PairType_PointOnSurface)
+    return myLimits->Value(6);
+  return 0;
+}
+
+//=======================================================================
+//function : SetCurve
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetCurve(const Handle(Geom_Curve)& theCurve)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve)
+    myGeom.ChangeFirst() = theCurve;
+}
+
+//=======================================================================
+//function : Curve
+//purpose  : 
+//=======================================================================
+Handle(Geom_Curve) XCAFKinematics_HighOrderPairObject::Curve() const
+{
+  if (Type() == XCAFKinematics_PairType_PointOnPlanarCurve)
+    return Handle(Geom_Curve)::DownCast(myGeom.First());
+  return NULL;
+}
+
+//=======================================================================
+//function : SetFirstCurve
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetFirstCurve(const Handle(Geom_Curve)& theCurve)
+{
+  if (Type() == XCAFKinematics_PairType_SlidingCurve || Type() == XCAFKinematics_PairType_RollingCurve)
+    myGeom.ChangeFirst() = theCurve;
+}
+
+//=======================================================================
+//function : FirstCurve
+//purpose  : 
+//=======================================================================
+Handle(Geom_Curve) XCAFKinematics_HighOrderPairObject::FirstCurve() const
+{
+  if (Type() == XCAFKinematics_PairType_SlidingCurve || Type() == XCAFKinematics_PairType_RollingCurve)
+    return Handle(Geom_Curve)::DownCast(myGeom.First());
+  return NULL;
+}
+
+//=======================================================================
+//function : SetSecondCurve
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetSecondCurve(const Handle(Geom_Curve)& theCurve)
+{
+  if (Type() == XCAFKinematics_PairType_SlidingCurve || Type() == XCAFKinematics_PairType_RollingCurve)
+    myGeom.ChangeLast() = theCurve;
+}
+
+//=======================================================================
+//function : SecondCurve
+//purpose  : 
+//=======================================================================
+Handle(Geom_Curve) XCAFKinematics_HighOrderPairObject::SecondCurve() const
+{
+  if (Type() == XCAFKinematics_PairType_SlidingCurve || Type() == XCAFKinematics_PairType_RollingCurve)
+    return Handle(Geom_Curve)::DownCast(myGeom.Last());
+  return NULL;
+}
+
+//=======================================================================
+//function : SetSurface
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetSurface(const Handle(Geom_Surface)& theSurface)
+{
+  if (Type() == XCAFKinematics_PairType_PointOnSurface)
+    myGeom.ChangeFirst() = theSurface;
+}
+
+//=======================================================================
+//function : Surface
+//purpose  : 
+//=======================================================================
+Handle(Geom_Surface) XCAFKinematics_HighOrderPairObject::Surface() const
+{
+  if (Type() == XCAFKinematics_PairType_PointOnSurface)
+    return Handle(Geom_Surface)::DownCast(myGeom.First());
+  return NULL;
+}
+
+//=======================================================================
+//function : SetFirstSurface
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetFirstSurface(const Handle(Geom_Surface)& theSurface)
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    myGeom.ChangeFirst() = theSurface;
+}
+
+//=======================================================================
+//function : FirstSurface
+//purpose  : 
+//=======================================================================
+Handle(Geom_Surface) XCAFKinematics_HighOrderPairObject::FirstSurface() const
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    return Handle(Geom_Surface)::DownCast(myGeom.First());
+  return NULL;
+}
+
+//=======================================================================
+//function : SetSecondSurface
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_HighOrderPairObject::SetSecondSurface(const Handle(Geom_Surface)& theSurface)
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    myGeom.ChangeLast() = theSurface;
+}
+
+//=======================================================================
+//function : SecondSurface
+//purpose  : 
+//=======================================================================
+Handle(Geom_Surface) XCAFKinematics_HighOrderPairObject::SecondSurface() const
+{
+  if (Type() == XCAFKinematics_PairType_SlidingSurface || Type() == XCAFKinematics_PairType_RollingSurface)
+    return Handle(Geom_Surface)::DownCast(myGeom.Last());
+  return NULL;
+}
diff --git a/src/XCAFKinematics/XCAFKinematics_HighOrderPairObject.hxx b/src/XCAFKinematics/XCAFKinematics_HighOrderPairObject.hxx
new file mode 100644 (file)
index 0000000..94cf853
--- /dev/null
@@ -0,0 +1,188 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFKinematics_HighOrderPairObject_HeaderFile
+#define _XCAFKinematics_HighOrderPairObject_HeaderFile
+
+#include <Geom_Geometry.hxx>
+#include <XCAFKinematics_PairObject.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+
+class Geom_Curve;
+class Geom_Surface;
+
+DEFINE_STANDARD_HANDLE(XCAFKinematics_HighOrderPairObject, XCAFKinematics_PairObject)
+
+//! \class XCAFKinematics_HighOrderPairObject
+//! \brief Object for high order kinematic pairs:
+//! - XCAFKinematics_PairType_PointOnSurface
+//! - XCAFKinematics_PairType_SlidingSurface
+//! - XCAFKinematics_PairType_RollingSurface
+//! - XCAFKinematics_PairType_PointOnPlanarCurve
+//! - XCAFKinematics_PairType_SlidingCurve
+//! - XCAFKinematics_PairType_RollingCurve
+class XCAFKinematics_HighOrderPairObject : public XCAFKinematics_PairObject
+{
+
+public:
+  
+  Standard_EXPORT XCAFKinematics_HighOrderPairObject();
+  
+  Standard_EXPORT XCAFKinematics_HighOrderPairObject
+    (const Handle(XCAFKinematics_HighOrderPairObject)& theObj);
+
+  Standard_EXPORT void SetType(const XCAFKinematics_PairType theType) Standard_OVERRIDE;
+
+  void SetOrientation(const Standard_Boolean theOrientation)
+  {
+    myOrientation = theOrientation;
+  }
+
+  Standard_Boolean Orientation() const
+  {
+    return myOrientation;
+  }
+
+  Standard_EXPORT void SetAllLimits(const Handle(TColStd_HArray1OfReal)& theLimits) Standard_OVERRIDE;
+
+  Handle(TColStd_HArray1OfReal) GetAllLimits() const Standard_OVERRIDE
+  {
+    return myLimits;
+  }
+
+  //! Sets low limit of rotation attribute (only for SlidingSurface and RollingSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetRotationLowLimit(const Standard_Real theLimit);
+
+  //! Gets low rotation limit (only for SlidingSurface and RollingSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real RotationLowLimit();
+
+  //! Sets upper limit of rotation attribute (only for SlidingSurface and RollingSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetRotationUpperLimit(const Standard_Real theLimit);
+
+  //! Gets upper rotation limit (only for SlidingSurface and RollingSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real RotationUpperLimit();
+
+  //! Sets low limit of yaw angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetLowLimitYaw(const Standard_Real theLimit);
+
+  //! Gets low limit of yaw angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real LowLimitYaw();
+
+  //! Sets upper limit of yaw angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetUpperLimitYaw(const Standard_Real theLimit);
+
+  //! Gets upper limit of yaw angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real UpperLimitYaw();
+
+  //! Sets low limit of roll angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetLowLimitRoll(const Standard_Real theLimit);
+
+  //! Gets low limit of roll angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real LowLimitRoll();
+
+  //! Sets upper limit of roll angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetUpperLimitRoll(const Standard_Real theLimit);
+
+  //! Gets upper limit of roll angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real UpperLimitRoll();
+
+  //! Sets low limit of pitch angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetLowLimitPitch(const Standard_Real theLimit);
+
+  //! Gets low limit of pitch angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real LowLimitPitch();
+
+  //! Sets upper limit of pitch angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \param[in] theLimit limit to set
+  Standard_EXPORT void SetUpperLimitPitch(const Standard_Real theLimit);
+
+  //! Gets upper limit of pitch angle (only for PointOnPlanarCurve and PointOnSurface)
+  //! \return limit
+  Standard_EXPORT Standard_Real UpperLimitPitch();
+
+  //! Sets curve attribute (only for PointOnPlanarCurve)
+  //! \param[in] theCurve curve
+  Standard_EXPORT void SetCurve(const Handle(Geom_Curve)& theCurve);
+
+  //! Gets curve attribute (only for PointOnPlanarCurve)
+  //! \return curve
+  Standard_EXPORT Handle(Geom_Curve) Curve() const;
+
+  //! Sets curve attribute (only for SlidingCurve and RollingCurve)
+  //! \param[in] theCurve curve
+  Standard_EXPORT void SetFirstCurve(const Handle(Geom_Curve)& theCurve);
+
+  //! Gets curve attribute (only for SlidingCurve and RollingCurve)
+  //! \return curve
+  Standard_EXPORT Handle(Geom_Curve) FirstCurve() const;
+
+  //! Sets curve attribute (only for SlidingCurve and RollingCurve)
+  //! \param[in] theCurve curve
+  Standard_EXPORT void SetSecondCurve(const Handle(Geom_Curve)& theCurve);
+
+  //! Gets curve attribute (only for SlidingCurve and RollingCurve)
+  //! \return curve
+  Standard_EXPORT Handle(Geom_Curve) SecondCurve() const;
+
+  //! Sets surface attribute (only for PointOnSurface)
+  //! \param[in] theSurface surface
+  Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& theSurface);
+
+  //! Gets surface attribute (only for PointOnSurface)
+  //! \return curve
+  Standard_EXPORT Handle(Geom_Surface) Surface() const;
+
+  //! Sets surface attribute (only for SlidingSurface and RollingSurface)
+  //! \param[in] theSurface surface
+  Standard_EXPORT void SetFirstSurface(const Handle(Geom_Surface)& theSurface);
+
+  //! Gets surface attribute (only for SlidingSurface and RollingSurface)
+  //! \return surface
+  Standard_EXPORT Handle(Geom_Surface) FirstSurface() const;
+
+  //! Sets surface attribute (only for SlidingSurface and RollingSurface)
+  //! \param[in] theSurface surface
+  Standard_EXPORT void SetSecondSurface(const Handle(Geom_Surface)& theSurface);
+
+  //! Gets surface attribute (only for SlidingSurface and RollingSurface)
+  //! \return surface
+  Standard_EXPORT Handle(Geom_Surface) SecondSurface() const;
+
+  DEFINE_STANDARD_RTTIEXT(XCAFKinematics_HighOrderPairObject, XCAFKinematics_PairObject)
+
+private:
+
+  Standard_Boolean myOrientation;                   //!< orientation
+  Handle(TColStd_HArray1OfReal) myLimits;           //!< array of limits, size depends on type
+  NCollection_Array1<Handle(Geom_Geometry)> myGeom; //!< curve(s) or surface(s) attributes
+
+};
+
+#endif // _XCAFKinematics_HighOrderPairObject_HeaderFile
diff --git a/src/XCAFKinematics/XCAFKinematics_LowOrderPairObject.cxx b/src/XCAFKinematics/XCAFKinematics_LowOrderPairObject.cxx
new file mode 100644 (file)
index 0000000..423261a
--- /dev/null
@@ -0,0 +1,108 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFKinematics_LowOrderPairObject.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFKinematics_LowOrderPairObject, XCAFKinematics_PairObject)
+
+//=======================================================================
+//function : XCAFKinematics_LowOrderPairObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_LowOrderPairObject::XCAFKinematics_LowOrderPairObject()
+{
+  myMinRotationX = -Precision::Infinite();
+  myMaxRotationX = Precision::Infinite();
+  myMinRotationY = -Precision::Infinite();
+  myMaxRotationY = Precision::Infinite();
+  myMinRotationZ = -Precision::Infinite();
+  myMaxRotationZ = Precision::Infinite();
+  myMinTranslationX = -Precision::Infinite();
+  myMaxTranslationX = Precision::Infinite();
+  myMinTranslationY = -Precision::Infinite();
+  myMaxTranslationY = Precision::Infinite();
+  myMinTranslationZ = -Precision::Infinite();
+  myMaxTranslationZ = Precision::Infinite();
+}
+
+//=======================================================================
+//function : XCAFKinematics_LowOrderPairObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_LowOrderPairObject::
+  XCAFKinematics_LowOrderPairObject(const Handle(XCAFKinematics_LowOrderPairObject)& theObj)
+{
+  SetName(theObj->Name());
+  SetType(theObj->Type());
+  SetFirstTransformation(theObj->FirstTransformation());
+  SetSecondTransformation(theObj->SecondTransformation());
+  myMinRotationX = theObj->myMinRotationX;
+  myMaxRotationX = theObj->myMaxRotationX;
+  myMinRotationY = theObj->myMinRotationY;
+  myMaxRotationY = theObj->myMaxRotationY;
+  myMinRotationZ = theObj->myMinRotationZ;
+  myMaxRotationZ = theObj->myMaxRotationZ;
+  myMinTranslationX = theObj->myMinTranslationX;
+  myMaxTranslationX = theObj->myMaxTranslationX;
+  myMinTranslationY = theObj->myMinTranslationY;
+  myMaxTranslationY = theObj->myMaxTranslationY;
+  myMinTranslationZ = theObj->myMinTranslationZ;
+  myMaxTranslationZ = theObj->myMaxTranslationZ;
+}
+
+//=======================================================================
+//function : GetAllLimits
+//purpose  : 
+//=======================================================================
+Handle(TColStd_HArray1OfReal) XCAFKinematics_LowOrderPairObject::GetAllLimits() const
+{
+  Handle(TColStd_HArray1OfReal) aLimitArray = new TColStd_HArray1OfReal(1, 12);
+  aLimitArray->ChangeValue(1) = myMinRotationX;
+  aLimitArray->ChangeValue(2) = myMaxRotationX;
+  aLimitArray->ChangeValue(3) = myMinRotationY;
+  aLimitArray->ChangeValue(4) = myMaxRotationY;
+  aLimitArray->ChangeValue(5) = myMinRotationZ;
+  aLimitArray->ChangeValue(6) = myMaxRotationZ;
+  aLimitArray->ChangeValue(7) = myMinTranslationX;
+  aLimitArray->ChangeValue(8) = myMaxTranslationX;
+  aLimitArray->ChangeValue(9) = myMinTranslationY;
+  aLimitArray->ChangeValue(10) = myMaxTranslationY;
+  aLimitArray->ChangeValue(11) = myMinTranslationZ;
+  aLimitArray->ChangeValue(12) = myMaxTranslationZ;
+  return aLimitArray;
+}
+
+//=======================================================================
+//function : GetAllLimits
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObject::SetAllLimits(const Handle(TColStd_HArray1OfReal)& theLimits)
+{
+  if (theLimits->Length() != 12)
+    return;
+  myMinRotationX = theLimits->Value(1);
+  myMaxRotationX = theLimits->Value(2);
+  myMinRotationY = theLimits->Value(3);
+  myMaxRotationY = theLimits->Value(4);
+  myMinRotationZ = theLimits->Value(5);
+  myMaxRotationZ = theLimits->Value(6);
+  myMinTranslationX = theLimits->Value(7);
+  myMaxTranslationX = theLimits->Value(8);
+  myMinTranslationY = theLimits->Value(9);
+  myMaxTranslationY = theLimits->Value(10);
+  myMinTranslationZ = theLimits->Value(11);
+  myMaxTranslationZ = theLimits->Value(12);
+}
diff --git a/src/XCAFKinematics/XCAFKinematics_LowOrderPairObject.hxx b/src/XCAFKinematics/XCAFKinematics_LowOrderPairObject.hxx
new file mode 100644 (file)
index 0000000..e80b0ca
--- /dev/null
@@ -0,0 +1,221 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFKinematics_LowOrderPairObject_HeaderFile
+#define _XCAFKinematics_LowOrderPairObject_HeaderFile
+
+#include <XCAFKinematics_PairObject.hxx>
+
+class TColStd_HArray1OfReal;
+
+DEFINE_STANDARD_HANDLE(XCAFKinematics_LowOrderPairObject, XCAFKinematics_PairObject)
+
+//! \class XCAFKinematics_LowOrderPairObject
+//! \brief Object for low order kinematic pairs:
+//! - XCAFKinematics_PairType_FullyConstrained
+//! - XCAFKinematics_PairType_Revolute
+//! - XCAFKinematics_PairType_Prismatic
+//! - XCAFKinematics_PairType_Cylindrical
+//! - XCAFKinematics_PairType_Universal
+//! - XCAFKinematics_PairType_Homokinetic
+//! - XCAFKinematics_PairType_SphericalWithPin
+//! - XCAFKinematics_PairType_Spherical
+//! - XCAFKinematics_PairType_Planar
+//! - XCAFKinematics_PairType_Unconstrained
+//! Not all limits are used for each pair, if less than 3 translation/rotation
+//! limits is used values should be specified in alphabetical order.
+class XCAFKinematics_LowOrderPairObject : public XCAFKinematics_PairObject
+{
+
+public:
+  
+  Standard_EXPORT XCAFKinematics_LowOrderPairObject();
+  
+  Standard_EXPORT XCAFKinematics_LowOrderPairObject
+    (const Handle(XCAFKinematics_LowOrderPairObject)& theObj);
+
+  // X rotation limits
+
+  void SetMinRotationX(const Standard_Real theLimit)
+  {
+    myMinRotationX = theLimit;
+  }
+
+  Standard_Real MinRotationX() const
+  {
+    return myMinRotationX;
+  }
+
+  void SetMaxRotationX(const Standard_Real theLimit)
+  {
+    myMaxRotationX = theLimit;
+  }
+
+  Standard_Real MaxRotationX() const
+  {
+    return myMaxRotationX;
+  }
+
+  // Y rotation limits
+
+  void SetMinRotationY(const Standard_Real theLimit)
+  {
+    myMinRotationY = theLimit;
+  }
+
+  Standard_Real MinRotationY() const
+  {
+    return myMinRotationY;
+  }
+
+  void SetMaxRotationY(const Standard_Real theLimit)
+  {
+    myMaxRotationY = theLimit;
+  }
+
+  Standard_Real MaxRotationY() const
+  {
+    return myMaxRotationY;
+  }
+
+  // Z rotation limits
+
+  void SetMinRotationZ(const Standard_Real theLimit)
+  {
+    myMinRotationZ = theLimit;
+  }
+
+  Standard_Real MinRotationZ() const
+  {
+    return myMinRotationZ;
+  }
+
+  void SetMaxRotationZ(const Standard_Real theLimit)
+  {
+    myMaxRotationZ = theLimit;
+  }
+
+  Standard_Real MaxRotationZ() const
+  {
+    return myMaxRotationZ;
+  }
+
+  // X translation limits
+
+  void SetMinTranslationX(const Standard_Real theLimit)
+  {
+    myMinTranslationX = theLimit;
+  }
+
+  Standard_Real MinTranslationX() const
+  {
+    return myMinTranslationX;
+  }
+
+  void SetMaxTranslationX(const Standard_Real theLimit)
+  {
+    myMaxTranslationX = theLimit;
+  }
+
+  Standard_Real MaxTranslationX() const
+  {
+    return myMaxTranslationX;
+  }
+
+  // Y translation limits
+
+  void SetMinTranslationY(const Standard_Real theLimit)
+  {
+    myMinTranslationY = theLimit;
+  }
+
+  Standard_Real MinTranslationY() const
+  {
+    return myMinTranslationY;
+  }
+
+  void SetMaxTranslationY(const Standard_Real theLimit)
+  {
+    myMaxTranslationY = theLimit;
+  }
+
+  Standard_Real MaxTranslationY() const
+  {
+    return myMaxTranslationY;
+  }
+
+  // Z translation limits
+
+  void SetMinTranslationZ(const Standard_Real theLimit)
+  {
+    myMinTranslationZ = theLimit;
+  }
+
+  Standard_Real MinTranslationZ() const
+  {
+    return myMinTranslationZ;
+  }
+
+  void SetMaxTranslationZ(const Standard_Real theLimit)
+  {
+    myMaxTranslationZ = theLimit;
+  }
+
+  Standard_Real MaxTranslationZ() const
+  {
+    return myMaxTranslationZ;
+  }
+
+  void SetSkewAngle(const Standard_Real theAngle)
+  {
+    if (Type() == XCAFKinematics_PairType_Universal || XCAFKinematics_PairType_Homokinetic)
+      mySkewAngle = theAngle;
+  }
+
+  Standard_Real SkewAngle() const
+  {
+    if (Type() == XCAFKinematics_PairType_Universal || XCAFKinematics_PairType_Homokinetic)
+      return mySkewAngle;
+    else return 0;
+  }
+
+  //! Creates array with all limits
+  //! \return created array
+  Standard_EXPORT Handle(TColStd_HArray1OfReal) GetAllLimits() const Standard_OVERRIDE;
+
+  Standard_EXPORT void SetAllLimits(const Handle(TColStd_HArray1OfReal)& theLimits) Standard_OVERRIDE;
+
+  DEFINE_STANDARD_RTTIEXT(XCAFKinematics_LowOrderPairObject, XCAFKinematics_PairObject)
+
+private:
+
+  Standard_Real myMinRotationX;    //!< minimum value of the yaw angle
+  Standard_Real myMaxRotationX;    //!< maximum value of the yaw angle
+  Standard_Real myMinRotationY;    //!< minimum value of the pitch angle
+  Standard_Real myMaxRotationY;    //!< maximum value of the pitch angle
+  Standard_Real myMinRotationZ;    //!< minimum value of the roll angle
+  Standard_Real myMaxRotationZ;    //!< maximum value of the roll angle
+  Standard_Real myMinTranslationX; //!< minimum value of translation in x-direction
+  Standard_Real myMaxTranslationX; //!< maximum value of translation in x-direction
+  Standard_Real myMinTranslationY; //!< minimum value of translation in y-direction
+  Standard_Real myMaxTranslationY; //!< maximum value of translation in y-direction
+  Standard_Real myMinTranslationZ; //!< minimum value of translation in z-direction
+  Standard_Real myMaxTranslationZ; //!< maximum value of translation in z-direction
+  Standard_Real mySkewAngle;       //!< param for universal/homokinetic pair
+
+};
+
+#endif // _XCAFKinematics_LowOrderPairObject_HeaderFile
diff --git a/src/XCAFKinematics/XCAFKinematics_LowOrderPairObjectWithCoupling.cxx b/src/XCAFKinematics/XCAFKinematics_LowOrderPairObjectWithCoupling.cxx
new file mode 100644 (file)
index 0000000..637d6c9
--- /dev/null
@@ -0,0 +1,241 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFKinematics_LowOrderPairObjectWithCoupling.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFKinematics_LowOrderPairObjectWithCoupling, XCAFKinematics_PairObject)
+
+//=======================================================================
+//function : XCAFKinematics_LowOrderPairObjectWithCoupling
+//purpose  : 
+//=======================================================================
+XCAFKinematics_LowOrderPairObjectWithCoupling::
+  XCAFKinematics_LowOrderPairObjectWithCoupling()
+{
+  myLowLimit = -Precision::Infinite();
+  myUpperLimit = Precision::Infinite();
+  myParams = NULL;
+}
+
+//=======================================================================
+//function : XCAFKinematics_LowOrderPairObjectWithCoupling
+//purpose  : 
+//=======================================================================
+XCAFKinematics_LowOrderPairObjectWithCoupling::
+  XCAFKinematics_LowOrderPairObjectWithCoupling(const Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)& theObj)
+{
+  SetName(theObj->Name());
+  SetType(theObj->Type());
+  SetFirstTransformation(theObj->FirstTransformation());
+  SetSecondTransformation(theObj->SecondTransformation());
+  myLowLimit = theObj->LowLimit();
+  myUpperLimit = theObj->UpperLimit();
+  myParams = theObj->GetAllParams();
+}
+
+//=======================================================================
+//function : SetType
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetType(const XCAFKinematics_PairType theType)
+{
+  XCAFKinematics_PairObject::SetType(theType);
+  if (theType == XCAFKinematics_PairType_Gear)
+    myParams = new TColStd_HArray1OfReal(1, 5);
+  else
+    myParams = new TColStd_HArray1OfReal(1, 1);
+}
+
+//=======================================================================
+//function : GetAllLimits
+//purpose  : 
+//=======================================================================
+Handle(TColStd_HArray1OfReal) XCAFKinematics_LowOrderPairObjectWithCoupling::GetAllLimits() const
+{
+  Handle(TColStd_HArray1OfReal) aLimitArray = new TColStd_HArray1OfReal(1, 2);
+  aLimitArray->ChangeValue(1) = myLowLimit;
+  aLimitArray->ChangeValue(2) = myUpperLimit;
+  return aLimitArray;
+}
+
+//=======================================================================
+//function : SetPitch
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetPitch(const Standard_Real thePitch)
+{
+  if (Type() == XCAFKinematics_PairType_Screw)
+    myParams->ChangeFirst() = thePitch;
+}
+
+//=======================================================================
+//function : Pitch
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::Pitch() const
+{
+  if (Type() == XCAFKinematics_PairType_Screw)
+    return myParams->First();
+  return 0;
+}
+
+//=======================================================================
+//function : SetPinionRadius
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetPinionRadius(const Standard_Real theRadius)
+{
+  if (Type() == XCAFKinematics_PairType_RackAndPinion)
+    myParams->ChangeFirst() = theRadius;
+}
+
+//=======================================================================
+//function : PinionRadius
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::PinionRadius() const
+{
+  if (Type() == XCAFKinematics_PairType_RackAndPinion)
+    return myParams->First();
+  return 0;
+}
+
+//=======================================================================
+//function : SetRadiusFirstLink
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetRadiusFirstLink(const Standard_Real theRadius)
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    myParams->ChangeFirst() = theRadius;
+}
+
+//=======================================================================
+//function : RadiusFirstLink
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::RadiusFirstLink() const
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    return myParams->First();
+  return 0;
+}
+
+//=======================================================================
+//function : SetRadiusSecondLink
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetRadiusSecondLink(const Standard_Real theRadius)
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    myParams->ChangeValue(2) = theRadius;
+}
+
+//=======================================================================
+//function : RadiusSecondLink
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::RadiusSecondLink() const
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    return myParams->Value(2);
+  return 0;
+}
+
+//=======================================================================
+//function : SetBevel
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetBevel(const Standard_Real theBevel)
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    myParams->ChangeValue(3) = theBevel;
+}
+
+//=======================================================================
+//function : Bevel
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::Bevel() const
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    return myParams->Value(3);
+  return 0;
+}
+
+//=======================================================================
+//function : SetHelicalAngle
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetHelicalAngle(const Standard_Real theAngle)
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    myParams->ChangeValue(4) = theAngle;
+}
+
+//=======================================================================
+//function : HelicalAngle
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::HelicalAngle() const
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    return myParams->Value(4);
+  return 0;
+}
+
+//=======================================================================
+//function : SetGearRatio
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetGearRatio(const Standard_Real theGearRatio)
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    myParams->ChangeValue(5) = theGearRatio;
+}
+
+//=======================================================================
+//function : GearRatio
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_LowOrderPairObjectWithCoupling::GearRatio() const
+{
+  if (Type() == XCAFKinematics_PairType_Gear)
+    return myParams->Value(5);
+  return 0;
+}
+
+//=======================================================================
+//function : SetAllParams
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetAllParams(const Handle(TColStd_HArray1OfReal)& theParams)
+{
+  if (theParams->Length() == myParams->Length())
+    myParams = theParams;
+}
+
+//=======================================================================
+//function : SetAllLimits
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_LowOrderPairObjectWithCoupling::SetAllLimits(const Handle(TColStd_HArray1OfReal)& theLimits)
+{
+  if (theLimits->Length() == 2)
+  {
+    myLowLimit = theLimits->Value(1);
+    myUpperLimit = theLimits->Value(2);
+  }
+}
diff --git a/src/XCAFKinematics/XCAFKinematics_LowOrderPairObjectWithCoupling.hxx b/src/XCAFKinematics/XCAFKinematics_LowOrderPairObjectWithCoupling.hxx
new file mode 100644 (file)
index 0000000..f8a863f
--- /dev/null
@@ -0,0 +1,143 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFKinematics_LowOrderPairObjectWithCoupling_HeaderFile
+#define _XCAFKinematics_LowOrderPairObjectWithCoupling_HeaderFile
+
+#include <XCAFKinematics_PairObject.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+
+DEFINE_STANDARD_HANDLE(XCAFKinematics_LowOrderPairObjectWithCoupling, XCAFKinematics_PairObject)
+
+//! \class XCAFKinematics_LowOrderPairObjectWithCoupling
+//! \brief Object for low order kinematic pairs with motion coupling:
+//! - XCAFKinematics_PairType_Screw
+//! - XCAFKinematics_PairType_RackAndPinion
+//! - XCAFKinematics_PairType_Gear
+class XCAFKinematics_LowOrderPairObjectWithCoupling : public XCAFKinematics_PairObject
+{
+
+public:
+  
+  Standard_EXPORT XCAFKinematics_LowOrderPairObjectWithCoupling();
+  
+  Standard_EXPORT XCAFKinematics_LowOrderPairObjectWithCoupling
+    (const Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)& theObj);
+
+  Standard_EXPORT void SetType(const XCAFKinematics_PairType theType) Standard_OVERRIDE;
+
+  void SetLowLimit(const Standard_Real theLimit)
+  {
+    myLowLimit = theLimit;
+  }
+
+  Standard_Real LowLimit() const
+  {
+    return myLowLimit;
+  }
+
+  void SetUpperLimit(const Standard_Real theLimit)
+  {
+    myUpperLimit = theLimit;
+  }
+
+  Standard_Real UpperLimit() const
+  {
+    return myUpperLimit;
+  }
+
+  //! Creates array with all limits
+  //! \return created array
+  Standard_EXPORT Handle(TColStd_HArray1OfReal) GetAllLimits() const Standard_OVERRIDE;
+
+  //! Sets pitch parameter (only for Screw)
+  //! \param[in] thePitch parameter value
+  Standard_EXPORT void SetPitch(const Standard_Real thePitch);
+
+  //! Gets pitch parameter (only for Screw)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real Pitch() const;
+
+  //! Sets pinion radius parameter (only for RackAndPinion)
+  //! \param[in] theRadius parameter value
+  Standard_EXPORT void SetPinionRadius(const Standard_Real theRadius);
+
+  //! Gets pinion radius parameter (only for RackAndPinion)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real PinionRadius() const;
+
+  //! Sets first link radius parameter (only for Gear)
+  //! \param[in] theRadius parameter value
+  Standard_EXPORT void SetRadiusFirstLink(const Standard_Real theRadius);
+
+  //! Gets first link radius parameter (only for Gear)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real RadiusFirstLink() const;
+
+  //! Sets second link radius parameter (only for Gear)
+  //! \param[in] theRadius parameter value
+  Standard_EXPORT void SetRadiusSecondLink(const Standard_Real theRadius);
+
+  //! Gets second link radius parameter (only for Gear)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real RadiusSecondLink() const;
+
+  //! Sets bevel parameter (only for Gear)
+  //! \param[in] theBevel parameter value
+  Standard_EXPORT void SetBevel(const Standard_Real theBevel);
+
+  //! Gets bevel parameter (only for Gear)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real Bevel() const;
+
+  //! Sets helical angle parameter (only for Gear)
+  //! \param[in] theAngle parameter value
+  Standard_EXPORT void SetHelicalAngle(const Standard_Real theAngle);
+
+  //! Gets helical angle parameter (only for Gear)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real HelicalAngle() const;
+
+  //! Sets gear ratio parameter (only for Gear)
+  //! \param[in] theGearRatio parameter value
+  Standard_EXPORT void SetGearRatio(const Standard_Real theGearRatio);
+
+  //! Gets gear ratio parameter (only for Gear)
+  //! \return parameter value
+  Standard_EXPORT Standard_Real GearRatio() const;
+
+  //! Sets all parameters as an array
+  //! \param[in] theParams array of parameters
+  Standard_EXPORT void SetAllParams(const Handle(TColStd_HArray1OfReal)& theParams);
+
+  Standard_EXPORT Handle(TColStd_HArray1OfReal) GetAllParams() const
+  {
+    return myParams;
+  }
+
+  Standard_EXPORT void SetAllLimits(const Handle(TColStd_HArray1OfReal)& theLimits) Standard_OVERRIDE;
+
+  DEFINE_STANDARD_RTTIEXT(XCAFKinematics_LowOrderPairObjectWithCoupling, XCAFKinematics_PairObject)
+
+private:
+
+  Standard_Real myLowLimit;               //!< low limit of motion range
+  Standard_Real myUpperLimit;             //!< upper limit of motion range
+  Handle(TColStd_HArray1OfReal) myParams; //!< additional parameters of kinematic pair
+
+};
+
+#endif // _XCAFKinematics_LowOrderPairObjectWithCoupling_HeaderFile
diff --git a/src/XCAFKinematics/XCAFKinematics_PairObject.cxx b/src/XCAFKinematics/XCAFKinematics_PairObject.cxx
new file mode 100644 (file)
index 0000000..ecb8101
--- /dev/null
@@ -0,0 +1,38 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XCAFKinematics_PairObject.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFKinematics_PairObject, Standard_Transient)
+
+//=======================================================================
+//function : XCAFKinematics_PairObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_PairObject::XCAFKinematics_PairObject()
+{
+}
+
+//=======================================================================
+//function : XCAFKinematics_PairObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_PairObject::XCAFKinematics_PairObject(const Handle(XCAFKinematics_PairObject)& theObj)
+{
+  myName = theObj->myName;
+  myType = theObj->myType;
+  myTrsf1 = theObj-> myTrsf1;
+  myTrsf2 = theObj-> myTrsf2;
+}
diff --git a/src/XCAFKinematics/XCAFKinematics_PairObject.hxx b/src/XCAFKinematics/XCAFKinematics_PairObject.hxx
new file mode 100644 (file)
index 0000000..ba9d38f
--- /dev/null
@@ -0,0 +1,97 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFKinematics_PairObject_HeaderFile
+#define _XCAFKinematics_PairObject_HeaderFile
+
+#include <gp_Ax3.hxx>
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <XCAFKinematics_PairType.hxx>
+
+DEFINE_STANDARD_HANDLE(XCAFKinematics_PairObject, Standard_Transient)
+
+//! \class XCAFKinematics_PairObject
+//! \brief Main parent object for kinematic pairs
+class XCAFKinematics_PairObject : public Standard_Transient
+{
+
+public:
+  
+  Standard_EXPORT XCAFKinematics_PairObject();
+  
+  Standard_EXPORT XCAFKinematics_PairObject(const Handle(XCAFKinematics_PairObject)& theObj);
+
+  void SetName(const TCollection_AsciiString& theName)
+  {
+    myName = theName;
+  }
+
+  TCollection_AsciiString Name() const
+  {
+    return myName;
+  }
+
+  void virtual SetType(const XCAFKinematics_PairType theType)
+  {
+    myType = theType;
+  }
+
+  XCAFKinematics_PairType Type() const
+  {
+    return myType;
+  }
+
+  void SetFirstTransformation(const gp_Ax3& theTrsf)
+  {
+    myTrsf1 = theTrsf;
+  }
+
+  gp_Ax3 FirstTransformation() const
+  {
+    return myTrsf1;
+  }
+
+  void SetSecondTransformation(const gp_Ax3& theTrsf)
+  {
+    myTrsf2 = theTrsf;
+  }
+
+  gp_Ax3 SecondTransformation() const
+  {
+    return myTrsf2;
+  }
+
+  Standard_EXPORT virtual void SetAllLimits(const Handle(TColStd_HArray1OfReal)& /*theLimits*/) {};
+
+  Standard_EXPORT virtual Handle(TColStd_HArray1OfReal) GetAllLimits() const
+  {
+    return new TColStd_HArray1OfReal();
+  }
+
+  DEFINE_STANDARD_RTTIEXT(XCAFKinematics_PairObject, Standard_Transient)
+
+private:
+
+  TCollection_AsciiString myName; //!< name of kinematic pair
+  XCAFKinematics_PairType myType; //!< type of kinematic pair
+  gp_Ax3 myTrsf1;                 //!< first transformation element
+  gp_Ax3 myTrsf2;                 //!< second transformation element
+};
+
+#endif // _XCAFKinematics_PairObject_HeaderFile
diff --git a/src/XCAFKinematics/XCAFKinematics_PairType.hxx b/src/XCAFKinematics/XCAFKinematics_PairType.hxx
new file mode 100644 (file)
index 0000000..a69c00e
--- /dev/null
@@ -0,0 +1,54 @@
+// Created on: 2020-03-16
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFKinematics_PairType_HeaderFile
+#define _XCAFKinematics_PairType_HeaderFile
+
+//! Defines types of kinemtic pairs
+enum XCAFKinematics_PairType
+{
+  // Auxiliary type
+  XCAFKinematics_PairType_NoType,
+
+  // Low order pairs
+  XCAFKinematics_PairType_FullyConstrained, // no DOF
+  XCAFKinematics_PairType_Revolute, // one rotation DOF
+  XCAFKinematics_PairType_Prismatic, // one translation DOF
+  XCAFKinematics_PairType_Cylindrical, // one rotation and one translation DOF
+  XCAFKinematics_PairType_Universal, // two rotation DOF
+  XCAFKinematics_PairType_Homokinetic, // two uniform rotation DOF
+  XCAFKinematics_PairType_SphericalWithPin, // two rotation DOF
+  XCAFKinematics_PairType_Spherical, // three rotation DOF
+  XCAFKinematics_PairType_Planar, // one rotation and two translation DOF
+  XCAFKinematics_PairType_Unconstrained, // three rotation and three translation DOF
+
+  // Low order pairs with motion coupling
+  XCAFKinematics_PairType_Screw,
+  XCAFKinematics_PairType_RackAndPinion,
+  XCAFKinematics_PairType_Gear,
+  XCAFKinematics_LinearFlexibleAndPinionPair,
+
+  // High order pairs
+  XCAFKinematics_PairType_PointOnSurface,
+  XCAFKinematics_PairType_SlidingSurface,
+  XCAFKinematics_PairType_RollingSurface,
+  XCAFKinematics_PairType_PointOnPlanarCurve,
+  XCAFKinematics_PairType_SlidingCurve,
+  XCAFKinematics_PairType_RollingCurve,
+  XCAFKinematics_PairType_LinearFlexibleAndPlanarCurvePair
+};
+
+#endif // _XCAFKinematics_PairType_HeaderFile
diff --git a/src/XCAFKinematics/XCAFKinematics_PairValueObject.cxx b/src/XCAFKinematics/XCAFKinematics_PairValueObject.cxx
new file mode 100644 (file)
index 0000000..0c6682d
--- /dev/null
@@ -0,0 +1,482 @@
+// Created on: 2020-03-27
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <gp_Ax2.hxx>
+#include <XCAFKinematics_PairValueObject.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XCAFKinematics_PairValueObject, Standard_Transient)
+
+//=======================================================================
+//function : XCAFKinematics_PairValueObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_PairValueObject::XCAFKinematics_PairValueObject()
+{
+  myValues = NULL;
+}
+
+//=======================================================================
+//function : XCAFKinematics_PairValueObject
+//purpose  : 
+//=======================================================================
+XCAFKinematics_PairValueObject::XCAFKinematics_PairValueObject(const Handle(XCAFKinematics_PairValueObject)& theObj)
+{
+  myType = theObj->myType;
+  myValues = theObj->myValues;
+}
+
+//=======================================================================
+//function : SetType
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetType(const XCAFKinematics_PairType theType)
+{
+  myType = theType;
+  Standard_Integer aNbParams = 0;
+  switch (myType) {
+  case XCAFKinematics_PairType_Revolute:
+      aNbParams = 1;
+      break;
+  case XCAFKinematics_PairType_Prismatic:
+    aNbParams = 1;
+    break;
+  case XCAFKinematics_PairType_Cylindrical:
+    aNbParams = 2;
+    break;
+  case XCAFKinematics_PairType_Universal:
+  case XCAFKinematics_PairType_Homokinetic:
+    aNbParams = 2;
+    break;
+  case XCAFKinematics_PairType_SphericalWithPin:
+  case XCAFKinematics_PairType_Spherical:
+    aNbParams = 3;
+    break;
+  case XCAFKinematics_PairType_Planar:
+    aNbParams = 3;
+    break;
+  case XCAFKinematics_PairType_Unconstrained:
+    aNbParams = 9;
+    break;
+  case XCAFKinematics_PairType_Screw:
+    aNbParams = 1;
+    break;
+  case XCAFKinematics_PairType_RackAndPinion:
+    aNbParams = 1;
+    break;
+  case XCAFKinematics_PairType_Gear:
+    aNbParams = 1;
+    break;
+  case XCAFKinematics_PairType_PointOnSurface:
+    aNbParams = 5;
+    break;
+  case XCAFKinematics_PairType_SlidingSurface:
+    aNbParams = 5;
+    break;
+  case XCAFKinematics_PairType_RollingSurface:
+    aNbParams = 3;
+    break;
+  case XCAFKinematics_PairType_PointOnPlanarCurve:
+    aNbParams = 4;
+    break;
+  case XCAFKinematics_PairType_SlidingCurve:
+    aNbParams = 2;
+    break;
+  case XCAFKinematics_PairType_RollingCurve:
+    aNbParams = 1;
+    break;
+  }
+
+  if (aNbParams == 0)
+    myValues = NULL;
+  else
+    myValues = new TColStd_HArray1OfReal(1, aNbParams);
+}
+
+//=======================================================================
+//function : SetFirstRotaion
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetFirstRotation(const Standard_Real theRotation)
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_Revolute:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_Cylindrical:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_Universal:
+  case XCAFKinematics_PairType_Homokinetic:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_Planar:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_Screw:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_Gear:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_SlidingSurface:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  case XCAFKinematics_PairType_RollingSurface:
+    myValues->ChangeValue(1) = theRotation;
+    break;
+  }
+}
+
+//=======================================================================
+//function : GetFirstRotaion
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_PairValueObject::GetFirstRotation() const
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_Revolute:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_Cylindrical:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_Universal:
+  case XCAFKinematics_PairType_Homokinetic:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_Planar:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_Screw:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_Gear:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_SlidingSurface:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_RollingSurface:
+    return myValues->Value(1);
+  }
+  return 0;
+}
+
+//=======================================================================
+//function : SetSecondRotaion
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetSecondRotation(const Standard_Real theRotation)
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_Universal:
+  case XCAFKinematics_PairType_Homokinetic:
+    myValues->ChangeValue(2) = theRotation;
+    break;
+  }
+}
+
+//=======================================================================
+//function : GetSecondRotaion
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_PairValueObject::GetSecondRotation() const
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_Universal:
+  case XCAFKinematics_PairType_Homokinetic:
+    return myValues->Value(2);
+  }
+  return 0;
+}
+
+//=======================================================================
+//function : SetFirstTranslation
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetFirstTranslation(const Standard_Real theTranslation)
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_Prismatic:
+    myValues->ChangeValue(1) = theTranslation;
+    break;
+  case XCAFKinematics_PairType_Cylindrical:
+    myValues->ChangeValue(2) = theTranslation;
+    break;
+  case XCAFKinematics_PairType_Planar:
+    myValues->ChangeValue(2) = theTranslation;
+    break;
+  case XCAFKinematics_PairType_RackAndPinion:
+    myValues->ChangeValue(1) = theTranslation;
+    break;
+  }
+}
+
+//=======================================================================
+//function : GetFirstTranslation
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_PairValueObject::GetFirstTranslation() const
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_Prismatic:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_Cylindrical:
+    return myValues->Value(2);
+  case XCAFKinematics_PairType_Planar:
+    return myValues->Value(2);
+  case XCAFKinematics_PairType_RackAndPinion:
+    return myValues->Value(1);
+  }
+  return 0;
+}
+
+//=======================================================================
+//function : SetSecondTranslation
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetSecondTranslation(const Standard_Real theTranslation)
+{
+  if (myType == XCAFKinematics_PairType_Planar)
+    myValues->ChangeValue(3) = theTranslation;
+}
+
+//=======================================================================
+//function : GetSecondTranslation
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_PairValueObject::GetSecondTranslation() const
+{
+  if (myType == XCAFKinematics_PairType_Planar)
+    return myValues->Value(3);
+  return 0;
+}
+
+//=======================================================================
+//function : SetFirstPointOnSurface
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetFirstPointOnSurface(const Standard_Real theU,
+                                                            const Standard_Real theV)
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_PointOnSurface:
+    myValues->ChangeValue(1) = theU;
+    myValues->ChangeValue(2) = theV;
+    break;
+  case XCAFKinematics_PairType_SlidingSurface:
+    myValues->ChangeValue(2) = theU;
+    myValues->ChangeValue(3) = theV;
+    break;
+  case XCAFKinematics_PairType_RollingSurface:
+    myValues->ChangeValue(2) = theU;
+    myValues->ChangeValue(3) = theV;
+    break;
+  }
+}
+
+//=======================================================================
+//function : GetFirstPointOnSurface
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFKinematics_PairValueObject::GetFirstPointOnSurface(Standard_Real& theU,
+                                                                        Standard_Real& theV) const
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_PointOnSurface:
+    theU = myValues->Value(1);
+    theV = myValues->Value(2);
+    return Standard_True;
+  case XCAFKinematics_PairType_SlidingSurface:
+    theU = myValues->Value(2);
+    theV = myValues->Value(3);
+    return Standard_True;
+  case XCAFKinematics_PairType_RollingSurface:
+    theU = myValues->Value(2);
+    theV = myValues->Value(3);
+    return Standard_True;
+  }
+  return Standard_False;
+}
+
+//=======================================================================
+//function : SetSecondPointOnSurface
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetSecondPointOnSurface(const Standard_Real theU,
+                                                             const Standard_Real theV)
+{
+  if (myType != XCAFKinematics_PairType_SlidingSurface)
+    return;
+  myValues->ChangeValue(4) = theU;
+  myValues->ChangeValue(5) = theV;
+}
+
+//=======================================================================
+//function : GetSecondPointOnSurface
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFKinematics_PairValueObject::GetSecondPointOnSurface(Standard_Real& theU,
+                                                                         Standard_Real& theV) const
+{
+  if (myType != XCAFKinematics_PairType_SlidingSurface)
+    return Standard_False;
+  theU = myValues->Value(4);
+  theV = myValues->Value(5);
+  return Standard_True;
+}
+
+//=======================================================================
+//function : SetFirstPointOnCurve
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetFirstPointOnCurve(const Standard_Real theT)
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_PointOnPlanarCurve:
+    myValues->ChangeValue(1) = theT;
+    break;
+  case XCAFKinematics_PairType_SlidingCurve:
+    myValues->ChangeValue(1) = theT;
+    break;
+  case XCAFKinematics_PairType_RollingCurve:
+    myValues->ChangeValue(1) = theT;
+    break;
+  }
+}
+
+//=======================================================================
+//function : GetFirstPointOnCurve
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_PairValueObject::GetFirstPointOnCurve() const
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_PointOnPlanarCurve:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_SlidingCurve:
+    return myValues->Value(1);
+  case XCAFKinematics_PairType_RollingCurve:
+    return myValues->Value(1);
+  }
+  return 0;
+}
+
+//=======================================================================
+//function : SetSecondPointOnCurve
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetSecondPointOnCurve(const Standard_Real theT)
+{
+  if (myType == XCAFKinematics_PairType_SlidingCurve)
+    myValues->ChangeValue(2) = theT;
+}
+
+//=======================================================================
+//function : GetSecondPointOnCurve
+//purpose  : 
+//=======================================================================
+Standard_Real XCAFKinematics_PairValueObject::GetSecondPointOnCurve() const
+{
+  if (myType == XCAFKinematics_PairType_SlidingCurve)
+    return myValues->Value(2);
+  return 0;
+}
+
+//=======================================================================
+//function : SetYPR
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetYPR(const Standard_Real theYaw,
+                                            const Standard_Real thePitch,
+                                            const Standard_Real theRoll)
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_SphericalWithPin:
+  case XCAFKinematics_PairType_Spherical:
+    myValues->ChangeValue(1) = theYaw;
+    myValues->ChangeValue(2) = thePitch;
+    myValues->ChangeValue(3) = theRoll;
+    break;
+  case XCAFKinematics_PairType_PointOnSurface:
+    myValues->ChangeValue(3) = theYaw;
+    myValues->ChangeValue(4) = thePitch;
+    myValues->ChangeValue(5) = theRoll;
+    break;
+  case XCAFKinematics_PairType_PointOnPlanarCurve:
+    myValues->ChangeValue(2) = theYaw;
+    myValues->ChangeValue(3) = thePitch;
+    myValues->ChangeValue(4) = theRoll;
+    break;
+  }
+}
+
+//=======================================================================
+//function : GetYPR
+//purpose  : 
+//=======================================================================
+Standard_Boolean XCAFKinematics_PairValueObject::GetYPR(Standard_Real& theYaw,
+                                                        Standard_Real& thePitch,
+                                                        Standard_Real& theRoll) const
+{
+  switch (myType) {
+  case XCAFKinematics_PairType_SphericalWithPin:
+  case XCAFKinematics_PairType_Spherical:
+    theYaw = myValues->Value(1);
+    thePitch = myValues->Value(2);
+    theRoll = myValues->Value(3);
+    return Standard_True;
+  case XCAFKinematics_PairType_PointOnSurface:
+    theYaw = myValues->Value(3);
+    thePitch = myValues->Value(4);
+    theRoll = myValues->Value(5);
+    return Standard_True;
+  case XCAFKinematics_PairType_PointOnPlanarCurve:
+    theYaw = myValues->Value(2);
+    thePitch = myValues->Value(3);
+    theRoll = myValues->Value(4);
+    return Standard_True;
+  }
+  return Standard_False;
+}
+
+//=======================================================================
+//function : SetTransformation
+//purpose  : 
+//=======================================================================
+void XCAFKinematics_PairValueObject::SetTransformation(const gp_Ax2& theTrsf)
+{
+  if (myType != XCAFKinematics_PairType_Unconstrained)
+    return;
+
+  myValues->ChangeValue(1) = theTrsf.Location().X();
+  myValues->ChangeValue(2) = theTrsf.Location().Y();
+  myValues->ChangeValue(3) = theTrsf.Location().Z();
+  myValues->ChangeValue(4) = theTrsf.Direction().X();
+  myValues->ChangeValue(5) = theTrsf.Direction().Y();
+  myValues->ChangeValue(6) = theTrsf.Direction().Z();
+  myValues->ChangeValue(7) = theTrsf.XDirection().X();
+  myValues->ChangeValue(8) = theTrsf.XDirection().Y();
+  myValues->ChangeValue(9) = theTrsf.XDirection().Z();
+}
+
+//=======================================================================
+//function : GetTransformation
+//purpose  : 
+//=======================================================================
+gp_Ax2 XCAFKinematics_PairValueObject::GetTransformation()
+{
+  if (myType != XCAFKinematics_PairType_Unconstrained)
+    return gp_Ax2();
+
+  gp_Pnt aLoc(myValues->Value(1), myValues->Value(2), myValues->Value(3));
+  gp_Dir aDir(myValues->Value(4), myValues->Value(5), myValues->Value(6));
+  gp_Dir aXDir(myValues->Value(7), myValues->Value(8), myValues->Value(9));
+  gp_Ax2 aResult = gp_Ax2(aLoc, aDir, aXDir);
+  return aResult;
+}
diff --git a/src/XCAFKinematics/XCAFKinematics_PairValueObject.hxx b/src/XCAFKinematics/XCAFKinematics_PairValueObject.hxx
new file mode 100644 (file)
index 0000000..9f773de
--- /dev/null
@@ -0,0 +1,197 @@
+// Created on: 2020-03-27
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XCAFKinematics_PairValueObject_HeaderFile
+#define _XCAFKinematics_PairValueObject_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <XCAFKinematics_PairType.hxx>
+
+DEFINE_STANDARD_HANDLE(XCAFKinematics_PairValueObject, Standard_Transient)
+
+class gp_Ax2;
+
+//! \class XCAFKinematics_PairValueObject
+//! \brief Object to store and process current position
+//! of kinematic pair.
+//! NoType - no values,
+//! 
+//! FullyConstrained - no values,
+//! Revolute - angle,
+//! Prismatic - length,
+//! Cylindrical - angle + length,
+//! Universal - angle + angle,
+//! Homokinetic - angle + angle,
+//! SphericalWithPin - ypr,
+//! Spherical - ypr,
+//! Planar - angle + length + length,
+//! Unconstrained - ax2,
+//! 
+//! Screw - angle,
+//! RackAndPinion - length,
+//! Gear - angle,
+//! 
+//! PointOnSurface pnt on surface + ypr,
+//! SlidingSurface - angle + pnt on surface + pnt on surface,
+//! RollingSurface - angle + pnt on surface,
+//! PointOnPlanarCurve pnt on curve + ypr,
+//! SlidingCurve - pnt on curve + pnt on curve,
+//! RollingCurve - pnt on curve
+//! 
+//! ypr - three angles: yaw, pitch, roll
+//! point on surface - (u,v)
+//! point on curve - (t)
+//! ax2 - consists of location and two directions
+class XCAFKinematics_PairValueObject : public Standard_Transient
+{
+
+public:
+  
+  Standard_EXPORT XCAFKinematics_PairValueObject();
+  
+  Standard_EXPORT XCAFKinematics_PairValueObject(const Handle(XCAFKinematics_PairValueObject)& theObj);
+
+  Standard_EXPORT void SetType(const XCAFKinematics_PairType theType);
+
+  XCAFKinematics_PairType Type() const
+  {
+    return myType;
+  }
+
+  void SetAllValues(const Handle(TColStd_HArray1OfReal)& theValues)
+  {
+    if (myValues->Length() == theValues->Length())
+      myValues = theValues;
+  };
+
+  Handle(TColStd_HArray1OfReal) GetAllValues() const
+  {
+    return myValues;
+  }
+
+  // Rotations
+
+  void SetRotation(const Standard_Real theRotation)
+  {
+    SetFirstRotation(theRotation);
+  }
+
+  Standard_Real GetRotation() const
+  {
+    return GetFirstRotation();
+  }
+
+  Standard_EXPORT void SetFirstRotation(const Standard_Real theRotation);
+
+  Standard_EXPORT Standard_Real GetFirstRotation() const;
+
+  Standard_EXPORT void SetSecondRotation(const Standard_Real theRotation);
+
+  Standard_EXPORT Standard_Real GetSecondRotation() const;
+
+  // Translations
+
+  void SetTranslation(const Standard_Real theTranslation)
+  {
+    SetFirstTranslation(theTranslation);
+  }
+
+  Standard_Real GetTranslation() const
+  {
+    return GetFirstTranslation();
+  }
+
+  Standard_EXPORT void SetFirstTranslation(const Standard_Real theTranslation);
+
+  Standard_EXPORT Standard_Real GetFirstTranslation() const;
+
+  Standard_EXPORT void SetSecondTranslation(const Standard_Real theTranslation);
+
+  Standard_EXPORT Standard_Real GetSecondTranslation() const;
+
+  // Points on surface
+
+  void SetPointOnSurface(const Standard_Real theU,
+                         const Standard_Real theV)
+  {
+    SetFirstPointOnSurface(theU, theV);
+  }
+
+  Standard_Boolean GetPointOnSurface(Standard_Real& theU,
+                                     Standard_Real& theV) const
+  {
+    return GetFirstPointOnSurface(theU, theV);
+  }
+
+  Standard_EXPORT void SetFirstPointOnSurface(const Standard_Real theU,
+                                              const Standard_Real theV);
+
+  Standard_EXPORT Standard_Boolean GetFirstPointOnSurface(Standard_Real& theU,
+                                                          Standard_Real& theV) const;
+
+  Standard_EXPORT void SetSecondPointOnSurface(const Standard_Real theU,
+                                               const Standard_Real theV);
+
+  Standard_EXPORT Standard_Boolean GetSecondPointOnSurface(Standard_Real& theU,
+                                                           Standard_Real& theV) const;
+
+  // Points on curve
+
+  void SetPointOnCurve(const Standard_Real theT)
+  {
+    SetFirstPointOnCurve(theT);
+  }
+
+  Standard_Real GetPointOnCurve() const
+  {
+    return GetFirstPointOnCurve();
+  }
+
+  Standard_EXPORT void SetFirstPointOnCurve(const Standard_Real theT);
+
+  Standard_EXPORT Standard_Real GetFirstPointOnCurve() const;
+
+  Standard_EXPORT void SetSecondPointOnCurve(const Standard_Real theT);
+
+  Standard_EXPORT Standard_Real GetSecondPointOnCurve() const;
+
+  // YPR
+
+  Standard_EXPORT void SetYPR(const Standard_Real theYaw,
+                              const Standard_Real thePitch,
+                              const Standard_Real theRoll);
+
+  Standard_EXPORT Standard_Boolean GetYPR(Standard_Real& theYaw,
+                                          Standard_Real& thePitch,
+                                          Standard_Real& theRoll) const;
+
+  // Transformation
+
+  Standard_EXPORT void SetTransformation(const gp_Ax2& theTrsf);
+
+  Standard_EXPORT gp_Ax2 GetTransformation();
+
+  DEFINE_STANDARD_RTTIEXT(XCAFKinematics_PairValueObject, Standard_Transient)
+
+private:
+
+  XCAFKinematics_PairType myType;         //!< type of kinematic pair
+  Handle(TColStd_HArray1OfReal) myValues; //!< all values in a line
+};
+
+#endif // _XCAFKinematics_PairValueObject_HeaderFile
index a896d4c95eb2471f93ff1651828a02dd38354a36..0196b86b6d88717a5b1071086d26aaa745852246 100644 (file)
@@ -16,3 +16,5 @@ XDEDRAW_Views.cxx
 XDEDRAW_Views.hxx
 XDEDRAW_Notes.cxx
 XDEDRAW_Notes.hxx
+XDEDRAW_Kinematics.cxx
+XDEDRAW_Kinematics.hxx
index 07b3afaf72540e287c6dbb2245b97e08a8c9cd00..84d6b1d19735acaf6ce550fda7a09c3c5860f6f3 100644 (file)
@@ -91,6 +91,7 @@
 #include <XDEDRAW_GDTs.hxx>
 #include <XDEDRAW_Views.hxx>
 #include <XDEDRAW_Notes.hxx>
+#include <XDEDRAW_Kinematics.hxx>
 #include <XSDRAW.hxx>
 #include <XSDRAWIGES.hxx>
 #include <XSDRAWSTEP.hxx>
@@ -1116,6 +1117,12 @@ static Standard_Integer XAttributeValue (Draw_Interpretor& di, Standard_Integer
     else if (att->ID() == XCAFDoc::ViewRefPlaneGUID()) {
       type = "View Clipping Plane Link";
     }
+    else if (att->ID() == XCAFDoc::KinematicRefShapeGUID()){
+      type = "Kinematic Link to Shape";
+    }
+    else if (att->ID() == XCAFDoc::KinematicRefLink1GUID() || att->ID() == XCAFDoc::KinematicRefLink2GUID()){
+      type = "Kinematic Joint to Link";
+    }
     else return 0;
 
     Handle(XCAFDoc_GraphNode) DETGN = Handle(XCAFDoc_GraphNode)::DownCast(att);
@@ -1496,6 +1503,7 @@ void XDEDRAW::Init(Draw_Interpretor& di)
   XDEDRAW_GDTs::InitCommands ( di );
   XDEDRAW_Views::InitCommands(di);
   XDEDRAW_Notes::InitCommands(di);
+  XDEDRAW_Kinematics::InitCommands(di);
   XDEDRAW_Common::InitCommands ( di );//moved from EXE
 
 }
index 253ee54a248b50b1a9d19d941500edf9eb386a99..a295465d6a1c30f1a76b6b358afa0577dfa6ee47 100644 (file)
@@ -28,6 +28,7 @@ class XDEDRAW_Layers;
 class XDEDRAW_Props;
 class XDEDRAW_Common;
 class XDEDRAW_Views;
+class XDEDRAW_Kinematics;
 
 
 //! Provides DRAW commands for work with DECAF data structures
diff --git a/src/XDEDRAW/XDEDRAW_Kinematics.cxx b/src/XDEDRAW/XDEDRAW_Kinematics.cxx
new file mode 100644 (file)
index 0000000..9a8c135
--- /dev/null
@@ -0,0 +1,1521 @@
+// Created on: 2020-03-19
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <XDEDRAW_Kinematics.hxx>
+
+#include <BRep_Tool.hxx>
+#include <DBRep.hxx>
+#include <DDocStd.hxx>
+#include <Draw.hxx>
+#include <DrawTrSurf.hxx>
+#include <Geom_Plane.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_LabelSequence.hxx>
+#include <TDocStd_Document.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS_Face.hxx>
+#include <XCAFDoc_DocumentTool.hxx>
+#include <XCAFDoc_KinematicPair.hxx>
+#include <XCAFDoc_KinematicPairValue.hxx>
+#include <XCAFDoc_KinematicTool.hxx>
+#include <XCAFDoc_ShapeTool.hxx>
+#include <XCAFKinematics_HighOrderPairObject.hxx>
+#include <XCAFKinematics_LowOrderPairObject.hxx>
+#include <XCAFKinematics_LowOrderPairObjectWithCoupling.hxx>
+#include <XCAFKinematics_PairObject.hxx>
+#include <XCAFKinematics_PairValueObject.hxx>
+
+//=======================================================================
+//function : getDocument
+//purpose  : auxiliary method
+//=======================================================================
+static Standard_Boolean getDocument(Draw_Interpretor& di,
+                                    const char* theDocName,
+                                    Handle(TDocStd_Document)& theDoc)
+{
+  DDocStd::GetDocument(theDocName, theDoc);
+  if (theDoc.IsNull()) {
+    di << theDocName << " is not a document\n";
+    return Standard_False;
+  }
+  return Standard_True;
+}
+
+//=======================================================================
+//function : getEntry
+//purpose  : auxiliary method
+//=======================================================================
+static TCollection_AsciiString getEntry(const TDF_Label& theLabel)
+{
+  TCollection_AsciiString entry;
+  TDF_Tool::Entry(theLabel, entry);
+  return entry;
+}
+
+//=======================================================================
+//function : getLabel
+//purpose  : auxiliary method
+//=======================================================================
+static Standard_Boolean getLabel(Draw_Interpretor& di,
+                                 const Handle(TDocStd_Document)& theDoc,
+                                 const char* theEntry,
+                                 TDF_Label& theLabel)
+{
+  TDF_Tool::Label(theDoc->GetData(), theEntry, theLabel);
+  if (theLabel.IsNull()) {
+    di << "Invalid label " << theEntry << "\n";
+    return Standard_False;
+  }
+  return Standard_True;
+}
+
+//=======================================================================
+//function : addMechanism
+//purpose  : 
+//=======================================================================
+static Standard_Integer addMechanism(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 2) {
+    di << "Use: XAddMechanism Doc\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  di << getEntry(aTool->AddMechanism());
+
+  return 0;
+}
+
+//=======================================================================
+//function : isMechanism
+//purpose  : 
+//=======================================================================
+static Standard_Integer isMechanism(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XIsMechanism Doc Label\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLabel;
+  if (!getLabel(di, aDoc, argv[2], aLabel))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  di << aTool->IsMechanism(aLabel);
+
+  return 0;
+}
+
+//=======================================================================
+//function : removeMechanism
+//purpose  : 
+//=======================================================================
+static Standard_Integer removeMechanism(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XRemoveMechanism Doc Label\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLabel;
+  if (!getLabel(di, aDoc, argv[2], aLabel))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  aTool->RemoveMechanism(aLabel);
+
+  return 0;
+}
+
+//=======================================================================
+//function : addLink
+//purpose  : 
+//=======================================================================
+static Standard_Integer addLink(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XAddLink Doc ParentMechanism [shapeLabel1 .. shapeLabelN]\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aMechanism;
+  if (!getLabel(di, aDoc, argv[2], aMechanism))
+    return 1;
+
+  TDF_LabelSequence aShapeArray;
+  for (Standard_Integer i = 3; i < argc; i++) {
+    TDF_Label aLabel;
+    if (!getLabel(di, aDoc, argv[i], aLabel))
+      continue;
+    aShapeArray.Append(aLabel);
+  }
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  di << getEntry(aTool->AddLink(aMechanism, aShapeArray));
+
+  return 0;
+}
+
+//=======================================================================
+//function : setLink
+//purpose  : 
+//=======================================================================
+static Standard_Integer setLink(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XAddLink Doc Link shapeLabel1 .. shapeLabelN\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLink;
+  if (!getLabel(di, aDoc, argv[2], aLink))
+    return 1;
+
+  TDF_LabelSequence aShapeArray;
+  for (Standard_Integer i = 3; i < argc; i++) {
+    TDF_Label aLabel;
+    if (!getLabel(di, aDoc, argv[i], aLabel))
+      continue;
+    aShapeArray.Append(aLabel);
+  }
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  if (!aTool->SetLink(aLink, aShapeArray))
+    return 1;
+
+  return 0;
+}
+
+//=======================================================================
+//function : isLink
+//purpose  : 
+//=======================================================================
+static Standard_Integer isLink(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XIsLink Doc Label\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLabel;
+  if (!getLabel(di, aDoc, argv[2], aLabel))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  di << aTool->IsLink(aLabel);
+
+  return 0;
+}
+
+//=======================================================================
+//function : removeLink
+//purpose  : 
+//=======================================================================
+static Standard_Integer removeLink(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XRemoveLink Doc Label\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLabel;
+  if (!getLabel(di, aDoc, argv[2], aLabel))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  aTool->RemoveLink(aLabel);
+
+  return 0;
+}
+
+//=======================================================================
+//function : addJoint
+//purpose  : 
+//=======================================================================
+static Standard_Integer addJoint(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XAddJoint Doc Mechanism [Link1 Link2]\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aMechanism;
+  if (!getLabel(di, aDoc, argv[2], aMechanism))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+
+  if (argc == 3) {
+    di << getEntry(aTool->AddJoint(aMechanism));
+    return 0;
+  }
+  else if (argc == 5) {
+    TDF_Label aLink1, aLink2;
+    if (!getLabel(di, aDoc, argv[3], aLink1))
+      return 1;
+    if (!getLabel(di, aDoc, argv[4], aLink2))
+      return 1;
+    di << getEntry(aTool->AddJoint(aMechanism, aLink1, aLink2));
+    return 0;
+  }
+
+  return 1;
+}
+
+//=======================================================================
+//function : isJoint
+//purpose  : 
+//=======================================================================
+static Standard_Integer isJoint(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XIsJoint Doc Label\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLabel;
+  if (!getLabel(di, aDoc, argv[2], aLabel))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  di << aTool->IsJoint(aLabel);
+  return 0;
+}
+
+//=======================================================================
+//function : setJoint
+//purpose  : 
+//=======================================================================
+static Standard_Integer setJoint(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XSetJoint Doc Joint Link1 Link2\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint))
+    return 1;
+  TDF_Label aLink1, aLink2;
+  if (!getLabel(di, aDoc, argv[3], aLink1))
+    return 1;
+  if (!getLabel(di, aDoc, argv[4], aLink2))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  if (!aTool->SetJoint(aJoint, aLink1, aLink2))
+    return 1;
+
+  return 0;
+}
+
+//=======================================================================
+//function : removeJoint
+//purpose  : 
+//=======================================================================
+static Standard_Integer removeJoint(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XRemoveJoint Doc Label\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLabel;
+  if (!getLabel(di, aDoc, argv[2], aLabel))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  aTool->RemoveJoint(aLabel);
+
+  return 0;
+}
+
+//=======================================================================
+//function : getMechanisms
+//purpose  : 
+//=======================================================================
+static Standard_Integer getMechanisms(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 2) {
+    di << "Use: XGetMechanisms Doc\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_LabelSequence aMechanismArray = aTool->GetMechanisms();
+  for (TDF_LabelSequence::Iterator anIter(aMechanismArray); anIter.More(); anIter.Next()) {
+    di << getEntry(anIter.Value()) << " ";
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getLinks
+//purpose  : 
+//=======================================================================
+static Standard_Integer getLinks(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetLinks Doc Mechanism\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aMechanism;
+  if (!getLabel(di, aDoc, argv[2], aMechanism))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_LabelSequence aLinksArray = aTool->GetLinks(aMechanism);
+  for (TDF_LabelSequence::Iterator anIter(aLinksArray); anIter.More(); anIter.Next()) {
+    di << getEntry(anIter.Value()) << " ";
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getJoints
+//purpose  : 
+//=======================================================================
+static Standard_Integer getJoints(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetJoints Doc Mechanism\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aMechanism;
+  if (!getLabel(di, aDoc, argv[2], aMechanism))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_LabelSequence aJointsArray = aTool->GetJoints(aMechanism);
+  for (TDF_LabelSequence::Iterator anIter(aJointsArray); anIter.More(); anIter.Next()) {
+    di << getEntry(anIter.Value()) << " ";
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getLinksOfJoint
+//purpose  : 
+//=======================================================================
+static Standard_Integer getLinksOfJoint(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetLinksOfJoint Doc Joint\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aLink1, aLink2;
+  aTool->GetLinksOfJoint(aJoint, aLink1, aLink2);
+
+  di << getEntry(aLink1) << " " << getEntry(aLink2);
+
+  return 0;
+}
+
+//=======================================================================
+//function : getJointsOfLink
+//purpose  : 
+//=======================================================================
+static Standard_Integer getJointsOfLink(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetJointsOfLink Doc Link\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLink;
+  if (!getLabel(di, aDoc, argv[2], aLink))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_LabelSequence aJointsArray = aTool->GetJointsOfLink(aLink);
+  for (TDF_LabelSequence::Iterator anIter(aJointsArray); anIter.More(); anIter.Next()) {
+    di << getEntry(anIter.Value()) << " ";
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getRefShapes
+//purpose  : 
+//=======================================================================
+static Standard_Integer getRefShapes(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetRefShapes Doc Link\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  TDF_Label aLink;
+  if (!getLabel(di, aDoc, argv[2], aLink))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_LabelSequence aShapesArray = aTool->GetRefShapes(aLink);
+  for (TDF_LabelSequence::Iterator anIter(aShapesArray); anIter.More(); anIter.Next()) {
+    di << getEntry(anIter.Value()) << " ";
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setName
+//purpose  : 
+//=======================================================================
+static Standard_Integer setName(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 4) {
+    di << "Use: XSetPairName Doc Joint Name\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  TCollection_AsciiString aName;
+  for (Standard_Integer i = 3; i < argc; i++) {
+    aName.AssignCat(argv[i]);
+    aName.AssignCat(" ");
+    if (i == argc - 1)
+      aName.Remove(aName.Length(), 1);
+  }
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    anObject->SetName(aName);
+    aPair->SetObject(anObject);
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getName
+//purpose  : 
+//=======================================================================
+static Standard_Integer getName(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetPairName Doc Joint\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    di << anObject->Name();
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setType
+//purpose  : 
+//=======================================================================
+static Standard_Integer setType(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 4) {
+    di << "Use: XSetPairType Doc Joint Type[1, 19]\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    int aType = Draw::Atoi(argv[3]);
+    if (aType >= XCAFKinematics_PairType_FullyConstrained &&
+        aType <= XCAFKinematics_PairType_Unconstrained)
+      anObject = new XCAFKinematics_LowOrderPairObject();
+    else if (aType >= XCAFKinematics_PairType_Screw &&
+             aType <= XCAFKinematics_PairType_Gear)
+      anObject = new XCAFKinematics_LowOrderPairObjectWithCoupling();
+    else if (aType >= XCAFKinematics_PairType_PointOnSurface &&
+             aType <= XCAFKinematics_PairType_RollingCurve)
+      anObject = new XCAFKinematics_HighOrderPairObject();
+    anObject->SetType((XCAFKinematics_PairType)aType);
+    aPair->SetObject(anObject);
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getType
+//purpose  : 
+//=======================================================================
+static Standard_Integer getType(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetPairType Doc Joint\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    di << anObject->Type();
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setTrsf
+//purpose  : 
+//=======================================================================
+static Standard_Integer setTrsf(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XSetPairTransformation Doc Joint TrsfNumber[1/2] Plane\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    Standard_Integer aTrsfNb = Draw::Atoi(argv[3]);
+    Handle(Geom_Plane) aSurface = Handle(Geom_Plane)::DownCast(DrawTrSurf::GetSurface(argv[4]));
+    if (aSurface.IsNull()) {
+      di << "Invalid transformation\n";
+      return 1;
+    }
+    switch (aTrsfNb) {
+    case 1: anObject->SetFirstTransformation(aSurface->Position());
+      break;
+    case 2: anObject->SetSecondTransformation(aSurface->Position());
+      break;
+    default:
+      di << "Invalid number of transformation\n";
+      return 1;
+    }
+    aPair->SetObject(anObject);
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getTrsf
+//purpose  : 
+//=======================================================================
+static Standard_Integer getTrsf(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XGetPairTransformation Doc Joint TrsfNumber[1/2] PlaneName\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    Standard_Integer aTrsfNb = Draw::Atoi(argv[3]);
+    Standard_CString aName = argv[4];
+    switch (aTrsfNb) {
+    case 1: DrawTrSurf::Set(aName, new Geom_Plane(anObject->FirstTransformation()));
+      break;
+    case 2: DrawTrSurf::Set(aName, new Geom_Plane(anObject->SecondTransformation()));
+      break;
+    default:
+      di << "Invalid number of transformation\n";
+      return 1;
+    }
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setLimits
+//purpose  : 
+//=======================================================================
+static Standard_Integer setLimits(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XSetPairLimits Doc Joint Value1 Value2...\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(TColStd_HArray1OfReal) aLimitArray = new TColStd_HArray1OfReal(1, argc - 3);
+  for (Standard_Integer i = 3; i < argc; i++) {
+    aLimitArray->ChangeValue(i - 2) = Draw::Atof(argv[i]);
+  }
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    anObject->SetAllLimits(aLimitArray);
+    aPair->SetObject(anObject);
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getLimits
+//purpose  : 
+//=======================================================================
+static Standard_Integer getLimits(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetPairLimits Doc Joint\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (!aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    di << "Invalid Pair object\n";
+    return 1;
+  }
+
+  Handle(TColStd_HArray1OfReal) aLimitArray;
+  Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+  aLimitArray = anObject->GetAllLimits();
+  for (Standard_Integer i = 1; i <= aLimitArray->Length(); i++)
+    di << aLimitArray->Value(i) << " ";
+
+  return 0;
+}
+
+//=======================================================================
+//function : setParameters
+//purpose  : 
+//=======================================================================
+static Standard_Integer setParameters(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 4) {
+    di << "Use: XSetPairParams Doc Joint Value1 Value2...\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(TColStd_HArray1OfReal) aParamArray = new TColStd_HArray1OfReal(1, argc - 3);
+  for (Standard_Integer i = 3; i < argc; i++) {
+    aParamArray->ChangeValue(i - 2) = Draw::Atof(argv[i]);
+  }
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_LowOrderPairObjectWithCoupling) anObject = 
+      Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)::DownCast(aPair->GetObject());
+    if (!anObject.IsNull()) {
+      anObject->SetAllParams(aParamArray);
+      aPair->SetObject(anObject);
+      return 0;
+    }
+    Handle(XCAFKinematics_LowOrderPairObject) aLowObject =
+      Handle(XCAFKinematics_LowOrderPairObject)::DownCast(aPair->GetObject());
+    if (!aLowObject.IsNull()) {
+      aLowObject->SetSkewAngle(aParamArray->First());
+      aPair->SetObject(aLowObject);
+      return 0;
+    }
+  }
+
+  di << "Wrong type of object\n";
+  return 1;
+}
+
+//=======================================================================
+//function : getParameters
+//purpose  : 
+//=======================================================================
+static Standard_Integer getParameters(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetPairParams Doc Joint\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_LowOrderPairObjectWithCoupling) anObject =
+      Handle(XCAFKinematics_LowOrderPairObjectWithCoupling)::DownCast(aPair->GetObject());
+    if (anObject.IsNull()) {
+      Handle(XCAFKinematics_LowOrderPairObject) aLowObject =
+        Handle(XCAFKinematics_LowOrderPairObject)::DownCast(aPair->GetObject());
+      if (!aLowObject.IsNull() &&
+          (aLowObject->Type() == XCAFKinematics_PairType_Universal ||
+           aLowObject->Type() == XCAFKinematics_PairType_Homokinetic)) {
+        di << "Skew Angle = " << aLowObject->SkewAngle();
+        return 0;
+      }
+      else {
+        di << "Wrong type of object\n";
+        return 1;
+      }
+    }
+    switch (anObject->Type()) {
+    case XCAFKinematics_PairType_Screw:
+      di << "Pitch = " << anObject->Pitch();
+      break;
+    case XCAFKinematics_PairType_RackAndPinion:
+      di << "Pinion Radius = " << anObject->PinionRadius();
+      break;
+    case XCAFKinematics_PairType_Gear:
+      di << "First Link Radius = " << anObject->RadiusFirstLink() << "\n";
+      di << "Second Link Radius = " << anObject->RadiusSecondLink() << "\n";
+      di << "Bevel = " << anObject->Bevel() << "\n";
+      di << "Helical Angle = " << anObject->HelicalAngle() << "\n";
+      di << "Gear Ratio = " << anObject->GearRatio();
+      break;
+    }
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setOrientation
+//purpose  : 
+//=======================================================================
+static Standard_Integer setOrientation(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 4) {
+    di << "Use: XSetPairOrientation Doc Joint Orientation[0/1]\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    Handle(XCAFKinematics_HighOrderPairObject) aHighObject =
+      Handle(XCAFKinematics_HighOrderPairObject)::DownCast(anObject);
+    if (aHighObject.IsNull()) {
+      di << "Error: Orientation could be applied only for high order kinematic pair\n";
+      return 1;
+    }
+    aHighObject->SetOrientation(Draw::Atoi(argv[3]) != 0 );
+    aPair->SetObject(anObject);
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : getOrientation
+//purpose  : 
+//=======================================================================
+static Standard_Integer getOrientation(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 3) {
+    di << "Use: XGetPairOrientation Doc Joint\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    Handle(XCAFKinematics_PairObject) anObject = aPair->GetObject();
+    Handle(XCAFKinematics_HighOrderPairObject) aHighObject =
+      Handle(XCAFKinematics_HighOrderPairObject)::DownCast(anObject);
+    if (aHighObject.IsNull()) {
+      di << "Error: Orientation could be applied only for high order kinematic pair\n";
+      return 1;
+    }
+    di << aHighObject->Orientation();
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setGeomParam
+//purpose  : 
+//=======================================================================
+static Standard_Integer setGeomParam(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XSetPairGeomParam Doc Joint Number[1/2] Surface/Face/Curve/Edge\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (!aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    di << "Invalid kinematic pair object\n";
+    return 1;
+  }
+  Handle(XCAFKinematics_HighOrderPairObject) anObject = 
+    Handle(XCAFKinematics_HighOrderPairObject)::DownCast(aPair->GetObject());
+  if (anObject.IsNull()) {
+    di << "Wrong type of kinematic pair\n";
+    return 1;
+  }
+
+  Standard_Integer aParamNb = Draw::Atoi(argv[3]);
+
+  if (anObject->Type() >= XCAFKinematics_PairType_PointOnSurface &&
+      anObject->Type() <= XCAFKinematics_PairType_RollingSurface)
+  {
+    // Surface
+    Handle(Geom_Surface) aSurface = DrawTrSurf::GetSurface(argv[4]);
+    if (aSurface.IsNull()) {
+      // Try to retrieve as a face
+      TopoDS_Face aFace = TopoDS::Face(DBRep::Get(argv[4], TopAbs_FACE));
+      if (!aFace.IsNull()) {
+        TopLoc_Location aLoc;
+        aSurface = BRep_Tool::Surface(aFace, aLoc);
+      }
+    }
+    if (aSurface.IsNull()) {
+      di << "Invalid geometric argument\n";
+      return 1;
+    }
+    if (anObject->Type() == XCAFKinematics_PairType_PointOnSurface)
+      anObject->SetSurface(aSurface);
+    else {
+      switch (aParamNb) {
+      case 1: anObject->SetFirstSurface(aSurface);
+        break;
+      case 2: anObject->SetSecondSurface(aSurface);
+        break;
+      default:
+        di << "Invalid number of geometric argument\n";
+        return 1;
+      }
+    }
+  }
+  else {
+    // Curve
+    Handle(Geom_Curve) aCurve = DrawTrSurf::GetCurve(argv[4]);
+    if (aCurve.IsNull()) {
+      // Try to retrieve as an adge
+      TopoDS_Edge anEdge = TopoDS::Edge(DBRep::Get(argv[4], TopAbs_EDGE));
+      if (!anEdge.IsNull()) {
+        TopLoc_Location aLoc;
+        Standard_Real aFirst, aLast;
+        aCurve = BRep_Tool::Curve(anEdge, aLoc, aFirst, aLast);
+      }
+    }
+    if (aCurve.IsNull()) {
+      di << "Invalid geometric argument\n";
+      return 1;
+    }
+    if (anObject->Type() == XCAFKinematics_PairType_PointOnPlanarCurve)
+      anObject->SetCurve(aCurve);
+    else {
+      switch (aParamNb) {
+      case 1: anObject->SetFirstCurve(aCurve);
+        break;
+      case 2: anObject->SetSecondCurve(aCurve);
+        break;
+      default:
+        di << "Invalid number of geometric argument\n";
+        return 1;
+      }
+    }
+  }
+
+  aPair->SetObject(anObject);
+
+  return 0;
+}
+
+//=======================================================================
+//function : getGeomParam
+//purpose  : 
+//=======================================================================
+static Standard_Integer getGeomParam(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XGetPairGeomParam Doc Joint Number[1/2] Name\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+  Handle(XCAFDoc_KinematicPair) aPair;
+  if (!aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+    di << "Invalid kinematic pair object\n";
+    return 1;
+  }
+  Handle(XCAFKinematics_HighOrderPairObject) anObject =
+    Handle(XCAFKinematics_HighOrderPairObject)::DownCast(aPair->GetObject());
+  if (anObject.IsNull()) {
+    di << "Wrong type of kinematic pair\n";
+    return 1;
+  }
+
+  Standard_Integer aTrsfNb = Draw::Atoi(argv[3]);
+
+  if (anObject->Type() >= XCAFKinematics_PairType_PointOnSurface &&
+      anObject->Type() <= XCAFKinematics_PairType_RollingSurface)
+  {
+    // Surface
+    Handle(Geom_Surface) aSurface;
+    if (anObject->Type() == XCAFKinematics_PairType_PointOnSurface)
+      aSurface = anObject->Surface();
+    else {
+      switch (aTrsfNb) {
+      case 1: aSurface = anObject->FirstSurface();
+        break;
+      case 2: aSurface = anObject->SecondSurface();
+        break;
+      default:
+        di << "Invalid number of geometric argument\n";
+        return 1;
+      }
+    }
+    DrawTrSurf::Set(argv[4], aSurface);
+  }
+  else {
+    // Curve
+    Handle(Geom_Curve) aCurve;
+    if (anObject->Type() == XCAFKinematics_PairType_PointOnPlanarCurve)
+      aCurve = anObject->Curve();
+    else {
+      switch (aTrsfNb) {
+      case 1: aCurve = anObject->FirstCurve();
+        break;
+      case 2: aCurve = anObject->SecondCurve();
+        break;
+      default:
+        di << "Invalid number of geometric argument\n";
+        return 1;
+      }
+    }
+    DrawTrSurf::Set(argv[4], aCurve);
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : setValues
+//purpose  : 
+//=======================================================================
+static Standard_Integer setValues(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 5) {
+    di << "Use: XSetPairValues Doc Joint -Key1 Values1... -KeyN ValuesN\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFKinematics_PairValueObject) anObject;
+  Handle(XCAFDoc_KinematicPairValue) aPairValue;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPairValue::GetID(), aPairValue))
+    anObject = aPairValue->GetObject();
+  else {
+    Handle(XCAFDoc_KinematicPair) aPair;
+    if (!aJoint.FindAttribute(XCAFDoc_KinematicPair::GetID(), aPair)) {
+      di << "Invalid kinematic pair object\n";
+      return 1;
+    }
+    Handle(XCAFKinematics_PairObject) aPairObject = aPair->GetObject();
+    anObject = new XCAFKinematics_PairValueObject();
+    anObject->SetType(aPairObject->Type());
+    aPairValue = XCAFDoc_KinematicPairValue::Set(aJoint);
+  }
+
+  try {
+    Standard_Integer anIt = 3;
+    while (anIt < argc) {
+      TCollection_AsciiString aKey = argv[anIt];
+      if (aKey.IsEqual("-rotation"))
+        anObject->SetRotation(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-first_rotation"))
+        anObject->SetFirstRotation(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-second_rotation"))
+        anObject->SetSecondRotation(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-translation"))
+        anObject->SetTranslation(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-first_translation"))
+        anObject->SetFirstTranslation(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-second_translation"))
+        anObject->SetSecondTranslation(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-point_on_surface")) {
+        anObject->SetPointOnSurface(Atof(argv[anIt + 1]), Atof(argv[anIt + 2]));
+        anIt += 2;
+      }
+      else if (aKey.IsEqual("-first_point_on_surface")) {
+        anObject->SetFirstPointOnSurface(Atof(argv[anIt + 1]), Atof(argv[anIt + 2]));
+        anIt += 2;
+      }
+      else if (aKey.IsEqual("-second_point_on_surface")) {
+        anObject->SetSecondPointOnSurface(Atof(argv[anIt + 1]), Atof(argv[anIt + 2]));
+        anIt += 2;
+      }
+      else if (aKey.IsEqual("-point_on_curve"))
+        anObject->SetPointOnCurve(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-first_point_on_curve"))
+        anObject->SetFirstPointOnCurve(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-second_point_on_curve"))
+        anObject->SetSecondPointOnCurve(Atof(argv[++anIt]));
+      else if (aKey.IsEqual("-ypr")) {
+        anObject->SetYPR(Atof(argv[anIt + 1]), Atof(argv[anIt + 2]), Atof(argv[anIt + 3]));
+        anIt += 3;
+      }
+      else if (aKey.IsEqual("-trsf")) {
+        gp_Pnt aLoc(Atof(argv[anIt + 1]), Atof(argv[anIt + 2]), Atof(argv[anIt + 3]));
+        gp_Dir aDir(Atof(argv[anIt + 4]), Atof(argv[anIt + 5]), Atof(argv[anIt + 6]));
+        gp_Dir aXDir(Atof(argv[anIt + 7]), Atof(argv[anIt + 8]), Atof(argv[anIt + 9]));
+        anIt += 9;
+        gp_Ax2 aResult = gp_Ax2(aLoc, aDir, aXDir);
+        anObject->SetTransformation(aResult);
+      }
+      anIt++;
+    }
+  }
+  catch (...) {
+    di << "Invalid number of parameters";
+    return 1;
+  }
+
+  aPairValue->SetObject(anObject);
+
+  return 0;
+}
+
+//=======================================================================
+//function : getValues
+//purpose  : 
+//=======================================================================
+static Standard_Integer getValues(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+  if (argc < 4) {
+    di << "Use: XGetPairValues Doc Joint -Key\n";
+    return 1;
+  }
+
+  Handle(TDocStd_Document) aDoc;
+  if (!getDocument(di, argv[1], aDoc))
+    return 1;
+  Handle(XCAFDoc_KinematicTool) aTool = XCAFDoc_DocumentTool::KinematicTool(aDoc->Main());
+  TDF_Label aJoint;
+  if (!getLabel(di, aDoc, argv[2], aJoint) || !aTool->IsJoint(aJoint))
+    return 1;
+
+  Handle(XCAFKinematics_PairValueObject) anObject;
+  Handle(XCAFDoc_KinematicPairValue) aPairValue;
+  if (aJoint.FindAttribute(XCAFDoc_KinematicPairValue::GetID(), aPairValue))
+    anObject = aPairValue->GetObject();
+  if (anObject.IsNull()) {
+    di << "Invalid value object";
+    return 1;
+  }
+
+  TCollection_AsciiString aKey = argv[3];
+  if (aKey.IsEqual("-rotation"))
+    di << anObject->GetRotation();
+  else if (aKey.IsEqual("-first_rotation"))
+    di << anObject->GetFirstRotation();
+  else if (aKey.IsEqual("-second_rotation"))
+    di << anObject->GetSecondRotation();
+  else if (aKey.IsEqual("-translation"))
+    di << anObject->GetTranslation();
+  else if (aKey.IsEqual("-first_translation"))
+    di << anObject->GetFirstTranslation();
+  else if (aKey.IsEqual("-second_translation"))
+    di << anObject->GetSecondTranslation();
+  else if (aKey.IsEqual("-point_on_surface")) {
+    Standard_Real anU, aV;
+    if (anObject->GetPointOnSurface(anU, aV))
+      di << anU << " " << aV;
+  }
+  else if (aKey.IsEqual("-first_point_on_surface")) {
+    Standard_Real anU, aV;
+    if (anObject->GetFirstPointOnSurface(anU, aV))
+      di << anU << " " << aV;
+  }
+  else if (aKey.IsEqual("-second_point_on_surface")) {
+    Standard_Real anU, aV;
+    if (anObject->GetSecondPointOnSurface(anU, aV))
+      di << anU << " " << aV;
+  }
+  else if (aKey.IsEqual("-point_on_curve"))
+    di << anObject->GetPointOnCurve();
+  else if (aKey.IsEqual("-first_point_on_curve"))
+    di << anObject->GetFirstPointOnCurve();
+  else if (aKey.IsEqual("-second_point_on_curve"))
+    di << anObject->GetSecondPointOnCurve();
+  else if (aKey.IsEqual("-ypr")) {
+    Standard_Real anYaw, aPitch, aRoll;
+    if (anObject->GetYPR(anYaw, aPitch, aRoll))
+      di << anYaw << " " << aPitch << " " << aRoll;
+  }
+  else if (aKey.IsEqual("-trsf")) {
+    gp_Ax2 aResult = anObject->GetTransformation();
+    di << aResult.Location().X() << " " << aResult.Location().Y() << " " << aResult.Location().Z() << "\n";
+    di << aResult.Direction().X() << " " << aResult.Direction().Y() << " " << aResult.Direction().Z() << "\n";
+    di << aResult.XDirection().X() << " " << aResult.XDirection().Y() << " " << aResult.XDirection().Z();
+  }
+
+  return 0;
+}
+
+//=======================================================================
+//function : InitCommands
+//purpose  : 
+//=======================================================================
+
+void XDEDRAW_Kinematics::InitCommands(Draw_Interpretor& di)
+{
+  static Standard_Boolean initactor = Standard_False;
+  if (initactor)
+  {
+    return;
+  }
+  initactor = Standard_True;
+
+  Standard_CString g = "XDE Kinematics commands";
+
+  di.Add("XAddMechanism", "XAddMechanism Doc",
+    __FILE__, addMechanism, g);
+
+  di.Add("XIsMechanism", "XIsMechanism Doc Label",
+    __FILE__, isMechanism, g);
+
+  di.Add("XRemoveMechanism", "XRemoveMechanism Doc Label",
+    __FILE__, removeMechanism, g);
+
+  di.Add("XAddLink", "XAddLink Doc ParentMechanism [shapeLabel1 .. shapeLabelN]",
+    __FILE__, addLink, g);
+
+  di.Add("XSetLink", "XSetLink Doc Link shapeLabel1 .. shapeLabelN",
+    __FILE__, setLink, g);
+
+  di.Add("XIsLink", "XIsLink Doc Label",
+    __FILE__, isLink, g);
+
+  di.Add("XRemoveLink", "XRemoveLink Doc Label",
+    __FILE__, removeLink, g);
+
+  di.Add("XAddJoint", "XAddJoint Doc Mechanism [Link1 Link2]",
+    __FILE__, addJoint, g);
+
+  di.Add("XSetJoint", "XSetJoint Doc Joint Link1 Link2",
+    __FILE__, setJoint, g);
+
+  di.Add("XIsJoint", "XIsJoint Doc Label",
+    __FILE__, isJoint, g);
+
+  di.Add("XRemoveJoint", "XRemoveJoint Doc Label",
+    __FILE__, removeJoint, g);
+
+  di.Add("XGetMechanisms", "XGetMechanisms Doc",
+    __FILE__, getMechanisms, g);
+
+  di.Add("XGetLinks", "XGetLinks Doc Mechanism",
+    __FILE__, getLinks, g);
+
+  di.Add("XGetJoints", "XGetJoints Doc Mechanism",
+    __FILE__, getJoints, g);
+
+  di.Add("XGetLinksOfJoint", "XGetLinksOfJoint Doc Joint",
+    __FILE__, getLinksOfJoint, g);
+
+  di.Add("XGetJointsOfLink", "XGetJointsOfLink Doc Link",
+    __FILE__, getJointsOfLink, g);
+
+  di.Add("XGetRefShapes", "XGetRefShapes Doc Link",
+    __FILE__, getRefShapes, g);
+
+  di.Add("XSetPairName", "XSetPairName Doc Joint Name",
+    __FILE__, setName, g);
+
+  di.Add("XGetPairName", "XGetPairName Doc Joint",
+    __FILE__, getName, g);
+
+  di.Add("XSetPairType", "XSetPairType Doc Joint Type[0..19]"
+    "Values:\n"
+    "\t  0 type is absent\n"
+    "\t  1 FullyConstrained\n"
+    "\t  2 Revolute\n"
+    "\t  3 Prismatic\n"
+    "\t  4 Cylindrical\n"
+    "\t  5 Universal\n"
+    "\t  6 Homokinetic\n"
+    "\t  7 SphericalWithPin\n"
+    "\t  8 Spherical\n"
+    "\t  9 Planar\n"
+    "\t 10 Unconstrained\n"
+    "\t 11 Screw\n"
+    "\t 12 RackAndPinion\n"
+    "\t 13 Gear\n"
+    "\t 14 PointOnSurface\n"
+    "\t 15 SlidingSurface\n"
+    "\t 16 RollingSurface\n"
+    "\t 17 PointOnPlanarCurve\n"
+    "\t 18 SlidingCurve\n"
+    "\t 19 RollingCurve\n"
+    __FILE__, setType, g);
+
+  di.Add("XGetPairType", "XGetPairType Doc Joint",
+    __FILE__, getType, g);
+
+  di.Add("XSetPairTransformation", "XSetPairTransformation Doc Joint TrsfNb[1/2] Plane",
+    __FILE__, setTrsf, g);
+
+  di.Add("XGetPairTransformation", "XGetPairTransformation Doc Joint TrsfNb[1/2] PlaneName",
+    __FILE__, getTrsf, g);
+
+  di.Add("XSetPairOrientation", "XSetPairOrientation Doc Joint Orientation[0/1]",
+    __FILE__, setOrientation, g);
+
+  di.Add("XGetPairOrientation", "XGetPairOrientation Doc Joint",
+    __FILE__, getOrientation, g);
+
+  di.Add("XSetPairLimits", "XSetPairLimits Doc Joint Value1 Value2..."
+    "Values:\n"
+    "\t Low order pair - 12 values \n"
+    "\t Low order pair with motion coupling - 2 values \n"
+    "\t High order pair - 2 or 6 values\n"
+    __FILE__, setLimits, g);
+
+  di.Add("XGetPairLimits", "XGetPairLimits Doc Joint",
+    __FILE__, getLimits, g);
+
+  di.Add("XSetPairParams", "XSetPairParams Doc Joint Value1 Value2..."
+    "\tScrew - Pitch\n"
+    "\tRackAndPinion - PinionRadius\n"
+    "\tGear -FirstLinkRadius SecondLinkRadius Bevel HelicalAngle GearRatio \n"
+    __FILE__, setParameters, g);
+
+  di.Add("XGetPairParams", "XGetPairParams Doc Joint",
+    __FILE__, getParameters, g);
+
+  di.Add("XSetPairGeomParam", "XSetPairGeomParam Doc Joint Number[1/2] Surface/Face/Curve/Edge",
+    __FILE__, setGeomParam, g);
+
+  di.Add("XGetPairGeomParam", "XGetPairGeomParam Doc Joint Number[1/2] Name",
+    __FILE__, getGeomParam, g);
+
+  di.Add("XSetPairValues", "XSetPairValues Doc Joint -Key1 Values1 -KeyN ValuesN"
+    "\t-[first_/second_]rotation - current rotation - 1 number"
+    "\t-[first_/second_]translation - current translation - 1 number"
+    "\t-[first_/second_]point_on_surface - current (u,v) - 2 numbers"
+    "\t-[first_/second_]point_on_curve - current (t) - 1 number"
+    "\t-ypr - current yaw pitch roll angles - 3 numbers"
+    "\t-trsf - for unconstrained only current location direction xdirection - 9 numbers",
+    __FILE__, setValues, g);
+
+  di.Add("XGetPairValues", "XGetPairValues Doc Joint -Key"
+    "\t-[first_/second_]rotation - current rotation - 1 number"
+    "\t-[first_/second_]translation - current translation - 1 number"
+    "\t-[first_/second_]point_on_surface - current (u,v) - 2 numbers"
+    "\t-[first_/second_]point_on_curve - current (t) - 1 number"
+    "\t-ypr - current yaw pitch roll angles - 3 numbers"
+    "\t-trsf - for unconstrained only current location direction xdirection - 9 numbers",
+    __FILE__, getValues, g);
+}
diff --git a/src/XDEDRAW/XDEDRAW_Kinematics.hxx b/src/XDEDRAW/XDEDRAW_Kinematics.hxx
new file mode 100644 (file)
index 0000000..2622484
--- /dev/null
@@ -0,0 +1,36 @@
+// Created on: 2020-03-19
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XDEDRAW_Kinematics_HeaderFile
+#define _XDEDRAW_Kinematics_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Draw_Interpretor.hxx>
+
+
+//! Contains commands to work with GDTs
+class XDEDRAW_Kinematics 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT static void InitCommands (Draw_Interpretor& theCommands);
+};
+
+#endif // _XDEDRAW_Kinematics_HeaderFile
index 2d1444cfa33926efd6e21f892246d4d6af81cecf..2322170639cda8709e16e77934defd3bfceba20b 100644 (file)
@@ -22,6 +22,8 @@ XmlMXCAFDoc_DocumentToolDriver.cxx
 XmlMXCAFDoc_DocumentToolDriver.hxx
 XmlMXCAFDoc_GraphNodeDriver.cxx
 XmlMXCAFDoc_GraphNodeDriver.hxx
+XmlMXCAFDoc_KinematicToolDriver.cxx
+XmlMXCAFDoc_KinematicToolDriver.hxx
 XmlMXCAFDoc_LayerToolDriver.cxx
 XmlMXCAFDoc_LayerToolDriver.hxx
 XmlMXCAFDoc_LocationDriver.cxx
index 0d5b29725e11118ccead93d5beec3a9d144fea85..ffbbbb5f9cc56c185ce031d84173fc84c9f331c6 100644 (file)
@@ -30,6 +30,7 @@
 #include <XmlMXCAFDoc_DimTolToolDriver.hxx>
 #include <XmlMXCAFDoc_DocumentToolDriver.hxx>
 #include <XmlMXCAFDoc_GraphNodeDriver.hxx>
+#include <XmlMXCAFDoc_KinematicToolDriver.hxx>
 #include <XmlMXCAFDoc_LayerToolDriver.hxx>
 #include <XmlMXCAFDoc_LocationDriver.hxx>
 #include <XmlMXCAFDoc_MaterialDriver.hxx>
@@ -89,4 +90,5 @@ void XmlMXCAFDoc::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
   aDriverTable -> AddDriver (new XmlMXCAFDoc_NotesToolDriver    (anMsgDrv));
   aDriverTable -> AddDriver (new XmlMXCAFDoc_ViewToolDriver     (anMsgDrv));
   aDriverTable -> AddDriver (new XmlMXCAFDoc_ClippingPlaneToolDriver(anMsgDrv));
+  aDriverTable -> AddDriver (new XmlMXCAFDoc_KinematicToolDriver(anMsgDrv));
 }
index c052c584ff291f5d338dc4954c5cd1ae1b98c679..8f5a19f62e1fabf481729f6ce5bf7734ff2660d0 100644 (file)
@@ -43,6 +43,7 @@ class XmlMXCAFDoc_ShapeToolDriver;
 class XmlMXCAFDoc_DimTolToolDriver;
 class XmlMXCAFDoc_MaterialToolDriver;
 class XmlMXCAFDoc_ViewToolDriver;
+class XmlMXCAFDoc_KinematicToolDriver;
 
 
 //! Storage and Retrieval drivers for modelling attributes.
@@ -88,6 +89,7 @@ friend class XmlMXCAFDoc_ShapeToolDriver;
 friend class XmlMXCAFDoc_DimTolToolDriver;
 friend class XmlMXCAFDoc_MaterialToolDriver;
 friend class XmlMXCAFDoc_ViewToolDriver;
+friend class XmlMXCAFDoc_KinematicToolDriver;
 
 };
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_KinematicToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_KinematicToolDriver.cxx
new file mode 100644 (file)
index 0000000..0edcd42
--- /dev/null
@@ -0,0 +1,64 @@
+// Created on: 2020-03-18
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 <Message_Messenger.hxx>
+#include <Standard_Type.hxx>
+#include <TDF_Attribute.hxx>
+#include <XCAFDoc_KinematicTool.hxx>
+#include <XmlMXCAFDoc_KinematicToolDriver.hxx>
+#include <XmlObjMgt_Persistent.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_KinematicToolDriver, XmlMDF_ADriver)
+
+//=======================================================================
+//function : XmlMXCAFDoc_KinematicToolDriver
+//purpose  : 
+//=======================================================================
+XmlMXCAFDoc_KinematicToolDriver::XmlMXCAFDoc_KinematicToolDriver
+  (const Handle(Message_Messenger)& theMsgDriver)
+: XmlMDF_ADriver (theMsgDriver, "xcaf", "KinematicTool")
+{
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) XmlMXCAFDoc_KinematicToolDriver::NewEmpty() const
+{
+  return new XCAFDoc_KinematicTool();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+Standard_Boolean XmlMXCAFDoc_KinematicToolDriver::Paste(const XmlObjMgt_Persistent&,
+                                                        const Handle(TDF_Attribute)&,
+                                                        XmlObjMgt_RRelocationTable&) const
+{
+  return Standard_True;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void XmlMXCAFDoc_KinematicToolDriver::Paste(const Handle(TDF_Attribute)&,
+                                            XmlObjMgt_Persistent&,
+                                            XmlObjMgt_SRelocationTable&) const
+{
+}
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_KinematicToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_KinematicToolDriver.hxx
new file mode 100644 (file)
index 0000000..4cf9a3e
--- /dev/null
@@ -0,0 +1,52 @@
+// Created on: 2020-03-18
+// Created by: Irina KRYLOVA
+// Copyright (c) 2020 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 _XmlMXCAFDoc_KinematicToolDriver_HeaderFile
+#define _XmlMXCAFDoc_KinematicToolDriver_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <XmlMDF_ADriver.hxx>
+#include <Standard_Boolean.hxx>
+#include <XmlObjMgt_RRelocationTable.hxx>
+#include <XmlObjMgt_SRelocationTable.hxx>
+class Message_Messenger;
+class TDF_Attribute;
+class XmlObjMgt_Persistent;
+
+
+class XmlMXCAFDoc_KinematicToolDriver;
+DEFINE_STANDARD_HANDLE(XmlMXCAFDoc_KinematicToolDriver, XmlMDF_ADriver)
+
+//! Attribute Driver.
+class XmlMXCAFDoc_KinematicToolDriver : public XmlMDF_ADriver
+{
+
+public:
+
+  
+  Standard_EXPORT XmlMXCAFDoc_KinematicToolDriver(const Handle(Message_Messenger)& theMsgDriver);
+  
+  Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual Standard_Boolean Paste (const XmlObjMgt_Persistent& theSource, const Handle(TDF_Attribute)& theTarget, XmlObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
+  
+  Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& theSource, XmlObjMgt_Persistent& theTarget, XmlObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
+
+  DEFINE_STANDARD_RTTIEXT(XmlMXCAFDoc_KinematicToolDriver, XmlMDF_ADriver)
+};
+
+#endif // _XmlMXCAFDoc_KinematicToolDriver_HeaderFile
index b15874bd821d17c788900fcfc2379e8a2ada898f..ca36186f164cb6dd278535782a2d7df8324e24af 100644 (file)
@@ -5,3 +5,4 @@
 005 presentation
 006 view
 007 notes
+008 kinematics
diff --git a/tests/gdt/kinematics/A1 b/tests/gdt/kinematics/A1
new file mode 100644 (file)
index 0000000..f65a581
--- /dev/null
@@ -0,0 +1,154 @@
+#==============================
+# Test scenario for kinematics
+#==============================
+
+# ReadStep D [locate_data_file as1-oc-214.stp]
+# Load document with shape structure
+ReadStep D C:/Work/files/as1.stp
+# Add parent mechanism
+set mech [XAddMechanism D]
+
+# Add several Links
+set link1 [XAddLink D $mech 0:1:1:2:3]
+set ref_shapes1 [XGetRefShapes D $link1]
+if {$ref_shapes1 != "0:1:1:2:3 "} {
+  puts "Error: wrong kinematic graph structure."
+}
+set link2 [XAddLink D 0:1:11:1]
+XSetLink D $link2 0:1:1:2:1 0:1:1:2:2
+set ref_shapes2 [XGetRefShapes D $link2]
+if {$ref_shapes2 != "0:1:1:2:1 0:1:1:2:2 "} {
+  puts "Error: wrong kinematic graph structure."
+}
+set link3 [XAddLink D $mech 0:1:1:3]
+set result [XIsLink D $link3]
+if {$result == 0} {
+  puts "Error: wrong kinematic graph structure."
+}
+set link4 [XAddLink D $mech 0:1:1:7]
+XRemoveLink D $link4
+set result [XIsLink D $link4]
+if {$result == 1} {
+  puts "Error: wrong kinematic graph structure."
+}
+
+# Add several Joints
+set joint1 [XAddJoint D $mech $link1 $link2]
+set result [XIsJoint D $joint1]
+if {$result == 0} {
+  puts "Error: wrong kinematic graph structure."
+}
+set ref_links1 [XGetLinksOfJoint D $joint1]
+if {$ref_links1 != "0:1:11:1:1:1 0:1:11:1:1:2"} {
+  puts "Error: wrong kinematic graph structure."
+}
+XSetPairType D $joint1 3
+set result [XGetPairType D $joint1]
+if {$result != 3} {
+  puts "Error: wrong kinematic pair data."
+}
+XSetPairName D $joint1 Low order
+set result [XGetPairName D $joint1]
+if {$result != "Low order"} {
+  puts "Error: wrong kinematic pair data."
+}
+plane p1 0 0 0 1 0 0
+plane p2 0 0 0 0 1 0
+XSetPairTransformation D $joint1 1 p1
+set dump_in [dump p1]
+XGetPairTransformation D $joint1 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong kinematic pair data."
+}
+XSetPairTransformation D $joint1 2 p2
+set dump_in [dump p2]
+XGetPairTransformation D $joint1 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong kinematic pair data."
+}
+XSetPairLimits D $joint1 0 0 0 0 0 0 0 100 0 0 0 0
+set limits [XGetPairLimits D $joint1]
+if {$limits != "0 0 0 0 0 0 0 100 0 0 0 0 "} {
+  puts "Error: wrong kinematic pair data."
+}
+
+set joint2 [XAddJoint D 0:1:11:1]
+XSetJoint D $joint2 $link1 $link3
+set ref_links2 [XGetLinksOfJoint D $joint2]
+if {$ref_links2 != "0:1:11:1:1:1 0:1:11:1:1:3"} {
+  puts "Error: wrong kinematic graph structure."
+}
+set ref_joints [XGetJointsOfLink D 0:1:11:1:1:1]
+if {$ref_joints != "0:1:11:1:2:1 0:1:11:1:2:2 "} {
+  puts "Error: wrong kinematic graph structure."
+}
+XSetPairType D $joint2 13
+XSetPairName D $joint2 Low order with motion coupling
+XSetPairLimits D $joint2 0 60
+set limits [XGetPairLimits D $joint2]
+if {$limits != "0 60 "} {
+  puts "Error: wrong kinematic pair data."
+}
+XSetPairParams D $joint2 1 2 3 4 5
+set params [XGetPairParams D $joint2]
+if {[lindex $params 4] != "1"} {
+  puts "Error: wrong kinematic pair data."
+}
+if {[lindex $params 9] != "2"} {
+  puts "Error: wrong kinematic pair data."
+}
+if {[lindex $params 12] != "3"} {
+  puts "Error: wrong kinematic pair data."
+}
+if {[lindex $params 16] != "4"} {
+  puts "Error: wrong kinematic pair data."
+}
+if {[lindex $params 20] != "5"} {
+  puts "Error: wrong kinematic pair data."
+}
+
+set joint3 [XAddJoint D $mech $link3 $link2]
+XSetPairType D $joint3 15
+XSetPairName D $joint3 High order surface
+XSetPairLimits D $joint3 30 60
+sphere sph 4 4 4 1
+set dump_in [dump sph]
+XSetPairGeomParam D $joint3 1 sph
+XGetPairGeomParam D $joint3 1 sph
+set dump_out [dump sph]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong kinematic pair data."
+}
+cylinder cyl 0 0 0 0 1 0 2
+trim cyl cyl 0 2 0 2
+set dump_in [dump cyl]
+mkface fcyl cyl
+XSetPairGeomParam D $joint3 2 fcyl
+XGetPairGeomParam D $joint3 2 cyl
+set dump_out [dump cyl]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong kinematic pair data."
+}
+
+set joint4 [XAddJoint D $mech $link3 0:1:11:1:1:1]
+XSetPairType D $joint4 17
+XSetPairName D $joint4 High order curve
+circle cir 0 0 0 3
+set dump_in [dump cir]
+XSetPairGeomParam D $joint4 1 cir
+XGetPairGeomParam D $joint4 1 cir
+set dump_out [dump cir]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong kinematic pair data."
+}
+mkedge ecir cir
+XSetPairGeomParam D $joint4 1 ecir
+XGetPairGeomParam D $joint4 1 cir
+set dump_out [dump cir]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong kinematic pair data."
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A2 b/tests/gdt/kinematics/A2
new file mode 100644 (file)
index 0000000..2112707
--- /dev/null
@@ -0,0 +1,55 @@
+# Revolute pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint revolute
+set name [XGetPairName D $joint]
+if {$name != "revolute"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 2
+set type [XGetPairType D $joint]
+if {$type != "2"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 0 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 0 0 0 0 0 0 0 0 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 0 0 0 0 0 0 0 0 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -rotation 15
+set values [XGetPairValues D $joint -rotation]
+if {$values != "15"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A3 b/tests/gdt/kinematics/A3
new file mode 100644 (file)
index 0000000..1629b81
--- /dev/null
@@ -0,0 +1,55 @@
+# Revolute pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint prismatic
+set name [XGetPairName D $joint]
+if {$name != "prismatic"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 3
+set type [XGetPairType D $joint]
+if {$type != "3"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 1 0 0 0 1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 0 0 0 0 0 0 0 0 10 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 0 0 0 0 0 0 0 0 10 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -translation 3
+set values [XGetPairValues D $joint -translation]
+if {$values != "3"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A4 b/tests/gdt/kinematics/A4
new file mode 100644 (file)
index 0000000..3ea9e3c
--- /dev/null
@@ -0,0 +1,59 @@
+# Cylindrical pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint cylindrical
+set name [XGetPairName D $joint]
+if {$name != "cylindrical"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 4
+set type [XGetPairType D $joint]
+if {$type != "4"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 1 0 0 0 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 0 0 0 0 0 0 0 10 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 0 0 0 0 0 0 0 10 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -rotation 15 -translation 3
+set values [XGetPairValues D $joint -translation]
+if {$values != "3"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -rotation]
+if {$values != "15"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A5 b/tests/gdt/kinematics/A5
new file mode 100644 (file)
index 0000000..f0d9754
--- /dev/null
@@ -0,0 +1,65 @@
+# Universal pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint universal
+set name [XGetPairName D $joint]
+if {$name != "universal"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 5
+set type [XGetPairType D $joint]
+if {$type != "5"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 1 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 10 20 0 0 0 0 0 0 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 10 20 0 0 0 0 0 0 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairParams D $joint 30
+set param [XGetPairParams D $joint]
+if {$param != "Skew Angle = 30"} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -first_rotation 20 -second_rotation 15
+set values [XGetPairValues D $joint -first_rotation]
+if {$values != "20"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -second_rotation]
+if {$values != "15"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A6 b/tests/gdt/kinematics/A6
new file mode 100644 (file)
index 0000000..9f1fd29
--- /dev/null
@@ -0,0 +1,65 @@
+# Homokinetic pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint homokinetic
+set name [XGetPairName D $joint]
+if {$name != "homokinetic"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 6
+set type [XGetPairType D $joint]
+if {$type != "6"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 1 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 0 45 0 0 0 0 0 0 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 0 45 0 0 0 0 0 0 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairParams D $joint 30
+set param [XGetPairParams D $joint]
+if {$param != "Skew Angle = 30"} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -rotation 20 -second_rotation 20
+set values [XGetPairValues D $joint -rotation]
+if {$values != "20"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -second_rotation]
+if {$values != "20"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A7 b/tests/gdt/kinematics/A7
new file mode 100644 (file)
index 0000000..2553900
--- /dev/null
@@ -0,0 +1,55 @@
+# Spherical with pin pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint spherical with pin
+set name [XGetPairName D $joint]
+if {$name != "spherical with pin"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 7
+set type [XGetPairType D $joint]
+if {$type != "7"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 1 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 0 0 30 60 0 0 0 0 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 0 0 30 60 0 0 0 0 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -ypr 10 0 30
+set values [XGetPairValues D $joint -ypr]
+if {$values != "10 0 30"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A8 b/tests/gdt/kinematics/A8
new file mode 100644 (file)
index 0000000..8d4a4b7
--- /dev/null
@@ -0,0 +1,55 @@
+# Spherical pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint spherical with pin
+set name [XGetPairName D $joint]
+if {$name != "spherical with pin"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 8
+set type [XGetPairType D $joint]
+if {$type != "8"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 1 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 0 30 30 60 0 0 0 0 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 0 30 30 60 0 0 0 0 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -ypr 10 20 30
+set values [XGetPairValues D $joint -ypr]
+if {$values != "10 20 30"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/A9 b/tests/gdt/kinematics/A9
new file mode 100644 (file)
index 0000000..fc6995b
--- /dev/null
@@ -0,0 +1,64 @@
+# Planar pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint planar
+set name [XGetPairName D $joint]
+if {$name != "planar"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 9
+set type [XGetPairType D $joint]
+if {$type != "9"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 3 0 0 1
+plane p2 0 0 0 0 1 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 45 0 0 0 0 10 20 2 3 0 0
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 45 0 0 0 0 10 20 2 3 0 0 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -rotation 20 -first_translation 14
+XSetPairValues D $joint -second_translation 2.1
+set values [XGetPairValues D $joint -rotation]
+if {$values != "20"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -first_translation]
+if {$values != "14"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -second_translation]
+if {$values != "2.1"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B1 b/tests/gdt/kinematics/B1
new file mode 100644 (file)
index 0000000..9c8e6e2
--- /dev/null
@@ -0,0 +1,55 @@
+# Unconstrained pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint unconstrained
+set name [XGetPairName D $joint]
+if {$name != "unconstrained"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 10
+set type [XGetPairType D $joint]
+if {$type != "10"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 3 0 0 1
+plane p2 4 0 0 0 1 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 1 2 3 4 5 6 7 8 9 10 11 12
+set limits [XGetPairLimits D $joint]
+if {$limits != "1 2 3 4 5 6 7 8 9 10 11 12 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -trsf 10 10 10 1 0 0 0 -1 0
+set values [XGetPairValues D $joint -trsf]
+if {$values!= "10 10 10\n1 0 0\n0 -1 0"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B2 b/tests/gdt/kinematics/B2
new file mode 100644 (file)
index 0000000..f5e0c33
--- /dev/null
@@ -0,0 +1,61 @@
+# Screw pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint screw
+set name [XGetPairName D $joint]
+if {$name != "screw"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 11
+set type [XGetPairType D $joint]
+if {$type != "11"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 0 1 1 1 0
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 0 30
+set limits [XGetPairLimits D $joint]
+if {$limits != "0 30 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairParams D $joint 14
+set param [XGetPairParams D $joint]
+if {$param != "Pitch = 14"} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -rotation 20
+set values [XGetPairValues D $joint -rotation]
+if {$values != "20"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B3 b/tests/gdt/kinematics/B3
new file mode 100644 (file)
index 0000000..1ed5bd9
--- /dev/null
@@ -0,0 +1,61 @@
+# Rack and pinion pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint rack and pinion
+set name [XGetPairName D $joint]
+if {$name != "rack and pinion"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 12
+set type [XGetPairType D $joint]
+if {$type != "12"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 0 1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 10 20
+set limits [XGetPairLimits D $joint]
+if {$limits != "10 20 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairParams D $joint 3
+set param [XGetPairParams D $joint]
+if {$param != "Pinion Radius = 3"} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -translation 12
+set values [XGetPairValues D $joint -translation]
+if {$values != "12"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B4 b/tests/gdt/kinematics/B4
new file mode 100644 (file)
index 0000000..853e6a8
--- /dev/null
@@ -0,0 +1,61 @@
+# Gear pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint gear
+set name [XGetPairName D $joint]
+if {$name != "gear"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 13
+set type [XGetPairType D $joint]
+if {$type != "13"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 0 1
+plane p2 0 0 0 0 0 1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 15 30
+set limits [XGetPairLimits D $joint]
+if {$limits != "15 30 "} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairParams D $joint 1 2 3 4 5
+set param [XGetPairParams D $joint]
+if {$param != "First Link Radius = 1\nSecond Link Radius = 2\nBevel = 3\nHelical Angle = 4\nGear Ratio = 5"} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -rotation 24
+set values [XGetPairValues D $joint -rotation]
+if {$values != "24"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B5 b/tests/gdt/kinematics/B5
new file mode 100644 (file)
index 0000000..7a19808
--- /dev/null
@@ -0,0 +1,74 @@
+# Point on surface pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint point on surface
+set name [XGetPairName D $joint]
+if {$name != "point on surface"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 14
+set type [XGetPairType D $joint]
+if {$type != "14"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 1 0 1 1 0
+plane p2 0 0 0 0 0 1 0 1 -1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 10 20 30 40 50 60
+set limits [XGetPairLimits D $joint]
+if {$limits != "10 20 30 40 50 60 "} {
+  puts "Error: wrong parameter"
+}
+
+sphere sph 4 4 4 1
+XSetPairGeomParam D $joint 1 sph
+set dump_in [dump sph]
+XGetPairGeomParam D $joint 1 sph
+set dump_out [dump sph]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairOrientation D $joint 1
+set ori [XGetPairOrientation D $joint]
+if {$ori != 1} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -point_on_surface 1 2 -ypr 12 13 14
+set values [XGetPairValues D $joint -point_on_surface]
+if {$values != "1 2"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -ypr]
+if {$values != "12 13 14"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B6 b/tests/gdt/kinematics/B6
new file mode 100644 (file)
index 0000000..0b9026b
--- /dev/null
@@ -0,0 +1,86 @@
+# Sliding surface pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint sliding surface
+set name [XGetPairName D $joint]
+if {$name != "sliding surface"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 15
+set type [XGetPairType D $joint]
+if {$type != "15"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 1 0 1 1 0
+plane p2 0 0 0 0 0 1 0 1 -1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 10 20
+set limits [XGetPairLimits D $joint]
+if {$limits != "10 20 "} {
+  puts "Error: wrong parameter"
+}
+
+sphere sph1 4 4 4 1
+plane p2 0 0 0 1 0 0
+XSetPairGeomParam D $joint 1 sph1
+set dump_in [dump sph1]
+XGetPairGeomParam D $joint 1 sph1
+set dump_out [dump sph1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+XSetPairGeomParam D $joint 2 p2
+set dump_in [dump p2]
+XGetPairGeomParam D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairOrientation D $joint 0
+set ori [XGetPairOrientation D $joint]
+if {$ori != 0} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -point_on_surface 1 2 -second_point_on_surface 2 1 -rotation 30
+set values [XGetPairValues D $joint -first_point_on_surface]
+if {$values != "1 2"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -second_point_on_surface]
+if {$values != "2 1"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -rotation]
+if {$values != "30"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B7 b/tests/gdt/kinematics/B7
new file mode 100644 (file)
index 0000000..0022275
--- /dev/null
@@ -0,0 +1,82 @@
+# Rolling surface pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint rolling surface
+set name [XGetPairName D $joint]
+if {$name != "rolling surface"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 16
+set type [XGetPairType D $joint]
+if {$type != "16"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 1 0 1 1 0
+plane p2 0 0 0 0 0 1 0 1 -1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 10 20
+set limits [XGetPairLimits D $joint]
+if {$limits != "10 20 "} {
+  puts "Error: wrong parameter"
+}
+
+sphere sph1 4 4 4 1
+plane p2 0 0 0 1 0 0
+XSetPairGeomParam D $joint 1 sph1
+set dump_in [dump sph1]
+XGetPairGeomParam D $joint 1 sph1
+set dump_out [dump sph1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+XSetPairGeomParam D $joint 2 p2
+set dump_in [dump p2]
+XGetPairGeomParam D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairOrientation D $joint 1
+set ori [XGetPairOrientation D $joint]
+if {$ori != 1} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -point_on_surface 2 1 -rotation 30
+set values [XGetPairValues D $joint -point_on_surface]
+if {$values != "2 1"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -rotation]
+if {$values != "30"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B8 b/tests/gdt/kinematics/B8
new file mode 100644 (file)
index 0000000..9608153
--- /dev/null
@@ -0,0 +1,74 @@
+# point on planar curve pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint point on planar curve
+set name [XGetPairName D $joint]
+if {$name != "point on planar curve"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 17
+set type [XGetPairType D $joint]
+if {$type != "17"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 1 0 1 1 0
+plane p2 0 0 0 0 0 1 0 1 -1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairLimits D $joint 10 20 30 40 50 60
+set limits [XGetPairLimits D $joint]
+if {$limits != "10 20 30 40 50 60 "} {
+  puts "Error: wrong parameter"
+}
+
+circle cir 4 4 4 1
+XSetPairGeomParam D $joint 1 cir
+set dump_in [dump cir]
+XGetPairGeomParam D $joint 1 cir
+set dump_out [dump cir]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairOrientation D $joint 1
+set ori [XGetPairOrientation D $joint]
+if {$ori != 1} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -point_on_curve 1.5 -ypr 12 13 14
+set values [XGetPairValues D $joint -point_on_curve]
+if {$values != "1.5"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -ypr]
+if {$values != "12 13 14"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/B9 b/tests/gdt/kinematics/B9
new file mode 100644 (file)
index 0000000..10ac90c
--- /dev/null
@@ -0,0 +1,76 @@
+# sliding curve pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint sliding curve
+set name [XGetPairName D $joint]
+if {$name != "sliding curve"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 18
+set type [XGetPairType D $joint]
+if {$type != "18"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 1 0 1 1 0
+plane p2 0 0 0 0 0 1 0 1 -1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+circle cir1 4 4 4 1
+line l2 0 0 0 1 1 1
+XSetPairGeomParam D $joint 1 cir1
+set dump_in [dump cir1]
+XGetPairGeomParam D $joint 1 cir1
+set dump_out [dump cir1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+XSetPairGeomParam D $joint 2 l2
+set dump_in [dump l2]
+XGetPairGeomParam D $joint 2 l2
+set dump_out [dump l2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairOrientation D $joint 0
+set ori [XGetPairOrientation D $joint]
+if {$ori != 0} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -point_on_curve 1.5 -second_point_on_curve 7
+set values [XGetPairValues D $joint -first_point_on_curve]
+if {$values != "1.5"} {
+  puts "Error: wrong parameter"
+}
+set values [XGetPairValues D $joint -second_point_on_curve]
+if {$values != "7"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/C1 b/tests/gdt/kinematics/C1
new file mode 100644 (file)
index 0000000..c82ba19
--- /dev/null
@@ -0,0 +1,72 @@
+# Rolling curve pair
+
+# Prepare a document
+XNewDoc D
+box b 1 1 1
+box bb 2 0 0 1 1 1
+XAddShape D b
+XAddShape D bb
+set mech [XAddMechanism D]
+set link1 [XAddLink D $mech 0:1:1:1]
+set link2 [XAddLink D $mech 0:1:1:2]
+set joint [XAddJoint D $mech $link1 $link2]
+
+# Start testing
+XSetPairName D $joint rolling curve
+set name [XGetPairName D $joint]
+if {$name != "rolling curve"} {
+  puts "Error: wrong parameter"
+}
+XSetPairType D $joint 19
+set type [XGetPairType D $joint]
+if {$type != "19"} {
+  puts "Error: wrong parameter"
+}
+
+plane p1 0 0 0 0 1 0 1 1 0
+plane p2 0 0 0 0 0 1 0 1 -1
+XSetPairTransformation D $joint 1 p1
+XSetPairTransformation D $joint 2 p2
+set dump_in [dump p1]
+XGetPairTransformation D $joint 1 p1
+set dump_out [dump p1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+set dump_in [dump p2]
+XGetPairTransformation D $joint 2 p2
+set dump_out [dump p2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+circle cir1 4 4 4 1
+line l2 0 0 0 1 1 1
+XSetPairGeomParam D $joint 1 cir1
+set dump_in [dump cir1]
+XGetPairGeomParam D $joint 1 cir1
+set dump_out [dump cir1]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+XSetPairGeomParam D $joint 2 l2
+set dump_in [dump l2]
+XGetPairGeomParam D $joint 2 l2
+set dump_out [dump l2]
+if {$dump_in != $dump_out} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairOrientation D $joint 1
+set ori [XGetPairOrientation D $joint]
+if {$ori != 1} {
+  puts "Error: wrong parameter"
+}
+
+XSetPairValues D $joint -point_on_curve 1.5
+set values [XGetPairValues D $joint -first_point_on_curve]
+if {$values != "1.5"} {
+  puts "Error: wrong parameter"
+}
+
+Close D
diff --git a/tests/gdt/kinematics/end b/tests/gdt/kinematics/end
new file mode 100644 (file)
index 0000000..73b3acd
--- /dev/null
@@ -0,0 +1 @@
+puts "TEST COMPLETED"
index a3b7632c3b59fde26b7495e15f9d567442cb94b3..2f7b564e604730cfcc7a7dcf993aca4384580247 100644 (file)
@@ -253,6 +253,12 @@ TCollection_AsciiString DFBrowserPaneXDE_XDEDRAW::GetAttributeInfo (Handle(TDF_A
     else if ( att->ID() == XCAFDoc::GeomToleranceRefGUID() ){
       type = "GeomTolerance Link";
     }
+    else if (att->ID() == XCAFDoc::KinematicRefShapeGUID()){
+      type = "Kinematic Link to Shape";
+    }
+    else if (att->ID() == XCAFDoc::KinematicRefLink1GUID() || att->ID() == XCAFDoc::KinematicRefLink2GUID()){
+      type = "Kinematic Joint to Link";
+    }
     else
       return TCollection_AsciiString();