0024057: Eliminate compiler warning C4100 in MSVC++ with warning level 4
[occt.git] / src / IGESAppli / IGESAppli_ToolNodalDisplAndRot.cxx
1 // Created by: CKY / Contract Toubro-Larsen
2 // Copyright (c) 1993-1999 Matra Datavision
3 // Copyright (c) 1999-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20 //--------------------------------------------------------------------
21 //--------------------------------------------------------------------
22
23 #include <IGESAppli_ToolNodalDisplAndRot.ixx>
24 #include <IGESData_ParamCursor.hxx>
25 #include <IGESAppli_Node.hxx>
26 #include <IGESDimen_GeneralNote.hxx>
27 #include <IGESDimen_HArray1OfGeneralNote.hxx>
28 #include <IGESAppli_HArray1OfNode.hxx>
29 #include <gp_XYZ.hxx>
30 #include <TColgp_HArray1OfXYZ.hxx>
31 #include <IGESBasic_HArray1OfHArray1OfXYZ.hxx>
32 #include <TColStd_HArray1OfInteger.hxx>
33 #include <IGESData_Dump.hxx>
34 #include <Interface_Macros.hxx>
35
36
37 IGESAppli_ToolNodalDisplAndRot::IGESAppli_ToolNodalDisplAndRot ()    {  }
38
39
40 void  IGESAppli_ToolNodalDisplAndRot::ReadOwnParams
41   (const Handle(IGESAppli_NodalDisplAndRot)& ent,
42    const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const
43 {
44   //Standard_Boolean st; //szv#4:S4163:12Mar99 not needed
45   Standard_Integer nbcases = 0;
46   Standard_Integer nbnodes = 0;
47   Handle(IGESDimen_HArray1OfGeneralNote) tempNotes ;
48   Handle(TColStd_HArray1OfInteger) tempNodeIdentifiers ;
49   Handle(IGESAppli_HArray1OfNode) tempNodes;
50   Handle(IGESBasic_HArray1OfHArray1OfXYZ) tempTransParam ;
51   Handle(IGESBasic_HArray1OfHArray1OfXYZ) tempRotParam ;
52
53   Standard_Boolean tempFlag = PR.ReadInteger(PR.Current(),"No. of analysis cases",nbcases);
54   if (tempFlag) {
55     tempNotes = new IGESDimen_HArray1OfGeneralNote(1,nbcases);
56     for (Standard_Integer i=1; i <= nbcases; i++) {
57       Handle(IGESDimen_GeneralNote) anentity;
58       //szv#4:S4163:12Mar99 moved in if
59       if (PR.ReadEntity(IR,PR.Current(),"General Note", STANDARD_TYPE(IGESDimen_GeneralNote), anentity))
60         tempNotes->SetValue(i,anentity);
61     }
62   }
63   //szv#4:S4163:12Mar99 moved in if
64   if (PR.ReadInteger(PR.Current(),"No. of nodes",nbnodes)) {
65     tempNodeIdentifiers = new TColStd_HArray1OfInteger(1,nbnodes);
66     tempNodes = new IGESAppli_HArray1OfNode(1,nbnodes);
67     tempTransParam = new IGESBasic_HArray1OfHArray1OfXYZ(1, nbnodes);
68     tempRotParam = new IGESBasic_HArray1OfHArray1OfXYZ(1, nbnodes);
69     for (Standard_Integer j=1; j <=nbnodes; j++) {
70       Handle(IGESAppli_Node) aNode = new IGESAppli_Node();
71       Standard_Integer nodeno;
72       if (PR.ReadInteger( PR.Current(), "Node number", nodeno))
73         tempNodeIdentifiers->SetValue(j,nodeno);
74       if (PR.ReadEntity(IR,PR.Current(),"Node Directory Entry", STANDARD_TYPE(IGESAppli_Node), aNode))
75         tempNodes->SetValue(j,aNode);
76
77       Handle(TColgp_HArray1OfXYZ) tempArray1;
78       Handle(TColgp_HArray1OfXYZ) tempArray;
79       if (tempFlag) {
80         // tempFlag indicates if nbcases has been properly read
81         tempArray1 = new TColgp_HArray1OfXYZ(1,nbcases);
82         tempArray  = new TColgp_HArray1OfXYZ(1,nbcases);
83         for (Standard_Integer k = 1; k <= nbcases; k++) {
84           gp_XYZ atrans,arot;
85           if (PR.ReadXYZ(PR.CurrentList(1,3),"Translation XYZ",atrans))
86             tempArray->SetValue(k,atrans);
87           if (PR.ReadXYZ(PR.CurrentList(1,3),"Rotational XYZ",arot))
88             tempArray1->SetValue(k,arot);
89         }
90       }
91       tempTransParam->SetValue(j,tempArray);
92       tempRotParam->SetValue(j,tempArray1);
93     }
94   }
95
96   DirChecker(ent).CheckTypeAndForm(PR.CCheck(),ent);
97   ent->Init(tempNotes,tempNodeIdentifiers,tempNodes,tempRotParam,tempTransParam);
98 }
99
100 void  IGESAppli_ToolNodalDisplAndRot::WriteOwnParams
101   (const Handle(IGESAppli_NodalDisplAndRot)& ent, IGESData_IGESWriter& IW) const
102 {
103   Standard_Integer nbcases = ent->NbCases();
104   Standard_Integer nbnodes = ent->NbNodes();
105
106   IW.Send(nbcases);
107   for (Standard_Integer i = 1; i <= nbcases; i ++)
108     IW.Send(ent->Note(i));
109   IW.Send(nbnodes);
110   for (Standard_Integer j = 1; j <= nbnodes; j ++)
111     {
112       IW.Send(ent->NodeIdentifier(j));
113       IW.Send(ent->Node(j));
114       for (Standard_Integer k = 1; k <= nbcases; k ++)
115         {
116           IW.Send(ent->TranslationParameter(j,k).X());
117           IW.Send(ent->TranslationParameter(j,k).Y());
118           IW.Send(ent->TranslationParameter(j,k).Z());
119           IW.Send(ent->RotationalParameter(j,k).X());
120           IW.Send(ent->RotationalParameter(j,k).Y());
121           IW.Send(ent->RotationalParameter(j,k).Z());
122         }
123     }
124 }
125
126 void  IGESAppli_ToolNodalDisplAndRot::OwnShared
127   (const Handle(IGESAppli_NodalDisplAndRot)& ent, Interface_EntityIterator& iter) const
128 {
129   Standard_Integer nbcases = ent->NbCases();
130   Standard_Integer nbnodes = ent->NbNodes();
131
132   for (Standard_Integer i = 1; i <= nbcases; i ++)
133     iter.GetOneItem(ent->Note(i));
134   for (Standard_Integer j = 1; j <= nbnodes; j ++)
135     iter.GetOneItem(ent->Node(j));
136 }
137
138 void  IGESAppli_ToolNodalDisplAndRot::OwnCopy
139   (const Handle(IGESAppli_NodalDisplAndRot)& another,
140    const Handle(IGESAppli_NodalDisplAndRot)& ent, Interface_CopyTool& TC) const
141 {
142   Standard_Integer nbcases = another->NbCases();
143   Standard_Integer nbnodes = another->NbNodes();
144   Handle(IGESDimen_HArray1OfGeneralNote) aNotes =
145     new IGESDimen_HArray1OfGeneralNote(1,nbcases);
146   Handle(TColStd_HArray1OfInteger) aNodeIdentifiers =
147     new TColStd_HArray1OfInteger(1,nbnodes);
148   Handle(IGESAppli_HArray1OfNode) aNodes =
149     new IGESAppli_HArray1OfNode(1,nbnodes);
150   Handle(IGESBasic_HArray1OfHArray1OfXYZ) aTransParam =
151     new IGESBasic_HArray1OfHArray1OfXYZ(1, nbnodes);
152   Handle(IGESBasic_HArray1OfHArray1OfXYZ) aRotParam =
153     new IGESBasic_HArray1OfHArray1OfXYZ(1, nbnodes);
154
155   for (Standard_Integer i=1 ;i <=nbnodes; i++)
156     {
157       aNodeIdentifiers->SetValue(i,(another->NodeIdentifier(i)));
158       DeclareAndCast(IGESAppli_Node,anitem,TC.Transferred(another->Node(i)));
159       aNodes->SetValue(i,anitem);
160     }
161   for (Standard_Integer j=1 ;j <=nbcases; j++)
162     {
163       DeclareAndCast
164         (IGESDimen_GeneralNote,anitem,TC.Transferred(another->Note(j)));
165       aNotes->SetValue(j,anitem);
166     }
167   for (Standard_Integer n=1 ;n <=nbnodes; n++)
168     {
169       Handle(TColgp_HArray1OfXYZ) tempArray1 = new
170         TColgp_HArray1OfXYZ(1,nbcases);
171       Handle(TColgp_HArray1OfXYZ) tempArray2 = new
172         TColgp_HArray1OfXYZ(1,nbcases);
173       for (Standard_Integer k=1;k<= nbcases;k++)
174         {
175           tempArray1->SetValue(k,another->TranslationParameter(n,k));
176           tempArray2->SetValue(k,another->RotationalParameter(n,k));
177         }
178       aTransParam->SetValue(n,tempArray1);
179       aRotParam->SetValue(n,tempArray2);
180     }
181
182   ent->Init(aNotes,aNodeIdentifiers,aNodes,aRotParam,aTransParam);
183 }
184
185 IGESData_DirChecker  IGESAppli_ToolNodalDisplAndRot::DirChecker
186   (const Handle(IGESAppli_NodalDisplAndRot)& /* ent */ ) const
187 {
188   IGESData_DirChecker DC(138,0);  //Form no = 0 & Type = 138
189   DC.Structure(IGESData_DefVoid);
190   DC.GraphicsIgnored();
191   DC.HierarchyStatusIgnored();
192   return DC;
193 }
194
195 void  IGESAppli_ToolNodalDisplAndRot::OwnCheck
196   (const Handle(IGESAppli_NodalDisplAndRot)& /* ent */,
197    const Interface_ShareTool& , Handle(Interface_Check)& /* ach */) const
198 {
199 }
200
201 void  IGESAppli_ToolNodalDisplAndRot::OwnDump
202   (const Handle(IGESAppli_NodalDisplAndRot)& ent, const IGESData_IGESDumper& dumper,
203    const Handle(Message_Messenger)& S, const Standard_Integer level) const
204 {
205   S << "IGESAppli_NodalDisplAndRot" << endl;
206
207   Standard_Integer nbcases = ent->NbCases();
208   Standard_Integer nbnodes = ent->NbNodes();
209
210   S << "No. of analysis cases : " << nbcases << endl;
211   S << "General Notes : ";
212   IGESData_DumpEntities(S,dumper ,level,1, nbcases,ent->Note);
213   S << endl;
214
215 //  gp_GTrsf loca;  // true location n.u.
216   switch (level)
217     {
218     case 4:
219       S << "Nodes : ";
220       IGESData_DumpEntities(S,dumper,-level,1, nbnodes,ent->Node);
221       S << "NodeIdentifiers : ";
222       IGESData_DumpVals(S,-level,1, nbnodes,ent->NodeIdentifier);
223       S << "Translation Parameters : ";
224 //  ?? Possibly JAGGED ??
225 //      IGESData_DumpListXYZL(S,-level,1,nbcases,ent->TranslationParameter,loca);
226       S << "Rotational Parameters : ";
227 //      IGESData_DumpListXYZL(S,-level,1,nbcases,ent->RotationalParameter,loca);
228       S << "  TO BE DONE" << endl;
229       break;
230     case 5:
231     case 6: {
232       for (Standard_Integer i = 1; i <= nbcases; i ++)
233         {
234           S << "[" << i << "]: ";
235           dumper.Dump (ent->Note(i),S, 1);
236           S << endl;
237         }
238       S << "Nodes : " << endl;
239       S << "Node Identifiers : "  << endl;
240       S << "Translation Parameters : " << endl;
241       S << "Rotational Parameters : Count = " << nbcases;
242 //     IGESData_DumpListXYZL(S,-level,1,nbcases,ent->RotationalParameter,loca);
243       S << endl;
244       for (Standard_Integer j = 1; j <= nbnodes; j ++)
245         {
246           S << "[" << j << "]:  -  NodeIdentifier : "
247             << ent->NodeIdentifier(j) << "  -  Node :"<<endl; ;
248           S << "Node : ";
249           dumper.Dump (ent->Node(j),S, 1);
250           S << "  -  Parameters : " << endl;
251           for (Standard_Integer k = 1; k <= nbcases; k ++)
252             {
253               S << " [" << k << "]: "  << endl;
254               S << "Translational Parameter : X="
255                 << ent->TranslationParameter(j,k).X() << ", Y="
256                 << ent->TranslationParameter(j,k).Y() << ", Z="
257                 << ent->TranslationParameter(j,k).Z() << endl;
258               S << "Rotational Parameter : X="
259                 << ent->RotationalParameter(j,k).X() << ", Y="
260                 << ent->RotationalParameter(j,k).Y() << ", Z="
261                 << ent->RotationalParameter(j,k).Z();
262               if (k == nbcases) S << "] ";
263               S << endl;
264             }
265         }
266     }
267       break;
268     default: break;
269     }
270   S << endl;
271 }