# RCommon StringTable.SetString in Py

**URL:** <https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610>\
**Category:** Scripting e Programmazione\
**Created:** [5 Dicembre 2023, 3:09pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610 "2023-12-05T15:09:44Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 3:09pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/1 "2023-12-05T15:09:44Z")

</div>

![immagine](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/3/f/3fe5bf0a06aeff8e53c42d11ef885a0ad0463240.png)

provato sia con, che senza impostare static al Metodo

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 3:47pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/2 "2023-12-05T15:47:09Z")

</div>

Hmmm … erano piu’ chiari i messaggi di errore di C# … 😄

Sembra che si lamenti di un metodo con un solo parametro stringa …  
ma non lo vedo.  
O forse vuol dire qualcos’altro.

In ogni caso, scritto cosi’ SetString lo usi come un metodo statico, ma non e’ statico. 😐

> [@0904](#):
>
> provato sia con, che senza impostare static al Metodo

Non so perche’ tu stia usando una classe con un metodo.  
Se vuoi usala pure, ma non e’ necessario.

EDIT:

Aspetta … sono arrugginito anche con Python … 😄

Dato che tu non scrivi un oggetto prima del nome del metodo,  
penso che Python interpreti la prima stringa come **self** , quindi come vero e prorio parametro resta solo la seconda stringa.  
E lui si lamenta giustamente che un metodo con quel nome che richieda solo una stringa non esiste. 🙂

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 4:21pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/3 "2023-12-05T16:21:48Z")

</div>

> [@emilio](#):
>
> Non so perche’ tu stia usando una classe con un metodo.  
> Se vuoi usala pure, ma non e’ necessario.

ieri avevo capito che era necessario un metodo statico,  
quindi per tale requisito credo sia obbligatoria la classe.

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 4:36pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/4 "2023-12-05T16:36:37Z")

</div>

> [@0904](#):
>
> ieri avevo capito che era necessario un metodo statico,

Hmmm … non so da dove sia venuto fuori.  
Anzi, ti avevo consigliato di fare come nell’esempio da te riportato: evitare di scrivere una classe  
per non complicare inutilmente le cose.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 4:41pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/5 "2023-12-05T16:41:01Z")

</div>

![immagine](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/4/1/415a502146fb3bfc1cec6261bea234895d051091.png)

ok più basilare di questo credo sia impossibile 😆 😆

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 4:59pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/6 "2023-12-05T16:59:54Z")

</div>

> [@0904](#):
>
> più basilare di questo credo sia impossibile

Ottimo ! 😀

Ma e’ sempre scritto allo stesso modo …

> [@emilio](#):
>
> scritto cosi’ SetString lo usi come un metodo statico, ma non e’ statico

> [@emilio](#):
>
> Dato che tu non scrivi un oggetto prima del nome del metodo,  
> penso che Python interpreti la prima stringa come **self** , quindi come vero e prorio parametro resta solo la seconda stringa.  
> E lui si lamenta giustamente che un metodo con quel nome che richieda solo una stringa non esiste.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 5:03pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/7 "2023-12-05T17:03:39Z")

</div>

mi sa che era meglio C# ahahahah

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 5:05pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/8 "2023-12-05T17:05:03Z")

</div>

Se vuoi usare RhinoCommon, non e’ cambiando linguaggio che riesci a evitare la OOP …  
😉 😄

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 5:11pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/9 "2023-12-05T17:11:31Z")

</div>

ma non era per questo ahahahah

🤣 🤣 😂

una volta aperto il capitolo; in C# io ero rimasto che un oggetto veniva creato con la parola **new**  
quindi se ieri si era detto che in questo caso non serviva, dedotto che self in Py non servisse. . .

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 5:15pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/10 "2023-12-05T17:15:35Z")

</div>

