mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-06-30 12:14:08 +03:00
Refactor code of test case.
This commit is contained in:
parent
75ed43d05d
commit
5f16c30bf2
@ -5047,7 +5047,7 @@ static Standard_Integer VPointCloud (Draw_Interpretor& /*theDI*/,
|
||||
if (theArgNum < 2)
|
||||
{
|
||||
std::cout << theArgs[0] << " error: wrong number of parameters. Type 'help "
|
||||
<< theArgs[0] << "' for more information.\n";
|
||||
<< theArgs[0] << "' for more information." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -5064,84 +5064,119 @@ static Standard_Integer VPointCloud (Draw_Interpretor& /*theDI*/,
|
||||
TCollection_AsciiString aName (theArgs[anArgIter++]);
|
||||
|
||||
// Default value
|
||||
Standard_Integer aMode = 0;
|
||||
Standard_Integer aMarkerType = -1;
|
||||
Quantity_NameOfColor aColorName = Quantity_NOC_YELLOW;
|
||||
Standard_Real aScale = 1.0;
|
||||
Standard_Integer aPointsOnSide = 100;
|
||||
gp_Pnt aStartPonit (0., 0., 0.);
|
||||
|
||||
Standard_Boolean aHasColor = Standard_True;
|
||||
Standard_Boolean aHasAspect = Standard_False;
|
||||
Standard_Integer aModeSetPoints = 0;
|
||||
Standard_Integer aMarkerType = -1;
|
||||
Quantity_NameOfColor aColorName = Quantity_NOC_GOLDENROD;
|
||||
Standard_Real aScale = 1.0;
|
||||
Standard_Integer aPointsOnSide = 100;
|
||||
Standard_Real aStartPos[3] = {0.0, 0.0, 0.0};
|
||||
|
||||
Standard_Boolean hasColors = Standard_True;
|
||||
Standard_Boolean hasAspect = Standard_False;
|
||||
|
||||
// Parses arguments
|
||||
for (; anArgIter < theArgNum; ++anArgIter)
|
||||
{
|
||||
const TCollection_AsciiString anArg (theArgs[anArgIter]);
|
||||
if (anArg.Search ("Mode=") > -1)
|
||||
Standard_CString anArg = theArgs[anArgIter];
|
||||
TCollection_AsciiString aFlag (anArg);
|
||||
aFlag.LowerCase();
|
||||
|
||||
if (aFlag == "-mode")
|
||||
{
|
||||
aMode = anArg.Token ("=", 2).IntegerValue();
|
||||
if (aMode < 0 && aMode > 1)
|
||||
if (++anArgIter >= theArgNum)
|
||||
{
|
||||
std::cerr << "Wrong argument : " << anArg << std::endl;
|
||||
std::cout << "Error: wrong syntax at " << anArg << std::endl;
|
||||
return 1;
|
||||
}
|
||||
aModeSetPoints = Draw::Atoi (theArgs[anArgIter]);
|
||||
if (aModeSetPoints < 0 || aModeSetPoints > 1)
|
||||
{
|
||||
std::cout << "Wrong value for argument " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (anArg.Search ("MarkerType=") > -1)
|
||||
else if (aFlag == "-nbpointsonside")
|
||||
{
|
||||
aMarkerType = anArg.Token ("=", 2).IntegerValue();
|
||||
aHasAspect = Standard_True;
|
||||
if (++anArgIter >= theArgNum)
|
||||
{
|
||||
std::cout << "Error: wrong syntax at " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
aPointsOnSide = Draw::Atoi (theArgs[anArgIter]);
|
||||
if (aPointsOnSide <= 0)
|
||||
{
|
||||
std::cout << "Wrong value for argument " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (anArg.Search ("ColorName=") > -1)
|
||||
else if (aFlag == "-markertype")
|
||||
{
|
||||
aColorName = ViewerTest::GetColorFromName (anArg.Token ("=", 2).ToCString());
|
||||
aHasColor = Standard_False;
|
||||
aHasAspect = Standard_True;
|
||||
if (++anArgIter >= theArgNum)
|
||||
{
|
||||
std::cout << "Error: wrong syntax at " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
aMarkerType = Draw::Atoi (theArgs[anArgIter]);
|
||||
hasAspect = Standard_True;
|
||||
}
|
||||
else if (anArg.Search ("Scale=") > -1)
|
||||
else if (aFlag == "-scale")
|
||||
{
|
||||
aScale = anArg.Token ("=", 2).RealValue();
|
||||
aHasAspect = Standard_True;
|
||||
if (++anArgIter >= theArgNum)
|
||||
{
|
||||
std::cout << "Error: wrong syntax at " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
aScale = Draw::Atof (theArgs[anArgIter]);
|
||||
hasAspect = Standard_True;
|
||||
}
|
||||
else if (anArg.Search ("PointsOnSide=") > -1)
|
||||
else if (aFlag == "-color")
|
||||
{
|
||||
aPointsOnSide = anArg.Token ("=", 2).IntegerValue();
|
||||
if (++anArgIter >= theArgNum)
|
||||
{
|
||||
std::cout << "Error: wrong syntax at " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
aColorName = ViewerTest::GetColorFromName (theArgs[anArgIter]);
|
||||
hasColors = Standard_False;
|
||||
hasAspect = Standard_True;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Wrong argument: " << anArg << std::endl;
|
||||
std::cout << "Wrong argument: " << aFlag << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Integer aNumberOfPoints = (Standard_Integer )Pow (aPointsOnSide, 3);
|
||||
std::cout << "Number of points: " << aNumberOfPoints;
|
||||
std::cout << "Number of points: " << aNumberOfPoints << std::endl;
|
||||
|
||||
// Point cloud initialization
|
||||
Handle(AIS_PointCloud) aPointCloud = new AIS_PointCloud();
|
||||
if (aMode == 0)
|
||||
if (aModeSetPoints == 0)
|
||||
{
|
||||
Handle(Graphic3d_ArrayOfPoints) anArrayPoints = new Graphic3d_ArrayOfPoints (aNumberOfPoints,
|
||||
aNumberOfPoints != 1 && aHasColor);
|
||||
aNumberOfPoints != 1 && hasColors);
|
||||
if (aNumberOfPoints == 1)
|
||||
{
|
||||
anArrayPoints->AddVertex (aStartPonit, Quantity_NOC_YELLOW);
|
||||
anArrayPoints->AddVertex (aStartPos[0], aStartPos[1], aStartPos[2]);
|
||||
anArrayPoints->SetVertexColor (anArrayPoints->VertexNumber(),
|
||||
Quantity_Color (Quantity_NOC_YELLOW));
|
||||
}
|
||||
else
|
||||
{
|
||||
for (Standard_Real i = 1; i <= aPointsOnSide; i++)
|
||||
for (Standard_Real aStepX = 1; aStepX <= aPointsOnSide; aStepX++)
|
||||
{
|
||||
for (Standard_Real j = 1; j <= aPointsOnSide; j++)
|
||||
for (Standard_Real aStepY = 1; aStepY <= aPointsOnSide; aStepY++)
|
||||
{
|
||||
for (Standard_Real k = 1; k <= aPointsOnSide; k++)
|
||||
for (Standard_Real aStepZ = 1; aStepZ <= aPointsOnSide; aStepZ++)
|
||||
{
|
||||
anArrayPoints->AddVertex (aStartPonit.X() + i,
|
||||
aStartPonit.Y() + j,
|
||||
aStartPonit.Z() + k);
|
||||
anArrayPoints->AddVertex (aStartPos[0] + aStepX,
|
||||
aStartPos[1] + aStepY,
|
||||
aStartPos[2] + aStepZ);
|
||||
anArrayPoints->SetVertexColor (anArrayPoints->VertexNumber(),
|
||||
i / aPointsOnSide,
|
||||
j / aPointsOnSide,
|
||||
k / aPointsOnSide);
|
||||
aStepX / aPointsOnSide,
|
||||
aStepY / aPointsOnSide,
|
||||
aStepZ / aPointsOnSide);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5156,7 +5191,7 @@ static Standard_Integer VPointCloud (Draw_Interpretor& /*theDI*/,
|
||||
// Set array of points in point cloud object
|
||||
aPointCloud->SetPoints (anArrayPoints);
|
||||
}
|
||||
else if (aMode = 1)
|
||||
else if (aModeSetPoints = 1)
|
||||
{
|
||||
Handle(TColgp_HArray1OfPnt) aCoords = new TColgp_HArray1OfPnt (1, aNumberOfPoints);
|
||||
for (Standard_Integer i = 1; i <= aNumberOfPoints; i++)
|
||||
@ -5168,7 +5203,7 @@ static Standard_Integer VPointCloud (Draw_Interpretor& /*theDI*/,
|
||||
}
|
||||
|
||||
Handle(Quantity_HArray1OfColor) aColors = new Quantity_HArray1OfColor (1, aNumberOfPoints);
|
||||
if (aHasColor)
|
||||
if (hasColors)
|
||||
{
|
||||
for (Standard_Integer i = 1; i <= aNumberOfPoints; i++)
|
||||
{
|
||||
@ -5184,7 +5219,7 @@ static Standard_Integer VPointCloud (Draw_Interpretor& /*theDI*/,
|
||||
aPointCloud->SetPoints (aCoords, aColors);
|
||||
}
|
||||
|
||||
if (aHasAspect)
|
||||
if (hasAspect)
|
||||
{
|
||||
// Set point aspect for attributes of interactive object
|
||||
aPointCloud->Attributes()->SetPointAspect (
|
||||
@ -5194,7 +5229,7 @@ static Standard_Integer VPointCloud (Draw_Interpretor& /*theDI*/,
|
||||
}
|
||||
|
||||
VDisplayAISObject (aName, aPointCloud);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5357,11 +5392,12 @@ void ViewerTest::ObjectCommands(Draw_Interpretor& theCommands)
|
||||
__FILE__, VFont, group);
|
||||
|
||||
theCommands.Add ("vpointcloud",
|
||||
"Create an interactive object for arbitary set of points.\n"
|
||||
"\t\t: vpointcloud usage: \n"
|
||||
"\t\t vpointcloud ObjectName\n"
|
||||
"\t\t [Mode=1]\n"
|
||||
"\t\t [PointsOnSide=100]\n"
|
||||
"\t\t [MarkerType=0] [ColorName=GREEN] [Scale=1.0]",
|
||||
__FILE__, VPointCloud, group);
|
||||
"vpointcloud [name]"
|
||||
"\n\t\t: [-setmode ModeSetPoints]"
|
||||
"\n\t\t: [-nbpointsonside NumberPointsOnSide]"
|
||||
"\n\t\t: [-markertype TypeOfMarker]"
|
||||
"\n\t\t: [-color ColorName]"
|
||||
"\n\t\t: [-scale Scale]"
|
||||
"\n\t\t: Create an interactive object for arbitary set of points.",
|
||||
__FILE__, VPointCloud, group);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user