Scripts Utile !

Ici on parle des scripts

Modérateurs : frez, Yadoob, stilobique, Matpi, ModSquad

Scripts Utile !

Message par cedric » 07 Déc 2015, 12:36

Scripts Utile !

Un code pour changer les raccourcis d'un addon dans les prefs de l'addon !

Image

http://blender.stackexchange.com/questi ... references

Code : Tout sélectionner
bl_info = {"name": "KeyMap Test", "category": "Object"}

import bpy
from bpy.types import Operator, AddonPreferences
from bpy.props import StringProperty, IntProperty, BoolProperty

# this is an internal API at the moment
import rna_keymap_ui


class ExampleAddonPreferences(AddonPreferences):
    # this must match the addon name, use '__package__'
    # when defining this in a submodule of a python package.
    bl_idname = __name__

    filepath = StringProperty(
            name="Example File Path",
            subtype='FILE_PATH',
            )
    number = IntProperty(
            name="Example Number",
            default=4,
            )
    boolean = BoolProperty(
            name="Example Boolean",
            default=False,
            )

    def draw(self, context):
        layout = self.layout
        layout.label(text="This is a preferences view for our addon")
        layout.prop(self, "filepath")
        row = layout.row()
        row.prop(self, "number")
        row.prop(self, "boolean")

        col = layout.column()
        kc = bpy.context.window_manager.keyconfigs.addon
        for km, kmi in addon_keymaps:
            km = km.active()
            col.context_pointer_set("keymap", km)
            rna_keymap_ui.draw_kmi([], kc, km, kmi, col, 0)


class OBJECT_OT_addon_prefs_example(Operator):
    """Display example preferences"""
    bl_idname = "object.addon_prefs_example"
    bl_label = "Addon Preferences Example"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        user_preferences = context.user_preferences
        addon_prefs = user_preferences.addons[__name__].preferences

        info = ("Path: %s, Number: %d, Boolean %r" %
                (addon_prefs.filepath, addon_prefs.number, addon_prefs.boolean))

        self.report({'INFO'}, info)
        print(info)

        return {'FINISHED'}


addon_keymaps = []

# Registration
def register():
    bpy.utils.register_class(OBJECT_OT_addon_prefs_example)
    bpy.utils.register_class(ExampleAddonPreferences)

    # Keymapping
    kc = bpy.context.window_manager.keyconfigs.addon
    km = kc.keymaps.new(name="3D View", space_type='VIEW_3D')
    kmi = km.keymap_items.new("object.editmode_toggle", 'NUMPAD_SLASH', 'PRESS', shift=True)
    kmi.active = True
    addon_keymaps.append((km, kmi))
    kmi = km.keymap_items.new("object.transform_apply", 'NUMPAD_SLASH', 'PRESS', shift=True)
    kmi.active = True
    addon_keymaps.append((km, kmi))


def unregister():
    bpy.utils.unregister_class(OBJECT_OT_addon_prefs_example)
    bpy.utils.unregister_class(ExampleAddonPreferences)

    # handle the keymap
    for km, kmi in addon_keymaps:
        km.keymap_items.remove(kmi)
    addon_keymaps.clear()
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Scripts Utile !

Message par cedric » 07 Déc 2015, 12:38

Et pour choisir la catégorie directement dans les prefs aussi.

Image

Code : Tout sélectionner

bl_info = {
    "name": "Example Addon Preferences Change Category",
    "author": "Your Name Here",
    "version": (1, 0),
    "blender": (2, 70, 0),
    "location": "View3D > TOOLS > Example > Addon Preferences Example",
    "description": "Example Addon",
    "warning": "",
    "wiki_url": "",
    "tracker_url": "",
    "category": "UI"}


import bpy
from bpy.types import Panel, AddonPreferences
from bpy.props import StringProperty


class UI_PT_addon_prefs_example(Panel):
    """Display example preferences"""
    bl_space_type = "VIEW_3D"
    bl_region_type = "TOOLS"
    bl_category = "Example"
    bl_label = "Addon Preferences Example"


    def draw(self, context):
        addon_prefs = context.user_preferences.addons[__name__].preferences
        layout = self.layout
        layout.label(text="Change the category")
        layout.prop(addon_prefs, "category", text = "")