> [@0904](#):
>
> ero rimasto che un oggetto veniva creato con la parola **new**  
> quindi se ieri si era detto che in questo caso non serviva

Giusto.  
**new** la usi per creare oggetti.  
Ma qui non devi creare nessun oggetto.

Se vuoi collegare delle informazioni al documento, dovrai usare questo oggetto:

> **[RhinoDoc.Strings Property](https://mcneel.github.io/rhinocommon-api-docs/api/RhinoCommon/html/P_Rhino_RhinoDoc_Strings.htm)**
>
> Collection of document user data strings in this document

**usare** , non **creare**.  
Quell’oggetto esiste gia’, lo crea Rhino.  
Tu lo devi solo utilizzare per salvarci (e poi leggere) le stringhe che vuoi.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 5:48pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/11 "2023-12-05T17:48:53Z")

</div>

ormai mi sembra di stare in un film di Batman mentre parla con l’enigmista. Emilio, di la verità, tra gli studi che hai fatto, hai preso anche un dottorato in torture cinesi. alla fine chi vincerà la goccia o la roccia 🤣 🤣

non voglio immaginare le risate che ti stai facendo ad ogni mia risposta ahahahah  
e non voglio nemmeno pensare a ciò che dicono chi legge i nostri post  
secondo me sembriamo Totò e Peppino ahahahah

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 5:59pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/12 "2023-12-05T17:59:36Z")

</div>

