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
Hors Sujet !! Comment se servir du Vertex Group- créer une fiole sans déplacer un vertex 0 1 Aujourd'hui 12:32:01
meltingman 
[WIP] et travaux terminés [WIP] BUDY3000 prochain tuto spécial : modélisation semi mécanique 9 240 Aujourd'hui 12:25:46
meltingman 
Python & Plugins ajouter plusieurs fois le même objet avec le même retard 0 22 Aujourd'hui 00:15:59
neonclignote 
[WIP] et travaux terminés [terminé] Imprimante à jet d'encre industrielle    [1][2] 10 2537 Hier 23:11:22
dj3dim 
Questions & Réponses [WIP] Typo 6 162 Hier 22:45:30
Laorz 
Questions & Réponses [physique] patte à modeler 2 23 Hier 22:00:39
prometheusx 
The Blender Clan 'tchat Blender 2.8x : Actus, tests, feedback..    [1][2][3]...[7] 66 37893 Hier 19:10:37
lucky 
Questions & Réponses Particules qui tombent puis restent collées à la surface 3 69 Hier 13:17:11
Bibi09 
Questions & Réponses Animation 2D débutant 5 84 01/12 20:18:23
moonboots 
Hors Sujet !! Tutoriels "Bonhomme de neige avec EEVEE" 6 97 01/12 19:34:23
Bibi09 
[WIP] et travaux terminés [WIP] Les wips à Chikin    [1][2] 11 2520 01/12 19:24:49
chikin 
Python & Plugins script python pour dupliquer un objet et fusionner le tout    [1][2] 14 282 01/12 18:15:17
neonclignote 
Questions & Réponses Je perds sans arrêts mes shaders! 9 89 01/12 16:59:53
titisteph 
Questions & Réponses [résolu] Compter les vertices 2 54 01/12 16:15:45
zeromeetsinfinity 
Questions & Réponses Bump map pixellisée    [1][2][3] 21 310 01/12 14:31:41
moonboots 
Questions & Réponses [non résolu] Mettre du texte sur un sujet 3d    [1][2][3] 21 731 01/12 10:43:08
Lady 
Questions & Réponses Ajouter l'effet de deux shaders? 2 117 01/12 09:07:13
titisteph 
[WIP] et travaux terminés [terminé] Photogrammétrie : Meshroom ! 4 88 30/11 22:43:07
Bibi09 
Hors Sujet !! Tuto rapide - Tips Astuce - mixer des matériaux - créer un marécage 8 139 30/11 19:52:59
meltingman 
Questions & Réponses lampe chinoise effet de lumiere 5 86 30/11 16:24:16
prometheusx 

Qui est en ligne
213 utilisateur(s) en ligne (dont 126 sur Forums)

Membre(s): 1
Invité(s): 212


meltingman, plus...
Nouveaux membres
HaiLiversi 3/12/2020
kerju2002 2/12/2020
bugsheep 29/11/2020
gto37 29/11/2020
Augustus_Strix 28/11/2020
yocodream 28/11/2020
Pandore62 27/11/2020
Kristof_LEDRU 26/11/2020
capitaine_moyen 22/11/2020
nhandinhbongda 21/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