Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² написаниС скриптов Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ для Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° 2.5x. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор Thomas Larsson

                        pb.keyframe_insert('location', index=n, frame=frame, group=name)

                elif mode == Rotation:

                    mats = []

                    for (axis, sign) in indices:

                        angle = sign*float(words[m])*Deg2Rad

                        mats.append(Matrix.Rotation(angle, 3, axis))

                        m += 1

                    mat = node.inverse * mats[0] * mats[1] * mats[2] * node.matrix

                    pb.rotation_quaternion = mat.to_quaternion()

                    for n in range(4):

                        pb.keyframe_insert('rotation_quaternion',

                                          index=n, frame=frame, group=name)

    return 


#

# initSceneProperties(scn):

#  


def initSceneProperties(scn):

    bpy.types.Scene.MyBvhRot90 = bpy.props.BoolProperty(

        name="Rotate 90 degrees",

        description="Rotate the armature to make Z point up")

    scn['MyBvhRot90'] = True


    bpy.types.Scene.MyBvhScale = bpy.props.FloatProperty(

        name="Scale",

        default = 1.0,

        min = 0.01,

        max = 100)

    scn['MyBvhScale'] = 1.0  


initSceneProperties(bpy.context.scene)  


#

# class BvhImportPanel(bpy.types.Panel):


class BvhImportPanel(bpy.types.Panel):

    bl_label = "BVH import"

    bl_space_type = "VIEW_3D"

    bl_region_type = "UI" 


    def draw(self, context):

        self.layout.prop(context.scene, "MyBvhRot90")

        self.layout.prop(context.scene, "MyBvhScale")

        self.layout.operator("simple_bvh.load") 


#

# class OBJECT_OT_LoadBvhButton(bpy.types.Operator, ImportHelper):


class OBJECT_OT_LoadBvhButton(bpy.types.Operator, ImportHelper):

    bl_idname = "simple_bvh.load"

    bl_label = "Load BVH file (.bvh)" 


    # From ImportHelper. Filter filenames.

    filename_ext = ".bvh"

    filter_glob = bpy.props.StringProperty(default="*.bvh", options={'HIDDEN'})


    filepath = bpy.props.StringProperty(name="File Path",

        maxlen=1024, default="")  


    def execute(self, context):

        import bpy, os

        readBvhFile(context, self.properties.filepath,

            context.scene.MyBvhRot90, context.scene.MyBvhScale)

        return{'FINISHED'}  


    def invoke(self, context, event):

        context.window_manager.fileselect_add(self)

        return {'RUNNING_MODAL'}  


#

# Registration


def menu_func(self, context):

    self.layout.operator("simple_bvh.load", text="Simple BVH (.bvh)...")  


def register():

    bpy.utils.register_module(__name__)

    bpy.types.INFO_MT_file_import.append(menu_func)  


def unregister():

    bpy.utils.unregister_module(__name__)

    bpy.types.INFO_MT_file_import.remove(menu_func)  


if __name__ == "__main__":

    try:

        unregister()

    except:

        pass

    register()



ΠœΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ β€” это способ структурирования пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠŸΠΈΡ‚ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ "Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ". НапримСр, имя модуля A.B опрСдСляСт ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ B Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ A. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ использованиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ спасаСт Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΎΡ‚ нСобходимости Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ сущСствовании ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, использованиС Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ спасаСт Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΡ‚ нСобходимости Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΈΠΌΠ΅Π½Π°Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠŸΠΈΡ‚ΠΎΠ½Π°, поТалуйста, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠŸΠΈΡ‚ΠΎΠ½Π°

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» __init__.py. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠŸΠΈΡ‚ΠΎΠ½ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, ΠΊΠ°ΠΊ ΠΊ содСрТащСму ΠΏΠ°ΠΊΠ΅Ρ‚, это сдСлано для прСдотвращСния Ρƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с Ρ‡Π°ΡΡ‚ΠΎΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, string, Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ сокрытия Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит Π² дальнСйшСм ΠΏΡƒΡ‚ΠΈ поиска ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС, __init__.py ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ просто пустым Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π½ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’ Π‘Π»Π΅Π½Π΄Π΅Ρ€Π΅ __init__.py часто содСрТит ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π°Π΄Π΄ΠΎΠ½Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° дСлаСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ….

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… скриптов Π² этой ΠΊΠ½ΠΈΠ³Π΅, ΠΌΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΈΠ· тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ скопирован Π² мСсто, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡƒΡ‚ΡŒ поиска Π² Π‘Π»Π΅Π½Π΄Π΅Ρ€Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, addons ΠΈΠ»ΠΈ addons-contrib, см. Ρ€Π°Π·Π΄Π΅Π» Π°Π΄Π΄ΠΎΠ½Ρ‹ Π‘Π»Π΅Π½Π΄Π΅Ρ€Π°. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ вСсь Π‘Π»Π΅Π½Π΄Π΅Ρ€ для ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. НаТатиС F8 Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Π΄Π΄ΠΎΠ½Ρ‹ Π² Π‘Π»Π΅Π½Π΄Π΅Ρ€Π΅.


ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ разнСсён Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ„Π°ΠΉΠ»Π°. Π’Ρ€ΠΈ ΠΈΠ· Π½ΠΈΡ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ мСши: ΠΊΡƒΠ±, Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ ΠΈ сфСру, соотвСтствСнно. Π­Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… скриптов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. УсловиС (__name__ == "__main__") истинно, Ссли Ρ„Π°ΠΉΠ» Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

