Pouvoir choisir l'outil actif avec python
Fou Furieux du Clan
Inscrit:
31/10/2007 22:45
Post(s): 107
Bonjour,
Je suis en train de faire un opérateur dans python afin de pouvoir en animation2D alterner rapidement entre l'outil de selection (qui est en edit mode) et l'outil Draw (qui est en Draw mode). J'arrive a switcher entre les deux mode mais pas a sélectionner l'outil. J'ai essayé plusieurs chose. D'abord directement puis avec ceci :

--> choose active tool

Auriez vous une methode pour arriver a ce résultat?


def set_active_tool(tool_name):
    for area in bpy.context.screen.areas:
        if area.type == '2D Animation':
            override = bpy.context.copy()
            override["space_data"] = area.spaces[0]
            override["area"] = area
            bpy.ops.wm.tool_set_by_id(override, name=tool_name)


def Switch() :
    print("def Switch start")
    
    context = bpy.context
    scene = context.scene
  
    if context.mode == 'EDIT_GPENCIL':
#        print("EDIT_GPENCIL active")
        bpy.ops.object.mode_set(mode='PAINT_GPENCIL')
        
        set_active_tool('builtin.brush.Draw')
        
#        bpy.ops.wm.tool_set_by_id(name='builtin.brush.Draw')
        return
        
    if context.mode == 'PAINT_GPENCIL':
#        print("PAINT_GPENCIL active")
        bpy.ops.object.mode_set(mode='EDIT_GPENCIL')
        
        set_active_tool('builtin.select_box')
        
#        bpy.ops.wm.tool_set_by_id(name='builtin.select_box')
        return



Bonne journée,

Contribution le : 24/05 07:28:08
Créer un fichier PDF de la contribution Imprimer


Re: Pouvoir choisir l'outil actif avec python
Fou Furieux du Clan
Inscrit:
31/10/2007 22:45
Post(s): 107
Merci a testure pour l'aide :
import bpy

bl_info = {
    "name": "Grease Pencil switch Draw<-->select",
    "author": "Django950",
    "version": (1, 0),
    "blender": (2, 82, 0),
    "location": "View3D > UI> GP select draw",
    "description": "switch draw select, takes draw and select in activ tool",
    "warning": "",
    "wiki_url": "",
    "category": "Animation",
}

# -----------------------------------------------------------------------------------
# creation of an addon that will switch select to draw in Grease Pencil
# -----------------------------------------------------------------------------------

# ---------------------------------------------------
# PROPERTY

# Armature name
bpy.types.WindowManager.bool_select = bpy.props.BoolProperty(name = "select", default=True)
bpy.types.WindowManager.bool_draw = bpy.props.BoolProperty(name = "draw", default=True)

# ---------------------------------------------------
        
# ---------------------------------------------------
#  OP_Switch_GP : switch between select and draw of the grease pencil

def Switch() :
    print("def Switch start")
    
    context = bpy.context
    scene = context.scene
    
    select =context.window_manager.bool_select
    draw =context.window_manager.bool_draw
  
    if context.mode == 'EDIT_GPENCIL':
        bpy.ops.object.mode_set(mode='PAINT_GPENCIL')
        
        if draw :
            bpy.ops.wm.tool_set_by_id(name='builtin_brush.Draw')
        return
        
    elif context.mode == 'PAINT_GPENCIL':
        bpy.ops.object.mode_set(mode='EDIT_GPENCIL')
        
        if select :
            bpy.ops.wm.tool_set_by_id(name='builtin.select_box')
        return
    
            
class OP_Switch_GP (bpy.types.Operator) :
    
    bl_idname = "object.oper_select_draw"
    bl_label = "switch"
    bl_description = "switch select to draw in Grease Pencil"
    
    def execute(self, context) :
        
        Switch()
        
        return {'FINISHED'}

    
# ---------------------------------------------------
#  PANEL GREASE PENCIL SWITCH : SELECT <--> DRAW

