def element_data_creator(dims, lay, global_c, layer_c, z, len_dir, w_dir, grid_pos, vert_sup, perpendicular=False, loc="centre"): myElement = Element.from_dimensions(dims[2], dims[0], dims[1]) myElement.layer = lay myElement.global_count = global_c myElement.no_in_layer = layer_c myElement.z_drop = z myElement.length_direction = len_dir myElement.width_direction = w_dir myElement.grid_position = grid_pos myElement.location = loc myElement.width = dims[0] myElement.height = dims[1] myElement.length = dims[2] myElement.perp = perpendicular myElement.sup = vert_sup myElement.glue_givers = [] myElement.glue_receivers = [] myElement.glue_surfaces = [] myElement.glue_paths = [] myElement.receiving_neighbours = [] myElement.giving_neighbours = [] self.add_element(myElement) if vert_sup: if layer_c == 0: myElement.grid_position -= myElement.width/2 myElement.grid_position += (self.vertical_support_interlock - self.vertical_support_width)/2 else: myElement.grid_position += myElement.width/2 myElement.grid_position -= (self.vertical_support_interlock - self.vertical_support_width)/2 myElement.width = self.vertical_support_interlock + self.vertical_support_width
def element_data_creator(dims, lay, global_c, layer_c, z, len_dir, w_dir, grid_pos, loc="centre", sup=False): myElement = Element.from_dimensions(dims[2], dims[0], dims[1]) myElement.layer = lay myElement.global_count = global_c myElement.no_in_layer = layer_c myElement.z_drop = z myElement.length_direction = len_dir myElement.width_direction = w_dir myElement.grid_position = grid_pos myElement.location = loc myElement.width = dims[0] myElement.height = dims[1] myElement.length = dims[2] myElement.supporter = sup myElement.glue_givers = [] myElement.glue_receivers = [] myElement.glue_surfaces = [] myElement.glue_paths = [] myElement.receiving_neighbours = [] myElement.giving_neighbours = [] self.add_element(myElement)
def transfer_to_assembly(self): from assembly_information_model.assembly import Element, Assembly assembly = Assembly() for my_layer in self.timberboards: for my_board in my_layer: # box_update only precaution my_board.box_update() assembly_board = Element.from_box(my_board.box) assembly.add_element(assembly_board) return assembly
def element_data_creator(dims, lay, global_c, layer_c, z, len_dir, w_dir, grid_pos, vert_support, perpendicular=False, loc="centre"): myElement = Element.from_dimensions(dims[2], dims[0], dims[1]) myElement.layer = lay myElement.global_count = global_c myElement.no_in_layer = layer_c myElement.z_drop = z myElement.length_direction = len_dir myElement.width_direction = w_dir myElement.grid_position = grid_pos myElement.location = loc myElement.width = dims[0] myElement.height = dims[1] myElement.length = dims[2] myElement.perp = perpendicular myElement.vert_sup = vert_support myElement.glue_givers = [] myElement.glue_receivers = [] myElement.glue_surfaces = [] myElement.glue_paths = [] myElement.receiving_neighbours = [] myElement.giving_neighbours = [] self.add_element(myElement) # very wide pieces that both carry vertical load and connect to the other boards if myElement.vert_sup and not myElement.perp: if layer_c == 0: myElement.grid_position -= myElement.width / 2 myElement.grid_position += ( self.vertical_support_interlock - self.vertical_support_width) / 2 else: myElement.grid_position += myElement.width / 2 myElement.grid_position -= ( self.vertical_support_interlock - self.vertical_support_width) / 2 myElement.width = self.vertical_support_interlock + self.vertical_support_width myElement.length += self.vertical_support_width * 2 # not so wide pieces that only carry vertical load elif myElement.perp: myElement.length -= self.vertical_support_interlock * 2 myElement.width = self.vertical_support_width
def transfer_to_assembly(): from assembly_information_model.assembly import Element, Assembly assembly = Assembly() assembly.__init_subclass__() assembly.something = 5 for my_layer in self.timberboards: for my_board in my_layer: # box_update only precaution my_board.box_update() assembly_board = Element.from_box(my_board.box) assembly_board.something = 5 assembly.add_element(assembly_board, somethinsdg=12) return assembly
PATH_TO = os.path.join( DATA, os.path.splitext(os.path.basename(__file__))[0] + ".json") print(PATH_TO) # create tool from json filepath = os.path.join(DATA, "airpick.json") tool = Tool.from_json(filepath) # load settings (shared by GH) settings_file = os.path.join(DATA, "settings.json") with open(settings_file, 'r') as f: data = json.load(f) # create Element element0 = Element.from_data(data['element0']) # picking frame picking_frame = Frame.from_data(data['picking_frame']) # little tolerance to not 'crash' into collision objects tolerance_vector = Vector.from_data(data['tolerance_vector']) safelevel_vector = Vector.from_data(data['safelevel_vector']) # define target frame target_frame = Frame((0.325, 0.400, 0.006), (0.000, 1.000, 0.000), (-1.000, 0.000, 0.000)) target_frame.point += tolerance_vector # create Assembly with element at target_frame assembly = Assembly() T = Transformation.from_frame_to_frame(element0.frame, target_frame) assembly.add_element(element0.transformed(T))
DATA = os.path.abspath(os.path.join(HERE, "..", "data")) ASSEMBLY_PATH = os.path.abspath(os.path.join(HERE, "..", "src")) sys.path.append(ASSEMBLY_PATH) PATH_TO = os.path.join( DATA, os.path.splitext(os.path.basename(__file__))[0] + ".json") print(PATH_TO) from assembly_information_model.assembly import Element, Assembly # dimensions full brick length = 0.240 width = 0.115 height = 0.050 brick = Element.from_dimensions(length, width, height) halfbrick = Element.from_dimensions(length / 2, width, height) COURSES = 25 BRICKS_PER_COURSE = 4 MORTAR_PERPENDS = 0.025 total_length = BRICKS_PER_COURSE * length + (BRICKS_PER_COURSE - 1) * MORTAR_PERPENDS gap_even = MORTAR_PERPENDS gap_uneven = MORTAR_PERPENDS gap_uneven = (total_length - (BRICKS_PER_COURSE * (length))) / BRICKS_PER_COURSE assembly = Assembly() # initialize an empty assembly class