So... ABS is worse than PLA. But a lot of times I put an anchor down at corners and use a razor blade to cut it off after a print. I'm bringing up my new printer. It is a G2s Delta. I wanted to change the way the AllenKey Z-Probe was positioned. I had problems even with PLA (And I wanted to use ABS because I need to be safe from high temperatures). I defined corner_anchors as a piece that can be generated. You instantiate the corner_anchors and replicate 6 times. In Slic3r you place one under each leg of the spider. It holds the corners down and when you post process the part you just use a razor blade to cut the extra crap off.

Bring this into OpenScad and you will see what I'm talking about:

Code:
include <configuration.scad>


main_ring_height = 8.00;
main_ring_outer_diameter = 60.0;
main_ring_inner_diameter = 40.0;
mounting_hole_size = 4.0;


switch_width = 18.5;
switch_mount_thickness = 3.0;
switch_hole_size = 2.5;
switch_hole_spacing = 9.5;


allen_key_post_depth_size = 9.5;
allen_key_post_face_size = 11;
allen_key_post_height = 17;
coat_hanger_radius = (2.6/2);


delta_arm_thickness = 9.0;
delta_arm_height = 12;
delta_arm_length = 21;
delta_arm_hole_size = 6;
delta_arm_hole_offset = 1;
delta_arm_seperation = 27.5;


center_of_ring = (main_ring_outer_diameter + main_ring_inner_diameter)/2.0 /2.0;




Roxy_Effector();


// Guide Plate to force alignment of Z-Probe


translate([-9,-10,0]) guide_plate();


//translate([30,0,0]) corner_anchor();        // if needed to hold down the legs so they don't lift off of the plate!
                        // We want this part flat!




module Roxy_Effector() {
    difference() {
        union() {
            main_ring();
            switch_mount();
            allen_key_post(); 


            delta_arms_3x();
        }
        switch_mount_holes();
        allen_key_guide(); 
    }
}


module switch_mount_holes() {
        translate([main_ring_inner_diameter/2,switch_hole_spacing/2,main_ring_height/3]) rotate([0,90,0]) 
            cylinder( h=main_ring_height*2, r=switch_hole_size/2.0, $fn=20);
        translate([main_ring_inner_diameter/2,-switch_hole_spacing/2,main_ring_height/3]) rotate([0,90,0]) 
            cylinder( h=main_ring_height*2, r=switch_hole_size/2.0, $fn=20);
}




module main_ring() {
    difference() {
        cylinder( h=main_ring_height, r=main_ring_outer_diameter/2.0, $fn=45);
        translate([0,0,-.1]) cylinder( h=2*main_ring_height, r=main_ring_inner_diameter/2.0, $fn=45);


        for(i=[1:5] ) {
            translate([center_of_ring*cos(i*60), center_of_ring*sin(i*60), -.1]) cylinder(h=25, r=mounting_hole_size/2, $fn=20);
        }
    }
}


module switch_mount()  {
    translate([ (main_ring_outer_diameter/2.0)-switch_mount_thickness, -switch_width/2, 0]) 
        cube([ switch_mount_thickness, switch_width, main_ring_height]);
}




module allen_key_post()  {
    translate([ (main_ring_outer_diameter/2.0)-allen_key_post_depth_size, -allen_key_post_face_size/2, 0]) 
        cube([ allen_key_post_depth_size, allen_key_post_face_size, allen_key_post_height ]);
}




module allen_key_guide()  {
    translate([ (main_ring_outer_diameter/2.0), 0, -1])  {
        hull() {
            cylinder( r=coat_hanger_radius, h=50, $fn=25);    
            translate([-coat_hanger_radius,0,0]) cylinder( r=coat_hanger_radius, h=50, $fn=25);    
        }
        translate([0,coat_hanger_radius/2,allen_key_post_height+coat_hanger_radius]) 
            rotate([0,-90, 35 ]) cylinder( r=coat_hanger_radius, h=15, $fn=20);
    }
}


module delta_arms_3x() {
    for( i=[0:2] ) {
        rotate([0,0,i*120]) delta_arms();


    }
}




module delta_arms()  {
    difference() {
        union() {
            translate([ main_ring_inner_diameter/2, (delta_arm_thickness+delta_arm_seperation)/2,0]) delta_arm();
            translate([ main_ring_inner_diameter/2, -(delta_arm_thickness+delta_arm_seperation)/2,0]) delta_arm();
        }


        translate([ (main_ring_outer_diameter+delta_arm_hole_size)/2+delta_arm_hole_offset, 50, delta_arm_thickness/1.5 ]) 
            rotate([90,0,0]) cylinder(r=delta_arm_hole_size/2, h=100, $fn=25);
    }
}


module delta_arm()  {
    translate([ 0, -delta_arm_thickness/2,0]) 
        difference() {
            hull() {
                cube([delta_arm_length,delta_arm_thickness,main_ring_height]);
                translate([delta_arm_length-.1,0,0]) cube([.1,delta_arm_thickness,delta_arm_height]);
                translate([delta_arm_length/2,0,0]) cube([.1,delta_arm_thickness,delta_arm_height]);
            }
            translate([delta_arm_length,-.1,delta_arm_height/1.4]) rotate([0,-45,0]) cube([20,delta_arm_thickness*1.5,20]);
        }
}








module guide_plate()
{
    difference() {
        union () {
            cube([17,19,1.5]);
            translate([13,15,0]) cube([4,4,7]);
        }
        translate([4,5,-1]) cylinder(r=1.5,h=10,$fn=20);
        translate([4+9.5,5,-1]) cylinder(r=1.5,h=10,$fn=20);
        translate([ 7,9,-1]) cube([3.0,20,15]);
        translate([9,14,-1]) rotate([0,0,45]) cube([8,8,20]);
    }
}






module corner_anchor()
{
    cylinder(h=.35, r=10);
}