def update_panel(self, context):
    try:
        bpy.utils.unregister_class(UI_PT_addon_prefs_example)
    except:
        pass
    UI_PT_addon_prefs_example.bl_category = context.user_preferences.addons[__name__].preferences.category
    bpy.utils.register_class(UI_PT_addon_prefs_example)


class ExampleAddonPreferences(AddonPreferences):
    # this must match the addon name, use '__package__'
    # when defining this in a submodule of a python package.
    bl_idname = __name__


    category = bpy.props.StringProperty(
            name="Category",
            description="Choose a name for the category of the panel",
            default="Example",
            update=update_panel,
            )


    def draw(self, context):
        layout = self.layout
        layout.prop(self, "category")


# Registration
def register():
    bpy.utils.register_class(ExampleAddonPreferences)
    #bpy.utils.register_class(OBJECT_PT_addon_prefs_example)
    update_panel(None, bpy.context)


def unregister():
    bpy.utils.unregister_class(UI_PT_addon_prefs_example)
    bpy.utils.unregister_class(ExampleAddonPreferences)

Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Scripts Utile !

Message par Sobschack » 07 Déc 2015, 13:05

Très bon ça ! Je me demandé pourquoi ça n'étais pas comme ça pas plus tard que samedi !
Avatar de l’utilisateur
Sobschack
 
Message(s) : 157
Inscription : 30 Sep 2015, 12:47
Localisation : Grenoble

Re: Scripts Utile !

Message par cedric » 07 Déc 2015, 13:15

Je n'ai trouvé le code que ce matin ^^
Car je lui disait que son Q posait pb parce qu'il me disait que je l'avait encore changé ^^

Les deux codes fonctionnent bien en tout cas !

Image
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Scripts Utile !

Message par cedric » 18 Fév 2016, 15:20

Un script qu'un pote vient de me faire pour sélectionner la hierachie d'un coup que ce soit via un enfant ou via le parent.

Code : Tout sélectionner
import bpy
 
 
class select_hierarchy(bpy.types.Operator):
    bl_idname = "object.select_hierarchy"
    bl_label = "Select Hierarchy"
    bl_description = ""
    bl_options = {"REGISTER"}
 
    def execute(self, context):
 
        def find_child(ob,lst):
                        for x in ob.children:
                            lst.append( x )
                            find_child(x,lst)
 
        def find_parent(ob,lst):
            lst.append(ob)
            if ob.parent:
                find_parent(ob.parent,lst)
 
 
        lst=[] # list for all objects
        find_parent(bpy.context.object,lst) #find parent
 
        if len(lst)>0:
 
            last_parent=lst[0]
            for p in lst:
                # parent of everything has no parent itself
                if not p.parent: last_parent=p
 
 
            # find children for each parent
            for c in lst: find_child(c,lst)
 
            #select all
            for x in lst: x.select=True
 
            #make parent active
            bpy.context.scene.objects.active=last_parent
 
            print(lst)
 
        return {"FINISHED"}
 
class select(bpy.types.Panel):
    bl_idname = "select"
    bl_label = "Select"
    bl_space_type = "VIEW_3D"
    bl_region_type = "TOOLS"
    bl_category = "category"
 
    def draw(self, context):
        layout = self.layout
 
        layout.operator("object.select_hierarchy", text="Select hierachy", icon='OUTLINER_OB_MESH')
 
 
def register():
    bpy.utils.register_module(__name__)
 
def unregister():
    bpy.utils.unregister_module(__name__)
 
if __name__ == "__main__":
    register()



Image

Super pratique !

Ajouté à mes pie menus avec un double clic !

Image
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Scripts Utile !

Message par lapineige » 18 Fév 2016, 18:18

Tout bête mais bien pratique en effet.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Scripts Utile !

Message par cedric » 18 Fév 2016, 18:31

Ça revient au select groupe de maya, super pratique !
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Scripts Utile !

Message par cedric » 01 Mars 2016, 22:28

Un ptit script pour faire un tube d'un coup !

Image

Code : Tout sélectionner
import bpy
     

bpy.ops.mesh.primitive_grid_add(x_subdivisions=3, y_subdivisions=3, radius=1, view_align=False, enter_editmode=False, location=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))

