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
Questions & Réponses [non résolu] Bug de rendu evee et material preview de cycles 2 10 Aujourd'hui 23:30:54
bugsheep 
Questions & Réponses Récupérer un vieux fichier dans Blender 2.90    [1][2] 12 404 Aujourd'hui 23:29:19
meltingman 
Hors Sujet !! Animation "S'abonner" pour YouTube 1 23 Aujourd'hui 23:23:24
meltingman 
Mes premières images sous Blender (débutants) serpent 6 78 Aujourd'hui 23:16:11
meltingman 
Questions & Réponses [résolu] Débutant sur les découpes des objets avec Blender 2.79    [1][2] 13 154 Aujourd'hui 21:18:27
yocodream 
Questions & Réponses affichage décalé de la fumée (quick smoke) 1 21 Aujourd'hui 19:32:03
gto37 
Questions & Réponses Configuration scroller et pan dans Blender 2.91 6 90 Aujourd'hui 18:08:28
Rimpotche 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Iron Man Collapsing"    [1][2][3][4] 31 13396 Aujourd'hui 15:16:40
timeman13 
Mes premières images sous Blender (débutants) Quitter l'affichage touche Z 6 75 Hier 23:50:51
rduvrac 
[WIP] et travaux terminés [WIP] Coming Home (Animation de Noël)    [1][2] 15 380 Hier 23:41:51
Bibi09 
Questions & Réponses Aperçu des polices "qui clignotent" 2 78 Hier 08:56:23
Kristof_LEDRU 
[WIP] et travaux terminés [WIP] BUDY3000 prochain tuto spécial : modélisation semi mécanique 6 155 27/11 22:14:47
Laorz 
[WIP] et travaux terminés [WIP] TUTO Spécial Textures ! BOB et Gary :D 5 256 27/11 20:19:31
Bibi09 
Hors Sujet !! Tutoriel - Rigify - adapter Rigify à un personnage Cartoon (Bob l'éponge) 0 60 27/11 18:25:56
meltingman 
Questions & Réponses SSolidifier 5 81 27/11 18:19:55
rduvrac 
Questions & Réponses Bump map pixellisée    [1][2] 12 146 27/11 18:08:02
moonboots 
Questions & Réponses Je n'arrive pas a coller les membres de mes personnages sur l'armature    [1][2] 19 210 27/11 17:52:35
Lylo 
Questions & Réponses Scanner 3d et blender 2 94 27/11 17:37:28
Pandore62 
Questions & Réponses Ajouter l'effet de deux shaders? 1 60 27/11 17:28:02
moonboots 
Questions & Réponses [non résolu] Afficchage matériaux 9 120 27/11 13:58:56
rduvrac 

Qui est en ligne
113 utilisateur(s) en ligne (dont 86 sur Forums)

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


plus...
Nouveaux membres
XZIArleen 29/11/2020
bugsheep 29/11/2020
Elvis86S6 29/11/2020
PilarOles 29/11/2020
DanielleBr 29/11/2020
RaquelEato 29/11/2020
gto37 29/11/2020
Augustus_Strix 28/11/2020
yocodream 28/11/2020
Pandore62 27/11/2020
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 9
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 263 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