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/2020 07:28
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/2020 13:20
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 Inclure une vidéo dans un environnement 3D, c'est le bug dans mes neurones 0 1 Aujourd'hui 19:18:02
Lylo 
Questions & Réponses MB- Lab 1 7 8 0 18 Aujourd'hui 17:00:44
sap1 
Questions & Réponses [résolu] J'ai besoin de vos lumières 9 206 Aujourd'hui 09:49:00
Lylo 
Hors Sujet !! Blobs Opera 5 201 Hier 09:42:47
lucky 
Questions & Réponses Importation fichier format MHX2 2 91 21/01 12:43:48
ecluse105 
Questions & Réponses Utilisation des layers    [1][2] 10 241 20/01 16:32:08
Lylo 
Questions & Réponses Soucis dépliage UV 2 165 19/01 11:27:04
benboul62 
Questions & Réponses Couleur des cheveux 4 173 18/01 22:56:14
Lylo 
Questions & Réponses nodes texture 1 104 18/01 20:34:43
kimlicrea 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[5] 46 3564 18/01 15:23:26
Guiu 
Hors Sujet !! Tuto débutant : un hippocampe - #1 le Maillage de base 1 163 17/01 17:09:46
meltingman 
Questions & Réponses [résolu] Utilisation des textures 7 160 17/01 16:26:51
lucky 
Questions & Réponses [non résolu] Différence entre le viewport et le rendu dans une simulation de particule. 3 261 16/01 23:31:29
lucky 
Questions & Réponses Problème de clic gauche poisseux dans nouveau Blender    [1][2] 10 563 16/01 16:55:15
moonboots 
[WIP] et travaux terminés Animation Nodes & MIDI    [1][2] 10 2221 16/01 15:51:09
WinZs 
Moteur de jeu GameBlender et alternatives Dulcis - Démo de RPG sur Unity    [1][2] 12 527 16/01 12:51:47
meltingman 
[WIP] et travaux terminés [WIP] Avion de combat    [1][2][3]...[9] 87 15306 16/01 02:15:02
meltingman 
Questions & Réponses Texture des plastiques "Lego" 1 149 15/01 21:44:39
lucky 
Questions & Réponses Crash intempestif 2.91 4 170 15/01 15:13:32
lucky 
[WIP] et travaux terminés [WIP] Projet Darwin (nom temporaire)    [1][2][3]...[5] 40 7763 15/01 14:28:37
Bibi09 

Qui est en ligne
143 utilisateur(s) en ligne (dont 92 sur Forums)

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


Lylo, plus...
Nouveaux membres
IsidroPoin 23/1/2021
ChristinSo 23/1/2021
Emmanuel85 23/1/2021
NelsonLauf 23/1/2021
CecilaCarn 23/1/2021
AndresPett 23/1/2021
MassageIsLife 23/1/2021
Dan_Ly 21/1/2021
NOCR3W 16/1/2021
SuperTrottoir 15/1/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Fev 15
Anniversaire de Dany
Fev 23
anniversaire de windspirit
Mar 14
Anniversaire de AMV12
plus 261 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445