]> OCCT Git - occt-copy.git/commitdiff
0026827: Position and orientation for GD&T frames
authorika <ika@opencascade.com>
Fri, 30 Oct 2015 10:01:56 +0000 (13:01 +0300)
committergka <gka@opencascade.com>
Thu, 14 Jan 2016 13:13:48 +0000 (16:13 +0300)
Add STEP entities:
- StepAP242_DraughtingModelItemAssociation
- StepVisual_AnnotationOccurrence
- StepVisual_AnnotationCurveOccurrence
- StepVisual_AnnotationPlane
- StepVisual_DraughtingCallout
- StepVisual_AnnotationPlaneElement
- StepVisual_DraughtingCalloutElement

Changed the structure of XCAF to save the position of PMI data.

Add function to read orientation of GDT frame and connection point and set them to XCAF.

44 files changed:
src/RWStepAP214/RWStepAP214_GeneralModule.cxx
src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx
src/RWStepAP242/FILES
src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.cxx [new file with mode: 0644]
src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.hxx [new file with mode: 0644]
src/RWStepVisual/FILES
src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.cxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.hxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.cxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.hxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWAnnotationPlane.cxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWAnnotationPlane.hxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWDraughtingCallout.cxx [new file with mode: 0644]
src/RWStepVisual/RWStepVisual_RWDraughtingCallout.hxx [new file with mode: 0644]
src/STEPCAFControl/STEPCAFControl_Reader.cxx
src/StepAP214/StepAP214_Protocol.cxx
src/StepAP242/FILES
src/StepAP242/StepAP242_DraughtingModelItemAssociation.cxx [new file with mode: 0644]
src/StepAP242/StepAP242_DraughtingModelItemAssociation.hxx [new file with mode: 0644]
src/StepDimTol/StepDimTol_ToleranceZone.hxx
src/StepVisual/FILES
src/StepVisual/StepVisual_AnnotationCurveOccurrence.cxx [new file with mode: 0644]
src/StepVisual/StepVisual_AnnotationCurveOccurrence.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_AnnotationPlane.cxx [new file with mode: 0644]
src/StepVisual/StepVisual_AnnotationPlane.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_AnnotationPlaneElement.cxx [new file with mode: 0644]
src/StepVisual/StepVisual_AnnotationPlaneElement.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_Array1OfAnnotationPlaneElement.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_Array1OfDraughtingCalloutElement.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_DraughtingCallout.cxx [new file with mode: 0644]
src/StepVisual/StepVisual_DraughtingCallout.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_DraughtingCalloutElement.cxx [new file with mode: 0644]
src/StepVisual/StepVisual_DraughtingCalloutElement.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_HArray1OfAnnotationPlaneElement.hxx [new file with mode: 0644]
src/StepVisual/StepVisual_HArray1OfDraughtingCalloutElement.hxx [new file with mode: 0644]
src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx
src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx
src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx
src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.hxx
src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx
src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.hxx
src/XCAFDoc/XCAFDoc_Datum.cxx
src/XCAFDoc/XCAFDoc_Dimension.cxx
src/XCAFDoc/XCAFDoc_GeomTolerance.cxx

index df3667915062795e2ac262e17e4cd19155aa8b4c..b48148446d717364620cee3cf742e3c963a0c4ef 100644 (file)
@@ -1270,8 +1270,13 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule)
 #include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
 #include <RWStepRepr_RWIntegerRepresentationItem.hxx>
 #include <RWStepRepr_RWValueRepresentationItem.hxx>
+#include <RWStepAP242_RWDraughtingModelItemAssociation.hxx>
 #include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
 #include <RWStepDimTol_RWGeoTolAndGeoTolWthMaxTol.hxx>
+#include <RWStepVisual_RWAnnotationCurveOccurrence.hxx>
+#include <RWStepVisual_RWAnnotationOccurrence.hxx>
+#include <RWStepVisual_RWAnnotationPlane.hxx>
+#include <RWStepVisual_RWDraughtingCallout.hxx>
 
 #include <StepRepr_Apex.hxx>
 #include <StepRepr_CentreOfSymmetry.hxx>
@@ -1315,8 +1320,12 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule)
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthMaxTol.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
 
 static Standard_Integer catsh,catdr,catstr,catdsc,cataux;
 
@@ -1393,10 +1402,17 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
        tool.Share(anent,iter);
       }
       break;
+    case 4:
+      {
+       DeclareAndCast(StepVisual_AnnotationCurveOccurrence,anent,ent);
+       RWStepVisual_RWAnnotationCurveOccurrence tool;
+       tool.Share(anent,iter);
+      }
+      break;
     case 7:
       {
-       DeclareAndCast(StepVisual_StyledItem,anent,ent);
-       RWStepVisual_RWStyledItem tool;
+       DeclareAndCast(StepVisual_AnnotationOccurrence,anent,ent);
+       RWStepVisual_RWAnnotationOccurrence tool;
        tool.Share(anent,iter);
       }
       break;
@@ -1865,6 +1881,13 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
        tool.Share(anent,iter);
       }
       break;
+    case 107:
+      {
+       DeclareAndCast(StepVisual_DraughtingCallout,anent,ent);
+       RWStepVisual_RWDraughtingCallout tool;
+       tool.Share(anent,iter);
+      }
+      break;
     case 116:
       {
        DeclareAndCast(StepShape_EdgeCurve,anent,ent);
@@ -4985,6 +5008,20 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
       tool.Share(anent,iter);
     }
     break;
+  case 703:
+    {
+      DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent);
+      RWStepAP242_RWDraughtingModelItemAssociation tool;
+      tool.Share(anent,iter);
+    }
+    break;
+  case 704:
+    {
+      DeclareAndCast(StepVisual_AnnotationPlane,anent,ent);
+      RWStepVisual_RWAnnotationPlane tool;
+      tool.Share(anent,iter);
+    }
+    break;
   case 705:
     {
       DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent);
@@ -5153,6 +5190,9 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
   case 3 : 
     ent = new StepShape_AdvancedFace;
     break;
+  case 4 : 
+    ent = new StepVisual_AnnotationCurveOccurrence;
+    break;
   case 7 : 
     ent = new StepVisual_AnnotationOccurrence;
     break;
@@ -5414,6 +5454,9 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
   case 106 : 
     ent = new StepVisual_AnnotationOccurrence;
     break;
+  case 107 : 
+    ent = new StepVisual_DraughtingCallout;
+    break;
   case 108 : 
     ent = new StepVisual_DraughtingPreDefinedColour;
     break;
@@ -6949,10 +6992,16 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
   case 702:
     ent = new StepRepr_FeatureForDatumTargetRelationship;
     break;
-  case 705 : 
+  case 703:
+    ent = new StepAP242_DraughtingModelItemAssociation;
+    break;
+  case 704:
+    ent = new StepVisual_AnnotationPlane;
+    break;
+  case 705:
     ent = new StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol;
     break;
-  case 706 : 
+  case 706:
     ent = new StepDimTol_GeoTolAndGeoTolWthMaxTol;
     break;
 
@@ -7536,7 +7585,9 @@ Standard_Integer  RWStepAP214_GeneralModule::CategoryNumber
   case 699:
   case 700:
   case 701:
-  case 702: return catdr;
+  case 702:
+  case 703:
+  case 704: return catdr;
   case 705:
   case 706: return cataux;
     
index fc00a868efe7776f2eec432eac41aaf3175f8f2d..bc9279ea12f48baaec094784cc4a13e4e84bc06d 100644 (file)
@@ -1318,8 +1318,14 @@ Handle(atype) result = Handle(atype)::DownCast (start)
 #include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
 #include <RWStepRepr_RWIntegerRepresentationItem.hxx>
 #include <RWStepRepr_RWValueRepresentationItem.hxx>
+#include <RWStepRepr_RWValueRepresentationItem.hxx>
+#include <RWStepAP242_RWDraughtingModelItemAssociation.hxx>
 #include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
 #include <RWStepDimTol_RWGeoTolAndGeoTolWthMaxTol.hxx>
+#include <RWStepVisual_RWAnnotationCurveOccurrence.hxx>
+#include <RWStepVisual_RWAnnotationOccurrence.hxx>
+#include <RWStepVisual_RWAnnotationPlane.hxx>
+#include <RWStepVisual_RWDraughtingCallout.hxx>
 
 #include <StepRepr_Apex.hxx>
 #include <StepRepr_CentreOfSymmetry.hxx>
@@ -1363,8 +1369,12 @@ Handle(atype) result = Handle(atype)::DownCast (start)
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthMaxTol.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
 
 
 // -- General Declarations (Recognize, StepType) ---
@@ -1994,6 +2004,8 @@ static TCollection_AsciiString Reco_GeneralDatumReference("GENERAL_DATUM_REFEREN
 static TCollection_AsciiString Reco_IntegerRepresentationItem("INTEGER_REPRESENTATION_ITEM");
 static TCollection_AsciiString Reco_ValueRepresentationItem("VALUE_REPRESENTATION_ITEM");
 static TCollection_AsciiString Reco_FeatureForDatumTargetRelationship("FEATURE_FOR_DATUM_TARGET_RELATIONSHIP");
+static TCollection_AsciiString Reco_DraughtingModelItemAssociation("DRAUGHTING_MODEL_ITEM_ASSOCIATION");
+static TCollection_AsciiString Reco_AnnotationPlane("ANNOTATION_PLANE");
 
 // -- Definition of the libraries --
 
@@ -2638,6 +2650,8 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
   typenums->SetItem (Reco_IntegerRepresentationItem, 700);
   typenums->SetItem (Reco_ValueRepresentationItem, 701);
   typenums->SetItem (Reco_FeatureForDatumTargetRelationship, 702);
+  typenums->SetItem (Reco_DraughtingModelItemAssociation, 703);
+  typenums->SetItem (Reco_AnnotationPlane, 704);
 
 //    SHORT NAMES
 //    NB : la liste est celle de AP203
@@ -3176,6 +3190,8 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
   typeshor->SetItem ("TLZNFR",684);
   typeshor->SetItem ("INRPIT",700);
   typeshor->SetItem ("VLRPIT",701);
+  typeshor->SetItem ("DMIA", 703);
+  typeshor->SetItem ("ANNPLN", 704);
     
 }
 
@@ -4446,6 +4462,8 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
   case 700: return Reco_IntegerRepresentationItem;
   case 701: return Reco_ValueRepresentationItem;
   case 702: return Reco_FeatureForDatumTargetRelationship;
+  case 703: return Reco_DraughtingModelItemAssociation;
+  case 704: return Reco_AnnotationPlane;
 
   default : return PasReco;
   }
@@ -4799,11 +4817,17 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
       tool.ReadStep (data,num,ach,anent);
     }
     break;
-
+  case 4 :
+    {
+      DeclareAndCast(StepVisual_AnnotationCurveOccurrence, anent, ent);
+      RWStepVisual_RWAnnotationCurveOccurrence tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
   case 7 : 
     {
-      DeclareAndCast(StepVisual_StyledItem, anent, ent);
-      RWStepVisual_RWStyledItem tool;
+      DeclareAndCast(StepVisual_AnnotationOccurrence, anent, ent);
+      RWStepVisual_RWAnnotationOccurrence tool;
       tool.ReadStep (data,num,ach,anent);
     }
     
@@ -5494,6 +5518,13 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
       tool.ReadStep (data,num,ach,anent);
     }
     
+    break;
+  case 107 :
+    {
+      DeclareAndCast(StepVisual_DraughtingCallout, anent, ent);
+      RWStepVisual_RWDraughtingCallout tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
     break;
   case 108 : 
     {
@@ -9185,6 +9216,20 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
       tool.ReadStep (data,num,ach,anent);
     }
     break;
+  case 703:
+    {
+      DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent);
+      RWStepAP242_RWDraughtingModelItemAssociation tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
+  case 704:
+    {
+      DeclareAndCast(StepVisual_AnnotationPlane,anent,ent);
+      RWStepVisual_RWAnnotationPlane tool;
+      tool.ReadStep (data,num,ach,anent);
+    }
+    break;
   case 705:
     {
       DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent);
@@ -9244,12 +9289,18 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
       tool.WriteStep (SW,anent);
     }
     
