public boolean move_drill_item(BrdAbit p_drill_item,PlaVectorInt p_vector,int p_max_recursion_depth,int p_max_via_recursion_depth,int p_pull_tight_accuracy,int p_pull_tight_time_limit){
  shove_fail_clear();
  Collection<BrdItem> contact_list=p_drill_item.get_normal_contacts();
  Iterator<BrdItem> it=contact_list.iterator();
  while (it.hasNext()) {
    BrdItem curr_contact=it.next();
    if (curr_contact.get_fixed_state() == ItemFixState.SHOVE_FIXED) {
      curr_contact.set_fixed_state(ItemFixState.UNFIXED);
    }
  }
  NetNosList net_no_arr=p_drill_item.net_nos;
  changed_area_clear();
  if (!move_drill_algo.insert(p_drill_item,p_vector,p_max_recursion_depth,p_max_via_recursion_depth,null)) {
    return false;
  }
  NetNosList opt_net_no_arr=p_max_recursion_depth <= 0 ? net_no_arr : NetNosList.EMPTY;
  TimeLimitStoppable t_limit=new TimeLimitStoppable(p_pull_tight_time_limit);
  changed_area_optimize(opt_net_no_arr,p_pull_tight_accuracy,null,t_limit,null);
  return true;
}

public boolean move_drill_item ( BrdAbit p_drill_item , PlaVectorInt p_vector , int p_max_recursion_depth , int p_max_via_recursion_depth , int p_pull_tight_accuracy , int p_pull_tight_time_limit ) { shove_fail_clear ( ) ; Collection < BrdItem > contact_list = p_drill_item . get_normal_contacts ( ) ; Iterator < BrdItem > it = contact_list . iterator ( ) ; while ( it . hasNext ( ) ) { BrdItem curr_contact = it . next ( ) ; if ( curr_contact . get_fixed_state ( ) == ItemFixState . SHOVE_FIXED ) { curr_contact . set_fixed_state ( ItemFixState . UNFIXED ) ; } } NetNosList net_no_arr = p_drill_item . net_nos ; changed_area_clear ( ) ; if ( ! move_drill_algo . insert ( p_drill_item , p_vector , p_max_recursion_depth , p_max_via_recursion_depth , null ) ) { return false ; } NetNosList opt_net_no_arr = p_max_recursion_depth <= 0 ? net_no_arr : NetNosList . EMPTY ; TimeLimitStoppable t_limit = new TimeLimitStoppable ( p_pull_tight_time_limit ) ; changed_area_optimize ( opt_net_no_arr , p_pull_tight_accuracy , null , t_limit , null ) ; return true ; }
translates p_drill_item by p_vector and shoves obstacle traces aside . returns false , if that was not possible without creating clearance violations . in this case the database may be damaged , so that an undo becomes necessary .
