Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 10940) +++ trunk/src/obj_arc.c (revision 10941) @@ -761,6 +761,12 @@ *vert = (((la < 45) && (la > -45)) || ((la > 135) && (la < 225))); } +void pcb_arc_middle(const pcb_arc_t *arc, pcb_coord_t *x, pcb_coord_t *y) +{ + pcb_bool_t waste; + arc_label_pos(arc, x, y, &waste); +} + void pcb_arc_name_invalidate_draw(pcb_arc_t *arc) { if (arc->term != NULL) { Index: trunk/src/obj_arc_ui.h =================================================================== --- trunk/src/obj_arc_ui.h (revision 10940) +++ trunk/src/obj_arc_ui.h (revision 10941) @@ -28,4 +28,5 @@ void pcb_arc_ui_move_or_copy(pcb_crosshair_t *ch); int pcb_obj_ui_arc_point_bbox(int Type, void *Ptr1, void *Ptr2, void *Ptr3, pcb_box_t *res); +void pcb_arc_middle(const pcb_arc_t *arc, pcb_coord_t *x, pcb_coord_t *y); Index: trunk/src/obj_common.c =================================================================== --- trunk/src/obj_common.c (revision 10940) +++ trunk/src/obj_common.c (revision 10941) @@ -142,6 +142,9 @@ *x = ((pcb_pin_t *)(obj))->X; *y = ((pcb_pin_t *)(obj))->Y; break; + case PCB_OBJ_ARC: + pcb_arc_middle((const pcb_arc_t *)obj, x, y); + break; default: *x = (obj->BoundingBox.X1 + obj->BoundingBox.X2) / 2; *y = (obj->BoundingBox.Y1 + obj->BoundingBox.Y2) / 2;