mycube.py

#----------------------------------------------------------

# File mycube.py

#----------------------------------------------------------

import bpy 


def makeMesh(z):

    bpy.ops.mesh.primitive_cube_add(location=(0,0,z))

    return bpy.context.object  


if __name__ == "__main__":

    ob = makeMesh(1)

    print(ob, "created")


mycylinder.py

#----------------------------------------------------------

# File mycylinder.py

#----------------------------------------------------------

import bpy 


def makeMesh(z):

    bpy.ops.mesh.primitive_cylinder_add(location=(0,0,z))

    return bpy.context.object  


if __name__ == "__main__":

    ob = makeMesh(5)

    print(ob, "created")


mysphere.py

#----------------------------------------------------------

# File mysphere.py

#----------------------------------------------------------

import bpy 


def makeMesh(z):

    bpy.ops.mesh.primitive_ico_sphere_add(location=(0,0,z))

    return bpy.context.object  


if __name__ == "__main__":

    ob = makeMesh(3)

    print(ob, "created")


__init__.py

Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ Ρ„Π°ΠΉΠ» содСрТит ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ bl_info ΠΈ ΠΊΠΎΠ΄ рСгистрации, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для Π°Π΄Π΄ΠΎΠ½Π° ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π’ Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ содСрТится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚Π°.


# Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ

# ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всё

if "bpy" in locals():

    import imp imp.reload(mycube)

    imp.reload(mysphere)

    imp.reload(mycylinder)

    print("Reloaded multifiles")

else:

    from . import mycube, mysphere, mycylinder

    print("Imported multifiles")


Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

β€’ Если __init__.py() запускаСтся Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, Ρ‚.Π΅. ΠΏΡ€ΠΈ запускС Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π°Π΄Π΄ΠΎΠ½ΠΎΠΌ Π² вашСм Ρ„Π°ΠΉΠ»Π΅ default.blend, "bpy" in locals() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π›ΠΎΠΆΡŒ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ выводится "Imported multifiles".

β€’ Если __init__.py() запускаСтся Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· послС запуска Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° с Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π°Π΄Π΄ΠΎΠ½ΠΎΠΌ Π² вашСм Ρ„Π°ΠΉΠ»Π΅ default.blend, ΠΈ Π²Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π°Π΄Π΄ΠΎΠ½Π°, "bpy" in locals() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π›ΠΎΠΆΡŒ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ выводится "Imported multifiles".

β€’ ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ дополнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, Π² любоС врСмя Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ F8, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π°Π΄Π΄ΠΎΠ½Ρ‹, "bpy" in locals() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Ρƒ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ, Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» выводится "Reloaded multifiles".


#----------------------------------------------------------

# File __init__.py

#----------------------------------------------------------  


# Addon info

bl_info = {

    "name": "Multifile",

    'author': 'Thomas Larsson',

    "location": "View3D > UI panel > Add meshes",

    "category": "3D View"

    } 


# Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ

# ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всё

if "bpy" in locals():

    import imp imp.reload(mycube)

    imp.reload(mysphere)

    imp.reload(mycylinder)

    print("Reloaded multifiles")

else:

    from . import mycube, mysphere, mycylinder

    print("Imported multifiles")  


import bpy

from bpy.props import *  


#

# class AddMeshPanel(bpy.types.Panel):

#

class AddMeshPanel(bpy.types.Panel):

    bl_label = "Add meshes"

    bl_space_type = "VIEW_3D"

    bl_region_type = "UI" 


    def draw(self, context):

    self.layout.operator("multifile.add",

        text="Add cube").mesh = "cube"

    self.layout.operator("multifile.add",

        text="Add cylinder").mesh = "cylinder"

    self.layout.operator("multifile.add",