> [@0904](#):
>
> Batman mentre parla con l’enigmista

Haha … e’ che ho visto da esperienze passate che serve a poco ribadire la stessa idea piu’ e piu’ volte.  
Tanto se non si capisce non si capisce. 😄  
Meglio non insistere troppo.  
Se la cosa interessa ci saranno domande precise.

Ad esempio, e’ da ieri che dico come fare:

> [@Sticky in C#](https://it.discourse.mcneel.com/t/sticky-in-c/5604/18):
>
> doc.Strings.SetString( … );

Ma pare non interessi. 😉  
Allora mi limito a rispondere alle domande e a spiegare i messaggi di errore.

> [@0904](#):
>
> secondo me sembriamo Totò e Peppino

Be’ … e’ gia’ un bel sembrare !  
😀

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 9:36pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/13 "2023-12-05T21:36:51Z")

</div>

> [@emilio](#):
>
> > [@0904](#):
> >
> > più basilare di questo credo sia impossibile
> 
> Ottimo ! 😀
> 
> Ma e’ sempre scritto allo stesso modo …
> 
> > [@emilio](#):
> >
> > scritto cosi’ SetString lo usi come un metodo statico, ma non e’ statico
> 
> Dato che tu non scrivi un oggetto prima del nome del metodo,  
> penso che Python interpreti la prima stringa come **self** , quindi come vero e prorio parametro resta solo la seconda stringa.  
> E lui si lamenta giustamente che un metodo con quel nome che richieda solo una stringa non esiste.

qui sembra che mi inviti a scrivere il metodo utilizzando la parola **self**  
sarebbe utile capire a priori quando in un metodo ha bisogno di un oggetto o no…

> [@Sticky in C#](https://it.discourse.mcneel.com/t/sticky-in-c/5604/18):
>
> > [@Sticky in C#](https://it.discourse.mcneel.com/t/sticky-in-c/5604/18):
> >
> > doc.Strings.SetString( … );
> 
> Ma pare non interessi. 😉  
> Allora mi limito a rispondere alle domande e a spiegare i messaggi di errore.

ormai ho postato tutti i messaggi che Rhino poteva mandare ahahahah

vabbè io qui mi arrendo, game over nei giochi anni 80

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 9:38pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/14 "2023-12-05T21:38:56Z")

</div>

dopo vedo in questo 3d cosa spiegano e provo

> **[Feature Request : Rhino Document Guid / ID](https://discourse.mcneel.com/t/feature-request-rhino-document-guid-id/29955/10?u=0904)**
>
> Hi Dale, Many thanks for the plug-in sample you posted above. It works well when copy-pasting the document, as the newly created one keeps the same GUID as the original one. Is there anyway to fix this in the script? Below, I tried to overwrite...

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Dicembre 2023, 9:49pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/15 "2023-12-05T21:49:33Z")

</div>

con questo sembri che funzioni:

> **[Document user text](https://discourse.mcneel.com/t/document-user-text/95227/2?u=0904)**
>
> Hi @eric.bunn, Yes you can. Here is a Python example: import Rhino import scriptcontext as sc key = "test" value = "Hello Rhino!" sc.doc.Strings.SetString(key, value) rc = sc.doc.Strings.GetValue(key) print rc new\_value = "Hello Eric!"...

ma usa: `import scriptcontext as sc`

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Dicembre 2023, 10:03pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/16 "2023-12-05T22:03:53Z")

</div>

> [@0904](#):
>
> qui sembra che mi inviti a scrivere il metodo utilizzando la parola **self**

Non dico di scrivere **self** , ma

> [@emilio](#):
>
> Dato che tu non scrivi **un oggetto** prima del nome del metodo … ecc. ecc.

C’e’ scritto **un oggetto** , non **self**.

Voglio dire che Python prende quella stringa come **self** perche’ prima del nome del metodo, anziche’ trovare un oggetto (da considerare come **self** ), lui trova il nome della classe.  
Quindi Python pensa che tu il riferimento all’oggetto (dato che non lo scrivi prima) lo scrivi dopo come primo dei parametri.

Fa parte della flessibilita’ di Python, puoi richiamare quel metodo in piu’ modi …  
C# ti segnalerebbe direttamente l’errore: cioe’ richiami un metodo “di istanza”, diciamo cosi’, col nome della classe, cioe’ come se fosse un metodo statico.

> [@0904](#):
>
> sarebbe utile capire a priori quando in un metodo ha bisogno di un oggetto o no…

Che sarebbe utile non ho alcun dubbio … 😄  
Ne parliamo da giorni … 😀  
Un metodo di istanza (quelli che non dichiari static) richiede un oggetto.  
Un metodo statico richiede la classe.

La regola e’ semplice.  
E, come accennavo, e’ un concetto fondamentale per utilizzare la OOP.  
Se confondi classi con oggetti e relativi metodi diventa tutto piu’ difficile.

> [@0904](#):
>
> mi arrendo

Come dicevo, credo sia solo questione che ragioniamo in modo diverso e non riusciamo a capirci.  
Peccato che finora non abbiano risposto anche altri.  
Ma sono ancora il tempo … 😀

> [@0904](#):
>
> ma usa: `import scriptcontext as sc`

Trattandosi di Python, usa scriptcontext.doc

---

<div class="post-metadata">

**Author:** ![lucio\_zadra](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/lucio_zadra/32/23074_2.png) [@lucio\_zadra](https://it.discourse.mcneel.com/u/lucio_zadra)\
**Post date:** [6 Dicembre 2023, 6:41am UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/17 "2023-12-06T06:41:02Z")

</div>

> [@emilio](#):
>
> Peccato che finora non abbiano risposto anche altri.

Paperoga, ho vinto qualche cossa?  
Ciccio di nonna papera, ho vinto qualche cosssa?  
😂

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [6 Dicembre 2023, 2:14pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/18 "2023-12-06T14:14:22Z")

</div>

> [@lucio\_zadra](#):
>
> ho vinto qualche cossa?

E questo cosa sarebbe ?

😄

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [6 Dicembre 2023, 2:18pm UTC](https://it.discourse.mcneel.com/t/rcommon-stringtable-setstring-in-py/5610/19 "2023-12-06T14:18:48Z")

</div>

> [@emilio](#):
>
> E questo cosa sarebbe ?

[![](https://img.youtube.com/vi/Vfn5_KGQkXU/maxresdefault.jpg "Tutti gli “Ho vinto qualche cosa” di Robertino") ](https://www.youtube.com/watch?v=Vfn5_KGQkXU)

Lucio 😄
