diff --git a/render_povray/primitives.py b/render_povray/primitives.py
index f76a41ee681fadfbe71693786a375822a04e26d8..7259425e2b365bef419b34493453b32c69dac830 100644
--- a/render_povray/primitives.py
+++ b/render_povray/primitives.py
@@ -39,8 +39,9 @@ from bpy.props import (
         )
 
 from mathutils import (
-        Vector,
-        )
+    Vector,
+    Matrix,
+)
 
 #import collections
 
@@ -67,20 +68,23 @@ class POVRAY_OT_lathe_add(bpy.types.Operator):
     def execute(self, context):
         layers=[False]*20
         layers[0]=True
-        bpy.ops.curve.primitive_bezier_curve_add(location=(0, 0, 0),
-            rotation=(0, 0, 0), layers=layers)
-        ob=context.scene.objects.active
-        ob.name = ob.data.name = "PovLathe"
+        bpy.ops.curve.primitive_bezier_curve_add(
+            location=context.scene.cursor_location,
+            rotation=(0, 0, 0),
+            layers=layers,
+        )
+        ob = context.scene.objects.active
+        ob_data = ob.data
+        ob.name = ob_data.name = "PovLathe"
+        ob_data.dimensions = '2D'
+        ob_data.transform(Matrix.Rotation(-pi / 2.0, 4, 'Z'))
         ob.pov.object_as='LATHE'
-        bpy.ops.object.mode_set(mode='EDIT')
-        self.report({'INFO'}, "This native POV-Ray primitive "
-                                 "won't have any vertex to show in edit mode")
-        bpy.ops.transform.rotate(value=-pi/2, axis=(0, 0, 1))
-        bpy.ops.object.mode_set(mode='OBJECT')
+        self.report({'INFO'}, "This native POV-Ray primitive")
         ob.pov.curveshape = "lathe"
         bpy.ops.object.modifier_add(type='SCREW')
-        bpy.context.object.modifiers["Screw"].axis = 'Y'
-        bpy.context.object.modifiers["Screw"].show_render = False
+        mod = ob.modifiers[-1]
+        mod.axis = 'Y'
+        mod.show_render = False
         return {'FINISHED'}