Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Ax station

Bezier, corner, Smooth per vertici ASSEGNARE BOTTONE

Recommended Posts

Ciao a tutti, sembra una stupidaggine, è da tempo che personalizzo le toolbar di 3ds max con icone create da me, pulsanti, comandi e script ma non sono mai riuscito as assegnare dei pulsanti a questi comandi...

parlo delle opzioni che compaiono nel quad menu in alto a sinistra che assegnano la tipologia al vertice di una spline (ovviamente quando è selezionato) come bezier corner, bezier, corner e smooth.

Questi comandi non compaiono nel customize user interface, neanche nella lista del quad menu e non compare neanche una stringa nel max script listener... di conseguenza sono gli unici comandi ai quali non sono mai riuscito ad assegnarli un tasto.

Vediamo se c'è qualche genio del male che mi sa dire come fare

Share this post


Link to post
Share on other sites

Giusto perché avevo risposto, sotto uno script completo della tua richiesta. 

Lo puoi utilizzare "stand-alone" oppure selezionare il tutto e trascinarlo sulla barra degli strumenti di max per creare una macro e quindi un pulsante.

 

/*
SetKnotPoint by Michele Marcelli
-
- Avvia lo script e seleziona una shape
- E' possibile elezionare uno o più knot (vertici) e modificarli
*/

try (destroydialog ::ChangeVertex)catch()

