]> 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)
committeraba <aba@opencascade.com>
Thu, 12 Nov 2015 13:14:39 +0000 (16:14 +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 2d9908043645c2952c19aa7f1333716d5ee8b2b4..cd1f46569f0aaa969d2151b88bfa1f83f40dafe8 100644 (file)
 #include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
 #include <RWStepRepr_RWIntegerRepresentationItem.hxx>
 #include <RWStepRepr_RWValueRepresentationItem.hxx>
+#include <RWStepAP242_RWDraughtingModelItemAssociation.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>
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
 
 static Standard_Integer catsh,catdr,catstr,catdsc,cataux;
 
@@ -1387,10 +1396,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;
@@ -1859,6 +1875,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);
@@ -4978,6 +5001,21 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
       RWStepRepr_RWFeatureForDatumTargetRelationship tool;
       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;
 
     default : break;
     }
@@ -5132,6 +5170,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;
@@ -5393,6 +5434,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;
@@ -6928,6 +6972,12 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
   case 702:
     ent = new StepRepr_FeatureForDatumTargetRelationship;
     break;
+  case 703:
+    ent = new StepAP242_DraughtingModelItemAssociation;
+    break;
+  case 704:
+    ent = new StepVisual_AnnotationPlane;
+    break;
 
   default: 
     return Standard_False;
@@ -7508,7 +7558,10 @@ Standard_Integer  RWStepAP214_GeneralModule::CategoryNumber
   case 698:
   case 699:
   case 700:
-  case 701: return catdr;
+  case 701:
+  case 702:
+  case 703:
+  case 704: return catdr;
     
   default : break;
   }
index 81d240a64a993e50542e3a4a6ab7b615dd0d957c..7c3003c0fe4e72e81fa651a4031764491002e000 100644 (file)
@@ -1316,6 +1316,13 @@ 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 <RWStepVisual_RWAnnotationCurveOccurrence.hxx>
+#include <RWStepVisual_RWAnnotationOccurrence.hxx>
+#include <RWStepVisual_RWAnnotationPlane.hxx>
+#include <RWStepVisual_RWDraughtingCallout.hxx>
+
 
 #include <StepRepr_Apex.hxx>
 #include <StepRepr_CentreOfSymmetry.hxx>
@@ -1359,6 +1366,11 @@ Handle(atype) result = Handle(atype)::DownCast (start)
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
+
 
 
 // -- General Declarations (Recognize, StepType) ---
@@ -1987,6 +1999,9 @@ static TCollection_AsciiString Reco_DatumSystem("DATUM_SYSTEM");
 static TCollection_AsciiString Reco_GeneralDatumReference("GENERAL_DATUM_REFERENCE");
 static TCollection_AsciiString Reco_IntegerRepresentationItem("INTEGER_REPRESENTATION_ITEM");
 static TCollection_AsciiString Reco_ValueRepresentationItem("VALUE_REPRESENTATION_ITEM");
+static TCollection_AsciiString Reco_FeatureForDatumTargetRelationship("FEARURE_FOR_DATUM_TARGET_RELATIONSHIP");
+static TCollection_AsciiString Reco_DraughtingModelItemAssociation("DRAUGHTING_MODEL_ITEM_ASSOCIATION");
+static TCollection_AsciiString Reco_AnnotationPlane("ANNOTATION_PLANE");
 
 // -- Definition of the libraries --
 
@@ -2630,6 +2645,9 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
   typenums->SetItem (Reco_GeneralDatumReference, 690);
   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
@@ -3168,6 +3186,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);
     
 }
 
@@ -4383,6 +4403,9 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
   case 690: return Reco_GeneralDatumReference;
   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;
   }
@@ -4723,11 +4746,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);
     }
     
@@ -5418,6 +5447,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 : 
     {
@@ -9109,6 +9145,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;
 
   default: 
     ach->AddFail("Type Mismatch when reading - Entity");
@@ -9154,12 +9204,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);
     }
     
@@ -9937,6 +9993,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 : 
     {
@@ -13817,6 +13880,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;
 
   default: 
     return;
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 954e94802a0014f1ba36a35b22bcce15d9727b7c..2fa68c80b831710a7ecafe61612221eb17027d50 100644 (file)
@@ -93,6 +93,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 <STEPConstruct_GDTProperty.hxx>
@@ -1690,6 +1700,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
@@ -1698,7 +1873,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)
 {
@@ -1972,8 +2147,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();
 }