class InterfacePanel (bpy.types.Panel) :
    
    bl_label = "Switch Draw <-> select"
#    bl_label = "Switch"
    bl_idname = "VIEW_3D_PT_SELECT_DRAW"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "GP select-draw"
    bl_description = "Grease Pencil switch Draw <-> select"
                                
     # --- draw --- #
        
    def draw(self, context) :
        
        window_m = context.window_manager
        l = self.layout
        c=l.column(align = True)
        
        c.operator(OP_Switch_GP.bl_idname)
        
        c.label(text ="edit mode :")
        c.prop(window_m, "bool_select")
        
        c.label(text ="draw :")
        c.prop(window_m, "bool_draw")
                    
# ---------------------------------------------------
# REGISTER
classes = (InterfacePanel, OP_Switch_GP)

        
def register() :
   
    for cls in classes:
        bpy.utils.register_class(cls)
     
def unregister() :
    
    for cls in classes:
        bpy.utils.unregister_class(cls)
     
if __name__ == "__main__" :
    register()


Contribution le : 25/05 13:20:16
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
[WIP] et travaux terminés [terminé] court métrage 2020 3 79 Aujourd'hui 20:55:21
flahaut 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Première version disponible !    [1][2][3]...[56] 559 92909 Aujourd'hui 17:08:42
Bibi09 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[9] 80 8865 Aujourd'hui 16:58:20
Bibi09 
Questions & Réponses Knife tool a arrêté de fonctionner 1 27 Aujourd'hui 16:29:51
Rimpotche 
Hors Sujet !! Système solaire open source 5 1504 26/12/2019 12:46
Bibi09 
Questions & Réponses [non résolu] Ecran bleu 2 72 Hier 18:35:32
alexmge 
Questions & Réponses [non résolu] va et vient entre sculpt et layout impossible    [1][2] 11 176 Hier 09:56:50
manondup 
Le coin des geeks carte graphique Intel(R) HD Graphics et OpenGL    [1][2][3] 24 833 04/07 22:47:15
Bibi09 
Questions & Réponses shader 5 160 04/07 20:23:23
Rimpotche 
[WIP] et travaux terminés Le Tigre 4 228 04/07 11:19:09
lastrodamo 
Questions & Réponses [non résolu] le Rendu de preview et le rendu final ne sonts pas pareils 2 96 03/07 23:18:27
Pinguinax 
Questions & Réponses [non résolu] Particules system dynamique 0 69 03/07 13:27:09
Ramar 
[WIP] et travaux terminés bas sculpture corps    [1][2] 18 362 01/07 18:57:21
prometheusx 
[WIP] et travaux terminés Générateur d'oreille - Beta testeurs bienvenus 8 466 30/06 10:28:08
Rimpotche 
Le coin des geeks Vieilles cartes graphiques : Quadro FX5800 ou Quadro 4000 ? 3 213 30/06 07:48:42
Poutrator 
Questions & Réponses Changement de caméra 2 201 28/06 19:10:40
prometheusx 
Questions & Réponses Faire pousser des cheveux 2 191 28/06 16:01:40
Rimpotche 
Questions & Réponses convertir un mesh en hair et le relier 2 142 28/06 11:11:44
prometheusx 
Questions & Réponses feu rapide 2 201 28/06 07:22:23
francerf 
Questions & Réponses collision de tissu 1 144 27/06 23:54:35
prometheusx 

Qui est en ligne
157 utilisateur(s) en ligne (dont 122 sur Forums)

Membre(s): 0
Invité(s): 157


plus...
Nouveaux membres
EarnestJ29 6/7/2020
MargartLea 6/7/2020
OnaHoward5 6/7/2020
George15D7 6/7/2020
ArdenBarnu 6/7/2020
TiffinyBec 6/7/2020
CharlaWhit 6/7/2020
FrancisLoe 6/7/2020
AshliKier 6/7/2020
ZacheryPye 6/7/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
Aou 7
anniversaire Cem47
plus 269 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445