diff --git a/src/libseqarrange/src/seq_interface.cpp b/src/libseqarrange/src/seq_interface.cpp index d70aac8fad..ad89b64f77 100644 --- a/src/libseqarrange/src/seq_interface.cpp +++ b/src/libseqarrange/src/seq_interface.cpp @@ -237,7 +237,7 @@ bool check_ScheduledObjectsForSequentialPrintability(const SolverConfiguration const auto& flat_index = flat_index_map.find(scheduled_object.id)->second; assert(!objects_to_print[flat_index].pgns_at_height.empty()); - + if (!check_PolygonPositionWithinPlate(solver_configuration, SEQ_SLICER_SCALE_FACTOR, scheduled_object.x, @@ -286,6 +286,7 @@ bool check_ScheduledObjectsForSequentialPrintability(const SolverConfiguration printf("Line check ...\n"); } #endif + if (!check_PolygonLineIntersections(dec_values_X, dec_values_Y, dec_values_T, diff --git a/src/libseqarrange/src/seq_preprocess.cpp b/src/libseqarrange/src/seq_preprocess.cpp index bbda8e7d7d..d96f3960aa 100644 --- a/src/libseqarrange/src/seq_preprocess.cpp +++ b/src/libseqarrange/src/seq_preprocess.cpp @@ -984,16 +984,18 @@ bool check_PolygonPositionWithinPlate(const SolverConfiguration &solver_configur printf("Y: %d\n", solver_configuration.y_plate_bounding_box_size * scale_factor); } #endif - - if (x + polygon_box.min.x() < solver_configuration.plate_bounding_box.min.x() * scale_factor || x + polygon_box.max.x() > solver_configuration.plate_bounding_box.max.x() * scale_factor) - { - return false; - } - if (y + polygon_box.min.y() < solver_configuration.plate_bounding_box.min.y() * scale_factor || y + polygon_box.max.y() > solver_configuration.plate_bounding_box.max.y() * scale_factor) - { - return false; - } + if (solver_configuration.plate_bounding_polygon.points.size() == 0) + { + if (x + polygon_box.min.x() < solver_configuration.plate_bounding_box.min.x() * scale_factor || x + polygon_box.max.x() > solver_configuration.plate_bounding_box.max.x() * scale_factor) + { + return false; + } + if (y + polygon_box.min.y() < solver_configuration.plate_bounding_box.min.y() * scale_factor || y + polygon_box.max.y() > solver_configuration.plate_bounding_box.max.y() * scale_factor) + { + return false; + } + } else { Polygon plate_polygon = solver_configuration.plate_bounding_polygon;