+    break;
+  case 4 :
+    {
+      DeclareAndCast(StepVisual_AnnotationCurveOccurrence, anent, ent);
+      RWStepVisual_RWAnnotationCurveOccurrence tool;
+      tool.WriteStep (SW,anent);
+    }
     break;
   case 7 : 
     {
-      DeclareAndCast(StepVisual_StyledItem, anent, ent);
-      RWStepVisual_RWStyledItem tool;
-//      if (anent.IsNull()) return; 
+      DeclareAndCast(StepVisual_AnnotationOccurrence, anent, ent);
+      RWStepVisual_RWAnnotationOccurrence tool;
       tool.WriteStep (SW,anent);
     }
     
@@ -10027,6 +10078,13 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
       tool.WriteStep (SW,anent);
     }
     
+    break;
+  case 107 :
+    {
+      DeclareAndCast(StepVisual_DraughtingCallout, anent, ent);
+      RWStepVisual_RWDraughtingCallout tool;
+      tool.WriteStep (SW,anent);
+    }
     break;
   case 108 : 
     {
@@ -13907,6 +13965,20 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
       tool.WriteStep (SW,anent);
     }
     break;
+  case 703:
+    {
+      DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent);
+      RWStepAP242_RWDraughtingModelItemAssociation tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
+  case 704:
+    {
+      DeclareAndCast(StepVisual_AnnotationPlane,anent,ent);
+      RWStepVisual_RWAnnotationPlane tool;
+      tool.WriteStep (SW,anent);
+    }
+    break;
   case 705:
     {
       DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent);
index bf94f4dbf624f31820e24cc6a911327d77781d97..f1d234473872b3db9854beb12482d847731cd455 100644 (file)
@@ -1,3 +1,5 @@
+RWStepAP242_RWDraughtingModelItemAssociation.cxx
+RWStepAP242_RWDraughtingModelItemAssociation.hxx
 RWStepAP242_RWGeometricItemSpecificUsage.cxx
 RWStepAP242_RWGeometricItemSpecificUsage.hxx
 RWStepAP242_RWIdAttribute.cxx