bpy.ops.object.mode_set(mode='EDIT') 
bpy.ops.mesh.select_all(action='DESELECT')
bpy.ops.mesh.select_all(action='TOGGLE')

bpy.ops.transform.resize(value=(0, 1, 1), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
bpy.ops.mesh.remove_doubles()

bpy.ops.object.mode_set(mode='OBJECT') 

bpy.ops.object.convert(target='CURVE')

bpy.context.object.data.fill_mode = 'FULL'
bpy.context.object.data.bevel_resolution = 2
bpy.context.object.data.bevel_depth = 0.6
bpy.context.object.data.show_normal_face = False

bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.curve.select_all(action='TOGGLE')
bpy.ops.curve.select_all(action='TOGGLE')

bpy.ops.curve.spline_type_set(type='BEZIER')
bpy.ops.curve.handle_type_set(type='AUTOMATIC')
bpy.ops.curve.select_all(action='DESELECT')

bpy.ops.shading.smooth()
bpy.ops.object.subdivision_set(level=2)
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Scripts Utile !

Message par Bouh » 08 Mars 2016, 15:15

Voici quelques scripts que j'ai pu faire et que j'utilise :

https://github.com/Bouh/Script-Blender

setup_render.py : Ajoute un panel dans les properties pour avoir les même setup de rendu (Addons codé en dur pour le moment)

script_assignID_pass.py : Affecte un numéro IDpass pour la sélection (Lancez le depuis le Text Editor)

List_blend_file_for_render.bat : Liste les fichiers .blend et en sort un fichier texte qui est près pour lancer les rendus

DELETE_blend1.bat : Supprime les fichier .blend1

Erreur_Frames.bat : Copiez des images ratées d'un rendu dans un dossier avec ce .bat lancez et vous aurez une liste contenant le numéro des fichiers avec un "-f" devant pour coller ensuite ceci dans une ligne du genre
Code : Tout sélectionner
"C:\Program Files\Blender Foundation\Blender\blender.exe" -b Episode_01_Partie_01.blend -f 2741 -f 2748 -f 2754 -f 2762 -f 1


Renamer.bat : Renomme des fichiers

merge_folder.bat : Chaque dossier est ouvert tout est copier et coller dans le dossier "merged"

Les dossiers test sont un bordel de tout et de rien mais surtout de rien avec des bouts de code venant de partout, le tri n'est pas fait.
Avatar de l’utilisateur
Bouh
 
Message(s) : 7
Inscription : 31 Mai 2015, 14:57

Mon 1er addon : Print Options

Message par neXXen » 21 Juin 2016, 10:34

Bonjour à tous,

Après avoir vu vos vidéos et podcast sur le code dans blender, j'ai voulu essayer !

Le besoin :
Régler facilement les dimensions x et y de la zone de rendu en fonction d'un format d'impression standard, de l'orientation (portrait ou paysage) et d'une résolution d'impression

Les solutions :
1: machine à calculer -> règle de trois -> report dans blender
2: création d'un document dans PhotoShop à la bonne dimension et résolution -> report dans blender
3: une fonction existe déjà dans blender mais je l'ai pas encore trouvée ?
4: faire un addon qui fera le boulot à votre place (règle de trois... c'est loin tout ça ;) )

1 et 2 fonctionnent très bien mais c'est vite répétitif suivant vos besoins et toujours risque d'erreur (c'est dommage de s'apercevoir après 25 heures de rendu qu'il manque quelques cm à votre cadrage de la mort...).
3 ben je sais pas ! Blender regorge de fonctionnalités (quand on débute, certaines sont clairement bien cachées) donc ça existe peut être déjà en natif
4: addon Print Options
Code : Tout sélectionner
#################################################################################
# A very simple addon to adjust the resolution by format, orientation and dpi
# Author: neXXen                                                                                         
# License: MWYWWT (Make What You Want Width This)                                 
#################################################################################
 
 
############# Add-on description (used by Blender)

bl_info = {
    "name": "Print Options",
    "description": "Set render resolution by choosing print format, orientation and dpi",
    "author": "neXXen",
    "version": (0, 1),
    "blender": (2, 7, 7),
    "location": "Properties > Render tab > Print Options (panel)",
    "warning": "",
    "category": "Render"}
#############

import bpy

# <EnumProperty> print_orientation : Portrait or Lanscape (default Portrait)
bpy.types.Scene.print_orientation =  bpy.props.EnumProperty(
    items=(
        ('PT', "Portrait", ""),
        ('LS', "Landscape", "")
    ),
    default='PT',
    name = "Print orientation"
)

# <EnumProperty> print_format : dimension of print
bpy.types.Scene.print_format =  bpy.props.EnumProperty(
    items=(
        ('NONE', "None", ""),
        ('A6', "A6", ""),
        ('A5', "A5", ""),
        ('A4', "A4", ""),
        ('A3', "A3", "")
    ),
    default='NONE',
    name = "Print format"
)

# <EnumProperty> print_dpi: resolution of print in Dot Per Inchs
bpy.types.Scene.print_dpi =  bpy.props.EnumProperty(
    items=(
        ('R72', "72", ""),
        ('R96', "96", ""),
        ('R150', "150", ""),
        ('R300', "300", "")
    ),
    default='R300',
    name = "Print dpi"
)
# <IntProperty> print_bleed_off : add a margin around the sheet in mm
bpy.types.Scene.print_bleed_off = bpy.props.IntProperty(
    name = "BleedOff",
    min = 0,
    max = 5
)

class PrintOptionsOperator(bpy.types.Operator):
    """Set dimensions in pixel"""
    bl_idname = "render.printoptions_operator"
    bl_label = "Set dimensions"
   
    @classmethod
    def poll(cls, context):
        return True

    def execute(self, context):
        scene = context.scene
       
        formats = {
            'A6': {'w': 105, 'h': 148},
            'A5': {'w': 148, 'h': 210},
            'A4': {'w': 210, 'h': 297},
            'A3': {'w': 297, 'h': 420},
        }
       
        resolutions = {
            'R72': 72,
            'R96': 96,
            'R150': 150,
            'R300': 300,
        }
       
        idxL = 'w'
        idxH = 'h'
        pouce = 25.4 # pouce in mm
       
      # options set by user
        orientation = scene.print_orientation
        format = scene.print_format
        dpi = scene.print_dpi
        bleedOff = scene.print_bleed_off
       
      # inform and quit if no format choosen
        if format == "NONE":
            self.report({'ERROR'}, "Select a format !")
            return {'CANCELLED'}
       
      # set orientation formats index key according to the orientation
        if orientation == "LS":
           idxL = "h"
           idxH = "w"
       
      # calculate Width and Height in mm
        W = formats[format][idxL] + ( 2 * bleedOff )
        H = formats[format][idxH] + ( 2 * bleedOff )
       
        Re = resolutions[dpi]
       
      # calculate render resolution_x and resolution_y
        x = round( ( Re * W ) / pouce )
        y = round( ( Re * H ) / pouce )
       
      # set render resolution_x and resolution_y
        scene.render.resolution_x = x
        scene.render.resolution_y = y
               
        print("X : "+ str(x) + " - Y : "+ str(y)) 
        return {'FINISHED'}
   

class PrintOptionsPanel(bpy.types.Panel):
    """Creates a Panel Print Options in the Render properties window"""
    bl_label = "Print Options"
    bl_idname = "RENDER_PT_printoptions"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "render"
   
    @classmethod
    def poll(cls, context):
        return True
           
    def draw(self, context):
        layout = self.layout

        scene = context.scene

        row = layout.row()
        row.prop(scene, "print_orientation", expand=True)
               
        row = layout.row()
        row.prop(scene, "print_format", expand=False, text="Format")
       
        row = layout.row()
        row.prop(scene, "print_dpi", expand=False, text="Dpi")
       
        row = layout.row()
        row.prop(scene, "print_bleed_off", text="Bleed Off")
               
        row = layout.row()
        row.operator("render.printoptions_operator")


def register():
    bpy.utils.register_class(PrintOptionsPanel)
    bpy.utils.register_class(PrintOptionsOperator)


def unregister():
    bpy.utils.unregister_class(PrintOptionsPanel)
    bpy.utils.unregister_class(PrintOptionsOperator)

if __name__ == "__main__":
    register()



Çà casse pas trois vertex à un cube mais ça m'a permis de découvrir (un peu...) python et l'API de blender.

Concernant python, j'ai bien rigolé quand Lapineige (dans un podcast Youtube je crois) vante la simplicité de la syntaxe du langage ! Rendez moi mes ; et mes {} SVP ! Habituellemnt je code en PHP et JavaScript, des langages proches du C (je parle juste de la syntaxe hein !) et c'est un peu déconcertant !
Un truc pénible par exemple quand on sait pas : python supporte les tabulations ou les espaces pour l'indentation mais pas un mix des 2... Dans l'éditeur de Blender, pas de pb, on travaille soit dans un mode soit dans l'autre (et on peut facilement convertir l'un en l'autre...) mais en ouvrant mon beau fichier .py tout frais tout neuf dans Notepad++ et en apportant quelques modifs (un petit saut de ligne par ci par là, un commentaire...) catastrophe ! Notepad insérait des tabulations alors que le fichiers contenait des espaces ! Pas très grave et vite réparer quand on sait, sinon bonne prise de tête !
Pour l'API de Blender, c'est moi peut être, mais je trouve que la doc n'est pas super accessible et confuse. Une question d'habitude surement.
Un truc qui m'a bien confusionné la tête venant de Javascript, c'est le fait de ne pas pouvoir utilisé les évènements (listener et callback) sur les propriétés : si on utilise l'addon pour régler les dimensions du rendu, il serait logique de remettre à zéro la valeur du print_format (qu'on pense pas faire un rendu en A6 comme indiqué mais modifié après) mais je n'ai pas trouvé de solution simple pour l'addon réagisse au changement de ces valeurs.
Si vous connaissez une solution sans passer par les handler ?

En tout cas, un grand merci a Cedric, Lapineige et tous les intervenants pour votre boulot ! Votre aide et vos conseils sont des mines d'or pour appréhender Blender !
neXXen
 
Message(s) : 12
Inscription : 21 Juin 2016, 09:08

Re: Scripts Utile !

Message par lapineige » 21 Juin 2016, 10:53

3) si ce sont toujours les mêmes dimensions, créé un render preset ;)

