2
$\begingroup$

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.

$\endgroup$
2
$\begingroup$

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:

Blender pic 1 Blender pic 2

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.