diff --git a/src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.cxx b/src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.cxx
new file mode 100644 (file)
index 0000000..fc2616c
--- /dev/null
@@ -0,0 +1,108 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <RWStepAP242_RWDraughtingModelItemAssociation.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
+#include <StepRepr_HArray1OfRepresentationItem.hxx>
+#include <StepRepr_Representation.hxx>
+
+RWStepAP242_RWDraughtingModelItemAssociation::RWStepAP242_RWDraughtingModelItemAssociation () {}
+
+void RWStepAP242_RWDraughtingModelItemAssociation::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepAP242_DraughtingModelItemAssociation)& ent) const
+{
+  // Number of Parameter Control
+  if (!data->CheckNbParams(num,5,ach,"geometric_item_specific_usage")) return;
+
+  // Inherited fields of ItemIdentifiedRepresentationUsage
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num,1,"item_identified_representation_usage.name",ach,aName);
+
+  Handle(TCollection_HAsciiString) aDescription;
+  if (data->IsParamDefined (num,2)) {
+    data->ReadString (num,2,"item_identified_representation_usage.description",ach,aDescription);
+  }
+
+  StepAP242_ItemIdentifiedRepresentationUsageDefinition aDefinition;
+  data->ReadEntity(num,3,"item_identified_representation_usage.definition",ach,aDefinition);
+
+  Handle(StepRepr_Representation) aRepresentation;
+  data->ReadEntity (num,4,"item_identified_representation_usage.used_representation",ach,STANDARD_TYPE(StepRepr_Representation), aRepresentation);
+
+  Handle(StepRepr_HArray1OfRepresentationItem) anItems;
+  Handle(StepRepr_RepresentationItem) anEnt;
+  Standard_Integer nbSub;
+  Interface_ParamType aType = data->ParamType(num, 5);
+  if (aType == Interface_ParamIdent) {
+    data->ReadEntity(num, 5,"item_identified_representation_usage.identified_item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), anEnt);
+    anItems = new StepRepr_HArray1OfRepresentationItem (1, 1);
+    anItems->SetValue(1, anEnt);
+  }
+  else if (data->ReadSubList (num,5,"item_identified_representation_usage.identified_item",ach,nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anItems = new StepRepr_HArray1OfRepresentationItem (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"representation_item", ach,
+         STANDARD_TYPE(StepRepr_RepresentationItem), anEnt))
+        anItems->SetValue(i, anEnt);
+    }
+  }
+
+  // Initialisation of the read entity
+  ent->Init(aName, aDescription, aDefinition, aRepresentation, anItems);
+}
+
+void RWStepAP242_RWDraughtingModelItemAssociation::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepAP242_DraughtingModelItemAssociation)& ent) const
+{
+  // Inherited fields of ItemIdentifiedRepresentationUsage
+  SW.Send(ent->Name());
+
+  SW.Send(ent->Description());
+
+  SW.Send(ent->Definition().Value());
+
+  SW.Send(ent->UsedRepresentation());
+
+  if (ent->NbIdentifiedItem() == 1)
+    SW.Send(ent->IdentifiedItemValue(1));
+  else {
+    SW.OpenSub();
+    for (Standard_Integer i = 1;  i <= ent->NbIdentifiedItem();  i++) {
+      SW.Send(ent->IdentifiedItemValue(i));
+    }
+    SW.CloseSub();
+  }
+}
+
+void RWStepAP242_RWDraughtingModelItemAssociation::Share(
+  const Handle(StepAP242_DraughtingModelItemAssociation)& ent, 
+  Interface_EntityIterator& iter) const
+{
+  // Inherited fields of ItemIdentifiedRepresentationUsage
+
+  iter.AddItem(ent->Definition().Value());
+  Standard_Integer i, nb = ent->NbIdentifiedItem();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->IdentifiedItemValue(i));
+}
+
diff --git a/src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.hxx b/src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.hxx
new file mode 100644 (file)
index 0000000..ecf710a
--- /dev/null
@@ -0,0 +1,46 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepAP242_RWDraughtingModelItemAssociation_HeaderFile
+#define _RWStepAP242_RWDraughtingModelItemAssociation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+
+class StepData_StepReaderData;
+class Interface_Check;
+class StepAP242_DraughtingModelItemAssociation;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+//! Read & Write Module for DraughtingModelItemAssociation
+class RWStepAP242_RWDraughtingModelItemAssociation 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+  
+  Standard_EXPORT RWStepAP242_RWDraughtingModelItemAssociation();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepAP242_DraughtingModelItemAssociation)& ent)  const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepAP242_DraughtingModelItemAssociation)& ent)  const;
+  
+  Standard_EXPORT void Share (const Handle(StepAP242_DraughtingModelItemAssociation)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepAP242_RWDraughtingModelItemAssociation_HeaderFile
index 2ead035db27346747fcc0d6b82d7e328c6ed2fdc..87883fea738af1fc43eb9d8f53e4ab25c7cc2479 100644 (file)
@@ -1,3 +1,9 @@
+RWStepVisual_RWAnnotationCurveOccurrence.cxx
+RWStepVisual_RWAnnotationCurveOccurrence.hxx
+RWStepVisual_RWAnnotationOccurrence.cxx
+RWStepVisual_RWAnnotationOccurrence.hxx
+RWStepVisual_RWAnnotationPlane.cxx
+RWStepVisual_RWAnnotationPlane.hxx
 RWStepVisual_RWAreaInSet.cxx
 RWStepVisual_RWAreaInSet.hxx
 RWStepVisual_RWBackgroundColour.cxx
@@ -32,6 +38,8 @@ RWStepVisual_RWCurveStyleFont.cxx
 RWStepVisual_RWCurveStyleFont.hxx
 RWStepVisual_RWCurveStyleFontPattern.cxx
 RWStepVisual_RWCurveStyleFontPattern.hxx
+RWStepVisual_RWDraughtingCallout.cxx
+RWStepVisual_RWDraughtingCallout.hxx
 RWStepVisual_RWDraughtingModel.cxx
 RWStepVisual_RWDraughtingModel.hxx
 RWStepVisual_RWDraughtingPreDefinedColour.cxx
diff --git a/src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.cxx b/src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.cxx
new file mode 100644 (file)
index 0000000..7db15d8
--- /dev/null
@@ -0,0 +1,92 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepVisual_RWAnnotationCurveOccurrence.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepVisual_HArray1OfPresentationStyleAssignment.hxx>
+#include <StepVisual_PresentationStyleAssignment.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+
+RWStepVisual_RWAnnotationCurveOccurrence::RWStepVisual_RWAnnotationCurveOccurrence () {}
+
+void RWStepVisual_RWAnnotationCurveOccurrence::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepVisual_AnnotationCurveOccurrence)& ent) const
+{
+
+  // Number of Parameter Control
+  if (!data->CheckNbParams(num, 3, ach, "styled_item")) return;
+
+  // Inherited field : name 
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+
+  // Inherited field : styles
+  Handle(StepVisual_HArray1OfPresentationStyleAssignment) aStyles;
+  Handle(StepVisual_PresentationStyleAssignment) anent2;
+  Standard_Integer nsub2;
+  if (data->ReadSubList (num,2,"styles",ach,nsub2)) {
+    Standard_Integer nb2 = data->NbParams(nsub2);
+    aStyles = new StepVisual_HArray1OfPresentationStyleAssignment (1, nb2);
+    for (Standard_Integer i2 = 1; i2 <= nb2; i2 ++) {
+      if (data->ReadEntity (nsub2, i2,"presentation_style_assignment", ach,
+          STANDARD_TYPE(StepVisual_PresentationStyleAssignment), anent2))
+        aStyles->SetValue(i2, anent2);
+    }
+  }
+
+  // Inherited field : item
+  Handle(StepRepr_RepresentationItem) aItem;
+  data->ReadEntity(num, 3,"item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItem);
+
+  // Initialisation of the read entity
+  ent->Init(aName, aStyles, aItem);
+}
+
+void RWStepVisual_RWAnnotationCurveOccurrence::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepVisual_AnnotationCurveOccurrence)& ent) const
+{
+  //Inherited field : name
+  SW.Send(ent->Name());
+
+  // Inherited field : styles
+  SW.OpenSub();
+  for (Standard_Integer i2 = 1;  i2 <= ent->NbStyles();  i2 ++) {
+    SW.Send(ent->StylesValue(i2));
+  }
+  SW.CloseSub();
+
+  // Inherited field : item
+
+  SW.Send(ent->Item());
+}
+
+void RWStepVisual_RWAnnotationCurveOccurrence::Share(const Handle(StepVisual_AnnotationCurveOccurrence)& ent, Interface_EntityIterator& iter) const
+{
+
+  Standard_Integer nbElem1 = ent->NbStyles();
+  for (Standard_Integer is1=1; is1<=nbElem1; is1 ++) {
+    iter.GetOneItem(ent->StylesValue(is1));
+  }
+
+  iter.GetOneItem(ent->Item());
+}
diff --git a/src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.hxx b/src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.hxx
new file mode 100644 (file)
index 0000000..d246c77
--- /dev/null
@@ -0,0 +1,45 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepVisual_RWAnnotationCurveOccurrence_HeaderFile
+#define _RWStepVisual_RWAnnotationCurveOccurrence_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepVisual_AnnotationCurveOccurrence;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+//! Read & Write Module for AnnotationCurveOccurrence
+class RWStepVisual_RWAnnotationCurveOccurrence 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+  
+  Standard_EXPORT RWStepVisual_RWAnnotationCurveOccurrence();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepVisual_AnnotationCurveOccurrence)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepVisual_AnnotationCurveOccurrence)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepVisual_AnnotationCurveOccurrence)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepVisual_RWAnnotationCurveOccurrence_HeaderFile
diff --git a/src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.cxx b/src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.cxx
new file mode 100644 (file)
index 0000000..8de83e8
--- /dev/null
@@ -0,0 +1,107 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepVisual_RWAnnotationOccurrence.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepVisual_HArray1OfPresentationStyleAssignment.hxx>
+#include <StepVisual_PresentationStyleAssignment.hxx>
+#include <StepVisual_AnnotationOccurrence.hxx>
+
+//=======================================================================
+//function : RWStepVisual_RWAnnotationOccurrence
+//purpose  : 
+//=======================================================================
+RWStepVisual_RWAnnotationOccurrence::RWStepVisual_RWAnnotationOccurrence () {}
+
+//=======================================================================
+//function : ReadStep
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWAnnotationOccurrence::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepVisual_AnnotationOccurrence)& ent) const
+{
+  // Number of Parameter Control
+  if (!data->CheckNbParams(num, 3, ach, "annotation_occurrence")) return;
+
+  // Inherited field : name
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+  
+  // Inherited field : styles
+  Handle(StepVisual_HArray1OfPresentationStyleAssignment) aStyles;
+  Handle(StepVisual_PresentationStyleAssignment) anent2;
+  Standard_Integer nsub2;
+  if (data->ReadSubList (num,2,"styles",ach,nsub2)) {
+    Standard_Integer nb2 = data->NbParams(nsub2);
+    aStyles = new StepVisual_HArray1OfPresentationStyleAssignment (1, nb2);
+    for (Standard_Integer i2 = 1; i2 <= nb2; i2 ++) {
+      if (data->ReadEntity (nsub2, i2,"presentation_style_assignment", ach,
+          STANDARD_TYPE(StepVisual_PresentationStyleAssignment), anent2))
+        aStyles->SetValue(i2, anent2);
+    }
+  }
+
+  // Inherited field : item
+  Handle(StepRepr_RepresentationItem) aItem;
+  data->ReadEntity(num, 3, "item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItem);
+
+  // Initialisation of the read entity
+  ent->Init(aName, aStyles, aItem);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWAnnotationOccurrence::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepVisual_AnnotationOccurrence)& ent) const
+{
+  // Inherited field : name
+  SW.Send(ent->Name());
+
+  // Inherited field : styles
+
+  SW.OpenSub();
+  for (Standard_Integer i2 = 1;  i2 <= ent->NbStyles();  i2 ++) {
+    SW.Send(ent->StylesValue(i2));
+  }
+  SW.CloseSub();
+
+  // Inherited field : item
+
+  SW.Send(ent->Item());
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWAnnotationOccurrence::Share(const Handle(StepVisual_AnnotationOccurrence)& ent, Interface_EntityIterator& iter) const
+{
+  Standard_Integer nbElem1 = ent->NbStyles();
+  for (Standard_Integer is1=1; is1<=nbElem1; is1 ++) {
+    iter.GetOneItem(ent->StylesValue(is1));
+  }
+  iter.GetOneItem(ent->Item());
+}
diff --git a/src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.hxx b/src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.hxx
new file mode 100644 (file)
index 0000000..ca452c5
--- /dev/null
@@ -0,0 +1,45 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepVisual_RWAnnotationOccurrence_HeaderFile
+#define _RWStepVisual_RWAnnotationOccurrence_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepVisual_AnnotationOccurrence;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+//! Read & Write Module for AnnotationOccurrence
+class RWStepVisual_RWAnnotationOccurrence 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+  
+  Standard_EXPORT RWStepVisual_RWAnnotationOccurrence();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepVisual_AnnotationOccurrence)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepVisual_AnnotationOccurrence)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepVisual_AnnotationOccurrence)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepVisual_RWAnnotationOccurrence_HeaderFile
diff --git a/src/RWStepVisual/RWStepVisual_RWAnnotationPlane.cxx b/src/RWStepVisual/RWStepVisual_RWAnnotationPlane.cxx
new file mode 100644 (file)
index 0000000..0953e72
--- /dev/null
@@ -0,0 +1,133 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepVisual_RWAnnotationPlane.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepRepr_RepresentationItem.hxx>
+#include <StepVisual_HArray1OfPresentationStyleAssignment.hxx>
+#include <StepVisual_PresentationStyleAssignment.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+RWStepVisual_RWAnnotationPlane::RWStepVisual_RWAnnotationPlane () {}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWAnnotationPlane::ReadStep
+  (const Handle(StepData_StepReaderData)& data,
+   const Standard_Integer num,
+   Handle(Interface_Check)& ach,
+   const Handle(StepVisual_AnnotationPlane)& ent) const
+{
+  // Number of Parameter Control
+  if (!data->CheckNbParams(num, 4, ach, "annotation_plane")) return;
+
+  // Inherited field : name
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name", ach, aName);
+
+  // Inherited field : styles
+  Handle(StepVisual_HArray1OfPresentationStyleAssignment) aStyles;
+  Handle(StepVisual_PresentationStyleAssignment) anent2;
+  Standard_Integer nsub2;
+  if (data->ReadSubList (num,2,"styles",ach,nsub2)) {
+    Standard_Integer nb2 = data->NbParams(nsub2);
+    aStyles = new StepVisual_HArray1OfPresentationStyleAssignment (1, nb2);
+    for (Standard_Integer i2 = 1; i2 <= nb2; i2 ++) {
+      if (data->ReadEntity (nsub2, i2,"presentation_style_assignment", ach,
+          STANDARD_TYPE(StepVisual_PresentationStyleAssignment), anent2))
+        aStyles->SetValue(i2, anent2);
+    }
+  }
+
+  // Inherited field : item
+  Handle(StepRepr_RepresentationItem) aItem;
+  data->ReadEntity(num, 3, "item", ach, STANDARD_TYPE(StepRepr_RepresentationItem), aItem);
+  
+  // Own field: elements
+  Handle(StepVisual_HArray1OfAnnotationPlaneElement) anElements;
+  StepVisual_AnnotationPlaneElement anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num, 4, "elements", ach, nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    anElements = new StepVisual_HArray1OfAnnotationPlaneElement (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"content", ach, anEnt))
+        anElements->SetValue(i, anEnt);
+    }
+  }
+
+  // Initialisation of the read entity
+  ent->Init(aName, aStyles, aItem, anElements);
+}
+
+//=======================================================================
+//function : WriteStep
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWAnnotationPlane::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepVisual_AnnotationPlane)& ent) const
+{
+  // Inherited field : name
+
+  SW.Send(ent->Name());
+
+  // Inherited field : styles
+
+  SW.OpenSub();
+  for (Standard_Integer i2 = 1;  i2 <= ent->NbStyles();  i2 ++) {
+    SW.Send(ent->StylesValue(i2));
+  }
+  SW.CloseSub();
+
+  // Inherited field : item
+  SW.Send(ent->Item());
+  
+  // Own field: elements
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbElements();  i++) {
+    SW.Send(ent->ElementsValue(i).Value());
+  }
+  SW.CloseSub();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWAnnotationPlane::Share(const Handle(StepVisual_AnnotationPlane)& ent, Interface_EntityIterator& iter) const
+{
+  Standard_Integer nbElem1 = ent->NbStyles();
+  for (Standard_Integer is1=1; is1<=nbElem1; is1 ++) {
+    iter.GetOneItem(ent->StylesValue(is1));
+  }
+  iter.GetOneItem(ent->Item());
+    
+  // Own field: contents
+  Standard_Integer i, nb = ent->NbElements();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->ElementsValue(i).Value());
+}
+
diff --git a/src/RWStepVisual/RWStepVisual_RWAnnotationPlane.hxx b/src/RWStepVisual/RWStepVisual_RWAnnotationPlane.hxx
new file mode 100644 (file)
index 0000000..224e375
--- /dev/null
@@ -0,0 +1,45 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepVisual_RWAnnotationPlane_HeaderFile
+#define _RWStepVisual_RWAnnotationPlane_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class StepData_StepReaderData;
+class Interface_Check;
+class StepVisual_AnnotationPlane;
+class StepData_StepWriter;
+class Interface_EntityIterator;
+
+//! Read & Write Module for AnnotationPlane
+class RWStepVisual_RWAnnotationPlane 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+  
+  Standard_EXPORT RWStepVisual_RWAnnotationPlane();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepVisual_AnnotationPlane)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepVisual_AnnotationPlane)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepVisual_AnnotationPlane)& ent, Interface_EntityIterator& iter) const;
+};
+#endif // _RWStepVisual_RWAnnotationPlane_HeaderFile
diff --git a/src/RWStepVisual/RWStepVisual_RWDraughtingCallout.cxx b/src/RWStepVisual/RWStepVisual_RWDraughtingCallout.cxx
new file mode 100644 (file)
index 0000000..3170883
--- /dev/null
@@ -0,0 +1,93 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Interface_Check.hxx>
+#include <Interface_EntityIterator.hxx>
+#include <RWStepVisual_RWDraughtingCallout.hxx>
+#include <StepData_StepReaderData.hxx>
+#include <StepData_StepWriter.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
+
+//=======================================================================
+//function : RWStepVisual_RWDraughtingCallout
+//purpose  : 
+//=======================================================================
+RWStepVisual_RWDraughtingCallout::RWStepVisual_RWDraughtingCallout () {}
+
+//=======================================================================
+//function : Read
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWDraughtingCallout::ReadStep(const Handle(StepData_StepReaderData)& data,
+                                                const Standard_Integer num,
+                                                Handle(Interface_Check)& ach,
+                                                const Handle(StepVisual_DraughtingCallout)& ent) const
+{
+  if (!data->CheckNbParams(num, 2, ach, "draughting_callout")) return;
+
+  // Inherited field : name
+  Handle(TCollection_HAsciiString) aName;
+  data->ReadString (num, 1, "name" ,ach, aName);
+    
+  // Own field: contents
+  Handle(StepVisual_HArray1OfDraughtingCalloutElement) aContents;
+  StepVisual_DraughtingCalloutElement anEnt;
+  Standard_Integer nbSub;
+  if (data->ReadSubList (num, 2, "contents", ach, nbSub)) {
+    Standard_Integer nbElements = data->NbParams(nbSub);
+    aContents = new StepVisual_HArray1OfDraughtingCalloutElement (1, nbElements);
+    for (Standard_Integer i = 1; i <= nbElements; i++) {
+      if (data->ReadEntity(nbSub, i,"content", ach, anEnt))
+        aContents->SetValue(i, anEnt);
+    }
+  }
+
+  // Initialisation of the read entity
+  ent->Init(aName, aContents);
+}
+
+//=======================================================================
+//function : Write
+//purpose  : 
+//=======================================================================
+void RWStepVisual_RWDraughtingCallout::WriteStep
+  (StepData_StepWriter& SW,
+   const Handle(StepVisual_DraughtingCallout)& ent) const
+{
+  // Inherited field: name
+  SW.Send(ent->Name());
+    
+  // Own field: contents
+  SW.OpenSub();
+  for (Standard_Integer i = 1;  i <= ent->NbContents();  i++) {
+    SW.Send(ent->ContentsValue(i).Value());
+  }
+  SW.CloseSub();
+}
+
+//=======================================================================
+//function : Share
+//purpose  : 
+//=======================================================================
+
+void RWStepVisual_RWDraughtingCallout::Share (const Handle(StepVisual_DraughtingCallout) &ent,
+                                              Interface_EntityIterator& iter) const
+{
+  // Own field: contents
+  Standard_Integer i, nb = ent->NbContents();
+  for (i = 1; i <= nb; i++)  
+    iter.AddItem (ent->ContentsValue(i).Value());
+}
+
diff --git a/src/RWStepVisual/RWStepVisual_RWDraughtingCallout.hxx b/src/RWStepVisual/RWStepVisual_RWDraughtingCallout.hxx
new file mode 100644 (file)
index 0000000..9d56135
--- /dev/null
@@ -0,0 +1,45 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _RWStepVisual_RWDraughtingCallout_HeaderFile
+#define _RWStepVisual_RWDraughtingCallout_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <Standard_Integer.hxx>
+class Interface_EntityIterator;
+class StepData_StepReaderData;
+class Interface_Check;
+class StepVisual_DraughtingCallout;
+class StepData_StepWriter;
+
+//! Read & Write Module for DraughtingCallout
+class RWStepVisual_RWDraughtingCallout 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  Standard_EXPORT RWStepVisual_RWDraughtingCallout();
+  
+  Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(StepVisual_DraughtingCallout)& ent) const;
+  
+  Standard_EXPORT void WriteStep (StepData_StepWriter& SW, const Handle(StepVisual_DraughtingCallout)& ent) const;
+  
+  Standard_EXPORT void Share (const Handle(StepVisual_DraughtingCallout)& ent, Interface_EntityIterator& iter)  const;
+};
+#endif // _RWStepVisual_RWDraughtingCallout_HeaderFile
index 82a10328b135bf4c5abf10515f8c06044dfe8a15..9137ea94dc12fd6d9072ca900a609e95d92b978a 100644 (file)
@@ -96,6 +96,9 @@
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthMod.hxx>
 #include <StepDimTol_GeometricToleranceWithMaximumTolerance.hxx>
