0022898: IGES import fails in german environment
[occt.git] / src / QABugs / QABugs_9.cxx
1 // Created on: 2002-03-18
2 // Created by: QA Admin
3 // Copyright (c) 2002-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20 #include <QABugs.hxx>
21
22 #include <Draw.hxx>
23 #include <Draw_Interpretor.hxx>
24 #include <DBRep.hxx>
25 #include <DrawTrSurf.hxx>
26 #include <AIS_InteractiveContext.hxx>
27 #include <ViewerTest.hxx>
28 #include <AIS_Shape.hxx>
29 #include <TopoDS_Shape.hxx>
30
31 #include <gp_Ax2.hxx>
32 #include <gp_Pnt.hxx>
33 #include <Geom_RectangularTrimmedSurface.hxx>
34 #include <BRepBuilderAPI_MakeFace.hxx>
35 #include <GC_MakeTrimmedCone.hxx>
36
37 static Standard_Integer BUC60857 (Draw_Interpretor& di, Standard_Integer /*argc*/,const char ** argv)
38 {
39   gp_Ax2  Cone_Ax;
40   double R1=8, R2=16, H1=20, H2=40, angle;
41   gp_Pnt P0(0,0,0), P1(0,0,20), P2(0,0,45);
42   angle = 2*M_PI;
43
44   Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
45   if(aContext.IsNull()) {
46     di << "Use vinit command before " << argv[0] << "\n";
47     return 1;
48   }
49
50   Handle(Geom_RectangularTrimmedSurface) S = GC_MakeTrimmedCone (P1, P2, R1, R2).Value();
51   TopoDS_Shape myshape = BRepBuilderAPI_MakeFace(S, Precision::Confusion()).Shape();
52   DBRep::Set("BUC60857_BLUE",myshape);
53   Handle(AIS_Shape) ais1 = new AIS_Shape(myshape);
54   aContext->Display(ais1);
55   aContext->SetColor(ais1, Quantity_NOC_BLUE1);
56
57   Handle(Geom_RectangularTrimmedSurface) S2 = GC_MakeTrimmedCone (P1, P2, R1, 0).Value();
58   TopoDS_Shape myshape2 = BRepBuilderAPI_MakeFace(S2, Precision::Confusion()).Shape();
59   DBRep::Set("BUC60857_RED",myshape2);
60   Handle(AIS_Shape) ais2 = new AIS_Shape(myshape2);
61   aContext->Display(ais2);
62   aContext->SetColor(ais2, Quantity_NOC_RED);
63
64   Handle(Geom_RectangularTrimmedSurface) S3 = GC_MakeTrimmedCone (P1, P2, R2, R1).Value();
65   TopoDS_Shape myshape3 = BRepBuilderAPI_MakeFace(S3, Precision::Confusion()).Shape();
66   DBRep::Set("BUC60857_GREEN",myshape3);
67   Handle(AIS_Shape) ais3 = new AIS_Shape(myshape3);
68   aContext->Display(ais3);
69   aContext->SetColor(ais3, Quantity_NOC_GREEN);
70
71   return 0;
72 }
73
74 #include <ViewerTest_DoubleMapOfInteractiveAndName.hxx>
75 #include <ViewerTest_DoubleMapIteratorOfDoubleMapOfInteractiveAndName.hxx>
76 #include <SelectMgr_Selection.hxx>
77 #include <StdSelect_BRepOwner.hxx>
78 #include <SelectBasics_SensitiveEntity.hxx>
79 #if ! defined(WNT)
80 extern ViewerTest_DoubleMapOfInteractiveAndName& GetMapOfAIS();
81 #else
82 Standard_EXPORT ViewerTest_DoubleMapOfInteractiveAndName& GetMapOfAIS();
83 #endif
84
85 static Standard_Integer OCC137 (Draw_Interpretor& di, Standard_Integer argc, const char ** argv) 
86 {
87   Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
88   if(aContext.IsNull()) {
89     di << argv[0] << "ERROR : use 'vinit' command before " << "\n";
90     return 1;
91   }
92   if ( argc < 2 || argc > 3) {
93     di << "ERROR : Usage : " << argv[0] << " highlight_mode [shape]" << "\n";
94     return 1;
95   }
96   
97   ViewerTest_DoubleMapOfInteractiveAndName aMap ;
98   if(argc != 3) {
99     aMap.Assign(GetMapOfAIS());
100   } else {
101     ViewerTest_DoubleMapOfInteractiveAndName& aMap1 = GetMapOfAIS();
102     TCollection_AsciiString aName(argv[2]);
103     Handle(AIS_InteractiveObject) AISObj;
104     if(!aMap1.IsBound2(aName)) {
105       di << "Use 'vdisplay' before" << "\n";
106       return 1;
107     } else {
108       AISObj = Handle(AIS_InteractiveObject)::DownCast(aMap1.Find2(aName));
109       if(AISObj.IsNull()){
110         di << argv[2] << " : No interactive object" << "\n";
111         return 1;
112       }
113       aMap.Bind(AISObj,aName);
114     }
115   }
116   ViewerTest_DoubleMapIteratorOfDoubleMapOfInteractiveAndName it(GetMapOfAIS());
117   while ( it.More() ) {
118     Handle(AIS_InteractiveObject) AISObj = Handle(AIS_InteractiveObject)::DownCast(it.Key1());
119     AISObj->SetHilightMode(Draw::Atoi(argv[1]));
120     if(AISObj->HasSelection(4)) {
121       //Handle(SelectMgr_Selection)& aSelection = AISObj->Selection(4);
122       const Handle(SelectMgr_Selection)& aSelection = AISObj->Selection(4);
123       if(!aSelection.IsNull()) {
124         for(aSelection->Init();aSelection->More();aSelection->Next()) {
125           Handle(StdSelect_BRepOwner) aO = Handle(StdSelect_BRepOwner)::DownCast(aSelection->Sensitive()->OwnerId());
126           aO->SetHilightMode(Draw::Atoi(argv[1]));
127         }
128       }
129     }
130     it.Next();
131   }
132   
133   return 0;
134 }
135
136 static Standard_Integer OCC137_z (Draw_Interpretor& di, Standard_Integer argc, const char ** argv) 
137 {
138   Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
139   if(aContext.IsNull()) {
140     di << argv[0] << "ERROR : use 'vinit' command before " << "\n";
141     return 1;
142   }
143   if ( argc != 1 && argc != 2) {
144     di << "ERROR : Usage : " << argv[0] << " [ZDetection_mode]" << "\n";
145     return 1;
146   }
147   aContext->SetZDetection(((argc == 1 || (argc == 2 && Draw::Atoi(argv[1]) == 1)) ? Standard_True : Standard_False));
148   return 0;
149 }
150
151 void QABugs::Commands_9(Draw_Interpretor& theCommands) {
152   const char *group = "QABugs";
153
154   theCommands.Add ("BUC60857", "BUC60857", __FILE__, BUC60857, group);
155   theCommands.Add("OCC137","OCC137 mode [shape]",__FILE__,OCC137,group);
156   theCommands.Add("OCC137_z","OCC137_z [ZDetection_mode]",__FILE__,OCC137_z,group);
157
158   return;
159 }