@@ -2936,6 +3113,8 @@ static void setDimObjectToXCAF(const Handle(Standard_Transient)& theEnt,
   }
   aDimObj->SetType(aType);
 
+  ReadGDTPosition(aGraph, theEnt, aDimObj);
+
   if(!aDimObj.IsNull())
   {
     Handle(XCAFDoc_Dimension) aDim;
@@ -3147,6 +3326,7 @@ static void setGeomTolObjectToXCAF(const Handle(Standard_Transient)& theEnt,
     aTolObj->SetMaxValueModifier(aVal);
   }
 
+  ReadGDTPosition(aGraph, theEnt, aTolObj);
   aGTol->SetObject(aTolObj);
 }
 
index bf9c60a29610ce69ee6995d23da220b86a48163b..f27e2332c4533534dcfde15fba5a65fd5a57ea6a 100644 (file)
@@ -723,6 +723,10 @@ static Standard_CString schemaAP203    = "CONFIG_CONTROL_DESIGN";
 #include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
 #include <StepRepr_IntegerRepresentationItem.hxx>
 #include <StepRepr_ValueRepresentationItem.hxx>
+#include <StepAP242_DraughtingModelItemAssociation.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+#include <StepVisual_AnnotationPlane.hxx>
+#include <StepVisual_DraughtingCallout.hxx>
 
 
 static int init = 0;
@@ -741,7 +745,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);
@@ -841,7 +845,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);
@@ -1413,6 +1417,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);
 }
 
 //=======================================================================
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..148aa56
--- /dev/null
@@ -0,0 +1,18 @@
+// 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>
+
+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..28ac05f
--- /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_RTTI(StepAP242_DraughtingModelItemAssociation, StepAP242_ItemIdentifiedRepresentationUsage)
+
+};
+#endif // _StepAP242_DraughtingModelItemAssociation_HeaderFile
index 77548901d758a80eea5248af6d09418075da4f4e..590e676831c03f8ccdffecb79ae5340324f22ef5 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..bf38110
--- /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 <Standard_Type.hxx>
+#include <StepVisual_AnnotationCurveOccurrence.hxx>
+
+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..fc24c9f
--- /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_RTTI(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..9c0c9cf
--- /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_AnnotationPlane.hxx>
+
+//=======================================================================
+//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..3c8c108
--- /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_RTTI(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..f55460c
--- /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>
+
+//=======================================================================
+//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..19e31d6
--- /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_RTTI(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 02195ce3667be59fc88feeb76c186ff26cbb54f1..4d9f6cfc785a0ddd73c2b613149ee6de484d4a57 100644 (file)
@@ -22,6 +22,8 @@
 XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject()
 {
   myIsDTarget = Standard_False;
+  myHasPlane = Standard_False;
+  myHasPnt = Standard_False;
 }
 
 //=======================================================================
@@ -39,6 +41,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;
 }
 
 //=======================================================================
@@ -254,4 +260,64 @@ Standard_Real XCAFDimTolObjects_DatumObject::GetDatumTargetWidth() const
 void XCAFDimTolObjects_DatumObject::SetDatumTargetWidth(const Standard_Real theWidth)
 {
   myWidth = theWidth;
+}
+
+//=======================================================================
+//function : GetPlane
+//purpose  : 
+//=======================================================================
+
+gp_Ax2 XCAFDimTolObjects_DatumObject::GetPlane() const
+{
+  return myPlane;
+}
+
+//=======================================================================
+//function : SetPlane
+//purpose  : 
+//=======================================================================
+
+void XCAFDimTolObjects_DatumObject::SetPlane(const gp_Ax2& thePlane)
+{
+  myPlane = thePlane;
+}
+
+//=======================================================================
+//function : GetPoint
+//purpose  : 
+//=======================================================================
+
+gp_Pnt XCAFDimTolObjects_DatumObject::GetPoint() const
+{
+  return myPnt;
+}
+
+//=======================================================================
+//function : SetPoint
+//purpose  : 
+//=======================================================================
+
+void XCAFDimTolObjects_DatumObject::SetPoint(const gp_Pnt& thePnt)
+{
+  myPnt = thePnt;
+}
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean XCAFDimTolObjects_DatumObject::HasPlane () const 
+{
+  return myHasPlane;
+}
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean XCAFDimTolObjects_DatumObject::HasPoint () const 
+{
+  return myHasPnt;
 }
\ No newline at end of file
index a18d8b34ac514be2d1330cbff737ec6e95a97e44..761fb627e94b76ac1aef99ec9ef53a4b1fa7709f 100644 (file)
@@ -87,7 +87,18 @@ public:
 
   Standard_EXPORT void SetDatumTargetWidth (const Standard_Real theWidth);
 
+  Standard_EXPORT void SetPlane (const gp_Ax2& thePlane);
 
+  Standard_EXPORT gp_Ax2 GetPlane () const;
+
+  Standard_EXPORT void SetPoint (const gp_Pnt& thePnt);
+
+  Standard_EXPORT gp_Pnt GetPoint () const;
+
+  Standard_EXPORT Standard_Boolean HasPlane () const;
+
+  Standard_EXPORT Standard_Boolean HasPoint () const;
+  
   DEFINE_STANDARD_RTTI(XCAFDimTolObjects_DatumObject,Standard_Transient)
 
 private: 
@@ -103,7 +114,10 @@ private:
   gp_Ax2 myAxis;
   Standard_Real myLength;
   Standard_Real myWidth;
-  
+  gp_Ax2 myPlane;
+  gp_Pnt myPnt;
+  Standard_Boolean myHasPlane;
+  Standard_Boolean myHasPnt;
 
 };
 
index c0811b52b63741264128703da605427c50e2e4af..e0128c5ec7a6dd4d70799b9958a5c8956b5de632 100644 (file)
@@ -24,6 +24,7 @@
 
 XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject()
 {
+  myHasPlane = Standard_False;
 }
 
 //=======================================================================
@@ -45,6 +46,8 @@ XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject(const Handl
   myPath = theObj->myPath;
   myDir = theObj->myDir;
   myPnts = theObj->myPnts;
+  myHasPlane = theObj->myHasPlane;
+  myPlane = theObj->myPlane;
 }
 
 //=======================================================================
@@ -428,3 +431,44 @@ void XCAFDimTolObjects_DimensionObject::SetPoints (const Handle(TColgp_HArray1Of
 {
   myPnts = thePnts;
 }
+
+//=======================================================================
+//function : GetPlane
+//purpose  : 
+//=======================================================================
+
+gp_Ax2 XCAFDimTolObjects_DimensionObject::GetPlane() const
+{
+  return myPlane;
+}
+
+//=======================================================================
+//function : SetPlane
+//purpose  : 
+//=======================================================================
+
+void XCAFDimTolObjects_DimensionObject::SetPlane(const gp_Ax2& thePlane)
+{
+  myPlane = thePlane;
+  myHasPlane = Standard_True;
+}
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean XCAFDimTolObjects_DimensionObject::HasPlane () const 
+{
+  return myHasPlane;
+}
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean XCAFDimTolObjects_DimensionObject::HasPoints () const 
+{
+  return myPnts->Length() > 0;
+}
index 53cf13b3bcb8e16065dc63d82e55e9a3d4b7aad0..351e1558035753c2aaaf87ef53f34833ca89ccab 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,13 @@ public:
   
   Standard_EXPORT void SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts);
 
+  Standard_EXPORT void SetPlane (const gp_Ax2& thePlane);
+
+  Standard_EXPORT gp_Ax2 GetPlane () const;
+
+  Standard_EXPORT Standard_Boolean HasPlane () const;
+
+  Standard_EXPORT Standard_Boolean HasPoints () const;
 
   DEFINE_STANDARD_RTTI(XCAFDimTolObjects_DimensionObject,Standard_Transient)
 
@@ -133,6 +141,8 @@ private:
   TopoDS_Edge myPath;
   gp_Dir myDir;
   Handle(TColgp_HArray1OfPnt) myPnts;
+  gp_Ax2 myPlane;
+  Standard_Boolean myHasPlane;
 
 };
 
index dd14dfc9d0faa563ebd98d00404a696859b48009..7f440d543ab62369a70d7b09e9b662e4969f0009 100644 (file)
@@ -21,6 +21,8 @@
 XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject()
 {
   myHasAxis = Standard_False;
+  myHasPlane = Standard_False;
+  myHasPnt = Standard_False;
 }
 
 //=======================================================================
@@ -38,8 +40,12 @@ XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject(con
   myValueOfZoneModif = theObj->myValueOfZoneModif;
   myModifiers = theObj->myModifiers;
   myMaxValueModif = theObj->myMaxValueModif;
-  myAxis = theObj->GetAxis();
-  myHasAxis = Standard_False;
+  myAxis = theObj->myAxis;
+  myPlane = theObj->myPlane;
+  myPnt= theObj->myPnt;
+  myHasAxis = theObj->myHasAxis;
+  myHasPlane = theObj->myHasPlane;
+  myHasPnt = theObj->myHasPnt;
 }
 
 //=======================================================================
@@ -241,4 +247,66 @@ gp_Ax2 XCAFDimTolObjects_GeomToleranceObject::GetAxis()  const
 Standard_Boolean XCAFDimTolObjects_GeomToleranceObject::HasAxis () const 
 {
   return myHasAxis;
+}
+
+//=======================================================================
+//function : GetPlane
+//purpose  : 
+//=======================================================================
+
+gp_Ax2 XCAFDimTolObjects_GeomToleranceObject::GetPlane() const
+{
+  return myPlane;
+}
+
+//=======================================================================
+//function : SetPlane
+//purpose  : 
+//=======================================================================
+
+void XCAFDimTolObjects_GeomToleranceObject::SetPlane(const gp_Ax2& thePlane)
+{
+  myPlane = thePlane;
+  myHasPlane = Standard_True;
+}
+
+//=======================================================================
+//function : GetPoint
+//purpose  : 
+//=======================================================================
+
+gp_Pnt XCAFDimTolObjects_GeomToleranceObject::GetPoint() const
+{
+  return myPnt;
+}
+
+//=======================================================================
+//function : SetPoint
+//purpose  : 
+//=======================================================================
+
+void XCAFDimTolObjects_GeomToleranceObject::SetPoint(const gp_Pnt& thePnt)
+{
+  myPnt = thePnt;
+  myHasPlane = Standard_True;
+}
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean XCAFDimTolObjects_GeomToleranceObject::HasPlane () const 
+{
+  return myHasPlane;
+}
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+
+Standard_Boolean XCAFDimTolObjects_GeomToleranceObject::HasPoint () const 
+{
+  return myHasPnt;
 }
\ No newline at end of file
index d53ae52d27a1326ec3004626a2a9c5e459774d91..f905c5972396f34e295dfad57075866de19bb6da 100644 (file)
@@ -81,9 +81,21 @@ public:
   Standard_EXPORT void SetAxis (const gp_Ax2 theAxis);
   
   Standard_EXPORT gp_Ax2 GetAxis() const;
+
+  Standard_EXPORT void SetPlane(const gp_Ax2& thePlane);
+  
+  Standard_EXPORT gp_Ax2 GetPlane() const;
+
+  Standard_EXPORT void SetPoint (const gp_Pnt& thePnt);
+
+  Standard_EXPORT gp_Pnt GetPoint () const;
    
   Standard_EXPORT Standard_Boolean HasAxis () const;
 
+  Standard_EXPORT Standard_Boolean HasPlane () const;
+
+  Standard_EXPORT Standard_Boolean HasPoint () const;
+
   DEFINE_STANDARD_RTTI(XCAFDimTolObjects_GeomToleranceObject,Standard_Transient)
 
 private: 
@@ -98,6 +110,11 @@ private:
   Standard_Real myMaxValueModif;
   gp_Ax2 myAxis;
   Standard_Boolean myHasAxis;
+  gp_Ax2 myPlane;
+  gp_Pnt myPnt;
+  Standard_Boolean myHasPlane;
+  Standard_Boolean myHasPnt;
+
 };
 
 
