Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 11206) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 11207) @@ -344,11 +344,17 @@ static void openscad_draw_line(pcb_hid_gc_t gc, pcb_coord_t x1, pcb_coord_t y1, pcb_coord_t x2, pcb_coord_t y2) { double length, angle; + const char *cap_style; length = pcb_distance(x1, y1, x2, y2); angle = atan2((double)y2-y1, (double)x2-x1); - pcb_fprintf(f, " pcb_line_rc(%mm, %mm, %mm, %f, %mm, %f);\n", + if (gc->cap == Square_Cap) + cap_style = "sc"; + else + cap_style = "rc"; + + pcb_fprintf(f, " pcb_line_%s(%mm, %mm, %mm, %f, %mm, %f);\n", cap_style, x1, y1, (pcb_coord_t)pcb_round(length), angle * PCB_RAD_TO_DEG, gc->width, layer_thickness); } Index: trunk/src_plugins/export_openscad/scad_draw.c =================================================================== --- trunk/src_plugins/export_openscad/scad_draw.c (revision 11206) +++ trunk/src_plugins/export_openscad/scad_draw.c (revision 11207) @@ -10,7 +10,7 @@ fprintf(f, " translate([x1,y1,0]) {\n"); fprintf(f, " rotate([0,0,angle]) {\n"); fprintf(f, " translate([length/2, 0, 0])\n"); - fprintf(f, " cube([length,width, thick], center=true);\n"); + fprintf(f, " cube([length, width, thick], center=true);\n"); fprintf(f, " cylinder(r=width/2, h=thick, center=true, $fn=30);\n"); fprintf(f, " translate([length, 0, 0])\n"); fprintf(f, " cylinder(r=width/2, h=thick, center=true, $fn=30);\n"); @@ -17,6 +17,16 @@ fprintf(f, " }\n"); fprintf(f, " }\n"); fprintf(f, "}\n"); + + fprintf(f, "// Square cap line\n"); + fprintf(f, "module pcb_line_sc(x1, y1, length, angle, width, thick) {\n"); + fprintf(f, " translate([x1,y1,0]) {\n"); + fprintf(f, " rotate([0,0,angle]) {\n"); + fprintf(f, " translate([length/2, 0, 0])\n"); + fprintf(f, " cube([length + width, width, thick], center=true);\n"); + fprintf(f, " }\n"); + fprintf(f, " }\n"); + fprintf(f, "}\n"); } static int scad_draw_outline(void)