blob: bd98ea890b7b45c0b4f203e217a80c92c8a5cd35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
// File: MNaming_NamingStorageDriver.cxx
// Created: Wed Sep 17 17:17:38 1997
// Author: Isabelle GRIGNON
// <isg@bigbox.paris1.matra-dtv.fr>
#include <MNaming_NamingStorageDriver.ixx>
#include <PNaming_Naming_1.hxx>
#include <PCollection_HAsciiString.hxx>
#include <Standard_NoSuchObject.hxx>
#include <TDF_Tool.hxx>
#include <TNaming_Naming.hxx>
#include <TCollection_AsciiString.hxx>
#include <TNaming_Name.hxx>
#include <PNaming_Name_1.hxx>
#include <PNaming_NamedShape.hxx>
#include <TNaming_NamedShape.hxx>
#include <TNaming_ListOfNamedShape.hxx>
#include <TNaming_ListIteratorOfListOfNamedShape.hxx>
#include <CDM_MessageDriver.hxx>
#include <PNaming_HArray1OfNamedShape.hxx>
//=======================================================================
//function : IntegerToShapeEnum
//purpose :
//=======================================================================
static Standard_Integer ShapeEnumToInteger (const TopAbs_ShapeEnum I)
{
switch(I)
{
case TopAbs_COMPOUND : return 0;
case TopAbs_COMPSOLID : return 1;
case TopAbs_SOLID : return 2;
case TopAbs_SHELL : return 3;
case TopAbs_FACE : return 4;
case TopAbs_WIRE : return 5;
case TopAbs_EDGE : return 6;
case TopAbs_VERTEX : return 7;
case TopAbs_SHAPE : return 8;
}
return 8;
}
//=======================================================================
//function : IntegerToNameType
//purpose :
//=======================================================================
static Standard_Integer NameTypeToInteger (const TNaming_NameType I)
{
switch(I)
{
case TNaming_UNKNOWN : return 0;
case TNaming_IDENTITY : return 1;
case TNaming_MODIFUNTIL : return 2;
case TNaming_GENERATION : return 3;
case TNaming_INTERSECTION : return 4;
case TNaming_UNION : return 5;
case TNaming_SUBSTRACTION : return 6;
case TNaming_CONSTSHAPE : return 7;
case TNaming_FILTERBYNEIGHBOURGS : return 8;
case TNaming_ORIENTATION : return 9;
case TNaming_WIREIN : return 10;
default :
Standard_DomainError::Raise("TNaming_NameType; enum term unknown ");
}
return 0;
}
//=======================================================================
//function : MNaming_NamingStorageDriver
//purpose :
//=======================================================================
MNaming_NamingStorageDriver::MNaming_NamingStorageDriver(const Handle(CDM_MessageDriver)& theMsgDriver):MDF_ASDriver(theMsgDriver)
{
}
//=======================================================================
//function : VersionNumber
//purpose :
//=======================================================================
Standard_Integer MNaming_NamingStorageDriver::VersionNumber() const
{ return 0; }
//=======================================================================
//function : SourceType
//purpose :
//=======================================================================
Handle(Standard_Type) MNaming_NamingStorageDriver::SourceType() const
{ return STANDARD_TYPE(TNaming_Naming); }
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(PDF_Attribute) MNaming_NamingStorageDriver::NewEmpty() const
{ return new PNaming_Naming_1 (); }
//=======================================================================
//function : TNamingToPNaming
//purpose :
//=======================================================================
static void TNamingToPNaming (const TNaming_Name& TN,
Handle(PNaming_Name_1)& PN,
const Handle(MDF_SRelocationTable)& RelocTable)
{
PN = new PNaming_Name_1();
PN->Type (NameTypeToInteger (TN.Type ()));
PN->ShapeType(ShapeEnumToInteger(TN.ShapeType()));
Handle (PNaming_NamedShape) PNS;
Standard_Integer NbArgs = TN.Arguments().Extent();
if (NbArgs > 0) {
Handle(PNaming_HArray1OfNamedShape) TabArgs = new PNaming_HArray1OfNamedShape(1,NbArgs);
PN->Arguments(TabArgs);
Standard_Integer i = 1;
for (TNaming_ListIteratorOfListOfNamedShape it (TN.Arguments()); it.More(); it.Next()) {
RelocTable->HasRelocation(it.Value(),PNS);
TabArgs->SetValue(i++,PNS);
}
}
Handle (PNaming_NamedShape) StopPNS;
if (!TN.StopNamedShape().IsNull())
RelocTable->HasRelocation(TN.StopNamedShape(),StopPNS);
PN->StopNamedShape(StopPNS);
PN->Index(TN.Index());
Handle(PCollection_HAsciiString) pEntry; // Null handle.
if(!TN.ContextLabel().IsNull()) {
TCollection_AsciiString entry;
TDF_Tool::Entry(TN.ContextLabel(),entry);
pEntry = new PCollection_HAsciiString(entry);
}
PN->ContextLabel(pEntry);
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void MNaming_NamingStorageDriver::Paste (
const Handle(TDF_Attribute)& Source,
const Handle(PDF_Attribute)& Target,
const Handle(MDF_SRelocationTable)& RelocTable) const
{
Handle(PNaming_Naming_1) PF = Handle(PNaming_Naming_1)::DownCast(Target);
Handle(TNaming_Naming) F = Handle(TNaming_Naming)::DownCast(Source);
Handle(PNaming_Name_1) PN ;
TNamingToPNaming (F->GetName(), PN ,RelocTable);
PF->SetName(PN);
}
|