0933d807122d0369a1859972a9af1d43b527fd0d
[occt.git] / src / TestTopOpe / TestTopOpe_MiscBOOP.cxx
1 // Created on: 1996-02-05
2 // Created by: Jea Yves LEBEY
3 // Copyright (c) 1996-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21
22 #include <TestTopOpe_BOOP.hxx>
23 #include <TopOpeBRep_FacesIntersector.hxx>
24 #include <TopOpeBRep_EdgesIntersector.hxx>
25 #include <TopOpeBRep_ShapeIntersector.hxx>
26 #include <TopAbs.hxx>
27 #include <gp_Pnt.hxx>
28
29
30 TestTopOpe_BOOP::TestTopOpe_BOOP(const char* keys[],
31                                  const char* resnamdef)
32 {
33   Standard_Integer i;
34   for (i=0;i<TESTTOPOPE_NKEYS; i++) mykeys[i] = keys[i]; 
35   myresnamdef = resnamdef;
36   myS1type = myS2type = TopAbs_SHAPE;
37   mynameS1 = ""; mynameS2 = "";
38   myPREPdone = Standard_False;
39   myBOOdone = Standard_False;
40   myNresult = 0;
41   mylastPREP = -1; mytodoPREP = 999;
42   myPDSF = NULL;
43   mycomn = 0;
44 }
45
46 void TestTopOpe_BOOP::Tinit()
47 {
48   mycomn = 0;
49 }
50
51 Standard_Integer TestTopOpe_BOOP::Tnb() const
52 {
53   return mycomn;
54 }
55
56 Standard_Boolean TestTopOpe_BOOP::Tadd(const TCollection_AsciiString& k,const Standard_Integer i,const TCollection_AsciiString& h) 
57 {
58   if (mycomn + 1 == TESTTOPOPE_NTKEYS) return Standard_False;
59   Standard_Integer r = mycomn++;
60   mycomk[r] = k;
61   mycomi[r] = i;
62   mycomh[r] = h;
63   return Standard_True;
64 }
65
66 static TCollection_AsciiString TestTopOpebibi = "";
67
68 const TCollection_AsciiString& TestTopOpe_BOOP::Tkeys(const Standard_Integer i) const
69 {
70   if (i < mycomn ) return mycomk[i];
71   return TestTopOpebibi;
72 }
73
74 const TCollection_AsciiString& TestTopOpe_BOOP::Thelp(const Standard_Integer i) const
75 {
76   if (i < mycomn ) return mycomh[i];
77   return TestTopOpebibi;
78 }
79
80 Standard_Integer TestTopOpe_BOOP::Tstep(const TCollection_AsciiString& s) const
81 {
82   for (Standard_Integer i = 0; i<mycomn; i++) {
83     if (mycomk[i] == s) return mycomi[i];
84   }
85   return -1;
86 }
87
88 Operation_t TestTopOpe_BOOP::Operation(const char* key) const 
89 {
90   if (key == NULL) return BOOP_UND;
91
92   Operation_t o = BOOP_UND;
93   if      (!strcmp(key,mykeys[BOOP_TOPX])) o = BOOP_TOPX;
94   else if (!strcmp(key,mykeys[BOOP_SECC])) o = BOOP_SECC;
95   else if (!strcmp(key,mykeys[BOOP_SECE])) o = BOOP_SECE;
96   else if (!strcmp(key,mykeys[BOOP_SEC])) o = BOOP_SEC;
97   else if (!strcmp(key,mykeys[BOOP_COM])) o = BOOP_COM;
98   else if (!strcmp(key,mykeys[BOOP_C12])) o = BOOP_C12;
99   else if (!strcmp(key,mykeys[BOOP_C21])) o = BOOP_C21;
100   else if (!strcmp(key,mykeys[BOOP_FUS])) o = BOOP_FUS;
101
102   return o;
103 }
104
105 Standard_Boolean TestTopOpe_BOOP::IsBooope(const char* key) const
106 {
107   Operation_t o = Operation(key);
108   Standard_Boolean res = (o == BOOP_SECC || o == BOOP_SECE || o == BOOP_SEC || 
109              o == BOOP_C12 || o == BOOP_C21 || o == BOOP_COM || o == BOOP_FUS);
110   return res;
111 }
112
113 void TestTopOpe_BOOP::SetCurrentHB(const Handle(TopOpeBRepBuild_HBuilder)& HB) {myHB = HB;}
114 void TestTopOpe_BOOP::SetCurrentHDS(const Handle(TopOpeBRepDS_HDataStructure)& HDS) {myHDS = HDS;}
115 void TestTopOpe_BOOP::SetShape1(const TopoDS_Shape& S1) 
116 {
117   if (S1.IsNull()) { myS1.Nullify(); return;} 
118   myS1=S1;myS1type=myS1.ShapeType();
119 }
120 void TestTopOpe_BOOP::SetShape2(const TopoDS_Shape& S2) 
121 {
122   if (S2.IsNull()) { myS2.Nullify(); return;} 
123   myS2=S2;myS2type=myS2.ShapeType();
124 }
125
126 Handle(TopOpeBRepBuild_HBuilder)& TestTopOpe_BOOP::ChangeCurrentHB() {return myHB;}
127 Handle(TopOpeBRepDS_HDataStructure)& TestTopOpe_BOOP::ChangeCurrentDS() {return myHDS;}
128 TopoDS_Shape& TestTopOpe_BOOP::ChangeShape1() {return myS1;}
129 TopoDS_Shape& TestTopOpe_BOOP::ChangeShape2() {return myS2;}
130 VarsTopo& TestTopOpe_BOOP::ChangeVarsTopo() { return myVarsTopo; }
131 const TCollection_AsciiString& TestTopOpe_BOOP::nameS1() const {return mynameS1;}
132 const TCollection_AsciiString& TestTopOpe_BOOP::nameS2() const {return mynameS2;}
133 const Handle(TopOpeBRepBuild_HBuilder)& TestTopOpe_BOOP::HBuilder() const { return myHB; }
134 void TestTopOpe_BOOP::SetMode(const Standard_Integer mode){myVarsTopo.SetMode(mode);}
135 Standard_Integer TestTopOpe_BOOP::GetMode() const { return myVarsTopo.GetMode(); }