Ejemplo n.º 1
0
 def print_dynamic(self, name, dyn, pos, alias, prop):
     def assert_pos(name, n):
         if len(pos) != n:
             raise Exception('%s dynamic expects %d offsets, provided %d' % (name, n, len(pos)))
     if dyn == 'force':
         assert_pos('force', 4)
         d = Shapes.Arrow(pos[0], pos[1], pos[2], pos[3], alias)
     elif dyn == 'weight':
         assert_pos('weight', 4)
         d = Shapes.Arrow(pos[0], pos[1], pos[2], pos[3], alias)
     elif dyn == 'rod':
         assert_pos('rod', 4)
         d = Shapes.Rod(pos[0], pos[1], pos[2], pos[3], alias)
     elif dyn == 'spring':
         assert_pos('spring', 4)
         d = Shapes.Spring(pos[0], pos[1], pos[2], pos[3], alias)
     elif dyn == 'dampener':
         assert_pos('dampener', 4)
         d = Shapes.Dampener(pos[0], pos[1], pos[2], pos[3], alias)
     elif dyn == 'torque':
         assert_pos('torque', 2)
         r = float(prop.get('radius', Shapes.getDefaultCArrowRadius()))
         c = prop.get('ccw', '0')
         if c == '0':
             c = False
         else:
             c = True
         d = Shapes.CircularArrow(pos[0], pos[1], r, alias)
     elif dyn == 'belt':
         assert_pos('belt', 4)
         c = prop.get('crossed', '0')
         r0 = float(prop['r0'])
         r1 = float(prop['r1'])
         if c == '0':
             c = False
         else:
             c = True
         d = Shapes.Belt(pos[0], pos[1], r0, pos[2], pos[3], r1, c, alias)
     elif dyn == 'angularspring':
         assert_pos('angularspring', 2)
         r = float(prop.get('radius', Shapes.getDefaultCArrowRadius()))
         d = Shapes.AngularSpring(pos[0], pos[1], r, alias)
     elif dyn == 'angulardampener':
         assert_pos('angulardampener', 2)
         r = float(prop.get('radius', Shapes.getDefaultCArrowRadius()))
         d = Shapes.AngularDampener(pos[0], pos[1], r, alias)
     else:
         raise Exception('unknown dynamic type %s' % dyn)
     self.dynscene[name] = d
     self.scene.addItem(d)