+#include <StepGeom_Axis2Placement3d.hxx>
+#include <StepGeom_Plane.hxx>
+#include <StepGeom_Polyline.hxx>
 #include <StepDimTol_PlacedDatumTargetFeature.hxx>
 #include <StepRepr_AssemblyComponentUsage.hxx>
 #include <StepRepr_CharacterizedDefinition.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 <StepShape_ToleranceValue.hxx>
 #include <StepShape_ValueFormatTypeQualifier.hxx>
 #include <StepShape_Vertex.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
+#include <StepVisual_DraughtingCalloutElement.hxx>
 #include <StepVisual_Invisibility.hxx>
 #include <StepVisual_LayeredItem.hxx>
+#include <StepVisual_PlanarBox.hxx>
 #include <StepVisual_PresentationLayerAssignment.hxx>
 #include <StepVisual_PresentationStyleByContext.hxx>
 #include <StepVisual_StyleContextSelect.hxx>
 #include <XCAFDimTolObjects_DatumObject.hxx>
 #include <XSControl_TransferReader.hxx>
 #include <XSControl_WorkSession.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepAP242_GeometricItemSpecificUsage.hxx>
 #include <StepGeom_CartesianPoint.hxx>
 #include <STEPCAFControl_GDTProperty.hxx>
@@ -1693,6 +1703,171 @@ static Standard_Boolean GetMassConversionFactor(Handle(StepBasic_NamedUnit)& NU,
   return Standard_True;
 }
 
+//=======================================================================
+//function : ReadGDTPosition
+//purpose  : return annotation plane and position for given GDT
+// (Dimension, Geometric_Tolerance, Datum_Feature or Placed_Datum_Target_Feature)
+//=======================================================================
+static void ReadGDTPosition(const Interface_Graph &theGraph,
+                            const Handle(Standard_Transient) theGDT,
+                            Handle(Standard_Transient)& theDimObject)
+{
+  // find the proper DraughtingModelItemAssociation
+  Interface_EntityIterator subs = theGraph.Sharings(theGDT);
+  Handle(StepAP242_DraughtingModelItemAssociation) aDMIA;
+  for (subs.Start(); subs.More() && aDMIA.IsNull(); subs.Next()) {
+    if (!subs.Value()->IsKind(STANDARD_TYPE(StepAP242_DraughtingModelItemAssociation)))
+      continue;
+    aDMIA = Handle(StepAP242_DraughtingModelItemAssociation)::DownCast(subs.Value());
+    Handle(TCollection_HAsciiString) aName = aDMIA->Name();
+    aName->LowerCase();
+    if (!aName->Search(new TCollection_HAsciiString("pmi representation to presentation link"))) {
+      aDMIA = NULL;
+    }
+  }
+  if (aDMIA.IsNull() || aDMIA->NbIdentifiedItem() == 0)
+    return;
+
+  // retrieve AnnotationPlane
+  Standard_Boolean isHasPlane = Standard_False;
+  gp_Ax2 aPlaneAxes;
+  Handle(StepRepr_RepresentationItem) aDMIAE = aDMIA->IdentifiedItemValue(1);
+  if (aDMIAE.IsNull())
+    return;
+  subs = theGraph.Sharings(aDMIAE);
+  Handle(StepVisual_AnnotationPlane) anAnPlane;
+  for (subs.Start(); subs.More() && anAnPlane.IsNull(); subs.Next()) {
+    anAnPlane = Handle(StepVisual_AnnotationPlane)::DownCast(subs.Value());
+  }
+  if (!anAnPlane.IsNull()) {
+    Handle(StepRepr_RepresentationItem) aPlaneItem = anAnPlane->Item();
+    Handle(StepGeom_Axis2Placement3d) aA2P3D;
+    //retrieve axes from AnnotationPlane
+    if (aPlaneItem->IsKind(STANDARD_TYPE(StepGeom_Plane))) {
+      Handle(StepGeom_Plane) aPlane = Handle(StepGeom_Plane)::DownCast(aPlaneItem);
+      aA2P3D = aPlane->Position();
+    }
+    else if (aPlaneItem->IsKind(STANDARD_TYPE(StepVisual_PlanarBox))) {
+      Handle(StepVisual_PlanarBox) aBox = Handle(StepVisual_PlanarBox)::DownCast(aPlaneItem);
+      aA2P3D = aBox->Placement().Axis2Placement3d();
+    }
+    // build gp_Ax2 from axes
+    if (!aA2P3D.IsNull())
+    {
+      Handle(StepGeom_Direction) anAxis = aA2P3D->Axis(), 
+                                 aRefDir = aA2P3D->RefDirection();
+      if (!anAxis.IsNull() && !aRefDir.IsNull()) {
+        Handle(TColStd_HArray1OfReal) aCoords;
+        aCoords = anAxis->DirectionRatios();
+        gp_Dir aXDir(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3));
+        aCoords = aRefDir->DirectionRatios();
+        gp_Dir aYDir(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3));
+        aPlaneAxes.SetDirection(aXDir.Crossed(aYDir));
+        aPlaneAxes.SetYDirection(aYDir);
+        isHasPlane = Standard_True;
+      }
+    }
+  }
+
+  // set plane axes to XCAF
+  if (isHasPlane) {
+    if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DimensionObject))) {
+      Handle(XCAFDimTolObjects_DimensionObject) anObj =
+        Handle(XCAFDimTolObjects_DimensionObject)::DownCast(theDimObject);
+      anObj->SetPlane(aPlaneAxes);
+    }
+    else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DatumObject))) {
+      Handle(XCAFDimTolObjects_DatumObject) anObj =
+        Handle(XCAFDimTolObjects_DatumObject)::DownCast(theDimObject);
+      anObj->SetPlane(aPlaneAxes);
+    }
+    else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_GeomToleranceObject))) {
+      Handle(XCAFDimTolObjects_GeomToleranceObject) anObj =
+        Handle(XCAFDimTolObjects_GeomToleranceObject)::DownCast(theDimObject);
+      anObj->SetPlane(aPlaneAxes);
+    }
+  }
+
+  // Retrieve connecton point
+  // Take AnnotationCurveOccurence (other types are not processed now)
+  Handle(StepVisual_AnnotationCurveOccurrence) anACO;
+  if (aDMIAE->IsKind(STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence))) {
+    anACO = Handle(StepVisual_AnnotationCurveOccurrence)::DownCast(aDMIAE);
+  }
+  else if (aDMIAE->IsKind(STANDARD_TYPE(StepVisual_DraughtingCallout))) {
+    Handle(StepVisual_DraughtingCallout) aDCallout =
+      Handle(StepVisual_DraughtingCallout)::DownCast(aDMIAE);
+    for (Standard_Integer i = 1; i <= aDCallout->NbContents() && anACO.IsNull(); i++) {
+      anACO = aDCallout->ContentsValue(i).AnnotationCurveOccurrence();
+    }
+  }
+  if (anACO.IsNull())
+    return;
+
+  // Take the first polyline (it is not a rule, but temporary solution)
+  Handle(StepRepr_RepresentationItem) aCurveItem = anACO->Item();
+  Handle(StepGeom_Polyline) aCurve;
+  // for Dimensional_Location (and its subtypes)
+  Standard_Boolean isDimLoc = theGDT->IsKind(STANDARD_TYPE(StepShape_DimensionalLocation));
+  Handle(StepGeom_Polyline) aCurve2;
+  if (aCurveItem->IsKind(STANDARD_TYPE(StepShape_GeometricCurveSet))) {
+    Handle(StepShape_GeometricCurveSet) aCurveSet =
+      Handle(StepShape_GeometricCurveSet)::DownCast(aCurveItem);
+    Standard_Integer i = 1;
+    for ( ; i <= aCurveSet->NbElements() && aCurve.IsNull(); i++) {
+      aCurve = Handle(StepGeom_Polyline)::DownCast(aCurveSet->ElementsValue(i).Curve());
+    }
+    if (isDimLoc) {
+      for ( ; i <= aCurveSet->NbElements() && aCurve2.IsNull(); i++) {
+        aCurve2 = Handle(StepGeom_Polyline)::DownCast(aCurveSet->ElementsValue(i).Curve());
+      }
+    }
+  }
+  else {
+    aCurve = Handle(StepGeom_Polyline)::DownCast(aCurveItem);
+  }
+  if (aCurve.IsNull() || aCurve->NbPoints() < 1)
+    return;
+
+  isDimLoc = isDimLoc && !aCurve2.IsNull() && aCurve2->NbPoints() > 0;
+
+  // Take the first point of polyline (it is not a rule, but temporary solution)
+  Handle(StepGeom_CartesianPoint) aPnt = aCurve->PointsValue(1);
+  Handle(TColStd_HArray1OfReal) aCoords = aPnt->Coordinates();
+  gp_Pnt aPoint(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3));
+
+  gp_Pnt aPoint2;
+  if (isDimLoc) {
+    Handle(StepGeom_CartesianPoint) aPnt = aCurve2->PointsValue(1);
+    Handle(TColStd_HArray1OfReal) aCoords = aPnt->Coordinates();
+    aPoint2.SetCoord(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3));
+  }
+
+  // set point to XCAF
+  if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DimensionObject))) {
+    Handle(XCAFDimTolObjects_DimensionObject) anObj = 
+      Handle(XCAFDimTolObjects_DimensionObject)::DownCast(theDimObject);
+    Handle(TColgp_HArray1OfPnt) aPnts;
+    if (isDimLoc)
+      aPnts = new TColgp_HArray1OfPnt(1, 2);
+    else
+      aPnts = new TColgp_HArray1OfPnt(1, 1);
+    aPnts->SetValue(1, aPoint);
+    if (isDimLoc)
+      aPnts->SetValue(2, aPoint2);
+    anObj->SetPoints(aPnts);
+  }
+  else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DatumObject))) {
+    Handle(XCAFDimTolObjects_DatumObject) anObj =
+      Handle(XCAFDimTolObjects_DatumObject)::DownCast(theDimObject);
+    anObj->SetPoint(aPoint);
+  }
+  else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_GeomToleranceObject))) {
+    Handle(XCAFDimTolObjects_GeomToleranceObject) anObj =
+      Handle(XCAFDimTolObjects_GeomToleranceObject)::DownCast(theDimObject);
+    anObj->SetPoint(aPoint);
+  }
+}
 
 //=======================================================================
 //function : ReadDatums
