Python indirizzo relativo
Moderatori: Arkimed, natas, visualtricks, cappellaiomatto
-
- Advertising
Python indirizzo relativo
ho creato un semplice script per richiamare dei video tutorial (o pdf) direttamente da cinema, così da potermi rinfrescare velocemente le varie funzioni/settaggi di plugin e script.
Lo script funziona, ma mi piacerebbe compilarlo indicando l'indirizzo relativo anziché quello assoluto. Per esempio invece di "C:\Program Files\MAXON\CINEMA 4D R18\plugins\Video\Thrausi 1.mp4" vorrei trovare una formula simile a "(cartella plugin)\Video\Thrausi 1.mp4" in modo tale da poter trasportare gli script alle versione successive senza doverli modificare tutti a mano (R18, R19, ecc...).
Per maggior chiarezza, ecco lo script completo:
import c4d
from os import path as p
from c4d import storage as st
from c4d import gui
def main():
st.ShowInFinder("C:\Program Files\MAXON\CINEMA 4D R18\plugins\Video\Thrausi 1.mp4", True)
if __name__=='__main__':
main()
Qualcuno può aiutarmi?
Grazie in anticipo e buona giornata
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python indirizzo relativo
https://developers.maxon.net/docs/Cinem ... GetC4DPath
Re: Python indirizzo relativo
Grazie Per la risposta Visualtricks,visualtricks ha scritto:Ciao, prova a dare un'occhiata qua:
https://developers.maxon.net/docs/Cinem ... GetC4DPath
ed effettivamente si, ci avevo guardato e ho provato ad usare alcune di quelle stringhe nell'indirizzo dello script ma non ha funzionato... tu sapresti dirmi come si dovrebbe compilare correttamente un indirizzo relativo con quelle istruzioni?
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python indirizzo relativo
Codice: Seleziona tutto
import c4d
import os
#Welcome to the world of Python
def main():
app_path = c4d.storage.GeGetStartupApplication() # percorso all'eseguibile di cinema (cinema4d.app o cinema4d.exe)
cinema_dir = os.path.abspath(os.path.join(app_path, os.pardir)) # os.pardir -> va su di un livello rispetto a app_path
plugin_dir = os.path.join(cinema_dir, "plugins") # concatena il percorso cinema_dir con la directory dei plugin
your_dir = os.path.join(cinema_dir, "plugins", "video") # concatena il percorso alla directory plugin con la tua sottocartella
print app_path
print cinema_dir
print plugin_dir
print your_dir
if __name__=='__main__':
main()
Re: Python indirizzo relativo
Grazie ancora Visualtricks,visualtricks ha scritto:Ciao, rileggendo l'SDK in effetti non c'è un comando diretto per risalire alla directory dei plugin (o meglio, c'è ma restituisce la directory dove risiede il modulo python). Se tu creassi un plugin normale potresti usare __file__ per avere la posizione corretta, ma nel tuo caso usando uno script devi fare qualche passaggio in più:
Codice: Seleziona tutto
import c4d import os #Welcome to the world of Python def main(): app_path = c4d.storage.GeGetStartupApplication() # percorso all'eseguibile di cinema (cinema4d.app o cinema4d.exe) cinema_dir = os.path.abspath(os.path.join(app_path, os.pardir)) # os.pardir -> va su di un livello rispetto a app_path plugin_dir = os.path.join(cinema_dir, "plugins") # concatena il percorso cinema_dir con la directory dei plugin your_dir = os.path.join(cinema_dir, "plugins", "video") # concatena il percorso alla directory plugin con la tua sottocartella print app_path print cinema_dir print plugin_dir print your_dir if __name__=='__main__': main()
ho capito, a livello concettuale, quello che m'hai riportato.
Purtroppo non essendo un campione in Python poi non so come concludere la questione, ovvero... in questo codice, se ho ben capito, c'è la definizione dei percorsi, ma come faccio poi ad applicarli alla stringa st.ShowInFinder("C:\Program Files\MAXON\CINEMA 4D R18\plugins\Video\Thrausi 1.mp4", True)?
O meglio, come posso sostituire il pezzo "C:\Program Files\MAXON\CINEMA 4D R18" (o addirittura "C:\Program Files\MAXON\CINEMA 4D R18\plugins\Video") con una definizione assoluta?
Grazie ancora per la disponibilità e perdona la mia ignoranza...
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python indirizzo relativo
Codice: Seleziona tutto
import c4d
import os
from c4d import storage as st
def main():
app_path = c4d.storage.GeGetStartupApplication()
cinema_dir = os.path.abspath(os.path.join(app_path, os.pardir))
your_file = os.path.join(cinema_dir, "plugins", "video", "Thrausi.mp4")
st.ShowInFinder(your_file, True)
if __name__=='__main__':
main()
Cmq se posso, non faresti prima a fare una libreria dei video all'interno del content browser? Li avresti tutti radunati in un unico file (.lib4d) e basterebbe copiare quello nelle varie versioni di cinema...
Re: Python indirizzo relativo
Grazie infinitamente, mi hai risparmiato non poco tempo e, soprattutto, mi hai spiegato molto chiaramente come questo succede.
Comunque riguardo alla libreria certo che puoi (anzi, devi) ed anch'io, inizialmente, avevo pensato ad una soluzione simile anche perché apprezzo grandemente le librerie di cinema (tranne per dei problemi mai completamente risolti coi percorsi delle texture per alcuni canali di alcuni materiali V-Ray) ma ho trovato un problema: mettendo un video o un pdf in una libreria e cercando di aprirlo col doppio clic da content browser non si apre esternamente (quindi con Acrobat o col riproduttore video) ma cerca di aprirlo in cinema ovviamente non riuscendoci: se anche per questo hai una soluzione, sarebbe graditissima!
In ogni caso grazie ancora, sei gentilissimo...
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python indirizzo relativo
Uhm, strano..magari dipende dal tipo di file? A me gli mp4 li apre con VLC, pdf non ho mai provato in effettimettendo un video o un pdf in una libreria e cercando di aprirlo col doppio clic da content browser non si apre esternamente
Re: Python indirizzo relativo
Se creo una libreria e ci metto video (vari formati) e pdf, questi, cliccandoci sopra, non partono: i video fanno aprire la finestra d'importazione dei file Rhino e i pdf non danno segni di vita.
Non escludo che ci sia qualcosa di non a posto nella mia installazione, magari ci riprovo dopo una formattazione.
In ogni caso la questione è risolta e ti ringrazio ancora; la tentazione è di chiederti un altro paio di cose che non ho risolto, ma non voglio esagerare!
Buona giornata, grazie ancora!
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python indirizzo relativo
chiedi chiedi, ci piace python :)In ogni caso la questione è risolta e ti ringrazio ancora; la tentazione è di chiederti un altro paio di cose che non ho risolto, ma non voglio esagerare!
-
- Advertising
FOLLOW US