Pulsante attivo interfaccia

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderators: Arkimed, natas, visualtricks, cappellaiomatto

Post Reply
  • Advertising
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Pulsante attivo interfaccia

Post by IoAro »

Ciao a tutte/i,
sto lavorando ad una palette di strumenti per il disegno con Python e mi farebbe molto comodo poter visualizzare quale pulsante è attivo: per intenderci, vorrei capire se è possibile far comparire l'azzurro dell'icona attiva come si seleziona "muovi", "scala", "ruota", ecc...
Se, addirittura, riuscissi ad impostare una selezione univoca delle icone proprio come i pulsanti a cui ho fatto riferimento prima (non si può selezionare muovi e scala o ruota e muovi) sarebbe veramente perfetto!

In ogni caso grazie in anticipo e buona giornata a tutti! :)
User avatar
masterzone
Site Admin
Posts: 10352
Joined: Fri Sep 17, 2004 5:34 pm
Location: Verona

Re: Pulsante attivo interfaccia

Post by masterzone »

mmm io purtroppo non sono pratico di python, non so quando gli strumenti appaiono cliccati e quando no...dovresti sentire o il cappellaio matto oppure caleidos nel nostro forum :)
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Re: Pulsante attivo interfaccia

Post by IoAro »

Grazi masterzone,
tu come tutti gli altri di C4DZone siete sempre gentilissimi ed è proprio per questo che non voglio stressare troppo! 8-)
Pertanto see qualcuno mi risponde qui, più che contento, altrimenti pazienza perché già mi avete risolto questioni ben più importanti... ;)

Grazie per la tua risposta e buona giornata!
User avatar
cappellaiomatto
Moderatore
Posts: 1571
Joined: Mon May 07, 2012 5:12 pm

Re: Pulsante attivo interfaccia

Post by cappellaiomatto »

ciao
prova a dare un occhio a questo componente, dovrebbe fare quello che ti serve

https://developers.maxon.net/docs/Cinem ... nCustomGui
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Re: Pulsante attivo interfaccia

Post by IoAro »

Grazie Cappellaiomatto,
penso proprio di si!
Cioè, se non sbaglio la stringa che serve a me è BitmapButtonCustomGui.SetToggleState (o almeno credo).
Il problema è che non è che io sia proprio un campione in Python e nello scripting in generale e quindi lo script a cui andrebbe applicata la cosa è una roba che credo sia compilata non proprio benissimo... questo è uno degli script (riguarda lo snap alla griglia, poi c'è quello con le guide dinamiche, quello che disabilita gli snap, quello dello snap in mm, cm, m, ecc...)

import c4d
from c4d.modules import snap


def main():

# Activate Grid
bd = doc.GetActiveBaseDraw()
filter_state = bd[c4d.BASEDRAW_DISPLAYFILTER_GRID]
if filter_state == 1:
bd[c4d.BASEDRAW_DISPLAYFILTER_GRID] = 1
else:
bd[c4d.BASEDRAW_DISPLAYFILTER_GRID] = 1

# Check snap state
res = snap.IsSnapEnabled(doc)
if not res:
# Enable snap if not activated
snap.EnableSnap(True, doc)


# Get snap settings
bc = snap.GetSnapSettings(doc)

# Set snapping mode
bc[c4d.SNAP_SETTINGS_MODE] = c4d.SNAP_SETTINGS_MODE_AUTO
snap.SetSnapSettings(doc, bc)

# Snap settings
snap.EnableSnap(True, doc, c4d.SNAPMODE_POINT)

snap.EnableSnap(False, doc, c4d.SNAPMODE_EDGE)

snap.EnableSnap(False, doc, c4d.SNAPMODE_POLYGON)

snap.EnableSnap(False, doc, c4d.SNAPMODE_SPLINE)

snap.EnableSnap(False, doc, c4d.SNAPMODE_AXIS)

snap.EnableSnap(False, doc, c4d.SNAPMODE_INTERSECTION)

snap.EnableSnap(False, doc, c4d.SNAPMODE_MIDPOINT)

snap.EnableSnap(False, doc, c4d.SNAPMODE_WORKPLANE)

snap.EnableSnap(False, doc, c4d.SNAPMODE_GRIDPOINT)

snap.EnableSnap(False, doc, c4d.SNAPMODE_GRIDLINE)

snap.EnableSnap(True, doc, c4d.SNAPMODE_GUIDE)

snap.EnableSnap(True, doc, c4d.SNAPMODE_DYNAMICGUIDE)

snap.EnableSnap(True, doc, c4d.SNAPMODE_ORTHO)

snap.EnableSnap(False, doc, c4d.QUANTIZE_ENABLED)

c4d.EventAdd()

# Set quantize scale step
snap.SetQuantizeStep(doc, None, c4d.SNAP_SETTINGS_GUIDEANGLE, 1.5707963267948966)

if __name__=='__main__':
main()

Ho messo insieme pezzi di script da destra e da sinistra e insomma... non ho proprio la situazione in pugno, ecco! :?

E proprio per questa mia inettitudine nel campo... al momento non saprei dove e come usare l'istruzione...

In ogni caso mi hai dato un bello spunto ed è già tanto: in base a questo mi sono messo a cercare qualcosa in merito non trovando molto, finora, ma magari con un po' di fortuna riesco a trovare come e dove applicarlo!

Grazie tante e buona serata! :)
User avatar
Caleidos4D
Posts: 72
Joined: Tue Sep 27, 2011 4:48 pm

