]> OCCT Git - occt.git/commitdiff
0033530: Data Exchange, Step Import - Implement GENERAL_PROPERTY support CR0-WEEK-7 CR0-WEEK-9 IR-2024-02-16
authorichesnok <ichesnok@opencascade.com>
Fri, 24 Nov 2023 13:36:10 +0000 (13:36 +0000)
committerichesnok <ichesnok@opencascade.com>
Thu, 15 Feb 2024 14:00:40 +0000 (14:00 +0000)
The necessary classes for GeneralProperty support were added.
The ReadMetadata method was created for reading and saving attributes.

49 files changed:
dox/user_guides/step/step.md
src/RWStepAP214/RWStepAP214_GeneralModule.cxx
src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx
src/RWStepBasic/FILES
src/RWStepBasic/RWStepBasic_RWGeneralPropertyAssociation.cxx [new file with mode: 0644]
src/RWStepBasic/RWStepBasic_RWGeneralPropertyAssociation.hxx [new file with mode: 0644]
src/RWStepBasic/RWStepBasic_RWGeneralPropertyRelationship.cxx [new file with mode: 0644]
src/RWStepBasic/RWStepBasic_RWGeneralPropertyRelationship.hxx [new file with mode: 0644]
src/RWStepRepr/FILES
src/RWStepRepr/RWStepRepr_RWBooleanRepresentationItem.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWBooleanRepresentationItem.hxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWRealRepresentationItem.cxx [new file with mode: 0644]
src/RWStepRepr/RWStepRepr_RWRealRepresentationItem.hxx [new file with mode: 0644]
src/STEPCAFControl/STEPCAFControl_ConfigurationNode.cxx
src/STEPCAFControl/STEPCAFControl_Provider.cxx
src/STEPCAFControl/STEPCAFControl_Reader.cxx
src/STEPCAFControl/STEPCAFControl_Reader.hxx
src/StepAP214/StepAP214_Protocol.cxx
src/StepBasic/FILES
src/StepBasic/StepBasic_GeneralPropertyAssociation.cxx [new file with mode: 0644]
src/StepBasic/StepBasic_GeneralPropertyAssociation.hxx [new file with mode: 0644]
src/StepBasic/StepBasic_GeneralPropertyRelationship.cxx [new file with mode: 0644]
src/StepBasic/StepBasic_GeneralPropertyRelationship.hxx [new file with mode: 0644]
src/StepBasic/StepBasic_MeasureValueMember.cxx
src/StepData/StepData_ConfParameters.cxx
src/StepData/StepData_ConfParameters.hxx
src/StepData/StepData_StepReaderData.cxx
src/StepRepr/FILES
src/StepRepr/StepRepr_BooleanRepresentationItem.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_BooleanRepresentationItem.hxx [new file with mode: 0644]
src/StepRepr/StepRepr_RealRepresentationItem.cxx [new file with mode: 0644]
src/StepRepr/StepRepr_RealRepresentationItem.hxx [new file with mode: 0644]
src/XSDRAWSTEP/XSDRAWSTEP.cxx
tests/de_wrapper/configuration/A3
tests/de_wrapper/configuration/A4
tests/metadata/begin [new file with mode: 0644]
tests/metadata/end [new file with mode: 0644]
tests/metadata/grids.list [new file with mode: 0644]
tests/metadata/parse.rules [new file with mode: 0644]
tests/metadata/step/A1 [new file with mode: 0644]
tests/metadata/step/A2 [new file with mode: 0644]
tests/metadata/step/A3 [new file with mode: 0644]
tests/metadata/step/A4 [new file with mode: 0644]
tests/metadata/step/A5 [new file with mode: 0644]
tests/metadata/step/A6 [new file with mode: 0644]
tests/metadata/step/A7 [new file with mode: 0644]
tests/metadata/step/A8 [new file with mode: 0644]
tests/metadata/step/A9 [new file with mode: 0644]
tests/metadata/step/begin [new file with mode: 0644]

index 3c6b31a56b485209da03edd6edf42ac966a608af..b079d0b2202c4a8d4a04b18a235b9a9222dc4794 100644 (file)
@@ -1653,6 +1653,13 @@ For each Saved View OCCT STEP Reader will retrieve the following attributes:
 - clipping planes (single plane of combination of planes);
 - front and back plane clipping.
 
+### User defined attributes
+Attributes are implemented in accordance with <a href="https://www.mbx-if.org/documents/rec_prac_user_def_attributes_v18.pdf">Recommended practices for User Defined Attributes</a> section 4, 5, 6.1-6.3 and 7.
+Attributes can be read for shapes at levels:
+- Part/Product Level;
+- Component Instances in an Assembly;
+- Geometry Level.
+
 @subsection occt_step_7_3 Writing to STEP
 
 The translation from XDE to STEP can be initialized as follows: 
@@ -1730,5 +1737,8 @@ Interface_Static::SetIVal("write.step.schema", 5));
 ### Saved views
 Saved Views are not exported by OCCT.
 
+### User defined attributes
+Attributes can be imported from STEP.
+
 
 
index 052f2c164b06c46c71b79c8af0577cfd09aca68b..e1803e09d232cdf13eaaea6fa2a11c07fb38aff8 100644 (file)
@@ -98,6 +98,8 @@
 #include <RWStepBasic_RWExternalIdentificationAssignment.hxx>
 #include <RWStepBasic_RWExternallyDefinedItem.hxx>
 #include <RWStepBasic_RWGeneralProperty.hxx>
+#include <RWStepBasic_RWGeneralPropertyAssociation.hxx>
+#include <RWStepBasic_RWGeneralPropertyRelationship.hxx>
 #include <RWStepBasic_RWGroupRelationship.hxx>
 #include <RWStepBasic_RWIdentificationAssignment.hxx>
 #include <RWStepBasic_RWIdentificationRole.hxx>
 #include <StepBasic_ExternalIdentificationAssignment.hxx>
 #include <StepBasic_ExternalSource.hxx>
 #include <StepBasic_GeneralProperty.hxx>
+#include <StepBasic_GeneralPropertyAssociation.hxx>
+#include <StepBasic_GeneralPropertyRelationship.hxx>
 #include <StepBasic_Group.hxx>
 #include <StepBasic_GroupRelationship.hxx>
 #include <StepBasic_IdentificationAssignment.hxx>
@@ -1188,7 +1192,9 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule)
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
 #include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_BooleanRepresentationItem.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
+#include <StepRepr_RealRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
 #include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
@@ -5876,6 +5882,20 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
     aTool.Share(anEnt, iter);
   }
   break;
+  case 820:
+  {
+    DeclareAndCast(StepBasic_GeneralPropertyAssociation, anEnt, ent);
+    RWStepBasic_RWGeneralPropertyAssociation aTool;
+    aTool.Share(anEnt, iter);
+  }
+  break;
+  case 821:
+  {
+    DeclareAndCast(StepBasic_GeneralPropertyRelationship, anEnt, ent);
+    RWStepBasic_RWGeneralPropertyRelationship aTool;
+    aTool.Share(anEnt, iter);
+  }
+  break;
   default : break;
   }
 }
@@ -8185,6 +8205,18 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
    case 819:
      ent = new StepVisual_TriangulatedSurfaceSet;
      break;
+   case 820:
+     ent = new StepBasic_GeneralPropertyAssociation;
+     break;
+   case 821:
+     ent = new StepBasic_GeneralPropertyRelationship;
+     break;
+   case 822:
+     ent = new StepRepr_BooleanRepresentationItem;
+     break;
+   case 823:
+     ent = new StepRepr_RealRepresentationItem;
+     break;
 
   default: 
     return Standard_False;
index 884be2300d675ef2d3856d029929762ed0a4e9b7..ffa5a7c97d45013827b4aa0f219b9e3486c7e010 100644 (file)
@@ -188,6 +188,8 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
 #include <StepShape_GeometricallyBoundedWireframeShapeRepresentation.hxx>
 #include <StepRepr_GlobalUncertaintyAssignedContext.hxx>
 #include <StepRepr_GlobalUnitAssignedContext.hxx>
+#include <StepBasic_GeneralPropertyAssociation.hxx>
+#include <StepBasic_GeneralPropertyRelationship.hxx>
 #include <StepBasic_Group.hxx>
 #include <StepBasic_GroupRelationship.hxx>
 #include <StepShape_HalfSpaceSolid.hxx>
@@ -622,6 +624,8 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
 #include <RWStepShape_RWGeometricallyBoundedWireframeShapeRepresentation.hxx>
 #include <RWStepRepr_RWGlobalUncertaintyAssignedContext.hxx>
 #include <RWStepRepr_RWGlobalUnitAssignedContext.hxx>
+#include <RWStepBasic_RWGeneralPropertyAssociation.hxx>
+#include <RWStepBasic_RWGeneralPropertyRelationship.hxx>
 #include <RWStepBasic_RWGroup.hxx>
 #include <RWStepBasic_RWGroupRelationship.hxx>
 #include <RWStepShape_RWHalfSpaceSolid.hxx>
@@ -1355,7 +1359,9 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
 #include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
 #include <RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
 #include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
+#include <RWStepRepr_RWBooleanRepresentationItem.hxx>
 #include <RWStepRepr_RWIntegerRepresentationItem.hxx>
+#include <RWStepRepr_RWRealRepresentationItem.hxx>
 #include <RWStepRepr_RWValueRepresentationItem.hxx>
 #include <RWStepRepr_RWValueRepresentationItem.hxx>
 #include <RWStepAP242_RWDraughtingModelItemAssociation.hxx>
@@ -1406,7 +1412,9 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
 #include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_BooleanRepresentationItem.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
+#include <StepRepr_RealRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
 #include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
@@ -2352,6 +2360,10 @@ static TCollection_AsciiString Reco_ComplexTriangulatedSurfaceSet("COMPLEX_TRIAN
 static TCollection_AsciiString Reco_CubicBezierTessellatedEdge("CUBIC_BEZIER_TESSELLATED_EDGE");
 static TCollection_AsciiString Reco_CubicBezierTriangulatedFace("CUBIC_BEZIER_TRIANGULATED_FACE");
 static TCollection_AsciiString Reco_TriangulatedSurfaceSet("TRIANGULATED_SURFACE_SET");
+static TCollection_AsciiString Reco_GeneralPropertyAssociation("GENERAL_PROPERTY_ASSOCIATION");
+static TCollection_AsciiString Reco_GeneralPropertyRelationship("GENERAL_PROPERTY_RELATIONSHIP");
+static TCollection_AsciiString Reco_BooleanRepresentationItem("BOOLEAN_REPRESENTATION_ITEM");
+static TCollection_AsciiString Reco_RealRepresentationItem("REAL_REPRESENTATION_ITEM");
 
 // -- Definition of the libraries --
 
@@ -3109,6 +3121,10 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
   typenums.Bind(Reco_CubicBezierTessellatedEdge, 817);
   typenums.Bind(Reco_CubicBezierTriangulatedFace, 818);
   typenums.Bind(Reco_TriangulatedSurfaceSet, 819);
+  typenums.Bind(Reco_GeneralPropertyAssociation, 820);
+  typenums.Bind(Reco_GeneralPropertyRelationship, 821);
+  typenums.Bind(Reco_BooleanRepresentationItem, 822);
+  typenums.Bind(Reco_RealRepresentationItem, 823);
 
   
 //    SHORT NAMES
@@ -5097,6 +5113,10 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
   case 817: return Reco_CubicBezierTessellatedEdge;
   case 818: return Reco_CubicBezierTriangulatedFace;
   case 819: return Reco_TriangulatedSurfaceSet;
+  case 820: return Reco_GeneralPropertyAssociation;
+  case 821: return Reco_GeneralPropertyRelationship;
+  case 822: return Reco_BooleanRepresentationItem;
+  case 823: return Reco_RealRepresentationItem;
   default : return PasReco;
   }
 }
@@ -10706,6 +10726,34 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
     aTool.ReadStep(data, num, ach, anEnt);
   }
   break;
+  case 820:
+  {
+    DeclareAndCast(StepBasic_GeneralPropertyAssociation, anEnt, ent);
+    RWStepBasic_RWGeneralPropertyAssociation aTool;
+    aTool.ReadStep(data, num, ach, anEnt);
+  }
+  break;
+  case 821:
+  {
+    DeclareAndCast(StepBasic_GeneralPropertyRelationship, anEnt, ent);
+    RWStepBasic_RWGeneralPropertyRelationship aTool;
+    aTool.ReadStep(data, num, ach, anEnt);
+  }
+  break;
+  case 822:
+  {
+    DeclareAndCast(StepRepr_BooleanRepresentationItem, anent, ent);
+    RWStepRepr_RWBooleanRepresentationItem aTool;
+    aTool.ReadStep(data, num, ach, anent);
+  }
+  break;
+  case 823:
+  {
+    DeclareAndCast(StepRepr_RealRepresentationItem, anent, ent);
+    RWStepRepr_RWRealRepresentationItem aTool;
+    aTool.ReadStep(data, num, ach, anent);
+  }
+  break;
   default: 
     ach->AddFail("Type Mismatch when reading - Entity");
   }
@@ -16257,6 +16305,34 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
     aTool.WriteStep(SW, anEnt);
   }
   break;
+  case 820:
+  {
+    DeclareAndCast(StepBasic_GeneralPropertyAssociation, anEnt, ent);
+    RWStepBasic_RWGeneralPropertyAssociation aTool;
+    aTool.WriteStep(SW, anEnt);
+  }
+  break;
+  case 821:
+  {
+    DeclareAndCast(StepBasic_GeneralPropertyRelationship, anEnt, ent);
+    RWStepBasic_RWGeneralPropertyRelationship aTool;
+    aTool.WriteStep(SW, anEnt);
+  }
+  break;
+  case 822:
+  {
+    DeclareAndCast(StepRepr_BooleanRepresentationItem, anent, ent);
+    RWStepRepr_RWBooleanRepresentationItem aTool;
+    aTool.WriteStep(SW, anent);
+  }
+  break;
+  case 823:
+  {
+    DeclareAndCast(StepRepr_RealRepresentationItem, anent, ent);
+    RWStepRepr_RWRealRepresentationItem aTool;
+    aTool.WriteStep(SW, anent);
+  }
+  break;
   default:
     return;
   }
index f71dd7636be7edfef9e9d1445ef057e8f87fb981..d7f99e138ee09f0b123e5984296cd7f615324c47 100644 (file)
@@ -108,6 +108,10 @@ RWStepBasic_RWExternalSource.cxx
 RWStepBasic_RWExternalSource.hxx
 RWStepBasic_RWGeneralProperty.cxx
 RWStepBasic_RWGeneralProperty.hxx
+RWStepBasic_RWGeneralPropertyAssociation.cxx
+RWStepBasic_RWGeneralPropertyAssociation.hxx
+RWStepBasic_RWGeneralPropertyRelationship.cxx
+RWStepBasic_RWGeneralPropertyRelationship.hxx
 RWStepBasic_RWGroup.cxx
 RWStepBasic_RWGroup.hxx
 RWStepBasic_RWGroupAssignment.cxx
