Bonjour, je mets ce sujet en Programmation parce que j'ai l'impression qu'il faut un petit script pour résoudre la question.
Je souhaiterais docker 3 boutons qui permettent de switcher entre les 3 interfaces que j'utilise le plus souvent, à savoir :
- Interface de démarrage (utilisateur)
- BP UV Edit (utilisateur)
- BP 3D Paint (utilisateur)
pour éviter de passer par la liste déroulante.
Si c'est faisable "simplement" ce serait bien cool...
÷ R19 Studio ÷ cacahuètes ÷
Salut Sir Gong,
Voilà comment charger une interface :
Code PHP:
import os
import c4d
from c4d import documents
from c4d import storage
def main():
prefs = storage.GeGetC4DPath(c4d.C4D_PATH_PREFS)
path = os.path.join(prefs, "template.l4d")
documents.LoadFile(path)
if __name__=='__main__':
main()
Code PHP:
lib_user = storage.GeGetC4DPath(c4d.C4D_PATH_LIBRARY_USER)
path = os.path.join(lib_user, "layout", "BP UV Edit.l4d")
documents.LoadFile(path)
C4D_PATH_PREFS : /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxxx/prefsCode PHP:
lib = storage.GeGetC4DPath(c4d.C4D_PATH_LIBRARY)
path = os.path.join(lib, "layout", "BP UV Edit.l4d")
documents.LoadFile(path)
C4D_PATH_LIBRARY : /Applications/MAXON/CINEMA 4D R15/library
C4D_PATH_LIBRARY_USER : /Users/xs_yann/Library/Preferences/MAXON/CINEMA 4D R15_xxx/library
Hu.
Heu.
J'essaye de comprendre et je reviens.
(Merci pour ta réponse, déjà)
÷ R19 Studio ÷ cacahuètes ÷
Un peu mieux expliqué :
L’interface de démarrage est : /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxxx/prefs/template.l4dCode PHP:
import os
import c4d
from c4d import documents
from c4d import storage
def main():
# on récupère le chemin /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxx/library
lib_user = storage.GeGetC4DPath(c4d.C4D_PATH_LIBRARY_USER)
# on ajoute le dossier layout et le fichier BP UV Edit.l4d au chemin
# ce qui donne : /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxx/library/layout/BP UV Edit.l4d
path = os.path.join(lib_user, "layout", "BP UV Edit.l4d")
# on charge le fichier l4d qui modifie l’interface
documents.LoadFile(path)
if __name__=='__main__':
main()
Les interfaces c4d sont dans : /Applications/MAXON/CINEMA 4D R15/library/layout/*.l4d
Les interfaces utilisateur sont dans : /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxxx/library/layout/*.l4d
Tu peux très bien écrire seulement :
C'est juste pas très propre ni portable.Code PHP:
documents.LoadFile("/Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxxx/library/layout/BP UV Edit.l4d")
attention car les layouts ne sont pas dans le dossier de preferences mais dans le le dossier application.
/Applications/MAXON/CINEMA 4D R15/library/layout/BP UV Edit.l4d
i7 4790K/32GoDDR3/GTX1070 - Genghis Khan
Les layout intégrés à C4D, pas les layouts utilisateurs (par défaut en tout cas).
Tu n'es pas censé toucher au dossier d'installation de c4d (il est même protégé en écriture depuis quelques versions).
Les plugins vont dans : /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxx/plugins
et les layout dans : /Users/username/Library/Preferences/MAXON/CINEMA 4D R15_xxx/library/layout
Voici comment utiliser ce code sous forme de script :
Un fichier layout.py qui va contenir les fonctions :
Ensuite il suffit d’importer les fonctions dans chacun des scripts chargeant l’interface désirée :Code PHP:
import os
import c4d
from c4d import documents
from c4d import storage
def load_interface(name, user):
if not name.endswith(".l4d"):
name += ".l4d"
where = c4d.C4D_PATH_LIBRARY_USER if user else c4d.C4D_PATH_LIBRARY
lib = storage.GeGetC4DPath(where)
path = os.path.join(lib, "layout", name)
documents.LoadFile(path)
def load_startup():
prefs = storage.GeGetC4DPath(c4d.C4D_PATH_PREFS)
path = os.path.join(prefs, "template.l4d")
documents.LoadFile(path)
load_bp_edit.py
load_startup.pyCode PHP:
import sys
import os
folder = os.path.dirname(__file__)
if folder not in sys.path:
sys.path.append(folder)
import layout
def main():
layout.load_interface("BP UV Edit", user=True)
if __name__=='__main__':
main()
@Sir Gong : Pour charger “BP 3D Paint-G (Utilisateur)”, il suffit de copier load_bp_edit.py et de remplacer “layout.load_interface("BP UV Edit", user=True)” par “layout.load_interface("BP 3D Paint-G", user=True)”Code PHP:
import sys
import os
folder = os.path.dirname(__file__)
if folder not in sys.path:
sys.path.append(folder)
import layout
def main():
layout.load_startup()
if __name__=='__main__':
main()
Voici les 3 fichiers : http://www.xsyann.com/fc4d/layout.zip
Dernière modification par xs_yann ; 17/02/2015 à 14h50.
Génial !
Maintenant que tu as tout fait, ça fonctionne.
Dans tes premières réponses tu étais trop optimiste quant à mes connaissances.
Pour te dire le niveau, j'avais collé ton code dans la fenêtre coffee parce que ça faisait de plus jolies couleurs que dans la fenêtre python...
Gros merci, t'es un chef
÷ R19 Studio ÷ cacahuètes ÷
Bonne idée Gong, moi aussi je change très souvent d'interface et le menu n'est pas pratique.
Un grand merci Yann pour ton script et les explications très utiles pour un ignorant comme moi.