Index: src_plugins/acompnet/acompnet.c =================================================================== --- src_plugins/acompnet/acompnet.c (revision 22967) +++ src_plugins/acompnet/acompnet.c (revision 22968) @@ -123,7 +123,7 @@ bbox.X2 = x+1; bbox.Y1 = y; bbox.Y2 = y+1; - pcb_msgr_add_node(gr, &bbox); + pcb_msgr_add_node(gr, &bbox, score); pcb_line_new(ly, x, y, x, y, conf_core.design.line_thickness, conf_core.design.bloat, flg_mesh_pt); } } Index: src_plugins/acompnet/meshgraph.c =================================================================== --- src_plugins/acompnet/meshgraph.c (revision 22967) +++ src_plugins/acompnet/meshgraph.c (revision 22968) @@ -40,7 +40,7 @@ gr->next_id = 1; } -long int pcb_msgr_add_node(pcb_meshgraph_t *gr, pcb_box_t *bbox) +long int pcb_msgr_add_node(pcb_meshgraph_t *gr, pcb_box_t *bbox, int score) { pcb_meshnode_t *nd = malloc(sizeof(pcb_meshnode_t)); nd->bbox = *bbox; @@ -48,6 +48,7 @@ nd->came_from = 0; nd->gscore = INF_SCORE; nd->fscore = INF_SCORE; + nd->iscore = score; pcb_rtree_insert(&gr->ntree, nd, (pcb_rtree_box_t *)nd); htip_set(&gr->id2node, nd->id, nd); @@ -57,7 +58,7 @@ static double msgr_connect(pcb_meshnode_t *curr, pcb_meshnode_t *next) { - return curr->gscore + pcb_distance(curr->bbox.X1, curr->bbox.Y1, next->bbox.X1, next->bbox.Y1); + return curr->gscore + pcb_distance(curr->bbox.X1, curr->bbox.Y1, next->bbox.X1, next->bbox.Y1) * (next->iscore + 1.0); } static double msgr_heurist(pcb_meshnode_t *curr, pcb_meshnode_t *end) Index: src_plugins/acompnet/meshgraph.h =================================================================== --- src_plugins/acompnet/meshgraph.h (revision 22967) +++ src_plugins/acompnet/meshgraph.h (revision 22968) @@ -9,6 +9,7 @@ long int id; long int came_from; double gscore, fscore; + int iscore; /* input score: how much we prefer to use this node */ } pcb_meshnode_t; @@ -19,7 +20,7 @@ } pcb_meshgraph_t; void pcb_msgr_init(pcb_meshgraph_t *gr); -long int pcb_msgr_add_node(pcb_meshgraph_t *gr, pcb_box_t *bbox); +long int pcb_msgr_add_node(pcb_meshgraph_t *gr, pcb_box_t *bbox, int score); int pcb_msgr_astar(pcb_meshgraph_t *gr, long int startid, long int endid); #endif