How to Add ShapeWorks Commands?
To add ShapeWorks Commands, the following steps need to be followed:
-
Declare command in Applications/shapeworks/Commands.h
COMMAND_DECLARE(CommandName, CommandType);
CommandName is the name of the command.
CommandType is the type of command.
ShapeWorks supports ImageCommand, MeshCommand, ParticleSystemCommand, OptimizeCommandGroup and GroomCommandGroup -
Define command in
- Applications/shapeworks/ImageCommands.cpp if CommandType is ImageCommand
- Applications/shapeworks/MeshCommands.cpp if CommandType is MeshCommand
- Applications/shapeworks/ParticleSystemCommands.cpp if CommandType is ParticleSystemCommand
- Applications/shapeworks/Commands.cpp for other types of commands
/////////////////////////////////////////////////////////////////////////////// // CommandName /////////////////////////////////////////////////////////////////////////////// void CommandName::buildParser() { const std::string prog = "commandname"; // supports command-name as well const std::string desc = "brief description of command"; parser.prog(prog).description(desc); parser.add_option("--optionname").action("store").type("double").set_default(0.01).help("Description of optionname."); // additional options/arguments... Command::buildParser(); } bool CommandName::execute(const optparse::Values &options, SharedCommandData &sharedData) { if (!sharedData.validImage()) { std::cerr << "No image to operate on\n"; return false; } double optionName = static_cast<double>(options.get("optionname")); // read additional options/arguments... sharedData.image.example(optionName, ...); // call related function return true; }
-
Add command to Applications/shapeworks/shapeworks.cpp
shapeworks.addCommand(CommandName::getCommand());