index 3e7a07a50bc7f88d8e42ce985d94bb2b1a602dae..a604291e028aee21c446541f2a07479a929ada05 100644 (file)
@@ -44,6 +44,10 @@ enum ChildLab
   ChildLab_DTargetLength,
   ChildLab_DTargetWidth,
   ChildLab_DatumTarget,
+  ChildLab_PlaneLoc,
+  ChildLab_PlaneN,
+  ChildLab_PlaneRef,
+  ChildLab_Pnt,
 };
 
 //=======================================================================
@@ -241,12 +245,12 @@ void XCAFDoc_Datum::SetObject(const Handle(XCAFDimTolObjects_DatumObject)& theOb
       aLoc->SetValue(aLoc->Upper()+2,anAx.Location().Z());
 
       aN->SetValue(aN->Upper(),anAx.Axis().Direction().X());
-      aN->SetValue(aN->Upper(),anAx.Axis().Direction().X());
-      aN->SetValue(aN->Upper(),anAx.Axis().Direction().X());
+      aN->SetValue(aN->Upper()+1,anAx.Axis().Direction().Y());
+      aN->SetValue(aN->Upper()+2,anAx.Axis().Direction().Z());
 
       aR->SetValue(aR->Upper(),anAx.Direction().X());
-      aR->SetValue(aR->Upper(),anAx.Direction().X());
-      aR->SetValue(aR->Upper(),anAx.Direction().X());
+      aR->SetValue(aR->Upper()+1,anAx.Direction().Y());
+      aR->SetValue(aR->Upper()+2,anAx.Direction().Z());
 
       Label().FindChild(ChildLab_AxisLoc).AddAttribute(aLoc);
       Label().FindChild(ChildLab_AxisN).AddAttribute(aN);
@@ -266,6 +270,39 @@ void XCAFDoc_Datum::SetObject(const Handle(XCAFDimTolObjects_DatumObject)& theOb
       }
     }
   }
