1 // Created on: 2002-06-17
2 // Created by: QA Admin
3 // Copyright (c) 2002-2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
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
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.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
18 #include <Draw_Interpretor.hxx>
19 #include <TopoDS_Face.hxx>
20 #include <TopoDS_Wire.hxx>
23 #include <BRep_Tool.hxx>
24 #include <GeomInt_IntSS.hxx>
25 #include <BRepBuilderAPI_MakeEdge.hxx>
26 #include <ViewerTest.hxx>
27 #include <AIS_Shape.hxx>
31 static int BUC60623(Draw_Interpretor& di, Standard_Integer argc, const char ** a)
35 di << "Usage : " << a[0] << " result Shape1 Shape2\n";
41 TopoDS_Face F1 = TopoDS::Face(DBRep::Get(a[2],TopAbs_FACE));
42 TopoDS_Face F2 = TopoDS::Face(DBRep::Get(a[3],TopAbs_FACE));
43 Handle(Geom_Surface) GSF1 = BRep_Tool::Surface(F1, L1);
44 Handle(Geom_Surface) GSF2 = BRep_Tool::Surface(F2, L2);
46 Inter.Perform(GSF1,GSF2, BRep_Tool::Tolerance(F1));
47 if (!Inter.IsDone()) {
48 di << "Intersection not done\n";
51 Standard_Integer nbsol = Inter.NbLines();
53 di << "The number of solutions is zero!" << "\n";
56 Handle(Geom_Curve) Sol = Inter.Line(1);
58 DBRep::Set(a[1], BRepBuilderAPI_MakeEdge(Sol));
60 } else di << "The first solution is Null!" << "\n";
66 #include<BRepBuilderAPI_MakeVertex.hxx>
67 #include<TCollection_ExtendedString.hxx>
68 #include<AIS_InteractiveContext.hxx>
69 #include<PrsDim_LengthDimension.hxx>
71 static Standard_Integer BUC60632(Draw_Interpretor& di, Standard_Integer /*n*/, const char ** a)
74 Handle(AIS_InteractiveContext) myAIScontext = ViewerTest::GetAISContext();
75 if(myAIScontext.IsNull()) {
76 di << "use 'vinit' command before " << a[0] << "\n";
79 myAIScontext->EraseAll (Standard_False);
81 TopoDS_Vertex V1 = BRepBuilderAPI_MakeVertex(gp_Pnt(0,0,0));
82 TopoDS_Vertex V2 = BRepBuilderAPI_MakeVertex(gp_Pnt(10,10,0));
84 Handle(AIS_Shape) Ve1 = new AIS_Shape(V1);
85 Handle(AIS_Shape) Ve2 = new AIS_Shape(V2);
87 myAIScontext->Display (Ve1, Standard_False);
88 myAIScontext->Display (Ve2, Standard_False);
90 Handle(Geom_Plane) Plane1 = new Geom_Plane(gp_Pnt(0,0,0),gp_Dir(0,0,1));
91 TCollection_ExtendedString Ext1("Dim1");
92 Handle(PrsDim_LengthDimension) Dim1 = new PrsDim_LengthDimension(V1,V2,Plane1->Pln());
93 Dim1->SetCustomValue (Draw::Atof(a[2]));
95 Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect();
96 anAspect->MakeArrows3d (Standard_False);
97 anAspect->MakeText3d (Standard_True);
98 anAspect->MakeTextShaded (Standard_True);
99 anAspect->TextAspect()->SetHeight (2.5);
100 anAspect->ArrowAspect()->SetLength (1.0);
101 Dim1->SetDimensionAspect (anAspect);
103 myAIScontext->SetDisplayMode (Dim1, Draw::Atoi(a[1]), Standard_False);
104 myAIScontext->Display (Dim1, Standard_True);
108 #include <BRepTools.hxx>
110 static Standard_Integer BUC60652(Draw_Interpretor& di, Standard_Integer argc, const char ** argv )
113 di << "Usage : BUC60652 fase" << "\n";
116 TopoDS_Shape shape = DBRep::Get( argv[1] );
117 TopoDS_Face face = TopoDS::Face( shape );
118 TopoDS_Wire ow = BRepTools::OuterWire( face );
119 DBRep::Set( "w", ow );
123 #include <BRepPrimAPI_MakeBox.hxx>
125 #include <BRepAlgoAPI_Fuse.hxx>
127 #include <V3d_View.hxx>
129 #include <Bnd_BoundSortBox.hxx>
130 #include <BRepBndLib.hxx>
131 #include <TopExp_Explorer.hxx>
133 static Standard_Integer BUC60729 (Draw_Interpretor& /*di*/,Standard_Integer /*argc*/, const char ** /*argv*/ )
136 TopoDS_Shape aShape = BRepPrimAPI_MakeBox(1,1,1).Solid();
138 BRepBndLib::Add(aShape , aMainBox );
140 Standard_Integer siMaxNbrBox = 6;
141 Bnd_BoundSortBox m_BoundSortBox;
142 m_BoundSortBox.Initialize( aMainBox, siMaxNbrBox );
143 TopExp_Explorer aExplorer(aShape,TopAbs_FACE);
147 // Bnd_Box __emptyBox; // Box is void !
148 // Handle(Bnd_HArray1OfBox) __aSetOfBox = new Bnd_HArray1OfBox( 1, siMaxNbrBox, __emptyBox );
150 for (i=1,aExplorer.ReInit(); aExplorer.More(); aExplorer.Next(),i++ )
152 const TopoDS_Shape& aFace = aExplorer.Current();
154 BRepBndLib::Add( aFace, aBox );
155 m_BoundSortBox.Add( aBox, i );
156 // __aSetOfBox->SetValue( i, aBox );
158 // m_BoundSortBox.Initialize( aMainBox, siMaxNbrBox );
163 static Standard_Integer BUC60724(Draw_Interpretor& di, Standard_Integer /*argc*/, const char ** /*argv*/ )
165 TCollection_AsciiString as1("");
166 TCollection_AsciiString as2('\0');
167 if(as1.ToCString() == NULL || as1.Length() != 0 || as1.ToCString()[0] != '\0')
168 di << "Error : the first string is not zero string : " << as1.ToCString() << "\n";
170 if(as2.ToCString() == NULL || as2.Length() != 0 || as2.ToCString()[0] != '\0')
171 di << "Error : the second string is not zero string : " << as2.ToCString() << "\n";
176 #include <UnitsAPI.hxx>
178 static Standard_Integer BUC60727(Draw_Interpretor& di, Standard_Integer /*argc*/, const char ** /*argv*/ )
180 di <<"Program Test\n";
181 UnitsAPI::SetLocalSystem(UnitsAPI_MDTV); //length is mm
182 di <<"AnyToLS (3,mm) = " << UnitsAPI::AnyToLS(3.,"mm") << "\n"; // result was WRONG.
187 #include <gp_Circ.hxx>
188 #include <Geom_Circle.hxx>
189 #include <GeomAPI.hxx>
190 #include <Geom2d_CartesianPoint.hxx>
191 #include <Geom2dGcc_QualifiedCurve.hxx>
192 #include <Geom2dGcc_Circ2d2TanRad.hxx>
193 #include <Geom2d_Circle.hxx>
194 #include <ProjLib.hxx>
196 static Standard_Integer BUC60792(Draw_Interpretor& di, Standard_Integer /*argc*/, const char ** argv )
198 Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
199 if(aContext.IsNull()) {
200 di << "use 'vinit' command before " << argv[0] << "\n";
204 gp_Pnt pt3d(0, 20, 150);
205 gp_Ax2 anAx2(gp_Pnt(0, 0, 0), gp_Dir(1, 0, 0), gp_Dir(0, 0, 1));
206 gp_Circ circ(anAx2, 50.0);
207 Handle(Geom_Circle) gcir = new Geom_Circle(circ);
208 Handle(Geom_Plane) pln = new Geom_Plane(gp_Ax3(gp_Pnt(0, 0, 0), gp_Dir(1, 0, 0)));
209 Handle(Geom2d_Curve) gcir1 = GeomAPI::To2d(gcir, pln->Pln());
210 TopoDS_Shape sh1 = BRepBuilderAPI_MakeEdge(gcir1, pln).Shape();
211 Handle(AIS_Shape) ais1 = new AIS_Shape(sh1);
212 aContext->SetColor (ais1, Quantity_NOC_INDIANRED, Standard_False);
213 aContext->Display (ais1, Standard_False);
214 DBRep::Set("sh0",sh1);
216 // local_get_2Dpointfrom3Dpoint(pt3d, pln->Pln(), thepoint);
217 thepoint = ProjLib::Project(pln->Pln(),pt3d);
218 Handle(Geom2d_CartesianPoint) ThePoint = new Geom2d_CartesianPoint(thepoint);
219 Geom2dAdaptor_Curve acur1(gcir1) ;
220 Geom2dGcc_QualifiedCurve qcur1(acur1, GccEnt_outside) ;
221 Geom2dGcc_Circ2d2TanRad cirtanrad(qcur1, ThePoint, 200.0, 0.0001);
222 printf("\n No. of solutions = %d\n", cirtanrad.NbSolutions());
223 Handle(Geom2d_Circle) gccc;
224 if( cirtanrad.NbSolutions() ) {
225 for( int i = 1; i<=cirtanrad.NbSolutions(); i++) {
226 gp_Circ2d ccc = cirtanrad.ThisSolution(i);
227 gccc = new Geom2d_Circle(ccc);
228 TopoDS_Shape sh = BRepBuilderAPI_MakeEdge(gccc, pln).Shape();
229 Standard_Character aStr[5];
230 Sprintf(aStr,"sh%d",i);
232 Handle(AIS_Shape) ais = new AIS_Shape(sh);
234 aContext->SetColor (ais, Quantity_NOC_GREEN, Standard_False);
236 aContext->SetColor (ais, Quantity_NOC_HOTPINK, Standard_False);
237 aContext->Display (ais, Standard_False);
238 Standard_Real ParSol1, ParSol2, ParArg1, ParArg2;
239 gp_Pnt2d PntSol1, PntSol2;
240 cirtanrad.Tangency1(i, ParSol1, ParArg1, PntSol1);
241 printf("%f\t%f\t\t%f\t%f\n",ParSol1, ParArg1,PntSol1.X(),PntSol1.Y());
242 cirtanrad.Tangency2(i, ParSol2, ParArg2, PntSol2);
243 printf("%f\t%f\t\t%f\t%f\n",ParSol2, ParArg2,PntSol2.X(),PntSol2.Y());
246 aContext->UpdateCurrentViewer();
250 #include <TColgp_Array2OfPnt.hxx>
251 #include <Geom_BezierSurface.hxx>
252 #include <BRepBuilderAPI_MakeFace.hxx>
253 #include <BRepBuilderAPI_MakeWire.hxx>
254 #include <Geom_OffsetSurface.hxx>
255 #include <BRepFilletAPI_MakeFillet2d.hxx>
256 #include <GeomProjLib.hxx>
257 #include <Geom_TrimmedCurve.hxx>
259 static Standard_Integer BUC60811(Draw_Interpretor& di, Standard_Integer argc, const char ** argv )
263 TopoDS_Edge aEdge = TopoDS::Edge(DBRep::Get(argv[2],TopAbs_EDGE));
264 TopoDS_Face aFace = TopoDS::Face(DBRep::Get(argv[3],TopAbs_FACE));
265 Standard_Real f = 0.0, l = 0.0;
266 Handle(Geom_Curve) GC = BRep_Tool::Curve(aEdge,f,l);
267 Handle(Geom_Surface) GS = BRep_Tool::Surface(aFace, L1);
268 GC = new Geom_TrimmedCurve(GC, f, l);
269 Handle(Geom_Curve) projCurve = GeomProjLib::Project(GC,GS);
270 BRepBuilderAPI_MakeWire *myWire;
271 myWire = new BRepBuilderAPI_MakeWire();
272 myWire->Add((BRepBuilderAPI_MakeEdge(projCurve)).Edge());
273 DBRep::Set(argv[1],myWire->Wire());
277 Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
278 if(aContext.IsNull()) {
279 di << "use 'vinit' command before " << argv[0] << "\n";
283 //step 1. creating a Bezier Surface and a patch
287 Handle(AIS_Shape) ais1;
288 Handle(AIS_Shape) ais2;
289 Handle(Geom_BezierSurface) BZ1;
290 TColgp_Array2OfPnt array1(1,3,1,3);
291 array1.SetValue(1,1,gp_Pnt(0,100,0));
292 array1.SetValue(1,2,gp_Pnt(200,100,0));
293 array1.SetValue(1,3,gp_Pnt(400,100,0));
294 array1.SetValue(2,1,gp_Pnt(0,200,100));
295 array1.SetValue(2,2,gp_Pnt(200,200,100));
296 array1.SetValue(2,3,gp_Pnt(400,200,100));
297 array1.SetValue(3,1,gp_Pnt(0,300,0));
298 array1.SetValue(3,2,gp_Pnt(200,300,0));
299 array1.SetValue(3,3,gp_Pnt(400,300,0));
300 BZ1 = new Geom_BezierSurface(array1);
301 BRepBuilderAPI_MakeFace bzf1( BZ1, Precision::Confusion() );
302 TopoDS_Face F1= bzf1.Face();
303 ais1 = new AIS_Shape(F1);
305 aContext->SetMaterial (ais1, Graphic3d_NameOfMaterial_Aluminum, Standard_False);
306 aContext->Display (ais1, Standard_False);
311 shell.Closed (BRep_Tool::IsClosed (shell));
314 gp_Dir D(0, 0, 1.0f);
315 BRepBuilderAPI_MakeWire mkw;
316 gp_Pnt p1 = gp_Pnt(150., 150.0, 260.);
317 gp_Pnt p2 = gp_Pnt(350., 150., 260.);
318 BRepBuilderAPI_MakeEdge* E1 = new BRepBuilderAPI_MakeEdge(p1,p2);
320 p1 = gp_Pnt(350., 150., 260.);
321 p2 = gp_Pnt(350., 250., 260.);
322 BRepBuilderAPI_MakeEdge* E2 = new BRepBuilderAPI_MakeEdge(p1,p2);
324 p1 = gp_Pnt(350., 250., 260.);
325 p2 = gp_Pnt(300., 250.0, 260.);
326 BRepBuilderAPI_MakeEdge* E3 = new BRepBuilderAPI_MakeEdge(p1,p2);
328 p1 = gp_Pnt(300., 250.0, 260.);
329 p2 = gp_Pnt(200., 200.0, 260.);
330 BRepBuilderAPI_MakeEdge* E4 = new BRepBuilderAPI_MakeEdge(p1,p2);
332 p1 = gp_Pnt(200., 200.0, 260.);
333 p2 = gp_Pnt(150., 200.0, 260.);
334 BRepBuilderAPI_MakeEdge* E5 = new BRepBuilderAPI_MakeEdge(p1,p2);
336 p1 = gp_Pnt(150., 200.0, 260.);
337 p2 = gp_Pnt(150., 150.0, 260.);
338 BRepBuilderAPI_MakeEdge* E6 = new BRepBuilderAPI_MakeEdge(p1,p2);
340 FP = BRepBuilderAPI_MakeFace(mkw.Wire());
341 ais2 = new AIS_Shape( FP );
342 aContext->SetMaterial (ais2, Graphic3d_NameOfMaterial_Aluminum, Standard_False);
343 aContext->Display (ais2, Standard_False);
347 //step 2. offsetting the surface.
348 Handle(Geom_OffsetSurface) offsurf;
349 offsurf = new Geom_OffsetSurface(BZ1, -100);
350 BRepBuilderAPI_MakeFace bzf2( offsurf, Precision::Confusion() );
351 TopoDS_Face F2= bzf2.Face();
352 Handle(AIS_Shape) ais22 = new AIS_Shape(F2);
353 aContext->Display (ais22, Standard_False);
356 //step 3. filleting the patch.
357 //( I want to project wire of this patch on offsetted surface above)
358 BRepFilletAPI_MakeFillet2d fillet( FP );
360 Ex.Init(FP, TopAbs_VERTEX);
361 TopoDS_Vertex v1 = TopoDS::Vertex(Ex.Current());
362 fillet.AddFillet(v1, 20);
363 di << "\nError is " << fillet.Status() << "\n";
364 // printf("\nError is %d ", fillet.Status());
366 TopoDS_Vertex V2 = TopoDS::Vertex(Ex.Current());
367 fillet.AddFillet(V2, 20);
368 di << "\nError is " << fillet.Status() << "\n";
369 // printf("\nError is %d ", fillet.Status());
371 FP1 = fillet.Shape();
372 ais2 = new AIS_Shape( FP1 );
373 aContext->SetMaterial (ais2, Graphic3d_NameOfMaterial_Aluminum, Standard_False);
374 aContext->Display (ais2, Standard_False);
376 DBRep::Set("FP1",FP1);
378 //step 4. Projecting the wire of this patch on offsetted surface.
379 // TopExp_Explorer Ex;
380 BRepBuilderAPI_MakeWire *myWire;
381 myWire = new BRepBuilderAPI_MakeWire();
382 for (Ex.Init( FP1, TopAbs_EDGE); Ex.More(); Ex.Next())
384 TopoDS_Edge e1 = TopoDS::Edge(Ex.Current());
385 Standard_Real f = 0.0, l = 0.0;
386 Handle(Geom_Curve) newBSplin = BRep_Tool::Curve(e1, f, l);
387 newBSplin = new Geom_TrimmedCurve(newBSplin, f, l);
388 Handle(Geom_Curve) projCurve = GeomProjLib::Project(newBSplin,offsurf);
389 myWire->Add((BRepBuilderAPI_MakeEdge(projCurve)).Edge());
391 Handle(AIS_Shape) ais33 = new AIS_Shape( myWire->Wire() );
392 aContext->Display (ais33, Standard_True);
394 DBRep::Set("Wire",myWire->Wire());
399 #include<GeomAPI_ExtremaCurveCurve.hxx>
401 static int BUC60825(Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
405 printf("Usage: %s edge1 edge2",argv[0]);
409 TopoDS_Edge E1 = TopoDS::Edge(DBRep::Get(argv[1])),
410 E2 = TopoDS::Edge(DBRep::Get(argv[2]));
412 Standard_Real fp , lp;
414 Handle(Geom_Curve) C1 = BRep_Tool::Curve(E1 , fp , lp),
415 C2 = BRep_Tool::Curve(E2 , fp , lp);
417 GeomAPI_ExtremaCurveCurve aExt(C1 , C2);
419 di << "NB RESULTS : " << aExt.NbExtrema() << "\n";
424 #include <BRepBuilderAPI_MakePolygon.hxx>
425 #include <BRepOffsetAPI_ThruSections.hxx>
427 static int OCC10006(Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
430 di << "Usage : " << argv[0] << "\n";
434 double bottompoints1[12] = { 10, -10, 0, 100, -10, 0, 100, -100, 0, 10, -100, 0};
435 double toppoints1[12] = { 0, 0, 10, 100, 0, 10, 100, -100, 10, 0, -100, 10};
436 double bottompoints2[12] = { 0, 0, 10.00, 100, 0, 10.00, 100, -100, 10.00, 0, -100, 10.00};
437 double toppoints2[12] = { 0, 0, 250, 100, 0, 250, 100, -100, 250, 0, -100, 250};
438 BRepBuilderAPI_MakePolygon bottompolygon1, toppolygon1, bottompolygon2, toppolygon2;
440 for (int i=0;i<4;i++) {
441 tmppnt.SetCoord(bottompoints1[3*i], bottompoints1[3*i+1], bottompoints1[3*i+2]);
442 bottompolygon1.Add(tmppnt);
443 tmppnt.SetCoord(toppoints1[3*i], toppoints1[3*i+1], toppoints1[3*i+2]);
444 toppolygon1.Add(tmppnt);
445 tmppnt.SetCoord(bottompoints2[3*i], bottompoints2[3*i+1], bottompoints2[3*i+2]);
446 bottompolygon2.Add(tmppnt);
447 tmppnt.SetCoord(toppoints2[3*i], toppoints2[3*i+1], toppoints2[3*i+2]);
448 toppolygon2.Add(tmppnt);
450 bottompolygon1.Close();
451 DBRep::Set("B1",bottompolygon1.Shape());
453 DBRep::Set("T1",toppolygon1.Shape());
454 bottompolygon2.Close();
455 DBRep::Set("B2",bottompolygon2.Shape());
457 DBRep::Set("T2",toppolygon2.Shape());
458 BRepOffsetAPI_ThruSections loft1(Standard_True, Standard_True);
459 loft1.AddWire(bottompolygon1.Wire());
460 loft1.AddWire(toppolygon1.Wire());
462 BRepOffsetAPI_ThruSections loft2(Standard_True, Standard_True);
463 loft2.AddWire(bottompolygon2.Wire());
464 loft2.AddWire(toppolygon2.Wire());
466 if (loft1.Shape().IsNull() || loft2.Shape().IsNull())
468 DBRep::Set("TS1",loft1.Shape());
469 DBRep::Set("TS2",loft2.Shape());
471 di << "BRepAlgoAPI_Fuse result(loft1.Shape(), loft2.Shape())\n";
472 BRepAlgoAPI_Fuse result(loft1.Shape(), loft2.Shape());
473 DBRep::Set("F", result.Shape());
478 #include <GC_MakeTrimmedCone.hxx>
480 static Standard_Integer BUC60856(Draw_Interpretor& di, Standard_Integer /*argc*/, const char ** argv )
482 Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
483 if(aContext.IsNull()) {
484 di << "use 'vinit' command before " << argv[0] << "\n";
491 P1(0,0,20), P2(0,0,45);
492 Handle(Geom_RectangularTrimmedSurface) S = GC_MakeTrimmedCone (P1, P2, R1, R2).Value();
493 TopoDS_Shape myshape = BRepBuilderAPI_MakeFace(S, Precision::Confusion()).Shape();
494 Handle(AIS_Shape) ais1 = new AIS_Shape(myshape);
495 aContext->Display (ais1, Standard_False);
496 aContext->SetColor (ais1, Quantity_NOC_BLUE1, Standard_False);
498 Handle(Geom_RectangularTrimmedSurface) S2 = GC_MakeTrimmedCone (P1, P2,R1, 0).Value();
499 TopoDS_Shape myshape2 = BRepBuilderAPI_MakeFace(S2, Precision::Confusion()).Shape();
500 Handle(AIS_Shape) ais2 = new AIS_Shape(myshape2);
501 aContext->Display (ais2, Standard_False);
502 aContext->SetColor (ais2, Quantity_NOC_RED, Standard_False);
506 //==========================================================================
507 //function : CoordLoad
508 // chargement d une face dans l explorer.
509 //==========================================================================
510 static Standard_Integer coordload (Draw_Interpretor& theDi,
511 Standard_Integer theArgsNb,
512 const char** theArgVec)
519 std::ifstream aFile (theArgVec[2], std::ios::in);
522 theDi << "unable to open " << theArgVec[2] << " for input\n";
527 memset (aLine, 0, 40);
528 aFile.getline (aLine, 80);
530 gp_Pnt aPnt (0.0, 0.0, 0.0);
532 aPnt.SetY (Draw::Atof (&aLine[20]));
534 aPnt.SetX (Draw::Atof (aLine));
535 TopoDS_Vertex aVert1 = BRepBuilderAPI_MakeVertex (aPnt);
536 BRepBuilderAPI_MakeWire aMakeWire;
539 memset (aLine, 0, 40);
540 aFile.getline (aLine, 80);
547 aPnt.SetY (Draw::Atof (&aLine[20]));
549 aPnt.SetX (Draw::Atof (aLine));
550 TopoDS_Vertex aVert2 = BRepBuilderAPI_MakeVertex (aPnt);
551 aMakeWire.Add (BRepBuilderAPI_MakeEdge (aVert1, aVert2));
556 if (!aMakeWire.IsDone())
558 DBRep::Set (theArgVec[1], TopoDS_Face());
562 BRepBuilderAPI_MakeFace aMakeFace (aMakeWire.Wire());
563 DBRep::Set (theArgVec[1], aMakeFace.IsDone() ? aMakeFace.Face() : TopoDS_Face());
567 static Standard_Integer TestMem (Draw_Interpretor& /*di*/,
568 Standard_Integer /*nb*/,
569 const char ** /*arg*/)
571 TCollection_ExtendedString aString(1024*1024, 'A');
575 static Standard_Integer BUC60876_ (Draw_Interpretor& di,
576 Standard_Integer argc,
579 Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
580 if(aContext.IsNull()) {
581 di << "use 'vinit' command before " << argv[0] << "\n";
584 if((argc != 2) && (argc != 3)) {
585 di<< "usage : " << argv[0] << " shape [mode==1]\n";
588 TopoDS_Shape aShape = DBRep::Get(argv[1]);
589 Handle(AIS_InteractiveObject) anIO = new AIS_Shape(aShape);
590 anIO->SetHilightMode((argc == 3) ? Draw::Atoi(argv[2]) : 1);
591 aContext->Display (anIO, Standard_True);
595 //=======================================================================
596 //function : buc60773
598 //=======================================================================
600 #include<TCollection_HAsciiString.hxx>
602 static Standard_Integer BUC60773 (Draw_Interpretor& /*di*/, Standard_Integer /*n*/, const char ** /*a*/)
604 Handle(TCollection_HAsciiString) hAscii = new TCollection_HAsciiString();
605 Standard_CString aStr = hAscii->ToCString();
606 TCollection_AsciiString aAscii(aStr);
611 #include<BRepPrimAPI_MakeCylinder.hxx>
612 #include<BRepPrimAPI_MakeCone.hxx>
614 static int TestCMD(Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
618 di << "Usage : " << argv[0] << "\n";
622 //Cylindre 36.085182 20.0 8.431413 88.04671 20.0 38.931416 10.0
624 Standard_Real x11 = 36.085182;
625 Standard_Real y11 = 20.0;
626 Standard_Real z11 = 8.431413;
627 Standard_Real x12 = 88.04671;
628 Standard_Real y12 = 20.0;
629 Standard_Real z12 = 38.931416;
630 Standard_Real radius = 10.0;
632 gp_Pnt base1(x11, y11, z11);
633 gp_Dir vect1(x12-x11, y12-y11, z12-z11);
634 gp_Ax2 axis1(base1, vect1);
635 Standard_Real height1 = sqrt( ((x12-x11)*(x12-x11)) + ((y12-y11)*(y12-y11)) + ((z12-z11)*(z12-z11)) );
636 BRepPrimAPI_MakeCylinder cylinder(axis1, radius, height1);
638 TopoDS_Shape SCyl = cylinder.Shape();
639 DBRep::Set("cyl", SCyl);
642 //Cone 70.7262 20.0 28.431412 105.36722 20.0 48.431416 6.0 3.0
643 Standard_Real x21 = 70.7262;
644 Standard_Real y21 = 20.0;
645 Standard_Real z21 = 28.431412;
646 Standard_Real x22 = 105.36722;
647 Standard_Real y22 = 20.0;
648 Standard_Real z22 = 48.431416;
649 Standard_Real radius1 = 6.0;
650 Standard_Real radius2 = 3.0;
652 gp_Pnt base2(x21, y21, z21);
653 gp_Dir vect2(x22-x21, y22-y21, z22-z21);
654 gp_Ax2 axis2(base2, vect2);
655 Standard_Real height2 = sqrt( ((x22-x21)*(x22-x21)) + ((y22-y21)*(y22-y21)) + ((z22-z21)*(z22-z21)) );
656 BRepPrimAPI_MakeCone cone(axis2, radius1, radius2, height2);
658 TopoDS_Shape SCon = cone.Shape();
659 DBRep::Set("con", SCon);
661 di << "BRepAlgoAPI_Fuse SFuse(SCyl, SCon)\n";
662 BRepAlgoAPI_Fuse SFuse(SCyl, SCon);
663 if (!SFuse.IsDone()) {
664 di << "Error: Boolean fuse operation failed !\n";
667 const TopoDS_Shape& fuse = SFuse.Shape();
668 DBRep::Set("fus", fuse);
673 #include <NCollection_DataMap.hxx>
674 #include <TColStd_HSequenceOfAsciiString.hxx>
675 #include <TopExp.hxx>
676 #include <TopoDS_Iterator.hxx>
678 //---------------------------------------------------------------------------------------
680 static Standard_Integer statface (Draw_Interpretor& di,Standard_Integer /*argc*/, const char ** argv )
683 TopoDS_Shape aShape = DBRep::Get(argv[1]);
686 di<<"Invalid input shape\n";
689 NCollection_DataMap<TCollection_AsciiString, Standard_Integer> aMap;
690 Handle(TColStd_HSequenceOfAsciiString) aSequence = new TColStd_HSequenceOfAsciiString;
691 Standard_CString aString;
692 Standard_Integer l=0;
693 TopExp_Explorer expl;
694 Standard_Real f3d,l3d;
695 for(expl.Init(aShape,TopAbs_FACE);expl.More();expl.Next())
698 TopoDS_Face aFace = TopoDS::Face (expl.Current());
699 Handle(Geom_Surface) aSurface = BRep_Tool::Surface(aFace);
700 aString = aSurface->DynamicType()->Name();
702 if (aMap.IsBound(aString))
703 aMap.ChangeFind(aString)++;
705 aMap.Bind(aString, 1);
706 aSequence->Append(aString);
710 for(expl.Init(aShape,TopAbs_FACE);expl.More();expl.Next())
712 TopoDS_Face aFace = TopoDS::Face (expl.Current());
713 TopoDS_Iterator anIt(aFace);
714 TopoDS_Wire aWire = TopoDS::Wire (anIt.Value());
715 TopoDS_Iterator it (aWire);
716 for (; it.More(); it.Next()) {
717 TopoDS_Edge Edge = TopoDS::Edge (it.Value());
718 Handle(Geom2d_Curve) aCurve2d = BRep_Tool::CurveOnSurface(Edge,aFace,f3d,l3d);
719 aString = aCurve2d->DynamicType()->Name();
720 if(aMap.IsBound(aString))
721 aMap.ChangeFind(aString)++;
723 aMap.Bind(aString, 1);
724 aSequence->Append(aString);
730 for (exp.Init(aShape,TopAbs_EDGE); exp.More(); exp.Next())
732 TopoDS_Edge Edge = TopoDS::Edge (exp.Current());
733 Handle(Geom_Curve) aCurve3d = BRep_Tool::Curve (Edge,f3d,l3d);
734 if(aCurve3d.IsNull())
738 aString = aCurve3d->DynamicType()->Name();
739 if (aMap.IsBound(aString))
741 aMap.ChangeFind(aString)++;
743 aMap.Bind(aString, 1);
744 aSequence->Append(aString);
751 for (Standard_Integer i = 1; i <= aSequence->Length(); i++) {
752 di << aMap.Find(aSequence->Value(i)) << " -- " << aSequence->Value(i).ToCString() << "\n";
756 di<<"Degenerated edges :\n";
757 di<<l<<" -- Degenerated edges \n";
763 #include <BRepBuilderAPI_Transform.hxx>
765 static Standard_Integer BUC60841(Draw_Interpretor& di, Standard_Integer argc, const char ** argv )
768 di << "Usage : " << argv[0] << "\n";
772 gp_Ax2 Ax2 = gp_Ax2(gp_Pnt(0, 621, 78), gp_Dir(0, 1,0));
773 BRepPrimAPI_MakeCylinder cyl(Ax2, 260, 150);
774 //BRepPrimAPI_MakeCylinder cyl(gp_Ax2(gp_Pnt(0, 621, 78), gp_Dir(0, 1,0)), 260, 150);
776 TopoDS_Shape sh1 = cyl.Shape();
777 DBRep::Set("sh1",sh1);
778 gp_Trsf trsf1, trsf2;
779 trsf1.SetTranslation(gp_Pnt(0.000000,700.000000,-170.000000),
780 gp_Pnt(0.000000,700.000000,-95.000000));
781 trsf2.SetRotation(gp_Ax1(gp_Pnt(0.000000,700.000000,-170.000000),
782 gp_Dir(0.000000,0.000000,1.000000)), 0.436111);
783 BRepBuilderAPI_Transform trans1(sh1, trsf1);
784 TopoDS_Shape sh2 = trans1.Shape();
785 DBRep::Set("sh2",sh2);
787 di << "BRepAlgoAPI_Fuse fuse1(sh1, sh2)\n";
788 BRepAlgoAPI_Fuse fuse1(sh1, sh2);
789 TopoDS_Shape fsh1 = fuse1.Shape();
790 DBRep::Set("fsh1",fsh1);
792 BRepBuilderAPI_Transform trans2(fsh1, trsf2);
793 TopoDS_Shape sh3 = trans2.Shape();
794 DBRep::Set("sh3",sh3);
796 di << "BRepAlgoAPI_Fuse fuse2(fsh1,sh3)\n";
797 BRepAlgoAPI_Fuse fuse2(fsh1, sh3);
798 const TopoDS_Shape& fsh2 = fuse2.Shape();
799 DBRep::Set("fsh2",fsh2);
801 Handle(AIS_Shape) aisp1 = new AIS_Shape(fsh2);
805 #include <ShapeBuild_Edge.hxx>
807 static Standard_Integer BUC60874(Draw_Interpretor& /*di*/, Standard_Integer /*argc*/, const char ** argv )
809 TopoDS_Edge e = TopoDS::Edge(DBRep::Get(argv[1],TopAbs_EDGE));
810 ShapeBuild_Edge().BuildCurve3d(e);
816 #include<TDF_Label.hxx>
817 #include<TDataStd_TreeNode.hxx>
819 #include<DDocStd.hxx>
823 #include<TDocStd_Modified.hxx>
824 #include<TDocStd_Application.hxx>
825 #include<TDF_Delta.hxx>
826 #include<TDataXtd_Constraint.hxx>
827 #include<TPrsStd_AISPresentation.hxx>
828 #include<TPrsStd_AISViewer.hxx>
829 #include<TNaming_Builder.hxx>
830 #include<TNaming_Naming.hxx>
831 #include<TNaming_NamedShape.hxx>
833 static int BUC60817(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
835 di << "Usage : " << argv[0] << " D\n";
841 if (!DDF::GetDF(argv[1],DF)) {di<<2;return 0;}
844 Handle(TDataStd_TreeNode) TN1,TN2;
846 DDF::AddLabel(DF,"0:2",L1);
847 TN1 = TDataStd_TreeNode::Set(L1);
849 DDF::AddLabel(DF,"0:3",L2);
850 TN2 = TDataStd_TreeNode::Set(L2);
853 if(!(TN2->IsDescendant(TN1))) {di<<3;return 0;}
854 if((TN1->IsDescendant(TN2))) {di<<4;return 0;}
860 static int BUC60831_1(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
862 di << "Usage : " << argv[0] << " D\n";
868 if (!DDF::GetDF(argv[1],DF)) {di<<-2;return 0;}
871 DDF::FindLabel(DF,"0:1",L,Standard_False);
872 Handle(TDocStd_Modified) MDF;
873 if (!L.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
874 MDF = new TDocStd_Modified();
875 L.Root().AddAttribute(MDF);
882 static int BUC60831_2(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
884 di << "Usage : " << argv[0] << " D Label\n";
890 if (!DDF::GetDF(argv[1],DF)) {di<<2;return 0;}
893 DDF::FindLabel(DF,argv[2],L,Standard_False);
895 TDocStd_Modified::Add(L);
901 static int BUC60836(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
903 di << "Usage : " << argv[0] << " D\n";
909 Handle(TDF_Data) aDF;
910 if (!DDF::GetDF(argv[1],aDF)) {di<<2;return 0;}
912 Handle(TDocStd_Document) aDocument;
913 if (!DDocStd::GetDocument(argv[1], aDocument)) {di<<3;return 0;}
916 Handle(TDataStd_TreeNode) TN;
918 aDocument->NewCommand();
919 DDF::AddLabel(aDF,"0:2",L);
920 TN = TDataStd_TreeNode::Set(L);
922 aDocument->NewCommand();
923 DDF::AddLabel(aDF,"0:3",L);
924 TN = TDataStd_TreeNode::Set(L);
926 aDocument->NewCommand();
927 DDF::AddLabel(aDF,"0:4",L);
928 TN = TDataStd_TreeNode::Set(L);
929 aDocument->NewCommand();
932 Us = aDocument->GetUndos();
933 Rs = aDocument->GetUndos();
936 char Names[10][5]={"n1","n2","n3","n4","n5","n6","n7","n8","n9","n10"};
938 TDF_ListIteratorOfDeltaList IDL;
939 for(IDL.Initialize(Us),i=1;IDL.More();IDL.Next(),i++){
940 Handle(TDF_Delta) D = IDL.Value();
941 TCollection_ExtendedString S(Names[i-1]);
943 // std::cout<<" U"<<i<<"="<<D->Name()<<std::endl;
949 Us = aDocument->GetUndos();
950 Rs = aDocument->GetRedos();
952 for(IDL.Initialize(Us),i=1;IDL.More();IDL.Next(),i++){
953 Handle(TDF_Delta) D = IDL.Value();
954 // std::cout<<" U"<<i<<"="<<D->Name()<<std::endl;
957 TCollection_ExtendedString n2name ("n2");
958 for(IDL.Initialize(Rs),i=1;IDL.More();IDL.Next(),i++){
959 Handle(TDF_Delta) D = IDL.Value();
960 if ( i == 1 && ! D->Name().IsEqual (n2name) )
971 static int BUC60847(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
973 di << "Usage : " << argv[0] << " D Shape\n";
978 Handle(TDF_Data) aDF;
979 if (!DDF::GetDF(argv[1],aDF)) {di<<2;return 0;}
981 TopoDS_Shape s = DBRep::Get(argv[2]);
982 if (s.IsNull()) { di <<"shape not found\n"; di<<3;return 0;}
984 DDF::AddLabel(aDF, "0:2", L);
985 TNaming_Builder SI (L);
988 Handle(TNaming_NamedShape) NS = new TNaming_NamedShape;
992 // if (!NS->IsEmpty()) {di<<3;return 0;}
993 if (NS->IsEmpty()) {di<<4;return 0;}
998 static int BUC60862(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
1000 di << "Usage : " << argv[0] << " D Shape\n";
1005 Handle(TDF_Data) aDF;
1006 if (!DDF::GetDF(argv[1],aDF)) {di<<2;return 0;}
1008 TopoDS_Shape s = DBRep::Get(argv[2]);
1009 if (s.IsNull()) { di <<"shape not found\n"; di<<3;return 0;}
1011 DDF::AddLabel(aDF, "0:2", L);
1012 TNaming_Builder SI (L);
1015 Handle(TNaming_NamedShape) NS = new TNaming_NamedShape;
1019 if (NS->IsEmpty()) {di<<4;return 0;}
1024 static int BUC60867(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
1026 TCollection_ExtendedString path (argv[1]);
1027 Handle(TDocStd_Application) A = DDocStd::GetApplication();
1028 Handle(TDocStd_Document) D;
1029 Standard_Integer insession = A->IsInSession(path);
1030 if (insession > 0) {
1031 di <<"document " << insession << " is already in session\n";
1035 PCDM_ReaderStatus Result = A->Open(path,D);
1036 if(Result==PCDM_RS_OK){
1045 static int BUC60910(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
1047 di << "Usage : " << argv[0] << " D\n";
1052 Handle(TDF_Data) aDF;
1053 if (!DDF::GetDF(argv[1],aDF)) {di<<2;return 0;}
1056 DDF::AddLabel(aDF, "0:2", L);
1058 Handle(TPrsStd_AISPresentation) AISP =
1059 TPrsStd_AISPresentation::Set(L,TDataXtd_Constraint::GetID());
1061 if (AISP->HasOwnMode()) {di<<3;return 0;}
1063 Standard_Integer Mode = AISP->Mode();
1064 if (Mode!=3) {di<<4;return 0;}
1065 if (!AISP->HasOwnMode()) {di<<5;return 0;}
1067 if (AISP->HasOwnMode()) {di<<6;return 0;}
1072 static int BUC60925(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
1074 di << "Usage : " << argv[0] << " D\n";
1079 Handle(TDF_Data) aDF;
1080 if (!DDF::GetDF(argv[1],aDF)) {di<<2;return 0;}
1083 DDF::AddLabel(aDF, "0:2", L);
1087 Handle(TNaming_NamedShape) NS = new TNaming_NamedShape;
1088 // Handle(TNaming_Name) NN = new TNaming_Name;
1091 NN.Type(TNaming_IDENTITY);
1093 Standard_Boolean Res = NN.Solve(L,LM);
1095 if (Res!=Standard_False) {di<<3;return 0;}
1100 static int BUC60932(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
1102 di << "Usage : " << argv[0] << " D\n";
1108 Handle(TDocStd_Document) aDocument;
1109 if (!DDocStd::GetDocument(argv[1], aDocument)) {di<<2;return 0;}
1111 if(!aDocument->InitDeltaCompaction()) {di<<3;return 0;}
1112 if(!aDocument->PerformDeltaCompaction()) {di<<4;return 0;}
1118 //=======================================================================
1119 //function : AISWidth
1120 //purpose : AISWidth (DOC,entry,[width])
1121 // abv: testing command for checking bug BUC60917 in TPrsStd_AISPresentation
1122 //=======================================================================
1124 static int AISWidth(Draw_Interpretor& di, Standard_Integer argc, const char ** argv) {
1127 Handle(TDocStd_Document) D;
1128 if (!DDocStd::GetDocument(argv[1],D)) {di<<(-1);return 0;}
1130 if (!DDF::FindLabel(D->GetData(),argv[2],L)) {di<<(-2);return 0;}
1132 Handle(TPrsStd_AISViewer) viewer;
1133 if( !TPrsStd_AISViewer::Find(L, viewer) ) {di<<(-3);return 0;}
1135 Handle(TPrsStd_AISPresentation) prs;
1136 if(L.FindAttribute( TPrsStd_AISPresentation::GetID(), prs) ) {
1138 prs->SetWidth(Draw::Atof(argv[3]));
1139 TPrsStd_AISViewer::Update(L);
1142 if (prs->HasOwnWidth()){
1143 // std::cout << "Width = " << prs->Width() << std::endl;
1147 di << "AISWidth: Warning : Width wasn't set\n";
1154 di << "AISWidth : Error" << "\n";
1159 //=======================================================================
1160 //function : BUC60921 ( & BUC60954 )
1161 //purpose : Test memory allocation of OCAF in Undo/Redo operations
1162 //=======================================================================
1164 static Standard_Integer BUC60921 (Draw_Interpretor& di,
1165 Standard_Integer nb,
1169 Handle(TDocStd_Document) D;
1170 if (!DDocStd::GetDocument(arg[1],D)) {di<<1;return 0;}
1172 DDF::AddLabel(D->GetData(),arg[2],L);
1176 BRepTools::Read ( S, arg[3], B );
1178 TNaming_Builder tnBuild(L);
1179 tnBuild.Generated(S);
1180 // di << "File " << arg[3] << " added";
1184 di << "BUC60921 Doc label brep_file: directly read brep file and put shape to the label" << "\n";
1189 #include<IGESControl_Reader.hxx>
1190 #include<BRepPrimAPI_MakeHalfSpace.hxx>
1192 static Standard_Integer BUC60951_(Draw_Interpretor& di, Standard_Integer argc, const char ** a)
1195 di << "Usage : " << a[0] << " file.igs\n";
1199 Handle(AIS_InteractiveContext) myContext = ViewerTest::GetAISContext();
1201 if(myContext.IsNull()) {
1202 di << "use 'vinit' command before " << a[0] << "\n";
1206 // IGESControlStd_Reader reader;
1207 IGESControl_Reader reader;
1208 reader.ReadFile(a[1]);
1209 reader.TransferRoots();
1210 TopoDS_Shape shape = reader.OneShape();
1211 printf("\n iges1 shape type = %d", shape.ShapeType() );
1212 TopTools_IndexedMapOfShape list;
1213 TopExp::MapShapes(shape, TopAbs_FACE, list);
1214 printf("\n No. of faces = %d", list.Extent());
1217 BRep_Builder builder;
1218 builder.MakeShell(shell);
1219 for(int i=1;i<=list.Extent(); i++) {
1220 TopoDS_Face face = TopoDS::Face(list.FindKey(i));
1221 builder.Add(shell, face);
1223 shell.Closed (BRep_Tool::IsClosed (shell));
1225 BRepPrimAPI_MakeHalfSpace half(shell, gp_Pnt(0, 0, 20));
1226 TopoDS_Solid sol = half.Solid();
1227 gp_Ax2 anAx2(gp_Pnt(-800.0, 0.0, 0), gp_Dir(0, 0, -1));
1228 BRepPrimAPI_MakeCylinder cyl(anAx2, 50, 300);
1229 TopoDS_Shape sh = cyl.Shape();
1231 di << "BRepAlgoAPI_Fuse fuse(sol, sh)\n";
1232 BRepAlgoAPI_Fuse fuse(sol, sh);
1235 Handle(AIS_Shape) res = new AIS_Shape(sh);
1236 myContext->Display (res, Standard_True);
1240 void QABugs::Commands_3(Draw_Interpretor& theCommands) {
1241 const char *group = "QABugs";
1243 theCommands.Add("BUC60623","BUC60623 result Shape1 Shape2",__FILE__,BUC60623,group);
1244 theCommands.Add("BUC60632","BUC60632 mode length",__FILE__,BUC60632,group);
1245 theCommands.Add("BUC60652","BUC60652 face",__FILE__,BUC60652,group);
1247 theCommands.Add("BUC60729","BUC60729",__FILE__,BUC60729,group);
1248 theCommands.Add("BUC60724","BUC60724",__FILE__,BUC60724,group);
1249 theCommands.Add("BUC60727","BUC60727",__FILE__,BUC60727,group);
1250 theCommands.Add("BUC60792","BUC60792",__FILE__,BUC60792,group);
1251 theCommands.Add("BUC60811","BUC60811",__FILE__,BUC60811,group);
1253 theCommands.Add("BUC60825","BUC60825",__FILE__,BUC60825,group);
1255 theCommands.Add("OCC10006","OCC10006",__FILE__,OCC10006,group);
1257 theCommands.Add("BUC60856","BUC60856",__FILE__,BUC60856,group);
1259 theCommands.Add("coordload","load coord from file",__FILE__,coordload,group);
1261 theCommands.Add("TestMem","TestMem",__FILE__,TestMem,group);
1262 theCommands.Add("BUC60945","BUC60945",__FILE__,TestMem,group);
1263 theCommands.Add("BUC60876","BUC60876 shape",__FILE__,BUC60876_,group);
1264 theCommands.Add("BUC60773","BUC60773",__FILE__,BUC60773,group);
1266 theCommands.Add("TestCMD","TestCMD",__FILE__,TestCMD,group);
1268 theCommands.Add("statface","statface face",__FILE__,statface,group);
1270 theCommands.Add("BUC60841","BUC60841",__FILE__,BUC60841,group);
1272 theCommands.Add("BUC60874","BUC60874",__FILE__,BUC60874,group);
1274 theCommands.Add("BUC60817","BUC60817 D",__FILE__,BUC60817,group);
1275 theCommands.Add("BUC60831_1","BUC60831_1 D",__FILE__,BUC60831_1,group);
1276 theCommands.Add("BUC60831_2","BUC60831_2 D Label",__FILE__,BUC60831_2,group);
1277 theCommands.Add("BUC60836","BUC60836 D",__FILE__,BUC60836,group);
1278 theCommands.Add("BUC60847","BUC60847 D Shape",__FILE__,BUC60847,group);
1279 theCommands.Add("BUC60862","BUC60862 D Shape",__FILE__,BUC60862,group);
1280 theCommands.Add("BUC60867","BUC60867",__FILE__,BUC60867,group);
1281 theCommands.Add("BUC60910","BUC60910 D",__FILE__,BUC60910,group);
1282 theCommands.Add("BUC60925","BUC60925 D",__FILE__,BUC60925,group);
1283 theCommands.Add("BUC60932","BUC60932 D",__FILE__,BUC60932,group);
1284 theCommands.Add("AISWidth","AISWidth (DOC,entry,[width])",__FILE__,AISWidth,group);
1285 theCommands.Add("BUC60921","BUC60921 Doc label brep_file",__FILE__,BUC60921,group);
1287 theCommands.Add("BUC60951","BUC60951 file.igs",__FILE__,BUC60951_, group );