Script per cambio di Tolleranza assoluta

Buongiorno e Buon Anno!
premesso che di scripting non capisco molto, avrei bisogno di cambiare la tolleranza assoluta più volte nella stessa sessione di lavoro (es: da 0.001 a 0.1 e viceversa), senza passare dalle Opzioni.
E’ possibile tramite script?

Grazie, per l’attenzione

Ciao Riccardo, Buon Anno.

Potresti usare una cosa del genere:

! _-DocumentProperties _Units _AbsoluteTolerance
.1 _EnterEnd

Se non sono indiscreto, come mai questa necessità “pericolosa”? :smiley:

Ciao

aggiungi un pusante …

Di seguito il codice da copiare.

! -_RunScript (
Dim Tol:Tol = rhino.UnitAbsoluteTolerance()
Dim CurTol:CurTol = "Unit toll. corrente:" & Tol
Dim TolOpt:TolOpt = array(1, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001)
Dim Res:Res = Rhino.ListBox(TolOpt, CurTol)
If Not isnull(Res) Then
rhino.UnitAbsoluteTolerance CDbl(Res)
End If
)

Sergio

1 Mi Piace

Ciumbia!
Direi decisamente meglio. :ok_hand:

1 Mi Piace

Ciao Riccardo.

Aggiungo la mia soluzione alle possibilita’ …
E’ semplicemente lo script, fatto alla veloce come sempre, che usavo al lavoro. :blush:

c5-settol.py (2,1 KB)

Consente di alzare o abbassare la tolleranza cliccando sulle relative opzioni, per poi confermare con Enter quando la tolleranza e’ quella che vuoi.
Ci sono anche alcuni valori da cliccare direttamente.

Ad ogni passo la tolleranza cambia grossomodo (molto grosso :wink: ) di un fattore 2.
Personalmente un fattore 10 mi sembra eccessivo …

Buon anno ! :slight_smile:

import Rhino
import scriptcontext

def bigger( tolr ):
  fac = 1.0
  while tolr < 0.9:
    tolr *= 10
    fac *= 10
  while tolr > 9.0:
    tolr /= 10
    fac /= 10
  if tolr  < 1.5:
    return ( 2.0 / fac )
  elif tolr < 3.5:
    return ( 5.0 / fac )
  else:
    return ( 10.0 / fac)

def smaller( tolr ):
  fac = 1.0
  while tolr < 0.9:
    tolr *= 10
    fac *= 10
  while tolr > 9.0:
    tolr /= 10
    fac /= 10
  if tolr  < 1.5:
    return ( 0.5 / fac )
  elif tolr < 3.5:
    return ( 1.0 / fac )
  else:
    return ( 2.0 / fac)

def main():
  tolr = Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance
  while True:
    scriptcontext.escape_test()
    gnu = Rhino.Input.Custom.GetNumber()
    pro = 'Tolerance ? ( currently %.4f ) [ Enter => OK ]' % tolr
    gnu.SetCommandPrompt( pro )
    gnu.AcceptNothing( True )
    extind = gnu.AddOption( 'Exit' )
    bigind = gnu.AddOption( 'Larger' )
    smaind = gnu.AddOption( 'Smaller' )
    milind = gnu.AddOption( 'Tolerance0_001' )
    ce2ind = gnu.AddOption( 'Tolerance0_02' )
    hamind = gnu.AddOption( 'Tolerance0_5' )
    gnu.Get()
    res = gnu.Result()
    if res == Rhino.Input.GetResult.Option:
      opind = gnu.OptionIndex()
      if opind == extind:
        print 'Tolerance = %.4f' % Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance
        return
      elif opind == bigind:
        tolr = bigger( tolr )
      elif opind == smaind:
        tolr = smaller( tolr )
      elif opind == milind:
        tolr = 0.001
        break
      elif opind == ce2ind:
        tolr = 0.02
        break
      elif opind == hamind:
        tolr = 0.5
        break
    elif res == Rhino.Input.GetResult.Number:
      tolr = gnu.Number()
    elif res == Rhino.Input.GetResult.Nothing:
      Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance = tolr
      print 'Tolerance = %.4f' % Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance
      return
  Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance = tolr
  print 'Tolerance = %.4f' % Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance

main()
2 Mi Piace

Bello anche il tuo script, Emilio.
Peccato dover lavorare nella barra dei comandi, sai che non mi piace molto. :innocent:

Ciao Fabio !

Hehe … lo so, lo so. :wink:
I veri professionisti fanno tutto da tastiera, almeno e’ quello che dicono sul forum USA …
e se non sono produttivi loro … :neutral_face: :smile:

Io purtroppo preferisco il mouse, per il CAD la tastiera la userei solo per i nomi dei layer. :grinning:

Ma nemmeno io trovo comodo andare a cliccare sulle opzioni …
E’ una soluzione di compromesso: un solo pulsante che consenta, tramite opzioni, di fare piu’ cose.
L’alternativa, piu’ comoda come utilizzo, di N pulsanti, non era praticabile … piu’ che altro per mancanza di spazio.

… Ci si arrabatta … :confused: :smile:

2 Mi Piace

Grazie Fabio… ottimo e veloce.
Non serve a me e concordo che sia un azzardo!
Serve a un mio cliente che usa questo metodo per “riparare” e chiudere solidi che solido non sono.
In pratica esplode le polisrf con Bordi aperti e li unisce a tolleranze da brivido per poi riportare la sessione di lavoro a tolleranza umana.
Siccome lo deve fare su una miriade di piccole superfici, con un automatismo risparmia parecchio lavoro

Grazie Sergio!
questa è un’altra soluzione ottima e versatile.

Una modellazione di qualità insomma. :joy:

1 Mi Piace

Grazie anche a te Emi!
questo è più sofistico… lo provo senz’altro appena ho un pò di tempo

1 Mi Piace

Quanto a rischio, Gagarin era un dilettante a confronto…

1 Mi Piace

Mi è venuto un brivido giù per la schiena… :laughing:

Capito, va … tocca fare l’avvocato del diavolo anche ‘sta volta …
( O il pensionato rimba rompiballe, va be’ … fate voi )
:confused:
Bisogna vedere … il contesto.
Di che lavoro si tratta, da dove arrivao i solidi~non-solidi, quale risultato serve ecc. ecc. :slight_smile:

Poi certo, puo’ darsi, e sara’ probabile, che il problema sia solo la scarsa competenza di chi disegna.
C’e’ sempre da decidere comunque se Rhino sia utilizzabile solo dai maestri o meno …
:wink:

Peones di Rhino … alla riscossa ! :grinning:

:smile: :smile: :smile:

Pare funzioni.
Quindi … il fine giustifica i mezzi. :innocent:

Ciao Fabio !

Pensavo a una cosa un po’ diversa … :thinking:
Piu’ … per ogni fine si utilizzano i mezzi adatti.

E per fine intendo il tipo di lavoro … nel senso:
Se e’ oreficeria, OK, sapete voi come bisogna lavorare, sto zitto.
Ma, non sapendo di cosa si tratta, potrebbe essere un tipo di lavoro diverso, in ogni caso vorrebbe essere un discorso in generale. :slight_smile:
Se questo sia bene o no (usare Rhino per altre cose) ditemelo voi, io non discuto.
Constato solo, come ho avuto occasione di dire tempo fa anche sul forum USA, che i rivenditori di Rhino, almeno alcuni (saranno le classiche mele marce, non so … ) non si fanno problemi riguardo al ramo in cui lavori.
Se tu vuoi comprare una licenza, sono felici di dartela.
Non ti chiedono prima se lo userai esclusivamente per oggetti estetici e solidi perfetti.
E tu a tua volta sei felice di prendere Rhino, perche’ con una spesa modesta, almeno per una azienda, hai a disposizione uno strumento forse non specializzato per il tuo lavoro, ma che comunque, soprattutto se non hai troppa fretta, ti consente di andare avanti abbastanza agevolmente.
E se tu disegni cose non estetiche e senza grandi pretese di precisione (che poi e’ un concetto relativo), se tra due superfici hai un gap di 0.1 mm, non cambia proprio niente.
Cambierebbe invece per la tua azienda se tu ci mettessi una settimana a disegnare, senza buchi, quello che, accettando qualche buco, puoi disegnare in un giorno.
Ed e’ quello che si fa normalmente con i vari SolidWorks ecc.
Ragazzi, ho visto cose, disegnate con questi CAD meccanici, che voi umani … :smile:
Non manifold come norma, superfici su superfici, intersezioni a gogo, diverse versioni di una certa forma tutte insieme, superfici mancanti e superfici replicate N volte, superfici di costruzione e superfici che non c’entrano niente, buchi dove non ci vanno e superfici chiuse dove serve il buco, ecc. ecc. …
E a volte il solido e’ pure chiuso. :smile:
Comunque un CAM degno di questo nome se ne frega di solidi, manifold e compagnia. Le superfici che gli dai lui te le lavora, che siano collegate o meno, con buchi o meno.
E in genere prima di arrivare al CAM si fanno diverse versioni che utilizzi solo per qualche brutale ombreggiatura da mostrare al cliente, che spesso gia’ ci capisce poco niente di suo … :smile:
Questo volendo porta al discorso sulla qualita’ delle superfici, che spesso compare nei forum.
Certo, siamo d’accordo che se tu hai la possibilita’ di disegnare da zero le tue superfici, e’ molto meglio farlo con attenzione, in modo che il comando Rhino lavori bene e dia un buon risultato.
Ma qualcuno ha aggiunto a Rhino i comandi di importazione per diversi formati, piu’ o meno standard.
E la gente, se ne ha bisogno, li usa.
Quindi puo’ ritrovarsi tra le mani superfici di ogni tipo, non per colpa propria, ma semplicemente perche’ fa un lavoro che funziona cosi’, deve importare quello che gli passa il cliente.
Per cui deve cercare il modo di utilizzare quello che c’e’ … se possibile.
A volte e’ praticamente impossibile e bisogna ridisegnare da capo tutto o quasi … :confused:
Altre volte ti tocca lavorare con superfici che Rhino digerisce poco e aggiustarti in qualche modo, abbastanza a calci e pugni :smile:, anche se il risultato non e’ perfetto.
E lasciamo stare il discorso sulle capacita’ individuali di utilizzare Rhino, che da buono strumento versatile e flessibile quale e’ (e non solo per questo), e’ piuttosto ostico, almeno all’inizio. :slight_smile:

Ho sentito Riccardo venerdì e, tra le altre cose, abbiamo parlato anche di questo.
Spoilero. :joy:
Si tratta di geometrie che devono essere mandate a macchine a cinque assi che però non le gradiscono per i difetti spiegati.
Vengono fornite da terzi e il software per gestirle è ovviamente Rhino.
Il sistema che ha spiegato Riccardo, con mio e suo stupore, pare risolva il problema e quindi ben venga.

Non sono tutti così ovviamente, ma sappiamo che così gira il mondo, che vuoi farci?

Quindi non vanno molto per il sottile?
Leggevo, forse qui, che un programma tra i più quotati non dava determinati problemi nel chiudere le superfici per il semplice fatto che le deformava alla bisogna … preferisco il Rhino. :smiley:

Direi che il caso è proprio questo. :+1:

Se fosse una persona direi che non ha un bel carattere. :joy:

Devo dire che personalmente sono contento cosi’.
Anche noi (vecchia ditta defunta) avevamo preso Rhino e per noi andava bene, basta non avere una fretta del boia.
E conosco altre ditte che usano Rhino per stampi, modelli, attrezzature e se lo fanno suppongo si trovino bene. :slight_smile:
Ovviamente parlo di chi compra la licenza, trascuro chi va di craccato …
Io sono per la tolleranza (parlo di quella umana, non meccanica :smile: ), almeno in questo caso … :smile:
Se poi invece prendesse il sopravvento la teoria della purezza, per cui Rhino lo puo’ usare solo chi e’ un artista e ha superato gli esami di modellazione a pieni voti … OK.
Non sono fatti miei … non piu’, per fortuna. :slight_smile:
E nel caso ovviamente mi adatterei, ma senza essere molto convinto … :grinning:

Si’, ho presente.
Era capitato anche a me che il cliente volesse un file di un certo formato … ma solo con solidi chiusi.
E ti garantisco che, anche partendo a disegnare da zero, se l’oggetto in questione ha una forma complessa, che magari richiede fillet su fillet, superfici che finiscono a punta o anche offset di forme complesse e cose del genere … puo’ essere un incubo.
Ti inventi le cose piu’ strane pur di riuscire a chiudere quel maledetto coso e poter esportare il solido.
Non fa mai piacere dire al tuo capo che non sei riuscito a fare 'sta cosa … :unamused:
… O che prevedi che ci metterai altri 2 o 3 giorni. :smile:

Io la troverei confusionaria … :grinning:

Certo, sono anche io per il “vivi e lascia vivere”, ci mancherebbe.
E poi gli “artisti” avranno iniziato pure loro, e non penso che siano già nati maghi della modellazione. :wink:
Certo una modellazione di qualità non mi disturba.

Io metto sul piatto anche le booleane.
Quando ti trovi ad avere a che fare con migliaia di piccole superfici può capitare che si debba tribolare un po’, soprattutto quando l’operazione dà degli artefatti nascosti in qualche angolo remoto del modello. :zipper_mouth_face:

Che se non sbaglio di solito vuol dire che la bestia ha perso il controllo dei bordi …
:smile:

1 Mi Piace