Commit | Line | Data |
---|---|---|
b311480e | 1 | // Created on: 2000-10-02 |
2 | // Created by: Pavel TELKOV | |
973c2be1 | 3 | // Copyright (c) 2000-2014 OPEN CASCADE SAS |
b311480e | 4 | // |
973c2be1 | 5 | // This file is part of Open CASCADE Technology software library. |
b311480e | 6 | // |
d5f74e42 | 7 | // This library is free software; you can redistribute it and/or modify it under |
8 | // the terms of the GNU Lesser General Public License version 2.1 as published | |
973c2be1 | 9 | // by the Free Software Foundation, with special exception defined in the file |
10 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT | |
11 | // distribution for complete text of the license and disclaimer of any warranty. | |
b311480e | 12 | // |
973c2be1 | 13 | // Alternatively, this file may be used under the terms of Open CASCADE |
14 | // commercial license or contractual agreement. | |
7fd59977 | 15 | |
bc73b006 | 16 | #include <XCAFDoc_LayerTool.hxx> |
42cf5bc1 | 17 | |
18 | #include <Standard_GUID.hxx> | |
19 | #include <Standard_Type.hxx> | |
20 | #include <TCollection_ExtendedString.hxx> | |
7fd59977 | 21 | #include <TDataStd_Name.hxx> |
42cf5bc1 | 22 | #include <TDataStd_UAttribute.hxx> |
23 | #include <TDF_Attribute.hxx> | |
7fd59977 | 24 | #include <TDF_ChildIDIterator.hxx> |
25 | #include <TDF_ChildIterator.hxx> | |
42cf5bc1 | 26 | #include <TDF_Label.hxx> |
27 | #include <TDF_RelocationTable.hxx> | |
28 | #include <TopoDS_Shape.hxx> | |
7fd59977 | 29 | #include <XCAFDoc.hxx> |
42cf5bc1 | 30 | #include <XCAFDoc_DocumentTool.hxx> |
31 | #include <XCAFDoc_GraphNode.hxx> | |
42cf5bc1 | 32 | #include <XCAFDoc_ShapeTool.hxx> |
7fd59977 | 33 | |
c99ad5d7 | 34 | IMPLEMENT_DERIVED_ATTRIBUTE_WITH_TYPE(XCAFDoc_LayerTool,TDataStd_GenericEmpty,"xcaf","LayerTool") |
92efcf78 | 35 | |
7fd59977 | 36 | //======================================================================= |
37 | //function : Constructor | |
38 | //purpose : | |
39 | //======================================================================= | |
7fd59977 | 40 | XCAFDoc_LayerTool::XCAFDoc_LayerTool() |
41 | { | |
42 | } | |
43 | ||
44 | ||
45 | //======================================================================= | |
46 | //function : Set | |
47 | //purpose : | |
48 | //======================================================================= | |
49 | ||
50 | Handle(XCAFDoc_LayerTool) XCAFDoc_LayerTool::Set(const TDF_Label& L) | |
51 | { | |
52 | Handle(XCAFDoc_LayerTool) A; | |
53 | if (!L.FindAttribute (XCAFDoc_LayerTool::GetID(), A)) { | |
54 | A = new XCAFDoc_LayerTool (); | |
55 | L.AddAttribute(A); | |
56 | A->myShapeTool = XCAFDoc_DocumentTool::ShapeTool(L); | |
57 | } | |
58 | return A; | |
59 | } | |
60 | ||
61 | ||
62 | //======================================================================= | |
63 | //function : GetID | |
64 | //purpose : | |
65 | //======================================================================= | |
66 | ||
67 | const Standard_GUID& XCAFDoc_LayerTool::GetID() | |
68 | { | |
69 | static Standard_GUID LayerTblID ("efd212f4-6dfd-11d4-b9c8-0060b0ee281b"); | |
70 | return LayerTblID; | |
71 | } | |
72 | ||
73 | ||
74 | //======================================================================= | |
75 | //function : BaseLabel | |
76 | //purpose : | |
77 | //======================================================================= | |
78 | ||
79 | TDF_Label XCAFDoc_LayerTool::BaseLabel() const | |
80 | { | |
81 | return Label(); | |
82 | } | |
83 | ||
84 | ||
85 | //======================================================================= | |
86 | //function : ShapeTool | |
87 | //purpose : | |
88 | //======================================================================= | |
89 | ||
90 | const Handle(XCAFDoc_ShapeTool)& XCAFDoc_LayerTool::ShapeTool() | |
91 | { | |
92 | if (myShapeTool.IsNull()) | |
93 | myShapeTool = XCAFDoc_DocumentTool::ShapeTool( Label() ); | |
94 | return myShapeTool; | |
95 | } | |
96 | ||
97 | ||
98 | //======================================================================= | |
99 | //function : IsLayer | |
100 | //purpose : | |
101 | //======================================================================= | |
102 | ||
103 | Standard_Boolean XCAFDoc_LayerTool::IsLayer(const TDF_Label& lab) const | |
104 | { | |
105 | TCollection_ExtendedString aLayer; | |
106 | return GetLayer ( lab, aLayer); | |
107 | } | |
108 | ||
109 | ||
110 | //======================================================================= | |
111 | //function : GetLayer | |
112 | //purpose : | |
113 | //======================================================================= | |
114 | ||
115 | Standard_Boolean XCAFDoc_LayerTool::GetLayer(const TDF_Label& lab, | |
116 | TCollection_ExtendedString& aLayer) const | |
117 | { | |
118 | if ( lab.Father() != Label() ) return Standard_False; | |
119 | // Handle(XCAFDoc_GraphNode) aGN; | |
120 | // if (! lab.FindAttribute (XCAFDoc::LayerRefGUID(), aGN)) | |
121 | // return Standard_False; | |
122 | Handle(TDataStd_Name) aName; | |
123 | Standard_Boolean status = Standard_False; | |
124 | if ( lab.FindAttribute (TDataStd_Name::GetID(), aName) ) { | |
125 | aLayer = aName->Get(); | |
126 | status = Standard_True; | |
127 | } | |
128 | return status; | |
129 | } | |
130 | ||
131 | //======================================================================= | |
132 | //function : FindLayer | |
133 | //purpose : | |
134 | //======================================================================= | |
135 | ||
136 | Standard_Boolean XCAFDoc_LayerTool::FindLayer(const TCollection_ExtendedString& aLayer, | |
137 | TDF_Label& lab) const | |
138 | { | |
139 | lab = FindLayer(aLayer); | |
140 | return ( !lab.IsNull() ); | |
141 | } | |
142 | ||
143 | ||
144 | //======================================================================= | |
145 | //function : FindLayer | |
146 | //purpose : | |
147 | //======================================================================= | |
148 | ||
149 | TDF_Label XCAFDoc_LayerTool::FindLayer(const TCollection_ExtendedString& aLayer) const | |
150 | { | |
151 | TDF_ChildIterator it( Label() ); | |
152 | TDF_Label lab; | |
153 | for (; it.More(); it.Next()) { | |
154 | TDF_Label aLabel = it.Value(); | |
155 | Handle(TDataStd_Name) aName; | |
156 | if ( aLabel.FindAttribute (TDataStd_Name::GetID(), aName) && (aName->Get().IsEqual(aLayer)) ) { | |
157 | lab = aLabel; | |
158 | break; | |
159 | } | |
160 | } | |
161 | return lab; | |
162 | } | |
163 | ||
164 | ||
165 | //======================================================================= | |
166 | //function : AddLayer | |
167 | //purpose : | |
168 | //======================================================================= | |
169 | ||
170 | TDF_Label XCAFDoc_LayerTool::AddLayer(const TCollection_ExtendedString& aLayer) const | |
171 | { | |
172 | TDF_Label lab; | |
173 | if ( FindLayer(aLayer, lab) ) | |
174 | return lab; | |
175 | TDF_TagSource aTag; | |
176 | TDF_Label aLabel = aTag.NewChild( Label() ); | |
177 | Handle(TDataStd_Name) aName = new TDataStd_Name; | |
178 | aName->Set(aLabel, aLayer); | |
179 | return aLabel; | |
180 | } | |
181 | ||
182 | ||
183 | //======================================================================= | |
184 | //function : RemoveLayer | |
185 | //purpose : | |
186 | //======================================================================= | |
187 | ||
188 | void XCAFDoc_LayerTool::RemoveLayer(const TDF_Label& lab) const | |
189 | { | |
190 | lab.ForgetAllAttributes (Standard_True); | |
191 | } | |
192 | ||
193 | ||
194 | //======================================================================= | |
195 | //function : GetLayerLabels | |
196 | //purpose : | |
197 | //======================================================================= | |
198 | ||
199 | void XCAFDoc_LayerTool::GetLayerLabels(TDF_LabelSequence& Labels) const | |
200 | { | |
201 | Labels.Clear(); | |
202 | TDF_ChildIterator ChildIterator( Label() ); | |
203 | for (; ChildIterator.More(); ChildIterator.Next()) { | |
204 | TDF_Label L = ChildIterator.Value(); | |
205 | if ( IsLayer(L)) Labels.Append(L); | |
206 | } | |
207 | } | |
208 | ||
209 | ||
210 | //======================================================================= | |
211 | //function : SetLayer | |
212 | //purpose : | |
213 | //======================================================================= | |
214 | ||
215 | void XCAFDoc_LayerTool::SetLayer(const TDF_Label& L, | |
216 | const TDF_Label& LayerL, | |
217 | const Standard_Boolean shapeInOneLayer) const | |
218 | { | |
219 | if (shapeInOneLayer) UnSetLayers( L ); | |
220 | Handle(XCAFDoc_GraphNode) FGNode; | |
221 | Handle(XCAFDoc_GraphNode) ChGNode; | |
222 | if (! LayerL.FindAttribute( XCAFDoc::LayerRefGUID(), FGNode) ) { | |
223 | FGNode = new XCAFDoc_GraphNode; | |
224 | FGNode = XCAFDoc_GraphNode::Set(LayerL); | |
225 | } | |
226 | if (! L.FindAttribute( XCAFDoc::LayerRefGUID(), ChGNode) ) { | |
227 | ChGNode = new XCAFDoc_GraphNode; | |
228 | ChGNode = XCAFDoc_GraphNode::Set(L); | |
229 | } | |
230 | FGNode->SetGraphID( XCAFDoc::LayerRefGUID() ); | |
231 | ChGNode->SetGraphID( XCAFDoc::LayerRefGUID() ); | |
232 | FGNode->SetChild(ChGNode); | |
233 | ChGNode->SetFather(FGNode); | |
234 | } | |
235 | ||
236 | ||
237 | //======================================================================= | |
238 | //function : SetLayer | |
239 | //purpose : | |
240 | //======================================================================= | |
241 | ||
242 | void XCAFDoc_LayerTool::SetLayer(const TDF_Label& L, | |
243 | const TCollection_ExtendedString& aLayer, | |
244 | const Standard_Boolean shapeInOneLayer) const | |
245 | { | |
246 | TDF_Label aLayerL = AddLayer(aLayer); | |
247 | SetLayer(L, aLayerL, shapeInOneLayer); | |
248 | } | |
249 | ||
250 | ||
251 | //======================================================================= | |
252 | //function : UnSetLayers | |
253 | //purpose : | |
254 | //======================================================================= | |
255 | ||
256 | void XCAFDoc_LayerTool::UnSetLayers(const TDF_Label& L) const | |
257 | { | |
258 | Handle(XCAFDoc_GraphNode) ChGNode, FGNode; | |
259 | if ( L.FindAttribute (XCAFDoc::LayerRefGUID(), ChGNode) ) { | |
260 | while (ChGNode->NbFathers()!= 0) { | |
261 | FGNode = ChGNode->GetFather(1); | |
262 | FGNode-> UnSetChild(ChGNode); | |
263 | // ChGNode->GetFather(1)->UnSetChild(ChGNode); | |
264 | } | |
265 | L.ForgetAttribute ( XCAFDoc::LayerRefGUID() ); | |
266 | } | |
267 | } | |
268 | ||
269 | ||
270 | //======================================================================= | |
271 | //function : UnSetOneLayer | |
272 | //purpose : | |
273 | //======================================================================= | |
274 | ||
275 | Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TDF_Label& L, | |
276 | const TCollection_ExtendedString& aLayer) const | |
277 | { | |
278 | TDF_Label alab; | |
279 | if ( !FindLayer(aLayer, alab) ) return Standard_False; | |
a28d5778 RL |
280 | return UnSetOneLayer (L, alab); |
281 | } | |
282 | ||
283 | //======================================================================= | |
284 | //function : UnSetOneLayer | |
285 | //purpose : | |
286 | //======================================================================= | |
287 | ||
288 | Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TDF_Label& L, | |
289 | const TDF_Label& aLayerL) const | |
290 | { | |
7fd59977 | 291 | Handle(XCAFDoc_GraphNode) FGNode, ChGNode; |
292 | if ( !L.FindAttribute (XCAFDoc::LayerRefGUID(), ChGNode) ) return Standard_False; | |
a28d5778 | 293 | if ( !aLayerL.FindAttribute (XCAFDoc::LayerRefGUID(), FGNode) ) return Standard_False; |
7fd59977 | 294 | ChGNode->UnSetFather(FGNode); |
295 | return Standard_True; | |
296 | } | |
a28d5778 | 297 | |
7fd59977 | 298 | //======================================================================= |
299 | //function : IsSet | |
300 | //purpose : | |
301 | //======================================================================= | |
302 | ||
303 | Standard_Boolean XCAFDoc_LayerTool::IsSet(const TDF_Label& L, | |
304 | const TCollection_ExtendedString& aLayer) const | |
305 | { | |
306 | Handle(XCAFDoc_GraphNode) Node; | |
307 | Handle(TDataStd_Name) aName; | |
308 | TDF_Label lab; | |
309 | if (L.FindAttribute(XCAFDoc::LayerRefGUID(), Node) && (Node->NbFathers() != 0 ) ) { | |
310 | Standard_Integer i = 1; | |
311 | for (; i <= Node->NbFathers(); i++) { | |
312 | lab = Node->GetFather(i)->Label(); | |
313 | if (lab.FindAttribute(TDataStd_Name::GetID(), aName) && ( aName->Get().IsEqual(aLayer) ) ) | |
314 | return Standard_True; | |
315 | } | |
316 | } | |
317 | return Standard_False; | |
318 | } | |
319 | ||
320 | ||
a28d5778 RL |
321 | //======================================================================= |
322 | //function : IsSet | |
323 | //purpose : | |
324 | //======================================================================= | |
325 | ||
326 | Standard_Boolean XCAFDoc_LayerTool::IsSet(const TDF_Label& L, | |
327 | const TDF_Label& aLayerL) const | |
328 | { | |
329 | Handle(XCAFDoc_GraphNode) Node; | |
330 | Handle(TDataStd_Name) aName; | |
331 | TDF_Label lab; | |
332 | if (L.FindAttribute(XCAFDoc::LayerRefGUID(), Node) && (Node->NbFathers() != 0 ) ) { | |
333 | Standard_Integer i = 1; | |
334 | for (; i <= Node->NbFathers(); i++) { | |
335 | lab = Node->GetFather(i)->Label(); | |
336 | if (lab == aLayerL) | |
337 | return Standard_True; | |
338 | } | |
339 | } | |
340 | return Standard_False; | |
341 | } | |
342 | ||
7fd59977 | 343 | //======================================================================= |
344 | //function : GetLayers | |
345 | //purpose : | |
346 | //======================================================================= | |
347 | ||
348 | Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TDF_Label& L, | |
349 | Handle(TColStd_HSequenceOfExtendedString)& aLayerS) | |
350 | { | |
351 | aLayerS = GetLayers(L); | |
a28d5778 | 352 | return (aLayerS->Length() != 0); |
7fd59977 | 353 | } |
354 | ||
7fd59977 | 355 | //======================================================================= |
356 | //function : GetLayers | |
357 | //purpose : | |
358 | //======================================================================= | |
359 | ||
a28d5778 RL |
360 | Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TDF_Label& L, |
361 | TDF_LabelSequence& aLayerLS) | |
7fd59977 | 362 | { |
a28d5778 | 363 | aLayerLS.Clear(); |
7fd59977 | 364 | Handle(XCAFDoc_GraphNode) aGNode; |
365 | if ( L.FindAttribute( XCAFDoc::LayerRefGUID(), aGNode) ) { | |
a28d5778 RL |
366 | for (Standard_Integer i = 1; i <= aGNode->NbFathers(); i++) { |
367 | aLayerLS.Append (aGNode->GetFather(i)->Label()); | |
7fd59977 | 368 | } |
a28d5778 RL |
369 | } |
370 | return aLayerLS.Length() > 0; | |
371 | } | |
372 | ||
373 | //======================================================================= | |
374 | //function : GetLayers | |
375 | //purpose : | |
376 | //======================================================================= | |
377 | ||
378 | Handle(TColStd_HSequenceOfExtendedString) XCAFDoc_LayerTool::GetLayers(const TDF_Label& L) | |
379 | { | |
380 | Handle(TColStd_HSequenceOfExtendedString) aLayerS = new TColStd_HSequenceOfExtendedString; | |
381 | TDF_LabelSequence aLayerLS; | |
382 | if ( GetLayers( L, aLayerLS ) ) { | |
383 | for (Standard_Integer i = 1; i <= aLayerLS.Length(); ++i) { | |
384 | const TDF_Label& aLab = aLayerLS(i); | |
385 | Handle(TDataStd_Name) aName; | |
386 | if ( aLab.FindAttribute( TDataStd_Name::GetID(), aName ) ) { | |
387 | aLayerS->Append( aName->Get() ); | |
7fd59977 | 388 | } |
389 | } | |
390 | } | |
391 | return aLayerS; | |
392 | } | |
393 | ||
394 | //======================================================================= | |
395 | //function : GetShapesOfLayer | |
396 | //purpose : | |
397 | //======================================================================= | |
398 | ||
399 | void XCAFDoc_LayerTool::GetShapesOfLayer(const TDF_Label& layerL, | |
400 | TDF_LabelSequence& ShLabels) const | |
401 | { | |
402 | ShLabels.Clear(); | |
403 | Handle(XCAFDoc_GraphNode) aGNode; | |
404 | if ( layerL.FindAttribute( XCAFDoc::LayerRefGUID(), aGNode) ) { | |
405 | for (Standard_Integer i = 1; i <= aGNode->NbChildren(); i++) { | |
406 | ShLabels.Append( aGNode->GetChild(i)->Label() ); | |
407 | } | |
408 | } | |
409 | } | |
410 | ||
411 | ||
412 | //======================================================================= | |
413 | //function : IsVisible | |
414 | //purpose : | |
415 | //======================================================================= | |
416 | ||
417 | Standard_Boolean XCAFDoc_LayerTool::IsVisible (const TDF_Label& layerL) const | |
418 | { | |
419 | Handle(TDataStd_UAttribute) aUAttr; | |
420 | return (!layerL.FindAttribute(XCAFDoc::InvisibleGUID(), aUAttr)); | |
421 | } | |
422 | ||
423 | ||
424 | //======================================================================= | |
425 | //function : SetVisibility | |
426 | //purpose : | |
427 | //======================================================================= | |
428 | ||
429 | void XCAFDoc_LayerTool::SetVisibility (const TDF_Label& layerL, | |
430 | const Standard_Boolean isvisible) const | |
431 | { | |
432 | Handle(TDataStd_UAttribute) aUAttr; | |
433 | if (! isvisible ) { | |
434 | if (!layerL.FindAttribute(XCAFDoc::InvisibleGUID(), aUAttr)) { | |
ad67e367 | 435 | TDataStd_UAttribute::Set( layerL, XCAFDoc::InvisibleGUID() ); |
7fd59977 | 436 | } |
437 | } | |
438 | else layerL.ForgetAttribute( XCAFDoc::InvisibleGUID() ); | |
439 | } | |
440 | ||
441 | ||
442 | //======================================================================= | |
443 | //function : SetLayer | |
444 | //purpose : | |
445 | //======================================================================= | |
446 | ||
447 | Standard_Boolean XCAFDoc_LayerTool::SetLayer(const TopoDS_Shape& Sh, | |
448 | const TDF_Label& LayerL, | |
449 | const Standard_Boolean shapeInOneLayer) | |
450 | { | |
451 | TDF_Label aLab; | |
452 | // if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
453 | // PTV 22.01.2003 set layer for shape with location if it is necessary | |
454 | if (! myShapeTool->Search( Sh, aLab ) ) return Standard_False; | |
455 | SetLayer(aLab, LayerL, shapeInOneLayer); | |
456 | return Standard_True; | |
457 | } | |
458 | ||
459 | ||
460 | //======================================================================= | |
461 | //function : SetLayer | |
462 | //purpose : | |
463 | //======================================================================= | |
464 | ||
465 | Standard_Boolean XCAFDoc_LayerTool::SetLayer(const TopoDS_Shape& Sh, | |
466 | const TCollection_ExtendedString& aLayer, | |
467 | const Standard_Boolean shapeInOneLayer) | |
468 | { | |
469 | TDF_Label aLayerL = AddLayer(aLayer); | |
470 | return SetLayer(Sh, aLayerL, shapeInOneLayer); | |
471 | } | |
472 | ||
473 | ||
474 | //======================================================================= | |
475 | //function : UnSetLayers | |
476 | //purpose : | |
477 | //======================================================================= | |
478 | ||
479 | Standard_Boolean XCAFDoc_LayerTool::UnSetLayers(const TopoDS_Shape& Sh) | |
480 | { | |
481 | TDF_Label aLab; | |
482 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
483 | UnSetLayers(aLab); | |
484 | return Standard_True; | |
485 | } | |
486 | ||
487 | ||
488 | //======================================================================= | |
489 | //function : UnSetOneLayer | |
490 | //purpose : | |
491 | //======================================================================= | |
492 | ||
493 | Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TopoDS_Shape& Sh, | |
494 | const TCollection_ExtendedString& aLayer) | |
495 | { | |
496 | TDF_Label aLab; | |
497 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
498 | return UnSetOneLayer(aLab, aLayer); | |
499 | } | |
500 | ||
a28d5778 RL |
501 | //======================================================================= |
502 | //function : UnSetOneLayer | |
503 | //purpose : | |
504 | //======================================================================= | |
505 | ||
506 | Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TopoDS_Shape& Sh, | |
507 | const TDF_Label& aLayerL) | |
508 | { | |
509 | TDF_Label aLab; | |
510 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
511 | return UnSetOneLayer(aLab, aLayerL); | |
512 | } | |
513 | ||
7fd59977 | 514 | //======================================================================= |
515 | //function : IsSet | |
516 | //purpose : | |
517 | //======================================================================= | |
518 | ||
519 | Standard_Boolean XCAFDoc_LayerTool::IsSet(const TopoDS_Shape& Sh, | |
520 | const TCollection_ExtendedString& aLayer) | |
521 | { | |
522 | TDF_Label aLab; | |
523 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
524 | return IsSet(aLab, aLayer); | |
525 | } | |
526 | ||
527 | ||
a28d5778 RL |
528 | //======================================================================= |
529 | //function : IsSet | |
530 | //purpose : | |
531 | //======================================================================= | |
532 | ||
533 | Standard_Boolean XCAFDoc_LayerTool::IsSet(const TopoDS_Shape& Sh, | |
534 | const TDF_Label& aLayerL) | |
535 | { | |
536 | TDF_Label aLab; | |
537 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
538 | return IsSet(aLab, aLayerL); | |
539 | } | |
540 | ||
7fd59977 | 541 | //======================================================================= |
542 | //function : GetLayers | |
543 | //purpose : | |
544 | //======================================================================= | |
545 | ||
546 | Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh, | |
547 | Handle(TColStd_HSequenceOfExtendedString)& aLayerS) | |
548 | { | |
549 | TDF_Label aLab; | |
550 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
551 | return GetLayers(aLab, aLayerS); | |
552 | } | |
553 | ||
a28d5778 RL |
554 | //======================================================================= |
555 | //function : GetLayers | |
556 | //purpose : | |
557 | //======================================================================= | |
558 | ||
559 | Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh, | |
560 | TDF_LabelSequence& aLayerLS) | |
561 | { | |
562 | TDF_Label aLab; | |
563 | if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; | |
564 | return GetLayers(aLab, aLayerLS); | |
565 | } | |
566 | ||
7fd59977 | 567 | |
568 | //======================================================================= | |
569 | //function : GetLayers | |
570 | //purpose : | |
571 | //======================================================================= | |
572 | ||
573 | Handle(TColStd_HSequenceOfExtendedString) XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh) | |
574 | { | |
575 | Handle(TColStd_HSequenceOfExtendedString) aLayerS = new TColStd_HSequenceOfExtendedString; | |
576 | TDF_Label aLab; | |
577 | if ( myShapeTool->FindShape(Sh, aLab) ) | |
578 | aLayerS = GetLayers(aLab); | |
579 | return aLayerS; | |
580 | } | |
581 | ||
582 | ||
583 | //======================================================================= | |
584 | //function : ID | |
585 | //purpose : | |
586 | //======================================================================= | |
587 | ||
588 | const Standard_GUID& XCAFDoc_LayerTool::ID() const | |
589 | { | |
590 | return GetID(); | |
591 | } | |
592 | ||
bc73b006 | 593 | //======================================================================= |
594 | //function : DumpJson | |
595 | //purpose : | |
596 | //======================================================================= | |
597 | void XCAFDoc_LayerTool::DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth) const | |
598 | { | |
599 | OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream) | |
600 | ||
601 | OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute) | |
602 | ||
603 | OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myShapeTool.get()) | |
c99ad5d7 | 604 | } |