+
+  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 anPln = theObject->GetPlane();
+    aLoc->SetValue(aLoc->Upper(),anPln.Location().X());
+    aLoc->SetValue(aLoc->Upper()+1,anPln.Location().Y());
+    aLoc->SetValue(aLoc->Upper()+2,anPln.Location().Z());
+
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+
+    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();
+    aLoc->SetValue(aLoc->Upper(),aPnt.X());
+    aLoc->SetValue(aLoc->Upper()+1,aPnt.Y());
+    aLoc->SetValue(aLoc->Upper()+2,aPnt.Z());
+    Label().FindChild(ChildLab_Pnt).AddAttribute(aLoc);
+  }
 }
 
 //=======================================================================
@@ -304,6 +341,27 @@ Handle(XCAFDimTolObjects_DatumObject) XCAFDoc_Datum::GetObject() const
     }
   }
 
+  Handle(TDataStd_RealArray) aLoc;
+  Handle(TDataStd_RealArray) aN;
+  Handle(TDataStd_RealArray) 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->Upper()), aLoc->Value(aLoc->Upper()+1), aLoc->Value(aLoc->Upper()+2));
+    gp_Dir aD(aN->Value(aN->Upper()), aN->Value(aN->Upper()+1), aN->Value(aN->Upper()+2));
+    gp_Dir aDR(aR->Value(aR->Upper()), aR->Value(aR->Upper()+1), aR->Value(aR->Upper()+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->Upper()), aPnt->Value(aPnt->Upper()+1), aPnt->Value(aPnt->Upper()+2));
+    anObj->SetPoint(aP);
+  }
+
   Handle(TDataStd_Integer) aIsDTarget;
   if(Label().FindChild(ChildLab_IsDTarget).FindAttribute(TDataStd_Integer::GetID(), aIsDTarget))
   {
@@ -363,7 +421,6 @@ Handle(XCAFDimTolObjects_DatumObject) XCAFDoc_Datum::GetObject() const
       }
     }
   }
-
   return anObj;
 }
 
index d9a72228229b356d4e3e8f13688049f7f94b7e83..463ecd941a31e8c26ab3cb518f812f7883480773 100644 (file)
@@ -39,7 +39,10 @@ enum ChildLab
   ChildLab_Modifiers,
   ChildLab_Path,
   ChildLab_Dir,
-  ChildLab_Pnts
+  ChildLab_Pnts,
+  ChildLab_PlaneLoc,
+  ChildLab_PlaneN,
+  ChildLab_PlaneRef,
 };
 
 //=======================================================================
@@ -169,18 +172,43 @@ 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 anPln = theObject->GetPlane();
+    aLoc->SetValue(aLoc->Upper(),anPln.Location().X());
+    aLoc->SetValue(aLoc->Upper()+1,anPln.Location().Y());
+    aLoc->SetValue(aLoc->Upper()+2,anPln.Location().Z());
+
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+    aN->SetValue(aN->Upper()+1,anPln.Axis().Direction().Y());
+    aN->SetValue(aN->Upper()+2,anPln.Axis().Direction().Z());
+
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+    aR->SetValue(aR->Upper()+1,anPln.Direction().Y());
+    aR->SetValue(aR->Upper()+2,anPln.Direction().Z());
+
+    Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc);
+    Label().FindChild(ChildLab_PlaneN).AddAttribute(aN);
+    Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR);
+  }
 }
 
 //=======================================================================