Concernant python, j'ai bien rigolé quand Lapineige (dans un podcast Youtube je crois) vante la simplicité de la syntaxe du langage ! Rendez moi mes ; et mes {} SVP ! Habituellemnt je code en PHP et JavaScript, des langages proches du C (je parle juste de la syntaxe hein !) et c'est un peu déconcertant !

Entre appuyer sur tab et se taper des accolades et autres symboles (ésotériques) fatiguants à taper au clavier (surtout à la chaîne), j'ai choisi :P

Entre un
Code : Tout sélectionner
if condition:
    # du code
else:
    # du code
# la suite


Et
Code : Tout sélectionner
if (condition) {
    # du code
} else {
    # du code
}
# la suite

Y'en a un qui a l'air légèrement plus rapide à taper, sans grand écart entre alt gr et les touches du haut.

C'est une façon de faire différente (mais en général on indente dans tout les langages, donc il n'y a pas plus de boulot) c'est certain, mais je la trouve plus efficace, lisible, élégante.
Après j'en parlais comme avantage pour le débutant (typiquement la lisibilité, une des plus proches du langage naturelle, aide), on ne choisi pas toujours le langage utilisable (pas d'API javascript pour Blender), ou pas toujours pour la syntaxe.

neXXen a écrit :Un truc pénible par exemple quand on sait pas : python supporte les tabulations ou les espaces pour l'indentation mais pas un mix des 2...

