RayFeature.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (c) Jürgen Riegel          (juergen.riegel@web.de) 2002     *
00003  *                                                                         *
00004  *   This file is part of the FreeCAD CAx development system.              *
00005  *                                                                         *
00006  *   This library is free software; you can redistribute it and/or         *
00007  *   modify it under the terms of the GNU Library General Public           *
00008  *   License as published by the Free Software Foundation; either          *
00009  *   version 2 of the License, or (at your option) any later version.      *
00010  *                                                                         *
00011  *   This library  is distributed in the hope that it will be useful,      *
00012  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00013  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00014  *   GNU Library General Public License for more details.                  *
00015  *                                                                         *
00016  *   You should have received a copy of the GNU Library General Public     *
00017  *   License along with this library; see the file COPYING.LIB. If not,    *
00018  *   write to the Free Software Foundation, Inc., 59 Temple Place,         *
00019  *   Suite 330, Boston, MA  02111-1307, USA                                *
00020  *                                                                         *
00021  ***************************************************************************/
00022 
00023 
00024 #include "PreCompiled.h"
00025 
00026 #ifndef _PreComp_
00027 # include <Standard.hxx>
00028 #endif
00029 
00030 #include <Base/Exception.h>
00031 #include <Base/FileInfo.h>
00032 #include <Mod/Part/App/PartFeature.h>
00033 
00034 #include "RayFeature.h"
00035 #include "PovTools.h"
00036 
00037 
00038 using namespace Raytracing;
00039 
00040 PROPERTY_SOURCE(Raytracing::RayFeature, Raytracing::RaySegment)
00041 
00042 //===========================================================================
00043 // Feature
00044 //===========================================================================
00045 
00046 RayFeature::RayFeature(void)
00047 {
00048     ADD_PROPERTY(Source,(0));
00049 }
00050 
00051 App::DocumentObjectExecReturn *RayFeature::execute(void)
00052 {
00053     std::stringstream result;
00054     std::string ViewName = Label.getValue();
00055 
00056     App::DocumentObject* link = Source.getValue();
00057     if (!link)
00058         return new App::DocumentObjectExecReturn("No object linked");
00059     if (!link->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId()))
00060         return new App::DocumentObjectExecReturn("Linked object is not a Part object");
00061     TopoDS_Shape shape = static_cast<Part::Feature*>(link)->Shape.getShape()._Shape;
00062     std::string Name(std::string("Pov_")+static_cast<Part::Feature*>(link)->Label.getValue());
00063     if (shape.IsNull())
00064         return new App::DocumentObjectExecReturn("Linked shape object is empty");
00065 
00066     PovTools::writeShape(result,Name.c_str(),shape);
00067 
00068     // Apply the resulting fragment
00069     Result.setValue(result.str().c_str());
00070 
00071     return App::DocumentObject::StdReturn;
00072 }

Generated on Wed Nov 23 19:00:35 2011 for FreeCAD by  doxygen 1.6.1