Script per creare lista dei nomi

Ciao a tutti, sono un vecchio utente che torna dopo anni un po’ arrugginito
qualcuno ricorda o conosce un vecchio script che forniva una lista dei nomi di tutti gli oggetti con nome nel file e la loro quantità?
Ringrazio e saluto tutti i vecchi amici

Mauro

Ciao Mauro !
Piacere di ritrovarti sul ‘Forum’ …
che pare sia una variante moderna e scomoda del vecchio NG … :wink:

Quanto allo script … non me lo ricordo, ma si puo’ provare a imbastire (senza nessuna garanzia purtroppo …
e anche senza fretta perche’ sono impegnato con … scala e pennelli … non so se rendo l’idea :wink: )

Come deve funzionare ?
Cioe’ come selezioni i file da controllare ?
Lo script deve occuparsi solo del nome degli oggetti, giusto ?
Output ‘normale’ nella command area o altro ?
Ah, ancora una cosa: Rhino 5 ?

Ciao !

Grazie della disponibilità Emilio, l’idea della scala e pennelli mi è
chiara, i miei non si sono ancora asciugati.
Lo script mi serve per ottenere un testo incolonnato, che riporta un
elenco dei nomi di tutti gli oggetti (ai quali si deve assegnare un
nome nelle proprietà) e la loro quantità, scritto nelle note, o dove
vuoi, che poi con un copia-incolla si possa riportare in un foglio di
calcolo per creare quasi automaticamente una distinta base.
Uso Rhino 5 64 bit
Ancora grazie e buon lavoro
Mauro

Mauro, qui c’e’ un primo tentativo.

import rhinoscriptsyntax as rs

def main():
  gids = rs.AllObjects()
  dick = dict( [] )
  for gid in gids:
    nam = rs.ObjectName( gid )
    if nam:
      if nam in dick:
        dick[ nam ] += 1
      else:
        dick[ nam ] = 1
  tlis = []
  for key in dick:
    tlis.append( '%s\t%d' % ( key, dick[ key ] ) )
  tlis.sort()
  tex = '\n'.join( tlis )
  rs.Notes( tex )
  rs.Command( '_Notes' )

main()

siamo sulla strada giusta ? :slight_smile:

Ciao

Grazie Emilio, ma non gira, mi dice che non conosce il comando def, io l’ho inserito in un pulsante, ma non funziona nemmeno da riga di comando.
Forse sbaglio io, come lo devo usare?
Buon Ferragosto

Io di solito bel pulsante scrivo

-EditPythonScript <NOME_DEL_FILE>

EDIT:
Ho sbagliato, e’

-RunPythonScript <NOME-DEL-FILE>

Scusa la confusione …
/EDIT

Ma affinche’ Rhino trovi il file, devi anche dirgli dove lo hai salvato
(a meno di scrivere il percorso completo anziche’ solo il nome del file nel pulsante)

Da Rhino esegui il comando EditPythonScript, poi …
-> Menu Tools => Options…
E aggiungi il percorso a: Module Search Paths

Spero si capisca qualcosa …
Quello che capisco io e’ che McNeel su queste cose sta sbracando alla grande …
Ho cercato una pagina Web dove spieghi come usare uno script … io non trovo niente …
Come al solito siamo ridotti al passsa-parola …

Ah, per provare lo script velocemente puoi anche caricarlo in EditPythonScript ed eseguirlo da li’.

Se ci sono problemi, fai un fischio … :slight_smile:

Scusa Emilio, premetto che io di scripts e linguaggio Python non so niente, cosa intendi con nome del file? io lancio lo script dal file che ho aperto e che ha tutti gli oggetti col proprio nome.
Lo script che mi hai mandato inizia con questa riga: import rhinoscriptsyntax as rs
lanciandolo così mi si apre la finestra per importare un file, saltandola mi dice che il comando def è unknow e non succede niente.

Eh … scusa Mauro … abitudini da vecchio (e) scriptomane …
Voglio dire che io solitamente salvo lo script in un file e poi nel pulsante, dopo

-RunPythonScript

scrivo il nome del file in cui ho salvato lo script.

Aspetta un momento, dovrebbe esserci modo anche di inserire direttamente lo script nel pulsante … ma adesso non mi ricordo bene …
Faccio una prova ( visto che la documentazione non esiste )

OK, dovrebbe essere cosi’: copia semplicemente quanto segue nel pulsante … e dovrebbe funzionare … speriamo :slight_smile:

-RunPythonScript (
import rhinoscriptsyntax as rs

def main():
  gids = rs.AllObjects()
  dick = dict( [] )
  for gid in gids:
    nam = rs.ObjectName( gid )
    if nam:
      if nam in dick:
        dick[ nam ] += 1
      else:
        dick[ nam ] = 1
  tlis = []
  for key in dick:
    tlis.append( '%s\t%d' % ( key, dick[ key ] ) )
  tlis.sort()
  tex = '\n'.join( tlis )
  rs.Notes( tex )
  rs.Command( '_Notes' )

main()
)
1 Mi Piace

Grande Emilio
grazie infinite, funziona perfettamente

Ancora buon ferragosto

Bene !

Buon ferragosto anche a te !

Scusami,so di esagerare, ma esiste la possibilità di un separatore fra il testo e la quantità, che nel copia incolla li metta in due colonne diverse del foglio di calcolo?
Comunque non perderci troppo tempo, che va benissimo anche così.
Grazie ancora Mauro

Hehe … non so praticamente niente di Hexcel … ho provato a separare i due valori con un tab.
Dimmi come va formattato l’output.
Cosa devo mettere al posto del tab ?
(Salvo imprevisti, la risolviamo molto in fretta :slight_smile: )

Mi intrometto. Bisogna salvare su file di testo esempio txt e quindi importare da Excel con la tabulazione.
Ciao

1 Mi Piace

Penso vada bene ; (punto e virgola)

Grazie dell’intromissione :slight_smile:
buona giornata

Purtroppo sono in vacanza e quindi posso contribuire solo a parole, ma con un paio di righe di codice in più si può aprire Excel e riempire direttamente i campi.
Il codice di trova nel wiki McNeel per gli sviluppatori.
Ho trovato quello per rs:
http://developer.rhino3d.com/samples/rhinoscript/export_block_count_to_excel/

Ciao Mauro

Qui ho sostituito il tab con il punto e virgola

-RunPythonScript (
import rhinoscriptsyntax as rs

def main():
  gids = rs.AllObjects()
  dick = dict( [] )
  for gid in gids:
    nam = rs.ObjectName( gid )
    if nam:
      if nam in dick:
        dick[ nam ] += 1
      else:
        dick[ nam ] = 1
  tlis = []
  for key in dick:
    tlis.append( '%s;%d' % ( key, dick[ key ] ) )
  tlis.sort()
  tex = '\n'.join( tlis )
  rs.Notes( tex )
  rs.Command( '_Notes' )

main()
)

Funziona ?

Ciao Riccardo, she piacere sentirti, sarebbe ideale, anche se io nel pc ho Open Office, penso vada bene lo stesso.
Grazie e buone vacanze
Mauro

Grazie Emilio, lo potrò provare nel pomeriggio, ti faccio sapere

Emilio è perfetto grazie ancora e buona giornata