diff --git a/src/RWStepBasic/RWStepBasic_RWGeneralPropertyAssociation.cxx b/src/RWStepBasic/RWStepBasic_RWGeneralPropertyAssociation.cxx
new file mode 100644 (file)
index 0000000..1085273
--- /dev/null
@@ -0,0 +1,87 @@
+// Copyright (c) 2024 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Interface_EntityIterator.hxx>
+#include <RWStepBasic_RWGeneralPropertyAssociation.hxx>
+#include <StepBasic_GeneralProperty.hxx>
+#include <StepBasic_GeneralPropertyAssociation.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_PropertyDefinition.hxx>
+
+//=======================================================================
+//function : RWStepBasic_RWGeneralPropertyAssociation
+//purpose  : 
+//=======================================================================
+RWStepBasic_RWGeneralPropertyAssociation::RWStepBasic_RWGeneralPropertyAssociation()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+void RWStepBasic_RWGeneralPropertyAssociation::ReadStep(const Handle(StepData_StepReaderData)& theData,
+                                                        const Standard_Integer theNum,
+                                                        Handle(Interface_Check)& theAch,
+                                                        const Handle(StepBasic_GeneralPropertyAssociation)& theEnt) const
+{
+  // Check number of parameters
+  if (!theData->CheckNbParams(theNum, 4, theAch, "general_property_association")) return;
+
+  Handle(TCollection_HAsciiString) aName;
+  theData->ReadString(theNum, 1, "name", theAch, aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  theData->ReadString(theNum, 2, "description", theAch, aDescription);
+
+  Handle(StepBasic_GeneralProperty) aGeneralProperty;
+  theData->ReadEntity(theNum, 3, "base_definition", theAch, STANDARD_TYPE(StepBasic_GeneralProperty), aGeneralProperty);
+
+  Handle(StepRepr_PropertyDefinition) aPropertyDefinition;
+  theData->ReadEntity(theNum, 4, "derived_definition", theAch, STANDARD_TYPE(StepRepr_PropertyDefinition), aPropertyDefinition);
+
+  // Initialize entity
+  theEnt->Init(aName,
+               aDescription,
+               aGeneralProperty,
+               aPropertyDefinition);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+void RWStepBasic_RWGeneralPropertyAssociation::WriteStep (StepData_StepWriter& theSW,
+                                                          const Handle(StepBasic_GeneralPropertyAssociation) &theEnt) const
+{
+  theSW.Send(theEnt->Name());
+
+  theSW.Send(theEnt->Description());
+
+  theSW.Send(theEnt->GeneralProperty());
+
+  theSW.Send(theEnt->PropertyDefinition());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+void RWStepBasic_RWGeneralPropertyAssociation::Share(const Handle(StepBasic_GeneralPropertyAssociation)& theEnt,
+                                                     Interface_EntityIterator& theIter) const
+{
+  theIter.AddItem(theEnt->GeneralProperty());
+
+  theIter.AddItem(theEnt->PropertyDefinition());
+}
diff --git a/src/RWStepBasic/RWStepBasic_RWGeneralPropertyAssociation.hxx b/src/RWStepBasic/RWStepBasic_RWGeneralPropertyAssociation.hxx
new file mode 100644 (file)
index 0000000..4d80c04
--- /dev/null
@@ -0,0 +1,60 @@
+// Copyright (c) 2024 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 _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile
+#define _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepBasic_GeneralProperty;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+class StepBasic_GeneralPropertyAssociation;
+
+//! Read & Write tool for GeneralPropertyAssociation
+class RWStepBasic_RWGeneralPropertyAssociation
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT RWStepBasic_RWGeneralPropertyAssociation();
+  
+  //! Reads GeneralPropertyAssociation
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
+                                 const Standard_Integer theNum,
+                                 Handle(Interface_Check)& theAch,
+                                 const Handle(StepBasic_GeneralPropertyAssociation)& theEnt) const;
+  
+  //! Writes GeneralPropertyAssociation
+  Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
+                                  const Handle(StepBasic_GeneralPropertyAssociation)& theEnt) const;
+  
+  //! Fills data for graph (shared items)
+  Standard_EXPORT void Share (const Handle(StepBasic_GeneralPropertyAssociation)& theEnt,
+                              Interface_EntityIterator& theIter) const;
+
+protected:
+
+private:
+
+};
+
+#endif // _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile
diff --git a/src/RWStepBasic/RWStepBasic_RWGeneralPropertyRelationship.cxx b/src/RWStepBasic/RWStepBasic_RWGeneralPropertyRelationship.cxx
new file mode 100644 (file)
index 0000000..2e491c1
--- /dev/null
@@ -0,0 +1,103 @@
+// Copyright (c) 2024 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Interface_EntityIterator.hxx>
+#include <RWStepBasic_RWGeneralPropertyRelationship.hxx>
+#include <StepBasic_GeneralProperty.hxx>
+#include <StepBasic_GeneralPropertyRelationship.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_PropertyDefinition.hxx>
+
+//=======================================================================
+//function : RWStepBasic_RWGeneralPropertyRelationship
+//purpose  : 
+//=======================================================================
+RWStepBasic_RWGeneralPropertyRelationship::RWStepBasic_RWGeneralPropertyRelationship()
+{
+}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+void RWStepBasic_RWGeneralPropertyRelationship::ReadStep(const Handle(StepData_StepReaderData)& theData,
+                                                         const Standard_Integer theNum,
+                                                         Handle(Interface_Check)& theAch,
+                                                         const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const
+{
+  // Check number of parameters
+  if (!theData->CheckNbParams(theNum, 4, theAch, "general_property_association")) return;
+
+  Handle(TCollection_HAsciiString) aName;
+  theData->ReadString(theNum, 1, "name", theAch, aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  Standard_Boolean hasDescription = Standard_True;
+  if (theData->IsParamDefined(theNum, 2))
+  {
+    theData->ReadString(theNum, 2, "description", theAch, aDescription);
+  }
+  else
+  {
+    hasDescription = Standard_False;
+  }
+
+  Handle(StepBasic_GeneralProperty) aRelatingGeneralProperty;
+  theData->ReadEntity(theNum, 3, "relating_property", theAch, STANDARD_TYPE(StepBasic_GeneralProperty), aRelatingGeneralProperty);
+
+  Handle(StepBasic_GeneralProperty) aRelatedGeneralProperty;
+  theData->ReadEntity(theNum, 4, "related_property", theAch, STANDARD_TYPE(StepBasic_GeneralProperty), aRelatedGeneralProperty);
+
+  // Initialize entity
+  theEnt->Init(aName,
+               hasDescription,
+               aDescription,
+               aRelatingGeneralProperty,
+               aRelatedGeneralProperty);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+void RWStepBasic_RWGeneralPropertyRelationship::WriteStep(StepData_StepWriter& theSW,
+                                                          const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const
+{
+  theSW.Send(theEnt->Name());
+
+  if (theEnt->HasDescription())
+  {
+    theSW.Send(theEnt->Description());
+  }
+  else
+  {
+    theSW.SendUndef();
+  }
+
+  theSW.Send(theEnt->RelatingGeneralProperty());
+
+  theSW.Send(theEnt->RelatedGeneralProperty());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+void RWStepBasic_RWGeneralPropertyRelationship::Share(const Handle(StepBasic_GeneralPropertyRelationship)& theEnt,
+                                                      Interface_EntityIterator& theIter) const
+{
+  theIter.AddItem(theEnt->RelatingGeneralProperty());
+
+  theIter.AddItem(theEnt->RelatedGeneralProperty());
+}
diff --git a/src/RWStepBasic/RWStepBasic_RWGeneralPropertyRelationship.hxx b/src/RWStepBasic/RWStepBasic_RWGeneralPropertyRelationship.hxx
new file mode 100644 (file)
index 0000000..aa712f4
--- /dev/null
@@ -0,0 +1,60 @@
+// Copyright (c) 2024 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 _RWStepBasic_RWGeneralPropertyRelationship_HeaderFile
+#define _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepBasic_GeneralProperty;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+class StepBasic_GeneralPropertyRelationship;
+
+//! Read & Write tool for GeneralPropertyRelationship
+class RWStepBasic_RWGeneralPropertyRelationship
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  //! Empty constructor
+  Standard_EXPORT RWStepBasic_RWGeneralPropertyRelationship();
+
+  //! Reads GeneralPropertyAssociation
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
+                                 const Standard_Integer theNum,
+                                 Handle(Interface_Check)& theAch,
+                                 const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const;
+
+  //! Writes GeneralPropertyAssociation
+  Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
+                                  const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const;
+
+  //! Fills data for graph (shared items)
+  Standard_EXPORT void Share (const Handle(StepBasic_GeneralPropertyRelationship)& theEnt,
+                              Interface_EntityIterator& theIter) const;
+
+protected:
+
+private:
+
+};
+
+#endif // _RWStepBasic_RWGeneralPropertyRelationship_HeaderFile
index 3dab65285424cb558178dbd1e6d090e0536f35a6..e9487b08169ce0bd96fd297200b42e1677aaf369 100644 (file)
@@ -8,6 +8,8 @@ RWStepRepr_RWAssemblyComponentUsageSubstitute.cxx
 RWStepRepr_RWAssemblyComponentUsageSubstitute.hxx
 RWStepRepr_RWBetweenShapeAspect.cxx
 RWStepRepr_RWBetweenShapeAspect.hxx
+RWStepRepr_RWBooleanRepresentationItem.cxx
+RWStepRepr_RWBooleanRepresentationItem.hxx
 RWStepRepr_RWCentreOfSymmetry.cxx
 RWStepRepr_RWCentreOfSymmetry.hxx
 RWStepRepr_RWCharacterizedRepresentation.cxx
@@ -88,6 +90,8 @@ RWStepRepr_RWPropertyDefinitionRepresentation.cxx
 RWStepRepr_RWPropertyDefinitionRepresentation.hxx
 RWStepRepr_RWQuantifiedAssemblyComponentUsage.cxx
 RWStepRepr_RWQuantifiedAssemblyComponentUsage.hxx
+RWStepRepr_RWRealRepresentationItem.cxx
+RWStepRepr_RWRealRepresentationItem.hxx
 RWStepRepr_RWRepresentation.cxx
 RWStepRepr_RWRepresentation.hxx
 RWStepRepr_RWRepresentationContext.cxx
diff --git a/src/RWStepRepr/RWStepRepr_RWBooleanRepresentationItem.cxx b/src/RWStepRepr/RWStepRepr_RWBooleanRepresentationItem.cxx
new file mode 100644 (file)
index 0000000..e4abd6f
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (c) 2024 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 <RWStepRepr_RWBooleanRepresentationItem.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_BooleanRepresentationItem.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+RWStepRepr_RWBooleanRepresentationItem::RWStepRepr_RWBooleanRepresentationItem()
+{
+}
+
+void RWStepRepr_RWBooleanRepresentationItem::ReadStep(const Handle(StepData_StepReaderData)& theData,
+                                                      const Standard_Integer theNum,
+                                                      Handle(Interface_Check)& theAch,
+                                                      const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const
+{
+  // Check number of parameters
+  if (!theData->CheckNbParams(theNum, 2, theAch, "boolean_representation_item") ) return;
+
+  // --- inherited field : name ---
+  Handle(TCollection_HAsciiString) aName;
+  theData->ReadString (theNum, 1, "name", theAch, aName);
+
+  // --- own field : value ---
+  Standard_Boolean aValue;
+  theData->ReadBoolean (theNum, 2, "value", theAch, aValue);
+
+  //--- Initialisation of the read entity ---
+  theEnt->Init(aName, aValue);
+}
+
+void RWStepRepr_RWBooleanRepresentationItem::WriteStep(StepData_StepWriter& theSW,
+                                                       const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const
+{
+  theSW.Send(theEnt->Name());
+  theSW.Send(theEnt->Value());
+}
diff --git a/src/RWStepRepr/RWStepRepr_RWBooleanRepresentationItem.hxx b/src/RWStepRepr/RWStepRepr_RWBooleanRepresentationItem.hxx
new file mode 100644 (file)
index 0000000..61c613f
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (c) 2024 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 _RWStepRepr_RWBooleanRepresentationItem_HeaderFile
+#define _RWStepRepr_RWBooleanRepresentationItem_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Boolean.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepRepr_BooleanRepresentationItem;
+class StepData_StepWriter;
+
+
+//! Read & Write Module for BooleanRepresentationItem
+class RWStepRepr_RWBooleanRepresentationItem 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepRepr_RWBooleanRepresentationItem();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
+                                 const Standard_Integer theNum,
+                                 Handle(Interface_Check)& theAch,
+                                 const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
+                                  const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const;
+};
+#endif // _RWStepRepr_RWBooleanRepresentationItem_HeaderFile
diff --git a/src/RWStepRepr/RWStepRepr_RWRealRepresentationItem.cxx b/src/RWStepRepr/RWStepRepr_RWRealRepresentationItem.cxx
new file mode 100644 (file)
index 0000000..eb5a48f
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (c) 2024 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 <RWStepRepr_RWRealRepresentationItem.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_RealRepresentationItem.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+RWStepRepr_RWRealRepresentationItem::RWStepRepr_RWRealRepresentationItem()
+{
+}
+
+void RWStepRepr_RWRealRepresentationItem::ReadStep(const Handle(StepData_StepReaderData)& theData,
+                                                   const Standard_Integer theNum,
+                                                   Handle(Interface_Check)& theAch,
+                                                   const Handle(StepRepr_RealRepresentationItem)& theEnt) const
+{
+  // Check number of parameters
+  if (!theData->CheckNbParams (theNum, 2, theAch, "real_representation_item")) return;
+
+  // --- inherited field : name ---
+  Handle(TCollection_HAsciiString) aName;
+  theData->ReadString (theNum, 1, "name", theAch, aName);
+
+  // --- own field : value ---
+  Standard_Real aValue;
+  theData->ReadReal (theNum, 2, "value", theAch, aValue);
+
+  //--- Initialisation of the read entity ---
+  theEnt->Init(aName, aValue);
+}
+
+void RWStepRepr_RWRealRepresentationItem::WriteStep(StepData_StepWriter& theSW,
+                                                    const Handle(StepRepr_RealRepresentationItem)& theEnt) const
+{
+  theSW.Send(theEnt->Name());
+  theSW.Send(theEnt->Value());
+}
diff --git a/src/RWStepRepr/RWStepRepr_RWRealRepresentationItem.hxx b/src/RWStepRepr/RWStepRepr_RWRealRepresentationItem.hxx
new file mode 100644 (file)
index 0000000..ad62774
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright (c) 2024 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 _RWStepRepr_RWRealRepresentationItem_HeaderFile
+#define _RWStepRepr_RWRealRepresentationItem_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Real.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepRepr_RealRepresentationItem;
+class StepData_StepWriter;
+
+
+//! Read & Write Module for RealRepresentationItem
+class RWStepRepr_RWRealRepresentationItem 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  Standard_EXPORT RWStepRepr_RWRealRepresentationItem();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
+                                 const Standard_Integer theNum,
+                                 Handle(Interface_Check)& theAch,
+                                 const Handle(StepRepr_RealRepresentationItem)& theEnt) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
+                                  const Handle(StepRepr_RealRepresentationItem)& theEnt) const;
+};
+#endif // _RWStepRepr_RWRealRepresentationItem_HeaderFile
index 20b2cffba551e4a2c1819aea97445b7313d0f7c2..46ca4fe79a2ec569cb1112a8249dd4c7fb9573e4 100644 (file)
@@ -116,6 +116,8 @@ bool STEPCAFControl_ConfigurationNode::Load(const Handle(DE_ConfigurationContext
     theResource->BooleanVal("read.layer", InternalParameters.ReadLayer, aScope);
   InternalParameters.ReadProps =
     theResource->BooleanVal("read.props", InternalParameters.ReadProps, aScope);
+  InternalParameters.ReadMetadata =
+    theResource->BooleanVal("read.metadata", InternalParameters.ReadMetadata, aScope);
 
   InternalParameters.WritePrecisionMode = (StepData_ConfParameters::WriteMode_PrecisionMode)
     theResource->IntegerVal("write.precision.mode", InternalParameters.WritePrecisionMode, aScope);
@@ -370,6 +372,12 @@ TCollection_AsciiString STEPCAFControl_ConfigurationNode::Save() const
   aResult += aScope + "read.props :\t " + InternalParameters.ReadProps + "\n";
   aResult += "!\n";
 
+  aResult += "!\n";
+  aResult += "!Setting up the read.metadata parameter which is used to indicate read Metadata or not\n";
+  aResult += "!Default value: 0(\"OFF\"). Available values: 0(\"OFF\"), 1(\"ON\")\n";
+  aResult += aScope + "read.metadata :\t " + InternalParameters.ReadMetadata + "\n";
+  aResult += "!\n";
+
   aResult += "!\n";
   aResult += "!Write Parameters:\n";
   aResult += "!\n";
index 2fc66826668c0e8a1678e6a5cecbf3a93daf5ca0..969c54d220e114a3284907c359308210f97fe43d 100644 (file)
@@ -73,6 +73,8 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath,
   aReader.SetNameMode(aNode->InternalParameters.ReadName);
   aReader.SetLayerMode(aNode->InternalParameters.ReadLayer);
   aReader.SetPropsMode(aNode->InternalParameters.ReadProps);
+  aReader.SetMetaMode(aNode->InternalParameters.ReadMetadata);
+
   IFSelect_ReturnStatus aReadStat = IFSelect_RetVoid;
   StepData_ConfParameters aParams;
   aReadStat = aReader.ReadFile(thePath.ToCString(), aParams);
index 9d4a3fc2208dda3e760bd2f06f9f81ee1946711c..05c52fbb36b107688f1924ab5c934cb604a87197 100644 (file)
 #include <StepBasic_ConversionBasedUnitAndLengthUnit.hxx>
 #include <StepBasic_ConversionBasedUnitAndPlaneAngleUnit.hxx>
 #include <StepBasic_ConversionBasedUnitAndMassUnit.hxx>
+#include <StepBasic_ConversionBasedUnitAndTimeUnit.hxx>
 #include <StepBasic_DerivedUnit.hxx>
 #include <StepBasic_DerivedUnitElement.hxx>
 #include <StepBasic_DocumentFile.hxx>
+#include <StepBasic_GeneralProperty.hxx>
+#include <StepBasic_GeneralPropertyAssociation.hxx>
 #include <StepBasic_MeasureValueMember.hxx>
 #include <StepBasic_NamedUnit.hxx>
 #include <StepBasic_Product.hxx>
@@ -40,6 +43,9 @@
 #include <StepBasic_ProductDefinitionFormation.hxx>
 #include <StepBasic_ProductDefinitionWithAssociatedDocuments.hxx>
 #include <StepBasic_SiUnitAndLengthUnit.hxx>
+#include <StepBasic_SiUnitAndMassUnit.hxx>
+#include <StepBasic_SiUnitAndThermodynamicTemperatureUnit.hxx>
+#include <StepBasic_SiUnitAndTimeUnit.hxx>
 #include <STEPCAFControl_Controller.hxx>
 #include <STEPCAFControl_DataMapOfPDExternFile.hxx>
 #include <STEPCAFControl_DataMapOfShapePD.hxx>
 #include <StepShape_DimensionalLocation.hxx>
 #include <StepShape_EdgeCurve.hxx>
 #include <StepShape_EdgeLoop.hxx>
+#include <StepShape_GeometricCurveSet.hxx>
 #include <StepShape_GeometricSet.hxx>
 #include <StepShape_HArray1OfFace.hxx>
 #include <StepShape_HArray1OfFaceBound.hxx>
 #include <XSControl_WorkSession.hxx>
 #include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepAP242_GeometricItemSpecificUsage.hxx>
+#include <StepAP242_IdAttribute.hxx>
 #include <StepGeom_CartesianPoint.hxx>
 #include <STEPCAFControl_GDTProperty.hxx>
 #include <StepVisual_TessellatedAnnotationOccurrence.hxx>
 #include <StepVisual_OverRidingStyledItem.hxx>
 #include <StepVisual_ContextDependentOverRidingStyledItem.hxx>
 #include <StepRepr_ShapeRepresentationRelationshipWithTransformation.hxx>
+#include <StepRepr_BooleanRepresentationItem.hxx>
+#include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ItemDefinedTransformation.hxx>
+#include <StepRepr_PropertyDefinitionRelationship.hxx>
+#include <StepRepr_RealRepresentationItem.hxx>
+#include <StepRepr_ValueRepresentationItem.hxx>
+
+#include <StepRepr_ShapeAspectRelationship.hxx>
+
 
 #include <TColgp_HArray1OfXYZ.hxx>
 #include <BRepBuilderAPI_MakeEdge.hxx>
@@ -275,6 +291,7 @@ STEPCAFControl_Reader::STEPCAFControl_Reader()
   myNameMode(Standard_True),
   myLayerMode(Standard_True),
   myPropsMode(Standard_True),
+  myMetaMode(Standard_False),
   mySHUOMode(Standard_False),
   myGDTMode(Standard_True),
   myMatMode(Standard_True),
@@ -299,6 +316,7 @@ STEPCAFControl_Reader::STEPCAFControl_Reader(const Handle(XSControl_WorkSession)
   myNameMode(Standard_True),
   myLayerMode(Standard_True),
   myPropsMode(Standard_True),
+  myMetaMode(Standard_False),
   mySHUOMode(Standard_False),
   myGDTMode(Standard_True),
   myMatMode(Standard_True),
@@ -770,6 +788,10 @@ Standard_Boolean STEPCAFControl_Reader::Transfer (STEPControl_Reader &reader,
   if (GetViewMode())
     ReadViews(reader.WS(), doc, aLocalFactors);
 
+  // read metadata
+  if (GetMetaMode())
+    ReadMetadata(reader.WS(), doc, aLocalFactors);
+
   // Expand resulting CAF structure for sub-shapes (optionally with their
   // names) if requested
   ExpandSubShapes(STool, ShapePDMap);
@@ -1957,7 +1979,7 @@ Standard_Boolean STEPCAFControl_Reader::ReadSHUOs(const Handle(XSControl_WorkSes
 //function : GetMassConversionFactor
 //purpose  : 
 //=======================================================================
-static Standard_Boolean GetMassConversionFactor(Handle(StepBasic_NamedUnit)& NU,
+static Standard_Boolean GetMassConversionFactor(const Handle(StepBasic_NamedUnit)& NU,
   Standard_Real& afact)
 {
   afact = 1.;
@@ -5243,6 +5265,26 @@ Standard_Boolean STEPCAFControl_Reader::GetPropsMode() const
   return myPropsMode;
 }
 
+//=======================================================================
+//function : SetMetaMode
+//purpose  : 
+//=======================================================================
+
+void STEPCAFControl_Reader::SetMetaMode(const Standard_Boolean theMetaMode)
+{
+  myMetaMode = theMetaMode;
+}
+
+//=======================================================================
+//function : GetMetaMode
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean STEPCAFControl_Reader::GetMetaMode() const
+{
+  return myMetaMode;
+}
+
 //=======================================================================
 //function : SetSHUOMode
 //purpose  : 
@@ -5323,3 +5365,427 @@ Standard_Boolean STEPCAFControl_Reader::GetViewMode() const
 {
   return myViewMode;
 }
+
+//=======================================================================
+//function : ReadMetadata
+//purpose  : 
+//=======================================================================
+Standard_Boolean STEPCAFControl_Reader::ReadMetadata(const Handle(XSControl_WorkSession)& theWS,
+                                                     const Handle(TDocStd_Document)& theDoc,
+                                                     const StepData_Factors& theLocalFactors) const
+{
+  const Handle(Interface_InterfaceModel)& aModel = theWS->Model();
+  const Handle(XSControl_TransferReader)& aTR = theWS->TransferReader();
+  const Handle(Transfer_TransientProcess)& aTP = aTR->TransientProcess();
+  Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool(theDoc->Main());
+  if (aSTool.IsNull())
+  {
+    return Standard_False;
+  }
+
+  Standard_Integer aNb = aModel->NbEntities();
+  STEPConstruct_Tool aTool(theWS);
+
+  for (Standard_Integer anEntityInd = 1; anEntityInd <= aNb; ++anEntityInd)
+  {
+    Handle(Standard_Transient) anEntity = aModel->Value(anEntityInd);
+    Handle(StepBasic_GeneralProperty) aGeneralProp = Handle(StepBasic_GeneralProperty)::DownCast(anEntity);
+    if (aGeneralProp.IsNull())
+      continue;
+
+    Handle(StepBasic_GeneralPropertyAssociation) aPropAssociation;
+    NCollection_List< Handle(StepRepr_PropertyDefinition)> aPropDefinitionList;
+    Interface_EntityIterator aSharingListOfGP = theWS->Graph().Sharings(aGeneralProp);
+    for (aSharingListOfGP.Start(); aSharingListOfGP.More(); aSharingListOfGP.Next())
+    {
+      aPropAssociation = Handle(StepBasic_GeneralPropertyAssociation)::DownCast(aSharingListOfGP.Value());
+      if (aPropAssociation.IsNull())
+        continue;
+
+      aPropDefinitionList.Append(aPropAssociation->PropertyDefinition());
+    }
+
+    if (aPropDefinitionList.IsEmpty())
+      continue;
+
+    NCollection_List< Handle(StepRepr_PropertyDefinition)>::Iterator aPropDefIter(aPropDefinitionList);
+    for ( ; aPropDefIter.More(); aPropDefIter.Next())
+    {
+      Handle(StepRepr_PropertyDefinition) aPropDefinition = aPropDefIter.Value();
+
+      // check group of PropertyDefinition
+      NCollection_List<Handle(StepRepr_PropertyDefinition)> aGroupedProperties;
+      Interface_EntityIterator aSharingsListOfPD = theWS->Graph().Sharings(aPropDefinition);
+      for (aSharingsListOfPD.Start(); aSharingsListOfPD.More(); aSharingsListOfPD.Next())
+      {
+        Handle(StepRepr_PropertyDefinitionRelationship) aRel =
+          Handle(StepRepr_PropertyDefinitionRelationship)::DownCast(aSharingsListOfPD.Value());
+        if (aRel.IsNull())
+        {
+          continue;
+        }
+
+        Handle(StepRepr_PropertyDefinition) aGroupedProp = aRel->RelatedPropertyDefinition();
+        if (!aGroupedProp.IsNull())
+        {
+          aGroupedProperties.Append(aGroupedProp);
+        }
+      }
+
+      NCollection_List<Handle(Transfer_Binder)> aBinders;
+      Interface_EntityIterator aSharedListOfPD = theWS->Graph().Shareds(aPropDefinition);
+      for (aSharedListOfPD.Start(); aSharedListOfPD.More(); aSharedListOfPD.Next())
+      {
+        Handle(Transfer_Binder) aBinder;
+        Handle(StepBasic_ProductDefinition) aProductDefinition =
+          Handle(StepBasic_ProductDefinition)::DownCast(aSharedListOfPD.Value());
+        if (!aProductDefinition.IsNull())
+        {
+          aBinder = aTP->Find(aProductDefinition);
+          if (!aBinder.IsNull())
+          {
+            aBinders.Append(aBinder);
+          }
+          continue;
+        }
+
+        Handle(StepRepr_ProductDefinitionShape) aProductDefinitionShape =
+          Handle(StepRepr_ProductDefinitionShape)::DownCast(aSharedListOfPD.Value());
+        if (!aProductDefinitionShape.IsNull())
+        {
+          Handle(StepBasic_ProductDefinition) aProductDef =
+            aProductDefinitionShape->Definition().ProductDefinition();
+          aBinder = aTP->Find(aProductDef);
+          if (!aBinder.IsNull())
+          {
+            aBinders.Append(aBinder);
+          }
+          continue;
+        }
+
+        Handle(StepRepr_NextAssemblyUsageOccurrence) aNextAssembUsOcc =
+          Handle(StepRepr_NextAssemblyUsageOccurrence)::DownCast(aSharedListOfPD.Value());
+        if (!aNextAssembUsOcc.IsNull())
+        {
+          aBinder = aTP->Find(aNextAssembUsOcc);
+          if (!aBinder.IsNull())
+          {
+            aBinders.Append(aBinder);
+          }
+          continue;
+        }
+
+        Handle(StepRepr_ShapeAspect) aShapeAspect =
+          Handle(StepRepr_ShapeAspect)::DownCast(aSharedListOfPD.Value());
+        if (!aShapeAspect.IsNull())
+        {
+          TDF_Label aLabel;
+          if (!aBinder.IsNull())
+          {
+            TopoDS_Shape aShape = TransferBRep::ShapeResult(aTP, aBinder);
+            if (aShape.IsNull())
+              continue;
+
+            if (myMap.IsBound(aShape))
+            {
+              aLabel = myMap.Find(aShape);
+            }
+          }
+          Interface_EntityIterator aSharedListOfSA = theWS->Graph().Sharings(aShapeAspect);
+          for (aSharedListOfSA.Start(); aSharedListOfSA.More(); aSharedListOfSA.Next())
+          {
+            Handle(StepAP242_DraughtingModelItemAssociation) aDMIA =
+              Handle(StepAP242_DraughtingModelItemAssociation)::DownCast(aSharedListOfSA.Value());
+            if (!aDMIA.IsNull())
+              break;
+
+            Handle(StepAP242_ItemIdentifiedRepresentationUsage) anItemIdentUsage =
+              Handle(StepAP242_ItemIdentifiedRepresentationUsage)::DownCast(aSharedListOfSA.Value());
+            if (!anItemIdentUsage.IsNull())
+            {
+              for (Standard_Integer anIndex = 1; anIndex <= anItemIdentUsage->NbIdentifiedItem(); ++anIndex)
+              {
+                Handle(StepRepr_RepresentationItem) aReprItem = anItemIdentUsage->IdentifiedItemValue(anIndex);
+                if (aReprItem.IsNull())
+                  continue;
+                aBinder = aTP->Find(aReprItem);
+                if (!aBinder.IsNull())
+                {
+                  aBinders.Append(aBinder);
+                }
+              }
+              continue;
+            }
+
+            Handle(StepRepr_PropertyDefinition) aPropDef =
+              Handle(StepRepr_PropertyDefinition)::DownCast(aSharedListOfSA.Value());
+            if (!aPropDef.IsNull() && aPropDef != aPropDefinition)
+            {
+              Interface_EntityIterator aSharingListOfPD = theWS->Graph().Sharings(aPropDef);
+              for (aSharingListOfPD.Start(); aSharingListOfPD.More(); aSharingListOfPD.Next())
+              {
+                Handle(StepShape_ShapeDefinitionRepresentation) aShDef =
+                  Handle(StepShape_ShapeDefinitionRepresentation)::DownCast(aSharingListOfPD.Value());
+                if (aShDef.IsNull())
+                  continue;
+
+                findReprItems(theWS, aShDef, aBinders);
+              }
+              continue;
+            }
+
+            Handle(StepShape_ShapeDefinitionRepresentation) aShapeDefRepr =
+              Handle(StepShape_ShapeDefinitionRepresentation)::DownCast(aSharedListOfSA.Value());
+            if (!aShapeDefRepr.IsNull())
+            {
+              findReprItems(theWS, aShapeDefRepr, aBinders);
+            }
+          }
+        }
+      }
+
+      if (aBinders.IsEmpty())
+        continue;
+
+      TDF_LabelSequence aLabelSeq;
+      NCollection_List<Handle(Transfer_Binder)>::Iterator aBindIt(aBinders);
+      for (; aBindIt.More(); aBindIt.Next())
+      {
+        TopoDS_Shape aShape = TransferBRep::ShapeResult(aTP, aBindIt.Value());
+        if (aShape.IsNull())
+          continue;
+
+        TDF_Label aShapeLabel;
+        if (myMap.IsBound(aShape))
+        {
+          aShapeLabel = myMap.Find(aShape);
+        }
+        if (!aShapeLabel.IsNull())
+        {
+          aLabelSeq.Append(aShapeLabel);
+        }
+      }
+
+      //create metadata
+      for (TDF_LabelSequence::Iterator aLabelIt(aLabelSeq); aLabelIt.More(); aLabelIt.Next())
+      {
+        TDF_Label aLabel = aLabelIt.Value();
+        Handle(TDataStd_NamedData) anAttr;
+        if (!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAttr))
+        {
+          anAttr = new TDataStd_NamedData;
+          aLabel.AddAttribute(anAttr);
+        }
+
+        fillAttributes(theWS, aPropDefinition, theLocalFactors, anAttr);
+        if (!aGroupedProperties.IsEmpty())
+        {
+          NCollection_List<Handle(StepRepr_PropertyDefinition)>::Iterator aPropIt(aGroupedProperties);
+          for ( ; aPropIt.More(); aPropIt.Next())
+          {
+            fillAttributes(theWS, aPropIt.Value(), theLocalFactors, anAttr);
+          }
+        }
+      }
+    }
+  }
+
+  return Standard_True;
+}
+
+//=======================================================================
+//function : findReprItems
+//purpose  : 
+//=======================================================================
+Standard_Boolean STEPCAFControl_Reader::findReprItems(const Handle(XSControl_WorkSession)& theWS,
+                                                      const Handle(StepShape_ShapeDefinitionRepresentation)& theShDefRepr,
+                                                      NCollection_List<Handle(Transfer_Binder)>& theBinders) const
+{
+  Handle(StepRepr_Representation) aRepr = theShDefRepr->UsedRepresentation();
+  if (aRepr.IsNull())
+  {
+    return Standard_False;
+  }
+
+  Handle(Transfer_Binder) aBinder;
+  const Handle(Transfer_TransientProcess)& aTP = theWS->TransferReader()->TransientProcess();
+  Handle(StepRepr_HArray1OfRepresentationItem) aReprItems = aRepr->Items();
+  if (!aReprItems->IsEmpty())
+  {
+    for (Standard_Integer anInd = aReprItems->Lower(); anInd <= aReprItems->Upper(); anInd++)
+    {
+      Handle(StepRepr_RepresentationItem) aReprItem = aReprItems->Value(anInd);
+      aBinder = aTP->Find(aReprItem);
+      if (!aBinder.IsNull())
+      {
+        theBinders.Append(aBinder);
+      }
+    }
+  }
+
+  return Standard_True;
+}
+
+//=======================================================================
+//function : fillAttributes
+//purpose  : 
+//=======================================================================
+Standard_Boolean STEPCAFControl_Reader::fillAttributes(const Handle(XSControl_WorkSession)& theWS,
+                                                       const Handle(StepRepr_PropertyDefinition)& thePropDef,
+                                                       const StepData_Factors& theLocalFactors,
+                                                       Handle(TDataStd_NamedData)& theAttr) const
+{
+  // skip if key is null
+  if (thePropDef->Name().IsNull())
+  {
+    return Standard_False;
+  }
+
+  Handle(StepRepr_PropertyDefinitionRepresentation) aPropDefRepr;
+  Interface_EntityIterator aSharingListOfPD = theWS->Graph().Sharings(thePropDef);
+  for (aSharingListOfPD.Start(); aSharingListOfPD.More(); aSharingListOfPD.Next())
+  {
+    aPropDefRepr = Handle(StepRepr_PropertyDefinitionRepresentation)::DownCast(aSharingListOfPD.Value());
+    if (aPropDefRepr.IsNull())
+      continue;
+
+    Handle(StepRepr_Representation) aUsedRepr = aPropDefRepr->UsedRepresentation();
+    if (aUsedRepr.IsNull())
+      continue;
+
+    Handle(StepRepr_HArray1OfRepresentationItem) aReprItems = aUsedRepr->Items();
+    if (!aReprItems.IsNull())
+    {
+      for (Standard_Integer anIndex = aReprItems->Lower(); anIndex <= aReprItems->Upper(); anIndex++)
+      {
+        Handle(StepRepr_RepresentationItem) anItem = aReprItems->Value(anIndex);
+        if (anItem.IsNull())
+          continue;
+
+        if (anItem->IsKind(STANDARD_TYPE(StepRepr_DescriptiveRepresentationItem)))
+        {
+          Handle(StepRepr_DescriptiveRepresentationItem) aDescrItem = Handle(StepRepr_DescriptiveRepresentationItem)::DownCast(anItem);
+          Handle(TCollection_HAsciiString) aDescription = aDescrItem->Description();
+          theAttr->SetString(thePropDef->Name()->ToCString(), aDescription->ToCString());
+        }
+        else if (anItem->IsKind(STANDARD_TYPE(StepRepr_MeasureRepresentationItem)))
+        {
+          Handle(StepRepr_MeasureRepresentationItem) aMeasureItem = Handle(StepRepr_MeasureRepresentationItem)::DownCast(anItem);
+          Standard_Real aValue = aMeasureItem->Measure()->ValueComponent();
+          TCollection_AsciiString aValType = aMeasureItem->Measure()->ValueComponentMember()->Name();
+          StepBasic_Unit anUnit = aMeasureItem->Measure()->UnitComponent();
+          if (!anUnit.IsNull())
+          {
+            Standard_Real aParam = 1.;
+            if (anUnit.Type() == STANDARD_TYPE(StepBasic_DerivedUnit))
+            {
+              Handle(StepBasic_DerivedUnit) aDUnit = anUnit.DerivedUnit();
+              for (Standard_Integer anInd = 1; anInd <= aDUnit->NbElements(); ++anInd)
+              {
+                Handle(StepBasic_DerivedUnitElement) aDUElem = aDUnit->ElementsValue(anInd);
+                Standard_Real anExp = aDUElem->Exponent();
+                Handle(StepBasic_NamedUnit) aNUnit = aDUElem->Unit();
+                if (!aNUnit.IsNull())
+                {
+                  if (aNUnit->IsKind(STANDARD_TYPE(StepBasic_ConversionBasedUnitAndLengthUnit)) ||
+                    aNUnit->IsKind(STANDARD_TYPE(StepBasic_SiUnitAndLengthUnit)))
+                  {
+                    STEPConstruct_UnitContext anUnitCtx;
+                    anUnitCtx.ComputeFactors(aNUnit, theLocalFactors);
+                    if (aValType == "VOLUME_MEASURE")
+                    {
+                      aParam = pow(theLocalFactors.LengthFactor(), anExp);
+                    }
+                    else
+                    {
+                      aParam = aParam / pow(theLocalFactors.LengthFactor(), anExp);
+                    }
+                  }
+                  else if (aNUnit->IsKind(STANDARD_TYPE(StepBasic_ConversionBasedUnitAndMassUnit))) {
+                    Standard_Real aFact = 1.;
+                    if (GetMassConversionFactor(aNUnit, aFact))
+                    {
+                      aParam = aParam * aFact;
+                    }
+                  }
+                  else
+                  {
+                    STEPConstruct_UnitContext anUnitCtx;
+                    anUnitCtx.ComputeFactors(aNUnit, theLocalFactors);
+                    if (anUnitCtx.AreaDone())
+                      aParam = anUnitCtx.AreaFactor();
+                    if (anUnitCtx.LengthDone())
+                    {
+                      Standard_Real aLengthFactor = anUnitCtx.LengthFactor();
+                      aParam *= pow(aLengthFactor, anExp);
+                    }
+                  }
+                }
+              }
+              aValue = aValue * aParam;
+            }
+            else
+            {
+              Handle(StepBasic_NamedUnit) aNUnit = anUnit.NamedUnit();
+              if (!aNUnit.IsNull())
+              {
+                if (aNUnit->IsKind(STANDARD_TYPE(StepBasic_ConversionBasedUnitAndMassUnit)))
+                {
+                  Standard_Real aFact = 1.;
+                  if (GetMassConversionFactor(aNUnit, aFact))
+                  {
+                    aValue *= aFact;
+                  }
+                }
+                else
+                {
+                  STEPConstruct_UnitContext anUnitCtx;
+                  anUnitCtx.ComputeFactors(aNUnit, theLocalFactors);
+                  if (anUnitCtx.AreaDone())
+                    aParam = anUnitCtx.AreaFactor();
+                  if (anUnitCtx.VolumeDone())
+                    aParam = anUnitCtx.VolumeFactor();
+                  if (anUnitCtx.LengthDone())
+                    aParam = anUnitCtx.LengthFactor();
+
+                  aValue *= aParam;
+                }
+              }
+            }
+          }
+          theAttr->SetReal(thePropDef->Name()->ToCString(), aValue);
+        }
+        else if (anItem->IsKind(STANDARD_TYPE(StepRepr_ValueRepresentationItem)))
+        {
+          Handle(StepRepr_ValueRepresentationItem) aValueItem = Handle(StepRepr_ValueRepresentationItem)::DownCast(anItem);
+          Handle(StepBasic_MeasureValueMember) aMeasureValueMem = aValueItem->ValueComponentMember();
+          Interface_ParamType aParamType = aMeasureValueMem->ParamType();
+          if (aParamType == Interface_ParamInteger)
+          {
+            theAttr->SetInteger(thePropDef->Name()->ToCString(), aMeasureValueMem->Integer());
+          }
+          else if (aParamType == Interface_ParamReal)
+          {
+            theAttr->SetReal(thePropDef->Name()->ToCString(), aMeasureValueMem->Real());
+          }
+        }
+        else if (anItem->IsKind(STANDARD_TYPE(StepRepr_IntegerRepresentationItem)))
+        {
+          Handle(StepRepr_IntegerRepresentationItem) anIntegerItem = Handle(StepRepr_IntegerRepresentationItem)::DownCast(anItem);
+          theAttr->SetInteger(thePropDef->Name()->ToCString(), anIntegerItem->Value());
+        }
+        else if (anItem->IsKind(STANDARD_TYPE(StepRepr_RealRepresentationItem)))
+        {
+          Handle(StepRepr_RealRepresentationItem) aRealItem = Handle(StepRepr_RealRepresentationItem)::DownCast(anItem);
+          theAttr->SetReal(thePropDef->Name()->ToCString(), aRealItem->Value());
+        }
+        else if (anItem->IsKind(STANDARD_TYPE(StepRepr_BooleanRepresentationItem)))
+        {
+          Handle(StepRepr_BooleanRepresentationItem) aBoolItem = Handle(StepRepr_BooleanRepresentationItem)::DownCast(anItem);
+          theAttr->SetInteger(thePropDef->Name()->ToCString(), aBoolItem->Value());
+        }
+      }
+    }
+  }
+  return Standard_True;
+}
index e4b0905cd903a241e950561bed721b6a2f3d81da..6ee4433f960f27e26cce143f31a2175d1f8191a3 100644 (file)
 #include <XCAFDimTolObjects_DatumModifWithValue.hxx>
 
 class XSControl_WorkSession;
+class TDataStd_NamedData;
 class TDocStd_Document;
 class STEPCAFControl_ExternFile;
 class TopoDS_Shape;
 class XCAFDoc_ShapeTool;
 class StepRepr_RepresentationItem;
 class Transfer_TransientProcess;
+class StepBasic_NamedUnit;
 class StepShape_ConnectedFaceSet;
+class StepShape_ShapeDefinitionRepresentation;
 class StepRepr_NextAssemblyUsageOccurrence;
+class StepRepr_PropertyDefinition;
 class STEPConstruct_Tool;
 class StepDimTol_Datum;
+class Transfer_Binder;
 
 //! Provides a tool to read STEP file and put it into
 //! DECAF document. Besides transfer of shapes (including
@@ -175,6 +180,11 @@ public:
   Standard_EXPORT void SetPropsMode (const Standard_Boolean propsmode);
   
   Standard_EXPORT Standard_Boolean GetPropsMode() const;
+
+  //! MetaMode for indicate read Metadata or not.
+  Standard_EXPORT void SetMetaMode(const Standard_Boolean theMetaMode);
+
+  Standard_EXPORT Standard_Boolean GetMetaMode() const;
   
   //! Set SHUO mode for indicate write SHUO or not.
   Standard_EXPORT void SetSHUOMode (const Standard_Boolean shuomode);
@@ -246,6 +256,12 @@ protected:
                                                  const Handle(TDocStd_Document)& doc,
                                                  const STEPCAFControl_DataMapOfPDExternFile& PDFileMap,
                                                  const StepData_Factors& theLocalFactors = StepData_Factors()) const;
+
+  //! Reads metadata assigned to shapes in the STEP model and
+  //! assigns them to corresponding labels in the DECAF document
+  Standard_EXPORT Standard_Boolean ReadMetadata(const Handle(XSControl_WorkSession)& theWS,
+                                                const Handle(TDocStd_Document)& theDoc,
+                                                const StepData_Factors& theLocalFactors = StepData_Factors()) const;
   
   //! Reads layers of parts defined in the STEP model and
   //! set reference between shape and layers in the DECAF document
@@ -333,6 +349,17 @@ private:
                     const Handle(TDocStd_Document)& theDoc,
                     StepData_Factors& theLocalFactors) const;
 
+  //! Find RepresentationItems
+  Standard_Boolean findReprItems(const Handle(XSControl_WorkSession) & theWS,
+                                 const Handle(StepShape_ShapeDefinitionRepresentation) & theShDefRepr,
+                                 NCollection_List<Handle(Transfer_Binder)>& theBinders) const;
+
+  //! Fill metadata
+  Standard_Boolean fillAttributes(const Handle(XSControl_WorkSession)& theWS,
+                                  const Handle(StepRepr_PropertyDefinition)& thePropDef,
+                                  const StepData_Factors& theLocalFactors,
+                                  Handle(TDataStd_NamedData)& theAttr) const;
+
 private:
 
   STEPControl_Reader myReader;
@@ -342,6 +369,7 @@ private:
   Standard_Boolean myNameMode;
   Standard_Boolean myLayerMode;
   Standard_Boolean myPropsMode;
+  Standard_Boolean myMetaMode;
   Standard_Boolean mySHUOMode;
   Standard_Boolean myGDTMode;
   Standard_Boolean myMatMode;
index 16643aa1784d219b13b18b10dc5fda70eafd417f..701086f5a449d50be36e894f8c99473b7bf72088 100644 (file)
@@ -158,6 +158,8 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
 #include <StepShape_GeometricallyBoundedWireframeShapeRepresentation.hxx>
 #include <StepRepr_GlobalUncertaintyAssignedContext.hxx>
 #include <StepRepr_GlobalUnitAssignedContext.hxx>
+#include <StepBasic_GeneralPropertyAssociation.hxx>
+#include <StepBasic_GeneralPropertyRelationship.hxx>
 #include <StepBasic_GroupRelationship.hxx>
 #include <StepShape_HalfSpaceSolid.hxx>
 #include <StepGeom_Hyperbola.hxx>
@@ -639,7 +641,9 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
 #include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
+#include <StepRepr_BooleanRepresentationItem.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
+#include <StepRepr_RealRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
 #include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
@@ -1560,6 +1564,10 @@ StepAP214_Protocol::StepAP214_Protocol ()
   types.Bind(STANDARD_TYPE(StepVisual_CubicBezierTessellatedEdge), 817);
   types.Bind(STANDARD_TYPE(StepVisual_CubicBezierTriangulatedFace), 818);
   types.Bind(STANDARD_TYPE(StepVisual_TriangulatedSurfaceSet), 819);
+  types.Bind(STANDARD_TYPE(StepBasic_GeneralPropertyAssociation), 820);
+  types.Bind(STANDARD_TYPE(StepBasic_GeneralPropertyRelationship), 821);
+  types.Bind(STANDARD_TYPE(StepRepr_BooleanRepresentationItem), 822);
+  types.Bind(STANDARD_TYPE(StepRepr_RealRepresentationItem), 823);
 }
 
 
index d40fe74e7a077ede388cbc6d9ec5130881c6a822..1857cbbed1f26e681a3e3105fa056bfd135451a6 100644 (file)
@@ -135,6 +135,10 @@ StepBasic_ExternalSource.cxx
 StepBasic_ExternalSource.hxx
 StepBasic_GeneralProperty.cxx
 StepBasic_GeneralProperty.hxx
+StepBasic_GeneralPropertyAssociation.cxx
+StepBasic_GeneralPropertyAssociation.hxx
+StepBasic_GeneralPropertyRelationship.cxx
+StepBasic_GeneralPropertyRelationship.hxx
 StepBasic_Group.cxx
 StepBasic_Group.hxx
 StepBasic_GroupAssignment.cxx
diff --git a/src/StepBasic/StepBasic_GeneralPropertyAssociation.cxx b/src/StepBasic/StepBasic_GeneralPropertyAssociation.cxx
new file mode 100644 (file)
index 0000000..282a7d8
--- /dev/null
@@ -0,0 +1,117 @@
+// Copyright (c) 2024 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 <StepBasic_GeneralPropertyAssociation.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepBasic_GeneralPropertyAssociation, Standard_Transient)
+
+//=======================================================================
+//function : StepBasic_GeneralPropertyAssociation
+//purpose  : 
+//=======================================================================
+StepBasic_GeneralPropertyAssociation::StepBasic_GeneralPropertyAssociation ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyAssociation::Init (const Handle(TCollection_HAsciiString)& aName,
+                                                 const Handle(TCollection_HAsciiString)& aDescription,
+                                                 const Handle(StepBasic_GeneralProperty)& aGeneralProperty,
+                                                 const Handle(StepRepr_PropertyDefinition)& aPropertyDefinition)
+{
+  theName = aName;
+
+  theDescription = aDescription;
+
+  theGeneralProperty = aGeneralProperty;
+
+  thePropertyDefinition = aPropertyDefinition;
+}
+
+//=======================================================================
+//function : Name
+//purpose  : 
+//=======================================================================
+Handle(TCollection_HAsciiString) StepBasic_GeneralPropertyAssociation::Name() const
+{
+  return theName;
+}
+
+//=======================================================================
+//function : SetName
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyAssociation::SetName(const Handle(TCollection_HAsciiString)& aName)
+{
+  theName = aName;
+}
+
+//=======================================================================
+//function : Description
+//purpose  : 
+//=======================================================================
+Handle(TCollection_HAsciiString) StepBasic_GeneralPropertyAssociation::Description() const
+{
+  return theDescription;
+}
+
+//=======================================================================
+//function : SetDescription
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyAssociation::SetDescription (const Handle(TCollection_HAsciiString)& aDescription)
+{
+  theDescription = aDescription;
+}
+
+//=======================================================================
+//function : GeneralProperty
+//purpose  : 
+//=======================================================================
+Handle(StepBasic_GeneralProperty) StepBasic_GeneralPropertyAssociation::GeneralProperty() const
+{
+  return theGeneralProperty;
+}
+
+//=======================================================================
+//function : SetGeneralProperty
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyAssociation::SetGeneralProperty(const Handle(StepBasic_GeneralProperty)& aGeneralProperty)
+{
+  theGeneralProperty = aGeneralProperty;
+}
+
+//=======================================================================
+//function : PropertyDefinition
+//purpose  : 
+//=======================================================================
+
+Handle(StepRepr_PropertyDefinition) StepBasic_GeneralPropertyAssociation::PropertyDefinition() const
+{
+  return thePropertyDefinition;
+}
+
+//=======================================================================
+//function : SetPropertyDefinition
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyAssociation::SetPropertyDefinition(const Handle(StepRepr_PropertyDefinition)& aPropertyDefinition)
+{
+  thePropertyDefinition = aPropertyDefinition;
+}
diff --git a/src/StepBasic/StepBasic_GeneralPropertyAssociation.hxx b/src/StepBasic/StepBasic_GeneralPropertyAssociation.hxx
new file mode 100644 (file)
index 0000000..38e5534
--- /dev/null
@@ -0,0 +1,84 @@
+// Copyright (c) 2024 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 _StepBasic_GeneralPropertyAssociation_HeaderFile
+#define _StepBasic_GeneralPropertyAssociation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <Standard_Transient.hxx>
+
+class TCollection_HAsciiString;
+class StepBasic_GeneralProperty;
+class StepRepr_PropertyDefinition;
+
+DEFINE_STANDARD_HANDLE(StepBasic_GeneralPropertyAssociation, Standard_Transient)
+
+//! Representation of STEP entity GeneralPropertyAssociation
+class StepBasic_GeneralPropertyAssociation : public Standard_Transient
+{
+
+public:
+
+  
+  //! Empty constructor
+  Standard_EXPORT StepBasic_GeneralPropertyAssociation();
+  
+  //! Initialize all fields (own and inherited)
+  Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& aName,
+                            const Handle(TCollection_HAsciiString)& aDescription,
+                            const Handle(StepBasic_GeneralProperty)& aGeneralProperty,
+                            const Handle(StepRepr_PropertyDefinition)& aPropertyDefinition);
+
+  //! Returns field Name
+  Standard_EXPORT Handle(TCollection_HAsciiString) Name() const;
+
+  //! Set field Name
+  Standard_EXPORT void SetName(const Handle(TCollection_HAsciiString)& Name);
+
+  //! Returns field Description
+  Standard_EXPORT Handle(TCollection_HAsciiString) Description() const;
+
+  //! Set field Description
+  Standard_EXPORT void SetDescription(const Handle(TCollection_HAsciiString)& Description);
+
+  //! Returns field GeneralProperty
+  Standard_EXPORT Handle(StepBasic_GeneralProperty) GeneralProperty() const;
+
+  //! Set field GeneralProperty
+  Standard_EXPORT void SetGeneralProperty(const Handle(StepBasic_GeneralProperty)& GeneralProperty);
+
+  //! Returns field PropertyDefinition
+  Standard_EXPORT Handle(StepRepr_PropertyDefinition) PropertyDefinition() const;
+
+  //! Set field PropertyDefinition
+  Standard_EXPORT void SetPropertyDefinition(const Handle(StepRepr_PropertyDefinition)& PropertyDefinition);
+
+  DEFINE_STANDARD_RTTIEXT(StepBasic_GeneralPropertyAssociation, Standard_Transient)
+
+protected:
+
+
+
+
+private:
+
+  Handle(TCollection_HAsciiString) theName;
+  Handle(TCollection_HAsciiString) theDescription;
+  Handle(StepBasic_GeneralProperty) theGeneralProperty;
+  Handle(StepRepr_PropertyDefinition) thePropertyDefinition;
+
+};
+
+#endif // _StepBasic_GeneralPropertyAssociation_HeaderFile
diff --git a/src/StepBasic/StepBasic_GeneralPropertyRelationship.cxx b/src/StepBasic/StepBasic_GeneralPropertyRelationship.cxx
new file mode 100644 (file)
index 0000000..c86b3f3
--- /dev/null
@@ -0,0 +1,137 @@
+// Copyright (c) 2024 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 <StepBasic_GeneralProperty.hxx>
+#include <StepBasic_GeneralPropertyRelationship.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepBasic_GeneralPropertyRelationship, Standard_Transient)
+
+//=======================================================================
+//function : StepBasic_GeneralPropertyRelationship
+//purpose  : 
+//=======================================================================
+StepBasic_GeneralPropertyRelationship::StepBasic_GeneralPropertyRelationship ()
+{
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyRelationship::Init(const Handle(TCollection_HAsciiString)& aName,
+                                                 const Standard_Boolean hasDescription,
+                                                 const Handle(TCollection_HAsciiString)& aDescription,
+                                                 const Handle(StepBasic_GeneralProperty)& aRelatingGeneralProperty,
+                                                 const Handle(StepBasic_GeneralProperty)& aRelatedGeneralProperty)
+{
+  theName = aName;
+
+  defDescription = hasDescription;
+  if (defDescription) {
+    theDescription = aDescription;
+  }
+  else theDescription.Nullify();
+
+  theRelatingGeneralProperty = aRelatingGeneralProperty;
+
+  theRelatedGeneralProperty = aRelatedGeneralProperty;
+}
+
+//=======================================================================
+//function : Name
+//purpose  : 
+//=======================================================================
+Handle(TCollection_HAsciiString) StepBasic_GeneralPropertyRelationship::Name() const
+{
+  return theName;
+}
+
+//=======================================================================
+//function : SetName
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyRelationship::SetName(const Handle(TCollection_HAsciiString)& aName)
+{
+  theName = aName;
+}
+
+//=======================================================================
+//function : HasDescription
+//purpose  : 
+//=======================================================================
+Standard_Boolean StepBasic_GeneralPropertyRelationship::HasDescription() const
+{
+  return defDescription;
+}
+
+//=======================================================================
+//function : Description
+//purpose  : 
+//=======================================================================
+Handle(TCollection_HAsciiString) StepBasic_GeneralPropertyRelationship::Description() const
+{
+  return theDescription;
+}
+
+//=======================================================================
+//function : SetDescription
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyRelationship::SetDescription (const Handle(TCollection_HAsciiString)& aDescription)
+{
+  defDescription = true;
+  if (aDescription.IsNull())
+  {
+    defDescription = false;
+  }
+  theDescription = aDescription;
+}
+
+//=======================================================================
+//function : RelatingGeneralProperty
+//purpose  : 
+//=======================================================================
+Handle(StepBasic_GeneralProperty) StepBasic_GeneralPropertyRelationship::RelatingGeneralProperty() const
+{
+  return theRelatingGeneralProperty;
+}
+
+//=======================================================================
+//function : SetRelatingGeneralProperty
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyRelationship::SetRelatingGeneralProperty(const Handle(StepBasic_GeneralProperty)& aRelatingGeneralProperty)
+{
+  theRelatingGeneralProperty = aRelatingGeneralProperty;
+}
+
+//=======================================================================
+//function : RelatedGeneralProperty
+//purpose  : 
+//=======================================================================
+
+Handle(StepBasic_GeneralProperty) StepBasic_GeneralPropertyRelationship::RelatedGeneralProperty() const
+{
+  return theRelatedGeneralProperty;
+}
+
+//=======================================================================
+//function : SetRelatedGeneralProperty
+//purpose  : 
+//=======================================================================
+void StepBasic_GeneralPropertyRelationship::SetRelatedGeneralProperty(const Handle(StepBasic_GeneralProperty)& aRelatedGeneralProperty)
+{
+  theRelatedGeneralProperty = aRelatedGeneralProperty;
+}
diff --git a/src/StepBasic/StepBasic_GeneralPropertyRelationship.hxx b/src/StepBasic/StepBasic_GeneralPropertyRelationship.hxx
new file mode 100644 (file)
index 0000000..9520be1
--- /dev/null
@@ -0,0 +1,88 @@
+// Copyright (c) 2024 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 _StepBasic_GeneralPropertyRelationship_HeaderFile
+#define _StepBasic_GeneralPropertyRelationship_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <Standard_Transient.hxx>
+
+class TCollection_HAsciiString;
+class StepBasic_GeneralProperty;
+
+DEFINE_STANDARD_HANDLE(StepBasic_GeneralPropertyRelationship, Standard_Transient)
+
+//! Representation of STEP entity GeneralPropertyRelationship
+class StepBasic_GeneralPropertyRelationship : public Standard_Transient
+{
+
+public:
+
+  
+  //! Empty constructor
+  Standard_EXPORT StepBasic_GeneralPropertyRelationship();
+  
+  //! Initialize all fields (own and inherited)
+  Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& aName,
+                            const Standard_Boolean hasDescription,
+                            const Handle(TCollection_HAsciiString)& aDescription,
+                            const Handle(StepBasic_GeneralProperty)& aRelatingGeneralProperty,
+                            const Handle(StepBasic_GeneralProperty)& aRelatedGeneralProperty);
+
+  //! Returns field Name
+  Standard_EXPORT Handle(TCollection_HAsciiString) Name() const;
+
+  //! Set field Name
+  Standard_EXPORT void SetName(const Handle(TCollection_HAsciiString)& Name);
+
+  //! Returns True if optional field Description is defined
+  Standard_EXPORT Standard_Boolean HasDescription() const;
+
+  //! Returns field Description
+  Standard_EXPORT Handle(TCollection_HAsciiString) Description() const;
+
+  //! Set field Description
+  Standard_EXPORT void SetDescription(const Handle(TCollection_HAsciiString)& Description);
+
+  //! Returns field RelatingGeneralProperty
+  Standard_EXPORT Handle(StepBasic_GeneralProperty) RelatingGeneralProperty() const;
+
+  //! Set field RelatingGeneralProperty
+  Standard_EXPORT void SetRelatingGeneralProperty(const Handle(StepBasic_GeneralProperty)& RelatingGeneralProperty);
+
+  //! Returns field RelatedGeneralProperty
+  Standard_EXPORT Handle(StepBasic_GeneralProperty) RelatedGeneralProperty() const;
+
+  //! Set field RelatedGeneralProperty
+  Standard_EXPORT void SetRelatedGeneralProperty(const Handle(StepBasic_GeneralProperty)& RelatedGeneralProperty);
+
+  DEFINE_STANDARD_RTTIEXT(StepBasic_GeneralPropertyRelationship, Standard_Transient)
+
+protected:
+
+
+
+
+private:
+
+  Standard_Boolean defDescription;
+  Handle(TCollection_HAsciiString) theName;
+  Handle(TCollection_HAsciiString) theDescription;
+  Handle(StepBasic_GeneralProperty) theRelatingGeneralProperty;
+  Handle(StepBasic_GeneralProperty) theRelatedGeneralProperty;
+
+};
+
+#endif // _StepBasic_GeneralPropertyRelationship_HeaderFile
index b4814dd362fde978a9474c473996ef78250178df..510b240a5de1b9ff509f3173a59057e55ac51dde 100644 (file)
@@ -62,6 +62,7 @@ Standard_CString StepBasic_MeasureValueMember::Name () const
     case 13 : return "MASS_MEASURE"; 
     case 14 : return "THERMODYNAMIC_TEMPERATURE_MEASURE"; 
     case 15 : return "COUNT_MEASURE";
+    case 16 : return "NUMERIC_MEASURE";
     default : break;
   }
   return "";
@@ -92,6 +93,7 @@ Standard_Boolean  StepBasic_MeasureValueMember::SetName (const Standard_CString
   else if (name[0] == 'M' && !strcmp (name,"MASS_MEASURE"))        thecase = 13;
   else if (name[1] == 'H' && !strcmp (name,"THERMODYNAMIC_TEMPERATURE_MEASURE")) thecase = 14;
   else if (name[2] == 'U' && !strcmp (name,"COUNT_MEASURE"))       thecase = 15;
+  else if (name[0] == 'N' && !strcmp (name,"NUMERIC_MEASURE"))     thecase = 16;
   else return Standard_False;
 
   return Standard_True;
index d3416d269669d2b3e0136ff52c0cb99ec2edd26d..57e02053504f2d26158db78012c880d5eea073cd 100644 (file)
@@ -58,6 +58,7 @@ void StepData_ConfParameters::InitFromStatic()
   ReadName = Interface_Static::IVal("read.name") == 1;
   ReadLayer = Interface_Static::IVal("read.layer") == 1;
   ReadProps = Interface_Static::IVal("read.props") == 1;
+  ReadMetadata = Interface_Static::IVal("read.metadata") == 1;
 
   WritePrecisionMode = (StepData_ConfParameters::WriteMode_PrecisionMode)Interface_Static::IVal("write.precision.mode");
   WritePrecisionVal = Interface_Static::RVal("write.precision.val");
index 1acee3d6fad36cad19a0a2d0794c8ee9755f91f9..2304e12fcc45f0ddc62733b571e88f3861ed571c 100644 (file)
@@ -166,6 +166,7 @@ public:
   bool ReadName = true; //<! NameMode is used to indicate read Name or not
   bool ReadLayer = true; //<! LayerMode is used to indicate read Layers or not
   bool ReadProps = true; //<! PropsMode is used to indicate read Validation properties or not
+  bool ReadMetadata = false; //! Parameter for metadata reading
   
   // Write
   WriteMode_PrecisionMode WritePrecisionMode = WriteMode_PrecisionMode_Average; //<! Specifies the mode of writing the resolution value into the STEP file
index 3221e05d5996118447d863dd89d62988884ea05a..648940d09bf7ae4429ce5b149931fb2104a0174f 100644 (file)
@@ -1000,7 +1000,7 @@ Standard_Boolean StepData_StepReaderData::ReadAny(const Standard_Integer num,
   case Interface_ParamInteger: {
     if (!val.IsNull()) {
       DeclareAndCast(StepData_SelectMember, sm, val);
-      sm->SetInteger(atoi(str));
+      sm->SetReal(Interface_FileReaderData::Fastof(str));
       return Standard_True;
     }
     Handle(StepData_SelectInt) sin = new StepData_SelectInt;
@@ -1358,16 +1358,27 @@ Standard_Boolean StepData_StepReaderData::ReadInteger(const Standard_Integer num
   Standard_Integer& val) const
 {
   Handle(String) errmess;  // Null si pas d erreur
+  Standard_Boolean warn = Standard_False;
   if (nump > 0 && nump <= NbParams(num)) {
     const Interface_FileParameter& FP = Param(num, nump);
-    if (FP.ParamType() == Interface_ParamInteger)  val = atoi(FP.CValue());
-    else errmess = new String("Parameter n0.%d (%s) not an Integer");
+    if (FP.ParamType() == Interface_ParamInteger)
+      val = atoi(FP.CValue());
+    else if (FP.ParamType() == Interface_ParamReal)
+    {
+      val = static_cast<Standard_Integer>(std::round(Interface_FileReaderData::Fastof(FP.CValue())));
+      if (acceptvoid) warn = Standard_True;
+      errmess = new String("Parameter n0.%d (%s) was rounded");
+    }
+    if (FP.ParamType() != Interface_ParamInteger &&
+        FP.ParamType() != Interface_ParamReal)
+      errmess = new String("Parameter n0.%d (%s) not an Integer");
   }
   else errmess = new String("Parameter n0.%d (%s) absent");
 
   if (errmess.IsNull()) return Standard_True;
   sprintf(txtmes, errmess->ToCString(), nump, mess);
-  ach->AddFail(txtmes, errmess->ToCString());
+  if (warn) ach->AddWarning(txtmes, errmess->ToCString());
+  else ach->AddFail(txtmes, errmess->ToCString());
   return Standard_False;
 }
 
index ab9522c9e3fc7480929d307d73a1ac7217377fb8..551a95ce765cc5d8f28a6d4a2e354303ee2fa238 100644 (file)
@@ -12,6 +12,8 @@ StepRepr_AssemblyComponentUsageSubstitute.cxx
 StepRepr_AssemblyComponentUsageSubstitute.hxx
 StepRepr_BetweenShapeAspect.cxx
 StepRepr_BetweenShapeAspect.hxx
+StepRepr_BooleanRepresentationItem.cxx
+StepRepr_BooleanRepresentationItem.hxx
 StepRepr_CentreOfSymmetry.cxx
 StepRepr_CentreOfSymmetry.hxx
 StepRepr_CharacterizedDefinition.cxx
@@ -110,6 +112,8 @@ StepRepr_PropertyDefinitionRepresentation.cxx
 StepRepr_PropertyDefinitionRepresentation.hxx
 StepRepr_QuantifiedAssemblyComponentUsage.cxx
 StepRepr_QuantifiedAssemblyComponentUsage.hxx
+StepRepr_RealRepresentationItem.cxx
+StepRepr_RealRepresentationItem.hxx
 StepRepr_Representation.cxx
 StepRepr_Representation.hxx
 StepRepr_RepresentationContext.cxx
diff --git a/src/StepRepr/StepRepr_BooleanRepresentationItem.cxx b/src/StepRepr/StepRepr_BooleanRepresentationItem.cxx
new file mode 100644 (file)
index 0000000..785f8b5
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (c) 2024 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 <StepRepr_BooleanRepresentationItem.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepRepr_BooleanRepresentationItem, StepRepr_RepresentationItem)
+
+StepRepr_BooleanRepresentationItem::StepRepr_BooleanRepresentationItem()
+{
+}
+
+void StepRepr_BooleanRepresentationItem::Init(const Handle(TCollection_HAsciiString)& theName,
+                                              const Standard_Boolean theValue)
+{
+  value = theValue;
+  StepRepr_RepresentationItem::Init(theName);
+}
diff --git a/src/StepRepr/StepRepr_BooleanRepresentationItem.hxx b/src/StepRepr/StepRepr_BooleanRepresentationItem.hxx
new file mode 100644 (file)
index 0000000..cb50755
--- /dev/null
@@ -0,0 +1,52 @@
+// Copyright (c) 2024 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 _StepRepr_BooleanRepresentationItem_HeaderFile
+#define _StepRepr_BooleanRepresentationItem_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <StepRepr_RepresentationItem.hxx>
+class TCollection_HAsciiString;
+
+class StepRepr_BooleanRepresentationItem;
+DEFINE_STANDARD_HANDLE(StepRepr_BooleanRepresentationItem, StepRepr_RepresentationItem)
+
+class StepRepr_BooleanRepresentationItem : public StepRepr_RepresentationItem
+{
+public:
+
+  //! Returns a BooleanRepresentationItem
+  Standard_EXPORT StepRepr_BooleanRepresentationItem();
+  
+  Standard_EXPORT void Init (const Handle(TCollection_HAsciiString)& theName, const Standard_Boolean theValue);
+  
+  inline void SetValue(const Standard_Boolean theValue)
+  {
+    value = theValue;
+  }
+  
+  inline Standard_Boolean Value() const 
+  {
+    return value;
+  }
+
+  DEFINE_STANDARD_RTTIEXT(StepRepr_BooleanRepresentationItem, StepRepr_RepresentationItem)
+
+private:
+
+  Standard_Boolean value;
+};
+
+#endif // _StepRepr_BooleanRepresentationItem_HeaderFile
diff --git a/src/StepRepr/StepRepr_RealRepresentationItem.cxx b/src/StepRepr/StepRepr_RealRepresentationItem.cxx
new file mode 100644 (file)
index 0000000..77287ff
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (c) 2024 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 <StepRepr_RealRepresentationItem.hxx>
+#include <TCollection_HAsciiString.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepRepr_RealRepresentationItem, StepRepr_RepresentationItem)
+
+StepRepr_RealRepresentationItem::StepRepr_RealRepresentationItem()
+{
+}
+
+void StepRepr_RealRepresentationItem::Init(const Handle(TCollection_HAsciiString)& theName,
+                                              const Standard_Real theValue)
+{
+  value = theValue;
+  StepRepr_RepresentationItem::Init(theName);
+}
diff --git a/src/StepRepr/StepRepr_RealRepresentationItem.hxx b/src/StepRepr/StepRepr_RealRepresentationItem.hxx
new file mode 100644 (file)
index 0000000..720d47d
--- /dev/null
@@ -0,0 +1,53 @@
+// Copyright (c) 2024 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 _StepRepr_RealRepresentationItem_HeaderFile
+#define _StepRepr_RealRepresentationItem_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <StepRepr_RepresentationItem.hxx>
+class TCollection_HAsciiString;
+
+class StepRepr_RealRepresentationItem;
+DEFINE_STANDARD_HANDLE(StepRepr_RealRepresentationItem, StepRepr_RepresentationItem)
+
+class StepRepr_RealRepresentationItem : public StepRepr_RepresentationItem
+{
+
+public:
+
+  //! Returns a RealRepresentationItem
+  Standard_EXPORT StepRepr_RealRepresentationItem();
+  
+  Standard_EXPORT void Init (const Handle(TCollection_HAsciiString)& theName, const Standard_Real theValue);
+  
+  inline void SetValue(const Standard_Real theValue)
+  {
+    value = theValue;
+  }
+  
+  inline Standard_Real Value() const 
+  {
+    return value;
+  }
+
+  DEFINE_STANDARD_RTTIEXT(StepRepr_RealRepresentationItem, StepRepr_RepresentationItem)
+
+private:
+
+  Standard_Real value;
+};
+
+#endif // _StepRepr_RealRepresentationItem_HeaderFile
index 79b03af1ca316d62543f84e8e48f4e6a6eff1853..5dcea737045ac9e5b47aba573a39b217a918e822 100644 (file)
@@ -693,12 +693,11 @@ static Standard_Integer ReadStep(Draw_Interpretor& theDI,
   }
 
   STEPCAFControl_Reader aReader(XSDRAW::Session(), isFileMode);
-
   if (!aModeStr.IsEmpty())
   {
     Standard_Boolean aMode = Standard_True;
 
-    for (Standard_Integer i = 1; aModeStr.Value(i); ++i)
+    for (Standard_Integer i = 1; i <= aModeStr.Length(); ++i)
     {
       switch (aModeStr.Value(i))
       {
@@ -720,6 +719,9 @@ static Standard_Integer ReadStep(Draw_Interpretor& theDI,
       case 'v':
         aReader.SetPropsMode(aMode);
         break;
+      case 'm':
+        aReader.SetMetaMode(aMode);
+        break;
       default:
         Message::SendFail() << "Syntax error at '" << aModeStr << "'\n";
         return 1;
index e3a19348350ed5fad01f790c4310c858a83ae98e..50835a1ab6b41f3d463dd84eb646e4d00f937d4f 100644 (file)
@@ -44,6 +44,7 @@ provider.STEP.OCC.read.color :   1
 provider.STEP.OCC.read.name :    1
 provider.STEP.OCC.read.layer :   1
 provider.STEP.OCC.read.props :   1
+provider.STEP.OCC.read.metadata :   0
 provider.STEP.OCC.write.precision.mode :         0
 provider.STEP.OCC.write.precision.val :  0.0001
 provider.STEP.OCC.write.assembly :       0
index cda1c9a4b2f7da4ecbae186f99fe04ddf156a7a3..81d5587611cfa65c7db7ecc911f7617a422cb04e 100644 (file)
@@ -44,6 +44,7 @@ provider.STEP.OCC.read.color :   1
 provider.STEP.OCC.read.name :    1
 provider.STEP.OCC.read.layer :   1
 provider.STEP.OCC.read.props :   1
+provider.STEP.OCC.read.metadata :   0
 provider.STEP.OCC.write.precision.mode :         0
 provider.STEP.OCC.write.precision.val :  0.0001
 provider.STEP.OCC.write.assembly :       0
diff --git a/tests/metadata/begin b/tests/metadata/begin
new file mode 100644 (file)
index 0000000..4acc59b
--- /dev/null
@@ -0,0 +1,5 @@
+pload DCAF
+pload XDE
+
+cpulimit 1000
+
diff --git a/tests/metadata/end b/tests/metadata/end
new file mode 100644 (file)
index 0000000..fc085fc
--- /dev/null
@@ -0,0 +1,98 @@
+# Set flag dump_file to 1 in order to regenerate script files with actual data
+# used as reference. In this mode all tests intentionally report failure.
+set dump_file 0
+########################################################################
+set mist 0;
+set todo_msg ""
+set todo_mask "puts \"TODO CR00000 ALL: "
+set end_line "\" \n"
+##################################################################
+
+# Read original file
+if { [string length $filename] > 1} {
+  set path_file [locate_data_file $filename]
+  if { [catch { ReadFile D $path_file -conf $conf} catch_result] } {
+    set err_msg "Error: file was not read - exception "
+    puts $err_msg
+    append todo_msg $todo_mask $err_msg $end_line
+    set mist 1
+  }
+} else {
+  set mist 1
+}
+
+# Get information about translation
+if { $mist < 1} {
+  puts ""
+  set prop [ XGetProperties D ] 
+
+  if { [llength $prop] < 0 } {
+      puts " Metadata was NOT provided"
+    }
+}
+if { $mist < 1} {
+  # Close the document
+  if { [catch { Close D } catch_result] } {
+    set err_msg "Error : cannot close a document D - exception"
+    puts $err_msg
+    append todo_msg $todo_mask $err_msg $end_line
+  }
+}
+
+if { $mist != 1 } {
+  puts "" 
+  set result ""
+  append result [format $prop]
+}
+
+set ref_Compare 0
+# Put reference data to the test script file if option "dump" is set
+if { $dump_file == 1 } {
+  set fd_stream  [open $dirname/$groupname/$gridname/$casename w]
+  fconfigure $fd_stream -encoding utf-8
+  puts $fd_stream "# !!!! This file is generated automatically, do not edit manually! See end script"
+  puts $fd_stream "set filename $filename"
+  if { $mist != 1 } {
+    puts $fd_stream "" 
+    puts $fd_stream "set ref_data \{"
+    puts $fd_stream $result
+    puts $fd_stream "\}"
+  }
+  close $fd_stream 
+} elseif { $mist != 1 } {
+  puts "========================== Comparison with reference data ========"
+  
+  # Comparison of reference data with obtained result
+  set ref_list [split $ref_data \n]
+  set cur_list [split $result \n]
+  set nb_ref [llength $ref_list]
+  for { set i 0 } { $i < $nb_ref } { incr i } {
+    set j [expr $i + 1]
+    set refstr [lindex $ref_list $j]
+    set curstr [lindex $cur_list $i]
+    set isOK 1;
+
+    if {[string equal $refstr $curstr] == 0} {
+      incr ref_Compare
+      puts "Reference data - $refstr\n"
+      puts "Current data - $curstr\n"
+      puts "----------------------------------------------\n"
+    }
+  }
+}
+
+if { $dump_file != 0 } {
+    puts "Error : Running in regeneration mode, comparison was not performed!"
+    if { $mist != 1 } {
+      puts "Generation of test file $groupname/$gridname/$casename successful"
+    } else {
+      puts "Generation of reference data failed"
+    }
+} else {
+    if { $ref_Compare >= 1} {
+      puts "Error : differences with reference data found : $ref_Compare"
+    } else {
+      puts "Comparison of current result with reference data - OK\n"
+    }
+}
+puts "TEST COMPLETED"
diff --git a/tests/metadata/grids.list b/tests/metadata/grids.list
new file mode 100644 (file)
index 0000000..c7e242a
--- /dev/null
@@ -0,0 +1 @@
+001 step
diff --git a/tests/metadata/parse.rules b/tests/metadata/parse.rules
new file mode 100644 (file)
index 0000000..813616d
--- /dev/null
@@ -0,0 +1,11 @@
+FAILED /\bFaulty\b/ error
+IGNORE /Software error/ message in tpstat
+IGNORE /Syntax error/ message in data c
+IGNORE /Transfer error/ message in tpstat
+IGNORE /Operator FixShape failed with exception/ message during reading
+IGNORE /Error on writing file/ message during writing file
+IGNORE /StepFile Error/ message during loading step file
+IGNORE /StepToTopoDS, GeometricSet/exception
+IGNORE /OSD_Exception_ACCESS_VIOLATION/ exception during reading step
+IGNORE /Exception Raised while reading Step File/ exception during reading step file
+IGNORE /Warning: ShapeFix_.* Exception/ internal exceptions caught by FixShape
\ No newline at end of file
diff --git a/tests/metadata/step/A1 b/tests/metadata/step/A1
new file mode 100644 (file)
index 0000000..5f59f47
--- /dev/null
@@ -0,0 +1,30 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug28345_30338.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+H_CIP : 55.545955351400004
+Property for [0:1:1:2]:
+H : 45
+E : 55
+B : 16
+I : 15
+A : 3
+D : 3
+C : 140
+F : 0.29999999999999999
+DESCRIPTION : 
+MODELED_BY : 
+Property for [0:1:1:3]:
+H : 45
+E : 55
+B : 16
+I : 15
+A : 3
+D : 3
+C : 140
+F : 0.29999999999999999
+DESCRIPTION : 
+MODELED_BY : 
+
+}
diff --git a/tests/metadata/step/A2 b/tests/metadata/step/A2
new file mode 100644 (file)
index 0000000..c790ff4
--- /dev/null
@@ -0,0 +1,27 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug28389_CONFIDENTIAL_SHEET_METAL_F3D.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+yCenterOfGravity : 0.1148447698
+Ixz : 9.3210000000000004e-07
+Izx : 9.3210000000000004e-07
+OriginY : 0
+Surface : 0.34595390710000001
+Volume : 0.0001375456
+Iyz : -1.2030000000000001e-07
+zCenterOfGravity : -0.056064514900000001
+Iyy : 3.6385e-06
+Ixy : 2.044e-07
+xCenterOfGravity : -0.12673526900000001
+Izz : 3.3558999999999999e-06
+Density : 1000
+Ixx : 1.7740000000000001e-06
+Izy : -1.2030000000000001e-07
+Mass : 0.13754561600000001
+Iyx : 2.044e-07
+OriginX : 0
+OriginZ : 0
+JoggleFormula : 
+
+}
diff --git a/tests/metadata/step/A3 b/tests/metadata/step/A3
new file mode 100644 (file)
index 0000000..46f6de2
--- /dev/null
@@ -0,0 +1,24 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug28444_nist_ftc_06_asme1_ct5240_rd.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+yCenterOfGravity : 0.0289950044
+Ixz : 0
+Izx : 0
+Surface : 0.28317040780000002
+Volume : 0.0033238733999999999
+Iyz : -1.3068999999999999e-06
+zCenterOfGravity : -0.10963042420000001
+Iyy : 4.46342e-05
+Ixy : 0
+xCenterOfGravity : -0
+Izz : 2.63853e-05
+Density : 1000
+Length : 0
+Ixx : 2.16819e-05
+Izy : -1.3068999999999999e-06
+Mass : 3.3238733752999998
+Iyx : 0
+
+}
diff --git a/tests/metadata/step/A4 b/tests/metadata/step/A4
new file mode 100644 (file)
index 0000000..3b4e1d1
--- /dev/null
@@ -0,0 +1,617 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug29525_rev_part_neu_01.prt_converted_from_datakit.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+PRO_MP_ALT_COGX : ->
+D_BASE_UNIT SOURCE : User-Defined
+PRO_MP_TRF_21 DESCRIPTION : NULL
+PRO_MP_IXY DESCRIPTION : NULL
+PRO_MP_VOLUME ACCESS : Locked
+XSEC_NAME DESCRIPTION : NULL
+MC_ERRORS DESCRIPTION : NULL
+I_CUSTOMER_PROJ ACCESS : Full
+PRO_MP_TRF_23 DESIGNATED : NO
+PRO_MP_COGY DESIGNATED : NO
+PRO_MP_COGY ACCESS : Locked
+GEWINDE_TIEFE : 16.320000
+PRO_MP_ALT_IYY ACCESS : Full
+PRO_MP_ALT_MASS SOURCE : Alternate Mass Prop
+PRO_MP_ALT_COGY DESCRIPTION : NULL
+D_DOC_CLASS DESCRIPTION : NULL
+MBD SOURCE : User-Defined
+PRO_MP_ALT_INERTIA_ORIGIN DESIGNATED : NO
+I_ECM DESCRIPTION : NULL
+D_DEPARTMENT DESIGNATED : YES
+I_3D_RELEASE DESCRIPTION : NULL
+I_APP_VERSION DESCRIPTION : NULL
+PRO_MP_ALT_INERTIA_ORIGIN : PRO_MP_ALT_CSYS
+PRO_MP_TRF_31 DESCRIPTION : NULL
+PRO_MP_AREA SOURCE : Mass Properties
+GEWINDE_DURCHM : 8.000000
+PDMREV DESIGNATED : NO
+D_LOGIN ACCESS : Full
+PRO_MP_ALT_IXY DESIGNATED : NO
+D_LOCATION SOURCE : User-Defined
+PRO_MP_ALT_VOLUME DESCRIPTION : NULL
+PDMREV DESCRIPTION : NULL
+MC_ERRORS : 0
+PRO_MP_TRF_13 DESCRIPTION : NULL
+PTC_WM_LIFECYCLE : CONTI_CAD_Lifecycle
+D_DOC_PART DESIGNATED : YES
+PRO_MP_MASS DESIGNATED : NO
+PRO_MP_COGY : ->
+PRO_MP_AREA DESCRIPTION : NULL
+PROI_REVISION ACCESS : Limited
+PRO_MP_DENSITY DESIGNATED : NO
+I_CUSTOMER_PROJ DESIGNATED : YES
+PTC_MODIFIED DESCRIPTION : NULL
+D_ECM_DESCRIPTION : -
+D_FORMAT : -
+PRO_MP_ALT_IZZ ACCESS : Full
+PRO_MP_IXX DESCRIPTION : NULL
+PROI_RELEASE ACCESS : Limited
+BOHR_DURCHM ACCESS : Locked
+PRO_MP_TRF_32 DESIGNATED : NO
+PTC_WM_MODIFIED_ON : 04-Oct-16 09:42:00 AM
+PTC_WM_VERSION ACCESS : Limited
+PRO_MP_IYZ DESIGNATED : NO
+PRO_MP_COGY SOURCE : Mass Properties
+PTC_WM_LOCATION ACCESS : Limited
+I_ADD_INFO ACCESS : Full
+PTC_WM_MODIFIED_BY : von Bernuth Constantin (uidu3660) (uidu3660: Engineering)
+PRO_MP_IZZ DESIGNATED : NO
+SCHRAUBEN_GROESSE DESIGNATED : NO
+D_WEIGHT_WEIGHED DESCRIPTION : NULL
+D_MATERIAL ACCESS : Full
+PRO_MP_TRF_42 SOURCE : Mass Properties
+PRO_MP_ALT_AREA DESIGNATED : NO
+D_DEPARTMENT DESCRIPTION : NULL
+PRO_MP_TRF_12 DESIGNATED : NO
+PTC_WM_CREATED_BY DESCRIPTION : NULL
+GEWINDEGÃ\84NGE_PRO_INCH : 20.320000
+PRO_MP_ALT_INERTIA_ORIGIN DESCRIPTION : NULL
+PRO_MP_ALT_AREA SOURCE : Alternate Mass Prop
+D_WEIGHT_WEIGHED : -
+PROI_RELEASE DESCRIPTION : NULL
+PRO_MP_CSYS DESCRIPTION : NULL
+I_3D_RELEASE : -
+I_CUSTOMER_PROJ SOURCE : User-Defined
+PRO_MP_TRF_12 SOURCE : Mass Properties
+I_NAME_OLD : -
+MC_MODE SOURCE : User-Defined
+PRO_MP_TRF_31 DESIGNATED : NO
+METRISCH ACCESS : Locked
+PRO_MP_IYZ : ->
+I_RANGE SOURCE : User-Defined
+PRO_MP_TRF_33 : ->
+PRO_MP_ALT_COGY ACCESS : Full
+GDTA_EINHEITEN_HINWEISE : 12
+PRO_MP_ALT_COGZ : ->
+PROI_VERSION SOURCE : Alternate Mass Prop
+I_CUSTOMER_PROJ DESCRIPTION : NULL
+I_ADD_INFO DESIGNATED : YES
+D_WEIGHT_WEIGHED SOURCE : User-Defined
+PRO_MP_TRF_41 ACCESS : Locked
+KLASSE DESIGNATED : NO
+D_LAST_MODIFIED DESIGNATED : YES
+PRO_MP_TRF_23 DESCRIPTION : NULL
+PTC_WM_LOCATION DESIGNATED : NO
+D_SURFACE SOURCE : User-Defined
+PRO_MP_ALT_COGZ DESIGNATED : NO
+PROI_LOCATION SOURCE : Alternate Mass Prop
+GEWINDEGÃ\84NGE_PRO_INCH ACCESS : Locked
+GEWINDE_DURCHM DESCRIPTION : NULL
+D_DOCNR ACCESS : Full
+D_DOC_TYPE SOURCE : User-Defined
+PRO_MP_TRF_33 ACCESS : Locked
+CONTI_CLASS ACCESS : Full
+PRO_MP_MASS DESCRIPTION : NULL
+MBD DESIGNATED : NO
+PROI_CREATED_BY DESCRIPTION : NULL
+PRO_MP_ALT_IZZ : ->
+PRO_MP_TRF_32 : ->
+PROI_BRANCH DESIGNATED : NO
+D_LOCATION DESIGNATED : YES
+D_DESCRIPTION1 SOURCE : User-Defined
+PRO_MP_TRF_22 SOURCE : Mass Properties
+GEWINDE_DURCHM SOURCE : Mass Properties
+D_WEIGHT_CALC : -
+MC_MODE DESIGNATED : YES
+D_ADD_INFORMATION SOURCE : User-Defined
+PRO_MP_ALT_INERTIA_ORIGIN ACCESS : Full
+PRO_MP_ALT_VOLUME : ->
+I_CUSTOMER_PROJ : -
+I_NAME_OLD ACCESS : Full
+PRO_MP_TRF_41 SOURCE : Mass Properties
+PTC_WM_ITERATION DESIGNATED : NO
+PROI_VERSION DESCRIPTION : NULL
+PRO_MP_ALT_CSYS : DEFAULT
+MP_DENSITY : ->
+PRO_MP_IZZ SOURCE : Mass Properties
+PTC_MODIFIED ACCESS : Limited
+PRO_MP_IYY DESCRIPTION : NULL
+D_SURFACE ACCESS : Full
+WT_EPMDOC_NUMBER ACCESS : Limited
+PRO_MP_MASS SOURCE : Mass Properties
+PDMRL DESCRIPTION : NULL
+XSEC_NAME ACCESS : Full
+PRO_MP_ALT_MASS : ->
+D_DOC_PART SOURCE : User-Defined
+PRO_MP_ALT_VOLUME SOURCE : Alternate Mass Prop
+PRO_MP_ALT_IYY DESCRIPTION : NULL
+PTC_MODIFIED SOURCE : Alternate Mass Prop
+D_DOC_TYPE ACCESS : Full
+PRO_MP_TRF_23 SOURCE : Mass Properties
+CUSTOMER DESCRIPTION : NULL
+PRO_MP_ALT_IYZ : ->
+D_WEIGHT_CALC ACCESS : Full
+D_BASE_UNIT : -
+PRO_MP_MASS : ->
+PTC_WM_MODIFIED_ON DESCRIPTION : NULL
+PRO_MP_DENSITY ACCESS : Locked
+PRO_MP_DENSITY SOURCE : Mass Properties
+GEWINDE_LÃ\84NGE SOURCE : Mass Properties
+PTC_WM_MODIFIED_BY DESIGNATED : NO
+I_3D_RELEASE ACCESS : Full
+PRO_MP_ALT_COGZ DESCRIPTION : NULL
+PTC_WM_TEAM DESCRIPTION : NULL
+PROI_CREATED_ON DESCRIPTION : NULL
+BOHRER_SPITZENWINKEL DESCRIPTION : NULL
+PROI_RELEASE SOURCE : Alternate Mass Prop
+D_DESCRIPTION0 SOURCE : User-Defined
+PRO_MP_ALT_IXZ : ->
+D_LAST_MODIFIED DESCRIPTION : NULL
+PRO_MP_ALT_IZZ DESCRIPTION : NULL
+WT_EPMDOC_NUMBER : REV_PART_NEU_01.PRT
+PTC_WM_MODIFIED_ON DESIGNATED : NO
+D_MATERIAL SOURCE : User-Defined
+PRO_MP_ALT_IYY SOURCE : Alternate Mass Prop
+PTC_WM_CREATED_ON : 04-Oct-16 09:41:59 AM
+PRO_MP_IYZ ACCESS : Locked
+MC_CONFIG DESIGNATED : YES
+BOHR_DURCHM SOURCE : Mass Properties
+PRO_MP_ALT_IXZ DESIGNATED : NO
+GEWINDE_LÃ\84NGE : 16.320000
+PTC_WM_MODIFIED_ON ACCESS : Limited
+PRO_MP_TRF_13 ACCESS : Locked
+PRO_MP_IXY ACCESS : Locked
+D_DEPARTMENT ACCESS : Full
+PRO_MP_DENSITY DESCRIPTION : NULL
+PRO_MP_AREA ACCESS : Locked
+PTC_WM_REVISION ACCESS : Limited
+PRO_MP_TRF_31 : ->
+PRO_MP_IYZ DESCRIPTION : NULL
+PTC_WM_TEAM SOURCE : Mass Properties
+D_MATNR ACCESS : Full
+I_ADD_INFO SOURCE : User-Defined
+KLASSE : H
+PRO_MP_IYY SOURCE : Mass Properties
+CONTI_CLASS DESCRIPTION : -
+PTC_WM_VERSION : AA.0
+D_LOGIN DESCRIPTION : NULL
+PRO_MP_COGX ACCESS : Locked
+D_ECM_DESCRIPTION SOURCE : User-Defined
+PDMDB ACCESS : Limited
+D_WEIGHT_WEIGHED ACCESS : Full
+MBD ACCESS : Full
+PRO_MP_COGZ : ->
+D_MATNR DESIGNATED : YES
+D_LOGIN SOURCE : User-Defined
+PRO_MP_IYY DESIGNATED : NO
+GDTA_STANDARD_REF_HINWEISE : 18
+PRO_MP_TRF_33 DESCRIPTION : NULL
+BOHR_TIEFE DESIGNATED : NO
+PRO_MP_ALT_IZZ SOURCE : Alternate Mass Prop
+CUSTOMER_PROJ0 : -
+GEWINDE_TIEFE SOURCE : Mass Properties
+PRO_MP_IXX : ->
+CUSTOMER_PROJ0 ACCESS : Full
+PDMRL : Planned
+D_DEPARTMENT : -
+PRO_MP_TRF_11 ACCESS : Locked
+WT_EPMDOC_NUMBER DESCRIPTION : NULL
+PRO_MP_TRF_11 DESIGNATED : NO
+PRO_MP_CSYS SOURCE : Mass Properties
+PRO_MP_ALT_COGY SOURCE : Alternate Mass Prop
+PDMREV : AA.0+
+PRO_MP_INERTIA_ORIGIN ACCESS : Locked
+PTC_WM_CREATED_BY SOURCE : Mass Properties
+D_DOC_SUBTYPE : -
+D_SURFACE_TEXT ACCESS : Full
+PTC_WM_LIFECYCLE SOURCE : Mass Properties
+PRO_MP_TRF_21 : ->
+I_USE_STATUS DESCRIPTION : NULL
+D_DOC_PART ACCESS : Full
+I_CUSTOMER_RELATION ACCESS : Full
+STEIGUNG DESIGNATED : NO
+PTC_ORGANIZATION_ID DESIGNATED : NO
+I_APP_VERSION DESIGNATED : YES
+MP_DENSITY SOURCE : Alternate Mass Prop
+PRO_MP_ALT_IYZ ACCESS : Full
+D_WEIGHT_WEIGHED DESIGNATED : YES
+PROI_BRANCH : 
+PROI_RELEASE DESIGNATED : NO
+XSEC_SRF DESCRIPTION : NULL
+GDTA_STANDARD_REF_HINWEISE SOURCE : User-Defined
+PRO_MP_COGX DESIGNATED : NO
+PROI_RELEASE : Planned
+PRO_MP_TRF_41 : ->
+PTC_WM_LIFECYCLE_STATE ACCESS : Limited
+PTC_ORGANIZATION_ID DESCRIPTION : NULL
+D_SURFACE_TEXT : -
+PRO_MP_TRF_11 SOURCE : Mass Properties
+PTC_WM_LOCATION SOURCE : Mass Properties
+PTC_WM_CREATED_ON DESIGNATED : NO
+PRO_MP_TRF_32 DESCRIPTION : NULL
+BOHRER_SPITZENWINKEL DESIGNATED : NO
+SCHRAUBEN_GROESSE : M8x1.25
+METRISCH SOURCE : Mass Properties
+D_DESCRIPTION0 : -
+PRO_MP_ALT_IXX DESCRIPTION : NULL
+PRO_MP_IXX SOURCE : Mass Properties
+PRO_MP_ALT_CSYS DESCRIPTION : NULL
+PRO_MP_TRF_13 : ->
+PTC_WM_ITERATION DESCRIPTION : NULL
+KLASSE ACCESS : Locked
+SCHRAUBEN_GROESSE SOURCE : Mass Properties
+I_RANGE ACCESS : Full
+PRO_MP_TRF_21 SOURCE : Mass Properties
+PRO_MP_IYY : ->
+PDMRL SOURCE : Alternate Mass Prop
+PRO_MP_SOURCE DESCRIPTION : NULL
+D_DOC_SUBTYPE SOURCE : User-Defined
+GEWINDE_DURCHM DESIGNATED : NO
+CONTI_CLASS DESIGNATED : YES
+PRO_MP_TRF_32 SOURCE : Mass Properties
+D_DESCRIPTION1 : -
+PRO_MP_IZZ ACCESS : Locked
+PRO_MP_TRF_42 DESCRIPTION : NULL
+D_WEIGHT_CALC SOURCE : User-Defined
+PROI_REVISION : AA
+PRO_MP_ALT_COGX DESIGNATED : NO
+PTC_WM_CREATED_ON SOURCE : Mass Properties
+PRO_MP_TRF_13 SOURCE : Mass Properties
+D_DOC_SUBTYPE ACCESS : Full
+PRO_MP_ALT_IXX ACCESS : Full
+D_DESCRIPTION1 ACCESS : Full
+PRO_MP_ALT_AREA : ->
+I_ADD_INFO DESCRIPTION : NULL
+D_DOCNR SOURCE : User-Defined
+PRO_MP_ALT_COGX SOURCE : Alternate Mass Prop
+PROI_VERSION DESIGNATED : NO
+GDTA_EINHEITEN_HINWEISE DESCRIPTION : NULL
+PROI_CREATED_BY ACCESS : Limited
+PTC_MODIFIED DESIGNATED : NO
+I_RANGE DESCRIPTION : NULL
+D_FORMAT SOURCE : User-Defined
+PRO_MP_AREA DESIGNATED : NO
+PTC_WM_MODIFIED_BY SOURCE : Mass Properties
+D_ADD_INFORMATION DESIGNATED : YES
+CUSTOMER_PROJ0 DESCRIPTION : NULL
+PRO_MP_IXY SOURCE : Mass Properties
+D_DESCRIPTION0 ACCESS : Full
+PRO_MP_SOURCE DESIGNATED : NO
+PROI_BRANCH SOURCE : Alternate Mass Prop
+PTC_WM_LIFECYCLE_STATE : Planned
+D_SURFACE : -
+PRO_MP_TRF_22 ACCESS : Locked
+XSEC_NAME : C
+D_MATERIAL DESIGNATED : YES
+PRO_MP_VOLUME SOURCE : Mass Properties
+PRO_MP_IZZ DESCRIPTION : NULL
+MP_DENSITY DESIGNATED : NO
+PTC_WM_TEAM DESIGNATED : NO
+D_WEIGHT_CALC DESIGNATED : YES
+GEWINDEGÃ\84NGE_PRO_INCH SOURCE : Mass Properties
+PRO_MP_IXX ACCESS : Locked
+GDTA_STANDARD_REF_HINWEISE DESCRIPTION : NULL
+SCHRAUBEN_GROESSE ACCESS : Locked
+D_LOCATION DESCRIPTION : NULL
+PRO_MP_TRF_31 ACCESS : Locked
+PRO_MP_AREA : ->
+MC_ERRORS SOURCE : User-Defined
+PTC_ORGANIZATION_ID SOURCE : Mass Properties
+PRO_MP_CSYS : ->
+D_SURFACE_TEXT DESCRIPTION : NULL
+XSEC_NAME DESIGNATED : NO
+PTC_WM_VERSION DESIGNATED : NO
+PRO_MP_ALT_IYZ DESIGNATED : NO
+PRO_MP_ALT_COGX ACCESS : Full
+PRO_MP_TRF_42 DESIGNATED : NO
+METRISCH DESIGNATED : NO
+PRO_MP_ALT_COGY : ->
+PTC_MODIFIED : 1
+BOHR_TIEFE ACCESS : Locked
+STEIGUNG DESCRIPTION : NULL
+PTC_WM_MODIFIED_ON SOURCE : Mass Properties
+D_LOCATION ACCESS : Full
+D_LAST_MODIFIED : jjjj-mm-dd
+PRO_MP_IXZ DESIGNATED : NO
+PROI_LOCATION DESIGNATED : NO
+GDTA_EINHEITEN_HINWEISE ACCESS : Full
+D_LOCATION : -
+D_DOC_CLASS DESIGNATED : YES
+I_CUSTOMER_RELATION : -
+PRO_MP_CSYS DESIGNATED : NO
+D_FORMAT ACCESS : Full
+MC_CONFIG ACCESS : Full
+METRISCH DESCRIPTION : NULL
+GDTA_STANDARD_REF_HINWEISE DESIGNATED : NO
+BOHR_TIEFE SOURCE : Mass Properties
+PRO_MP_IZZ : ->
+PROI_BRANCH ACCESS : Limited
+PROI_LOCATION : 
+PROI_CREATED_ON : 10/28/08 14:24:55
+D_WEIGHT_CALC DESCRIPTION : NULL
+XSEC_NAME SOURCE : User-Defined
+PTC_WM_TEAM ACCESS : Limited
+I_CUSTOMER_RELATION DESIGNATED : YES
+D_DESCRIPTION1 DESCRIPTION : NULL
+PRO_MP_TRF_12 DESCRIPTION : NULL
+GEWINDE_LÃ\84NGE ACCESS : Locked
+PRO_MP_ALT_IXZ ACCESS : Full
+I_RANGE DESIGNATED : YES
+D_DOC_PART DESCRIPTION : NULL
+D_ADD_INFORMATION DESCRIPTION : NULL
+PRO_MP_INERTIA_ORIGIN : ->
+BOHR_TIEFE DESCRIPTION : NULL
+PRO_MP_IXY DESIGNATED : NO
+PRO_MP_TRF_33 DESIGNATED : NO
+D_DOCNR DESIGNATED : YES
+PRO_MP_ALT_COGY DESIGNATED : NO
+PRO_MP_ALT_AREA DESCRIPTION : NULL
+MC_MODE DESCRIPTION : NULL
+PRO_MP_IXZ DESCRIPTION : NULL
+D_BASE_UNIT ACCESS : Full
+CUSTOMER : -
+PTC_WM_LIFECYCLE_STATE SOURCE : Mass Properties
+PDMREV ACCESS : Limited
+PRO_MP_INERTIA_ORIGIN DESCRIPTION : NULL
+PROI_VERSION ACCESS : Limited
+I_LABOR DESCRIPTION : NULL
+D_SURFACE_TEXT DESIGNATED : YES
+D_DOC_CLASS ACCESS : Full
+PTC_WM_ITERATION : 0
+D_DOC_PART : 000
+PRO_MP_ALT_IYY DESIGNATED : NO
+MC_ERRORS DESIGNATED : YES
+PRO_MP_IYY ACCESS : Locked
+PRO_MP_COGZ ACCESS : Locked
+BOHRER_SPITZENWINKEL SOURCE : Mass Properties
+METRISCH : JA
+PDMRL DESIGNATED : NO
+PRO_MP_SOURCE : GEOMETRY
+XSEC_SRF ACCESS : Full
+D_ECM_DESCRIPTION DESCRIPTION : NULL
+PRO_MP_COGX DESCRIPTION : NULL
+BOHR_TIEFE : 17.000000
+MBD : 1
+PRO_MP_ALT_IYZ DESCRIPTION : NULL
+D_LAST_MODIFIED SOURCE : User-Defined
+I_3D_RELEASE SOURCE : User-Defined
+MODEL_CHECK : -
+PTC_WM_LOCATION DESCRIPTION : NULL
+CUSTOMER ACCESS : Full
+PRO_MP_IXZ SOURCE : Mass Properties
+D_DOCNR : -
+KLASSE DESCRIPTION : NULL
+SCHRAUBEN_GROESSE DESCRIPTION : NULL
+D_DESCRIPTION0 DESCRIPTION : NULL
+D_DOC_CLASS SOURCE : User-Defined
+PRO_MP_TRF_23 ACCESS : Locked
+PTC_WM_MODIFIED_BY DESCRIPTION : NULL
+I_LABOR ACCESS : Full
+PRO_MP_ALT_IXY : ->
+D_FORMAT DESIGNATED : YES
+I_NAME_OLD DESIGNATED : YES
+PRO_MP_ALT_IYZ SOURCE : Alternate Mass Prop
+PDMDB SOURCE : Alternate Mass Prop
+I_USE_STATUS : -
+I_NAME_OLD DESCRIPTION : NULL
+XSEC_SRF SOURCE : User-Defined
+PRO_MP_ALT_INERTIA_ORIGIN SOURCE : Alternate Mass Prop
+PRO_MP_TRF_42 ACCESS : Locked
+D_LOGIN DESIGNATED : YES
+MODEL_CHECK DESCRIPTION : NULL
+MBD DESCRIPTION : NULL
+PRO_MP_ALT_IXY ACCESS : Full
+XSEC_SRF DESIGNATED : NO
+CUSTOMER_PROJ0 SOURCE : User-Defined
+GEWINDEGÃ\84NGE_PRO_INCH DESCRIPTION : NULL
+PTC_WM_CREATED_BY ACCESS : Limited
+MC_MODE ACCESS : Full
+GDTA_EINHEITEN_HINWEISE SOURCE : User-Defined
+PTC_WM_VERSION DESCRIPTION : NULL
+D_LAST_MODIFIED ACCESS : Full
+PTC_WM_LIFECYCLE DESCRIPTION : NULL
+PRO_MP_TRF_22 DESCRIPTION : NULL
+BOHR_DURCHM DESCRIPTION : NULL
+PTC_ORGANIZATION_ID ACCESS : Limited
+PROI_CREATED_BY SOURCE : Alternate Mass Prop
+I_USE_STATUS ACCESS : Full
+PROI_CREATED_ON SOURCE : Alternate Mass Prop
+PRO_MP_TRF_12 ACCESS : Locked
+PROI_REVISION SOURCE : Alternate Mass Prop
+PRO_MP_SOURCE ACCESS : Full
+PDMDB DESIGNATED : NO
+D_DESCRIPTION0 DESIGNATED : YES
+GDTA_STANDARD_REF_HINWEISE ACCESS : Full
+PRO_MP_TRF_43 DESCRIPTION : NULL
+PRO_MP_IXZ ACCESS : Locked
+PRO_MP_COGY DESCRIPTION : NULL
+PDMDB : 
+CONTI_CLASS : RD_AUXPART
+PRO_MP_INERTIA_ORIGIN DESIGNATED : NO
+PROI_CREATED_ON DESIGNATED : NO
+PRO_MP_TRF_12 : ->
+I_APP_VERSION : CREO2 M210
+PTC_WM_ITERATION ACCESS : Limited
+I_USE_STATUS DESIGNATED : YES
+D_BASE_UNIT DESIGNATED : YES
+PTC_WM_MODIFIED_BY ACCESS : Limited
+PTC_WM_VERSION SOURCE : Mass Properties
+I_CUSTOMER_RELATION SOURCE : User-Defined
+D_FORMAT DESCRIPTION : NULL
+PRO_MP_ALT_IXY SOURCE : Alternate Mass Prop
+PRO_MP_TRF_11 DESCRIPTION : NULL
+PTC_WM_ITERATION SOURCE : Mass Properties
+PRO_MP_TRF_11 : ->
+PRO_MP_ALT_MASS DESIGNATED : NO
+PRO_MP_TRF_43 SOURCE : Mass Properties
+PRO_MP_VOLUME DESCRIPTION : NULL
+STEIGUNG ACCESS : Locked
+MC_MODE : -
+PROI_REVISION DESIGNATED : NO
+I_APP_VERSION SOURCE : User-Defined
+GEWINDESERIE : ISO
+PTC_WM_LIFECYCLE_STATE DESIGNATED : NO
+D_SURFACE_TEXT SOURCE : User-Defined
+PRO_MP_COGZ DESCRIPTION : NULL
+PRO_MP_ALT_IXY DESCRIPTION : NULL
+PDMDB DESCRIPTION : NULL
+GEWINDESERIE DESCRIPTION : NULL
+GDTA_EINHEITEN_HINWEISE DESIGNATED : NO
+PRO_MP_COGX : ->
+I_ECM SOURCE : User-Defined
+PRO_MP_SOURCE SOURCE : Alternate Mass Prop
+PDMREV SOURCE : Alternate Mass Prop
+WT_EPMDOC_NUMBER SOURCE : Mass Properties
+PRO_MP_TRF_22 DESIGNATED : NO
+PRO_MP_ALT_IXX : ->
+D_ADD_INFORMATION : -
+PRO_MP_TRF_42 : ->
+D_DESCRIPTION1 DESIGNATED : YES
+PRO_MP_INERTIA_ORIGIN SOURCE : Mass Properties
+PRO_MP_COGZ DESIGNATED : NO
+D_LOGIN : -
+MC_CONFIG SOURCE : User-Defined
+D_ADD_INFORMATION ACCESS : Full
+I_LABOR DESIGNATED : YES
+PRO_MP_TRF_31 SOURCE : Mass Properties
+BOHR_DURCHM : 6.800000
+CUSTOMER_PROJ0 DESIGNATED : YES
+PTC_WM_LIFECYCLE ACCESS : Limited
+I_USE_STATUS SOURCE : User-Defined
+PRO_MP_COGX SOURCE : Mass Properties
+PTC_WM_TEAM : 
+PDMRL ACCESS : Limited
+PRO_MP_TRF_23 : ->
+MC_ERRORS ACCESS : Full
+PRO_MP_IXX DESIGNATED : NO
+GEWINDEGÃ\84NGE_PRO_INCH DESIGNATED : NO
+PRO_MP_ALT_CSYS ACCESS : Full
+PTC_ORGANIZATION_ID : Engineering
+PRO_MP_CSYS ACCESS : Locked
+BOHRER_SPITZENWINKEL : 118.000000
+GEWINDESERIE ACCESS : Locked
+D_BASE_UNIT DESCRIPTION : NULL
+PTC_WM_REVISION DESCRIPTION : NULL
+PROI_BRANCH DESCRIPTION : NULL
+MC_CONFIG : -
+D_MATNR DESCRIPTION : NULL
+PRO_MP_TRF_22 : ->
+PRO_MP_TRF_33 SOURCE : Mass Properties
+PRO_MP_COGZ SOURCE : Mass Properties
+PRO_MP_VOLUME DESIGNATED : NO
+I_LABOR : -
+PRO_MP_ALT_IXZ DESCRIPTION : NULL
+I_APP_VERSION ACCESS : Full
+D_SURFACE DESIGNATED : YES
+BOHR_DURCHM DESIGNATED : NO
+GEWINDE_TIEFE DESIGNATED : NO
+PTC_WM_CREATED_BY : von Bernuth Constantin (uidu3660) (uidu3660: Engineering)
+PRO_MP_TRF_32 ACCESS : Locked
+MODEL_CHECK SOURCE : User-Defined
+PTC_WM_LIFECYCLE DESIGNATED : NO
+D_MATNR : -
+BOHRER_SPITZENWINKEL ACCESS : Locked
+MODEL_CHECK ACCESS : Full
+KLASSE SOURCE : Mass Properties
+D_ECM_DESCRIPTION ACCESS : Full
+D_DOC_CLASS : -
+PRO_MP_IYZ SOURCE : Mass Properties
+MC_CONFIG DESCRIPTION : NULL
+PROI_LOCATION DESCRIPTION : NULL
+GEWINDE_TIEFE ACCESS : Locked
+PTC_WM_REVISION SOURCE : Mass Properties
+PRO_MP_TRF_43 DESIGNATED : NO
+PROI_LOCATION ACCESS : Limited
+PRO_MP_ALT_VOLUME ACCESS : Full
+PRO_MP_ALT_COGZ SOURCE : Alternate Mass Prop
+PRO_MP_TRF_21 DESIGNATED : NO
+MP_DENSITY DESCRIPTION : NULL
+GEWINDE_DURCHM ACCESS : Locked
+D_MATERIAL DESCRIPTION : NULL
+PTC_WM_CREATED_ON DESCRIPTION : NULL
+D_DEPARTMENT SOURCE : User-Defined
+I_3D_RELEASE DESIGNATED : YES
+PRO_MP_TRF_41 DESIGNATED : NO
+I_ADD_INFO : -
+GEWINDE_LÃ\84NGE DESCRIPTION : NULL
+PRO_MP_ALT_IZZ DESIGNATED : NO
+PRO_MP_ALT_COGX DESCRIPTION : NULL
+MODEL_CHECK DESIGNATED : YES
+PRO_MP_DENSITY : 0.000000
+PROI_CREATED_ON ACCESS : Limited
+D_SURFACE DESCRIPTION : NULL
+I_RANGE : 40
+I_ECM ACCESS : Full
+D_DOC_SUBTYPE DESCRIPTION : NULL
+PRO_MP_IXY : ->
+CUSTOMER SOURCE : User-Defined
+STEIGUNG : 1.250000
+D_DOC_SUBTYPE DESIGNATED : YES
+PRO_MP_ALT_MASS ACCESS : Full
+I_CUSTOMER_RELATION DESCRIPTION : NULL
+PRO_MP_ALT_CSYS DESIGNATED : NO
+STEIGUNG SOURCE : Mass Properties
+PRO_MP_TRF_43 : ->
+CONTI_CLASS SOURCE : User-Defined
+D_ECM_DESCRIPTION DESIGNATED : YES
+PRO_MP_ALT_IXZ SOURCE : Alternate Mass Prop
+GEWINDE_LÃ\84NGE DESIGNATED : NO
+PTC_WM_CREATED_BY DESIGNATED : NO
+D_DOC_TYPE DESCRIPTION : NULL
+PRO_MP_IXZ : ->
+I_NAME_OLD SOURCE : User-Defined
+PRO_MP_MASS ACCESS : Locked
+PRO_MP_ALT_COGZ ACCESS : Full
+PRO_MP_ALT_IXX SOURCE : Alternate Mass Prop
+GEWINDESERIE SOURCE : Mass Properties
+PTC_WM_LOCATION : 
+D_DOC_TYPE DESIGNATED : YES
+PRO_MP_VOLUME : ->
+I_ECM DESIGNATED : YES
+I_ECM : -
+PRO_MP_ALT_IXX DESIGNATED : NO
+PTC_WM_REVISION : AA
+GEWINDE_TIEFE DESCRIPTION : NULL
+D_DOC_TYPE : -
+MP_DENSITY ACCESS : Full
+GEWINDESERIE DESIGNATED : NO
+D_DOCNR DESCRIPTION : NULL
+D_MATERIAL : -
+PROI_CREATED_BY : 
+PRO_MP_TRF_21 ACCESS : Locked
+PRO_MP_ALT_IYY : ->
+PRO_MP_TRF_41 DESCRIPTION : NULL
+PTC_WM_REVISION DESIGNATED : NO
+PROI_CREATED_BY DESIGNATED : NO
+D_MATNR SOURCE : User-Defined
+PRO_MP_ALT_MASS DESCRIPTION : NULL
+PRO_MP_TRF_13 DESIGNATED : NO
+PRO_MP_ALT_CSYS SOURCE : Alternate Mass Prop
+PTC_WM_CREATED_ON ACCESS : Limited
+PRO_MP_ALT_VOLUME DESIGNATED : NO
+I_LABOR SOURCE : User-Defined
+WT_EPMDOC_NUMBER DESIGNATED : NO
+PROI_REVISION DESCRIPTION : NULL
+PRO_MP_TRF_43 ACCESS : Locked
+XSEC_SRF : XSEC_SRF
+PTC_WM_LIFECYCLE_STATE DESCRIPTION : NULL
+PROI_VERSION : 0+
+PRO_MP_ALT_AREA ACCESS : Full
+CUSTOMER DESIGNATED : YES
+
+}
diff --git a/tests/metadata/step/A5 b/tests/metadata/step/A5
new file mode 100644 (file)
index 0000000..e06628a
--- /dev/null
@@ -0,0 +1,19 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug29633_nist_ctc_05_asme1_ap242-1.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+FILESIZE : 1495040
+GDT_STANDARD : 5302
+MaterialMultipleAssigned : FALSE
+ATTR_VERSION : 18.3.001
+Part Number : NIST PMI CTC 05 ASME1
+FILESAVETIME : Tue Dec 09 03:47:24 2014
+Revision : D
+CAD_SOURCE : ug
+MTIME : 1418096844
+MaterialMissingAssignments : TRUE
+FILENAME : nist_ctc_05_asme1.prt
+Description : NIST PMI test model downloaded from http://go.usa.gov/mGVm
+
+}
diff --git a/tests/metadata/step/A6 b/tests/metadata/step/A6
new file mode 100644 (file)
index 0000000..5aece01
--- /dev/null
@@ -0,0 +1,42 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug29803.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+OUT_MASS : 50.813477444850157
+RELIEF_DIA : 21.005799999999997
+HELIX_LENGTH : 0
+OUT_OAL : 78.049999999992593
+HELIX_START : 0
+OUT_SHANK_LEN : 27.2499999999926
+RCA_SIZE : 0
+SHANK_UNDER : 0
+OUT_REF_LEN : 50.799999999999997
+BODY_LENGTH : 48.513999999999996
+THEO_BLADE_DIA : 11.074399999999999
+DRILL_DEPTH : 47.625
+BODY_DIA : 0
+SHANK_SIZE : 16
+OUT_SHANK_DIA : 15.999999999999499
+FLUTE_LENGTH : 42.468799999999995
+PRIORITY : 0
+OUT_DRILL_DEPTH : 44.754799999999996
+SCREW_HOLE_SKEW : 1.1000000000000001
+SHANK_DIAMETER : 15.999999999999499
+SS_FLANGE : NO
+DESCRIPTION : T-A HOLDER
+MODELED_BY : LSD
+STANDARD_BODY_DIA : Y
+DEEP_HOLE_WEBSITE : 
+ITEM_NUM : HOLDER
+LENGTH : STUB
+FINISH : BLACK OXIDE
+NOTES : 
+SHANK_IM : M
+FLUTE : STRAIGHT
+SHANK : ER
+MATERIAL : STEEL
+SERIES : Y
+DEEP_HOLE_NOTES : 
+
+}
diff --git a/tests/metadata/step/A7 b/tests/metadata/step/A7
new file mode 100644 (file)
index 0000000..de84141
--- /dev/null
@@ -0,0 +1,237 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename sp7_04-do-242.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+PRO_MP_ALT_COGX : - >
+DESCRIPTION ACCESS : Full
+PRO_MP_TRF_21 DESCRIPTION : NULL
+PRO_MP_IXY DESCRIPTION : NULL
+PRO_MP_VOLUME ACCESS : Locked
+PRO_MP_TRF_23 DESIGNATED : NO
+PRO_MP_COGY DESIGNATED : NO
+PRO_MP_COGY ACCESS : Locked
+PRO_MP_ALT_IYY ACCESS : Full
+PRO_MP_ALT_MASS SOURCE : Alternate Mass Prop
+PRO_MP_ALT_COGY DESCRIPTION : NULL
+PRO_MP_ALT_INERTIA_ORIGIN DESIGNATED : NO
+PRO_MP_ALT_INERTIA_ORIGIN : PRO_MP_ALT_CSYS
+PRO_MP_TRF_31 DESCRIPTION : NULL
+PRO_MP_AREA SOURCE : Mass Properties
+DESCRIPTION DESCRIPTION : NULL
+PRO_MP_ALT_IXY DESIGNATED : NO
+PRO_MP_ALT_VOLUME DESCRIPTION : NULL
+PRO_MP_TRF_13 DESCRIPTION : NULL
+PRO_MP_MASS DESIGNATED : NO
+PRO_MP_COGY : - >
+PRO_MP_AREA DESCRIPTION : NULL
+PRO_MP_DENSITY DESIGNATED : NO
+PRO_MP_ALT_IZZ ACCESS : Full
+PRO_MP_IXX DESCRIPTION : NULL
+PRO_MP_TRF_32 DESIGNATED : NO
+PRO_MP_IYZ DESIGNATED : NO
+PRO_MP_COGY SOURCE : Mass Properties
+PRO_MP_IZZ DESIGNATED : NO
+PRO_MP_TRF_42 SOURCE : Mass Properties
+PRO_MP_ALT_AREA DESIGNATED : NO
+PRO_MP_TRF_12 DESIGNATED : NO
+PRO_MP_ALT_INERTIA_ORIGIN DESCRIPTION : NULL
+PRO_MP_ALT_AREA SOURCE : Alternate Mass Prop
+PRO_MP_CSYS DESCRIPTION : NULL
+PRO_MP_TRF_12 SOURCE : Mass Properties
+PRO_MP_TRF_31 DESIGNATED : NO
+PRO_MP_IYZ : - >
+PRO_MP_TRF_33 : - >
+PRO_MP_ALT_COGY ACCESS : Full
+REVISION SOURCE : User-Defined
+PRO_MP_ALT_COGZ : - >
+PRO_MP_TRF_41 ACCESS : Locked
+PRO_MP_TRF_23 DESCRIPTION : NULL
+PRO_MP_ALT_COGZ DESIGNATED : NO
+PRO_MP_TRF_33 ACCESS : Locked
+PRO_MP_MASS DESCRIPTION : NULL
+PRO_MP_ALT_IZZ : - >
+PRO_MP_TRF_32 : - >
+DESCRIPTION : NIST PMI test model downloaded from http://go.usa.gov/mGVm
+PRO_MP_TRF_22 SOURCE : Mass Properties
+PRO_MP_ALT_INERTIA_ORIGIN ACCESS : Full
+PRO_MP_ALT_VOLUME : - >
+PRO_MP_TRF_41 SOURCE : Mass Properties
+PRO_MP_ALT_CSYS : DEFAULT
+MP_DENSITY : - >
+PRO_MP_IZZ SOURCE : Mass Properties
+PRO_MP_IYY DESCRIPTION : NULL
+PRO_MP_MASS SOURCE : Mass Properties
+PRO_MP_ALT_MASS : - >
+PRO_MP_ALT_VOLUME SOURCE : Alternate Mass Prop
+PRO_MP_ALT_IYY DESCRIPTION : NULL
+DESCRIPTION SOURCE : User-Defined
+PRO_MP_TRF_23 SOURCE : Mass Properties
+PRO_MP_ALT_IYZ : - >
+PRO_MP_MASS : - >
+PRO_MP_DENSITY ACCESS : Locked
+PRO_MP_DENSITY SOURCE : Mass Properties
+PRO_MP_ALT_COGZ DESCRIPTION : NULL
+PRO_MP_ALT_IXZ : - >
+PRO_MP_ALT_IZZ DESCRIPTION : NULL
+PRO_MP_ALT_IYY SOURCE : Alternate Mass Prop
+PRO_MP_IYZ ACCESS : Locked
+PRO_MP_ALT_IXZ DESIGNATED : NO
+PRO_MP_TRF_13 ACCESS : Locked
+PRO_MP_IXY ACCESS : Locked
+PRO_MP_DENSITY DESCRIPTION : NULL
+PRO_MP_AREA ACCESS : Locked
+PRO_MP_TRF_31 : - >
+PRO_MP_IYZ DESCRIPTION : NULL
+PRO_MP_IYY SOURCE : Mass Properties
+PRO_MP_COGX ACCESS : Locked
+PRO_MP_COGZ : - >
+PRO_MP_IYY DESIGNATED : NO
+PRO_MP_TRF_33 DESCRIPTION : NULL
+PRO_MP_ALT_IZZ SOURCE : Alternate Mass Prop
+PRO_MP_IXX : - >
+PRO_MP_TRF_11 ACCESS : Locked
+PRO_MP_TRF_11 DESIGNATED : NO
+PRO_MP_CSYS SOURCE : Mass Properties
+PRO_MP_ALT_COGY SOURCE : Alternate Mass Prop
+PRO_MP_INERTIA_ORIGIN ACCESS : Locked
+PRO_MP_TRF_21 : - >
+PART_NUMBER DESCRIPTION : NULL
+MP_DENSITY SOURCE : Alternate Mass Prop
+PRO_MP_ALT_IYZ ACCESS : Full
+PRO_MP_COGX DESIGNATED : NO
+PRO_MP_TRF_41 : - >
+PRO_MP_TRF_11 SOURCE : Mass Properties
+PRO_MP_TRF_32 DESCRIPTION : NULL
+PRO_MP_ALT_IXX DESCRIPTION : NULL
+PRO_MP_IXX SOURCE : Mass Properties
+PRO_MP_ALT_CSYS DESCRIPTION : NULL
+PRO_MP_TRF_13 : - >
+PRO_MP_TRF_21 SOURCE : Mass Properties
+PRO_MP_IYY : - >
+PRO_MP_SOURCE DESCRIPTION : NULL
+PRO_MP_TRF_32 SOURCE : Mass Properties
+PRO_MP_IZZ ACCESS : Locked
+PRO_MP_TRF_42 DESCRIPTION : NULL
+PRO_MP_ALT_COGX DESIGNATED : NO
+PRO_MP_TRF_13 SOURCE : Mass Properties
+PRO_MP_ALT_IXX ACCESS : Full
+PRO_MP_ALT_AREA : - >
+PRO_MP_ALT_COGX SOURCE : Alternate Mass Prop
+PRO_MP_AREA DESIGNATED : NO
+PRO_MP_IXY SOURCE : Mass Properties
+PRO_MP_SOURCE DESIGNATED : NO
+PRO_MP_TRF_22 ACCESS : Locked
+PRO_MP_VOLUME SOURCE : Mass Properties
+PRO_MP_IZZ DESCRIPTION : NULL
+MP_DENSITY DESIGNATED : NO
+PRO_MP_IXX ACCESS : Locked
+PRO_MP_TRF_31 ACCESS : Locked
+PRO_MP_AREA : - >
+PRO_MP_CSYS : - >
+PRO_MP_ALT_IYZ DESIGNATED : NO
+PRO_MP_ALT_COGX ACCESS : Full
+PRO_MP_TRF_42 DESIGNATED : NO
+PRO_MP_ALT_COGY : - >
+PRO_MP_IXZ DESIGNATED : NO
+PRO_MP_CSYS DESIGNATED : NO
+PRO_MP_IZZ : - >
+PRO_MP_TRF_12 DESCRIPTION : NULL
+PRO_MP_ALT_IXZ ACCESS : Full
+PRO_MP_INERTIA_ORIGIN : - >
+PRO_MP_IXY DESIGNATED : NO
+PRO_MP_TRF_33 DESIGNATED : NO
+PRO_MP_ALT_COGY DESIGNATED : NO
+PRO_MP_ALT_AREA DESCRIPTION : NULL
+PRO_MP_IXZ DESCRIPTION : NULL
+PRO_MP_INERTIA_ORIGIN DESCRIPTION : NULL
+PRO_MP_ALT_IYY DESIGNATED : NO
+PRO_MP_IYY ACCESS : Locked
+PRO_MP_COGZ ACCESS : Locked
+PRO_MP_SOURCE : GEOMETRY
+PRO_MP_COGX DESCRIPTION : NULL
+PRO_MP_ALT_IYZ DESCRIPTION : NULL
+PRO_MP_IXZ SOURCE : Mass Properties
+PRO_MP_TRF_23 ACCESS : Locked
+PRO_MP_ALT_IXY : - >
+PRO_MP_ALT_IYZ SOURCE : Alternate Mass Prop
+PRO_MP_ALT_INERTIA_ORIGIN SOURCE : Alternate Mass Prop
+PRO_MP_TRF_42 ACCESS : Locked
+REVISION : D
+PRO_MP_ALT_IXY ACCESS : Full
+DESCRIPTION DESIGNATED : YES
+PRO_MP_TRF_22 DESCRIPTION : NULL
+PRO_MP_TRF_12 ACCESS : Locked
+PRO_MP_SOURCE ACCESS : Full
+REVISION DESIGNATED : YES
+PRO_MP_TRF_43 DESCRIPTION : NULL
+PRO_MP_IXZ ACCESS : Locked
+PRO_MP_COGY DESCRIPTION : NULL
+PRO_MP_INERTIA_ORIGIN DESIGNATED : NO
+PRO_MP_TRF_12 : - >
+REVISION DESCRIPTION : NULL
+PRO_MP_ALT_IXY SOURCE : Alternate Mass Prop
+PRO_MP_TRF_11 DESCRIPTION : NULL
+PRO_MP_TRF_11 : - >
+PRO_MP_ALT_MASS DESIGNATED : NO
+PRO_MP_TRF_43 SOURCE : Mass Properties
+PART_NUMBER ACCESS : Full
+PRO_MP_VOLUME DESCRIPTION : NULL
+PRO_MP_COGZ DESCRIPTION : NULL
+PRO_MP_ALT_IXY DESCRIPTION : NULL
+PRO_MP_COGX : - >
+PRO_MP_SOURCE SOURCE : Alternate Mass Prop
+PRO_MP_TRF_22 DESIGNATED : NO
+PRO_MP_ALT_IXX : - >
+PRO_MP_TRF_42 : - >
+PRO_MP_INERTIA_ORIGIN SOURCE : Mass Properties
+PRO_MP_COGZ DESIGNATED : NO
+PRO_MP_TRF_31 SOURCE : Mass Properties
+PART_NUMBER DESIGNATED : YES
+PRO_MP_COGX SOURCE : Mass Properties
+PRO_MP_TRF_23 : - >
+PRO_MP_IXX DESIGNATED : NO
+PRO_MP_ALT_CSYS ACCESS : Full
+PRO_MP_CSYS ACCESS : Locked
+PRO_MP_TRF_22 : - >
+PRO_MP_TRF_33 SOURCE : Mass Properties
+PRO_MP_COGZ SOURCE : Mass Properties
+PRO_MP_VOLUME DESIGNATED : NO
+PRO_MP_ALT_IXZ DESCRIPTION : NULL
+PART_NUMBER SOURCE : User-Defined
+PRO_MP_TRF_32 ACCESS : Locked
+PRO_MP_IYZ SOURCE : Mass Properties
+PRO_MP_TRF_43 DESIGNATED : NO
+PRO_MP_ALT_VOLUME ACCESS : Full
+PRO_MP_ALT_COGZ SOURCE : Alternate Mass Prop
+PRO_MP_TRF_21 DESIGNATED : NO
+MP_DENSITY DESCRIPTION : NULL
+PRO_MP_TRF_41 DESIGNATED : NO
+REVISION ACCESS : Full
+PRO_MP_ALT_IZZ DESIGNATED : NO
+PRO_MP_ALT_COGX DESCRIPTION : NULL
+PRO_MP_DENSITY : 0.000000
+PRO_MP_IXY : - >
+PRO_MP_ALT_MASS ACCESS : Full
+PRO_MP_ALT_CSYS DESIGNATED : NO
+PRO_MP_TRF_43 : - >
+PRO_MP_ALT_IXZ SOURCE : Alternate Mass Prop
+PRO_MP_IXZ : - >
+PRO_MP_MASS ACCESS : Locked
+PRO_MP_ALT_COGZ ACCESS : Full
+PRO_MP_ALT_IXX SOURCE : Alternate Mass Prop
+PRO_MP_VOLUME : - >
+PRO_MP_ALT_IXX DESIGNATED : NO
+MP_DENSITY ACCESS : Full
+PRO_MP_TRF_21 ACCESS : Locked
+PRO_MP_ALT_IYY : - >
+PRO_MP_TRF_41 DESCRIPTION : NULL
+PRO_MP_ALT_MASS DESCRIPTION : NULL
+PRO_MP_TRF_13 DESIGNATED : NO
+PRO_MP_ALT_CSYS SOURCE : Alternate Mass Prop
+PRO_MP_ALT_VOLUME DESIGNATED : NO
+PART_NUMBER : NIST PMI CTC 04 ASME1
+PRO_MP_TRF_43 ACCESS : Locked
+PRO_MP_ALT_AREA ACCESS : Full
+
+}
diff --git a/tests/metadata/step/A8 b/tests/metadata/step/A8
new file mode 100644 (file)
index 0000000..09a3369
--- /dev/null
@@ -0,0 +1,69 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename bug32087_part.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+SETUP_PART : 0
+MODEL_3D_REVISION : 1
+MATERIAL_DENSITY : 7850
+WEIGHT_PROTOTYPE : 0
+WEIGHT_FINAL : 0
+WEIGHT_CALCULATED : 0.0070751592515700002
+SUPPLIER_NAME : 
+SEMI_FINISHED_PRODUCT : 
+REFERENCE : 
+MODEL_3D_CAD_SYSTEM : 
+MODEL_3D_APPROVED_BY : 
+REFERENCE_DESIGNATION++ : 
+PART_NAME : 
+MODEL_3D_CHECKED_BY : 
+OWNER : 
+COPYRIGHT : 
+WORK_ORDER_NUMBER : 
+PART_NUMBER : 
+ID_NUMBER_MATERIAL : 
+SPARE_WEARING_PART : 
+TREATMENT : 
+GENERAL_TOLERANCES_DRILL_HOLE : 
+MODEL_3D_CREATED_BY : 
+UNIT_SYSTEM : 
+MODEL_3D_DATE_OF_ISSUE : 
+WELD_TOLERANCES : 
+PROJECT : 
+MODEL_3D_RELEASED_STATUS : 
+MODEL_3D_CREATED_BY_DEPARTMENT : 
+LANGUAGE : 
+TECHNICAL_SPECIFICATION : 
+SUPPLIER_NUMBER : 
+SURFACE_PROTECTION : 
+EDGE_CONDITION : 
+GENERAL_TOLERANCES : 
+EDGE_CONDITION_INNER_EDGE : 
+ORDER_NUMBER : 
+GENERAL_TOLERANCES_FIT_DRILL_HOLE : 
+REFERENCE_DESIGNATION= : 
+SURFACE_ROUGHNESS : 
+TECHNICAL_DIRECTIVE : 
+TOLERANCING_PRINCIPLE : 
+REFERENCE_DESIGNATION- : 
+STOCK_NUMBER : 
+MODEL_3D_APPROVED_BY_DEPARTMENT : 
+PART_REVISION_LEVEL : 
+ARTICLE_NUMBER : 
+EDGE_CONDITION_OUTER_EDGE : 
+MATERIAL : 
+SIMPLIFIED_DRAWING_REVISION : 
+REFERENCE_DESIGNATION== : 
+MODEL_3D_REVISION_LEVEL : 
+MODEL_3D_RELEASED_BY : 
+MODEL_3D_REPLACED_BY : 
+MODEL_3D_ID_NUMBER : 
+REFERENCE_DESIGNATION+ : 
+PART_NOTE : 
+WELD_PREPARATION : 
+MODEL_3D_RELEASED_DATE : 
+MODEL_3D_REPLACES : 
+PAINT_SURFACE : 
+PART_SOURCE : 
+
+}
diff --git a/tests/metadata/step/A9 b/tests/metadata/step/A9
new file mode 100644 (file)
index 0000000..1eead28
--- /dev/null
@@ -0,0 +1,10 @@
+# !!!! This file is generated automatically, do not edit manually! See end script
+set filename nist_ftc_08_asme1_ap242-2.stp
+
+set ref_data {
+Property for [0:1:1:1]:
+Revision : C
+PartNumber : NIST PMI FTC 08 ASME1
+DescriptionRef : NIST PMI test model downloaded from http://go.usa.gov/mGVm
+
+}
diff --git a/tests/metadata/step/begin b/tests/metadata/step/begin
new file mode 100644 (file)
index 0000000..95e00a7
--- /dev/null
@@ -0,0 +1,2 @@
+set conf "provider.STEP.OCC.read.metadata : 1"
+