1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 // This file is part of Open CASCADE Technology software library.
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
15 #include <Interface_Check.hxx>
16 #include <Interface_EntityIterator.hxx>
17 #include <RWStepShape_RWMeasureRepresentationItemAndQualifiedRepresentationItem.hxx>
18 #include <StepBasic_MeasureValueMember.hxx>
19 #include <StepBasic_MeasureWithUnit.hxx>
20 #include <StepBasic_Unit.hxx>
21 #include <StepData_StepReaderData.hxx>
22 #include <StepData_StepWriter.hxx>
23 #include <StepShape_HArray1OfValueQualifier.hxx>
24 #include <StepShape_MeasureRepresentationItemAndQualifiedRepresentationItem.hxx>
25 #include <StepShape_ValueQualifier.hxx>
27 RWStepShape_RWMeasureRepresentationItemAndQualifiedRepresentationItem::RWStepShape_RWMeasureRepresentationItemAndQualifiedRepresentationItem () {}
29 void RWStepShape_RWMeasureRepresentationItemAndQualifiedRepresentationItem::ReadStep
30 (const Handle(StepData_StepReaderData)& data,
31 const Standard_Integer num0,
32 Handle(Interface_Check)& ach,
33 const Handle(StepShape_MeasureRepresentationItemAndQualifiedRepresentationItem)& ent) const
36 // Complex Entity : MeasureReprItem + QualifiedreprItem : so, add ReprItem
38 // --- Instance of plex componant : MeasureReprItem
40 Standard_Integer num = 0;
41 data->NamedForComplex("MEASURE_REPRESENTATION_ITEM","MSRPIT",num0,num,ach);
43 // --- Number of Parameter Control ---
45 if (!data->CheckNbParams(num,2,ach,"measure_representation_item")) return;
47 // --- inherited from measure_with_unit : value_component ---
48 Handle(StepBasic_MeasureValueMember) mvc = new StepBasic_MeasureValueMember;
49 data->ReadMember (num, 1, "value_component", ach, mvc);
51 // --- inherited from measure_with_unit : unit_component ---
52 StepBasic_Unit aUnitComponent;
53 data->ReadEntity (num, 2, "unit_component", ach, aUnitComponent);
56 // --- Instance of plex componant : QualifiedReprItem
58 data->NamedForComplex("QUALIFIED_REPRESENTATION_ITEM","QLRPIT",num0,num,ach);
60 // --- Number of Parameter Control ---
62 if (!data->CheckNbParams(num,1,ach,"qualified_representation_item")) return;
64 // --- own field : qualifiers ---
66 Handle(StepShape_HArray1OfValueQualifier) quals;
67 Standard_Integer nsub1;
68 if (data->ReadSubList (num,1,"qualifiers",ach,nsub1)) {
69 Standard_Integer nb1 = data->NbParams(nsub1);
70 quals = new StepShape_HArray1OfValueQualifier (1,nb1);
71 for (Standard_Integer i1 = 1; i1 <= nb1; i1 ++) {
72 StepShape_ValueQualifier VQ;
73 if (data->ReadEntity (nsub1,i1,"qualifier",ach,VQ))
74 quals->SetValue (i1,VQ);
79 // --- Instance of plex componant : RepresentationItem
81 data->NamedForComplex("REPRESENTATION_ITEM","RPRITM",num0,num,ach);
83 if (!data->CheckNbParams(num,1,ach,"representation_item")) return;
85 // --- inherited field from this component : name ---
87 Handle(TCollection_HAsciiString) aName;
88 data->ReadString (num,1,"name",ach,aName);
90 //--- Initialisation of the read entity ---
92 ent->Init(aName, mvc,aUnitComponent,quals);
96 void RWStepShape_RWMeasureRepresentationItemAndQualifiedRepresentationItem::WriteStep
97 (StepData_StepWriter& SW,
98 const Handle(StepShape_MeasureRepresentationItemAndQualifiedRepresentationItem)& ent) const
100 // Complex Entity : MeasureReprItem + QualifiedreprItem : so, add ReprItem
102 // --- Instance of plex componant : MeasureReprItem
104 SW.StartEntity ("MEASURE_REPRESENTATION_ITEM");
106 // --- inherited from measure_with_unit : value_component ---
107 SW.Send(ent->Measure()->ValueComponentMember());
109 // --- inherited from measure_with_unit : unit_component ---
110 SW.Send(ent->Measure()->UnitComponent().Value());
112 // --- Instance of plex componant : QualifiedReprItem
114 SW.StartEntity ("QUALIFIED_REPRESENTATION_ITEM");
116 // --- own field : qualifiers ---
117 Standard_Integer i, nbq = ent->NbQualifiers();
119 for (i = 1; i <= nbq; i ++) SW.Send (ent->QualifiersValue(i).Value());
122 // --- Instance of plex componant : ReprsentationItem
124 SW.StartEntity ("REPRESENTATION_ITEM");
126 // --- inherited field name ---
128 SW.Send(ent->Name());
132 void RWStepShape_RWMeasureRepresentationItemAndQualifiedRepresentationItem::Share(const Handle(StepShape_MeasureRepresentationItemAndQualifiedRepresentationItem)& ent, Interface_EntityIterator& iter) const
134 iter.AddItem(ent->Measure()->UnitComponent().Value());
136 Standard_Integer i, nbq = ent->NbQualifiers();
137 for (i = 1; i <= nbq; i ++) iter.AddItem (ent->QualifiersValue(i).Value());