Changeset d61161 for src/Actions
- Timestamp:
- Nov 19, 2012, 10:27:51 AM (12 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- d5307b
- Parents:
- 286a967 (diff), 315351 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src/Actions
- Files:
-
- 25 added
- 10 deleted
- 2 edited
- 5 moved
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/FillAction/FillSurfaceAction.cpp
r286a967 rd61161 22 22 23 23 /* 24 * FillS phericalSurfaceAction.cpp24 * FillSurfaceAction.cpp 25 25 * 26 26 * Created on: Mar 29, 2012 … … 48 48 #include "molecule.hpp" 49 49 #include "Shapes/BaseShapes.hpp" 50 #include "Shapes/ShapeRegistry.hpp" 50 51 #include "World.hpp" 51 52 … … 58 59 #include <vector> 59 60 60 #include "Actions/FillAction/FillS phericalSurfaceAction.hpp"61 #include "Actions/FillAction/FillSurfaceAction.hpp" 61 62 62 63 using namespace MoleCuilder; 63 64 64 65 // and construct the stuff 65 #include "FillS phericalSurfaceAction.def"66 #include "FillSurfaceAction.def" 66 67 #include "Action_impl_pre.hpp" 67 68 /** =========== define the function ====================== */ 68 Action::state_ptr FillS phericalSurfaceAction::performCall() {69 Action::state_ptr FillSurfaceAction::performCall() { 69 70 // get the filler molecule 70 71 const std::vector< molecule *> molecules = World::getInstance().getSelectedMolecules(); … … 99 100 100 101 // create predicate, mesh, and filler 101 FillS phericalSurfaceState *UndoState = NULL;102 FillSurfaceState *UndoState = NULL; 102 103 bool successflag = false; 103 104 { … … 107 108 ) 108 109 ); 109 Shape s = Sphere(params.center.get(), params.radius.get()); 110 111 112 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 113 if (selectedShapes.size() != 1){ 114 ELOG(1, "FillSurfaceAction::performCall(): there has to be exactly 1 selected shape."); 115 return Action::failure; 116 } 117 110 118 boost::function<const NodeSet ()> func = 111 boost::bind(&Shape::getHomogeneousPointsOnSurface, boost::ref( s), params.N.get());119 boost::bind(&Shape::getHomogeneousPointsOnSurface, boost::ref(*selectedShapes[0]), params.N.get()); 112 120 Mesh *mesh = new MeshAdaptor(func); 113 121 Inserter *inserter = new Inserter( 114 Inserter::impl_ptr(new SurfaceInserter( s, params.AlignedAxis.get())));122 Inserter::impl_ptr(new SurfaceInserter(*selectedShapes[0], params.AlignedAxis.get()))); 115 123 116 124 // fill … … 150 158 std::transform(filler->begin(), filler->end(), MovedToVector.begin(), 151 159 boost::bind(&AtomInfo::getPosition, _1) ); 152 UndoState = new FillS phericalSurfaceState(clonedatominfos,clonedbonds,movedatoms,MovedToVector,params);160 UndoState = new FillSurfaceState(clonedatominfos,clonedbonds,movedatoms,MovedToVector,params); 153 161 } 154 162 } … … 166 174 } 167 175 168 Action::state_ptr FillS phericalSurfaceAction::performUndo(Action::state_ptr _state) {169 FillS phericalSurfaceState *state = assert_cast<FillSphericalSurfaceState*>(_state.get());176 Action::state_ptr FillSurfaceAction::performUndo(Action::state_ptr _state) { 177 FillSurfaceState *state = assert_cast<FillSurfaceState*>(_state.get()); 170 178 171 179 // remove all created atoms … … 177 185 } 178 186 179 Action::state_ptr FillS phericalSurfaceAction::performRedo(Action::state_ptr _state){180 FillS phericalSurfaceState *state = assert_cast<FillSphericalSurfaceState*>(_state.get());187 Action::state_ptr FillSurfaceAction::performRedo(Action::state_ptr _state){ 188 FillSurfaceState *state = assert_cast<FillSurfaceState*>(_state.get()); 181 189 182 190 // place filler cluster again at new spot … … 194 202 } 195 203 196 bool FillS phericalSurfaceAction::canUndo() {204 bool FillSurfaceAction::canUndo() { 197 205 return true; 198 206 } 199 207 200 bool FillS phericalSurfaceAction::shouldUndo() {208 bool FillSurfaceAction::shouldUndo() { 201 209 return true; 202 210 } -
src/Actions/FillAction/FillSurfaceAction.def
r286a967 rd61161 1 1 /* 2 * Fill RegularGridAction.def2 * FillSurfaceAction.def 3 3 * 4 4 * Created on: Mar 29, 2012 … … 20 20 // ValueStorage by the token "Z" -> first column: int, Z, "Z" 21 21 // "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value 22 #define paramtypes ( Vector)(double)(unsigned int)(double)(Vector)23 #define paramtokens ("c enter")("radius")("count")("min-distance")("Alignment-Axis")24 #define paramdescriptions (" center of the sphere")("sphere size")("number of instances to be added, changed according to geometric needs")("minimum distance between added instances")("The filler molecule is rotated relative to this alignment axis")25 #define paramdefaults (PARAM_DEFAULT( Vector(0.,0.,0.)))(NOPARAM_DEFAULT)(PARAM_DEFAULT(12))(PARAM_DEFAULT(1.))(NOPARAM_DEFAULT)26 #define paramreferences ( center)(radius)(N)(mindistance)(AlignedAxis)22 #define paramtypes (unsigned int)(double)(Vector) 23 #define paramtokens ("count")("min-distance")("Alignment-Axis") 24 #define paramdescriptions ("number of instances to be added, changed according to geometric needs")("minimum distance between added instances")("The filler molecule is rotated relative to this alignment axis") 25 #define paramdefaults (PARAM_DEFAULT(12))(PARAM_DEFAULT(1.))(NOPARAM_DEFAULT) 26 #define paramreferences (N)(mindistance)(AlignedAxis) 27 27 #define paramvalids \ 28 (BoxVectorValidator()) \29 (BoxLengthValidator()) \30 28 (DummyValidator< unsigned int >()) \ 31 29 (BoxLengthValidator()) \ … … 39 37 #define MENUNAME "fill" 40 38 #define MENUPOSITION 1 41 #define ACTIONNAME S phericalSurface42 #define TOKEN "fill-s pherical-surface"39 #define ACTIONNAME Surface 40 #define TOKEN "fill-surface" 43 41 44 42 45 43 // finally the information stored in the ActionTrait specialization 46 44 #define DESCRIPTION "\ 47 fill homogenous points on a s pheresurface with instances of the selected molecule."45 fill homogenous points on a shape's surface with instances of the selected molecule." 48 46 #undef SHORTFORM -
src/Actions/FillAction/FillSurfaceAction.hpp
r286a967 rd61161 1 1 /* 2 * FillS phericalSurfaceAction.hpp2 * FillSurfaceAction.hpp 3 3 * 4 4 * Created on: Mar 29, 2012 … … 6 6 */ 7 7 8 #ifndef FILLS PHERICALSURFACEACTION_HPP9 #define FILLS PHERICALSURFACEACTION_HPP8 #ifndef FILLSURFACEACTION_HPP 9 #define FILLSURFACEACTION_HPP 10 10 11 11 // include config.h … … 17 17 #include "Actions/Action.hpp" 18 18 19 #include "FillS phericalSurfaceAction.def"19 #include "FillSurfaceAction.def" 20 20 #include "Action_impl_header.hpp" 21 21 22 #endif // FILLS PHERICALSURFACEACTION_HPP22 #endif // FILLSURFACEACTION_HPP -
src/Actions/GlobalListOfActions.hpp
r286a967 rd61161 101 101 (SelectionNotAtomById) \ 102 102 (SelectionNotAtomByOrder) \ 103 (SelectionAllAtomsInsideCuboid) \104 103 (SelectionAllAtoms) \ 105 104 (SelectionClearAllAtoms) \ … … 107 106 (SelectionNotAllAtoms) \ 108 107 (SelectionNotAtomByElement) \ 109 (SelectionAllAtomsInside Sphere) \108 (SelectionAllAtomsInsideVolume) \ 110 109 (SelectionAllAtomsOfMolecule) \ 111 (SelectionNotAllAtomsInside Sphere) \110 (SelectionNotAllAtomsInsideVolume) \ 112 111 (SelectionAtomByElement) \ 113 112 (SelectionNotAllAtomsOfMolecule) \ 114 (SelectionNotAllAtomsInsideCuboid) \115 113 (SelectionAtomById) \ 116 114 (SelectionAtomByOrder) \ 115 (SelectionAllShapes) \ 116 (SelectionShapeByName) \ 117 (SelectionNotAllShapes) \ 118 (SelectionNotShapeByName) \ 117 119 (FragmentationFragmentation) \ 118 120 (FillRegularGrid) \ 119 (FillSphericalSurface) 121 (FillSurface) \ 122 (ShapeCombineShapes) \ 123 (ShapeCreateShape) \ 124 (ShapeRemoveShape) 120 125 121 126 // we need to append the automation action in case we have the JobMarket -
src/Actions/Makefile.am
r286a967 rd61161 60 60 ${SELECTIONATOMACTIONSOURCE} \ 61 61 ${SELECTIONMOLECULEACTIONSOURCE} \ 62 ${SELECTIONSHAPEACTIONSOURCE} \ 63 ${SHAPEACTIONSOURCE} \ 62 64 ${TESSELATIONACTIONSOURCE} \ 63 65 $(UNDOACTIONSOURCE) \ … … 76 78 ${SELECTIONATOMACTIONHEADER} \ 77 79 ${SELECTIONMOLECULEACTIONHEADER} \ 80 ${SELECTIONSHAPEACTIONHEADER} \ 81 ${SHAPEACTIONHEADER} \ 78 82 ${TESSELATIONACTIONHEADER} \ 79 83 $(UNDOACTIONHEADER) \ … … 92 96 ${SELECTIONATOMACTIONDEFS} \ 93 97 ${SELECTIONMOLECULEACTIONDEFS} \ 98 ${SELECTIONSHAPEACTIONDEFS} \ 99 ${SHAPEACTIONDEFS} \ 94 100 ${TESSELATIONACTIONDEFS} \ 95 101 $(UNDOACTIONDEFS) \ … … 182 188 FILLACTIONSOURCE = \ 183 189 Actions/FillAction/FillRegularGridAction.cpp \ 184 Actions/FillAction/FillS phericalSurfaceAction.cpp190 Actions/FillAction/FillSurfaceAction.cpp 185 191 FILLACTIONHEADER = \ 186 192 Actions/FillAction/FillRegularGridAction.hpp \ 187 Actions/FillAction/FillS phericalSurfaceAction.hpp193 Actions/FillAction/FillSurfaceAction.hpp 188 194 FILLACTIONDEFS = \ 189 195 Actions/FillAction/FillRegularGridAction.def \ 190 Actions/FillAction/FillS phericalSurfaceAction.def196 Actions/FillAction/FillSurfaceAction.def 191 197 192 198 … … 303 309 SELECTIONATOMACTIONSOURCE = \ 304 310 Actions/SelectionAction/Atoms/AllAtomsAction.cpp \ 305 Actions/SelectionAction/Atoms/AllAtomsInsideCuboidAction.cpp \ 306 Actions/SelectionAction/Atoms/AllAtomsInsideSphereAction.cpp \ 311 Actions/SelectionAction/Atoms/AllAtomsInsideVolumeAction.cpp \ 307 312 Actions/SelectionAction/Atoms/AllAtomsOfMoleculeAction.cpp \ 308 313 Actions/SelectionAction/Atoms/AtomByElementAction.cpp \ … … 312 317 Actions/SelectionAction/Atoms/InvertAtomsAction.cpp \ 313 318 Actions/SelectionAction/Atoms/NotAllAtomsAction.cpp \ 314 Actions/SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.cpp \ 315 Actions/SelectionAction/Atoms/NotAllAtomsInsideSphereAction.cpp \ 319 Actions/SelectionAction/Atoms/NotAllAtomsInsideVolumeAction.cpp \ 316 320 Actions/SelectionAction/Atoms/NotAllAtomsOfMoleculeAction.cpp \ 317 321 Actions/SelectionAction/Atoms/NotAtomByElementAction.cpp \ … … 320 324 SELECTIONATOMACTIONHEADER = \ 321 325 Actions/SelectionAction/Atoms/AllAtomsAction.hpp \ 322 Actions/SelectionAction/Atoms/AllAtomsInsideCuboidAction.hpp \ 323 Actions/SelectionAction/Atoms/AllAtomsInsideSphereAction.hpp \ 326 Actions/SelectionAction/Atoms/AllAtomsInsideVolumeAction.hpp \ 324 327 Actions/SelectionAction/Atoms/AllAtomsOfMoleculeAction.hpp \ 325 328 Actions/SelectionAction/Atoms/AtomByElementAction.hpp \ … … 329 332 Actions/SelectionAction/Atoms/InvertAtomsAction.hpp \ 330 333 Actions/SelectionAction/Atoms/NotAllAtomsAction.hpp \ 331 Actions/SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.hpp \ 332 Actions/SelectionAction/Atoms/NotAllAtomsInsideSphereAction.hpp \ 334 Actions/SelectionAction/Atoms/NotAllAtomsInsideVolumeAction.hpp \ 333 335 Actions/SelectionAction/Atoms/NotAllAtomsOfMoleculeAction.hpp \ 334 336 Actions/SelectionAction/Atoms/NotAtomByElementAction.hpp \ … … 337 339 SELECTIONATOMACTIONDEFS = \ 338 340 Actions/SelectionAction/Atoms/AllAtomsAction.def \ 339 Actions/SelectionAction/Atoms/AllAtomsInsideCuboidAction.def \ 340 Actions/SelectionAction/Atoms/AllAtomsInsideSphereAction.def \ 341 Actions/SelectionAction/Atoms/AllAtomsInsideVolumeAction.def \ 341 342 Actions/SelectionAction/Atoms/AllAtomsOfMoleculeAction.def \ 342 343 Actions/SelectionAction/Atoms/AtomByElementAction.def \ … … 346 347 Actions/SelectionAction/Atoms/InvertAtomsAction.def \ 347 348 Actions/SelectionAction/Atoms/NotAllAtomsAction.def \ 348 Actions/SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.def \ 349 Actions/SelectionAction/Atoms/NotAllAtomsInsideSphereAction.def \ 349 Actions/SelectionAction/Atoms/NotAllAtomsInsideVolumeAction.def \ 350 350 Actions/SelectionAction/Atoms/NotAllAtomsOfMoleculeAction.def \ 351 351 Actions/SelectionAction/Atoms/NotAtomByElementAction.def \ … … 398 398 Actions/SelectionAction/Molecules/NotMoleculeByOrderAction.def \ 399 399 Actions/SelectionAction/Molecules/NotMoleculeOfAtomAction.def 400 401 SELECTIONSHAPEACTIONSOURCE = \ 402 Actions/SelectionAction/Shapes/AllShapesAction.cpp \ 403 Actions/SelectionAction/Shapes/ShapeByNameAction.cpp \ 404 Actions/SelectionAction/Shapes/NotAllShapesAction.cpp \ 405 Actions/SelectionAction/Shapes/NotShapeByNameAction.cpp 406 SELECTIONSHAPEACTIONHEADER = \ 407 Actions/SelectionAction/Shapes/AllShapesAction.hpp \ 408 Actions/SelectionAction/Shapes/ShapeByNameAction.hpp \ 409 Actions/SelectionAction/Shapes/NotAllShapesAction.hpp \ 410 Actions/SelectionAction/Shapes/NotShapeByNameAction.hpp 411 SELECTIONSHAPEACTIONDEFS = \ 412 Actions/SelectionAction/Shapes/AllShapesAction.def \ 413 Actions/SelectionAction/Shapes/ShapeByNameAction.def \ 414 Actions/SelectionAction/Shapes/NotAllShapesAction.def \ 415 Actions/SelectionAction/Shapes/NotShapeByNameAction.def 416 417 SHAPEACTIONSOURCE = \ 418 Actions/ShapeAction/CombineShapesAction.cpp \ 419 Actions/ShapeAction/CreateShapeAction.cpp \ 420 Actions/ShapeAction/RemoveShapeAction.cpp 421 SHAPEACTIONHEADER = \ 422 Actions/ShapeAction/CombineShapesAction.hpp \ 423 Actions/ShapeAction/CreateShapeAction.hpp \ 424 Actions/ShapeAction/RemoveShapeAction.hpp 425 SHAPEACTIONDEFS = \ 426 Actions/ShapeAction/CombineShapesAction.def \ 427 Actions/ShapeAction/CreateShapeAction.def \ 428 Actions/ShapeAction/RemoveShapeAction.def 400 429 401 430 TESSELATIONACTIONSOURCE = \ 402 431 Actions/TesselationAction/ConvexEnvelopeAction.cpp \ 403 Actions/TesselationAction/NonConvexEnvelopeAction.cpp 432 Actions/TesselationAction/NonConvexEnvelopeAction.cpp 404 433 TESSELATIONACTIONHEADER = \ 405 434 Actions/TesselationAction/ConvexEnvelopeAction.hpp \ -
src/Actions/SelectionAction/Atoms/AllAtomsInsideVolumeAction.cpp
r286a967 rd61161 22 22 23 23 /* 24 * AllAtomsInside SphereAction.cpp24 * AllAtomsInsideVolumeAction.cpp 25 25 * 26 26 * Created on: Aug 9, 2010 27 * Author: heber 27 * Author: heber, ankele 28 28 */ 29 29 … … 41 41 #include "CodePatterns/Verbose.hpp" 42 42 #include "LinearAlgebra/Vector.hpp" 43 #include "Shapes/BaseShapes.hpp" 44 #include "Shapes/Shape.hpp" 45 #include "Shapes/ShapeOps.hpp" 43 #include "Shapes/ShapeRegistry.hpp" 46 44 #include "World.hpp" 47 45 … … 50 48 #include <string> 51 49 52 #include "AllAtomsInside SphereAction.hpp"50 #include "AllAtomsInsideVolumeAction.hpp" 53 51 54 52 using namespace MoleCuilder; 55 53 56 54 // and construct the stuff 57 #include "AllAtomsInside SphereAction.def"55 #include "AllAtomsInsideVolumeAction.def" 58 56 #include "Action_impl_pre.hpp" 59 57 /** =========== define the function ====================== */ 60 Action::state_ptr SelectionAllAtomsInsideSphereAction::performCall() { 61 LOG(1, "Selecting all atoms inside a sphere at " << params.position.get() << " with radius " << params.radius.get() << "."); 62 Shape s = translate(resize(Sphere(),params.radius.get()),params.position.get()); 63 std::vector<atom *> selectedAtoms = World::getInstance().getAllAtoms(AtomsBySelection() && AtomsByShape(s)); 64 World::getInstance().selectAllAtoms(AtomsByShape(s)); 58 Action::state_ptr SelectionAllAtomsInsideVolumeAction::performCall() { 59 LOG(1, "Selecting all atoms inside a volume."); 60 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 61 if (selectedShapes.size() != 1){ 62 ELOG(1, "SelectionAllAtomsInsideVolumeAction::performCall(): there has to be exactly 1 selected shape."); 63 return Action::failure; 64 } 65 std::vector<atom *> selectedAtoms = World::getInstance().getAllAtoms(AtomsBySelection() && AtomsByShape(*selectedShapes[0])); 66 World::getInstance().selectAllAtoms(AtomsByShape(*selectedShapes[0])); 65 67 LOG(0, World::getInstance().countSelectedAtoms() << " atoms selected."); 66 return Action::state_ptr(new SelectionAllAtomsInside SphereState(selectedAtoms,s, params));68 return Action::state_ptr(new SelectionAllAtomsInsideVolumeState(selectedAtoms, params)); 67 69 } 68 70 69 Action::state_ptr SelectionAllAtomsInside SphereAction::performUndo(Action::state_ptr _state) {70 SelectionAllAtomsInside SphereState *state = assert_cast<SelectionAllAtomsInsideSphereState*>(_state.get());71 Action::state_ptr SelectionAllAtomsInsideVolumeAction::performUndo(Action::state_ptr _state) { 72 SelectionAllAtomsInsideVolumeState *state = assert_cast<SelectionAllAtomsInsideVolumeState*>(_state.get()); 71 73 72 World::getInstance().unselectAllAtoms(AtomsByShape(state->s)); 74 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 75 if (selectedShapes.size() != 1) 76 return Action::failure; 77 World::getInstance().unselectAllAtoms(AtomsByShape(*selectedShapes[0])); 73 78 BOOST_FOREACH(atom *_atom, state->selectedAtoms) 74 79 World::getInstance().selectAtom(_atom); … … 77 82 } 78 83 79 Action::state_ptr SelectionAllAtomsInside SphereAction::performRedo(Action::state_ptr _state){80 SelectionAllAtomsInsideSphereState *state = assert_cast<SelectionAllAtomsInsideSphereState*>(_state.get());84 Action::state_ptr SelectionAllAtomsInsideVolumeAction::performRedo(Action::state_ptr _state){ 85 //SelectionAllAtomsInsideVolumeState *state = assert_cast<SelectionAllAtomsInsideVolumeState*>(_state.get()); 81 86 82 World::getInstance().selectAllAtoms(AtomsByShape(state->s)); 87 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 88 if (selectedShapes.size() != 1) 89 return Action::failure; 90 World::getInstance().selectAllAtoms(AtomsByShape(*selectedShapes[0])); 83 91 84 92 return Action::state_ptr(_state); 85 93 } 86 94 87 bool SelectionAllAtomsInside SphereAction::canUndo() {95 bool SelectionAllAtomsInsideVolumeAction::canUndo() { 88 96 return true; 89 97 } 90 98 91 bool SelectionAllAtomsInside SphereAction::shouldUndo() {99 bool SelectionAllAtomsInsideVolumeAction::shouldUndo() { 92 100 return true; 93 101 } -
src/Actions/SelectionAction/Atoms/NotAllAtomsInsideVolumeAction.cpp
r286a967 rd61161 22 22 23 23 /* 24 * NotAllAtomsInside SphereAction.cpp24 * NotAllAtomsInsideVolumeAction.cpp 25 25 * 26 26 * Created on: Aug 9, 2010 … … 41 41 #include "CodePatterns/Verbose.hpp" 42 42 #include "LinearAlgebra/Vector.hpp" 43 #include "Shapes/BaseShapes.hpp" 44 #include "Shapes/Shape.hpp" 45 #include "Shapes/ShapeOps.hpp" 43 #include "Shapes/ShapeRegistry.hpp" 46 44 #include "World.hpp" 47 45 … … 50 48 #include <string> 51 49 52 #include "NotAllAtomsInside SphereAction.hpp"50 #include "NotAllAtomsInsideVolumeAction.hpp" 53 51 54 52 using namespace MoleCuilder; 55 53 56 54 // and construct the stuff 57 #include "NotAllAtomsInside SphereAction.def"55 #include "NotAllAtomsInsideVolumeAction.def" 58 56 #include "Action_impl_pre.hpp" 59 57 /** =========== define the function ====================== */ 60 Action::state_ptr SelectionNotAllAtomsInsideSphereAction::performCall() { 61 LOG(1, "Unselecting all atoms inside a sphere at " << params.position.get() << " with radius " << params.radius.get() << "."); 62 Shape s = translate(resize(Sphere(),params.radius.get()),params.position.get()); 63 std::vector<atom *> unselectedAtoms = World::getInstance().getAllAtoms((!AtomsBySelection()) && AtomsByShape(s)); 64 World::getInstance().unselectAllAtoms(AtomsByShape(s)); 58 Action::state_ptr SelectionNotAllAtomsInsideVolumeAction::performCall() { 59 LOG(1, "Unselecting all atoms inside a volume."); 60 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 61 if (selectedShapes.size() != 1){ 62 ELOG(1, "SelectionNotAllAtomsInsideVolumeAction::performCall(): there has to be exactly 1 selected shape."); 63 return Action::failure; 64 } 65 std::vector<atom *> unselectedAtoms = World::getInstance().getAllAtoms((!AtomsBySelection()) && AtomsByShape(*selectedShapes[0])); 66 World::getInstance().unselectAllAtoms(AtomsByShape(*selectedShapes[0])); 65 67 LOG(0, World::getInstance().countSelectedAtoms() << " atoms remain selected."); 66 return Action::state_ptr(new SelectionNotAllAtomsInside SphereState(unselectedAtoms,s, params));68 return Action::state_ptr(new SelectionNotAllAtomsInsideVolumeState(unselectedAtoms, params)); 67 69 } 68 70 69 Action::state_ptr SelectionNotAllAtomsInside SphereAction::performUndo(Action::state_ptr _state) {70 SelectionNotAllAtomsInside SphereState *state = assert_cast<SelectionNotAllAtomsInsideSphereState*>(_state.get());71 Action::state_ptr SelectionNotAllAtomsInsideVolumeAction::performUndo(Action::state_ptr _state) { 72 SelectionNotAllAtomsInsideVolumeState *state = assert_cast<SelectionNotAllAtomsInsideVolumeState*>(_state.get()); 71 73 72 World::getInstance().selectAllAtoms(AtomsByShape(state->s)); 74 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 75 if (selectedShapes.size() != 1) 76 return Action::failure; 77 World::getInstance().selectAllAtoms(AtomsByShape(*selectedShapes[0])); 73 78 BOOST_FOREACH(atom *_atom, state->unselectedAtoms) 74 79 World::getInstance().unselectAtom(_atom); … … 77 82 } 78 83 79 Action::state_ptr SelectionNotAllAtomsInside SphereAction::performRedo(Action::state_ptr _state){80 SelectionNotAllAtomsInsideSphereState *state = assert_cast<SelectionNotAllAtomsInsideSphereState*>(_state.get());84 Action::state_ptr SelectionNotAllAtomsInsideVolumeAction::performRedo(Action::state_ptr _state){ 85 //SelectionNotAllAtomsInsideVolumeState *state = assert_cast<SelectionNotAllAtomsInsideVolumeState*>(_state.get()); 81 86 82 World::getInstance().unselectAllAtoms(AtomsByShape(state->s)); 87 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 88 if (selectedShapes.size() != 1) 89 return Action::failure; 90 World::getInstance().unselectAllAtoms(AtomsByShape(*selectedShapes[0])); 83 91 84 92 return Action::state_ptr(_state); 85 93 } 86 94 87 bool SelectionNotAllAtomsInside SphereAction::canUndo() {95 bool SelectionNotAllAtomsInsideVolumeAction::canUndo() { 88 96 return true; 89 97 } 90 98 91 bool SelectionNotAllAtomsInside SphereAction::shouldUndo() {99 bool SelectionNotAllAtomsInsideVolumeAction::shouldUndo() { 92 100 return true; 93 101 }
Note:
See TracChangeset
for help on using the changeset viewer.