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
Python & Plugins ajouter plusieurs fois le même objet avec le même retard 0 21 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 68 Hier 13:17:11
Bibi09 
[WIP] et travaux terminés [WIP] BUDY3000 prochain tuto spécial : modélisation semi mécanique 9 234 Hier 11:04:13
Guiu 
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 
[WIP] et travaux terminés [WIP] Coming Home (Animation de Noël)    [1][2] 19 515 30/11 16:12:26
Bibi09 

Qui est en ligne
176 utilisateur(s) en ligne (dont 106 sur Forums)

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


plus...
Nouveaux membres
BettieHasz 3/12/2020
DerrickTob 3/12/2020
DorisSeyle 3/12/2020
RenatePepp 3/12/2020
ChantalCro 3/12/2020
ChangFlick 3/12/2020
kerju2002 2/12/2020
bugsheep 29/11/2020
gto37 29/11/2020
Augustus_Strix 28/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