Skip to content
Snippets Groups Projects
Commit 7b4337f9 authored by Max Lyon's avatar Max Lyon
Browse files

Added Plugin-InfoVolumeMeshObject. Only very limited support.

git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@16428 383ad7c9-94d9-4d36-a494-682f7c89f535
parent e77a5593
No related branches found
No related tags found
No related merge requests found
include (plugin)
if (EXISTS ${CMAKE_SOURCE_DIR}/ObjectTypes/TSplineMesh)
add_definitions (-DENABLE_TSPLINEMESH_SUPPORT)
endif ()
openflipper_plugin (DIRS TSplineMesh TRANSLATION_LANGUAGES de_DE)
if (EXISTS ${CMAKE_SOURCE_DIR}/ObjectTypes/PolyhedralMesh)
openflipper_plugin ()
endif ()
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen *
* www.openflipper.org *
* *
*--------------------------------------------------------------------------- *
* This file is part of OpenFlipper. *
* *
* OpenFlipper is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 3 of *
* the License, or (at your option) any later version with the *
* following exceptions: *
* *
* If other files instantiate templates or use macros *
* or inline functions from this file, or you compile this file and *
* link it with other files to produce an executable, this file does *
* not by itself cause the resulting executable to be covered by the *
* GNU Lesser General Public License. This exception does not however *
* invalidate any other reasons why the executable file might be *
* covered by the GNU Lesser General Public License. *
* *
* OpenFlipper is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU LesserGeneral Public *
* License along with OpenFlipper. If not, *
* see <http://www.gnu.org/licenses/>. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision: 16192 $ *
* $LastChangedBy: moebius $ *
* $Date: 2013-01-25 08:55:31 +0100 (Fri, 25 Jan 2013) $ *
* *
\*===========================================================================*/
//=============================================================================
//
// CLASS InfoVolumeMeshObjectPlugin - IMPLEMENTATION
//
//=============================================================================
//== INCLUDES =================================================================
#include "VolumeMeshObjectInfoPlugin.hh"
#include <OpenFlipper/BasePlugin/PluginFunctions.hh>
#include <OpenFlipper/common/BaseObject.hh>
#include <ObjectTypes/HexahedralMesh/HexahedralMesh.hh>
#include <ObjectTypes/PolyhedralMesh/PolyhedralMesh.hh>
//== IMPLEMENTATION ==========================================================
InfoVolumeMeshObjectPlugin::InfoVolumeMeshObjectPlugin()
{
}
InfoVolumeMeshObjectPlugin::~InfoVolumeMeshObjectPlugin()
{
}
void InfoVolumeMeshObjectPlugin::initializePlugin()
{
}
/// initialize the plugin
void InfoVolumeMeshObjectPlugin::pluginsInitialized() {
//set the slot descriptions
setDescriptions();
}
//-----------------------------------------------------------------------------
//DataType InfoVolumeMeshObjectPlugin::supportedDataTypes() {
// return DataType(DATA_POLYHEDRAL_MESH | DATA_HEXAHEDRAL_MESH);
//}
//----------------------------------------------------------------------------------------------
void
InfoVolumeMeshObjectPlugin::
slotInformationRequested(const QPoint _clickedPoint, DataType _type) {
// not implemented yet
}
//------------------------------------------------------------------------------
void InfoVolumeMeshObjectPlugin::slotObjectUpdated( int _identifier , const UpdateType& _type)
{
}
//------------------------------------------------------------------------------
void InfoVolumeMeshObjectPlugin::slotObjectSelectionChanged( int _identifier )
{
slotObjectUpdated( _identifier , UPDATE_ALL );
}
//------------------------------------------------------------------------------
void InfoVolumeMeshObjectPlugin::slotAllCleared()
{
}
Q_EXPORT_PLUGIN2( InfoVolumeMeshObjectPlugin , InfoVolumeMeshObjectPlugin );
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen *
* www.openflipper.org *
* *
*--------------------------------------------------------------------------- *
* This file is part of OpenFlipper. *
* *
* OpenFlipper is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 3 of *
* the License, or (at your option) any later version with the *
* following exceptions: *
* *
* If other files instantiate templates or use macros *
* or inline functions from this file, or you compile this file and *
* link it with other files to produce an executable, this file does *
* not by itself cause the resulting executable to be covered by the *
* GNU Lesser General Public License. This exception does not however *
* invalidate any other reasons why the executable file might be *
* covered by the GNU Lesser General Public License. *
* *
* OpenFlipper is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU LesserGeneral Public *
* License along with OpenFlipper. If not, *
* see <http://www.gnu.org/licenses/>. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision: 16191 $ *
* $LastChangedBy: moebius $ *
* $Date: 2013-01-24 15:35:53 +0100 (Thu, 24 Jan 2013) $ *
* *
\*===========================================================================*/
//=============================================================================
//
// CLASS InfoMeshObjectPlugin
//
// Author: David Bommes <bommes@cs.rwth-aachen.de>
//=============================================================================
#ifndef INFOPLUGIN_HH
#define INFOPLUGIN_HH
//== INCLUDES =================================================================
#include <QObject>
#include <OpenFlipper/BasePlugin/BaseInterface.hh>
#include <OpenFlipper/BasePlugin/InformationInterface.hh>
#include <OpenFlipper/BasePlugin/StatusbarInterface.hh>
#include <OpenFlipper/BasePlugin/LoggingInterface.hh>
#include <OpenFlipper/common/Types.hh>
#include <ObjectTypes/PolyMesh/PolyMesh.hh>
#include <ObjectTypes/TriangleMesh/TriangleMesh.hh>
//== CLASS DEFINITION =========================================================
/** \brief Plugin to visualize information about open volume meshs in the scene
Plugin to visualize information about open volume meshs in the scene
*/
class InfoVolumeMeshObjectPlugin : public QObject, BaseInterface, /*InformationInterface,*/ LoggingInterface/*, StatusbarInterface*/
{
Q_OBJECT
Q_INTERFACES(BaseInterface)
// Q_INTERFACES(InformationInterface)
Q_INTERFACES(LoggingInterface)
// Q_INTERFACES(StatusbarInterface)
signals:
// BaseInterface
void setSlotDescription(QString _slotName, QString _slotDescription,
QStringList _parameters, QStringList _descriptions);
// LoggingInterface
void log(Logtype _type, QString _message);
void log(QString _message);
// // StatusbarInterface
// void addWidgetToStatusbar(QWidget* _widget);
private slots :
// BaseInterface
void initializePlugin();
void pluginsInitialized();
void slotObjectUpdated( int _identifier, const UpdateType& _type );
void slotObjectSelectionChanged( int _identifier );
void slotAllCleared();
void noguiSupported( ) {}
// InformationInterface
void slotInformationRequested(const QPoint _clickedPoint, DataType _type);
DataType supportedDataTypes();
public :
// default constructor
InfoVolumeMeshObjectPlugin();
// default destructor
~InfoVolumeMeshObjectPlugin();
/// Name of the Plugin
QString name(){ return (QString("InfoVolumeMeshObject")); }
/// Description of the Plugin
QString description() { return (QString(tr("Provides Information on Volume Mesh Objects"))); }
private :
template< class MeshT >
void printMeshInfo( MeshT* _mesh, int _id, unsigned int _face, ACG::Vec3d& _hitPoint );
//===========================================================================
/** @name Scripting Functions
* @{ */
//===========================================================================
public slots:
/// get total number of vertices for a given object
int vertexCount(int _id);
/// get total number of edges for a given object
int edgeCount(int _id);
/// get total number of faces for a given object
int faceCount(int _id);
/// get total number of cells for a given object
int cellCount(int _id);
public slots:
QString version() { return QString("0.1"); }
private:
/// set scripting slot descriptions
void setDescriptions();
/** @} */
};
#endif //MOVEPLUGIN_HH
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen *
* www.openflipper.org *
* *
*--------------------------------------------------------------------------- *
* This file is part of OpenFlipper. *
* *
* OpenFlipper is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 3 of *
* the License, or (at your option) any later version with the *
* following exceptions: *
* *
* If other files instantiate templates or use macros *
* or inline functions from this file, or you compile this file and *
* link it with other files to produce an executable, this file does *
* not by itself cause the resulting executable to be covered by the *
* GNU Lesser General Public License. This exception does not however *
* invalidate any other reasons why the executable file might be *
* covered by the GNU Lesser General Public License. *
* *
* OpenFlipper is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU LesserGeneral Public *
* License along with OpenFlipper. If not, *
* see <http://www.gnu.org/licenses/>. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision: 16055 $ *
* $LastChangedBy: moebius $ *
* $Date: 2013-01-08 10:57:31 +0100 (Tue, 08 Jan 2013) $ *
* *
\*===========================================================================*/
#include "VolumeMeshObjectInfoPlugin.hh"
#include <OpenFlipper/BasePlugin/PluginFunctions.hh>
#include <ObjectTypes/HexahedralMesh/HexahedralMesh.hh>
#include <ObjectTypes/PolyhedralMesh/PolyhedralMesh.hh>
//------------------------------------------------------------------------------
/** \brief set the descriptions for scripting slots
*
*/
void InfoVolumeMeshObjectPlugin::setDescriptions(){
emit setSlotDescription("vertexCount(int)",tr("get total number of vertices for a given object"),
QStringList(tr("objectID")), QStringList(tr("id of an object")));
emit setSlotDescription("edgeCount(int)",tr("get total number of edges for a given object"),
QStringList(tr("objectID")), QStringList(tr("id of an object")));
emit setSlotDescription("faceCount(int)",tr("get total number of faces for a given object"),
QStringList(tr("objectID")), QStringList(tr("id of an object")));
emit setSlotDescription("cellCount(int)",tr("get total number of cells for a given object"),
QStringList(tr("objectID")), QStringList(tr("id of an object")));
}
//------------------------------------------------------------------------------
/** \brief get total number of vertices for a given object
*
* @param _id object id
* @return number of vertices or -1 if an error occured
*/
int InfoVolumeMeshObjectPlugin::vertexCount(int _id)
{
BaseObjectData* object;
if ( ! PluginFunctions::getObject(_id,object) )
return -1;
if ( object == 0){
emit log(LOGERR, tr("Unable to get object"));
return -1;
}
if ( object->dataType(DATA_HEXAHEDRAL_MESH) ) {
HexahedralMesh* mesh = PluginFunctions::hexahedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_vertices();
} else {
PolyhedralMesh* mesh = PluginFunctions::polyhedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_vertices();
}
}
//------------------------------------------------------------------------------
/** \brief get total number of edges for a given object
*
* @param _id object id
* @return number of edges or -1 if an error occured
*/
int InfoVolumeMeshObjectPlugin::edgeCount(int _id)
{
BaseObjectData* object;
if ( ! PluginFunctions::getObject(_id,object) )
return -1;
if ( object == 0){
emit log(LOGERR, tr("Unable to get object"));
return -1;
}
if ( object->dataType(DATA_HEXAHEDRAL_MESH) ) {
HexahedralMesh* mesh = PluginFunctions::hexahedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_edges();
} else {
PolyhedralMesh* mesh = PluginFunctions::polyhedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_edges();
}
}
//------------------------------------------------------------------------------
/** \brief get total number of faces for a given object
*
* @param _id object id
* @return number of faces or -1 if an error occured
*/
int InfoVolumeMeshObjectPlugin::faceCount(int _id)
{
BaseObjectData* object;
if ( ! PluginFunctions::getObject(_id,object) )
return -1;
if ( object == 0){
emit log(LOGERR, tr("Unable to get object"));
return -1;
}
if ( object->dataType(DATA_HEXAHEDRAL_MESH) ) {
HexahedralMesh* mesh = PluginFunctions::hexahedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_faces();
} else {
PolyhedralMesh* mesh = PluginFunctions::polyhedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_faces();
}
}
//------------------------------------------------------------------------------
/** \brief get total number of cells for a given object
*
* @param _id object id
* @return number of cells or -1 if an error occured
*/
int InfoVolumeMeshObjectPlugin::cellCount(int _id)
{
BaseObjectData* object;
if ( ! PluginFunctions::getObject(_id,object) )
return -1;
if ( object == 0){
emit log(LOGERR, tr("Unable to get object"));
return -1;
}
if ( object->dataType(DATA_HEXAHEDRAL_MESH) ) {
HexahedralMesh* mesh = PluginFunctions::hexahedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_faces();
} else {
PolyhedralMesh* mesh = PluginFunctions::polyhedralMesh(object);
if ( mesh == 0 ) {
emit log(LOGERR, tr("Unable to get mesh"));
return -1;
}
return mesh->n_cells();
}
}
//------------------------------------------------------------------------------
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment