예제 #1
0
Extrude parseExtrudeString(const std::string& _str) {

    // Values specified from the stylesheet are assumed to be meters with no unit suffix
    float first = 0, second = 0;

    if (_str == "true") {
        // "true" means use default properties for both heights, we indicate this with NANs
        return Extrude(NAN, NAN);
    }

    if (_str == "false") {
        // "false" means perform no extrusion
        return Extrude(0, 0);
    }

    // Parse the first of two possible numbers
    const char* pos = _str.c_str();
    char* end = nullptr;

    // Get a float if possible & advance pos to the end of the number
    first = std::strtof(pos, &end);
    if (pos == end) {
        // No numbers found, return zero extrusion
        return Extrude(0, 0);
    }

    // Advance and skip the delimiter character
    pos = end + 1;

    // Get a float if possible & advance pos to the end of the number
    second = std::strtof(pos, &end);
    if (pos == end) {
        // No second number, so return an extrusion from 0 to the first number
        return Extrude(0, first);
    }

    // Got two numbers, so return an extrusion from first to second
    return Extrude(first, second);

}
예제 #2
0
//----------------------------------------------------------------------------
void medOpExtrusionHoles::OnEvent(mafEventBase *maf_event)
//----------------------------------------------------------------------------
{
	if (mafEvent *e = mafEvent::SafeDownCast(maf_event))
	{
		switch(e->GetId())
		{
    case ID_NUM_VERTICES:
      {
        m_ExtrusionFilter->SetMinNumberofEndPoints(m_NumVertices);
        m_ExtrusionFilter->Update();
        m_Rwi->CameraUpdate();
      }
      break;
    case ID_REVERSE:
      {
        double dir[3];
        m_ExtrusionFilter->GetDirection(dir);
        dir[0]=-dir[0];
        dir[1]=-dir[1];
        dir[2]=-dir[2];
        m_ExtrusionFilter->SetDirection(dir);
        m_ExtrusionFilter->Update();
        m_Rwi->CameraUpdate();
      }
      break;
		case VME_PICKED:
			{
				//Get the picked point
				int pointID = e->GetArg();
				if(pointID>=0)
				{
          m_ExtrusionFilter->SetDirectionToDefault(1);
					SelectHole(pointID);
					Extrude();
				}
			}
			break;
		case ID_EXTRUSION_FACTOR:
			{
				Extrude();
			}
			break;
		case ID_EXTRUDE:
			{
				SaveExtrusion();
			}
			break;
		case ID_RADIUS:
			{
				m_Sphere->SetRadius(m_SphereRadius);
				m_Rwi->CameraUpdate();
			}
			break;
		case ID_OK:
			m_Dialog->EndModal(wxID_OK);
			break;
		case ID_CANCEL:
			m_Dialog->EndModal(wxID_CANCEL);
			break;
		default:
			mafEventMacro(*e);
		}
	}
}