Kernel SDK Developer's Guide > Working with the Ge Library > Example of Entering and Displaying 3D Vector Objects
Example of Entering and Displaying 3D Vector Objects

The example demonstrates working with the three-dimensional vector object, including the display and modification of its properties. The AboutVector3d() function requires a reference to an existing three-dimensional vector as an OdGeVector3d instance and returns the string containing the values of  X, Y, Z coordinates of the passed vector as an OdString value. The function declares the variable of the OdString type and uses the format() method to convert the coordinates to a string. The AboutVector3d() function has the following implementation:

OdString AboutVector3d(const OdGeVector3d& vector)
{ 
  OdString s;
  s.format(L"(%g,%g,%g)", vector.x, vector.y, vector.z);
  return s;
}

The EntryVector3d() function requires a reference to an existing three-dimensional vector as an OdGeVector3d instance which is used as a default value and returns True if the user modifies the passed instance, or False if the user cancels entry. The function organizes a loop for entry of coordinates and displays the current values of coordinates before the loop. If an entered value of a coordinate is incorrect, the function displays an error message and repeats the entry. If the entered X, Y, Z coordinates are correct, the function passes the modified instance in the calling function through own argument and returns True as a result. If the user selects [Q], the function cancels the entry, remains the current coordinates, and returns False as a result. The EntryVector3d() function has the following implementation:

bool EntryVector3d(const OdGeVector3d& vector)
{
  wchar_t ch;
  OdGeVector3d value = vector;

  wcout << L"\nCurrent vector directions: " << AboutVector3d(vector) << L"\n";
  do {
    wcout << L"Entry X-direction:>";
    wcin >> value.x;

    if(!wcin.fail() && wcin.peek() == 10)
    {
      wcout << L"Entry Y-direction:>";
      wcin >> value.y;

      if(!wcin.fail() && wcin.peek() == 10)
      {
        wcout << L"Entry Z-direction:>";
        wcin >> value.z;

        if(!wcin.fail() && wcin.peek() == 10)
        {
          vector = value;
          return true;
        }
      }
    }
    wcin.clear();  
    wcin.sync();
    wcout << L"Error: Invalid entered value\nPress any key to repeat [or Q-quit]:>";
    wcin >> ch;
  } 
  while(ch != L'Q' && ch != L'q');

  return false;
}

Note: The «toString» sample code contains an additional example for converting an OdGeVector3d value to an OdString value.

The AboutVector3d() and EntryVector3d() functions are used in the documented examples that require display and entry of a three-dimensional vector.

See Also

Working with Basic Geometry Types

Copyright © 2002 – 2020. Open Design Alliance. All rights reserved.