A file may contain several classes. This is demonstrated in the following code. If the code is edited, it can be reloaded by one of these commands:
Spock> relmac mixed1 Spock> relmac mixed2 Spock> relmac LoopOfScansMixed Spock> relmaclib mixed_class
#!/usr/bin/env python # # file name: /home/pXXuser/sardanaMacros/mixed_class.py # """this module contains some macros""" __all__ = ["mixed1", "mixed2", "LoopOfScansMixed"] from sardana.macroserver.macro import * from sardana.macroserver.macro import macro class mixed1(Macro): """Mixed1""" def run(self): self.output( "This is mixed1") class mixed2(Macro): """Mixed2""" def run(self): self.output( "This is mixed2") class LoopOfScansMixed(Macro): """reads an environment variable and displays it""" param_def = [ [ "mot1", Type.Moveable, None, "the inner loop motor" ], [ "mot2", Type.Moveable, None, "the outer loop motor" ], [ "delta", Type.Float, None, "a floating point number" ], [ "np", Type.Integer, None, "the no. of points" ], [ "comment", Type.String, None, "a comment line" ], ] def run(self, mot1, mot2, delta, np, comment): self.output( "Comment: %s " % comment) posOld = mot2.position for i in range(0, np): newPos = posOld + i*delta self.output( "%s is moving to %g" % (mot2.name, newPos)) self.mv(mot2, newPos) self.output( "%s is at %g" % (mot2.name, mot2.position)) self.ascan( mot1, 0, 0.1, 5, 0.1) self.mv( mot2, posOld)