@@ -260,6 +288,20 @@ Handle(XCAFDimTolObjects_DimensionObject) XCAFDoc_Dimension::GetObject()  const
     anObj->SetPoints(aP);
   }
 
+  Handle(TDataStd_RealArray) aLoc;
+  Handle(TDataStd_RealArray) aN;
+  Handle(TDataStd_RealArray) 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->Upper()), aLoc->Value(aLoc->Upper()+1), aLoc->Value(aLoc->Upper()+2));
+    gp_Dir aD(aN->Value(aN->Upper()), aN->Value(aN->Upper()+1), aN->Value(aN->Upper()+2));
+    gp_Dir aDR(aR->Value(aR->Upper()), aR->Value(aR->Upper()+1), aR->Value(aR->Upper()+2));
+    gp_Ax2 anAx(aL, aD, aDR);
+    anObj->SetPlane(anAx);
+  }
+
   return anObj;
 }
 
index 99a423df628eb01389883d84ca62d0eadd95b8e6..cd2dd0856a8aa6d6061726991df5ced32a747ba2 100644 (file)
@@ -35,7 +35,11 @@ enum ChildLab
   ChildLab_aMaxValueModif,
   ChildLab_AxisLoc,
   ChildLab_AxisN,
-  ChildLab_AxisRef
+  ChildLab_AxisRef,
+  ChildLab_PlaneLoc,
+  ChildLab_PlaneN,
+  ChildLab_PlaneRef,
+  ChildLab_Pnt,
 };
 
 //=======================================================================
@@ -158,17 +162,50 @@ void XCAFDoc_GeomTolerance::SetObject (const Handle(XCAFDimTolObjects_GeomTolera
     aLoc->SetValue(aLoc->Upper()+2,anAx.Location().Z());
 
     aN->SetValue(aN->Upper(),anAx.Axis().Direction().X());
-    aN->SetValue(aN->Upper(),anAx.Axis().Direction().X());
-    aN->SetValue(aN->Upper(),anAx.Axis().Direction().X());
+    aN->SetValue(aN->Upper()+1,anAx.Axis().Direction().Y());
+    aN->SetValue(aN->Upper()+2,anAx.Axis().Direction().Z());
 
     aR->SetValue(aR->Upper(),anAx.Direction().X());
-    aR->SetValue(aR->Upper(),anAx.Direction().X());
-    aR->SetValue(aR->Upper(),anAx.Direction().X());
+    aR->SetValue(aR->Upper()+1,anAx.Direction().Y());
+    aR->SetValue(aR->Upper()+2,anAx.Direction().Z());
 
     Label().FindChild(ChildLab_AxisLoc).AddAttribute(aLoc);
     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 anPln = theObject->GetPlane();
+    aLoc->SetValue(aLoc->Upper(),anPln.Location().X());
+    aLoc->SetValue(aLoc->Upper()+1,anPln.Location().Y());
+    aLoc->SetValue(aLoc->Upper()+2,anPln.Location().Z());
+
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+    aN->SetValue(aN->Upper(),anPln.Axis().Direction().X());
+
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+    aR->SetValue(aR->Upper(),anPln.Direction().X());
+
+    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();
+    aLoc->SetValue(aLoc->Upper(),aPnt.X());
+    aLoc->SetValue(aLoc->Upper()+1,aPnt.Y());
+    aLoc->SetValue(aLoc->Upper()+2,aPnt.Z());
+    Label().FindChild(ChildLab_Pnt).AddAttribute(aLoc);
+  }
 }
 
 //=======================================================================
@@ -245,6 +282,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->Upper()), aLoc->Value(aLoc->Upper()+1), aLoc->Value(aLoc->Upper()+2));
+    gp_Dir aD(aN->Value(aN->Upper()), aN->Value(aN->Upper()+1), aN->Value(aN->Upper()+2));
+    gp_Dir aDR(aR->Value(aR->Upper()), aR->Value(aR->Upper()+1), aR->Value(aR->Upper()+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->Upper()), aPnt->Value(aPnt->Upper()+1), aPnt->Value(aPnt->Upper()+2));
+    anObj->SetPoint(aP);
+  }
   return anObj;
 }