#include <Visual3d_View.hxx>
#include <V3d_Viewer.hxx>
#include <V3d_View.hxx>
-#include <V3d_Plane.hxx>
#include <V3d.hxx>
#include <AIS_Shape.hxx>
#include <Graphic3d_ArrayOfQuadrangles.hxx>
#include <Graphic3d_ArrayOfQuadrangleStrips.hxx>
#include <Graphic3d_ArrayOfPolygons.hxx>
+#include <Graphic3d_AspectMarker3d.hxx>
#include <Graphic3d_Group.hxx>
#include <Standard_Real.hxx>
#include <Select3D_SensitiveTriangle.hxx>
#include <Select3D_SensitiveCurve.hxx>
+#include <Select3D_SensitivePoint.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <StdPrs_Curve.hxx>
#include <BRepExtrema_ExtPF.hxx>
#include <Prs3d_LineAspect.hxx>
+#include <Prs3d_PointAspect.hxx>
+
+#include <Image_AlienPixMap.hxx>
#ifdef HAVE_STRINGS_H
#include <strings.h>
Standard_Integer anArgIter = 2; // 1st is an IO name
if (anArgIter < theArgsNb)
{
- anOrigin.SetX (atof (theArgVec[anArgIter++]));
- anOrigin.SetY (atof (theArgVec[anArgIter++]));
- anOrigin.SetZ (atof (theArgVec[anArgIter++]));
+ anOrigin.SetX (Draw::Atof (theArgVec[anArgIter++]));
+ anOrigin.SetY (Draw::Atof (theArgVec[anArgIter++]));
+ anOrigin.SetZ (Draw::Atof (theArgVec[anArgIter++]));
if (anArgIter < theArgsNb)
{
- Standard_Real aX = atof (theArgVec[anArgIter++]);
- Standard_Real aY = atof (theArgVec[anArgIter++]);
- Standard_Real aZ = atof (theArgVec[anArgIter++]);
+ Standard_Real aX = Draw::Atof (theArgVec[anArgIter++]);
+ Standard_Real aY = Draw::Atof (theArgVec[anArgIter++]);
+ Standard_Real aZ = Draw::Atof (theArgVec[anArgIter++]);
aDirZ.SetCoord (aX, aY, aZ);
- aX = atof (theArgVec[anArgIter++]);
- aY = atof (theArgVec[anArgIter++]);
- aZ = atof (theArgVec[anArgIter++]);
+ aX = Draw::Atof (theArgVec[anArgIter++]);
+ aY = Draw::Atof (theArgVec[anArgIter++]);
+ aZ = Draw::Atof (theArgVec[anArgIter++]);
aDirX.SetCoord (aX, aY, aZ);
}
}
Standard_Boolean ThereIsCurrent;
Standard_Real value;
Standard_Boolean hascol;
-#ifdef DEB
- Quantity_NameOfColor col;
-#else
+
Quantity_NameOfColor col = Quantity_NOC_BLACK ;
-#endif
// Verification des arguments
if ( argc>3 ) {di<<argv[0]<<" Syntaxe error"<<"\n"; return 1;}
// Verification du nombre d'arguments
if (argc==1) {ThereIsName=Standard_False;value=100;}
- else if (argc==2) {ThereIsName=Standard_False;value=atof(argv[1]);}
- else {ThereIsName=Standard_True;value=atof(argv[2]);}
+ else if (argc==2) {ThereIsName=Standard_False;value=Draw::Atof(argv[1]);}
+ else {ThereIsName=Standard_True;value=Draw::Atof(argv[2]);}
// On ferme le contexte local pour travailler dans le contexte global
if(TheAISContext()->HasOpenedContext())
if (HasArg) {
Standard_Real coord[6];
for(Standard_Integer i=0;i<=5;i++){
- coord[i]=atof(argv[2+i]);
+ coord[i]=Draw::Atof(argv[2+i]);
}
gp_Pnt p1(coord[0],coord[1],coord[2]), p2(coord[3],coord[4],coord[5]) ;
if (HasArg) {
Standard_Real thecoord[3];
for(Standard_Integer i=0;i<=2;i++)
- thecoord[i]=atof(argv[2+i]);
+ thecoord[i]=Draw::Atof(argv[2+i]);
Handle(Geom_CartesianPoint ) myGeomPoint= new Geom_CartesianPoint (thecoord[0],thecoord[1],thecoord[2]);
Handle(AIS_Point) myAISPoint=new AIS_Point(myGeomPoint );
GetMapOfAIS().Bind (myAISPoint,name);
// [PlaneName] [PointName]
//==============================================================================
-static Standard_Integer VPlaneBuilder (Draw_Interpretor& di,
+static Standard_Integer VPlaneBuilder (Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char** argv)
{
Handle(Geom_CartesianPoint)::DownCast( anAISPointC->Component());
// Verification that the three points are different
- if(abs(aCartPointB->X()-aCartPointA->X())<=Precision::Confusion() &&
- abs(aCartPointB->Y()-aCartPointA->Y())<=Precision::Confusion() &&
- abs(aCartPointB->Z()-aCartPointA->Z())<=Precision::Confusion())
+ if(Abs(aCartPointB->X()-aCartPointA->X())<=Precision::Confusion() &&
+ Abs(aCartPointB->Y()-aCartPointA->Y())<=Precision::Confusion() &&
+ Abs(aCartPointB->Z()-aCartPointA->Z())<=Precision::Confusion())
{
// B=A
std::cout<<"vplane error: same points"<<"\n";return 1;
}
- if(abs(aCartPointC->X()-aCartPointA->X())<=Precision::Confusion() &&
- abs(aCartPointC->Y()-aCartPointA->Y())<=Precision::Confusion() &&
- abs(aCartPointC->Z()-aCartPointA->Z())<=Precision::Confusion())
+ if(Abs(aCartPointC->X()-aCartPointA->X())<=Precision::Confusion() &&
+ Abs(aCartPointC->Y()-aCartPointA->Y())<=Precision::Confusion() &&
+ Abs(aCartPointC->Z()-aCartPointA->Z())<=Precision::Confusion())
{
// C=A
std::cout<<"vplane error: same points"<<"\n";return 1;
}
- if(abs(aCartPointC->X()-aCartPointB->X())<=Precision::Confusion() &&
- abs(aCartPointC->Y()-aCartPointB->Y())<=Precision::Confusion() &&
- abs(aCartPointC->Z()-aCartPointB->Z())<=Precision::Confusion())
+ if(Abs(aCartPointC->X()-aCartPointB->X())<=Precision::Confusion() &&
+ Abs(aCartPointC->Y()-aCartPointB->Y())<=Precision::Confusion() &&
+ Abs(aCartPointC->Z()-aCartPointB->Z())<=Precision::Confusion())
{
// C=B
std::cout<<"vplane error: same points"<<"\n";return 1;
Standard_Real coord[6];
for(Standard_Integer i=0;i<=2;i++){
- coord[i]=atof(argv[2+i]);
- coord[i+3]=atof(argv[5+i]);
+ coord[i]=Draw::Atof(argv[2+i]);
+ coord[i+3]=Draw::Atof(argv[5+i]);
}
Handle(Geom_CartesianPoint ) myCartPointA=new Geom_CartesianPoint (coord[0],coord[1],coord[2] );
return aFace;
}
-void FilledCircle::Compute(const Handle_PrsMgr_PresentationManager3d &thePresentationManager,
+void FilledCircle::Compute(const Handle_PrsMgr_PresentationManager3d &/*thePresentationManager*/,
const Handle_Prs3d_Presentation &thePresentation,
const Standard_Integer theMode)
{
}
void FilledCircle::ComputeSelection(const Handle_SelectMgr_Selection &theSelection,
- const Standard_Integer theMode)
+ const Standard_Integer /*theMode*/)
{
Handle(SelectMgr_EntityOwner) anEntityOwner = new SelectMgr_EntityOwner(this);
Handle(Select3D_SensitiveCircle) aSensitiveCircle = new Select3D_SensitiveCircle(anEntityOwner,
}
-static int VCircleBuilder(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+static int VCircleBuilder(Draw_Interpretor& /*di*/, Standard_Integer argc, const char** argv)
{
Standard_Integer myCurrentIndex;
// Verification of the arguments
{
// Get arguments
TCollection_AsciiString aName(argv[1]);
- Standard_Boolean isFilled = (Standard_Boolean)atoi(argv[5]);
+ Standard_Boolean isFilled = (Standard_Boolean)Draw::Atoi(argv[5]);
Handle(AIS_InteractiveObject) theShapeA;
Handle(AIS_InteractiveObject) theShapeB;
Handle(Geom_CartesianPoint)::DownCast(myGeomPointC);
// Test A=B
- if (abs(myCartPointA->X()-myCartPointB->X()) <= Precision::Confusion() &&
- abs(myCartPointA->Y()-myCartPointB->Y()) <= Precision::Confusion() &&
- abs(myCartPointA->Z()-myCartPointB->Z()) <= Precision::Confusion() )
+ if (Abs(myCartPointA->X()-myCartPointB->X()) <= Precision::Confusion() &&
+ Abs(myCartPointA->Y()-myCartPointB->Y()) <= Precision::Confusion() &&
+ Abs(myCartPointA->Z()-myCartPointB->Z()) <= Precision::Confusion() )
{
std::cout << "vcircle error: Same points.\n";
return 1; // TCL_ERROR
}
// Test A=C
- if (abs(myCartPointA->X()-myCartPointC->X()) <= Precision::Confusion() &&
- abs(myCartPointA->Y()-myCartPointC->Y()) <= Precision::Confusion() &&
- abs(myCartPointA->Z()-myCartPointC->Z()) <= Precision::Confusion() )
+ if (Abs(myCartPointA->X()-myCartPointC->X()) <= Precision::Confusion() &&
+ Abs(myCartPointA->Y()-myCartPointC->Y()) <= Precision::Confusion() &&
+ Abs(myCartPointA->Z()-myCartPointC->Z()) <= Precision::Confusion() )
{
std::cout << "vcircle error: Same points.\n";
return 1; // TCL_ERROR
}
// Test B=C
- if (abs(myCartPointB->X()-myCartPointC->X()) <= Precision::Confusion() &&
- abs(myCartPointB->Y()-myCartPointC->Y()) <= Precision::Confusion() &&
- abs(myCartPointB->Z()-myCartPointC->Z()) <= Precision::Confusion() )
+ if (Abs(myCartPointB->X()-myCartPointC->X()) <= Precision::Confusion() &&
+ Abs(myCartPointB->Y()-myCartPointC->Y()) <= Precision::Confusion() &&
+ Abs(myCartPointB->Z()-myCartPointC->Z()) <= Precision::Confusion() )
{
std::cout << "vcircle error: Same points.\n";
return 1;// TCL_ERROR
return 1; // TCL_ERROR
}
// Ñheck that the radius is >= 0
- if (atof(argv[4]) <= 0 )
+ if (Draw::Atof(argv[4]) <= 0 )
{
std::cout << "vcircle error: the radius must be >=0.\n";
return 1; // TCL_ERROR
gp_Ax1 thegpAxe = mygpPlane.Axis();
gp_Dir theDir = thegpAxe.Direction();
gp_Pnt theCenter = myCartPointB->Pnt();
- Standard_Real TheR = atof(argv[4]);
+ Standard_Real TheR = Draw::Atof(argv[4]);
GC_MakeCircle Cir = GC_MakeCircle (theCenter, theDir ,TheR);
Handle (Geom_Circle) theGeomCircle;
try
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer aMode);
- void ComputeSelection ( const Handle(SelectMgr_Selection)& aSelection,
- const Standard_Integer aMode){} ;
+ void ComputeSelection ( const Handle(SelectMgr_Selection)& /*aSelection*/,
+ const Standard_Integer /*aMode*/){} ;
protected:
TCollection_ExtendedString aText;
//////////////////////////////////////////////////////////////////////////////
-void MyTextClass::Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,
+void MyTextClass::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
const Handle(Prs3d_Presentation)& aPresentation,
- const Standard_Integer aMode)
+ const Standard_Integer /*aMode*/)
{
aPresentation->Clear();
}
// Text position
- const Standard_Real X = atof(argv[2]);
- const Standard_Real Y = atof(argv[3]);
- const Standard_Real Z = atof(argv[4]);
+ const Standard_Real X = Draw::Atof(argv[2]);
+ const Standard_Real Y = Draw::Atof(argv[3]);
+ const Standard_Real Z = Draw::Atof(argv[4]);
const gp_Pnt pnt(X,Y,Z);
// Text color
- const Quantity_Parameter R = atof(argv[5])/255.;
- const Quantity_Parameter G = atof(argv[6])/255.;
- const Quantity_Parameter B = atof(argv[7])/255.;
+ const Quantity_Parameter R = Draw::Atof(argv[5])/255.;
+ const Quantity_Parameter G = Draw::Atof(argv[6])/255.;
+ const Quantity_Parameter B = Draw::Atof(argv[7])/255.;
const Quantity_Color aColor( R, G, B, Quantity_TOC_RGB );
// Text alignment
- const int hor_align = atoi(argv[8]);
- const int ver_align = atoi(argv[9]);
+ const int hor_align = Draw::Atoi(argv[8]);
+ const int ver_align = Draw::Atoi(argv[9]);
// Text angle
- const Standard_Real angle = atof(argv[10]);
+ const Standard_Real angle = Draw::Atof(argv[10]);
// Text zooming
- const Standard_Boolean zoom = atoi(argv[11]);
+ const Standard_Boolean zoom = Draw::Atoi(argv[11]);
// Text height
- const Standard_Real height = atof(argv[12]);
+ const Standard_Real height = Draw::Atof(argv[12]);
// Text aspect
- const Font_FontAspect aspect = Font_FontAspect(atoi(argv[13]));
+ const Font_FontAspect aspect = Font_FontAspect(Draw::Atoi(argv[13]));
// Text font
TCollection_AsciiString font;
font.AssignCat(argv[14]);
// Text is multibyte
- const Standard_Boolean isMultibyte = (argc < 16)? Standard_False : (atoi(argv[15]) != 0);
+ const Standard_Boolean isMultibyte = (argc < 16)? Standard_False : (Draw::Atoi(argv[15]) != 0);
// Read text string
TCollection_ExtendedString name;
#include <TShort_HArray1OfShortReal.hxx>
#include <AIS_Triangulation.hxx>
-#include <Aspect_GraphicDevice.hxx>
#include <StdPrs_ToolShadedShape.hxx>
#include <Poly_Connect.hxx>
#include <TColgp_Array1OfDir.hxx>
//author : psn
//purpose : Create an AIS shape.
//===============================================================================================
-static int VDrawSphere (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+static int VDrawSphere (Draw_Interpretor& /*di*/, Standard_Integer argc, const char** argv)
{
// check for errors
Handle(AIS_InteractiveContext) aContextAIS = ViewerTest::GetAISContext();
else if (argc < 3)
{
std::cout << "Use: " << argv[0]
- << " shapeName Fineness [X=0.0 Y=0.0 Z=0.0] [Radius=100.0] [ToEnableVBO=1] [NumberOfViewerUpdate=1] [ToShowEdges=0]\n";
+ << " shapeName Fineness [X=0.0 Y=0.0 Z=0.0] [Radius=100.0] [ToShowEdges=0]\n";
return 1;
}
// read the arguments
TCollection_AsciiString aShapeName (argv[1]);
- Standard_Integer aResolution = atoi (argv[2]);
- Standard_Real aCenterX = (argc > 5) ? atof (argv[3]) : 0.0;
- Standard_Real aCenterY = (argc > 5) ? atof (argv[4]) : 0.0;
- Standard_Real aCenterZ = (argc > 5) ? atof (argv[5]) : 0.0;
- Standard_Real aRadius = (argc > 6) ? atof (argv[6]) : 100.0;
- Standard_Boolean toShowEdges = (argc > 7) ? atoi (argv[7]) : Standard_False;
+ Standard_Integer aResolution = Draw::Atoi (argv[2]);
+ Standard_Real aCenterX = (argc > 5) ? Draw::Atof (argv[3]) : 0.0;
+ Standard_Real aCenterY = (argc > 5) ? Draw::Atof (argv[4]) : 0.0;
+ Standard_Real aCenterZ = (argc > 5) ? Draw::Atof (argv[5]) : 0.0;
+ Standard_Real aRadius = (argc > 6) ? Draw::Atof (argv[6]) : 100.0;
+ Standard_Boolean toShowEdges = (argc > 7) ? Draw::Atoi (argv[7]) : Standard_False;
// remove AIS object with given name from map
VDisplayAISObject (aShapeName, Handle(AIS_InteractiveObject)());
return 0;
}
-//===============================================================================================
-//function : VClipPlane
-//purpose :
-//===============================================================================================
-static int VClipPlane (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
-{
- Handle(V3d_Viewer) aViewer = ViewerTest::GetViewerFromContext();
- Handle(V3d_View) aView = ViewerTest::CurrentView();
- Standard_Real coeffA, coeffB, coeffC, coeffD;
- if (aViewer.IsNull() || aView.IsNull())
- {
- std::cout << "Viewer not initialized!\n";
- return 1;
- }
-
- // count an active planes count
- Standard_Integer aNewPlaneId = 1;
- Standard_Integer anActivePlanes = 0;
- for (aViewer->InitDefinedPlanes(); aViewer->MoreDefinedPlanes(); aViewer->NextDefinedPlanes(), ++aNewPlaneId)
- {
- Handle(V3d_Plane) aPlaneV3d = aViewer->DefinedPlane();
- if (aView->IsActivePlane (aPlaneV3d))
- {
- ++anActivePlanes;
- }
- }
-
- if (argc == 1)
- {
- // just show info about existing planes
- Standard_Integer aPlaneId = 1;
- std::cout << "Active planes: " << anActivePlanes << " from maximal " << aView->View()->PlaneLimit() << "\n";
- for (aViewer->InitDefinedPlanes(); aViewer->MoreDefinedPlanes(); aViewer->NextDefinedPlanes(), ++aPlaneId)
- {
- Handle(V3d_Plane) aPlaneV3d = aViewer->DefinedPlane();
- aPlaneV3d->Plane (coeffA, coeffB, coeffC, coeffD);
- gp_Pln aPlane (coeffA, coeffB, coeffC, coeffD);
- const gp_Pnt& aLoc = aPlane.Location();
- const gp_Dir& aNor = aPlane.Axis().Direction();
- Standard_Boolean isActive = aView->IsActivePlane (aPlaneV3d);
- std::cout << "Plane #" << aPlaneId
- << " " << aLoc.X() << " " << aLoc.Y() << " " << aLoc.Z()
- << " " << aNor.X() << " " << aNor.Y() << " " << aNor.Z()
- << (isActive ? " on" : " off")
- << (aPlaneV3d->IsDisplayed() ? ", displayed" : ", hidden")
- << "\n";
- }
- if (aPlaneId == 1)
- {
- std::cout << "No defined clipping planes\n";
- }
- return 0;
- }
- else if (argc == 2 || argc == 3)
- {
- Standard_Integer aPlaneIdToOff = (argc == 3) ? atoi (argv[1]) : 1;
- Standard_Boolean toIterateAll = (argc == 2);
- TCollection_AsciiString isOnOffStr ((argc == 3) ? argv[2] : argv[1]);
- isOnOffStr.LowerCase();
- Standard_Integer aPlaneId = 1;
- for (aViewer->InitDefinedPlanes(); aViewer->MoreDefinedPlanes(); aViewer->NextDefinedPlanes(), ++aPlaneId)
- {
- if (aPlaneIdToOff == aPlaneId || toIterateAll)
- {
- Handle(V3d_Plane) aPlaneV3d = aViewer->DefinedPlane();
- if (isOnOffStr.Search ("off") >= 0)
- {
- aView->SetPlaneOff (aPlaneV3d);
- std::cout << "Clipping plane #" << aPlaneId << " was disabled\n";
- }
- else if (isOnOffStr.Search ("on") >= 0)
- {
- // avoid z-fighting glitches
- aPlaneV3d->Erase();
- if (!aView->IsActivePlane (aPlaneV3d))
- {
- if (anActivePlanes < aView->View()->PlaneLimit())
- {
- aView->SetPlaneOn (aPlaneV3d);
- std::cout << "Clipping plane #" << aPlaneId << " was enabled\n";
- }
- else
- {
- std::cout << "Maximal active planes limit exceeded (" << anActivePlanes << ")\n"
- << "You should disable or remove some existing plane to activate this one\n";
- }
- }
- else
- {
- std::cout << "Clipping plane #" << aPlaneId << " was already enabled\n";
- }
- }
- else if (isOnOffStr.Search ("del") >= 0 || isOnOffStr.Search ("rem") >= 0)
- {
- aPlaneV3d->Erase(); // not performed on destructor!!!
- aView->SetPlaneOff (aPlaneV3d);
- aViewer->DelPlane (aPlaneV3d);
- std::cout << "Clipping plane #" << aPlaneId << " was removed\n";
- if (toIterateAll)
- {
- for (aViewer->InitDefinedPlanes(); aViewer->MoreDefinedPlanes(); aViewer->InitDefinedPlanes(), ++aPlaneId)
- {
- aPlaneV3d = aViewer->DefinedPlane();
- aPlaneV3d->Erase(); // not performed on destructor!!!
- aView->SetPlaneOff (aPlaneV3d);
- aViewer->DelPlane (aPlaneV3d);
- std::cout << "Clipping plane #" << aPlaneId << " was removed\n";
- }
- break;
- }
- else
- {
- break;
- }
- }
- else if (isOnOffStr.Search ("disp") >= 0 || isOnOffStr.Search ("show") >= 0)
- {
- // avoid z-fighting glitches
- aView->SetPlaneOff (aPlaneV3d);
- aPlaneV3d->Display (aView);
- std::cout << "Clipping plane #" << aPlaneId << " was shown and disabled\n";
- }
- else if (isOnOffStr.Search ("hide") >= 0)
- {
- aPlaneV3d->Erase();
- std::cout << "Clipping plane #" << aPlaneId << " was hidden\n";
- }
- else
- {
- std::cout << "Usage: " << argv[0] << " [x y z dx dy dz] [planeId {on/off/del/display/hide}]\n";
- return 1;
- }
- }
- }
- if (aPlaneIdToOff >= aPlaneId && !toIterateAll)
- {
- std::cout << "Clipping plane with id " << aPlaneIdToOff << " not found!\n";
- return 1;
- }
- aView->Update();
- return 0;
- }
- else if (argc != 7)
- {
- std::cout << "Usage: " << argv[0] << " [x y z dx dy dz] [planeId {on/off/del/display/hide}]\n";
- return 1;
- }
-
- Standard_Real aLocX = atof (argv[1]);
- Standard_Real aLocY = atof (argv[2]);
- Standard_Real aLocZ = atof (argv[3]);
- Standard_Real aNormDX = atof (argv[4]);
- Standard_Real aNormDY = atof (argv[5]);
- Standard_Real aNormDZ = atof (argv[6]);
-
- Handle(V3d_Plane) aPlaneV3d = new V3d_Plane();
- gp_Pln aPlane (gp_Pnt (aLocX, aLocY, aLocZ), gp_Dir (aNormDX, aNormDY, aNormDZ));
- aPlane.Coefficients (coeffA, coeffB, coeffC, coeffD);
- aPlaneV3d->SetPlane(coeffA, coeffB, coeffC, coeffD);
-
- aViewer->AddPlane (aPlaneV3d); // add to defined planes list
- std::cout << "Added clipping plane #" << aNewPlaneId << "\n";
- if (anActivePlanes < aView->View()->PlaneLimit())
- {
- aView->SetPlaneOn (aPlaneV3d); // add to enabled planes list
- aView->Update();
- }
- else
- {
- std::cout << "Maximal active planes limit exceeded (" << anActivePlanes << ")\n"
- << "You should disable or remove some existing plane to activate the new one\n";
- }
- return 0;
-}
-
//=============================================================================
//function : VComputeHLR
//purpose :
{
gp_Dir anUp;
- anEye.SetCoord (atof (argv[3]), atof (argv[4]), atof (argv[5]));
- aDir.SetCoord (atof (argv[6]), atof (argv[7]), atof (argv[8]));
- anUp.SetCoord (atof (argv[9]), atof (argv[10]), atof (argv[11]));
+ anEye.SetCoord (Draw::Atof (argv[3]), Draw::Atof (argv[4]), Draw::Atof (argv[5]));
+ aDir.SetCoord (Draw::Atof (argv[6]), Draw::Atof (argv[7]), Draw::Atof (argv[8]));
+ anUp.SetCoord (Draw::Atof (argv[9]), Draw::Atof (argv[10]), Draw::Atof (argv[11]));
aProjAx.SetLocation (anEye);
aProjAx.SetDirection (aDir);
aProjAx.SetYDirection (anUp);
public:
- MyPArrayObject (const Handle(Graphic3d_ArrayOfPrimitives) theArray)
+ MyPArrayObject (const Handle(Graphic3d_ArrayOfPrimitives) theArray,
+ Handle(Graphic3d_AspectMarker3d) theMarkerAspect = NULL)
{
myArray = theArray;
+ myMarkerAspect = theMarkerAspect;
}
DEFINE_STANDARD_RTTI(MyPArrayObject);
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer aMode);
- void ComputeSelection (const Handle(SelectMgr_Selection)& aSelection,
- const Standard_Integer aMode) {};
+ void ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
+ const Standard_Integer /*theMode*/);
protected:
Handle(Graphic3d_ArrayOfPrimitives) myArray;
+ Handle(Graphic3d_AspectMarker3d) myMarkerAspect;
};
IMPLEMENT_STANDARD_HANDLE(MyPArrayObject, AIS_InteractiveObject)
IMPLEMENT_STANDARD_RTTIEXT(MyPArrayObject, AIS_InteractiveObject)
-void MyPArrayObject::Compute (const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,
+void MyPArrayObject::Compute (const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
const Handle(Prs3d_Presentation)& aPresentation,
- const Standard_Integer aMode)
+ const Standard_Integer /*aMode*/)
{
aPresentation->Clear();
+ if (!myMarkerAspect.IsNull())
+ {
+ Prs3d_Root::CurrentGroup (aPresentation)->SetGroupPrimitivesAspect (myMarkerAspect);
+ }
Prs3d_Root::CurrentGroup (aPresentation)->AddPrimitiveArray (myArray);
}
+void MyPArrayObject::ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
+ const Standard_Integer /*theMode*/)
+{
+ Handle(SelectMgr_EntityOwner) anEntityOwner = new SelectMgr_EntityOwner (this);
+
+ for (Standard_Integer anIter = 1; anIter <= myArray->VertexNumber(); anIter++)
+ {
+
+ Handle(Select3D_SensitivePoint) aSensetivePoint = new Select3D_SensitivePoint (anEntityOwner, myArray->Vertice (anIter));
+ theSelection->Add (aSensetivePoint);
+ }
+}
+
static bool CheckInputCommand (const TCollection_AsciiString theCommand,
const char **theArgStr, int &theArgIndex,
int theArgCount, int theMaxArgs)
// create an array of primitives by types
Handle(Graphic3d_ArrayOfPrimitives) anArray;
+ Handle(Graphic3d_AspectMarker3d) anAspPoints;
if (anArrayType == "points")
+ {
anArray = new Graphic3d_ArrayOfPoints (aVertexNum);
+ anAspPoints = new Graphic3d_AspectMarker3d (Aspect_TOM_POINT, Quantity_NOC_YELLOW, 1.0f);
+ }
else if (anArrayType == "segments")
anArray = new Graphic3d_ArrayOfSegments (aVertexNum, aEdgeNum, hasVColors);
else if (anArrayType == "polylines")
// vertex command
if (CheckInputCommand ("v", argv, aArgIndex, 3, argc))
{
- anArray->AddVertex (atof (argv[aArgIndex - 3]),
- atof (argv[aArgIndex - 2]),
- atof (argv[aArgIndex - 1]));
+ anArray->AddVertex (Draw::Atof (argv[aArgIndex - 3]),
+ Draw::Atof (argv[aArgIndex - 2]),
+ Draw::Atof (argv[aArgIndex - 1]));
// vertex has a normal or normal with color or texel
if (CheckInputCommand ("n", argv, aArgIndex, 3, argc))
anArray->SetVertexNormal (anArray->VertexNumber (),
- atof (argv[aArgIndex - 3]),
- atof (argv[aArgIndex - 2]),
- atof (argv[aArgIndex - 1]));
+ Draw::Atof (argv[aArgIndex - 3]),
+ Draw::Atof (argv[aArgIndex - 2]),
+ Draw::Atof (argv[aArgIndex - 1]));
if (CheckInputCommand ("c", argv, aArgIndex, 3, argc))
anArray->SetVertexColor (anArray->VertexNumber (),
- atof (argv[aArgIndex - 3]),
- atof (argv[aArgIndex - 2]),
- atof (argv[aArgIndex - 1]));
+ Draw::Atof (argv[aArgIndex - 3]),
+ Draw::Atof (argv[aArgIndex - 2]),
+ Draw::Atof (argv[aArgIndex - 1]));
if (CheckInputCommand ("t", argv, aArgIndex, 2, argc))
anArray->SetVertexTexel (anArray->VertexNumber (),
- atof (argv[aArgIndex - 2]),
- atof (argv[aArgIndex - 1]));
+ Draw::Atof (argv[aArgIndex - 2]),
+ Draw::Atof (argv[aArgIndex - 1]));
}
// bounds command
else if (CheckInputCommand ("b", argv, aArgIndex, 1, argc))
{
- Standard_Integer aVertCount = atoi (argv[aArgIndex - 1]);
+ Standard_Integer aVertCount = Draw::Atoi (argv[aArgIndex - 1]);
if (CheckInputCommand ("c", argv, aArgIndex, 3, argc))
anArray->AddBound (aVertCount,
- atof (argv[aArgIndex - 3]),
- atof (argv[aArgIndex - 2]),
- atof (argv[aArgIndex - 1]));
+ Draw::Atof (argv[aArgIndex - 3]),
+ Draw::Atof (argv[aArgIndex - 2]),
+ Draw::Atof (argv[aArgIndex - 1]));
else
anArray->AddBound (aVertCount);
// edge command
else if (CheckInputCommand ("e", argv, aArgIndex, 1, argc))
{
- Standard_Integer aVertIndex = atoi (argv[aArgIndex - 1]);
+ Standard_Integer aVertIndex = Draw::Atoi (argv[aArgIndex - 1]);
// edge has/hasn't hide flag
if (CheckInputCommand ("h", argv, aArgIndex, 0, argc))
}
// create primitives array object
- Handle (MyPArrayObject) aPObject = new MyPArrayObject (anArray);
+ Handle(MyPArrayObject) aPObject = new MyPArrayObject (anArray, anAspPoints);
// register the object in map
VDisplayAISObject (aName, aPObject);
}
TCollection_AsciiString aName (argv[1]);
- Standard_Real aX = atof (argv[2]);
- Standard_Real aY = atof (argv[3]);
- Standard_Real aZ = atof (argv[4]);
+ Standard_Real aX = Draw::Atof (argv[2]);
+ Standard_Real aY = Draw::Atof (argv[3]);
+ Standard_Real aZ = Draw::Atof (argv[4]);
// find object
ViewerTest_DoubleMapOfInteractiveAndName& aMap = GetMapOfAIS();
//Draw arg : vconnect name Xo Yo Zo Xu Xv Xw Zu Zv Zw object1 object2 ... [color=NAME]
//===============================================================================================
-static Standard_Integer VConnect(Draw_Interpretor& di,
+static Standard_Integer VConnect(Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
TCollection_AsciiString aName (argv[anArgIter++]);
Handle(AIS_InteractiveObject) anOriginObject;
TCollection_AsciiString aColorString (argv[argc-1]);
- Standard_CString aColorName;
+ Standard_CString aColorName = "";
Standard_Boolean hasColor = Standard_False;
if (aColorString.Search ("color=") != -1)
{
}
// Get location data
- Standard_Real aXo = atof (argv[anArgIter++]);
- Standard_Real aYo = atof (argv[anArgIter++]);
- Standard_Real aZo = atof (argv[anArgIter++]);
- Standard_Real aXu = atof (argv[anArgIter++]);
- Standard_Real aXv = atof (argv[anArgIter++]);
- Standard_Real aXw = atof (argv[anArgIter++]);
- Standard_Real aZu = atof (argv[anArgIter++]);
- Standard_Real aZv = atof (argv[anArgIter++]);
- Standard_Real aZw = atof (argv[anArgIter++]);
+ Standard_Real aXo = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aYo = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZo = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aXu = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aXv = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aXw = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZu = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZv = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZw = Draw::Atof (argv[anArgIter++]);
// Create transformation
gp_Pnt aPoint(aXo, aYo, aZo);
//Draw arg : vconnectsh name Xo Yo Zo Xu Xv Xw Zu Zv Zw shape1 shape2 ... [color=NAME]
//===============================================================================================
-static Standard_Integer VConnectShape(Draw_Interpretor& di,
+static Standard_Integer VConnectShape(Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
TCollection_AsciiString aName (argv[anArgIter++]);
Handle(AIS_InteractiveObject) anOriginShape;
TCollection_AsciiString aColorString(argv[argc-1]);
- Standard_CString aColorName;
+ Standard_CString aColorName = "";
Standard_Boolean hasColor = Standard_False;
if (aColorString.Search ("color=") != -1)
{
}
// Get location data
- Standard_Real aXo = atof (argv[anArgIter++]);
- Standard_Real aYo = atof (argv[anArgIter++]);
- Standard_Real aZo = atof (argv[anArgIter++]);
- Standard_Real aXu = atof (argv[anArgIter++]);
- Standard_Real aXv = atof (argv[anArgIter++]);
- Standard_Real aXw = atof (argv[anArgIter++]);
- Standard_Real aZu = atof (argv[anArgIter++]);
- Standard_Real aZv = atof (argv[anArgIter++]);
- Standard_Real aZw = atof (argv[anArgIter++]);
+ Standard_Real aXo = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aYo = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZo = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aXu = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aXv = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aXw = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZu = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZv = Draw::Atof (argv[anArgIter++]);
+ Standard_Real aZw = Draw::Atof (argv[anArgIter++]);
// Create transformation
gp_Pnt aPoint(aXo, aYo, aZo);
return Standard_False;
}
-static Standard_Integer VSetSelectionMode(Draw_Interpretor& di,
+static Standard_Integer VSetSelectionMode(Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
// Check the arguments
if(argc != 3 && argc != 4)
{
- std::cout << "vselmode error : expects at least 2 arguments\n";
+ std::cout << "vselmode error : expects at least 2 arguments.\n"
+ << "Type help "<< argv[0] <<" for more information.";
return 1; // TCL_ERROR
}
if(argc == 3)
{
// Get arguments
- Standard_Integer aMode = atoi(argv[1]);
- Standard_Boolean isTurnOn = atoi(argv[2]);
+ Standard_Integer aMode = Draw::Atoi(argv[1]);
+ Standard_Boolean isTurnOn = Draw::Atoi(argv[2]);
// Get all displayed objects
AIS_ListOfInteractive anObjList;
else
{
// Get argumnets
- Standard_Integer aMode = atoi(argv[2]);
- Standard_Boolean isTurnOn = atoi(argv[3]);
+ Standard_Integer aMode = Draw::Atoi(argv[2]);
+ Standard_Boolean isTurnOn = Draw::Atoi(argv[3]);
TCollection_AsciiString aName(argv[1]);
// Check if there is an object with given name in context
myPoint3 = theP3;
}
-void Triangle::Compute(const Handle(PrsMgr_PresentationManager3d)& thePresentationManager,
+void Triangle::Compute(const Handle(PrsMgr_PresentationManager3d)& /*thePresentationManager*/,
const Handle(Prs3d_Presentation)& thePresentation,
- const Standard_Integer theMode)
+ const Standard_Integer /*theMode*/)
{
thePresentation->Clear();
}
void Triangle::ComputeSelection(const Handle(SelectMgr_Selection)& theSelection,
- const Standard_Integer theMode)
+ const Standard_Integer /*theMode*/)
{
Handle(SelectMgr_EntityOwner) anEntityOwner = new SelectMgr_EntityOwner(this);
Handle(Select3D_SensitiveTriangle) aSensTriangle =
Standard_Boolean IsMatch (const Handle(Geom_CartesianPoint)& thePoint1,
const Handle(Geom_CartesianPoint)& thePoint2)
{
- if(abs(thePoint1->X()-thePoint2->X()) <= Precision::Confusion() &&
- abs(thePoint1->Y()-thePoint2->Y()) <= Precision::Confusion() &&
- abs(thePoint1->Z()-thePoint2->Z()) <= Precision::Confusion())
+ if(Abs(thePoint1->X()-thePoint2->X()) <= Precision::Confusion() &&
+ Abs(thePoint1->Y()-thePoint2->Y()) <= Precision::Confusion() &&
+ Abs(thePoint1->Z()-thePoint2->Z()) <= Precision::Confusion())
{
return Standard_True;
}
return Standard_False;
}
-static Standard_Integer VTriangle (Draw_Interpretor& di,
+static Standard_Integer VTriangle (Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
myPoint2 = thePnt2;
}
-void SegmentObject::Compute (const Handle_PrsMgr_PresentationManager3d &thePresentationManager,
+void SegmentObject::Compute (const Handle_PrsMgr_PresentationManager3d &/*thePresentationManager*/,
const Handle_Prs3d_Presentation &thePresentation,
- const Standard_Integer theMode)
+ const Standard_Integer /*theMode*/)
{
thePresentation->Clear();
BRepBuilderAPI_MakeEdge anEdgeMaker(myPoint1, myPoint2);
}
void SegmentObject::ComputeSelection (const Handle_SelectMgr_Selection &theSelection,
- const Standard_Integer theMode)
+ const Standard_Integer /*theMode*/)
{
Handle(SelectMgr_EntityOwner) anOwner = new SelectMgr_EntityOwner(this);
Handle(TColgp_HArray1OfPnt) anArray = new TColgp_HArray1OfPnt(1, 2);
//Draw args : vsegment Name PointName PointName
//purpose : creates and displays Segment
//=======================================================================
-static Standard_Integer VSegment (Draw_Interpretor& di,
+static Standard_Integer VSegment (Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
// process operation
if (aOperation.IsEqual ("set"))
{
- Standard_Integer aLayerId = atoi (argv [3]);
+ Standard_Integer aLayerId = Draw::Atoi (argv [3]);
aContext->SetZLayer (anInterObj, aLayerId);
}
else if (aOperation.IsEqual ("get"))
//function : VPolygonOffset
//purpose : Set or get polygon offset parameters
//=======================================================================
-static Standard_Integer VPolygonOffset(Draw_Interpretor& di,
+static Standard_Integer VPolygonOffset(Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
Standard_ShortReal aFactor, aUnits;
if (argc == 5)
{
- aMode = atoi(argv[2]);
- aFactor = (Standard_ShortReal) atof(argv[3]);
- aUnits = (Standard_ShortReal) atof(argv[4]);
+ aMode = Draw::Atoi(argv[2]);
+ aFactor = (Standard_ShortReal) Draw::Atof(argv[3]);
+ aUnits = (Standard_ShortReal) Draw::Atof(argv[4]);
anInterObj->SetPolygonOffsets(aMode, aFactor, aUnits);
aContext->UpdateCurrentViewer();
//function : VShowFaceBoundaries
//purpose : Set face boundaries drawing on/off for ais object
//=======================================================================
-static Standard_Integer VShowFaceBoundary (Draw_Interpretor& di,
+static Standard_Integer VShowFaceBoundary (Draw_Interpretor& /*di*/,
Standard_Integer argc,
const char ** argv)
{
TheAISContext ()->DefaultDrawer () : anInterObj->Attributes ();
// turn boundaries on/off
- Standard_Boolean isBoundaryDraw = (atoi (argv[2]) == 1);
+ Standard_Boolean isBoundaryDraw = (Draw::Atoi (argv[2]) == 1);
aDrawer->SetFaceBoundaryDraw (isBoundaryDraw);
// set boundary line color
if (argc >= 6)
{
// Text color
- aRed = atof (argv[3])/255.;
- aGreen = atof (argv[4])/255.;
- aBlue = atof (argv[5])/255.;
+ aRed = Draw::Atof (argv[3])/255.;
+ aGreen = Draw::Atof (argv[4])/255.;
+ aBlue = Draw::Atof (argv[5])/255.;
}
// set line width
if (argc >= 7)
{
- aWidth = (Standard_Real)atof (argv[6]);
+ aWidth = (Standard_Real)Draw::Atof (argv[6]);
}
// select appropriate line type
if (argc == 8)
{
- switch (atoi (argv[7]))
+ switch (Draw::Atoi (argv[7]))
{
case 1: aLineType = Aspect_TOL_DASH; break;
case 2: aLineType = Aspect_TOL_DOT; break;
return 0;
}
+//=======================================================================
+//function : VMarkersTest
+//purpose : Draws an array of markers for testing purposes.
+//=======================================================================
+static Standard_Integer VMarkersTest (Draw_Interpretor&,
+ Standard_Integer theArgNb,
+ const char** theArgVec)
+{
+ Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
+ if (aContext.IsNull())
+ {
+ std::cerr << "Call 'vinit' before!\n";
+ return 1;
+ }
+
+ if (theArgNb < 5)
+ {
+ std::cerr << "Usage :\n " << theArgVec[0]
+ << "name X Y Z [PointsOnSide=10] [MarkerType=0] [Scale=1.0] [FileName=ImageFile]\n";
+ return 1;
+ }
+
+ Standard_Integer anArgIter = 1;
+
+ TCollection_AsciiString aName (theArgVec[anArgIter++]);
+ TCollection_AsciiString aFileName;
+ gp_XYZ aPnt (Atof (theArgVec[anArgIter]),
+ Atof (theArgVec[anArgIter + 1]),
+ Atof (theArgVec[anArgIter + 2]));
+ anArgIter += 3;
+
+ Standard_Integer aPointsOnSide = 10;
+ Standard_Integer aMarkerType = -1;
+ Standard_Real aScale = 1.0;
+ for (; anArgIter < theArgNb; ++anArgIter)
+ {
+ const TCollection_AsciiString anArg (theArgVec[anArgIter]);
+ if (anArg.Search ("PointsOnSide=") > -1)
+ {
+ aPointsOnSide = anArg.Token ("=", 2).IntegerValue();
+ }
+ else if (anArg.Search ("MarkerType=") > -1)
+ {
+ aMarkerType = anArg.Token ("=", 2).IntegerValue();
+ }
+ else if (anArg.Search ("Scale=") > -1)
+ {
+ aScale = anArg.Token ("=", 2).RealValue();
+ }
+ else if (anArg.Search ("FileName=") > -1)
+ {
+ aFileName = anArg.Token ("=", 2);
+ }
+ else
+ {
+ std::cerr << "Wrong argument: " << anArg << "\n";
+ return 1;
+ }
+ }
+
+ Handle(Graphic3d_AspectMarker3d) anAspect;
+ Handle(Image_AlienPixMap) anImage;
+ Quantity_Color aColor (Quantity_NOC_GREEN1);
+ if ((aMarkerType == Aspect_TOM_USERDEFINED || aMarkerType < 0)
+ && !aFileName.IsEmpty())
+ {
+ anImage = new Image_AlienPixMap();
+ if (!anImage->Load (aFileName))
+ {
+ std::cerr << "Could not load image from file '" << aFileName << "'!\n";
+ return 1;
+ }
+ anAspect = new Graphic3d_AspectMarker3d (anImage);
+ }
+ else
+ {
+ anAspect = new Graphic3d_AspectMarker3d (aMarkerType >= 0 ? (Aspect_TypeOfMarker )aMarkerType : Aspect_TOM_POINT, aColor, aScale);
+ }
+
+ Handle(Graphic3d_ArrayOfPrimitives) anArray = new Graphic3d_ArrayOfPoints ((Standard_Integer )Pow (aPointsOnSide, 3), aPointsOnSide != 1);
+ if (aPointsOnSide == 1)
+ {
+ anArray->AddVertex (aPnt);
+ }
+ else
+ {
+ for (Standard_Real i = 1; i <= aPointsOnSide; i++)
+ {
+ for (Standard_Real j = 1; j <= aPointsOnSide; j++)
+ {
+ for (Standard_Real k = 1; k <= aPointsOnSide; k++)
+ {
+ anArray->AddVertex (aPnt.X() + i, aPnt.Y() + j, aPnt.Z() + k);
+ anArray->SetVertexColor (anArray->VertexNumber(),
+ i / aPointsOnSide,
+ j / aPointsOnSide,
+ k / aPointsOnSide);
+ }
+ }
+ }
+ }
+
+ Handle(MyPArrayObject) aPObject = new MyPArrayObject (anArray, anAspect);
+ VDisplayAISObject (aName, aPObject);
+
+ return 0;
+}
+
//=======================================================================
//function : ObjectsCommands
//purpose :
"vdrawsphere: vdrawsphere shapeName Fineness [X=0.0 Y=0.0 Z=0.0] [Radius=100.0] [ToShowEdges=0]\n",
__FILE__,VDrawSphere,group);
- theCommands.Add("vclipplane",
- "vclipplane : vclipplane [x y z dx dy dz] [planeId {on/off/del/display/hide}]",
- __FILE__,VClipPlane,group);
-
theCommands.Add ("vsetlocation",
"vsetlocation : name x y z; set new location for an interactive object",
__FILE__, VSetLocation, group);
__FILE__, VConnectShape, group);
theCommands.Add("vselmode",
- "vselmode : [object] mode On/Off (1/0)",
+ "vselmode : [object] mode_number is_turned_on=(1|0)\n"
+ " switches selection mode for the determined object or\n"
+ " for all objects in context.\n"
+ " mode_number is non-negative integer that has different\n"
+ " meaning for different interactive object classes.\n"
+ " For shapes the following mode_number values are allowed:\n"
+ " 0 - shape\n"
+ " 1 - vertex\n"
+ " 2 - edge\n"
+ " 3 - wire\n"
+ " 4 - face\n"
+ " 5 - shell\n"
+ " 6 - solid\n"
+ " 7 - compsolid\n"
+ " 8 - compound\n"
+ " is_turned_on is:\n"
+ " 1 if mode is to be switched on\n"
+ " 0 if mode is to be switched off\n",
__FILE__, VSetSelectionMode, group);
theCommands.Add("vtriangle",
"- turns on/off drawing of face boundaries for ais object "
"and defines boundary line style.",
__FILE__, VShowFaceBoundary, group);
+
+ theCommands.Add ("vmarkerstest",
+ "vmarkerstest: name X Y Z [PointsOnSide=10] [MarkerType=0] [Scale=1.0] [FileName=ImageFile]\n",
+ __FILE__, VMarkersTest, group);
}