예제 #1
0
    def center_apartment(self):
        union_polygon = QPolygonF()

        for list in self.dict_rooms_and_corridors_per_side.values():
            for room in list:
                union_polygon = union_polygon.united(
                    room.room_qpolygon)  # Para obtener el bounding box
                self.total_rooms_and_corridors.append(room)

        self.initial_corridor.setLeft(union_polygon.boundingRect().left())
        self.initial_corridor.setRight(union_polygon.boundingRect().right())

        self.total_rooms_and_corridors.append(
            Room(type='corridor',
                 p=self.initial_corridor.topLeft(),
                 w=self.initial_corridor.width(),
                 h=self.initial_corridor.height()))

        union_polygon = union_polygon.united(self.initial_corridor)

        initial_center = union_polygon.boundingRect().center()
        union_polygon.translate(-initial_center)

        self.apartment_boundingRect = union_polygon.boundingRect()

        # Desplazo habitaciones y pasillos al centro
        for i, room in enumerate(self.total_rooms_and_corridors):
            room.room_qpolygon.translate(
                -initial_center
            )  # Desplazo los poligonos para que la habitación esté centrada
            room.room_qrect.translate(-initial_center)
예제 #2
0
        elif door_location == 'left':
            room_polygon_with_door = add_door_left(room, side)
        elif door_location == 'right':
            room_polygon_with_door = add_door_right(room, side)

        # --- Añadir habitaciones al pasillo ----
        result_polygon_list.append(room_polygon_with_door)
        union_polygon = union_polygon.united(
            room_polygon_with_door)  # Para obtener el bounding box

# --------------------------------------------------------------------------------------------------------
# ------------------------------------------- Dibujar paredes -------------------------------------------
# --------------------------------------------------------------------------------------------------------

# Bounding rect para centrar
boundingRect = union_polygon.boundingRect()

if len(result_polygon_list) > 1:
    result_polygon_list.append(QPolygonF(boundingRect, closed=True))

center = boundingRect.center()

for polygon in result_polygon_list:

    polygon.translate(
        -center)  # Desplazo los poligonos para que la habitación esté centrada

    prev_point = polygon[0]

    for i, curr_point in enumerate(polygon):
        if i == 0: