973c2be1 |
1 | // Copyright (c) 1999-2014 OPEN CASCADE SAS |
b311480e |
2 | // |
973c2be1 |
3 | // This file is part of Open CASCADE Technology software library. |
b311480e |
4 | // |
d5f74e42 |
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 |
973c2be1 |
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. |
b311480e |
10 | // |
973c2be1 |
11 | // Alternatively, this file may be used under the terms of Open CASCADE |
12 | // commercial license or contractual agreement. |
b311480e |
13 | |
7fd59977 |
14 | |
42cf5bc1 |
15 | #include <IGESData_IGESDumper.hxx> |
16 | #include <IGESData_IGESEntity.hxx> |
7fd59977 |
17 | #include <IGESDimen_AngularDimension.hxx> |
18 | #include <IGESDimen_BasicDimension.hxx> |
19 | #include <IGESDimen_CenterLine.hxx> |
20 | #include <IGESDimen_CurveDimension.hxx> |
21 | #include <IGESDimen_DiameterDimension.hxx> |
22 | #include <IGESDimen_DimensionDisplayData.hxx> |
42cf5bc1 |
23 | #include <IGESDimen_DimensionedGeometry.hxx> |
7fd59977 |
24 | #include <IGESDimen_DimensionTolerance.hxx> |
25 | #include <IGESDimen_DimensionUnits.hxx> |
7fd59977 |
26 | #include <IGESDimen_FlagNote.hxx> |
27 | #include <IGESDimen_GeneralLabel.hxx> |
28 | #include <IGESDimen_GeneralNote.hxx> |
29 | #include <IGESDimen_GeneralSymbol.hxx> |
30 | #include <IGESDimen_LeaderArrow.hxx> |
31 | #include <IGESDimen_LinearDimension.hxx> |
32 | #include <IGESDimen_NewDimensionedGeometry.hxx> |
33 | #include <IGESDimen_NewGeneralNote.hxx> |
34 | #include <IGESDimen_OrdinateDimension.hxx> |
35 | #include <IGESDimen_PointDimension.hxx> |
36 | #include <IGESDimen_RadiusDimension.hxx> |
37 | #include <IGESDimen_Section.hxx> |
38 | #include <IGESDimen_SectionedArea.hxx> |
42cf5bc1 |
39 | #include <IGESDimen_SpecificModule.hxx> |
7fd59977 |
40 | #include <IGESDimen_ToolAngularDimension.hxx> |
41 | #include <IGESDimen_ToolBasicDimension.hxx> |
42 | #include <IGESDimen_ToolCenterLine.hxx> |
43 | #include <IGESDimen_ToolCurveDimension.hxx> |
44 | #include <IGESDimen_ToolDiameterDimension.hxx> |
45 | #include <IGESDimen_ToolDimensionDisplayData.hxx> |
42cf5bc1 |
46 | #include <IGESDimen_ToolDimensionedGeometry.hxx> |
7fd59977 |
47 | #include <IGESDimen_ToolDimensionTolerance.hxx> |
48 | #include <IGESDimen_ToolDimensionUnits.hxx> |
7fd59977 |
49 | #include <IGESDimen_ToolFlagNote.hxx> |
50 | #include <IGESDimen_ToolGeneralLabel.hxx> |
51 | #include <IGESDimen_ToolGeneralNote.hxx> |
52 | #include <IGESDimen_ToolGeneralSymbol.hxx> |
53 | #include <IGESDimen_ToolLeaderArrow.hxx> |
54 | #include <IGESDimen_ToolLinearDimension.hxx> |
55 | #include <IGESDimen_ToolNewDimensionedGeometry.hxx> |
56 | #include <IGESDimen_ToolNewGeneralNote.hxx> |
57 | #include <IGESDimen_ToolOrdinateDimension.hxx> |
58 | #include <IGESDimen_ToolPointDimension.hxx> |
59 | #include <IGESDimen_ToolRadiusDimension.hxx> |
60 | #include <IGESDimen_ToolSection.hxx> |
61 | #include <IGESDimen_ToolSectionedArea.hxx> |
62 | #include <IGESDimen_ToolWitnessLine.hxx> |
42cf5bc1 |
63 | #include <IGESDimen_WitnessLine.hxx> |
64 | #include <Interface_Macros.hxx> |
65 | #include <Message_Messenger.hxx> |
66 | #include <Standard_Type.hxx> |
7fd59977 |
67 | |
92efcf78 |
68 | IMPLEMENT_STANDARD_RTTIEXT(IGESDimen_SpecificModule,IGESData_SpecificModule) |
69 | |
7fd59977 |
70 | // Each Module is attached to a Protocol : it must interprete Case Numbers |
71 | // (arguments <CN> of various methods) in accordance to values returned by |
72 | // the method TypeNumber from this Protocol |
b311480e |
73 | IGESDimen_SpecificModule::IGESDimen_SpecificModule() { } |
7fd59977 |
74 | |
75 | |
76 | void IGESDimen_SpecificModule::OwnDump |
77 | (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent, |
0ebe5b0a |
78 | const IGESData_IGESDumper& dumper, Standard_OStream& S, |
7fd59977 |
79 | const Standard_Integer own) const |
80 | { |
81 | switch (CN) { |
82 | case 1 : { |
83 | DeclareAndCast(IGESDimen_AngularDimension,anent,ent); |
84 | if (anent.IsNull()) return; |
85 | IGESDimen_ToolAngularDimension tool; |
86 | tool.OwnDump(anent,dumper,S,own); |
87 | } |
88 | break; |
89 | case 2 : { |
90 | DeclareAndCast(IGESDimen_BasicDimension,anent,ent); |
91 | if (anent.IsNull()) return; |
92 | IGESDimen_ToolBasicDimension tool; |
93 | tool.OwnDump(anent,dumper,S,own); |
94 | } |
95 | break; |
96 | case 3 : { |
97 | DeclareAndCast(IGESDimen_CenterLine,anent,ent); |
98 | if (anent.IsNull()) return; |
99 | IGESDimen_ToolCenterLine tool; |
100 | tool.OwnDump(anent,dumper,S,own); |
101 | } |
102 | break; |
103 | case 4 : { |
104 | DeclareAndCast(IGESDimen_CurveDimension,anent,ent); |
105 | if (anent.IsNull()) return; |
106 | IGESDimen_ToolCurveDimension tool; |
107 | tool.OwnDump(anent,dumper,S,own); |
108 | } |
109 | break; |
110 | case 5 : { |
111 | DeclareAndCast(IGESDimen_DiameterDimension,anent,ent); |
112 | if (anent.IsNull()) return; |
113 | IGESDimen_ToolDiameterDimension tool; |
114 | tool.OwnDump(anent,dumper,S,own); |
115 | } |
116 | break; |
117 | case 6 : { |
118 | DeclareAndCast(IGESDimen_DimensionDisplayData,anent,ent); |
119 | if (anent.IsNull()) return; |
120 | IGESDimen_ToolDimensionDisplayData tool; |
121 | tool.OwnDump(anent,dumper,S,own); |
122 | } |
123 | break; |
124 | case 7 : { |
125 | DeclareAndCast(IGESDimen_DimensionTolerance,anent,ent); |
126 | if (anent.IsNull()) return; |
127 | IGESDimen_ToolDimensionTolerance tool; |
128 | tool.OwnDump(anent,dumper,S,own); |
129 | } |
130 | break; |
131 | case 8 : { |
132 | DeclareAndCast(IGESDimen_DimensionUnits,anent,ent); |
133 | if (anent.IsNull()) return; |
134 | IGESDimen_ToolDimensionUnits tool; |
135 | tool.OwnDump(anent,dumper,S,own); |
136 | } |
137 | break; |
138 | case 9 : { |
139 | DeclareAndCast(IGESDimen_DimensionedGeometry,anent,ent); |
140 | if (anent.IsNull()) return; |
141 | IGESDimen_ToolDimensionedGeometry tool; |
142 | tool.OwnDump(anent,dumper,S,own); |
143 | } |
144 | break; |
145 | case 10 : { |
146 | DeclareAndCast(IGESDimen_FlagNote,anent,ent); |
147 | if (anent.IsNull()) return; |
148 | IGESDimen_ToolFlagNote tool; |
149 | tool.OwnDump(anent,dumper,S,own); |
150 | } |
151 | break; |
152 | case 11 : { |
153 | DeclareAndCast(IGESDimen_GeneralLabel,anent,ent); |
154 | if (anent.IsNull()) return; |
155 | IGESDimen_ToolGeneralLabel tool; |
156 | tool.OwnDump(anent,dumper,S,own); |
157 | } |
158 | break; |
159 | case 12 : { |
160 | DeclareAndCast(IGESDimen_GeneralNote,anent,ent); |
161 | if (anent.IsNull()) return; |
162 | IGESDimen_ToolGeneralNote tool; |
163 | tool.OwnDump(anent,dumper,S,own); |
164 | } |
165 | break; |
166 | case 13 : { |
167 | DeclareAndCast(IGESDimen_GeneralSymbol,anent,ent); |
168 | if (anent.IsNull()) return; |
169 | IGESDimen_ToolGeneralSymbol tool; |
170 | tool.OwnDump(anent,dumper,S,own); |
171 | } |
172 | break; |
173 | case 14 : { |
174 | DeclareAndCast(IGESDimen_LeaderArrow,anent,ent); |
175 | if (anent.IsNull()) return; |
176 | IGESDimen_ToolLeaderArrow tool; |
177 | tool.OwnDump(anent,dumper,S,own); |
178 | } |
179 | break; |
180 | case 15 : { |
181 | DeclareAndCast(IGESDimen_LinearDimension,anent,ent); |
182 | if (anent.IsNull()) return; |
183 | IGESDimen_ToolLinearDimension tool; |
184 | tool.OwnDump(anent,dumper,S,own); |
185 | } |
186 | break; |
187 | case 16 : { |
188 | DeclareAndCast(IGESDimen_NewDimensionedGeometry,anent,ent); |
189 | if (anent.IsNull()) return; |
190 | IGESDimen_ToolNewDimensionedGeometry tool; |
191 | tool.OwnDump(anent,dumper,S,own); |
192 | } |
193 | break; |
194 | case 17 : { |
195 | DeclareAndCast(IGESDimen_NewGeneralNote,anent,ent); |
196 | if (anent.IsNull()) return; |
197 | IGESDimen_ToolNewGeneralNote tool; |
198 | tool.OwnDump(anent,dumper,S,own); |
199 | } |
200 | break; |
201 | case 18 : { |
202 | DeclareAndCast(IGESDimen_OrdinateDimension,anent,ent); |
203 | if (anent.IsNull()) return; |
204 | IGESDimen_ToolOrdinateDimension tool; |
205 | tool.OwnDump(anent,dumper,S,own); |
206 | } |
207 | break; |
208 | case 19 : { |
209 | DeclareAndCast(IGESDimen_PointDimension,anent,ent); |
210 | if (anent.IsNull()) return; |
211 | IGESDimen_ToolPointDimension tool; |
212 | tool.OwnDump(anent,dumper,S,own); |
213 | } |
214 | break; |
215 | case 20 : { |
216 | DeclareAndCast(IGESDimen_RadiusDimension,anent,ent); |
217 | if (anent.IsNull()) return; |
218 | IGESDimen_ToolRadiusDimension tool; |
219 | tool.OwnDump(anent,dumper,S,own); |
220 | } |
221 | break; |
222 | case 21 : { |
223 | DeclareAndCast(IGESDimen_Section,anent,ent); |
224 | if (anent.IsNull()) return; |
225 | IGESDimen_ToolSection tool; |
226 | tool.OwnDump(anent,dumper,S,own); |
227 | } |
228 | break; |
229 | case 22 : { |
230 | DeclareAndCast(IGESDimen_SectionedArea,anent,ent); |
231 | if (anent.IsNull()) return; |
232 | IGESDimen_ToolSectionedArea tool; |
233 | tool.OwnDump(anent,dumper,S,own); |
234 | } |
235 | break; |
236 | case 23 : { |
237 | DeclareAndCast(IGESDimen_WitnessLine,anent,ent); |
238 | if (anent.IsNull()) return; |
239 | IGESDimen_ToolWitnessLine tool; |
240 | tool.OwnDump(anent,dumper,S,own); |
241 | } |
242 | break; |
243 | default : break; |
244 | } |
245 | } |
246 | |
247 | |
248 | Standard_Boolean IGESDimen_SpecificModule::OwnCorrect |
249 | (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const |
250 | { |
251 | // Applies only on some types |
252 | switch (CN) { |
253 | case 2 : { |
254 | DeclareAndCast(IGESDimen_BasicDimension,anent,ent); |
255 | if (anent.IsNull()) break; |
256 | IGESDimen_ToolBasicDimension tool; |
257 | return tool.OwnCorrect(anent); |
258 | } |
259 | case 3 : { |
260 | DeclareAndCast(IGESDimen_CenterLine,anent,ent); |
261 | if (anent.IsNull()) break; |
262 | IGESDimen_ToolCenterLine tool; |
263 | return tool.OwnCorrect(anent); |
264 | } |
265 | case 6 : { |
266 | DeclareAndCast(IGESDimen_DimensionDisplayData,anent,ent); |
267 | if (anent.IsNull()) break; |
268 | IGESDimen_ToolDimensionDisplayData tool; |
269 | return tool.OwnCorrect(anent); |
270 | } |
271 | case 7 : { |
272 | DeclareAndCast(IGESDimen_DimensionTolerance,anent,ent); |
273 | if (anent.IsNull()) break; |
274 | IGESDimen_ToolDimensionTolerance tool; |
275 | return tool.OwnCorrect(anent); |
276 | } |
277 | case 8 : { |
278 | DeclareAndCast(IGESDimen_DimensionUnits,anent,ent); |
279 | if (anent.IsNull()) break; |
280 | IGESDimen_ToolDimensionUnits tool; |
281 | return tool.OwnCorrect(anent); |
282 | } |
283 | case 9 : { |
284 | DeclareAndCast(IGESDimen_DimensionedGeometry,anent,ent); |
285 | if (anent.IsNull()) break; |
286 | IGESDimen_ToolDimensionedGeometry tool; |
287 | return tool.OwnCorrect(anent); |
288 | } |
289 | case 16 : { |
290 | DeclareAndCast(IGESDimen_NewDimensionedGeometry,anent,ent); |
291 | if (anent.IsNull()) break; |
292 | IGESDimen_ToolNewDimensionedGeometry tool; |
293 | return tool.OwnCorrect(anent); |
294 | } |
295 | case 21 : { |
296 | DeclareAndCast(IGESDimen_Section,anent,ent); |
297 | if (anent.IsNull()) break; |
298 | IGESDimen_ToolSection tool; |
299 | return tool.OwnCorrect(anent); |
300 | } |
301 | case 23 : { |
302 | DeclareAndCast(IGESDimen_WitnessLine,anent,ent); |
303 | if (anent.IsNull()) break; |
304 | IGESDimen_ToolWitnessLine tool; |
305 | return tool.OwnCorrect(anent); |
306 | } |
307 | default : break; |
308 | } |
309 | return Standard_False; |
310 | } |