En effet on peut se faire avoir au départ. Il faut régler ses éditeurs de texte pour gérer tout ça, ou convertir après coup (l'éditeur de blender a cette fonction).
En général je paramètres pour que l'éditeur de texte ajoute des espaces en cas de tabulations. Plus de problème.
Dans l'absolu python supporte un mélange "rigoureux" des deux (du type toujours 1 tabulation + 1 espace, qu'il voit comme deux indentations) mais c'est pas bien propre.
Et puis, utiliser des tabulations et espaces mélangés, quel intérêt ? Autant régler la taille des tabulations (en espaces), ou ne pas en utiliser.

Pour l'API de Blender, c'est moi peut être, mais je trouve que la doc n'est pas super accessible et confuse.

C'est une documentation technique, parfois sans explications même basiques (notamment pour des fonctions peu courantes). Ça sert de référence plus que de tuto - et ça il en manque.

neXXen a écrit : mais je n'ai pas trouvé de solution simple pour l'addon réagisse au changement de ces valeurs.

Tu veux dire effectuer une action quand on les modifie ?
C'est possible avec l'argument update d'une propriété personnalisée, mais pas avec celles existantes.
C'est plus un manque du côté API, c'est faisable en python.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Scripts Utile !

Message par neXXen » 21 Juin 2016, 11:25

