from inire import NetSpec, ObjectiveWeights, Port, RoutingOptions, RoutingProblem, SearchOptions, route from inire.utils.visualization import plot_routing_results def main() -> None: print("Running Example 03: Locked Routes...") bounds = (0, -50, 100, 50) options = RoutingOptions( search=SearchOptions(bend_radii=(10.0,)), objective=ObjectiveWeights( bend_penalty=250.0, sbend_penalty=500.0, ), ) print("Routing initial net...") results_a = route( RoutingProblem( bounds=bounds, nets=(NetSpec("netA", Port(10, 0, 0), Port(90, 0, 0), width=2.0),), ), options=options, ).results_by_net print("Routing detour net around locked path...") results_b = route( RoutingProblem( bounds=bounds, nets=(NetSpec("netB", Port(50, -20, 90), Port(50, 20, 90), width=2.0),), static_obstacles=results_a["netA"].locked_geometry, ), options=options, ).results_by_net results = {**results_a, **results_b} fig, ax = plot_routing_results(results, [], bounds) fig.savefig("examples/03_locked_paths.png") print("Saved plot to examples/03_locked_paths.png") if __name__ == "__main__": main()