@@ -1701,7 +1876,7 @@ static Standard_Boolean GetMassConversionFactor(Handle(StepBasic_NamedUnit)& NU,
 static Standard_Boolean ReadDatums(const Handle(XCAFDoc_ShapeTool) &STool,
                                    const Handle(XCAFDoc_DimTolTool) &DGTTool,
                                    const Interface_Graph &graph,
-                                   Handle(Transfer_TransientProcess) &TP,
+                                   const Handle(Transfer_TransientProcess) &TP,
                                    const TDF_Label TolerL,
                                    const Handle(StepDimTol_GeometricToleranceWithDatumReference) GTWDR)
 {
@@ -1985,8 +2160,10 @@ static Standard_Boolean setDatumToXCAF(const Handle(StepDimTol_Datum)& theDat,
         aDatObj->SetModifierWithValue(aXCAFModifWithVal, aModifValue);
       aDGTTool->SetDatumToGeomTol(aDatL, theGDTL);
     }
-    if(!aDatObj.IsNull())
+    if(!aDatObj.IsNull()) {
+      ReadGDTPosition(aGraph, aSAR->RelatingShapeAspect(), aDatObj);
       aDat->SetObject(aDatObj);
+    }
   }
   return !aDat.IsNull();
 }
@@ -2949,6 +3126,8 @@ static void setDimObjectToXCAF(const Handle(Standard_Transient)& theEnt,
   }
   aDimObj->SetType(aType);
 
+  ReadGDTPosition(aGraph, theEnt, aDimObj);
+
   if(!aDimObj.IsNull())
   {
     Handle(XCAFDoc_Dimension) aDim;
@@ -3219,6 +3398,7 @@ static void setGeomTolObjectToXCAF(const Handle(Standard_Transient)& theEnt,
     aTolObj->SetMaxValueModifier(aVal);
   }
 
+  ReadGDTPosition(aGraph, theEnt, aTolObj);
   aGTol->SetObject(aTolObj);
 }
 
index 28e85604390f239acd56861b972e987c722892a0..21ccf97423fd88a63e63d17206482bfc199fd313 100644 (file)
@@ -725,8 +725,12 @@ static Standard_CString schemaAP203    = "CONFIG_CONTROL_DESIGN";
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
 #include <StepDimTol_GeoTolAndGeoTolWthMaxTol.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
 
 
 static int init = 0;
@@ -745,7 +749,7 @@ StepAP214_Protocol::StepAP214_Protocol ()
   types.Bind (STANDARD_TYPE(StepBasic_Address), 1);
   types.Bind (STANDARD_TYPE(StepShape_AdvancedBrepShapeRepresentation), 2);
   types.Bind (STANDARD_TYPE(StepShape_AdvancedFace), 3);
-//  types.Bind (STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence), 4);
+  types.Bind (STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence), 4);
 //  types.Bind (STANDARD_TYPE(StepVisual_AnnotationFillArea), 5);
 //  types.Bind (STANDARD_TYPE(StepVisual_AnnotationFillAreaOccurrence), 6);
   types.Bind (STANDARD_TYPE(StepVisual_AnnotationOccurrence), 7);
@@ -845,7 +849,7 @@ StepAP214_Protocol::StepAP214_Protocol ()
   types.Bind (STANDARD_TYPE(StepBasic_DimensionalExponents), 104);
   types.Bind (STANDARD_TYPE(StepGeom_Direction), 105);
   types.Bind (STANDARD_TYPE(StepVisual_DraughtingAnnotationOccurrence), 106);
-//  types.Bind (STANDARD_TYPE(StepVisual_DraughtingCallout), 107);
+  types.Bind (STANDARD_TYPE(StepVisual_DraughtingCallout), 107);
   types.Bind (STANDARD_TYPE(StepVisual_DraughtingPreDefinedColour), 108);
   types.Bind (STANDARD_TYPE(StepVisual_DraughtingPreDefinedCurveFont), 109);
 //  types.Bind (STANDARD_TYPE(StepVisual_DraughtingSubfigureRepresentation), 110);
@@ -1417,6 +1421,8 @@ StepAP214_Protocol::StepAP214_Protocol ()
   types.Bind (STANDARD_TYPE(StepRepr_IntegerRepresentationItem), 700);
   types.Bind (STANDARD_TYPE(StepRepr_ValueRepresentationItem), 701);
   types.Bind (STANDARD_TYPE(StepRepr_FeatureForDatumTargetRelationship), 702);
+  types.Bind (STANDARD_TYPE(StepAP242_DraughtingModelItemAssociation), 703);
+  types.Bind (STANDARD_TYPE(StepVisual_AnnotationPlane), 704);
   types.Bind (STANDARD_TYPE(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol), 705);
   types.Bind (STANDARD_TYPE(StepDimTol_GeoTolAndGeoTolWthMaxTol), 706);
 }
index fafc0face4c0c5d988a56f848e984193273088ff..9a10cbbc3080741f156099ffd901edf5d182a666 100644 (file)
@@ -1,3 +1,5 @@
+StepAP242_DraughtingModelItemAssociation.cxx
+StepAP242_DraughtingModelItemAssociation.hxx
 StepAP242_GeometricItemSpecificUsage.cxx
 StepAP242_GeometricItemSpecificUsage.hxx
 StepAP242_IdAttribute.cxx
diff --git a/src/StepAP242/StepAP242_DraughtingModelItemAssociation.cxx b/src/StepAP242/StepAP242_DraughtingModelItemAssociation.cxx
new file mode 100644 (file)
index 0000000..582378e
--- /dev/null
@@ -0,0 +1,20 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepAP242_DraughtingModelItemAssociation,StepAP242_ItemIdentifiedRepresentationUsage)
+
+StepAP242_DraughtingModelItemAssociation::StepAP242_DraughtingModelItemAssociation ()    {  }
diff --git a/src/StepAP242/StepAP242_DraughtingModelItemAssociation.hxx b/src/StepAP242/StepAP242_DraughtingModelItemAssociation.hxx
new file mode 100644 (file)
index 0000000..5e13b66
--- /dev/null
@@ -0,0 +1,37 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepAP242_DraughtingModelItemAssociation_HeaderFile
+#define _StepAP242_DraughtingModelItemAssociation_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <StepAP242_ItemIdentifiedRepresentationUsage.hxx>
+
+class StepAP242_DraughtingModelItemAssociation;
+DEFINE_STANDARD_HANDLE(StepAP242_DraughtingModelItemAssociation, StepAP242_ItemIdentifiedRepresentationUsage)
+//! Added for Dimensional Tolerances
+class StepAP242_DraughtingModelItemAssociation : public StepAP242_ItemIdentifiedRepresentationUsage
+{
+
+public:
+  
+  Standard_EXPORT StepAP242_DraughtingModelItemAssociation();
+
+  DEFINE_STANDARD_RTTIEXT(StepAP242_DraughtingModelItemAssociation, StepAP242_ItemIdentifiedRepresentationUsage)
+
+};
+#endif // _StepAP242_DraughtingModelItemAssociation_HeaderFile
index 49ddde966a1b030ad98914dc53a48423ea4ddb39..37f796136b93ffdaa4c8e6959eb7b16f364c37a0 100644 (file)
@@ -55,7 +55,7 @@ public:
   }
   
   //! Set field DefiningTolerance
-  inline void SetModifiers (const Handle(StepDimTol_HArray1OfToleranceZoneTarget) &theDefiningTolerance)
+  inline void SetDefiningTolerance (const Handle(StepDimTol_HArray1OfToleranceZoneTarget) &theDefiningTolerance)
   {
     myDefiningTolerance = theDefiningTolerance;
   }
index 042a91b1048ae90e1d658f999a6a2c95b83b218f..510c28da5644ecc5dc03acf0bb7bf2bc27475ac5 100644 (file)
@@ -1,5 +1,11 @@
+StepVisual_AnnotationCurveOccurrence.cxx
+StepVisual_AnnotationCurveOccurrence.hxx
 StepVisual_AnnotationOccurrence.cxx
 StepVisual_AnnotationOccurrence.hxx
+StepVisual_AnnotationPlane.cxx
+StepVisual_AnnotationPlane.hxx
+StepVisual_AnnotationPlaneElement.cxx
+StepVisual_AnnotationPlaneElement.hxx
 StepVisual_AnnotationText.cxx
 StepVisual_AnnotationText.hxx
 StepVisual_AnnotationTextOccurrence.cxx
@@ -8,9 +14,11 @@ StepVisual_AreaInSet.cxx
 StepVisual_AreaInSet.hxx
 StepVisual_AreaOrView.cxx
 StepVisual_AreaOrView.hxx
+StepVisual_Array1OfAnnotationPlaneElement.hxx
 StepVisual_Array1OfBoxCharacteristicSelect.hxx
 StepVisual_Array1OfCurveStyleFontPattern.hxx
 StepVisual_Array1OfDirectionCountSelect.hxx
+StepVisual_Array1OfDraughtingCalloutElement.hxx
 StepVisual_Array1OfFillStyleSelect.hxx
 StepVisual_Array1OfInvisibleItem.hxx
 StepVisual_Array1OfLayeredItem.hxx
@@ -64,6 +72,10 @@ StepVisual_DirectionCountSelect.cxx
 StepVisual_DirectionCountSelect.hxx
 StepVisual_DraughtingAnnotationOccurrence.cxx
 StepVisual_DraughtingAnnotationOccurrence.hxx
+StepVisual_DraughtingCallout.cxx
+StepVisual_DraughtingCallout.hxx
+StepVisual_DraughtingCalloutElement.cxx
+StepVisual_DraughtingCalloutElement.hxx
 StepVisual_DraughtingModel.cxx
 StepVisual_DraughtingModel.hxx
 StepVisual_DraughtingPreDefinedColour.cxx
@@ -82,9 +94,11 @@ StepVisual_FillStyleSelect.cxx
 StepVisual_FillStyleSelect.hxx
 StepVisual_FontSelect.cxx
 StepVisual_FontSelect.hxx
+StepVisual_HArray1OfAnnotationPlaneElement.hxx
 StepVisual_HArray1OfBoxCharacteristicSelect.hxx
 StepVisual_HArray1OfCurveStyleFontPattern.hxx
 StepVisual_HArray1OfDirectionCountSelect.hxx
+StepVisual_HArray1OfDraughtingCalloutElement.hxx
 StepVisual_HArray1OfFillStyleSelect.hxx
 StepVisual_HArray1OfInvisibleItem.hxx
 StepVisual_HArray1OfLayeredItem.hxx
diff --git a/src/StepVisual/StepVisual_AnnotationCurveOccurrence.cxx b/src/StepVisual/StepVisual_AnnotationCurveOccurrence.cxx
new file mode 100644 (file)
index 0000000..79428a8
--- /dev/null
@@ -0,0 +1,21 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Standard_Type.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepVisual_AnnotationCurveOccurrence,StepVisual_StyledItem)
+
+StepVisual_AnnotationCurveOccurrence::StepVisual_AnnotationCurveOccurrence ()  {}
diff --git a/src/StepVisual/StepVisual_AnnotationCurveOccurrence.hxx b/src/StepVisual/StepVisual_AnnotationCurveOccurrence.hxx
new file mode 100644 (file)
index 0000000..3223156
--- /dev/null
@@ -0,0 +1,36 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_AnnotationCurveOccurrence_HeaderFile
+#define _StepVisual_AnnotationCurveOccurrence_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <StepVisual_StyledItem.hxx>
+
+class StepVisual_AnnotationCurveOccurrence;
+DEFINE_STANDARD_HANDLE(StepVisual_AnnotationCurveOccurrence, StepVisual_StyledItem)
+
+class StepVisual_AnnotationCurveOccurrence : public StepVisual_StyledItem
+{
+public:
+
+  //! Returns a AnnotationCurveOccurrence
+  Standard_EXPORT StepVisual_AnnotationCurveOccurrence();
+
+  DEFINE_STANDARD_RTTIEXT(StepVisual_AnnotationCurveOccurrence,StepVisual_StyledItem)
+};
+#endif // _StepVisual_AnnotationCurveOccurrence_HeaderFile
diff --git a/src/StepVisual/StepVisual_AnnotationPlane.cxx b/src/StepVisual/StepVisual_AnnotationPlane.cxx
new file mode 100644 (file)
index 0000000..65e9245
--- /dev/null
@@ -0,0 +1,38 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Standard_Type.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepVisual_AnnotationPlane,StepVisual_AnnotationOccurrence)
+
+//=======================================================================
+//function : StepVisual_AnnotationPlane
+//purpose  : 
+//=======================================================================
+StepVisual_AnnotationPlane::StepVisual_AnnotationPlane ()  {}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+void StepVisual_AnnotationPlane::Init (const Handle(TCollection_HAsciiString)& theName,
+                                       const Handle(StepVisual_HArray1OfPresentationStyleAssignment)& theStyles,
+                                       const Handle(StepRepr_RepresentationItem)& theItem,
+                                       const Handle(StepVisual_HArray1OfAnnotationPlaneElement)& theElements)
+{
+  StepVisual_AnnotationOccurrence::Init(theName, theStyles, theItem);
+  myElements = theElements;
+}
diff --git a/src/StepVisual/StepVisual_AnnotationPlane.hxx b/src/StepVisual/StepVisual_AnnotationPlane.hxx
new file mode 100644 (file)
index 0000000..b969509
--- /dev/null
@@ -0,0 +1,76 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_AnnotationPlane_HeaderFile
+#define _StepVisual_AnnotationPlane_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <StepVisual_AnnotationOccurrence.hxx>
+#include <StepVisual_HArray1OfAnnotationPlaneElement.hxx>
+
+class StepVisual_AnnotationPlane;
+DEFINE_STANDARD_HANDLE(StepVisual_AnnotationPlane, StepVisual_AnnotationOccurrence)
+
+class StepVisual_AnnotationPlane : public StepVisual_AnnotationOccurrence
+{
+public:
+  
+  //! Returns a AnnotationPlane
+  Standard_EXPORT StepVisual_AnnotationPlane();
+
+  Standard_EXPORT void Init (const Handle(TCollection_HAsciiString)& theName,
+                             const Handle(StepVisual_HArray1OfPresentationStyleAssignment)& theStyles,
+                             const Handle(StepRepr_RepresentationItem)& theItem,
+                             const Handle(StepVisual_HArray1OfAnnotationPlaneElement)& theElements);
+  
+    //! Returns field Elements
+  inline Handle(StepVisual_HArray1OfAnnotationPlaneElement) Elements () const
+  {
+    return myElements;
+  }
+  
+  //! Set field Elements
+  inline void SetElements (const Handle(StepVisual_HArray1OfAnnotationPlaneElement) &theElements)
+  {
+    myElements = theElements;
+  }
+  
+  //! Returns number of Elements
+  inline Standard_Integer NbElements () const
+  {  
+    return (myElements.IsNull() ? 0 : myElements->Length());
+  }
+  
+  //! Returns Elements with the given number
+  inline StepVisual_AnnotationPlaneElement ElementsValue(const Standard_Integer theNum) const
+  {  
+    return myElements->Value(theNum);
+  }
+  
+  //! Sets Elements with given number
+  inline void SetElementsValue(const Standard_Integer theNum, const StepVisual_AnnotationPlaneElement& theItem)
+  {  
+    myElements->SetValue (theNum, theItem);
+  }
+  
+  DEFINE_STANDARD_RTTIEXT(StepVisual_AnnotationPlane,StepVisual_AnnotationOccurrence)
+  
+private:
+
+  Handle(StepVisual_HArray1OfAnnotationPlaneElement) myElements;
+};
+#endif // _StepVisual_AnnotationPlane_HeaderFile
diff --git a/src/StepVisual/StepVisual_AnnotationPlaneElement.cxx b/src/StepVisual/StepVisual_AnnotationPlaneElement.cxx
new file mode 100644 (file)
index 0000000..88bc13f
--- /dev/null
@@ -0,0 +1,45 @@
+// Created on: 2015-07-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <StepVisual_AnnotationPlaneElement.hxx>
+#include <Interface_Macros.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
+#include <StepVisual_StyledItem.hxx>
+
+//=======================================================================
+//function : StepVisual_AnnotationPlaneElement
+//purpose  : 
+//=======================================================================
+
+StepVisual_AnnotationPlaneElement::StepVisual_AnnotationPlaneElement () {  }
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepVisual_AnnotationPlaneElement::CaseNum(const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepVisual_DraughtingCallout))) return 1;
+  if (ent->IsKind(STANDARD_TYPE(StepVisual_StyledItem))) return 2;
+  return 0;
+}
+
+Handle(StepVisual_DraughtingCallout) StepVisual_AnnotationPlaneElement::DraughtingCallout() const
+{  return GetCasted(StepVisual_DraughtingCallout,Value());  }
+
+Handle(StepVisual_StyledItem) StepVisual_AnnotationPlaneElement::StyledItem() const
+{  return GetCasted(StepVisual_StyledItem,Value());  }
diff --git a/src/StepVisual/StepVisual_AnnotationPlaneElement.hxx b/src/StepVisual/StepVisual_AnnotationPlaneElement.hxx
new file mode 100644 (file)
index 0000000..85c0787
--- /dev/null
@@ -0,0 +1,50 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_AnnotationPlaneElement_HeaderFile
+#define _StepVisual_AnnotationPlaneElement_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+class Standard_Transient;
+class StepVisual_DraughtingCallout;
+class StepVisual_StyledItem;
+
+class StepVisual_AnnotationPlaneElement  : public StepData_SelectType
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+  
+  //! Returns a AnnotationPlaneElement select type
+  Standard_EXPORT StepVisual_AnnotationPlaneElement();
+  
+  //! Recognizes a IdAttributeSelect Kind Entity that is :
+  //! 1 -> DraughtingCallout
+  //! 2 -> StyledItem
+  //! 0 else
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent)  const;
+  
+  //! returns Value as a DraughtingCallout (Null if another type)
+  Standard_EXPORT Handle(StepVisual_DraughtingCallout) DraughtingCallout()  const;
+  
+  //! returns Value as a StyledItem (Null if another type)
+  Standard_EXPORT Handle(StepVisual_StyledItem) StyledItem()  const;
+};
+#endif // StepVisual_AnnotationPlaneElement
diff --git a/src/StepVisual/StepVisual_Array1OfAnnotationPlaneElement.hxx b/src/StepVisual/StepVisual_Array1OfAnnotationPlaneElement.hxx
new file mode 100644 (file)
index 0000000..a45ad6c
--- /dev/null
@@ -0,0 +1,23 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_Array1OfAnnotationPlaneElement_HeaderFile
+#define _StepVisual_Array1OfAnnotationPlaneElement_HeaderFile
+
+#include <StepVisual_AnnotationPlaneElement.hxx>
+#include <NCollection_Array1.hxx>
+
+typedef NCollection_Array1<StepVisual_AnnotationPlaneElement> StepVisual_Array1OfAnnotationPlaneElement;
+#endif // _StepVisual_Array1OfAnnotationPlaneElement_HeaderFile
diff --git a/src/StepVisual/StepVisual_Array1OfDraughtingCalloutElement.hxx b/src/StepVisual/StepVisual_Array1OfDraughtingCalloutElement.hxx
new file mode 100644 (file)
index 0000000..8486478
--- /dev/null
@@ -0,0 +1,23 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_Array1OfDraughtingCalloutElement_HeaderFile
+#define _StepVisual_Array1OfDraughtingCalloutElement_HeaderFile
+
+#include <StepVisual_DraughtingCalloutElement.hxx>
+#include <NCollection_Array1.hxx>
+
+typedef NCollection_Array1<StepVisual_DraughtingCalloutElement> StepVisual_Array1OfDraughtingCalloutElement;
+#endif // _StepVisual_Array1OfDraughtingCalloutElement_HeaderFile
diff --git a/src/StepVisual/StepVisual_DraughtingCallout.cxx b/src/StepVisual/StepVisual_DraughtingCallout.cxx
new file mode 100644 (file)
index 0000000..78af2e3
--- /dev/null
@@ -0,0 +1,36 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Standard_Type.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(StepVisual_DraughtingCallout,StepGeom_GeometricRepresentationItem)
+
+//=======================================================================
+//function : StepVisual_DraughtingCallout
+//purpose  : 
+//=======================================================================
+StepVisual_DraughtingCallout::StepVisual_DraughtingCallout ()  {}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+void StepVisual_DraughtingCallout::Init (const Handle(TCollection_HAsciiString)& theName,
+                                         const Handle(StepVisual_HArray1OfDraughtingCalloutElement)& theContents)
+{
+  StepGeom_GeometricRepresentationItem::Init(theName);
+  myContents = theContents;
+}
diff --git a/src/StepVisual/StepVisual_DraughtingCallout.hxx b/src/StepVisual/StepVisual_DraughtingCallout.hxx
new file mode 100644 (file)
index 0000000..bbe745b
--- /dev/null
@@ -0,0 +1,77 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_DraughtingCallout_HeaderFile
+#define _StepVisual_DraughtingCallout_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <StepGeom_GeometricRepresentationItem.hxx>
+#include <StepVisual_HArray1OfDraughtingCalloutElement.hxx>
+
+
+class StepVisual_DraughtingCallout;
+DEFINE_STANDARD_HANDLE(StepVisual_DraughtingCallout, StepGeom_GeometricRepresentationItem)
+
+
+class StepVisual_DraughtingCallout : public StepGeom_GeometricRepresentationItem
+{
+public:
+
+  //! Returns a DraughtingCallout
+  Standard_EXPORT StepVisual_DraughtingCallout();
+
+  //! Init
+  Standard_EXPORT void StepVisual_DraughtingCallout::Init (const Handle(TCollection_HAsciiString)& theName,
+                                                           const Handle(StepVisual_HArray1OfDraughtingCalloutElement)& theContents);
+  
+  //! Returns field Contents
+  inline Handle(StepVisual_HArray1OfDraughtingCalloutElement) Contents () const
+  {
+    return myContents;
+  }
+  
+  //! Set field Contents
+  inline void SetContents (const Handle(StepVisual_HArray1OfDraughtingCalloutElement) &theContents)
+  {
+    myContents = theContents;
+  }
+  
+  //! Returns number of Contents
+  inline Standard_Integer NbContents () const
+  {  
+    return (myContents.IsNull() ? 0 : myContents->Length());
+  }
+  
+  //! Returns Contents with the given number
+  inline StepVisual_DraughtingCalloutElement ContentsValue(const Standard_Integer theNum) const
+  {
+    return myContents->Value(theNum);
+  }
+  
+  //! Sets Contents with given number
+  inline void SetContentsValue(const Standard_Integer theNum, const StepVisual_DraughtingCalloutElement& theItem)
+  {  
+    myContents->SetValue (theNum, theItem);
+  }
+
+  
+  DEFINE_STANDARD_RTTIEXT(StepVisual_DraughtingCallout,StepGeom_GeometricRepresentationItem)
+  
+private:
+  Handle(StepVisual_HArray1OfDraughtingCalloutElement) myContents;
+};
+#endif // _StepVisual_DraughtingCallout_HeaderFile
diff --git a/src/StepVisual/StepVisual_DraughtingCalloutElement.cxx b/src/StepVisual/StepVisual_DraughtingCalloutElement.cxx
new file mode 100644 (file)
index 0000000..c4da000
--- /dev/null
@@ -0,0 +1,40 @@
+// Created on: 2015-07-10
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <StepVisual_DraughtingCalloutElement.hxx>
+#include <Interface_Macros.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+
+//=======================================================================
+//function : StepVisual_DraughtingCalloutElement
+//purpose  : 
+//=======================================================================
+
+StepVisual_DraughtingCalloutElement::StepVisual_DraughtingCalloutElement () {  }
+
+//=======================================================================
+//function : CaseNum
+//purpose  : 
+//=======================================================================
+
+Standard_Integer StepVisual_DraughtingCalloutElement::CaseNum(const Handle(Standard_Transient)& ent) const
+{
+  if (ent.IsNull()) return 0;
+  if (ent->IsKind(STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence))) return 1;
+  return 0;
+}
+
+Handle(StepVisual_AnnotationCurveOccurrence) StepVisual_DraughtingCalloutElement::AnnotationCurveOccurrence() const
+{  return GetCasted(StepVisual_AnnotationCurveOccurrence,Value());  }
diff --git a/src/StepVisual/StepVisual_DraughtingCalloutElement.hxx b/src/StepVisual/StepVisual_DraughtingCalloutElement.hxx
new file mode 100644 (file)
index 0000000..90fac0c
--- /dev/null
@@ -0,0 +1,45 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_DraughtingCalloutElement_HeaderFile
+#define _StepVisual_DraughtingCalloutElement_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <StepData_SelectType.hxx>
+#include <Standard_Integer.hxx>
+class Standard_Transient;
+class StepVisual_AnnotationCurveOccurrence;
+
+class StepVisual_DraughtingCalloutElement  : public StepData_SelectType
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+  
+  //! Returns a DraughtingCalloutElement select type
+  Standard_EXPORT StepVisual_DraughtingCalloutElement();
+  
+  //! Recognizes a IdAttributeSelect Kind Entity that is :
+  //! 1 -> AnnotationCurveOccurrence
+  //! 0 else
+  Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent)  const;
+  
+  //! returns Value as a AnnotationCurveOccurrence (Null if another type)
+  Standard_EXPORT Handle(StepVisual_AnnotationCurveOccurrence) AnnotationCurveOccurrence()  const;
+};
+#endif // StepVisual_DraughtingCalloutElement
diff --git a/src/StepVisual/StepVisual_HArray1OfAnnotationPlaneElement.hxx b/src/StepVisual/StepVisual_HArray1OfAnnotationPlaneElement.hxx
new file mode 100644 (file)
index 0000000..543bff2
--- /dev/null
@@ -0,0 +1,24 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_HArray1OfAnnotationPlaneElement_HeaderFile
+#define _StepVisual_HArray1OfAnnotationPlaneElement_HeaderFile
+
+#include <StepVisual_AnnotationPlaneElement.hxx>
+#include <StepVisual_Array1OfAnnotationPlaneElement.hxx>
+#include <NCollection_DefineHArray1.hxx>
+
+DEFINE_HARRAY1(StepVisual_HArray1OfAnnotationPlaneElement, StepVisual_Array1OfAnnotationPlaneElement)
+#endif // _StepVisual_HArray1OfAnnotationPlaneElement_HeaderFile
diff --git a/src/StepVisual/StepVisual_HArray1OfDraughtingCalloutElement.hxx b/src/StepVisual/StepVisual_HArray1OfDraughtingCalloutElement.hxx
new file mode 100644 (file)
index 0000000..f8c23f4
--- /dev/null
@@ -0,0 +1,24 @@
+// Created on: 2015-10-29
+// Created by: Irina KRYLOVA
+// Copyright (c) 2015 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _StepVisual_HArray1OfDraughtingCalloutElement_HeaderFile
+#define _StepVisual_HArray1OfDraughtingCalloutElement_HeaderFile
+
+#include <StepVisual_DraughtingCalloutElement.hxx>
+#include <StepVisual_Array1OfDraughtingCalloutElement.hxx>
+#include <NCollection_DefineHArray1.hxx>
+
+DEFINE_HARRAY1(StepVisual_HArray1OfDraughtingCalloutElement, StepVisual_Array1OfDraughtingCalloutElement)
+#endif // _StepVisual_HArray1OfDraughtingCalloutElement_HeaderFile
index 33ba5afcc270c41b10738f43f96fcf83c14fd051..883c096b1b7d45b24d56520444367e534ab44817 100644 (file)
@@ -24,6 +24,8 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_DatumObject,Standard_Transient)
 XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject()
 {
   myIsDTarget = Standard_False;
+  myHasPlane = Standard_False;
+  myHasPnt = Standard_False;
 }
 
 //=======================================================================
@@ -41,6 +43,10 @@ XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject(const Handle(XCAFDi
   myIsDTarget = theObj->myIsDTarget;
   myAxis = theObj->myAxis;
   myDTargetType = theObj->myDTargetType;
+  myPlane = theObj->myPlane;
+  myPnt= theObj->myPnt;
+  myHasPlane = theObj->myHasPlane;
+  myHasPnt = theObj->myHasPnt;
 }
 
 //=======================================================================
index e3b161499ab197540306eb95f0ed08d0059b7779..189b15071e971a864c106e810d31333771f141d1 100644 (file)
@@ -91,6 +91,25 @@ public:
 
   Standard_EXPORT void SetDatumTargetNumber (const Standard_Integer theNumber);
 
+  void SetPlane (const gp_Ax2& thePlane)
+  {
+    myPlane = thePlane;
+    myHasPlane = Standard_True;
+  }
+
+  const gp_Ax2& GetPlane() const { return myPlane; }
+
+  void SetPoint (const gp_Pnt& thePnt)
+  {
+    myPnt = thePnt;
+    myHasPnt = Standard_True;
+  }
+
+  const gp_Pnt& GetPoint() const { return myPnt; }
+
+  Standard_Boolean HasPlane() const { return myHasPlane; }
+
+  Standard_Boolean HasPoint() const { return myHasPnt; }
 
   DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_DatumObject,Standard_Transient)
 
@@ -108,6 +127,10 @@ private:
   Standard_Real myLength;
   Standard_Real myWidth;
   Standard_Integer myDatumTargetNumber;
+  gp_Ax2 myPlane;
+  gp_Pnt myPnt;
+  Standard_Boolean myHasPlane;
+  Standard_Boolean myHasPnt;
 
 };
 
index 1ff4f502b908ac12e2745b1f9f6e9d8138a67f6a..93648e751f9667bd01584173e3ece609736ffd76 100644 (file)
@@ -26,6 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_DimensionObject,Standard_Transient)
 
 XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject()
 {
+  myHasPlane = Standard_False;
 }
 
 //=======================================================================
@@ -47,6 +48,8 @@ XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject(const Handl
   myPath = theObj->myPath;
   myDir = theObj->myDir;
   myPnts = theObj->myPnts;
+  myHasPlane = theObj->myHasPlane;
+  myPlane = theObj->myPlane;
 }
 
 //=======================================================================
index 9cbb866e621809613152d9f2d6a412ed3b384fd1..bdd2ebfac26d0766b8e583adc02fe09a7bc8b8b4 100644 (file)
@@ -32,6 +32,7 @@
 #include <XCAFDimTolObjects_DimensionModifiersSequence.hxx>
 #include <TopoDS_Edge.hxx>
 #include <gp_Dir.hxx>
+#include <gp_Ax2.hxx>
 #include <TColgp_HArray1OfPnt.hxx>
 #include <Standard_Transient.hxx>
 #include <Standard_Real.hxx>
@@ -116,6 +117,17 @@ public:
   
   Standard_EXPORT void SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts);
 
+  void SetPlane (const gp_Ax2& thePlane)
+  {
+    myPlane    = thePlane;
+    myHasPlane = Standard_True;
+  }
+
+  const gp_Ax2& GetPlane() const { return myPlane; }
+
+  Standard_Boolean HasPlane() const { return myHasPlane; }
+
+  Standard_Boolean HasPoints() const { !myPnts.IsNull() && myPnts->Length() > 0; }
 
   DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_DimensionObject,Standard_Transient)
 
@@ -133,6 +145,8 @@ private:
   TopoDS_Edge myPath;
   gp_Dir myDir;
   Handle(TColgp_HArray1OfPnt) myPnts;
+  gp_Ax2 myPlane;
+  Standard_Boolean myHasPlane;
 
 };
 
index 58aae26e2b86aa3076322fd3af33c7c2e0f17abc..ed68daa2f0d3fe48c2081d27a98931612a491545 100644 (file)
@@ -23,6 +23,8 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_GeomToleranceObject,Standard_Transi
 XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject()
 {
   myHasAxis = Standard_False;
+  myHasPlane = Standard_False;
+  myHasPnt = Standard_False;
 }
 
 //=======================================================================
@@ -40,8 +42,12 @@ XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject(con
   myValueOfZoneModif = theObj->myValueOfZoneModif;
   myModifiers = theObj->myModifiers;
   myMaxValueModif = theObj->myMaxValueModif;
-  myAxis = theObj->GetAxis();
-  myHasAxis = Standard_False;
+  myAxis = theObj->myAxis;
+  myHasAxis = theObj->myHasAxis;
+  myPlane = theObj->myPlane;
+  myPnt= theObj->myPnt;
+  myHasPlane = theObj->myHasPlane;
+  myHasPnt = theObj->myHasPnt;
 }
 
 //=======================================================================
@@ -243,4 +249,4 @@ gp_Ax2 XCAFDimTolObjects_GeomToleranceObject::GetAxis()  const
 Standard_Boolean XCAFDimTolObjects_GeomToleranceObject::HasAxis () const 
 {
   return myHasAxis;
-}
\ No newline at end of file
+}
index c141b1f992763f92850708129260c2b6516c1933..8baaa71a8147fa1db8152afbf88fce932eacd5fb 100644 (file)
@@ -84,6 +84,26 @@ public:
    
   Standard_EXPORT Standard_Boolean HasAxis () const;
 
+  void SetPlane (const gp_Ax2& thePlane)
+  {
+    myPlane = thePlane;
+    myHasPlane = Standard_True;
+  }
+
+  const gp_Ax2& GetPlane() const { return myPlane; }
+
+  void SetPoint (const gp_Pnt& thePnt)
+  {
+    myPnt = thePnt;
+    myHasPnt = Standard_True;
+  }
+
+  const gp_Pnt& GetPoint() const { return myPnt; }
+
+  Standard_Boolean HasPlane() const { return myHasPlane; }
+
+  Standard_Boolean HasPoint() const { return myHasPnt; }
+
   DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_GeomToleranceObject,Standard_Transient)
 
 private: 
@@ -98,6 +118,11 @@ private:
   Standard_Real myMaxValueModif;
   gp_Ax2 myAxis;
   Standard_Boolean myHasAxis;
+  gp_Ax2 myPlane;
+  gp_Pnt myPnt;
+  Standard_Boolean myHasPlane;
+  Standard_Boolean myHasPnt;
+
 };
 
 
index 774e284d0528dd06ba895e2026f53ae3caf32c8a..90609317daf53fa8063ab81bbcfc44a62c57b668 100644 (file)
@@ -48,6 +48,10 @@ enum ChildLab
   ChildLab_DTargetWidth,
   ChildLab_DTargetNumber,
   ChildLab_DatumTarget,
+  ChildLab_PlaneLoc,
+  ChildLab_PlaneN,
+  ChildLab_PlaneRef,
+  ChildLab_Pnt,
 };
 
 //=======================================================================
@@ -281,6 +285,46 @@ void XCAFDoc_Datum::SetObject(const Handle(XCAFDimTolObjects_DatumObject)& theOb
     aNum->Set(theObject->GetDatumTargetNumber());
     Label().FindChild(ChildLab_DTargetNumber).AddAttribute(aNum);
   }
