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 en sculpt mode 2 34 Aujourd'hui 06:32:33
moonboots 
[WIP] et travaux terminés [WIP] Teeny Tiny - Story    [1][2][3][4] 39 3644 Hier 20:44:34
Hook 
Questions & Réponses [non résolu] Array circulaire 1 44 Hier 19:22:21
Hook 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Première version disponible !    [1][2][3]...[58] 576 97446 Hier 11:11:32
Hook 
Questions & Réponses Addon pour textures procedurales 2 73 02/08 20:11:35
Crocodile_13 
Questions & Réponses avis animation marche :)    [1][2][3][4] 34 477 02/08 20:03:14
prometheusx 
[WIP] et travaux terminés [terminé] court métrage 2020    [1][2] 13 734 02/08 15:28:29
flahaut 
Questions & Réponses [résolu] Générique, sous-titres etc 3 81 02/08 09:18:02
Corpia 
Questions & Réponses [résolu] Scène prend la couleur du fond    [1][2] 11 148 02/08 08:20:32
Arielboid 
Questions & Réponses [non résolu] Problele d'addon 0 49 02/08 01:52:30
nayther 
Questions & Réponses Addon pour textures procedurales 1 50 01/08 12:22:52
moonboots 
Questions & Réponses hair densité sélection de polys 9 177 30/07 23:18:21
lenogre 
Questions & Réponses [résolu] graph editor et location key frame 7 133 30/07 16:41:18
math_ 
Questions & Réponses les graphs editor :/ 4 126 30/07 11:19:07
prometheusx 
[WIP] et travaux terminés [WIP] Tutoriel vidéo et création de mon prochain court métrage 2 127 29/07 20:32:46
Bibi09 
Le coin des geeks pc bas prix    [1][2][3][4] 38 1655 28/07 21:14:56
Bibi09 
Questions & Réponses mesh pas assez smooth 3 159 28/07 15:10:12
Zear 
Questions & Réponses Clignotement de l'interface de blender 8 745 28/07 12:15:27
zezer 
Le coin des geeks carte graphique Intel(R) HD Graphics et OpenGL    [1][2][3][4] 31 2355 28/07 10:35:13
gedru 
Questions & Réponses Problème perso qui bouge des 2 côtés qu'avec 1 coté de l'armature et pas de l'autre    [1][2] 10 1334 27/07 19:14:45
Rimpotche 

Qui est en ligne
42 utilisateur(s) en ligne (dont 26 sur Forums)

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


BrentonKuj, plus...
Nouveaux membres
TerriTishl 4/8/2020
BettyProff 4/8/2020
EdwardoBin 4/8/2020
SGZDiana67 4/8/2020
Wyatt26760 4/8/2020
MyrtisBosi 4/8/2020
FrancineVa 4/8/2020
SylviaNeva 4/8/2020
ZCELucille 4/8/2020
CaroleEise 4/8/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Aou 7
anniversaire Cem47
Aou 13
Anniversaire Siskas
Sep 8
Anniversaire de ang
plus 267 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