+1 for CADQuery - it lets you easily specify surfaces as the basis for manipulation, and results in much less fragile designs than OpenSCAD.