From: ika Date: Fri, 30 Oct 2015 10:01:56 +0000 (+0300) Subject: 0026827: Position and orientation for GD&T frames X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=fa80c0ab16f08d8e825e622414913d88f84e4fec;p=occt-copy.git 0026827: Position and orientation for GD&T frames 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. --- diff --git a/src/RWStepAP214/RWStepAP214_GeneralModule.cxx b/src/RWStepAP214/RWStepAP214_GeneralModule.cxx index df36679150..b48148446d 100644 --- a/src/RWStepAP214/RWStepAP214_GeneralModule.cxx +++ b/src/RWStepAP214/RWStepAP214_GeneralModule.cxx @@ -1270,8 +1270,13 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule) #include #include #include +#include #include #include +#include +#include +#include +#include #include #include @@ -1315,8 +1320,12 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule) #include #include #include +#include #include #include +#include +#include +#include static Standard_Integer catsh,catdr,catstr,catdsc,cataux; @@ -1393,10 +1402,17 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN, tool.Share(anent,iter); } break; + case 4: + { + DeclareAndCast(StepVisual_AnnotationCurveOccurrence,anent,ent); + RWStepVisual_RWAnnotationCurveOccurrence tool; + tool.Share(anent,iter); + } + break; case 7: { - DeclareAndCast(StepVisual_StyledItem,anent,ent); - RWStepVisual_RWStyledItem tool; + DeclareAndCast(StepVisual_AnnotationOccurrence,anent,ent); + RWStepVisual_RWAnnotationOccurrence tool; tool.Share(anent,iter); } break; @@ -1865,6 +1881,13 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN, tool.Share(anent,iter); } break; + case 107: + { + DeclareAndCast(StepVisual_DraughtingCallout,anent,ent); + RWStepVisual_RWDraughtingCallout tool; + tool.Share(anent,iter); + } + break; case 116: { DeclareAndCast(StepShape_EdgeCurve,anent,ent); @@ -4985,6 +5008,20 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN, tool.Share(anent,iter); } break; + case 703: + { + DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent); + RWStepAP242_RWDraughtingModelItemAssociation tool; + tool.Share(anent,iter); + } + break; + case 704: + { + DeclareAndCast(StepVisual_AnnotationPlane,anent,ent); + RWStepVisual_RWAnnotationPlane tool; + tool.Share(anent,iter); + } + break; case 705: { DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent); @@ -5153,6 +5190,9 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid case 3 : ent = new StepShape_AdvancedFace; break; + case 4 : + ent = new StepVisual_AnnotationCurveOccurrence; + break; case 7 : ent = new StepVisual_AnnotationOccurrence; break; @@ -5414,6 +5454,9 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid case 106 : ent = new StepVisual_AnnotationOccurrence; break; + case 107 : + ent = new StepVisual_DraughtingCallout; + break; case 108 : ent = new StepVisual_DraughtingPreDefinedColour; break; @@ -6949,10 +6992,16 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid case 702: ent = new StepRepr_FeatureForDatumTargetRelationship; break; - case 705 : + case 703: + ent = new StepAP242_DraughtingModelItemAssociation; + break; + case 704: + ent = new StepVisual_AnnotationPlane; + break; + case 705: ent = new StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol; break; - case 706 : + case 706: ent = new StepDimTol_GeoTolAndGeoTolWthMaxTol; break; @@ -7536,7 +7585,9 @@ Standard_Integer RWStepAP214_GeneralModule::CategoryNumber case 699: case 700: case 701: - case 702: return catdr; + case 702: + case 703: + case 704: return catdr; case 705: case 706: return cataux; diff --git a/src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx b/src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx index fc00a868ef..bc9279ea12 100644 --- a/src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx +++ b/src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx @@ -1318,8 +1318,14 @@ Handle(atype) result = Handle(atype)::DownCast (start) #include #include #include +#include +#include #include #include +#include +#include +#include +#include #include #include @@ -1363,8 +1369,12 @@ Handle(atype) result = Handle(atype)::DownCast (start) #include #include #include +#include #include #include +#include +#include +#include // -- General Declarations (Recognize, StepType) --- @@ -1994,6 +2004,8 @@ static TCollection_AsciiString Reco_GeneralDatumReference("GENERAL_DATUM_REFEREN static TCollection_AsciiString Reco_IntegerRepresentationItem("INTEGER_REPRESENTATION_ITEM"); static TCollection_AsciiString Reco_ValueRepresentationItem("VALUE_REPRESENTATION_ITEM"); static TCollection_AsciiString Reco_FeatureForDatumTargetRelationship("FEATURE_FOR_DATUM_TARGET_RELATIONSHIP"); +static TCollection_AsciiString Reco_DraughtingModelItemAssociation("DRAUGHTING_MODEL_ITEM_ASSOCIATION"); +static TCollection_AsciiString Reco_AnnotationPlane("ANNOTATION_PLANE"); // -- Definition of the libraries -- @@ -2638,6 +2650,8 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule () typenums->SetItem (Reco_IntegerRepresentationItem, 700); typenums->SetItem (Reco_ValueRepresentationItem, 701); typenums->SetItem (Reco_FeatureForDatumTargetRelationship, 702); + typenums->SetItem (Reco_DraughtingModelItemAssociation, 703); + typenums->SetItem (Reco_AnnotationPlane, 704); // SHORT NAMES // NB : la liste est celle de AP203 @@ -3176,6 +3190,8 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule () typeshor->SetItem ("TLZNFR",684); typeshor->SetItem ("INRPIT",700); typeshor->SetItem ("VLRPIT",701); + typeshor->SetItem ("DMIA", 703); + typeshor->SetItem ("ANNPLN", 704); } @@ -4446,6 +4462,8 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType case 700: return Reco_IntegerRepresentationItem; case 701: return Reco_ValueRepresentationItem; case 702: return Reco_FeatureForDatumTargetRelationship; + case 703: return Reco_DraughtingModelItemAssociation; + case 704: return Reco_AnnotationPlane; default : return PasReco; } @@ -4799,11 +4817,17 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN, tool.ReadStep (data,num,ach,anent); } break; - + case 4 : + { + DeclareAndCast(StepVisual_AnnotationCurveOccurrence, anent, ent); + RWStepVisual_RWAnnotationCurveOccurrence tool; + tool.ReadStep (data,num,ach,anent); + } + break; case 7 : { - DeclareAndCast(StepVisual_StyledItem, anent, ent); - RWStepVisual_RWStyledItem tool; + DeclareAndCast(StepVisual_AnnotationOccurrence, anent, ent); + RWStepVisual_RWAnnotationOccurrence tool; tool.ReadStep (data,num,ach,anent); } @@ -5494,6 +5518,13 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN, tool.ReadStep (data,num,ach,anent); } + break; + case 107 : + { + DeclareAndCast(StepVisual_DraughtingCallout, anent, ent); + RWStepVisual_RWDraughtingCallout tool; + tool.ReadStep (data,num,ach,anent); + } break; case 108 : { @@ -9185,6 +9216,20 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN, tool.ReadStep (data,num,ach,anent); } break; + case 703: + { + DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent); + RWStepAP242_RWDraughtingModelItemAssociation tool; + tool.ReadStep (data,num,ach,anent); + } + break; + case 704: + { + DeclareAndCast(StepVisual_AnnotationPlane,anent,ent); + RWStepVisual_RWAnnotationPlane tool; + tool.ReadStep (data,num,ach,anent); + } + break; case 705: { DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent); @@ -9244,12 +9289,18 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN, tool.WriteStep (SW,anent); } + break; + case 4 : + { + DeclareAndCast(StepVisual_AnnotationCurveOccurrence, anent, ent); + RWStepVisual_RWAnnotationCurveOccurrence tool; + tool.WriteStep (SW,anent); + } break; case 7 : { - DeclareAndCast(StepVisual_StyledItem, anent, ent); - RWStepVisual_RWStyledItem tool; -// if (anent.IsNull()) return; + DeclareAndCast(StepVisual_AnnotationOccurrence, anent, ent); + RWStepVisual_RWAnnotationOccurrence tool; tool.WriteStep (SW,anent); } @@ -10027,6 +10078,13 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN, tool.WriteStep (SW,anent); } + break; + case 107 : + { + DeclareAndCast(StepVisual_DraughtingCallout, anent, ent); + RWStepVisual_RWDraughtingCallout tool; + tool.WriteStep (SW,anent); + } break; case 108 : { @@ -13907,6 +13965,20 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN, tool.WriteStep (SW,anent); } break; + case 703: + { + DeclareAndCast(StepAP242_DraughtingModelItemAssociation,anent,ent); + RWStepAP242_RWDraughtingModelItemAssociation tool; + tool.WriteStep (SW,anent); + } + break; + case 704: + { + DeclareAndCast(StepVisual_AnnotationPlane,anent,ent); + RWStepVisual_RWAnnotationPlane tool; + tool.WriteStep (SW,anent); + } + break; case 705: { DeclareAndCast(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol,anent,ent); diff --git a/src/RWStepAP242/FILES b/src/RWStepAP242/FILES index bf94f4dbf6..f1d2344738 100644 --- a/src/RWStepAP242/FILES +++ b/src/RWStepAP242/FILES @@ -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 index 0000000000..fc2616c5f3 --- /dev/null +++ b/src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.cxx @@ -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 +#include +#include +#include +#include +#include +#include + +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 index 0000000000..ecf710ae63 --- /dev/null +++ b/src/RWStepAP242/RWStepAP242_RWDraughtingModelItemAssociation.hxx @@ -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 +#include +#include + +#include + +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 diff --git a/src/RWStepVisual/FILES b/src/RWStepVisual/FILES index 2ead035db2..87883fea73 100644 --- a/src/RWStepVisual/FILES +++ b/src/RWStepVisual/FILES @@ -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 index 0000000000..7db15d8049 --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.cxx @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include + +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 index 0000000000..d246c7770a --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWAnnotationCurveOccurrence.hxx @@ -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 +#include +#include + +#include +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 index 0000000000..8de83e803d --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.cxx @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//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 index 0000000000..ca452c52a7 --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWAnnotationOccurrence.hxx @@ -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 +#include +#include + +#include +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 index 0000000000..0953e72c8d --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWAnnotationPlane.cxx @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//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 index 0000000000..224e375866 --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWAnnotationPlane.hxx @@ -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 +#include +#include + +#include +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 index 0000000000..3170883708 --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWDraughtingCallout.cxx @@ -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 +#include +#include +#include +#include +#include + +//======================================================================= +//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 index 0000000000..9d561357d2 --- /dev/null +++ b/src/RWStepVisual/RWStepVisual_RWDraughtingCallout.hxx @@ -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 +#include +#include + +#include +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 diff --git a/src/STEPCAFControl/STEPCAFControl_Reader.cxx b/src/STEPCAFControl/STEPCAFControl_Reader.cxx index dd6b9a2d92..686998deee 100644 --- a/src/STEPCAFControl/STEPCAFControl_Reader.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Reader.cxx @@ -96,6 +96,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -144,6 +147,7 @@ #include #include #include +#include #include #include #include @@ -164,8 +168,13 @@ #include #include #include +#include +#include +#include +#include #include #include +#include #include #include #include @@ -219,6 +228,7 @@ #include #include #include +#include #include #include #include @@ -1693,6 +1703,171 @@ static Standard_Boolean GetMassConversionFactor(Handle(StepBasic_NamedUnit)& NU, return Standard_True; } +//======================================================================= +//function : ReadGDTPosition +//purpose : return annotation plane and position for given GDT +// (Dimension, Geometric_Tolerance, Datum_Feature or Placed_Datum_Target_Feature) +//======================================================================= +static void ReadGDTPosition(const Interface_Graph &theGraph, + const Handle(Standard_Transient) theGDT, + Handle(Standard_Transient)& theDimObject) +{ + // find the proper DraughtingModelItemAssociation + Interface_EntityIterator subs = theGraph.Sharings(theGDT); + Handle(StepAP242_DraughtingModelItemAssociation) aDMIA; + for (subs.Start(); subs.More() && aDMIA.IsNull(); subs.Next()) { + if (!subs.Value()->IsKind(STANDARD_TYPE(StepAP242_DraughtingModelItemAssociation))) + continue; + aDMIA = Handle(StepAP242_DraughtingModelItemAssociation)::DownCast(subs.Value()); + Handle(TCollection_HAsciiString) aName = aDMIA->Name(); + aName->LowerCase(); + if (!aName->Search(new TCollection_HAsciiString("pmi representation to presentation link"))) { + aDMIA = NULL; + } + } + if (aDMIA.IsNull() || aDMIA->NbIdentifiedItem() == 0) + return; + + // retrieve AnnotationPlane + Standard_Boolean isHasPlane = Standard_False; + gp_Ax2 aPlaneAxes; + Handle(StepRepr_RepresentationItem) aDMIAE = aDMIA->IdentifiedItemValue(1); + if (aDMIAE.IsNull()) + return; + subs = theGraph.Sharings(aDMIAE); + Handle(StepVisual_AnnotationPlane) anAnPlane; + for (subs.Start(); subs.More() && anAnPlane.IsNull(); subs.Next()) { + anAnPlane = Handle(StepVisual_AnnotationPlane)::DownCast(subs.Value()); + } + if (!anAnPlane.IsNull()) { + Handle(StepRepr_RepresentationItem) aPlaneItem = anAnPlane->Item(); + Handle(StepGeom_Axis2Placement3d) aA2P3D; + //retrieve axes from AnnotationPlane + if (aPlaneItem->IsKind(STANDARD_TYPE(StepGeom_Plane))) { + Handle(StepGeom_Plane) aPlane = Handle(StepGeom_Plane)::DownCast(aPlaneItem); + aA2P3D = aPlane->Position(); + } + else if (aPlaneItem->IsKind(STANDARD_TYPE(StepVisual_PlanarBox))) { + Handle(StepVisual_PlanarBox) aBox = Handle(StepVisual_PlanarBox)::DownCast(aPlaneItem); + aA2P3D = aBox->Placement().Axis2Placement3d(); + } + // build gp_Ax2 from axes + if (!aA2P3D.IsNull()) + { + Handle(StepGeom_Direction) anAxis = aA2P3D->Axis(), + aRefDir = aA2P3D->RefDirection(); + if (!anAxis.IsNull() && !aRefDir.IsNull()) { + Handle(TColStd_HArray1OfReal) aCoords; + aCoords = anAxis->DirectionRatios(); + gp_Dir aXDir(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3)); + aCoords = aRefDir->DirectionRatios(); + gp_Dir aYDir(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3)); + aPlaneAxes.SetDirection(aXDir.Crossed(aYDir)); + aPlaneAxes.SetYDirection(aYDir); + isHasPlane = Standard_True; + } + } + } + + // set plane axes to XCAF + if (isHasPlane) { + if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DimensionObject))) { + Handle(XCAFDimTolObjects_DimensionObject) anObj = + Handle(XCAFDimTolObjects_DimensionObject)::DownCast(theDimObject); + anObj->SetPlane(aPlaneAxes); + } + else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DatumObject))) { + Handle(XCAFDimTolObjects_DatumObject) anObj = + Handle(XCAFDimTolObjects_DatumObject)::DownCast(theDimObject); + anObj->SetPlane(aPlaneAxes); + } + else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_GeomToleranceObject))) { + Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = + Handle(XCAFDimTolObjects_GeomToleranceObject)::DownCast(theDimObject); + anObj->SetPlane(aPlaneAxes); + } + } + + // Retrieve connecton point + // Take AnnotationCurveOccurence (other types are not processed now) + Handle(StepVisual_AnnotationCurveOccurrence) anACO; + if (aDMIAE->IsKind(STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence))) { + anACO = Handle(StepVisual_AnnotationCurveOccurrence)::DownCast(aDMIAE); + } + else if (aDMIAE->IsKind(STANDARD_TYPE(StepVisual_DraughtingCallout))) { + Handle(StepVisual_DraughtingCallout) aDCallout = + Handle(StepVisual_DraughtingCallout)::DownCast(aDMIAE); + for (Standard_Integer i = 1; i <= aDCallout->NbContents() && anACO.IsNull(); i++) { + anACO = aDCallout->ContentsValue(i).AnnotationCurveOccurrence(); + } + } + if (anACO.IsNull()) + return; + + // Take the first polyline (it is not a rule, but temporary solution) + Handle(StepRepr_RepresentationItem) aCurveItem = anACO->Item(); + Handle(StepGeom_Polyline) aCurve; + // for Dimensional_Location (and its subtypes) + Standard_Boolean isDimLoc = theGDT->IsKind(STANDARD_TYPE(StepShape_DimensionalLocation)); + Handle(StepGeom_Polyline) aCurve2; + if (aCurveItem->IsKind(STANDARD_TYPE(StepShape_GeometricCurveSet))) { + Handle(StepShape_GeometricCurveSet) aCurveSet = + Handle(StepShape_GeometricCurveSet)::DownCast(aCurveItem); + Standard_Integer i = 1; + for ( ; i <= aCurveSet->NbElements() && aCurve.IsNull(); i++) { + aCurve = Handle(StepGeom_Polyline)::DownCast(aCurveSet->ElementsValue(i).Curve()); + } + if (isDimLoc) { + for ( ; i <= aCurveSet->NbElements() && aCurve2.IsNull(); i++) { + aCurve2 = Handle(StepGeom_Polyline)::DownCast(aCurveSet->ElementsValue(i).Curve()); + } + } + } + else { + aCurve = Handle(StepGeom_Polyline)::DownCast(aCurveItem); + } + if (aCurve.IsNull() || aCurve->NbPoints() < 1) + return; + + isDimLoc = isDimLoc && !aCurve2.IsNull() && aCurve2->NbPoints() > 0; + + // Take the first point of polyline (it is not a rule, but temporary solution) + Handle(StepGeom_CartesianPoint) aPnt = aCurve->PointsValue(1); + Handle(TColStd_HArray1OfReal) aCoords = aPnt->Coordinates(); + gp_Pnt aPoint(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3)); + + gp_Pnt aPoint2; + if (isDimLoc) { + Handle(StepGeom_CartesianPoint) aPnt = aCurve2->PointsValue(1); + Handle(TColStd_HArray1OfReal) aCoords = aPnt->Coordinates(); + aPoint2.SetCoord(aCoords->Value(1), aCoords->Value(2), aCoords->Value(3)); + } + + // set point to XCAF + if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DimensionObject))) { + Handle(XCAFDimTolObjects_DimensionObject) anObj = + Handle(XCAFDimTolObjects_DimensionObject)::DownCast(theDimObject); + Handle(TColgp_HArray1OfPnt) aPnts; + if (isDimLoc) + aPnts = new TColgp_HArray1OfPnt(1, 2); + else + aPnts = new TColgp_HArray1OfPnt(1, 1); + aPnts->SetValue(1, aPoint); + if (isDimLoc) + aPnts->SetValue(2, aPoint2); + anObj->SetPoints(aPnts); + } + else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_DatumObject))) { + Handle(XCAFDimTolObjects_DatumObject) anObj = + Handle(XCAFDimTolObjects_DatumObject)::DownCast(theDimObject); + anObj->SetPoint(aPoint); + } + else if (theDimObject->IsKind(STANDARD_TYPE(XCAFDimTolObjects_GeomToleranceObject))) { + Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = + Handle(XCAFDimTolObjects_GeomToleranceObject)::DownCast(theDimObject); + anObj->SetPoint(aPoint); + } +} //======================================================================= //function : ReadDatums @@ -1701,7 +1876,7 @@ static Standard_Boolean GetMassConversionFactor(Handle(StepBasic_NamedUnit)& NU, static Standard_Boolean ReadDatums(const Handle(XCAFDoc_ShapeTool) &STool, const Handle(XCAFDoc_DimTolTool) &DGTTool, const Interface_Graph &graph, - Handle(Transfer_TransientProcess) &TP, + const Handle(Transfer_TransientProcess) &TP, const TDF_Label TolerL, const Handle(StepDimTol_GeometricToleranceWithDatumReference) GTWDR) { @@ -1985,8 +2160,10 @@ static Standard_Boolean setDatumToXCAF(const Handle(StepDimTol_Datum)& theDat, aDatObj->SetModifierWithValue(aXCAFModifWithVal, aModifValue); aDGTTool->SetDatumToGeomTol(aDatL, theGDTL); } - if(!aDatObj.IsNull()) + if(!aDatObj.IsNull()) { + ReadGDTPosition(aGraph, aSAR->RelatingShapeAspect(), aDatObj); aDat->SetObject(aDatObj); + } } return !aDat.IsNull(); } @@ -2949,6 +3126,8 @@ static void setDimObjectToXCAF(const Handle(Standard_Transient)& theEnt, } aDimObj->SetType(aType); + ReadGDTPosition(aGraph, theEnt, aDimObj); + if(!aDimObj.IsNull()) { Handle(XCAFDoc_Dimension) aDim; @@ -3219,6 +3398,7 @@ static void setGeomTolObjectToXCAF(const Handle(Standard_Transient)& theEnt, aTolObj->SetMaxValueModifier(aVal); } + ReadGDTPosition(aGraph, theEnt, aTolObj); aGTol->SetObject(aTolObj); } diff --git a/src/StepAP214/StepAP214_Protocol.cxx b/src/StepAP214/StepAP214_Protocol.cxx index 28e8560439..21ccf97423 100644 --- a/src/StepAP214/StepAP214_Protocol.cxx +++ b/src/StepAP214/StepAP214_Protocol.cxx @@ -725,8 +725,12 @@ static Standard_CString schemaAP203 = "CONFIG_CONTROL_DESIGN"; #include #include #include +#include #include #include +#include +#include +#include static int init = 0; @@ -745,7 +749,7 @@ StepAP214_Protocol::StepAP214_Protocol () types.Bind (STANDARD_TYPE(StepBasic_Address), 1); types.Bind (STANDARD_TYPE(StepShape_AdvancedBrepShapeRepresentation), 2); types.Bind (STANDARD_TYPE(StepShape_AdvancedFace), 3); -// types.Bind (STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence), 4); + types.Bind (STANDARD_TYPE(StepVisual_AnnotationCurveOccurrence), 4); // types.Bind (STANDARD_TYPE(StepVisual_AnnotationFillArea), 5); // types.Bind (STANDARD_TYPE(StepVisual_AnnotationFillAreaOccurrence), 6); types.Bind (STANDARD_TYPE(StepVisual_AnnotationOccurrence), 7); @@ -845,7 +849,7 @@ StepAP214_Protocol::StepAP214_Protocol () types.Bind (STANDARD_TYPE(StepBasic_DimensionalExponents), 104); types.Bind (STANDARD_TYPE(StepGeom_Direction), 105); types.Bind (STANDARD_TYPE(StepVisual_DraughtingAnnotationOccurrence), 106); -// types.Bind (STANDARD_TYPE(StepVisual_DraughtingCallout), 107); + types.Bind (STANDARD_TYPE(StepVisual_DraughtingCallout), 107); types.Bind (STANDARD_TYPE(StepVisual_DraughtingPreDefinedColour), 108); types.Bind (STANDARD_TYPE(StepVisual_DraughtingPreDefinedCurveFont), 109); // types.Bind (STANDARD_TYPE(StepVisual_DraughtingSubfigureRepresentation), 110); @@ -1417,6 +1421,8 @@ StepAP214_Protocol::StepAP214_Protocol () types.Bind (STANDARD_TYPE(StepRepr_IntegerRepresentationItem), 700); types.Bind (STANDARD_TYPE(StepRepr_ValueRepresentationItem), 701); types.Bind (STANDARD_TYPE(StepRepr_FeatureForDatumTargetRelationship), 702); + types.Bind (STANDARD_TYPE(StepAP242_DraughtingModelItemAssociation), 703); + types.Bind (STANDARD_TYPE(StepVisual_AnnotationPlane), 704); types.Bind (STANDARD_TYPE(StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol), 705); types.Bind (STANDARD_TYPE(StepDimTol_GeoTolAndGeoTolWthMaxTol), 706); } diff --git a/src/StepAP242/FILES b/src/StepAP242/FILES index fafc0face4..9a10cbbc30 100644 --- a/src/StepAP242/FILES +++ b/src/StepAP242/FILES @@ -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 index 0000000000..582378e5aa --- /dev/null +++ b/src/StepAP242/StepAP242_DraughtingModelItemAssociation.cxx @@ -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 + +IMPLEMENT_STANDARD_RTTIEXT(StepAP242_DraughtingModelItemAssociation,StepAP242_ItemIdentifiedRepresentationUsage) + +StepAP242_DraughtingModelItemAssociation::StepAP242_DraughtingModelItemAssociation () { } diff --git a/src/StepAP242/StepAP242_DraughtingModelItemAssociation.hxx b/src/StepAP242/StepAP242_DraughtingModelItemAssociation.hxx new file mode 100644 index 0000000000..5e13b661ad --- /dev/null +++ b/src/StepAP242/StepAP242_DraughtingModelItemAssociation.hxx @@ -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 +#include + +#include + +class StepAP242_DraughtingModelItemAssociation; +DEFINE_STANDARD_HANDLE(StepAP242_DraughtingModelItemAssociation, StepAP242_ItemIdentifiedRepresentationUsage) +//! Added for Dimensional Tolerances +class StepAP242_DraughtingModelItemAssociation : public StepAP242_ItemIdentifiedRepresentationUsage +{ + +public: + + Standard_EXPORT StepAP242_DraughtingModelItemAssociation(); + + DEFINE_STANDARD_RTTIEXT(StepAP242_DraughtingModelItemAssociation, StepAP242_ItemIdentifiedRepresentationUsage) + +}; +#endif // _StepAP242_DraughtingModelItemAssociation_HeaderFile diff --git a/src/StepDimTol/StepDimTol_ToleranceZone.hxx b/src/StepDimTol/StepDimTol_ToleranceZone.hxx index 49ddde966a..37f796136b 100644 --- a/src/StepDimTol/StepDimTol_ToleranceZone.hxx +++ b/src/StepDimTol/StepDimTol_ToleranceZone.hxx @@ -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; } diff --git a/src/StepVisual/FILES b/src/StepVisual/FILES index 042a91b104..510c28da56 100644 --- a/src/StepVisual/FILES +++ b/src/StepVisual/FILES @@ -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 index 0000000000..79428a82ad --- /dev/null +++ b/src/StepVisual/StepVisual_AnnotationCurveOccurrence.cxx @@ -0,0 +1,21 @@ +// Created on: 2015-10-29 +// Created by: Irina KRYLOVA +// Copyright (c) 2015 OPEN CASCADE SAS +// +// This file is part of Open CASCADE Technology software library. +// +// This library is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License version 2.1 as published +// by the Free Software Foundation, with special exception defined in the file +// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT +// distribution for complete text of the license and disclaimer of any warranty. +// +// Alternatively, this file may be used under the terms of Open CASCADE +// commercial license or contractual agreement. + +#include +#include + +IMPLEMENT_STANDARD_RTTIEXT(StepVisual_AnnotationCurveOccurrence,StepVisual_StyledItem) + +StepVisual_AnnotationCurveOccurrence::StepVisual_AnnotationCurveOccurrence () {} diff --git a/src/StepVisual/StepVisual_AnnotationCurveOccurrence.hxx b/src/StepVisual/StepVisual_AnnotationCurveOccurrence.hxx new file mode 100644 index 0000000000..3223156076 --- /dev/null +++ b/src/StepVisual/StepVisual_AnnotationCurveOccurrence.hxx @@ -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 +#include + +#include + +class StepVisual_AnnotationCurveOccurrence; +DEFINE_STANDARD_HANDLE(StepVisual_AnnotationCurveOccurrence, StepVisual_StyledItem) + +class StepVisual_AnnotationCurveOccurrence : public StepVisual_StyledItem +{ +public: + + //! Returns a AnnotationCurveOccurrence + Standard_EXPORT StepVisual_AnnotationCurveOccurrence(); + + DEFINE_STANDARD_RTTIEXT(StepVisual_AnnotationCurveOccurrence,StepVisual_StyledItem) +}; +#endif // _StepVisual_AnnotationCurveOccurrence_HeaderFile diff --git a/src/StepVisual/StepVisual_AnnotationPlane.cxx b/src/StepVisual/StepVisual_AnnotationPlane.cxx new file mode 100644 index 0000000000..65e9245d66 --- /dev/null +++ b/src/StepVisual/StepVisual_AnnotationPlane.cxx @@ -0,0 +1,38 @@ +// Created on: 2015-10-29 +// Created by: Irina KRYLOVA +// Copyright (c) 2015 OPEN CASCADE SAS +// +// This file is part of Open CASCADE Technology software library. +// +// This library is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License version 2.1 as published +// by the Free Software Foundation, with special exception defined in the file +// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT +// distribution for complete text of the license and disclaimer of any warranty. +// +// Alternatively, this file may be used under the terms of Open CASCADE +// commercial license or contractual agreement. + +#include +#include + +IMPLEMENT_STANDARD_RTTIEXT(StepVisual_AnnotationPlane,StepVisual_AnnotationOccurrence) + +//======================================================================= +//function : StepVisual_AnnotationPlane +//purpose : +//======================================================================= +StepVisual_AnnotationPlane::StepVisual_AnnotationPlane () {} + +//======================================================================= +//function : Init +//purpose : +//======================================================================= +void StepVisual_AnnotationPlane::Init (const Handle(TCollection_HAsciiString)& theName, + const Handle(StepVisual_HArray1OfPresentationStyleAssignment)& theStyles, + const Handle(StepRepr_RepresentationItem)& theItem, + const Handle(StepVisual_HArray1OfAnnotationPlaneElement)& theElements) +{ + StepVisual_AnnotationOccurrence::Init(theName, theStyles, theItem); + myElements = theElements; +} diff --git a/src/StepVisual/StepVisual_AnnotationPlane.hxx b/src/StepVisual/StepVisual_AnnotationPlane.hxx new file mode 100644 index 0000000000..b969509fd6 --- /dev/null +++ b/src/StepVisual/StepVisual_AnnotationPlane.hxx @@ -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 +#include + +#include +#include + +class StepVisual_AnnotationPlane; +DEFINE_STANDARD_HANDLE(StepVisual_AnnotationPlane, StepVisual_AnnotationOccurrence) + +class StepVisual_AnnotationPlane : public StepVisual_AnnotationOccurrence +{ +public: + + //! Returns a AnnotationPlane + Standard_EXPORT StepVisual_AnnotationPlane(); + + Standard_EXPORT void Init (const Handle(TCollection_HAsciiString)& theName, + const Handle(StepVisual_HArray1OfPresentationStyleAssignment)& theStyles, + const Handle(StepRepr_RepresentationItem)& theItem, + const Handle(StepVisual_HArray1OfAnnotationPlaneElement)& theElements); + + //! Returns field Elements + inline Handle(StepVisual_HArray1OfAnnotationPlaneElement) Elements () const + { + return myElements; + } + + //! Set field Elements + inline void SetElements (const Handle(StepVisual_HArray1OfAnnotationPlaneElement) &theElements) + { + myElements = theElements; + } + + //! Returns number of Elements + inline Standard_Integer NbElements () const + { + return (myElements.IsNull() ? 0 : myElements->Length()); + } + + //! Returns Elements with the given number + inline StepVisual_AnnotationPlaneElement ElementsValue(const Standard_Integer theNum) const + { + return myElements->Value(theNum); + } + + //! Sets Elements with given number + inline void SetElementsValue(const Standard_Integer theNum, const StepVisual_AnnotationPlaneElement& theItem) + { + myElements->SetValue (theNum, theItem); + } + + DEFINE_STANDARD_RTTIEXT(StepVisual_AnnotationPlane,StepVisual_AnnotationOccurrence) + +private: + + Handle(StepVisual_HArray1OfAnnotationPlaneElement) myElements; +}; +#endif // _StepVisual_AnnotationPlane_HeaderFile diff --git a/src/StepVisual/StepVisual_AnnotationPlaneElement.cxx b/src/StepVisual/StepVisual_AnnotationPlaneElement.cxx new file mode 100644 index 0000000000..88bc13f6c4 --- /dev/null +++ b/src/StepVisual/StepVisual_AnnotationPlaneElement.cxx @@ -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 +#include +#include +#include + +//======================================================================= +//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 index 0000000000..85c07874cb --- /dev/null +++ b/src/StepVisual/StepVisual_AnnotationPlaneElement.hxx @@ -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 +#include +#include + +#include +#include +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 index 0000000000..a45ad6c400 --- /dev/null +++ b/src/StepVisual/StepVisual_Array1OfAnnotationPlaneElement.hxx @@ -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 +#include + +typedef NCollection_Array1 StepVisual_Array1OfAnnotationPlaneElement; +#endif // _StepVisual_Array1OfAnnotationPlaneElement_HeaderFile diff --git a/src/StepVisual/StepVisual_Array1OfDraughtingCalloutElement.hxx b/src/StepVisual/StepVisual_Array1OfDraughtingCalloutElement.hxx new file mode 100644 index 0000000000..8486478c7c --- /dev/null +++ b/src/StepVisual/StepVisual_Array1OfDraughtingCalloutElement.hxx @@ -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 +#include + +typedef NCollection_Array1 StepVisual_Array1OfDraughtingCalloutElement; +#endif // _StepVisual_Array1OfDraughtingCalloutElement_HeaderFile diff --git a/src/StepVisual/StepVisual_DraughtingCallout.cxx b/src/StepVisual/StepVisual_DraughtingCallout.cxx new file mode 100644 index 0000000000..78af2e3d61 --- /dev/null +++ b/src/StepVisual/StepVisual_DraughtingCallout.cxx @@ -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 +#include + +IMPLEMENT_STANDARD_RTTIEXT(StepVisual_DraughtingCallout,StepGeom_GeometricRepresentationItem) + +//======================================================================= +//function : StepVisual_DraughtingCallout +//purpose : +//======================================================================= +StepVisual_DraughtingCallout::StepVisual_DraughtingCallout () {} + +//======================================================================= +//function : Init +//purpose : +//======================================================================= +void StepVisual_DraughtingCallout::Init (const Handle(TCollection_HAsciiString)& theName, + const Handle(StepVisual_HArray1OfDraughtingCalloutElement)& theContents) +{ + StepGeom_GeometricRepresentationItem::Init(theName); + myContents = theContents; +} diff --git a/src/StepVisual/StepVisual_DraughtingCallout.hxx b/src/StepVisual/StepVisual_DraughtingCallout.hxx new file mode 100644 index 0000000000..bbe745b65b --- /dev/null +++ b/src/StepVisual/StepVisual_DraughtingCallout.hxx @@ -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 +#include + +#include +#include + + +class StepVisual_DraughtingCallout; +DEFINE_STANDARD_HANDLE(StepVisual_DraughtingCallout, StepGeom_GeometricRepresentationItem) + + +class StepVisual_DraughtingCallout : public StepGeom_GeometricRepresentationItem +{ +public: + + //! Returns a DraughtingCallout + Standard_EXPORT StepVisual_DraughtingCallout(); + + //! Init + Standard_EXPORT void StepVisual_DraughtingCallout::Init (const Handle(TCollection_HAsciiString)& theName, + const Handle(StepVisual_HArray1OfDraughtingCalloutElement)& theContents); + + //! Returns field Contents + inline Handle(StepVisual_HArray1OfDraughtingCalloutElement) Contents () const + { + return myContents; + } + + //! Set field Contents + inline void SetContents (const Handle(StepVisual_HArray1OfDraughtingCalloutElement) &theContents) + { + myContents = theContents; + } + + //! Returns number of Contents + inline Standard_Integer NbContents () const + { + return (myContents.IsNull() ? 0 : myContents->Length()); + } + + //! Returns Contents with the given number + inline StepVisual_DraughtingCalloutElement ContentsValue(const Standard_Integer theNum) const + { + return myContents->Value(theNum); + } + + //! Sets Contents with given number + inline void SetContentsValue(const Standard_Integer theNum, const StepVisual_DraughtingCalloutElement& theItem) + { + myContents->SetValue (theNum, theItem); + } + + + DEFINE_STANDARD_RTTIEXT(StepVisual_DraughtingCallout,StepGeom_GeometricRepresentationItem) + +private: + Handle(StepVisual_HArray1OfDraughtingCalloutElement) myContents; +}; +#endif // _StepVisual_DraughtingCallout_HeaderFile diff --git a/src/StepVisual/StepVisual_DraughtingCalloutElement.cxx b/src/StepVisual/StepVisual_DraughtingCalloutElement.cxx new file mode 100644 index 0000000000..c4da000933 --- /dev/null +++ b/src/StepVisual/StepVisual_DraughtingCalloutElement.cxx @@ -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 +#include +#include + +//======================================================================= +//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 index 0000000000..90fac0c4f0 --- /dev/null +++ b/src/StepVisual/StepVisual_DraughtingCalloutElement.hxx @@ -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 +#include +#include + +#include +#include +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 index 0000000000..543bff2d45 --- /dev/null +++ b/src/StepVisual/StepVisual_HArray1OfAnnotationPlaneElement.hxx @@ -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 +#include +#include + +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 index 0000000000..f8c23f4e07 --- /dev/null +++ b/src/StepVisual/StepVisual_HArray1OfDraughtingCalloutElement.hxx @@ -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 +#include +#include + +DEFINE_HARRAY1(StepVisual_HArray1OfDraughtingCalloutElement, StepVisual_Array1OfDraughtingCalloutElement) +#endif // _StepVisual_HArray1OfDraughtingCalloutElement_HeaderFile diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx index 33ba5afcc2..883c096b1b 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx @@ -24,6 +24,8 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_DatumObject,Standard_Transient) XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject() { myIsDTarget = Standard_False; + myHasPlane = Standard_False; + myHasPnt = Standard_False; } //======================================================================= @@ -41,6 +43,10 @@ XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject(const Handle(XCAFDi myIsDTarget = theObj->myIsDTarget; myAxis = theObj->myAxis; myDTargetType = theObj->myDTargetType; + myPlane = theObj->myPlane; + myPnt= theObj->myPnt; + myHasPlane = theObj->myHasPlane; + myHasPnt = theObj->myHasPnt; } //======================================================================= diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx index e3b161499a..189b15071e 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx @@ -91,6 +91,25 @@ public: Standard_EXPORT void SetDatumTargetNumber (const Standard_Integer theNumber); + void SetPlane (const gp_Ax2& thePlane) + { + myPlane = thePlane; + myHasPlane = Standard_True; + } + + const gp_Ax2& GetPlane() const { return myPlane; } + + void SetPoint (const gp_Pnt& thePnt) + { + myPnt = thePnt; + myHasPnt = Standard_True; + } + + const gp_Pnt& GetPoint() const { return myPnt; } + + Standard_Boolean HasPlane() const { return myHasPlane; } + + Standard_Boolean HasPoint() const { return myHasPnt; } DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_DatumObject,Standard_Transient) @@ -108,6 +127,10 @@ private: Standard_Real myLength; Standard_Real myWidth; Standard_Integer myDatumTargetNumber; + gp_Ax2 myPlane; + gp_Pnt myPnt; + Standard_Boolean myHasPlane; + Standard_Boolean myHasPnt; }; diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx index 1ff4f502b9..93648e751f 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx @@ -26,6 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_DimensionObject,Standard_Transient) XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject() { + myHasPlane = Standard_False; } //======================================================================= @@ -47,6 +48,8 @@ XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject(const Handl myPath = theObj->myPath; myDir = theObj->myDir; myPnts = theObj->myPnts; + myHasPlane = theObj->myHasPlane; + myPlane = theObj->myPlane; } //======================================================================= diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.hxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.hxx index 9cbb866e62..bdd2ebfac2 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.hxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.hxx @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -116,6 +117,17 @@ public: Standard_EXPORT void SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts); + void SetPlane (const gp_Ax2& thePlane) + { + myPlane = thePlane; + myHasPlane = Standard_True; + } + + const gp_Ax2& GetPlane() const { return myPlane; } + + Standard_Boolean HasPlane() const { return myHasPlane; } + + Standard_Boolean HasPoints() const { !myPnts.IsNull() && myPnts->Length() > 0; } DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_DimensionObject,Standard_Transient) @@ -133,6 +145,8 @@ private: TopoDS_Edge myPath; gp_Dir myDir; Handle(TColgp_HArray1OfPnt) myPnts; + gp_Ax2 myPlane; + Standard_Boolean myHasPlane; }; diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx index 58aae26e2b..ed68daa2f0 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx @@ -23,6 +23,8 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDimTolObjects_GeomToleranceObject,Standard_Transi XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject() { myHasAxis = Standard_False; + myHasPlane = Standard_False; + myHasPnt = Standard_False; } //======================================================================= @@ -40,8 +42,12 @@ XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject(con myValueOfZoneModif = theObj->myValueOfZoneModif; myModifiers = theObj->myModifiers; myMaxValueModif = theObj->myMaxValueModif; - myAxis = theObj->GetAxis(); - myHasAxis = Standard_False; + myAxis = theObj->myAxis; + myHasAxis = theObj->myHasAxis; + myPlane = theObj->myPlane; + myPnt= theObj->myPnt; + myHasPlane = theObj->myHasPlane; + myHasPnt = theObj->myHasPnt; } //======================================================================= @@ -243,4 +249,4 @@ gp_Ax2 XCAFDimTolObjects_GeomToleranceObject::GetAxis() const Standard_Boolean XCAFDimTolObjects_GeomToleranceObject::HasAxis () const { return myHasAxis; -} \ No newline at end of file +} diff --git a/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.hxx b/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.hxx index c141b1f992..8baaa71a81 100644 --- a/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.hxx +++ b/src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.hxx @@ -84,6 +84,26 @@ public: Standard_EXPORT Standard_Boolean HasAxis () const; + void SetPlane (const gp_Ax2& thePlane) + { + myPlane = thePlane; + myHasPlane = Standard_True; + } + + const gp_Ax2& GetPlane() const { return myPlane; } + + void SetPoint (const gp_Pnt& thePnt) + { + myPnt = thePnt; + myHasPnt = Standard_True; + } + + const gp_Pnt& GetPoint() const { return myPnt; } + + Standard_Boolean HasPlane() const { return myHasPlane; } + + Standard_Boolean HasPoint() const { return myHasPnt; } + DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_GeomToleranceObject,Standard_Transient) private: @@ -98,6 +118,11 @@ private: Standard_Real myMaxValueModif; gp_Ax2 myAxis; Standard_Boolean myHasAxis; + gp_Ax2 myPlane; + gp_Pnt myPnt; + Standard_Boolean myHasPlane; + Standard_Boolean myHasPnt; + }; diff --git a/src/XCAFDoc/XCAFDoc_Datum.cxx b/src/XCAFDoc/XCAFDoc_Datum.cxx index 774e284d05..90609317da 100644 --- a/src/XCAFDoc/XCAFDoc_Datum.cxx +++ b/src/XCAFDoc/XCAFDoc_Datum.cxx @@ -48,6 +48,10 @@ enum ChildLab ChildLab_DTargetWidth, ChildLab_DTargetNumber, ChildLab_DatumTarget, + ChildLab_PlaneLoc, + ChildLab_PlaneN, + ChildLab_PlaneRef, + ChildLab_Pnt, }; //======================================================================= @@ -281,6 +285,46 @@ void XCAFDoc_Datum::SetObject(const Handle(XCAFDimTolObjects_DatumObject)& theOb aNum->Set(theObject->GetDatumTargetNumber()); Label().FindChild(ChildLab_DTargetNumber).AddAttribute(aNum); } + + if (theObject->HasPlane()) + { + Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray(); + Handle(TDataStd_RealArray) aN = new TDataStd_RealArray(); + Handle(TDataStd_RealArray) aR = new TDataStd_RealArray(); + gp_Ax2 anAx = theObject->GetPlane(); + + Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aLocArr->SetValue(i, anAx.Location().Coord(i)); + aLoc->ChangeArray(aLocArr); + + Handle(TColStd_HArray1OfReal) aNArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aNArr->SetValue(i, anAx.Direction().Coord(i)); + aN->ChangeArray(aNArr); + + Handle(TColStd_HArray1OfReal) aRArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aRArr->SetValue(i, anAx.XDirection().Coord(i)); + aR->ChangeArray(aRArr); + + Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc); + Label().FindChild(ChildLab_PlaneN).AddAttribute(aN); + Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR); + } + + if (theObject->HasPoint()) + { + Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray(); + gp_Pnt aPnt = theObject->GetPoint(); + + Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aLocArr->SetValue(i, aPnt.Coord(i)); + aLoc->ChangeArray(aLocArr); + + Label().FindChild(ChildLab_Pnt).AddAttribute(aLoc); + } } //======================================================================= @@ -325,6 +369,25 @@ Handle(XCAFDimTolObjects_DatumObject) XCAFDoc_Datum::GetObject() const anObj->SetPosition(aPosition->Get()); } + Handle(TDataStd_RealArray) aLoc, aN, aR; + if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aLoc) && aLoc->Length() == 3 && + Label().FindChild(ChildLab_PlaneN).FindAttribute(TDataStd_RealArray::GetID(), aN) && aN->Length() == 3 && + Label().FindChild(ChildLab_PlaneRef).FindAttribute(TDataStd_RealArray::GetID(), aR) && aR->Length() == 3 ) + { + gp_Pnt aL(aLoc->Value(aLoc->Lower()), aLoc->Value(aLoc->Lower()+1), aLoc->Value(aLoc->Lower()+2)); + gp_Dir aD(aN->Value(aN->Lower()), aN->Value(aN->Lower()+1), aN->Value(aN->Lower()+2)); + gp_Dir aDR(aR->Value(aR->Lower()), aR->Value(aR->Lower()+1), aR->Value(aR->Lower()+2)); + gp_Ax2 anAx(aL, aD, aDR); + anObj->SetPlane(anAx); + } + + Handle(TDataStd_RealArray) aPnt; + if(Label().FindChild(ChildLab_Pnt).FindAttribute(TDataStd_RealArray::GetID(), aPnt) && aPnt->Length() == 3 ) + { + gp_Pnt aP(aLoc->Value(aPnt->Lower()), aPnt->Value(aPnt->Lower()+1), aPnt->Value(aPnt->Lower()+2)); + anObj->SetPoint(aP); + } + Handle(TDataStd_Integer) aIsDTarget; if(Label().FindChild(ChildLab_IsDTarget).FindAttribute(TDataStd_Integer::GetID(), aIsDTarget)) { diff --git a/src/XCAFDoc/XCAFDoc_Dimension.cxx b/src/XCAFDoc/XCAFDoc_Dimension.cxx index 162e14286d..fe88fb0c15 100644 --- a/src/XCAFDoc/XCAFDoc_Dimension.cxx +++ b/src/XCAFDoc/XCAFDoc_Dimension.cxx @@ -41,7 +41,10 @@ enum ChildLab ChildLab_Modifiers, ChildLab_Path, ChildLab_Dir, - ChildLab_Pnts + ChildLab_Pnts, + ChildLab_PlaneLoc, + ChildLab_PlaneN, + ChildLab_PlaneRef, }; //======================================================================= @@ -171,18 +174,47 @@ void XCAFDoc_Dimension::SetObject (const Handle(XCAFDimTolObjects_DimensionObjec Handle(TColgp_HArray1OfPnt) aP = theObject->GetPoints(); if(!aP.IsNull() && aP->Length() > 0) { - anArrR = new TColStd_HArray1OfReal(1,6); + anArrR = new TColStd_HArray1OfReal(1,aP->Length() * 3); Handle(TDataStd_RealArray) aPnts; anArrR->SetValue(1,aP->Value(1).X()); anArrR->SetValue(2,aP->Value(1).Y()); anArrR->SetValue(3,aP->Value(1).Z()); - anArrR->SetValue(4,aP->Value(2).X()); - anArrR->SetValue(5,aP->Value(2).Y()); - anArrR->SetValue(6,aP->Value(2).Z()); + if (aP->Length() == 2) { + anArrR->SetValue(4,aP->Value(2).X()); + anArrR->SetValue(5,aP->Value(2).Y()); + anArrR->SetValue(6,aP->Value(2).Z()); + } aPnts = new TDataStd_RealArray(); Label().FindChild(ChildLab_Pnts).AddAttribute(aPnts); aPnts->ChangeArray(anArrR); } + + if (theObject->HasPlane()) + { + Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray(); + Handle(TDataStd_RealArray) aN = new TDataStd_RealArray(); + Handle(TDataStd_RealArray) aR = new TDataStd_RealArray(); + gp_Ax2 anAx = theObject->GetPlane(); + + Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aLocArr->SetValue(i, anAx.Location().Coord(i)); + aLoc->ChangeArray(aLocArr); + + Handle(TColStd_HArray1OfReal) aNArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aNArr->SetValue(i, anAx.Direction().Coord(i)); + aN->ChangeArray(aNArr); + + Handle(TColStd_HArray1OfReal) aRArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aRArr->SetValue(i, anAx.XDirection().Coord(i)); + aR->ChangeArray(aRArr); + + Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc); + Label().FindChild(ChildLab_PlaneN).AddAttribute(aN); + Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR); + } } //======================================================================= @@ -256,12 +288,27 @@ Handle(XCAFDimTolObjects_DimensionObject) XCAFDoc_Dimension::GetObject() const if(Label().FindChild(ChildLab_Pnts).FindAttribute(TDataStd_RealArray::GetID(), aPnts) && !aPnts->Array().IsNull() && aPnts->Array()->Length() > 0) { - Handle(TColgp_HArray1OfPnt) aP = new TColgp_HArray1OfPnt(1,2); + Handle(TColgp_HArray1OfPnt) aP = new TColgp_HArray1OfPnt(1,aPnts->Array()->Length()); aP->SetValue(1, gp_Pnt(aPnts->Array()->Value(1), aPnts->Array()->Value(2), aPnts->Array()->Value(3))); - aP->SetValue(2, gp_Pnt(aPnts->Array()->Value(4), aPnts->Array()->Value(5), aPnts->Array()->Value(6))); + if (aPnts->Array()->Length() == 2) + { + aP->SetValue(2, gp_Pnt(aPnts->Array()->Value(4), aPnts->Array()->Value(5), aPnts->Array()->Value(6))); + } anObj->SetPoints(aP); } + Handle(TDataStd_RealArray) aLoc, aN, aR; + if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aLoc) && aLoc->Length() == 3 && + Label().FindChild(ChildLab_PlaneN).FindAttribute(TDataStd_RealArray::GetID(), aN) && aN->Length() == 3 && + Label().FindChild(ChildLab_PlaneRef).FindAttribute(TDataStd_RealArray::GetID(), aR) && aR->Length() == 3 ) + { + gp_Pnt aL(aLoc->Value(aLoc->Lower()), aLoc->Value(aLoc->Lower()+1), aLoc->Value(aLoc->Lower()+2)); + gp_Dir aD(aN->Value(aN->Lower()), aN->Value(aN->Lower()+1), aN->Value(aN->Lower()+2)); + gp_Dir aDR(aR->Value(aR->Lower()), aR->Value(aR->Lower()+1), aR->Value(aR->Lower()+2)); + gp_Ax2 anAx(aL, aD, aDR); + anObj->SetPlane(anAx); + } + return anObj; } diff --git a/src/XCAFDoc/XCAFDoc_GeomTolerance.cxx b/src/XCAFDoc/XCAFDoc_GeomTolerance.cxx index 99cddcc97d..78b224143a 100644 --- a/src/XCAFDoc/XCAFDoc_GeomTolerance.cxx +++ b/src/XCAFDoc/XCAFDoc_GeomTolerance.cxx @@ -37,7 +37,11 @@ enum ChildLab ChildLab_aMaxValueModif, ChildLab_AxisLoc, ChildLab_AxisN, - ChildLab_AxisRef + ChildLab_AxisRef, + ChildLab_PlaneLoc, + ChildLab_PlaneN, + ChildLab_PlaneRef, + ChildLab_Pnt, }; //======================================================================= @@ -175,6 +179,46 @@ void XCAFDoc_GeomTolerance::SetObject (const Handle(XCAFDimTolObjects_GeomTolera Label().FindChild(ChildLab_AxisN).AddAttribute(aN); Label().FindChild(ChildLab_AxisRef).AddAttribute(aR); } + + if (theObject->HasPlane()) + { + Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray(); + Handle(TDataStd_RealArray) aN = new TDataStd_RealArray(); + Handle(TDataStd_RealArray) aR = new TDataStd_RealArray(); + gp_Ax2 anAx = theObject->GetPlane(); + + Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aLocArr->SetValue(i, anAx.Location().Coord(i)); + aLoc->ChangeArray(aLocArr); + + Handle(TColStd_HArray1OfReal) aNArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aNArr->SetValue(i, anAx.Direction().Coord(i)); + aN->ChangeArray(aNArr); + + Handle(TColStd_HArray1OfReal) aRArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aRArr->SetValue(i, anAx.XDirection().Coord(i)); + aR->ChangeArray(aRArr); + + Label().FindChild(ChildLab_PlaneLoc).AddAttribute(aLoc); + Label().FindChild(ChildLab_PlaneN).AddAttribute(aN); + Label().FindChild(ChildLab_PlaneRef).AddAttribute(aR); + } + + if (theObject->HasPoint()) + { + Handle(TDataStd_RealArray) aLoc = new TDataStd_RealArray(); + gp_Pnt aPnt = theObject->GetPoint(); + + Handle(TColStd_HArray1OfReal) aLocArr = new TColStd_HArray1OfReal(1, 3); + for (Standard_Integer i = 1; i <= 3; i++) + aLocArr->SetValue(i, aPnt.Coord(i)); + aLoc->ChangeArray(aLocArr); + + Label().FindChild(ChildLab_Pnt).AddAttribute(aLoc); + } } //======================================================================= @@ -251,6 +295,24 @@ Handle(XCAFDimTolObjects_GeomToleranceObject) XCAFDoc_GeomTolerance::GetObject() gp_Ax2 anAx(aL, aD, aDR); anObj->SetAxis(anAx); } + + if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aLoc) && aLoc->Length() == 3 && + Label().FindChild(ChildLab_PlaneN).FindAttribute(TDataStd_RealArray::GetID(), aN) && aN->Length() == 3 && + Label().FindChild(ChildLab_PlaneRef).FindAttribute(TDataStd_RealArray::GetID(), aR) && aR->Length() == 3 ) + { + gp_Pnt aL(aLoc->Value(aLoc->Lower()), aLoc->Value(aLoc->Lower()+1), aLoc->Value(aLoc->Lower()+2)); + gp_Dir aD(aN->Value(aN->Lower()), aN->Value(aN->Lower()+1), aN->Value(aN->Lower()+2)); + gp_Dir aDR(aR->Value(aR->Lower()), aR->Value(aR->Lower()+1), aR->Value(aR->Lower()+2)); + gp_Ax2 anAx(aL, aD, aDR); + anObj->SetPlane(anAx); + } + + Handle(TDataStd_RealArray) aPnt; + if(Label().FindChild(ChildLab_PlaneLoc).FindAttribute(TDataStd_RealArray::GetID(), aPnt) && aPnt->Length() == 3 ) + { + gp_Pnt aP(aLoc->Value(aPnt->Lower()), aPnt->Value(aPnt->Lower()+1), aPnt->Value(aPnt->Lower()+2)); + anObj->SetPoint(aP); + } return anObj; }