def rule_Connect_90lap(self,selected_beams,projected_point_list,face_ids,beam_length,ext_start,name): #create joints on selected beams joint_distance_to_selectedBeams = [] for i in range (len(selected_beams)): print("Adding Joint to Beam: ", i) #Prepare information selected_beam = selected_beams[i] projected_point = projected_point_list[i] face_id = face_ids[i] print(face_id) joint_distance = selected_beam.Get_distancefromBeamYZFrame(projected_point) joint_distance_to_selectedBeams.append(joint_distance) #Create Joint new_joint = Joint_90lap(joint_distance,face_id,100,50,100) #Add new Joint to Beam and update beam mesh selected_beam.joints.append(new_joint) new_joint.update_joint_mesh(selected_beam) selected_beam.update_mesh() #Add match beam #####get beam frame #construct a frame similar to face frame with max point as origin face_frame = selected_beams[0].face_frame(face_ids[0]) max_point_frame = Frame(face_frame.point,face_frame.xaxis,face_frame.yaxis) connection_beam_origin = max_point_frame.represent_point_in_global_coordinates([(joint_distance_to_selectedBeams[0]-50),0, ext_start]) connection_beam_frame = Frame(connection_beam_origin, face_frame.normal * -1.0, face_frame.yaxis) match_beam = self.rule_create_beam(connection_beam_frame,beam_length,100,100,name) #calculate distance from projected points to match_beam[0]plane for i in range(len(projected_point_list)): print("Adding Joint " , i) pt = projected_point_list[i] match_beam_joint_distance = match_beam.Get_distancefromBeamYZFrame(pt) joint = Joint_90lap(match_beam_joint_distance,3,100,50,100) #match_beam joint face is always 3 match_beam.joints.append(joint) joint.update_joint_mesh(match_beam) #performs multiple booleans in 1 call match_beam.update_mesh()
xaxis = normalize_vector(result[1][0]) yaxis = normalize_vector(result[1][1]) zaxis = normalize_vector(result[1][2]) frame = Frame(origin, xaxis, yaxis) if yaxis[2] > 0: offset = scale_vector(zaxis, -0.050) else: offset = scale_vector(zaxis, +0.050) points_xy = [ frame.represent_point_in_local_coordinates(point) for point in points ] box_xy = bounding_box_xy(points_xy) box = [ frame.represent_point_in_global_coordinates(corner_xy)[:] for corner_xy in box_xy ] box1 = offset_polygon(box, -0.025) box2 = [add_vectors(point, offset) for point in box1] POLYGONS.append({'points': box1 + box1[:1], 'color': (0, 0, 0)}) POLYGONS.append({'points': box2 + box2[:1], 'color': (0, 0, 0)}) POLYGONS.append({ 'points': [box1[0], box1[3], box2[3], box2[0], box1[0]], 'color': (0, 0, 0) }) POLYGONS.append({