Re: Pulsante attivo interfaccia

Post by Caleidos4D »

Ciao IoAro,
se non ho capito male, vorresti solamente associare un'icona ai pulsanti Script che utilizzi frequentemente, e in più, anche lo status (lo sfondo azzurro per indenderci) quando uno di essi è attivo.

Per l'Icona:
basta inserire nella cartella del tuo script, una immagine .tif che abbia lo stesso nome. Ad Esempio:
ioaro.py
ioaro.tif
all'apertura di Cinema, lo script ioaro.py avrà assegnata l'icona ioaro.tif


Per lo Sfondo Azzurro:
qui è leggermente più complesso, si tratta infatti di inserire la funzione def state() nel codice dello script e stabilire per quali condizioni, lo script deve diventare azzurro.
prendendo spunto dal codice che hai postato, ti ho creato un piccolo script di esempio, molto generico, che quando lo Snap è abilitato, permette di attivare/disattivare l'opzione di snap Punti, diventando quindi azzurro quando snap Punti è attivo.
esempio.rar
(1.57 KiB) Downloaded 77 times
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Re: Pulsante attivo interfaccia

Post by IoAro »

Grazie Caleidos,
penso di aver compreso le tue parole ma il mio cervello si rifiuta di collaborare.
Per l'icona personalizzata, perfetto, nessun problema, invece per lo stato non sono riuscito a tradurre in pratica la tua spiegazione! :shock:
Ho provato anche ad inserire lo script d'esempio nella mia palette, ma non mi riesce di farla funzionare... o meglio, come vedi dagli screenshot, cliccando si attiva lo snap a punti (e sull'icona di Cinema si vede) ma non vedo il pulsante con l'icona rossa evidenziarsi di azzurro!
Fra l'altro, forse, con questi screen ti è anche più chiaro quello che vorrei fare: selezionando uno degli snap che vedi vorrei che risultasse, appunto, selezionato di azzurro... so che sicuramente è una cavolata che mi manca ma non riesco a risolverla perché, come dicevo in precedenza, con Python sono veramente una capra...
Cattura1.JPG
Cattura1.JPG (105.67 KiB) Viewed 1286 times
Cattura2.JPG
Cattura2.JPG (105.9 KiB) Viewed 1286 times
User avatar
Caleidos4D
Posts: 72
Joined: Tue Sep 27, 2011 4:48 pm

Re: Pulsante attivo interfaccia

Post by Caleidos4D »

Stai usando R19 o release inferiori?
Se non ricordo male, il def state() per gli script è stato inserito proprio nella R20.

Per cui, se lo sfondo non diventa azzurro, quando lo snap punti è attivo, è purtroppo dovuto ad un limite della release che stai usando...
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Re: Pulsante attivo interfaccia

Post by IoAro »

Esatto Caleidos,
esatto... dovrò passare al più presto alla R20 ma con questa cosa dell'assenza del C.O.F.F.E.E. sono molto trattenuto nel fare il passaggio perché ho fatto delle prove con la demo e col bridge della Insydium, ma non tutto funziona come dovrebbe e quindi ecco... mi trovo in questo limbo.
Comunque prima o poi passerò e quando lo farò sicuramente mi torneranno anche le stringhe che mi hai gentilmente rigirato.

Grazie ancora e buona domenica! ;)
  • Advertising
Post Reply