rollout ChangeVertex "Set Type Shape Vertex"
(
	-- variabile globale per la spline selezionata dato che una shape può avere più di una spline
	Global spl = selection[1]
	
	button bt2 "Check type Vertex"
	radiobuttons rd  "Set type Vertex: " labels:#("Smooth", "Corner", "Bezier", "Bezier Corner" ) columns:1
	button bt "Apply" 
	
	on bt2 pressed do
	(
		-- creiamo un nuovo WindowStream dove scrivere i tipi di vertici selezionati
		new = Newscript()
		
		-- Per ogni spline in uso...
		for a = 1 to (numsplines spl) do
		(
			-- verifichiamo il tipo di knot è selezionato...
			gks_name = getKnotSelection spl a
			
			-- Infine per ogni knot selezionato, ne scriviamo le sue caratteristiche
			for b in gks_name do
				(
					ft = format "Name: % > Spline: % > Vertex: % = %\n"  spl.name a b (getKnotType spl a b) to:new
				)
		)
	)
	
	
	on bt pressed do
	(
		try(
		
		-- Per ogni spline in uso...
		for s = 1 to (numsplines spl) do
		(
			-- verifichiamo il tipo di knot è selezionato...
			gks = getKnotSelection spl s
			
			-- per ogni knot selezionato,..
			for k in gks do 
			(
				-- Seconso il radiobutton selezionato...
				case rd.state of
				(
					-- Cambiamo il tipo di knot scelto
					1: (setKnotType spl s k #smooth)
					2: (setKnotType spl s k #corner)
					3: (setKnotType spl s k #bezier)
					4: (setKnotType spl s k #bezierCorner)
				)
			)
		)
		-- Importante! Dobbiamo sempre aggiornare la shape alla fine del ciclo
		updateshape spl
		)catch()
	)
	
)
createdialog ChangeVertex style:#(#style_titlebar, #style_sysmenu, #style_toolwindow, #style_sunkenedge)

 

Share this post


Link to post
Share on other sites

Michele ti ringrazio moltissimo per quello che hai fatto, non credevo che qualcuno mi scrivesse addirittura uno script, lo ho provato e funziona benissimo.

 

Tuttuavia cercavo semplicemente di assegnare un bottone ad ogni tipologia di knot, praticamente le stesse 4 funzioni che si vedono nel quad menu su 4 distinti pulsanti da mettere sulla toolbar.

 

Quello che hai fatto tu è un piccolo capolavoro, ma non posso usarlo, lavoro come 3D Artist ad alti regimi di ottimizzazione, ho un sistema personalizzato basato su una personale Toolbar e una serie di script e tasti rapidi che utilizzo con un razer nostromo anch'esso ottimizzato e configurato per il mio workflow, il tutto su un monitor 35 pollici ULTRAWIDE QHD.

Le icone le ho disegnate e adattate a questa interfaccia in modo da non intaccare un solo pixel che non sia necessario e che coprirebbe il modello e su un monitor come questo di spazio sui dintorni ce n'è, mentre ricercare queste funzioni nel quad menu o in una finestra secondaria come quella che hai creato tu mi complica un po la cosa...

 

Per molti posso sembrare matto ma ci ho messo anni per ottimizzare questo schema di lavoro, lo ho trasmesso anche ad alcuni miei allievi che a loro volta hanno incrementato di molto la loro produttitività in termini di tempistica.

 

Chi fa questa professione combattendo con consegne spesso molto risicate mi capisce bene, per questo non posso utilizzare la tua finestra di dialogo, ma lo ripeto ancora una volta, ti ringrazio moltissimo del tuo interesse, lo apprezzo comunque molto.

 

Ho cercato di capire nelle righe del tuo script quali sono le righe che convertono i knot per assegnare i singoli tasti come mi servono ma non ci sono riuscito, non conosco niente di programmazione 

Share this post


Link to post
Share on other sites
15 minuti fa, Ax station ha scritto:

Michele ti ringrazio moltissimo per quello che hai fatto, non credevo che qualcuno mi scrivesse addirittura uno script, lo ho provato e funziona benissimo.

 

Tuttuavia cercavo semplicemente di assegnare un bottone ad ogni tipologia di knot, praticamente le stesse 4 funzioni che si vedono nel quad menu su 4 distinti pulsanti da mettere sulla toolbar.

 

Quello che hai fatto tu è un piccolo capolavoro, ma non posso usarlo, lavoro come 3D Artist ad alti regimi di ottimizzazione, ho un sistema personalizzato basato su una personale Toolbar e una serie di script e tasti rapidi che utilizzo con un razer nostromo anch'esso ottimizzato e configurato per il mio workflow, il tutto su un monitor 35 pollici ULTRAWIDE QHD.

Le icone le ho disegnate e adattate a questa interfaccia in modo da non intaccare un solo pixel che non sia necessario e che coprirebbe il modello e su un monitor come questo di spazio sui dintorni ce n'è, mentre ricercare queste funzioni nel quad menu o in una finestra secondaria come quella che hai creato tu mi complica un po la cosa...

 

Per molti posso sembrare matto ma ci ho messo anni per ottimizzare questo schema di lavoro, lo ho trasmesso anche ad alcuni miei allievi che a loro volta hanno incrementato di molto la loro produttitività in termini di tempistica.

 

Chi fa questa professione combattendo con consegne spesso molto risicate mi capisce bene, per questo non posso utilizzare la tua finestra di dialogo, ma lo ripeto ancora una volta, ti ringrazio moltissimo del tuo interesse, lo apprezzo comunque molto.

 

Ho cercato di capire nelle righe del tuo script quali sono le righe che convertono i knot per assegnare i singoli tasti come mi servono ma non ci sono riuscito, non conosco niente di programmazione 

scusa ma da ciò che hai scritto non mi sembra molto un ringraziamento!!!!

@Michele71 ti ha anche detto che puoi creare i bottoni, non vedo questo grande problema!!!!

Forse rivedrei ciò che hai scritto, perchè in ciò che hai detto sembra che sei "bravo bravo e super ottimizzato" anzi che insegni anche ad altri!!!! forse dovresti ritornare un po' più umile e magari chiedere a chi ha dedicato del tempo e che ti può trovare la soluzione, invece di cestinarla!

Share this post


Link to post
Share on other sites

Perdonami erano moltissimi mesi che non mettevo mano a maxscript (praticamente non lo uso più) e mi sono lasciato andare 😄 😄 

 

Ok. Sotto ti metto lo script base per crearti i pulsanti nella toolsbar; Il "cuore" di tutto è "setKnotType" la quale determina il tipo di knot impostato.

I "modi" sono determinati da (#smooth | #corner | #bezier | #bezierCorner ). Nello script che segue, creiamo un vertice "Corner". Sostituisci "corner" per ogni script che crei con i modi sovrascritti.  

Come ben sai, selezioni lo script e lo trascini nella toolsbar per creare una macro e pulsante annesso. Da li cambi il nome ecc.

 

try(
Global spl = selection[1]

for s = 1 to (numsplines spl) do
		(
			gks = getKnotSelection spl s
		for k in gks do 
			(
				setKnotType spl s k #corner
			)
		)
updateshape spl
	)catch()

 

In forma nostrana figurerebbe, setKnotType > la shape utilizzata > il numero della spline > il vertice selezionato > il tipo di vertice da modificare, quindi ad esempio, setKnotType  > Circle01 > 1 > 2 > #bezier ... 


Edited by Michele71

Share this post


Link to post
Share on other sites
1 minuto fa, zatta 3d ha scritto:

scusa ma da ciò che hai scritto non mi sembra molto un ringraziamento!!!!

@Michele71 ti ha anche detto che puoi creare i bottoni, non vedo questo grande problema!!!!

Forse rivedrei ciò che hai scritto, perchè in ciò che hai detto sembra che sei "bravo bravo e super ottimizzato" anzi che insegni anche ad altri!!!! forse dovresti ritornare un po' più umile e magari chiedere a chi ha dedicato del tempo e che ti può trovare la soluzione, invece di cestinarla!

 

Grande Zatta! 🙂 Comunque ho capito molto bene ciò che chiede @Ax station e non ci sono problemi, cosi come il ringraziamento c'è stato 😉 Sono sempre felice di rispolverare vecchi metodi per poter aiutare, e oggi mi si è rinfrancato il cuore non usare C# puhahahahahaahah!!!!!

Come detto, nessun problema 🙂 

Share this post


Link to post
Share on other sites
27 minuti fa, zatta 3d ha scritto:

scusa ma da ciò che hai scritto non mi sembra molto un ringraziamento!!!!

@Michele71 ti ha anche detto che puoi creare i bottoni, non vedo questo grande problema!!!!

Forse rivedrei ciò che hai scritto, perchè in ciò che hai detto sembra che sei "bravo bravo e super ottimizzato" anzi che insegni anche ad altri!!!! forse dovresti ritornare un po' più umile e magari chiedere a chi ha dedicato del tempo e che ti può trovare la soluzione, invece di cestinarla!

Caro Zatta, tutta la spiegazione che ho dato prima, serviva soltanto per spiegare a Michele quale era il motivo per cui non mi era possibile utilizzare il suo script nonostante fosse un ottimo lavoro da me apprezzatissimo.

 

Un altro avrebbe detto "grazie ma non ti ho chiesto questo mi serviva quest'altro..."

 

Ho solo spiegato quanto fosse importante per me l'ottimizzazione nel mio lavoro, ho dedicato anni in questo su 3DS Max, non ho mensionato nessuno dei miei lavori e ne quello che faccio per vivere, non so spiegarmi come questo possa sembrare arroganza...

 

Michele di fatti lo ha capito e mi ha ringraziato per questo, e sono felice di aver conosciuto una persona come lui, mentre mi spiace vedere che tu hai utilizzato una discussione come questa, nella quale richiedo aiuto a chi ne sa più di me proprio perchè conosco bene i miei limiti, per insultare gratuitamente in questo modo.

 

Dammi dell'arrogante se vuoi, se pensi questo di me senza neanche conoscermi non credo che servano altre parole, ma non credo che puoi giudicare o no se il mio è un ringraziamento sincero verso Michele.

 

Vedo che sei un moderatore, sentiti libero di bloccare la discussione se vuoi o di mettermi fuori dal forum, io ho solo chiesto aiuto a chi in questo ha più esperienza di me, non volevo sembrare arrogante, non credo di averlo fatto e credevo che un forum dove confrontarmi con persone gentili e più qualificate di me servisse anche a questo, ma la tua reazione mi ha confuso.

 

Michele spero che hai capito quanto fosse sincero il mio ringraziamento.

 

Chiudo qui e lascio spazio nel forum a cio per cui è stato creato.

 

Grazie a entrambi

Share this post


Link to post
Share on other sites

@Ax station, rimanendo nella discussione, la seconda soluzione adottata ti è utile? 

 

P.S: a volte leggere non è come parlare, quindi il caro e vecchio amico @zatta 3d ha semplicemente frainteso la risposta e null'altro. Non è da lui azzannare il primo che capita fidati, anzi è sempre pieno zeppo di aiuti e consigli 😉 

Share this post


Link to post
Share on other sites
46 minuti fa, Ax station ha scritto:

Caro Zatta, tutta la spiegazione che ho dato prima, serviva soltanto per spiegare a Michele quale era il motivo per cui non mi era possibile utilizzare il suo script nonostante fosse un ottimo lavoro da me apprezzatissimo.

 

Un altro avrebbe detto "grazie ma non ti ho chiesto questo mi serviva quest'altro..."

 

Ho solo spiegato quanto fosse importante per me l'ottimizzazione nel mio lavoro, ho dedicato anni in questo su 3DS Max, non ho mensionato nessuno dei miei lavori e ne quello che faccio per vivere, non so spiegarmi come questo possa sembrare arroganza...

 

Michele di fatti lo ha capito e mi ha ringraziato per questo, e sono felice di aver conosciuto una persona come lui, mentre mi spiace vedere che tu hai utilizzato una discussione come questa, nella quale richiedo aiuto a chi ne sa più di me proprio perchè conosco bene i miei limiti, per insultare gratuitamente in questo modo.

 

Dammi dell'arrogante se vuoi, se pensi questo di me senza neanche conoscermi non credo che servano altre parole, ma non credo che puoi giudicare o no se il mio è un ringraziamento sincero verso Michele.

 

Vedo che sei un moderatore, sentiti libero di bloccare la discussione se vuoi o di mettermi fuori dal forum, io ho solo chiesto aiuto a chi in questo ha più esperienza di me, non volevo sembrare arrogante, non credo di averlo fatto e credevo che un forum dove confrontarmi con persone gentili e più qualificate di me servisse anche a questo, ma la tua reazione mi ha confuso.

 

Michele spero che hai capito quanto fosse sincero il mio ringraziamento.

 

Chiudo qui e lascio spazio nel forum a cio per cui è stato creato.

 

Grazie a entrambi

infatti, si è vero sono moderatore, chi mi conosce nel forum sa benissimo che aiuto nel limite del possibile tutti quanti in un ambito  più specifico che è dedicato all'hardware (ed in generale)!

non voglio assolutamente far saltar fuori polemiche e men che meno bloccare questa discussione, non ha proprio senso bloccarla!

solo, che da quel che ho visto, mi hai dato l'impressione descritta sopra!!! meglio che non sia così e ti faccio le mie scuse!!!! hai dedicato del tempo a scrivere e ne comprendo il significato!

per capirci meglio: i non ti ho insultato!

è un argomento interessante e può servire ad altri utenti!


Edited by zatta 3d

Share this post


Link to post
Share on other sites

Ciao ragazzi scusate se non ho risposto prima, non sono un musone è che non avevo ancora avuto modo di accendere il pc. Ho provato le nuove righe e funzionano alla grande, adesso mi disegno le icone da bravo psicopatico quale sono...

 

In effetti quando ho fatto tutto il discorsone dell'ottimizzazione c'era dell'autoironia, spiegare tutte quelle cose del mio metodo di lavoro in genere mi fa sembrare un matto, lo dicono anche i miei colleghi, credevo che mi avreste preso per scemo anche voi ma va bene così perchè un po lo so di essere scemo su ste cose, non credevo di sembrare uno che vuole fare il professore ma in questo ormai ci siamo chiariti 😁

 

Ad ogni modo, visto che è saltato fuori che sono anche un insegnante, e non dico altro senno vengo frainteso 😜, volevo dirvi che ho sempre indirizzato i miei ragazzi su questo portale perchè l'ho sempre considerato un ottimo strumento di confronto e crescita professionale e frequentato da professionisti, solo che da oggi dirò loro di stare attenti a zatta 😂 🤣

 

Scherzo grazie ancora 😉

Share this post


Link to post
Share on other sites
Il 4/11/2019 at 22:05 , Michele71 ha scritto:

Ok. Sotto ti metto lo script base per crearti i pulsanti nella toolsbar; Il "cuore" di tutto è "setKnotType" la quale determina il tipo di knot impostato.

Scusa Michele, quando ho trascinato le tue righe sulla toolbar funizionava bene, poi ho provato a riunire tutto in un unico script assegnando il nome e la categoria dove devono comparire cosi da avere tutto in ordine tanto per assecondare il mio disturbo mentale ma mi da errore.

 

Ti copio di seguito il risultato, potresti dirmi cosa ho sbagliato?

 

macroScript Vertex_Bezier_Corner
category:"Ax Keys"
Buttontext:"Vertex_Bezier_Corner"
tooltip:"Vertex_Bezier_Corner"
try(
Global spl = selection[1]

for s = 1 to (numsplines spl) do
        (
            gks = getKnotSelection spl s
        for k in gks do 
            (
                setKnotType spl s k #BezierCorner
            )
        )
updateshape spl
    )catch()

macroScript Vertex_Bezier
category:"Ax Keys"
Buttontext:"Vertex_Bezier"
tooltip:"Vertex_Bezier"
try(
Global spl = selection[1]

for s = 1 to (numsplines spl) do
        (
            gks = getKnotSelection spl s
        for k in gks do 
            (
                setKnotType spl s k #Bezier
            )
        )
updateshape spl
    )catch()

macroScript Vertex_Corner
category:"Ax Keys"
Buttontext:"Vertex_Corner"
tooltip:"Vertex_Corner"
try(
Global spl = selection[1]

for s = 1 to (numsplines spl) do
        (
            gks = getKnotSelection spl s
        for k in gks do 
            (
                setKnotType spl s k #Corner
            )
        )
updateshape spl
    )catch()

macroScript Vertex_Smooth
category:"Ax Keys"
Buttontext:"Vertex_Smooth"
tooltip:"Vertex_Smooth"
try(
Global spl = selection[1]

for s = 1 to (numsplines spl) do
        (
            gks = getKnotSelection spl s
        for k in gks do 
            (
                setKnotType spl s k #smooth
            )
        )
updateshape spl
    )catch()

 

P.S. queste righe in realtà sono la contiunuzazione del mio script che racchiude tutti imiei tasti rapidi, non ti ho messo le righe precedenti perchè non credo che siano quelle il problema, nel senso credo che se le tue righe le agiiungo a questo script esistente o ne creo uno appositamente per questo non credo sia quello il problema, ma non capendo una sega di programmazione ti faccio presente anche questo

Share this post


Link to post
Share on other sites

E' un errore di digitazione; Praticamente manca una parentesi "(" al Try()catch() Controlla, in sostanza, se tutte le parentesi sono scritte. Try()catch permette di NON segnalare errori bypassando lo script. Questo perché, ad esempio, se tu non hai una spline selezionata e avvi lo script, ti da errore in debugger (e altro ancora). Quindi per evitare di scrivere uno script con molteplici fattori di errore e ridurlo all'osso, o impostato il Try()catch(). Ricontrolla il tutto e vedi cosa manca...

Share this post


Link to post
Share on other sites

Ho controllato le parentesi, ce ne sono tante aperte quante tante chiuse, se è questo che intendi. è strano perche le stesse righe trascinate sulla toolbar mi fa comparire un pulsante e funiìzionano, di fatti mi ritrovo uno script chiamato "DragAndDrop_Macro1" nella cartella nascosta AppData\Local eccc Usermacro\...

 

Se invece lo trascino dentro sotto forma di script con quelle 4 righe iniziali che ho aggiunto per metterli nella mia catogoria mi da questo errore...

Share this post


Link to post
Share on other sites

Ok Ho risolto! ho scoperto che quando trascinavo le tue righe nella toolbar creava in automatico un ulteriore parentesi all'inizio e una alla fine, le ho aggiunte anche al mio script e ora funziona 🎉

Share this post


Link to post
Share on other sites

Molto belle e funzionali alla vista! Comunque ti capisco molto bene quando parli di ottimizzazione del lavoro; nel mio piccolo, per alcune cose, sono maniacale anche io 🙂  Ottimo lavoro

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...