def MIT_walls(system, H): # Add main walls as a box wall_t = 0.1 wall_h = 3 / 2 * H texture_wall = 'textures/yellow_brick.jpg' scale = [10, 10] # Texture scale pos_3_3 = np.array([-4.5, 0 + 3 / 2 * H, 8.16 + wall_t]) pos_3_4 = np.array([-4.5 - wall_t, 5 / 2 * H, 8.16 + wall_t]) MiroAPI.add_boxShapeHemi(system, 11, H / 2, wall_t, pos_3_3, texture_wall, [10, 10]) # Positive z direction MiroAPI.add_boxShapeHemi(system, 11 - wall_t, H / 2, wall_t, pos_3_4, texture_wall, [10, 10]) # Positive z direction # Add support colums as a box beam_h = 3 / 2 * H beam_w = 0.08 beam_pos_1 = np.array([4, 0 + beam_h, 5]) # Close left of stair beam_pos_2 = np.array([-0.8, 0 + 4 / 3 * beam_h, 5]) # Left of stair beam_pos_3 = np.array([8.5, 0 + beam_h, 0.5]) # Close right of stair beam_pos_4 = np.array([8.5, 0 + beam_h, -4.3]) # Right of stair beam_pos_5 = np.array([8.5, 0 + beam_h, 5]) # Middle beam MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_1, 'textures/white concrete.jpg', scale) MiroAPI.add_boxShapeHemi(system, beam_w, 2 / 3 * beam_h, beam_w, beam_pos_2, 'textures/white concrete.jpg', scale) MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_3, 'textures/white concrete.jpg', scale) MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_4, 'textures/white concrete.jpg', scale) MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_5, 'textures/white concrete.jpg', scale) # Beams along wall for beam in range(5): x = 12.75 + beam * 0.46 z = 8.16 + 0.05 + wall_t - beam * 4.47 beam_pos = np.array([x, 0 + beam_h, z]) MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos, 'textures/white concrete.jpg', scale) #-------------2nd floor--------------- # Add wall, 2nd floor towards MIT place bWall_height = H / 2 - wall_t pos = np.array([-1.82, 0 + bWall_height, 5 + wall_t]) MiroAPI.add_boxShapeHemi(system, 3.48, bWall_height, wall_t, pos, 'textures/storage_wall.jpg', [12, 15]) # Add wall, 2nd floor towards NA (positive z direction) pos = np.array([-7, H / 2, 8.16 + wall_t]) MiroAPI.add_boxShapeHemi(system, 8.75 - wall_t, H / 2, wall_t, pos, 'textures/yellow_brick.jpg', [5, 5]) # Add entrence wall (positive x direction) pos = np.array([12.7 + wall_t, 0 + H / 2 - 0.1, 10.18]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.1, 1.9, pos, 'textures/yellow_brick.jpg', [5, 5]) # Add entrence wall (negative x direction) pos = np.array([-0.4, 0 + H / 2 - 0.16, 9.86]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 1.5, pos, 'textures/door_cs.jpg', [4, 3], Collide=False) # Add entrence corridor (negative x direction) pos = np.array([0.65, 0 + H / 2 - 0.1, 11.41]) MiroAPI.add_boxShapeHemi(system, 1, H / 2 - 0.1, wall_t, pos, 'textures/white concrete.jpg', [5, 5]) # Add 2nd entrence wall (negative x direction) pos = np.array([1.6, 0 + H / 2 - 0.1, 6.5 + wall_t + 0.01 + 0.05]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.1, 1.5 + wall_t + 0.05, pos, 'textures/yellow_brick.jpg', [5, 5]) #-------------3rd floor--------------- # Add wall, 3rd floor (negative x direction) MIT info screen pos = np.array([6.5 - wall_t, 0 + 3 / 2 * H - 0.16, 10.16 + wall_t]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 2 - wall_t, pos, 'textures/yellow_brick.jpg', [5, 5]) # Add wall, 3rd floor towards NA 1 (negative z direction) pos = np.array([-7.6, 0 + 3 / 2 * H, 5.65]) MiroAPI.add_boxShapeHemi(system, 1.75, H / 2, wall_t, pos, 'textures/white concrete.jpg', [10, 7]) # Add wall, 3rd floor towards NA 2 (negative z direction) pos = np.array([-11.3, 0 + 3 / 2 * H, 5.65]) MiroAPI.add_boxShapeHemi(system, 0.25, H / 2, wall_t, pos, 'textures/yellow_brick.jpg', [1, 1], False) # Add wall, 3rd floor corridor towards NTK (negative x direction) for wall in range(2): x = -11.05 + wall * (1.71 + wall_t) pos = np.array([x, 0 + 3 / 2 * H, 5.25]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 0.4, pos, 'textures/yellow_brick.jpg', [1, 1], False) # Add wall, 3rd floor NTK door (negative z direction) # pos = np.array([-10.2, 0+3/2*H, 5]) # MiroAPI.add_boxShapeHemi(system, 0.85, H/2, wall_t, pos, 'textures/door_ntk.jpg', [-4,-3], False) # Add wall, 3rd floor NA corridor end (negative x direction) pos = np.array([-11.55, 3 / 2 * H - 0.16, 6.95]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 1.25, pos, 'textures/mit_3rd_na2.jpg', [4, 3]) # Add wall, 3rd floor towards MIT fountain pos = np.array([11.65, 3 / 2 * H, 12.16 + wall_t]) MiroAPI.add_boxShapeHemi(system, 5.15, H / 2, wall_t, pos, 'textures/yellow_brick.jpg', [5, 5]) # Add wall, 3rd floor wall, left hand side towards UMU library (negative z direction) pos = np.array([18.3, 3 / 2 * H - wall_t, 12.16 + wall_t]) MiroAPI.add_boxShapeHemi(system, 1.5, H / 2 - wall_t, wall_t, pos, 'textures/white concrete.jpg', [3, 3]) # Add wall, 3rd floor UMU library end (negative x direction) pos = np.array([19.9, 3 / 2 * H - 0.16, 10.56]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 1.6, pos, 'textures/mit_3rd_sam.jpg', [-4, -3]) #-------------4th floor--------------- # Add wall, 4th floor flower pot (Negative x direction) pos = np.array([6.5 - wall_t + 0.01, 5 / 2 * H, 7.08 + wall_t + 0.01]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 2.08 + wall_t, pos, 'textures/white concrete.jpg', [5, 5]) # Add wall, 4th floor data cooridor (negative x direction) pos = np.array([5.5 - wall_t, 0 + 5 / 2 * H, 10.66 + wall_t]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 1.5 - wall_t, pos, 'textures/door_cs.jpg', [4, 3], Collide=False) # Add 4th floor wall (positive x direction) pos = np.array([12.7 + wall_t, 0 + 5 / 2 * H, 10.18]) MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 1.9, pos, 'textures/yellow_brick.jpg', [2, 2]) # Add wall, 4th floor towards NA (negative z direction) pos = np.array([-9.3 - wall_t, 0 + 5 / 2 * H, 5 - wall_t]) MiroAPI.add_boxShapeHemi(system, 4 - wall_t, H / 2, wall_t, pos, 'textures/yellow_brick.jpg', [10, 7], False) # Add wall, 4th floor wall towards MIT fountain pos = np.array([9, 5 / 2 * H, 12.16 + wall_t]) MiroAPI.add_boxShapeHemi(system, 3.5, H / 2, wall_t, pos, 'textures/white concrete.jpg', [5, 5]) #----------------Other---------------- # Add white wall extension, technology pos = np.array([9.9, 3 / 2 * H, -8.8 - wall_t]) MiroAPI.add_boxShapeHemi(system, 1.4, 3 / 2 * H, wall_t, pos, 'textures/white concrete.jpg', [5, 5]) # Add wall towards technology building (negative x direction) pos = np.array([8.5 - wall_t + 2.8, 0 + 3 / 2 * H, -11.8 - wall_t + 1.1]) MiroAPI.add_boxShapeHemi(system, wall_t, 3 / 2 * H, 1.9 - wall_t, pos, 'textures/white concrete.jpg', [10, 10]) # Add office cooridor wall (negative x direction) pos = np.array([-11.05, 0 + 3 / 2 * H, -7]) MiroAPI.add_boxShapeHemi(system, wall_t, 3 / 2 * H, 12, pos, 'textures/white concrete.jpg', [10, 10]) # Add office wall (negative x direction) pos = np.array([-9.35, 0 + 3 / 2 * H, -1.9]) MiroAPI.add_boxShapeHemi(system, wall_t, 3 / 2 * H, 6.9, pos, 'textures/white concrete.jpg', [10, 10]) # Add office wall (negative z direction) pos = np.array([1.5, 0 + 3 / 2 * H, -12.6]) MiroAPI.add_boxShapeHemi(system, 7, 3 / 2 * H, wall_t, pos, 'textures/white concrete.jpg', [10, 10]) # Add office cooridor wall (negative z direction) pos = np.array([1.5, 0 + 3 / 2 * H, -14.3]) MiroAPI.add_boxShapeHemi(system, 7, 3 / 2 * H, wall_t, pos, 'textures/white concrete.jpg', [10, 10]) # Add office end pos = np.array([-8.5, 0 + 3 / 2 * H, -19]) MiroAPI.add_boxShapeHemi(system, 2.65, 3 / 2 * H, wall_t, pos, 'textures/white concrete.jpg', [10, 10]) # Add elevator shaft for floor in range(3): y_pos = H * floor + H / 2 pos = np.array([10.7, y_pos, 12.1]) MiroAPI.add_boxShapeHemi(system, 2.034, H / 2, wall_t, pos, 'textures/elevator.png', [4, 3]) # Add end wall, towards technology texture = [ 'textures/mit_4th.jpg', 'textures/mit_4th.jpg', 'textures/mit_4th.jpg' ] for floor in range(3): y_pos = H * floor + H / 2 pos = np.array([10.5 + 2.8 - 0.23, y_pos, -17 + 2.2 + 2.2]) MiroAPI.add_boxShapeHemi(system, 1.77, H / 2, wall_t, pos, texture[floor], [-4, -3], Collide=False) #Add oblique walls n = np.array([0, 1, 0]) # Normal vector for rotation alpha = -np.arctan(211 / 1380 - 0.05) # Rotation angle for positive x wall #Add oblique wall towards umu libary pos_1 = np.array([16.3, 3 / 2 * H - wall_t, 0.34 + 8.16 + wall_t]) dim_1 = np.array([wall_t, H / 2, 3.6]) ang_1 = np.pi * (0.5 - 0.03) sca_1 = [10, 10] #Add oblique wall towards NA pos_2 = np.array([-5.6 - wall_t, 3 / 2 * H, 5.3]) dim_2 = np.array([wall_t, H / 2, 0.545]) ang_2 = -(np.pi / 4) #Main wall in positive x direction pos_3 = np.array([13.775 + wall_t, 0, -2.2]) + np.array([0, wall_h, 0]) ang_3 = alpha dim_3 = np.array([wall_t, wall_h, 10.58]) pos_ob = [pos_1, pos_2, pos_3] dim = [dim_1, dim_2, dim_3] ang = [ang_1, ang_2, ang_3] textures = [texture_wall, 'textures/white concrete.jpg', texture_wall] scale = [sca_1, sca_1, sca_1] for i in range(len(pos_ob)): # Create a box MiroAPI.add_boxShapeHemi(system, dim[i][0], dim[i][1], dim[i][2], pos_ob[i], rotY=ang[i], rotDegrees=False, texture=textures[i], scale=scale[i])
def painting(MiroSystem, pos, text = 'DemoBengan.png', rot = 0, dims = [1, 0.6]): MiroAPI.add_boxShapeHemi(MiroSystem, dims[0], dims[1], 0.05, pos, rotY=rot, texture=text, Collide=False)
def MIT_floors(system, H, SPEEDMODE): # Add floor, as a box floorsNum = 3 # Number of floors postNum = 19 # Number of fence post on each side of floors center position floor_l = 12 # Floor length floor_t = 0.08 # Floor thickness floor_w = 1.58 # Floor width towards NA floor_w_2 = 1.95 + 2.11 # towards technology house texture_floor = [ 'textures/MIT_stone_floor.jpg', 'textures/MIT_story_floor.jpg', 'textures/MIT_story_floor.jpg' ] texture_roof = 'textures/MIT_inner_roof.jpg' scale_roof = [80, 10] handle_l = 13.5 for floor in range(floorsNum): # Add floors y_pos = floor * H - floor_t floor_pos_1 = np.array([-3.5, y_pos, 6.58]) # Add floors towards NA floor_pos_2 = np.array([10.45 + 2.11, y_pos, -4 - 0.42 ]) # Add floors towards technology house floor_pos_3 = np.array([-10.2, y_pos, -7]) # Add floor in NTK cooriodor floor_pos_4 = np.array([1.5, y_pos, -13.45 ]) # Add floor in NTK cooriodor (-z direction) MiroAPI.add_boxShapeHemi(system, floor_l, floor_t, floor_w, floor_pos_1, texture_floor[floor], [50, 3.6]) MiroAPI.add_boxShapeHemi(system, floor_w_2, floor_t, floor_l + 0.58, floor_pos_2, texture_floor[floor], [18, 28]) MiroAPI.add_boxShapeHemi(system, 0.85, floor_t, floor_l, floor_pos_3, texture_floor[floor], [50, 3.6]) MiroAPI.add_boxShapeHemi(system, 7, floor_t, 0.85, floor_pos_4, texture_floor[floor], [18, 28]) if floor > 0 and SPEEDMODE == False: add_fence(system, H, postNum, floor_w, floor_w_2, floor, floor_t, handle_l) for roof in range(floorsNum): # Add roof y_pos = roof * H - 3 * floor_t #+0.025 roof_pos_1 = np.array([-3.5, y_pos, 6.58]) # Add roof towards NA roof_pos_2 = np.array([10.45 + 2.11, y_pos, -4 - 0.42]) # Add roof towards technology house roof_pos_3 = np.array([-10.2, y_pos, -7]) # Add roof in NTK cooriodor (-x direction) roof_pos_4 = np.array([1.5, y_pos, -13.45 ]) # Add roof in NTK cooriodor (-z direction) MiroAPI.add_boxShapeHemi(system, floor_l, floor_t, floor_w, roof_pos_1, texture_roof, [100, 10]) MiroAPI.add_boxShapeHemi(system, floor_w_2, floor_t, floor_l + 0.58, roof_pos_2, texture_roof, [35, 80]) MiroAPI.add_boxShapeHemi(system, 0.85, floor_t, floor_l, roof_pos_3, texture_roof, [35, 80]) MiroAPI.add_boxShapeHemi(system, 7, floor_t, 0.85, roof_pos_4, texture_roof, [100, 10]) # Office floors for floor in range(floorsNum): # Add floors y_pos = floor * H - floor_t floor_pos_3 = np.array([-7.425, y_pos, -7 ]) # Add roof in NTK cooriodor (-x direction) floor_pos_4 = np.array([1.5, y_pos, -10.8 ]) # Add roof in NTK cooriodor (-z direction) MiroAPI.add_boxShapeHemi(system, 1.925, floor_t, floor_l, floor_pos_3, 'wood_ikea_style.png', [35, 80]) MiroAPI.add_boxShapeHemi(system, 7, floor_t, 1.8, floor_pos_4, 'wood_ikea_style.png', [100, 10]) for roof in range(floorsNum): # Add roof y_pos = roof * H - 3 * floor_t roof_pos_3 = np.array([-7.425, y_pos, -7]) # Add roof in NTK cooriodor (-x direction) roof_pos_4 = np.array([1.5, y_pos, -10.8 ]) # Add roof in NTK cooriodor (-z direction) MiroAPI.add_boxShapeHemi(system, 1.925, floor_t, floor_l, roof_pos_3, texture_roof, [35, 80]) MiroAPI.add_boxShapeHemi(system, 7, floor_t, 1.8, roof_pos_4, texture_roof, [100, 10]) # Add floor piece by the stair floor_x = 1.03 floor_z = 1.03 for piece in range(floorsNum): y_pos = piece * H - floor_t * 0.999 floor_pos = np.array([7.5, y_pos + 0.002, 4]) MiroAPI.add_boxShapeHemi(system, floor_x, floor_t, floor_z, floor_pos, texture_floor[0], [4, 2]) for piece in range(floorsNum): if piece > 0: y_pos = piece * H - 3 * floor_t floor_pos = np.array([7.5, y_pos + 0.002, 4]) MiroAPI.add_boxShapeHemi(system, floor_x, floor_t, floor_z, floor_pos, texture_roof, [12, 9]) # Add walkway towards umu library length = 10.5 width = 2 for i in range(2): y = i * H + H - floor_t pos = np.array([10, y, 10.16]) MiroAPI.add_boxShapeHemi(system, length, floor_t, width, pos, texture_floor[1], [48.9, 6]) for i in range(2): y = i * H + H - 3 * floor_t pos = np.array([10, y, 10.16]) MiroAPI.add_boxShapeHemi(system, length, floor_t, width, pos, texture_roof, scale_roof) # Add MIT entrence floor pos = np.array([6.2, 0 - floor_t, 10.16]) MiroAPI.add_boxShapeHemi(system, 6.5, floor_t, 2, pos, texture_floor[0], [30, 6]) # Add horizontal beam along floors beam_length = 5.87 for floor in range(floorsNum): beam_corr_2 = floor_w_2 + 0.99 * floor_t / 2 # Technology beam_corr = floor_w + 0.99 * floor_t / 2 # Na if floor > 0: y_pos = floor * H - 2 * floor_t floor_pos_1 = np.array([0.63, y_pos, 6.58 - beam_corr]) # Towards NA floor_pos_2 = np.array([10.45 + 2.11 - beam_corr_2, y_pos, -2.9]) # Towards technology MiroAPI.add_boxShapeHemi(system, beam_length, 2 * floor_t, floor_t / 2, floor_pos_1, 'textures/white concrete.jpg') MiroAPI.add_boxShapeHemi(system, floor_t / 2, 2 * floor_t, beam_length, floor_pos_2, 'textures/white concrete.jpg')
def build(MiroSystem, SPEEDMODE=False): frame_h = 1.0 dy = 2 / 3 xspan = [-5.25, 8.35] yspan = [9.96, 13.96] zspan = [-8.9, 5.1] dec = -(yspan[1] - yspan[0] - frame_h) / (zspan[1] - zspan[0]) dy = yspan[1] - yspan[0] - frame_h #sides p1 = np.array([-dy / 2, 0, 0]) p2 = np.array([0.16 + dy / 2, 0, 0]) d1 = np.array([0, 0, -1]) d2 = np.array([dec, 0, -1]) s = 0.98 # sideS = MiroAPI.stepShape(p1,d1, p2,d2, zspan[1]-zspan[0], 0.2, [s,s,s]) # sideN = MiroAPI.stepShape(p1,d1, p2,d2, zspan[1]-zspan[0], 0.2, [s,s,s]) # MiroAPI.rotateBody(sideS, rotZ=90) # MiroAPI.rotateBody(sideN, rotZ=90) # MiroAPI.MoveBodyTo(sideS, np.array([xspan[0]-0.05, yspan[0]+frame_h + (yspan[1]-yspan[0]-frame_h)/2, zspan[1]+0.1])) # MiroAPI.MoveBodyTo(sideN, np.array([xspan[1]+0.25, yspan[0]+frame_h + (yspan[1]-yspan[0]-frame_h)/2, zspan[1]+0.1])) # MiroSystem.Add(sideS) # MiroSystem.Add(sideN) # # Top beams # beams = 4 # dx = (xspan[1] - xspan[0])/(beams-1) # for b in range(beams): # p1 = np.array([xspan[0] + dx*b - 0.06, yspan[1]-0.12, zspan[1]-0.06]) # p2 = np.array([xspan[0] + dx*b + 0.06, yspan[1]-0.12, zspan[1]-0.06]) # d1 = np.array([0,dec,-1]) # d2 = np.array([0,dec,-1]) # MiroAPI.add_stepShape(MiroSystem, p1,d1, p2,d2, (zspan[1]-zspan[0])*(np.sqrt(1+dec**2)), 0.2) # beams = 5 # h_0 = yspan[1]+0.12*dec # dz = (zspan[1]-zspan[0])/(beams-1) - 0.28/beams # for b in range(beams): # pos = np.array([(xspan[0]+xspan[1])/2, h_0+dec*dz*b, zspan[1]-0.12-dz*b]) # MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1]-xspan[0])/2+0.06, 0.06, 0.06, pos, 'white_smere.jpg', rotX=np.sin(dec), scale=[100, 1.5]) # # Windows # beams = 10 # dx = (xspan[1] - xspan[0])/(beams-1) # for b in range(beams): # pos = np.array([xspan[0] + dx*b, (yspan[1] + yspan[0] + frame_h)/2, zspan[1]]) # MiroAPI.add_boxShapeHemi(MiroSystem, 0.05, (yspan[1] - yspan[0] - frame_h)/2, 0.05, pos, 'white_smere.jpg', scale=[100, 1.5]) # beams = 5 # dy = (yspan[1]-yspan[0]-frame_h)/(beams-1) # for b in range(beams): # pos = np.array([(xspan[0]+xspan[1])/2, yspan[0]+frame_h+0.06+dy*b, zspan[1]]) # MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1]-xspan[0])/2+0.06, 0.06, 0.06, pos, 'white_smere.jpg', scale=[100, 1.5]) # West wall pos = np.array([(xspan[0] + xspan[1]) / 2, yspan[0] + frame_h / 2, zspan[1]]) MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1] - xspan[0] + 0.5) / 2, frame_h / 2, 0.1, pos, 'white concrete.jpg', scale=[40, 5]) # East wall pos = np.array([(xspan[0] + xspan[1]) / 2, yspan[0] + frame_h / 2, zspan[0]]) MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1] - xspan[0] + 0.5) / 2, frame_h / 2, 0.1, pos, 'white concrete.jpg', scale=[40, 5]) # South wall pos = np.array( [xspan[0] - 0.15, yspan[0] + frame_h / 2, (zspan[1] + zspan[0]) / 2]) MiroAPI.add_boxShapeHemi(MiroSystem, 0.1, frame_h / 2, (zspan[1] - zspan[0]) / 2 - 0.1, pos, 'white concrete.jpg', scale=[40, 5]) # North wall pos = np.array( [xspan[1] + 0.15, yspan[0] + frame_h / 2, (zspan[1] + zspan[0]) / 2]) MiroAPI.add_boxShapeHemi(MiroSystem, 0.1, frame_h / 2, (zspan[1] - zspan[0]) / 2 - 0.1, pos, 'white concrete.jpg', scale=[40, 5]) # MA roof roofMA_width = 6.6 pos = np.array( [xspan[1] + roofMA_width / 2 + 0.052, yspan[0] + 0.098, -0.2]) MiroAPI.add_boxShapeHemi(MiroSystem, roofMA_width / 2, 0.1, 12.5, pos, 'white concrete.jpg', scale=[40, 80]) # MC roof roofMC_width = 3.165 pos = np.array([(xspan[1] + xspan[0]) / 2, yspan[0] + 0.098, zspan[1] + roofMC_width / 2 + 0.1]) MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1] - xspan[0]) / 2 + 0.052, 0.1, roofMC_width / 2, pos, 'white concrete.jpg', scale=[80, 10]) # Computer Science roof roofMC_width = 3.165 pos = np.array([6.85, yspan[0] + 0.098, zspan[1] + roofMC_width + 2.092]) MiroAPI.add_boxShapeHemi(MiroSystem, 1.552, 0.1, 1.992, pos, 'white concrete.jpg', scale=[80, 10])