def main(): fountain = fo.Fountain() commands = [] iter = 1 turn = False for i in range(0, 1000): if turn: commands.append(fountain.turn_on_pumps(i * 1000, iter)) commands.append(fountain.open_valves(i * 1000, iter)) else: commands.append(fountain.turn_off_pumps(i * 1000, iter)) commands.append(fountain.close_valves(i * 1000, iter)) iter += 1 if iter == 10: iter = 1 if i % 50 == 0: turn = not turn path = '../partitura.txt' file = open(path, 'w') for e in commands: file.write(e)
def __init__(self, input_num): self.fountains = [] self.outputer = perceptron.Perceptron([1], 0) for i in range(input_num): self.fountains.append(fountain.Fountain())
def execute(self, context): fountain_script = bpy.context.area.spaces.active.text.as_string() if fountain_script.strip() == "": return {"CANCELLED"} F = fountain.Fountain(fountain_script) if not bpy.context.scene.sequence_editor: bpy.context.scene.sequence_editor_create() addSceneChannel = 1 previous_time = 0 previous_line = 0 lines_pr_minute = 59 first_duration = 0 render = bpy.context.scene.render fps = round((render.fps / render.fps_base), 3) count = 0 f_collected = [] duration = 0 for fc, f in enumerate(F.elements): if f.element_type == 'Scene Heading': f_collected.append(f) for fc, f in enumerate(f_collected): if str(f.scene_number) != "": f.scene_number = f.scene_number + " " name = str(f.scene_number + f.element_text.title()) new_scene = bpy.data.scenes.new(name=name) cam = bpy.data.cameras.new("Camera") cam.lens = 35 cam_obj1 = bpy.data.objects.new("Camera", cam) cam_obj1.location = (9.69, -10.85, 12.388) cam_obj1.rotation_euler = (0.6799, 0, 0.8254) new_scene.collection.objects.link(cam_obj1) if fc == 0: for ec, e in enumerate(f_collected): if ec == fc + 1: first_duration = int( (((e.original_line) / lines_pr_minute) * 60) * fps) duration = first_duration print("Fc " + str(e.original_line) + " ec " + str(f.original_line)) else: for ec, e in enumerate(f_collected): if ec == fc + 1: duration = int((((e.original_line - f.original_line) / lines_pr_minute) * 60) * fps) in_time = duration + previous_time bpy.data.scenes[name].frame_start = 0 bpy.data.scenes[name].frame_end = duration newScene = bpy.context.scene.sequence_editor.sequences.new_scene( f.element_text.title(), new_scene, addSceneChannel, previous_time) bpy.context.scene.sequence_editor.sequences_all[ newScene.name].scene_camera = bpy.data.objects[cam.name] #bpy.context.scene.sequence_editor.sequences_all[newScene.name].animation_offset_start = 0 bpy.context.scene.sequence_editor.sequences_all[ newScene.name].frame_final_end = in_time bpy.context.scene.sequence_editor.sequences_all[ newScene.name].frame_start = previous_time previous_time = in_time previous_line = f.original_line bpy.ops.sequencer.set_range_to_strips() characters_pr_minute = 900 for fc, f in enumerate(F.elements): if f.element_type == 'Dialogue': name = str(f.element_text) duration = int( ((len(f.original_content) / characters_pr_minute) * 60) * fps) in_time = int(((f.original_line / lines_pr_minute) * 60) * fps) text_strip = bpy.context.scene.sequence_editor.sequences.new_effect( name=name, type='TEXT', channel=addSceneChannel + 1, frame_start=in_time, frame_end=in_time + duration) text_strip.font_size = int( bpy.context.scene.render.resolution_y / 18) text_strip.text = str(name) text_strip.use_shadow = True text_strip.select = True text_strip.wrap_width = 0.85 text_strip.location[1] = 0.10 text_strip.blend_type = 'ALPHA_OVER' return {'FINISHED'}
def execute(self, context): space = bpy.context.space_data dir = os.path.dirname(bpy.data.filepath) if not dir in sys.path: sys.path.append(dir) current_text = os.path.basename(bpy.context.space_data.text.filepath) if current_text.strip() == "": return fountain_script = bpy.context.area.spaces.active.text.as_string() if fountain_script.strip() == "": return {"CANCELLED"} F = fountain.Fountain(fountain_script) filename = "Preview.txt" if filename not in bpy.data.texts: bpy.data.texts.new(filename) # New document in Text Editor else: bpy.data.texts[filename].clear() # Clear existing text # Get number of header lines contents = fountain_script.strip().replace('\r', '') contents_has_metadata = ':' in contents.splitlines()[0] contents_has_body = '\n\n' in contents if contents_has_metadata and contents_has_body: lines = fountain_script.split('\n\n') lines = lines[0].splitlines() current_line = bpy.data.texts[ current_text].current_line_index - len(lines) - 1 # elif contents_has_metadata and not contents_has_body: # self._parse_head(contents.splitlines()) else: current_line = bpy.data.texts[current_text].current_line_index current_character = bpy.data.texts[current_text].current_character jump_to_line = 0 margin = " " * 4 document_width = 60 + len(margin) action_wrapper = textwrap.TextWrapper(width=document_width) dialogue_wrapper = textwrap.TextWrapper(width=37 + int(len(margin) / 2)) dialogue_indentation = 13 + int(len(margin) / 2) cursor_indentation = margin add_lines = 0 add_characters = current_character cursor_indentation_actual = "" text = bpy.context.area.spaces.active.text current_line_length = len(text.current_line.body) add_lines_actual = 0 add_characters_actual = 0 # This is the way to use title stuff # for meta in iter(F.metadata.items()): # if meta[0] == 'title': # bpy.data.texts[filename].write((str(meta[1])).center(document_width)+chr(10)) add_lines = 0 for fc, f in enumerate(F.elements): add_lines = -1 #add_lines = 0 #int(document_width/current_character) add_characters = current_character if f.element_type == 'Scene Heading': if str(f.scene_number) != "": f.scene_number = f.scene_number + " " bpy.data.texts[filename].write(margin + f.scene_number + f.scene_abbreviation.upper() + " " + f.element_text.upper() + chr(10)) cursor_indentation = margin elif f.element_type == 'Action' and f.is_centered == False: action = f.element_text action_list = action_wrapper.wrap(text=action) add_action_lines = 0 for action in action_list: bpy.data.texts[filename].write(margin + action + chr(10)) cursor_indentation = margin elif f.element_type == 'Action' and f.is_centered == True: bpy.data.texts[filename].write( margin + f.element_text.center(document_width) + chr(10)) cursor_indentation = margin + ("_" * (int( (document_width / 2 - len(f.element_text) / 2)) - 2)) elif f.element_type == 'Character': bpy.data.texts[filename].write( margin + f.element_text.center(document_width).upper() + chr(10)) # .upper() cursor_indentation = margin + ("_" * ( (f.element_text.center(document_width)).find( f.element_text))) elif f.element_type == 'Parenthetical': bpy.data.texts[filename].write( margin + f.element_text.center(document_width).lower() + chr(10)) # .lower() cursor_indentation = margin + ("_" * int( (document_width / 2 - len(f.element_text) / 2))) elif f.element_type == 'Dialogue': dialogue = f.element_text current_character line_list = dialogue_wrapper.wrap(text=dialogue) for dialogue in line_list: bpy.data.texts[filename].write(margin + ( " " * dialogue_indentation + dialogue) + chr(10)) # if add_characters >= len(dialogue): # add_characters = add_characters-len(dialogue) # add_lines += 1 cursor_indentation = margin + (" " * dialogue_indentation ) # + (" "*add_characters) elif f.element_type == 'Synopsis': # Ignored by Fountain formatting bpy.data.texts[filename].write(chr(10)) elif f.element_type == 'Page Break': bpy.data.texts[filename].write( chr(10) + margin + ("_" * document_width) + chr(10)) elif f.element_type == 'Boneyard': # Ignored by Fountain formatting bpy.data.texts[filename].write(chr(10)) elif f.element_type == 'Comment': # Ignored by Fountain formatting bpy.data.texts[filename].write(chr(10)) elif f.element_type == 'Section Heading': # Ignored by Fountain formatting bpy.data.texts[filename].write(chr(10)) elif f.element_type == 'Transition': bpy.data.texts[filename].write( margin + f.element_text.rjust(document_width).upper() + chr(10)) cursor_indentation = margin + ( "_" * (document_width - len(f.element_text))) elif f.element_type == 'Empty Line': bpy.data.texts[filename].write(chr(10)) #print("org "+str(f.original_line)) #print("cur "+str(current_line)) if current_line >= f.original_line and f.original_line != 0: #current_line jump_to_line = bpy.data.texts[filename].current_line_index cursor_indentation_actual = cursor_indentation add_lines_actual = add_lines #print("add line: "+str(add_lines_actual)) #add_characters_actual = add_characters #print("Jump: "+str(jump_to_line)) line = jump_to_line - 1 #- add_lines_actual if line < 0: line = 0 bpy.data.texts[filename].current_line_index = line cur = current_character + len( cursor_indentation_actual) #+ add_characters_actual #print("Character:" + str(cur)+" Line: "+str((line))) bpy.data.texts[filename].select_set(line, cur, line, cur) return {"FINISHED"}