+
+  if (theObject->HasPlane())
+  {
+    Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray();
+    Handle(TDataStd_RealArray) aN = new TDataStd_RealArray();
+    Handle(TDataStd_RealArray) aR = new TDataStd_RealArray();
+    gp_Ax2 anAx = theObject->GetPlane();
+
+    Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aLocArr->SetValue(i, anAx.Location().Coord(i));
+    aLoc->ChangeArray(aLocArr);
+
+    Handle(TColStd_HArray1OfReal) aNArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aNArr->SetValue(i, anAx.Direction().Coord(i));
+    aN->ChangeArray(aNArr);
+
+    Handle(TColStd_HArray1OfReal) aRArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aRArr->SetValue(i, anAx.XDirection().Coord(i));
+    aR->ChangeArray(aRArr);
+
+    Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc);
+    Label().FindChild(ChildLab_PlaneN).AddAttribute(aN);
+    Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR);
+  }
+
+  if (theObject->HasPoint())
+  {
+    Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray();
+    gp_Pnt aPnt = theObject->GetPoint();
+
+    Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aLocArr->SetValue(i, aPnt.Coord(i));
+    aLoc->ChangeArray(aLocArr);
+
+    Label().FindChild(ChildLab_Pnt).AddAttribute(aLoc);
+  }
 }
 
 //=======================================================================
@@ -325,6 +369,25 @@ Handle(XCAFDimTolObjects_DatumObject) XCAFDoc_Datum::GetObject() const
     anObj->SetPosition(aPosition->Get());
   }
 
+  Handle(TDataStd_RealArray) aLoc, aN, aR;
+  if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aLoc) && aLoc->Length() == 3 &&
+    Label().FindChild(ChildLab_PlaneN).FindAttribute(TDataStd_RealArray::GetID(), aN) && aN->Length() == 3 &&
+    Label().FindChild(ChildLab_PlaneRef).FindAttribute(TDataStd_RealArray::GetID(), aR) && aR->Length() == 3 )
+  {
+    gp_Pnt aL(aLoc->Value(aLoc->Lower()), aLoc->Value(aLoc->Lower()+1), aLoc->Value(aLoc->Lower()+2));
+    gp_Dir aD(aN->Value(aN->Lower()), aN->Value(aN->Lower()+1), aN->Value(aN->Lower()+2));
+    gp_Dir aDR(aR->Value(aR->Lower()), aR->Value(aR->Lower()+1), aR->Value(aR->Lower()+2));
+    gp_Ax2 anAx(aL, aD, aDR);
+    anObj->SetPlane(anAx);
+  }
+
+  Handle(TDataStd_RealArray) aPnt;
+  if(Label().FindChild(ChildLab_Pnt).FindAttribute(TDataStd_RealArray::GetID(), aPnt) && aPnt->Length() == 3 )
+  {
+    gp_Pnt aP(aLoc->Value(aPnt->Lower()), aPnt->Value(aPnt->Lower()+1), aPnt->Value(aPnt->Lower()+2));
+    anObj->SetPoint(aP);
+  }
+
   Handle(TDataStd_Integer) aIsDTarget;
   if(Label().FindChild(ChildLab_IsDTarget).FindAttribute(TDataStd_Integer::GetID(), aIsDTarget))
   {
index 162e14286deb9c4626b6b8e3c397d03d80988563..fe88fb0c152501cdc5e5951b65272abbbf88f5fc 100644 (file)
@@ -41,7 +41,10 @@ enum ChildLab
   ChildLab_Modifiers,
   ChildLab_Path,
   ChildLab_Dir,
-  ChildLab_Pnts
+  ChildLab_Pnts,
+  ChildLab_PlaneLoc,
+  ChildLab_PlaneN,
+  ChildLab_PlaneRef,
 };
 
 //=======================================================================
@@ -171,18 +174,47 @@ void XCAFDoc_Dimension::SetObject (const Handle(XCAFDimTolObjects_DimensionObjec
   Handle(TColgp_HArray1OfPnt) aP = theObject->GetPoints();
   if(!aP.IsNull() && aP->Length() > 0)
   {
-    anArrR = new TColStd_HArray1OfReal(1,6);
+    anArrR = new TColStd_HArray1OfReal(1,aP->Length() * 3);
     Handle(TDataStd_RealArray) aPnts;
     anArrR->SetValue(1,aP->Value(1).X());
     anArrR->SetValue(2,aP->Value(1).Y());
     anArrR->SetValue(3,aP->Value(1).Z());
-    anArrR->SetValue(4,aP->Value(2).X());
-    anArrR->SetValue(5,aP->Value(2).Y());
-    anArrR->SetValue(6,aP->Value(2).Z());
+    if (aP->Length() == 2) {
+      anArrR->SetValue(4,aP->Value(2).X());
+      anArrR->SetValue(5,aP->Value(2).Y());
+      anArrR->SetValue(6,aP->Value(2).Z());
+    }
     aPnts = new TDataStd_RealArray();
     Label().FindChild(ChildLab_Pnts).AddAttribute(aPnts);
     aPnts->ChangeArray(anArrR);
   }
+
+  if (theObject->HasPlane())
+  {
+    Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray();
+    Handle(TDataStd_RealArray) aN = new TDataStd_RealArray();
+    Handle(TDataStd_RealArray) aR = new TDataStd_RealArray();
+    gp_Ax2 anAx = theObject->GetPlane();
+
+    Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aLocArr->SetValue(i, anAx.Location().Coord(i));
+    aLoc->ChangeArray(aLocArr);
+
+    Handle(TColStd_HArray1OfReal) aNArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aNArr->SetValue(i, anAx.Direction().Coord(i));
+    aN->ChangeArray(aNArr);
+
+    Handle(TColStd_HArray1OfReal) aRArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aRArr->SetValue(i, anAx.XDirection().Coord(i));
+    aR->ChangeArray(aRArr);
+
+    Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc);
+    Label().FindChild(ChildLab_PlaneN).AddAttribute(aN);
+    Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR);
+  }
 }
 
 //=======================================================================
@@ -256,12 +288,27 @@ Handle(XCAFDimTolObjects_DimensionObject) XCAFDoc_Dimension::GetObject()  const
   if(Label().FindChild(ChildLab_Pnts).FindAttribute(TDataStd_RealArray::GetID(), aPnts) 
      && !aPnts->Array().IsNull() && aPnts->Array()->Length() > 0)
   {
-    Handle(TColgp_HArray1OfPnt) aP = new TColgp_HArray1OfPnt(1,2);
+    Handle(TColgp_HArray1OfPnt) aP = new TColgp_HArray1OfPnt(1,aPnts->Array()->Length());
     aP->SetValue(1, gp_Pnt(aPnts->Array()->Value(1), aPnts->Array()->Value(2), aPnts->Array()->Value(3)));
-    aP->SetValue(2, gp_Pnt(aPnts->Array()->Value(4), aPnts->Array()->Value(5), aPnts->Array()->Value(6)));
+    if (aPnts->Array()->Length() == 2)
+    {
+      aP->SetValue(2, gp_Pnt(aPnts->Array()->Value(4), aPnts->Array()->Value(5), aPnts->Array()->Value(6)));
+    }
     anObj->SetPoints(aP);
   }
 
+  Handle(TDataStd_RealArray) aLoc, aN, aR;
+  if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aLoc) && aLoc->Length() == 3 &&
+    Label().FindChild(ChildLab_PlaneN).FindAttribute(TDataStd_RealArray::GetID(), aN) && aN->Length() == 3 &&
+    Label().FindChild(ChildLab_PlaneRef).FindAttribute(TDataStd_RealArray::GetID(), aR) && aR->Length() == 3 )
+  {
+    gp_Pnt aL(aLoc->Value(aLoc->Lower()), aLoc->Value(aLoc->Lower()+1), aLoc->Value(aLoc->Lower()+2));
+    gp_Dir aD(aN->Value(aN->Lower()), aN->Value(aN->Lower()+1), aN->Value(aN->Lower()+2));
+    gp_Dir aDR(aR->Value(aR->Lower()), aR->Value(aR->Lower()+1), aR->Value(aR->Lower()+2));
+    gp_Ax2 anAx(aL, aD, aDR);
+    anObj->SetPlane(anAx);
+  }
+
   return anObj;
 }
 
index 99cddcc97d1a97b933c3d400c81c331b9d4995a2..78b224143acdabb43bd294d869bc7499c67c0927 100644 (file)
@@ -37,7 +37,11 @@ enum ChildLab
   ChildLab_aMaxValueModif,
   ChildLab_AxisLoc,
   ChildLab_AxisN,
-  ChildLab_AxisRef
+  ChildLab_AxisRef,
+  ChildLab_PlaneLoc,
+  ChildLab_PlaneN,
+  ChildLab_PlaneRef,
+  ChildLab_Pnt,
 };
 
 //=======================================================================
@@ -175,6 +179,46 @@ void XCAFDoc_GeomTolerance::SetObject (const Handle(XCAFDimTolObjects_GeomTolera
     Label().FindChild(ChildLab_AxisN).AddAttribute(aN);
     Label().FindChild(ChildLab_AxisRef).AddAttribute(aR);
   }
+
+  if (theObject->HasPlane())
+  {
+    Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray();
+    Handle(TDataStd_RealArray) aN = new TDataStd_RealArray();
+    Handle(TDataStd_RealArray) aR = new TDataStd_RealArray();
+    gp_Ax2 anAx = theObject->GetPlane();
+
+    Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aLocArr->SetValue(i, anAx.Location().Coord(i));
+    aLoc->ChangeArray(aLocArr);
+
+    Handle(TColStd_HArray1OfReal) aNArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aNArr->SetValue(i, anAx.Direction().Coord(i));
+    aN->ChangeArray(aNArr);
+
+    Handle(TColStd_HArray1OfReal) aRArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aRArr->SetValue(i, anAx.XDirection().Coord(i));
+    aR->ChangeArray(aRArr);
+
+    Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc);
+    Label().FindChild(ChildLab_PlaneN).AddAttribute(aN);
+    Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR);
+  }
+
+  if (theObject->HasPoint())
+  {
+    Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray();
+    gp_Pnt aPnt = theObject->GetPoint();
+
+    Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3);
+    for (Standard_Integer i = 1; i <= 3; i++)
+      aLocArr->SetValue(i, aPnt.Coord(i));
+    aLoc->ChangeArray(aLocArr);
+
+    Label().FindChild(ChildLab_Pnt).AddAttribute(aLoc);
+  }
 }
 
 //=======================================================================
@@ -251,6 +295,24 @@ Handle(XCAFDimTolObjects_GeomToleranceObject) XCAFDoc_GeomTolerance::GetObject()
     gp_Ax2 anAx(aL, aD, aDR);
     anObj->SetAxis(anAx);
   }
+
+  if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aLoc) && aLoc->Length() == 3 &&
+    Label().FindChild(ChildLab_PlaneN).FindAttribute(TDataStd_RealArray::GetID(), aN) && aN->Length() == 3 &&
+    Label().FindChild(ChildLab_PlaneRef).FindAttribute(TDataStd_RealArray::GetID(), aR) && aR->Length() == 3 )
+  {
+    gp_Pnt aL(aLoc->Value(aLoc->Lower()), aLoc->Value(aLoc->Lower()+1), aLoc->Value(aLoc->Lower()+2));
+    gp_Dir aD(aN->Value(aN->Lower()), aN->Value(aN->Lower()+1), aN->Value(aN->Lower()+2));
+    gp_Dir aDR(aR->Value(aR->Lower()), aR->Value(aR->Lower()+1), aR->Value(aR->Lower()+2));
+    gp_Ax2 anAx(aL, aD, aDR);
+    anObj->SetPlane(anAx);
+  }
+
+  Handle(TDataStd_RealArray) aPnt;
+  if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aPnt) && aPnt->Length() == 3 )
+  {
+    gp_Pnt aP(aLoc->Value(aPnt->Lower()), aPnt->Value(aPnt->Lower()+1), aPnt->Value(aPnt->Lower()+2));
+    anObj->SetPoint(aP);
+  }
   return anObj;
 }