# Is there any way to use input() or raw_input() functions in blender scripting?

I'm trying to write a script which when run would ask the user for dimensions of different objects. But I came to know that the input and raw_input functions are not available in blender python api. Please help me out.

## 1 Answer

No simply there is not... but I have made this solution for you, it creates a entire menu that pops up and ask the info(scale/name) for the cube to be added. Here is the code:

import bpy
import mathutils as math

# This class is the actual dialog that pops up to create the cube
class AddCubeDialogOperator(bpy.types.Operator):
bl_idname = "object.add_cube_dialog"
bl_label = "Add Cube"

# Here you declare everything you want to show in the dialog
name = bpy.props.StringProperty(name = "Objects Name:", default = "Cube")
scale = bpy.props.FloatVectorProperty(name = "Scale:", default = (1.0, 1.0, 1.0))

# This is the method that is called when the ok button is pressed
# which is what calls the AddCube() method
def execute(self, context):
AddCube(self.name, self.scale)
self.report({'INFO'}, "Added Cube")
return {'FINISHED'}

# This is called when the operator is called, this "shows" the dialog
def invoke(self, context, event):
wm = context.window_manager
return wm.invoke_props_dialog(self)

# This method adds a cube to the current scene and then applys scale and
# name to the cube
def AddCube(name, scale):
bpy.ops.mesh.primitive_cube_add()
bpy.context.scene.objects.active.name = name
bpy.context.scene.objects.active.scale = scale

# Registers the cube dialog to blender so that it can be called
bpy.utils.register_class(AddCubeDialogOperator)

# Calls the menu when the script is ran
bpy.ops.object.add_cube_dialog('INVOKE_DEFAULT')


I tried to comment everything to make you understand it all, just reply if you don't understand something. If you run this code you should get something like: