Leggere campi note da script o con rscommand

Mi aiutate a capire come posso leggere i campi note da script o da riga comando?
quello che leggo ad esempio con il comando _Notes e il contenuto di un TextField?

Dim txtNotes
txtNotes = Rhino.Notes
MsgBox txtNotes

ti serviva questo?

No, questo serve per leggere le note generiche inserite nel file 3DM, io cerco proprio la lettura degli oggetti testo.
Cioè creo un oggetto testo, inserisco del testo che voglio leggere dall’esterno.

Ciao GV

Forse … rs.TextObjectText() ?

Ciao Emilio,
forse si, mi sembra la funzione giusta ma mi ritorna sempre Null, non è che hai un esempio completo?

Questo sembra che funzioni … almeno qui :slight_smile:

gv1.3dm (22,8 KB)

import rhinoscriptsyntax as rs

obj = rs.GetObject( 'Text object ?' )
text = rs.TextObjectText( obj )
print( '<%s>' % text )

Macchè diamine, mi legge sempre un valore nullo.
riusciresti a farmi un rvb che posso caricare ? forse sono io che sbaglio qualche definizione di oggetto o di variabile
ma non capisco cosa

Strano …

Se aprendo il file allegato ed eseguendo lo script da EditPythonScript non funziona …
Sorry … non so dove guardare …

Riavviare Rhino ?
File geometry.py danneggiato ?

In quello che ho io, TextObjectText() e’ cosi’ …


def TextObjectText(object_id, text=None):
    """Returns or modifies the text string of a text object.
    Parameters:
      object_id = the identifier of a text object
      text [opt] = a new text string
    Returns:
      if text is not specified, the current string value if successful
      if text is specified, the previous string value if successful
      None if not successful, or on error
    """
    annotation = rhutil.coercegeometry(object_id, True)
    if not isinstance(annotation, Rhino.Geometry.TextEntity):
        return scriptcontext.errorhandler()
    rc = annotation.Text
    if text:
        if not isinstance(text, str): text = str(text)
        annotation.Text = text
        id = rhutil.coerceguid(object_id, True)
        scriptcontext.doc.Objects.Replace(id, annotation)
        scriptcontext.doc.Views.Redraw()
    return rc

Purtroppo uso una versione di Rhino 5 vecchiotta, per cui la tua probabilmente e’ differente … anche se non dovrebbero esserci differenze …

Ci sono altri script che non funzioano ?

EDIT

… con una certa fatica sono riuscito a tradurlo in VBS … Non mi ricordo niente di quel vecchiume … :laughing:

gv1.rvb (114 Byte)

Ok, l’esempio funziona sbagliavo io a lanciarlo perchè per deformazione professionale vado sempre in VB :slight_smile:
caricato in Python script funziona!!!
il mio problema però è che Python non lo conosco e dal mio software uso vbscript oppure il command Rhino
se ti chiedo di scrivermi due righe per auto selezionare tutti gli oggetti riconoscendo gli oggetti Text mi spari?:slight_smile:

Ciao Mario,
dalla guida di RhinoScript (VBScript):

TextObjectText

Returns or modifies the text string of a text object. Text objects can be created using Rhino’s Text command.

Syntax

Rhino.TextObjectText (strObject [, strText])

Parameters

strObject

Required. String. The identifier of the object.

strText

Optional. String. A new character or text string.

Returns

String

If a new text string is not specified, the current string value if successful.

String

If a new text string is specified, the previous string value if successful.

Null

If not successful, or on error.

Example

Dim strObject

strObject = Rhino.GetObject(“Select text”)

If Rhino.IsText(strObject) Then

Rhino.TextObjectText strObject, “Rhino”

End If

Ciao

Non montarti la testa … c’e’ una luuuuunga lista di gente a cui sparerei volentieri prima di te … :laughing:

Poi … se tieni conto che io sono parecchio tonto e mi spieghi per filo e per segno cosa ti serve, poi ci provo … :slight_smile:

Intanto: vuoi VBS o PY ?
‘auto selezionare’ che significa ?
‘riconoscimento’ che significa ?
… insomma, hai capito l’antifona …SPIEGATI ! :wink:

Ciao Emi, credo che non si fosse accorto che esiste il metodo TextObjectText in vbscript…
Con quello dovrebbe risolvere senza tanti tribolamenti, credo.
:wink:

PS che poi ho visto che avevi messo nell’esempio .rvb in fondo al tuo messaggio… quindi ha anche l’esempio tuo oltre a quello della guida…

< RISPOSTA PER LUCIO >

Vediamo … :slight_smile:
Se serve ancora qualcosa in VBS … ti lascio volentieri l’onore …:laughing:
… io ormai non me lo ricordo piu’ … :slight_smile:

ho visto l’esempio ed è ok, ma in vbscript non riesco a farlo funzionare (bho?) per questo cerco di dirottare verso Py che però non conosco, in realtà devo fare una cosa semplice: leggere un disegno 3DM qualunque, e leggere di tutti gli oggetti testo (se ce ne sono) il contenuto.
py non lo conosco, magari è la volta buona che lo imparo, vediamo altrimenti tenetevi pronti che torno all’attacco :slight_smile:

Se ti puo’ aiutare, il mini-script allegato prima ( gv1.rvb ) da me funziona.

Se anche tu inizi a studiare Python … potremmo quasi metter su una classe … beh, diciamo un gruppo di studio autogestito (fa tanto '68 … :laughing: )

Anche Salvio (0904) che ti ha risposto sopra lo sta studiando, almeno credo.
Poi c’e’ Lucio in perenne stand-by … :smile: … che magari e’ piu’ avanti di noi. :wink:

Bene, avremo modo di scervellarci insieme sull’argomento. :smiley:

Python è un prurito che si fa sempre più frequente visto che può essere usato anche per Arduino & C.
solo che non ho voglia di smanettare per impararmi da solo anche questo (come faccio da 30anni) se ci fosse qualcuno che fa un corso, possibilmente online perchè no secondo me sarebbe molto utile!

Hmmm … non saprei …

Google ne trova molti, ad esempio c’e’ anche il corso di Google stessa

Personalmente non conosco corsi da consigliare … sorry

Non so se RMA fa qualcosa, bisognerebbe chiedere a @giuseppe

Credo che abbiano fatto in passato dei corsi ‘live’, ma non so se ne sono previsti altri …

Se vuoi, potresti chiedere sul forum USA … non sei certo il primo rhinofilo che impara Python … :wink:

C’è l’ing. Carlotto Vittorio che fa corsi di Python…
Non so se li faccia on-line; si potrebbe provare a chiederglielo
@vittorio

Grazie, molto gentile… a buon rendere! :wink:

Ho fatto varie prove e, forse, non fai le giuste verifiche dopo la selezione.
SelectObjects ti da il filtro per selezionare le “annotazioni” (512) senza fare distinzione tra Text Objects e quotature.
Vedi l’esempio sotto (funziona anche se fai una selezione a finestra di tutte le quotature di un disegno).

Option Explicit
’Script written by Lucio Zadra
’Script copyrighted by Zadra Giuseppe
’Script version martedì 3 ottobre 2017 11:20:07

Call Main()
Sub Main()
Dim testo, arrobj,i
arrobj = Rhino.GetObjects(“Seleziona gli oggetti testo”, 512, VbTrue)
If Isarray(arrobj) Then
i = 1
For Each Testo In ArrObj
If Rhino.IsText(testo) Then
Rhino.MessageBox “Testo n°” & Cstr(i) & " = " & Cstr(Rhino.TextObjectText(Testo))
i = i + 1
End If
Next
End If
End Sub