Bjr Lapineige et merci pour ta réponse.

Pas question de troller de ma part sur un langage plutôt qu'un autre !
Je découvre python et sa syntaxe mais j'ai aussi eu l'occasion (trop souvent...) de chercher le ; oublié ou l'accolade mal fermée ! (bon ça reste au niveau du gentil bug ce genre de détail mais ça énerve)

Pas mal les Render Presets mais il en faudrait un par cas de figure (format, orientation, résolution et bord perdu), avec uniquement 4 formats, 4 résolutions et le choix entre 0 ou 5 mm de bord perdu on arrive a 64 combinaisons différentes !
C'est sympa d'ajouter la possibilité d'enregistrer un réglage personnalisé. Si tu connais des tutos qui détaillent la procédure ?

J'ai vu effectivement que les propriétés personnalisée possèdent un callback c'est cool.
Je vais regarder du coté de la gestion des évènements en python ça doit pouvoir le faire...
neXXen
 
Message(s) : 12
Inscription : 21 Juin 2016, 09:08

Re: Scripts Utile !

Message par pistiwique » 09 Jan 2017, 22:19

Bon, se n'est pas du python mais ça peut quand même être utile (pour les WINDOWSIENS :D ).
Il arrive parfois que Blender crash dût à une fausse manip ou à un script qui merdouille, et quand ça vous arrive et que vous en faites part, on vous dit: "Il y a quoi d'écrit dans la console ?"......
Bein oui, mais crash = console qui se ferme (si vous aviez pensé à l'ouvrir :cry:) .
Du coup, 2 options s'offrent à vous pour que la console reste après un crash et donc avoir une potentielle réponse à ce crash:

- aller dans le dossier de blender, là ou se trouve le .exe et dans la barre d'adresse taper cmd (qui vous lancera l'invite de commande avec le chemin déjà défini dans le dossier de Blender) puis blender.exe.

- ou alors, vous êtes fainéants, vous voulez juste faire un double clic sur un machin qui lance le truc.
Il vous suffit alors de copier/coller ces quelques lignes (dans le bloc-note par exemple) et à définir le chemin menant au .exe de votre blender:

Code : Tout sélectionner
@echo off
cd "chemin_de_l'exécutable_de_Blender_à_coller_ici_sans_le_blender.exe"
start C:\Windows\System32\cmd.exe /K "blender.exe"


Enregistrez ceci en .bat, et voila. En lançant Blender via ce Batch, la console s'affichera et restera en cas de crash.
Pour relancer Blender, vous aurez juste à taper blender.exe dans la console.
Avatar de l’utilisateur
pistiwique
 
Message(s) : 590
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Scripts Utile !

Message par lapineige » 09 Jan 2017, 23:00

pistiwique a écrit :Bein oui, mais crash = console qui se ferme (si vous aviez pensé à l'ouvrir :cry:) .

Et là le linuxien te dit: ben non, chez moi elle reste ouverte :D
(et là je me rappelle qu'il faut lancer direct dans la console car après coup on peut pas l'ouvrir - et le nombre de fois ou je me suis fait avoir - bon ok je sors :mrgreen: ... de toute façon c'était un troll)
(depuis, je me suis modifié le raccourci pour lancer la console avec ^^)

Merci pour les astuces, ça pourrait servir quand même :)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Scripts Utile !

Message par pistiwique » 09 Jan 2017, 23:33

lapineige a écrit :Et là le linuxien te dit: ben non, chez moi elle reste ouverte


C'est pour ça que j'ai mis pour les WINDOWSIENS :lol: .
Il ne manquerait plus que pouvoir placer la console ou on veut au lancement et ça serait parfait :D .
Avatar de l’utilisateur
pistiwique
 
Message(s) : 590
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Suivant

Retour vers Scripts - Python - OSL

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron