Possibile Conflitto

from Rhino import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Input import *
from Rhino.Commands import *
from scriptcontext import doc
import rhinoscriptsyntax as rs
 
def RunCommand():
    rs, obj_ref = RhinoGet.GetOneObject("Select Curve", False, ObjectType.Curve)

ma non credete che indicare rs per rhinoscriptsyntax
che per rs, obj_ref = RhinoGet. . . possa dare problemi?

Basta fare la prova.
Qui non funziona, cioe’ rs viene sovrascritto, quindi non serve piu’ per usare rhinoscriptsyntax.
Dove hai preso quello script ? :slight_smile:

from Rhino import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Input import *
from Rhino.Commands import *
from scriptcontext import doc
import rhinoscriptsyntax as rs
 
def RunCommand():
    rs, obj_ref = RhinoGet.GetOneObject("Select Curve", False, ObjectType.Curve)
    if rs != Result.Success:
        return rs
    curve = obj_ref.Curve()
    if curve == None:
        return Result.Nothing
 
    rs, point = RhinoGet.GetPoint("Select Side", False)
    if rs != Result.Success:
        return rs
    if point == Point3d.Unset:
        return Result.Nothing
 
    curves = curve.Offset(point, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)
 
    for offset-curve in curves:
        doc.Objects.AddCurve(offset-curve)
 
    doc.Views.Redraw()
    return Result.Success
 
if __name__ == "__main__":
    RunCommand()

era appunto quello che pensavo

forse sarà stata copiata la parte dove si importano le librerie,
ma senza sapere o non ci si è fatto caso, di cosa si stava facendo,
oltre al fatto che non servisse nemmeno, come anche pure altre librerie
bisogna fare anche una modifica altrimenti il codice non viene eseguito proprio.

OK, ma la mia curiosita’ era sapere DOVE hai preso lo script, non vederlo listato. :wink:

Comunque si’, e’ vero, dato che rhinoscriptsyntax non viene usata, lo script funziona ugualmente.

è il codice per gli offset negli esempi di RCommon,
al momento non ho il link perché lo avevo salvato.

2 Mi Piace

:+1:

EDIT:
Trovato !
Rhino - Offset Curve (rhino3d.com)
:smile:

1 Mi Piace

a titolo di curiosità ecco cosa mi ha risposto chatgtp:
Questo script sembra essere scritto in Python per Rhino. Ecco alcune correzioni che potresti apportare per farlo funzionare correttamente:

  1. La prima riga dovrebbe essere “import Rhino”, invece di “from Rhino import *”.
  2. La seconda riga dovrebbe essere “import rhinoscriptsyntax as rs”, invece di “import Rhino.DocObjects import *”.
  3. Nella riga 14, la variabile “rs” è già stata utilizzata come alias per “rhinoscriptsyntax”. Potresti rinominare la variabile “rs” in “result”.
  4. Nella riga 22, la variabile “offset-curve” contiene un trattino (-) che causa un errore. Potresti rinominare la variabile in “offset_curve”.

Ecco il codice modificato:

import Rhino from Rhino.DocObjects import * from Rhino.Geometry import * from Rhino.Input import * from Rhino.Commands import * from scriptcontext import doc import rhinoscriptsyntax as rs

def RunCommand(): result, obj_ref = RhinoGet.GetOneObject(“Select Curve”, False, ObjectType.Curve) if result != Result.Success: return result curve = obj_ref.Curve() if curve == None: return Result.Nothing

rustCopy code

result, point = RhinoGet.GetPoint("Select Side", False)
if result != Result.Success:
    return result
if point == Point3d.Unset:
    return Result.Nothing

curves = curve.Offset(point, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)

for offset_curve in curves:
    doc.Objects.AddCurve(offset_curve)

doc.Views.Redraw()
return Result.Success

if name == “main”: RunCommand()

Spero che queste correzioni ti aiutino a far funzionare il tuo script senza problemi!

1 Mi Piace

infatti era proprio la modifica che avevo accennato alla fine del mio elenco

quella dell’alias rs era invece per l’appunto l’argomento della discussione

già con la prima modifica il codice funziona, mentre per la seconda in questo caso come già detto
si potrebbe sorvolare essendo che alias rs per indicare la libreria non viene mai utilizzata

@Luigi_Pinelli grazie per la condivisione sui risultati della IA

ps per il punto 3 cambiare rs con result non so l’esperto Emilio
cosa ne pensi, ma personalmente non credo che sia una buona idea. . .

Scusa Salvio, cos’altro vorresti fare se non cambiare il nome ? :grinning:

cambiare il nome ma non in result :grin:

Scusa ancora … perche’ non va bene result ?

credo che non dovrebbe dare problemi, ma potrebbe creare confusione

    if gs.CommandResult() != Rhino.Commands.Result.Success:
        return gs.CommandResult()

è vero che in questo caso la R è maiuscola ma credo che sarebbe meglio evitare

tenendo conto che spesso si trova anche la forma contratta Result.Success

poi ognuno ha le proprie preferenze anche in base alla proprio esperienza e conoscenze

edit:

@Luigi_Pinelli mi domandavo, se si potesse sottolineare questa cosa alla IA (mi sembra di si)
cioè alias/variabili simili o che differiscono soltanto della lettera iniziale maiuscola e minuscola. . .

1 Mi Piace

Ah, OK.
Se pensi che possa confonderti, fai bene a evitare.
E’ giusto che ognuno usi i nomi con cui si trova meglio. :grinning:

ma credo che sia anche la cosa migliore nel caso poi bisogna confrontarsi/dialogare con altri
se no finisce che bisogna chiarire resul quello minusco oppure Result maiuscolo
la variabile creata, oppure quella del metodo Command ecc un casino

1 Mi Piace

ho rifatto la domanda:

Exported with AIPRM Premium https://www.aiprm.com by luisnui@yahoo.it on 21/3/2023, 13:04:22

User:
potresti correggere un script per rhino 7?


ChatGPT:
Certo, posso aiutarti a correggere uno script per Rhino 7. Di che si tratta? Per favore inviami il codice o il file di script e spiegami qual è il problema che vuoi risolvere.


User:
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Input import *
from Rhino.Commands import *
from scriptcontext import doc
import rhinoscriptsyntax as rs

def RunCommand():
rs, obj_ref = RhinoGet.GetOneObject(“Select Curve”, False, ObjectType.Curve)
if rs != Result.Success:
return rs
curve = obj_ref.Curve()
if curve == None:
return Result.Nothing

rs, point = RhinoGet.GetPoint("Select Side", False)
if rs != Result.Success:
    return rs
if point == Point3d.Unset:
    return Result.Nothing

curves = curve.Offset(point, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)

for offset-curve in curves:
    doc.Objects.AddCurve(offset-curve)

doc.Views.Redraw()
return Result.Success

if name == “main”:
RunCommand()


ChatGPT:
Certo, ecco una versione corretta dello script in Python per Rhino 7:
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Input import *
from Rhino.Commands import *
from scriptcontext import doc
import rhinoscriptsyntax as rs
def RunCommand():
rc, obj_ref = RhinoGet.GetOneObject(“Seleziona curva”, False, ObjectType.Curve)
if rc != Result.Success:
return rc
curve = obj_ref.Curve()
if curve == None:
return Result.Nothing

rust
Copy code
rc, point = RhinoGet.GetPoint("Seleziona lato", False)
if rc != Result.Success:
    return rc
if point == Point3d.Unset:
    return Result.Nothing

curves = curve.Offset(point, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)

for offset_curve in curves:
    doc.Objects.AddCurve(offset_curve)

doc.Views.Redraw()
return Result.Success

if name == “main”:
RunCommand()
Ho apportato le seguenti modifiche:

  • Ho tradotto le stringhe di input in italiano.
  • Ho cambiato il nome della variabile "rs" in "rc" in modo da evitare conflitti con la libreria "rhinoscriptsyntax".
  • Ho corretto l'uso della sintassi "for" nella parte finale dello script, sostituendo "-curve" con "_curve".
  • Ho aggiunto alcune righe per garantire che lo script funzioni correttamente in Rhino 7.

  • User:
    potresti rinominare le variabili con nomi diversi in modo che non possano confondersi?


    ChatGPT:
    Certo, ecco una versione dello script in cui ho rinominato le variabili in modo che siano più esplicative e non possano confondersi:
    from Rhino import *
    from Rhino.DocObjects import *
    from Rhino.Geometry import *
    from Rhino.Input import *
    from Rhino.Commands import *
    from scriptcontext import doc
    import rhinoscriptsyntax as rs
    def EseguiComando():
    rc, obj_ref = RhinoGet.GetOneObject(“Seleziona curva”, False, ObjectType.Curve)
    if rc != Result.Success:
    return rc
    curva = obj_ref.Curve()
    if curva == None:
    return Result.Nothing

    rust
    Copy code
    rc, punto = RhinoGet.GetPoint("Seleziona lato", False)
    if rc != Result.Success:
        return rc
    if punto == Point3d.Unset:
        return Result.Nothing
    
    curve_offset = curva.Offset(punto, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)
    
    for offset_curva in curve_offset:
        doc.Objects.AddCurve(offset_curva)
    
    doc.Views.Redraw()
    return Result.Success
    

    if name == “main”:
    EseguiComando()
    Ho rinominato le variabili “rs” in “rc”, “curve” in “curva”, “point” in “punto” e “offset-curve” in “offset_curva”. Questi nomi dovrebbero essere più esplicativi e meno soggetti a confusione con altri nomi già presenti nelle librerie utilizzate dallo script.

    ci sei J.A.R.V.I.S. “a volte devi rischiare l’incertezza, per avere una certezza”

    considerando che su queste tecnologie, ci fanno vedere solo ciò che vogliono loro,
    e che in genere ci dovrebbe essere un gap di almeno 20 anni, direi che ci siamo quasi. . .

    mmmm interessante, non ha considerato che il codice è stato scritto in inglese
    ma essendo che, la domanda è stata fatta in lingua italiana ha rinominato curve in curva e point in punto
    (ovviamente rc al posto di rs era quello che serviva)

    grazie @Luigi_Pinelli

    di niente, ma guarda che chatGPT non è mia!, collegatevi è molto interessante come risponde ai quesiti tecnici anche complessi riguardo rhino, autocad, ed ai vari software di render come keyshot e vray, per non parlare della progettazione nautica, il mio campo, provare per credere!