1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-29 14:00:49 +03:00
Files
occt/src/IGESAppli/IGESAppli_ToolNodalResults.cxx
bugmaster b311480ed5 0023024: Update headers of OCCT files
Added appropriate copyright and license information in source files
2012-03-21 19:43:04 +04:00

243 lines
9.6 KiB
C++
Executable File

// Created by: CKY / Contract Toubro-Larsen
// Copyright (c) 1993-1999 Matra Datavision
// Copyright (c) 1999-2012 OPEN CASCADE SAS
//
// The content of this file is subject to the Open CASCADE Technology Public
// License Version 6.5 (the "License"). You may not use the content of this file
// except in compliance with the License. Please obtain a copy of the License
// at http://www.opencascade.org and read it completely before using this file.
//
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
//
// The Original Code and all software distributed under the License is
// distributed on an "AS IS" basis, without warranty of any kind, and the
// Initial Developer hereby disclaims all such warranties, including without
// limitation, any warranties of merchantability, fitness for a particular
// purpose or non-infringement. Please see the License for the specific terms
// and conditions governing the rights and limitations under the License.
//--------------------------------------------------------------------
//--------------------------------------------------------------------
#include <IGESAppli_ToolNodalResults.ixx>
#include <IGESData_ParamCursor.hxx>
#include <IGESDimen_GeneralNote.hxx>
#include <IGESAppli_Node.hxx>
#include <IGESAppli_HArray1OfNode.hxx>
#include <TColStd_HArray1OfInteger.hxx>
#include <TColStd_HArray1OfReal.hxx>
#include <TColStd_HArray2OfReal.hxx>
#include <IGESData_Dump.hxx>
#include <Interface_Macros.hxx>
IGESAppli_ToolNodalResults::IGESAppli_ToolNodalResults () { }
void IGESAppli_ToolNodalResults::ReadOwnParams
(const Handle(IGESAppli_NodalResults)& ent,
const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const
{
Standard_Integer tempSubCaseNum = 0;
Standard_Real tempTime;
Standard_Integer nbval = 0;
Standard_Integer nbnodes = 0;
//Standard_Boolean st; //szv#4:S4163:12Mar99 not needed
Handle(IGESDimen_GeneralNote) tempNote;
Handle(TColStd_HArray2OfReal) tempData ;
Handle(IGESAppli_HArray1OfNode) tempNodes ;
Handle(TColStd_HArray1OfInteger) tempNodeIdentifiers ;
//szv#4:S4163:12Mar99 `st=` not needed
PR.ReadEntity(IR,PR.Current(),"General Note describing the analysis case",
STANDARD_TYPE(IGESDimen_GeneralNote), tempNote);
PR.ReadInteger (PR.Current(),"Subcase number",tempSubCaseNum);
PR.ReadReal(PR.Current(),"Analysis time used",tempTime);
Standard_Boolean tempFlag = PR.ReadInteger(PR.Current(),"No. of values",nbval);
//szv#4:S4163:12Mar99 moved in if
if (PR.ReadInteger(PR.Current(),"No. of nodes",nbnodes)) {
tempData = new TColStd_HArray2OfReal(1,nbnodes,1,nbval);
tempNodes = new IGESAppli_HArray1OfNode(1,nbnodes);
tempNodeIdentifiers = new TColStd_HArray1OfInteger(1,nbnodes);
for (Standard_Integer i = 1; i <= nbnodes; i ++) {
Standard_Integer aitem;
//Check whether nbval properly read or not.
Handle(IGESAppli_Node) aNode ;
if (PR.ReadInteger(PR.Current(),"Node no. identifier",aitem))
tempNodeIdentifiers->SetValue(i,aitem);
if (PR.ReadEntity(IR,PR.Current(),"FEM Node", STANDARD_TYPE(IGESAppli_Node), aNode))
tempNodes->SetValue(i,aNode);
if (tempFlag)
//Check whether nbval properly read or not.
for (Standard_Integer j = 1; j <= nbval; j ++) {
Standard_Real aval;
if (PR.ReadReal(PR.Current(),"Value",aval))
tempData->SetValue(i,j,aval);
}
}
}
DirChecker(ent).CheckTypeAndForm(PR.CCheck(),ent);
ent->Init(tempNote,tempSubCaseNum,tempTime,tempNodeIdentifiers,tempNodes,tempData);
}
void IGESAppli_ToolNodalResults::WriteOwnParams
(const Handle(IGESAppli_NodalResults)& ent, IGESData_IGESWriter& IW) const
{
Standard_Integer nbnodes = ent->NbNodes();
Standard_Integer nbdata = ent->NbData ();
IW.Send(ent->Note());
IW.Send(ent->SubCaseNumber());
IW.Send(ent->Time());
IW.Send(nbdata);
IW.Send(nbnodes);
for (Standard_Integer i = 1; i <= nbnodes; i++)
{
IW.Send(ent->NodeIdentifier(i));
IW.Send(ent->Node(i));
for (Standard_Integer j = 1; j <= nbdata; j++)
IW.Send(ent->Data(i,j));
}
}
void IGESAppli_ToolNodalResults::OwnShared
(const Handle(IGESAppli_NodalResults)& ent, Interface_EntityIterator& iter) const
{
Standard_Integer nbnodes = ent->NbNodes();
iter.GetOneItem(ent->Note());
for (Standard_Integer i = 1; i <= nbnodes; i++)
iter.GetOneItem(ent->Node(i));
}
void IGESAppli_ToolNodalResults::OwnCopy
(const Handle(IGESAppli_NodalResults)& another,
const Handle(IGESAppli_NodalResults)& ent, Interface_CopyTool& TC) const
{
DeclareAndCast(IGESDimen_GeneralNote,aNote,TC.Transferred(another->Note()));
Standard_Integer aSubCaseNum = another->SubCaseNumber();
Standard_Real aTime = another->Time();
Standard_Integer nbnodes = another->NbNodes();
Standard_Integer nbval = another->NbData();
Handle(TColStd_HArray1OfInteger) aNodeIdentifiers =
new TColStd_HArray1OfInteger(1,nbnodes);
Handle(IGESAppli_HArray1OfNode) aNodes =
new IGESAppli_HArray1OfNode(1,nbnodes);
Handle(TColStd_HArray2OfReal) aData =
new TColStd_HArray2OfReal(1,nbnodes,1,nbval);
for (Standard_Integer i=1; i <= nbnodes; i++)
{
Standard_Integer aItem = another->NodeIdentifier(i);
aNodeIdentifiers->SetValue(i,aItem);
DeclareAndCast(IGESAppli_Node,anentity,TC.Transferred(another->Node(i)));
aNodes->SetValue(i,anentity);
for (Standard_Integer j=1; j <= nbval; j++)
aData->SetValue(i,j, another->Data(i,j));
}
ent->Init(aNote,aSubCaseNum,aTime,aNodeIdentifiers,aNodes,aData);
ent->SetFormNumber(another->FormNumber());
}
IGESData_DirChecker IGESAppli_ToolNodalResults::DirChecker
(const Handle(IGESAppli_NodalResults)& /* ent */ ) const
{
IGESData_DirChecker DC(146,0,34); // Type = 146 Form No. = 0 to 34
DC.Structure(IGESData_DefVoid);
DC.LineFont(IGESData_DefVoid);
DC.LineWeight(IGESData_DefVoid);
DC.Color(IGESData_DefAny);
DC.BlankStatusIgnored();
DC.UseFlagRequired(03);
DC.HierarchyStatusIgnored();
return DC;
}
void IGESAppli_ToolNodalResults::OwnCheck
(const Handle(IGESAppli_NodalResults)& ent,
const Interface_ShareTool& , Handle(Interface_Check)& ach) const
{
Standard_Integer FormNum = ent->FormNumber();
Standard_Integer nv = ent->NbData();
Standard_Boolean OK = Standard_True;
switch (FormNum) {
case 0 : if (nv < 0) OK = Standard_False; break;
case 1 : if (nv != 1) OK = Standard_False; break;
case 2 : if (nv != 1) OK = Standard_False; break;
case 3 : if (nv != 3) OK = Standard_False; break;
case 4 : if (nv != 6) OK = Standard_False; break;
case 5 : if (nv != 3) OK = Standard_False; break;
case 6 : if (nv != 3) OK = Standard_False; break;
case 7 : if (nv != 3) OK = Standard_False; break;
case 8 : if (nv != 3) OK = Standard_False; break;
case 9 : if (nv != 3) OK = Standard_False; break;
case 10 : if (nv != 1) OK = Standard_False; break;
case 11 : if (nv != 1) OK = Standard_False; break;
case 12 : if (nv != 3) OK = Standard_False; break;
case 13 : if (nv != 1) OK = Standard_False; break;
case 14 : if (nv != 1) OK = Standard_False; break;
case 15 : if (nv != 3) OK = Standard_False; break;
case 16 : if (nv != 1) OK = Standard_False; break;
case 17 : if (nv != 3) OK = Standard_False; break;
case 18 : if (nv != 3) OK = Standard_False; break;
case 19 : if (nv != 3) OK = Standard_False; break;
case 20 : if (nv != 3) OK = Standard_False; break;
case 21 : if (nv != 3) OK = Standard_False; break;
case 22 : if (nv != 3) OK = Standard_False; break;
case 23 : if (nv != 6) OK = Standard_False; break;
case 24 : if (nv != 6) OK = Standard_False; break;
case 25 : if (nv != 6) OK = Standard_False; break;
case 26 : if (nv != 6) OK = Standard_False; break;
case 27 : if (nv != 6) OK = Standard_False; break;
case 28 : if (nv != 6) OK = Standard_False; break;
case 29 : if (nv != 9) OK = Standard_False; break;
case 30 : if (nv != 9) OK = Standard_False; break;
case 31 : if (nv != 9) OK = Standard_False; break;
case 32 : if (nv != 9) OK = Standard_False; break;
case 33 : if (nv != 9) OK = Standard_False; break;
case 34 : if (nv != 9) OK = Standard_False; break;
default : ach->AddFail("Incorrect Form Number"); break;
}
if (!OK) ach->AddFail
("Incorrect count of real values in array V for FEM node");
}
void IGESAppli_ToolNodalResults::OwnDump
(const Handle(IGESAppli_NodalResults)& ent, const IGESData_IGESDumper& dumper,
const Handle(Message_Messenger)& S, const Standard_Integer level) const
{
// Standard_Integer nbnodes = ent->NbNodes();
// Standard_Integer nbdata = ent->NbData ();
S << "IGESAppli_NodalResults" << endl;
S << "General Note : ";
dumper.Dump(ent->Note(),S, (level <= 4) ? 0 : 1);
S << endl;
S << "Analysis subcase number : " << ent->SubCaseNumber() << " ";
S << "Time used : " << ent->Time() << endl;
S << "No. of nodes : " << ent->NbNodes() << " ";
S << "No. of values for a node : " << ent->NbData() << endl;
S << "Node Identifiers : " << endl;
S << "Nodes : " << endl;
S << "Data : "; if (level < 6) S << " [ask level > 5]";
// IGESData_DumpRectVals(S ,-level,1, ent->NbData(),ent->Data);
S << endl;
if (level > 4)
{
for (Standard_Integer i=1; i <= ent->NbNodes(); i++)
{
S << "[" << i << "]: ";
S << "NodeIdentifier : " << ent->NodeIdentifier(i) << " ";
S << "Node : ";
dumper.Dump (ent->Node(i),S, 1);
S << endl;
if (level < 6) continue;
S << "Data : [ ";
for (Standard_Integer j = 1; j <= ent->NbData(); j ++)
S << " " << ent->Data(i,j);
S << " ]" << endl;
}
}
}