Description
I've been using the scale tool in Python and have noticed that its run method returns False when I do not use the MarkerPlacer, despite the scaling otherwise working properly. Looking into the C++ source code, this appears to be due to an issue in the MarkerPlacer check within ScaleTool::run(). Unlike with the ModelScaler, there is no check to determine whether the MarkerPlacer is applied before attempting to use it. As such, MarkerPlacer::processModel() is called and immediately returns False due to the MarkerPlacer's _apply property being set to False. This results in an (I think) erroneous False return value for ScaleTool::run().
Based on the matching log_error messages in the ModelScaler and MarkerPlacer checks within ScaleTool::run(), I think the two checks should behave the same way with regard to whether those aspects of the scale tool are applied.
So instead of
if (!isDefaultMarkerPlacer())
The line should be
if (!isDefaultMarkerPlacer() && getMarkerPlacer().getApply())
That being said, this seems like a strange oversight to make considering the proximity of the ModelScaler and MarkerPlacer checks within ScaleTool::run(). Is there perhaps a reason for this difference between the two checks?