Superfici Trimmate

Ciao , cè un metodo per poter visualizzare ad esempio su una polisuperficie composta da tipo 400 superfici quante di queste sono tagliate e poter sapere quali sono tutte rapidamente tramite un comando , oppure vanno analizzate una ad una ? Oppure cè un metodo tramite script ?
CIao Grazie

Se esplodi la poli-superficie puoi usare _SelTrimmedSrf e _SelUntrimmedSrf

2 Mi Piace

Grazie , mille per il consiglio, piu tardi provo .
Ciao Grazie buon lavoro .

CIao ,ho provato ed è ottimo mi evidenzia tutte le superfici trimmate in modo poter valutare , infatti mi ricordo mi dicesti che le eviti come la peste , infatti mi sembra che spesso quando vengono tagliate siano piu approsimative e nella zona di taglio , cosi cerco di trovare un modo di rifarle piu gradite dal calcolo matematico , sperando di incontrare poi meno imprevisti.

Ciao Grazie

Sicuro che ti abbia detto una cosa del genere? :thinking:
Oramai la memoria mi sta abbandonando, ma credo avessi parlato della forzatura della unione dei bordi.
Non ho nulla contro le superfici trimmate, anzi. :smiley:

1 Mi Piace

Stavo già cominciando a preoccuparmi di questo “razzismo” verso le superfici trimmate… sono tutte uguali le superfici, non dobbiamo fare distinzioni di genere!!! :face_with_hand_over_mouth:

4 Mi Piace

:smile:

1 Mi Piace

Ci mancherebbe. :innocent:

Scherzi a parte, direi che senza le superfici trimmate sarebbe complicato rappresentare svariate geometrie in maniera efficiente.

2 Mi Piace

Se non erro Rhino considera trimmate tutte le superfici, non tratta diversamente trimmate e intere.
Siamo noi che a volte troviamo piu’ comodo avere superfici trimmate e altre volte averle intere.

Ciao , Si hai ragione il discorso era sui raccordi non sulle superfici la mia memoria va indietro :sweat_smile: :sweat_smile:
incollo qui sotto la vecchia risposta :rofl:

Se va ha le gambe. :wink:
Io di solito evito la forzatura dell’unione dei bordi come la peste bubbonica.
Lavoro con modelli con migliaia di micro-bordi e alla fine ti assicuro che si paga.

Discorso sull unione dei bordi .

Ciao Grazie

Allora si va di trimmamento , gooo , molto utile e fantastico il metodo .
Ciao Grazie

1 Mi Piace

Perdonami ma spesso trimmo e ho l impressione che rimanga piu spazio fra la superficie e il bordo allora ho collegato a memoria cose non corrette, mi sono posto il dubbio a questo punto sbagliato non era per razzismo :rofl: ma solamente Lucio per poca esperienza .
Ciao e grazie

1 Mi Piace

Tagli con una curva o una superficie ?
E rimane dello spazio tra il bordo della trimmata e l’oggetto usato per trimmare ?
In genere non dovrebbe, entro i limiti della tolleranza …
Se succede conviene esaminare la situazione, eventualmente postando sul forum …

Ciao

1 Mi Piace

Ciao Claudio, “più spazio” rispetto a cosa?
Intendi che la superficie tagliata eccede i limiti di taglio??
Sarebbe una cosa stranissima … e pericolosissima. :thinking:

Si concordo, diciamo che ha volte mi sembra discosti dal bordo con cui è stata creata , non so se è una questione di tolleranza solo visiva , per Rhino va bene e l oggetto viene unito senza nessun problema e dice valido .
Appena mi succede e se mi succede al limite lo posto, ma se mi dite voi che la cosa è anomala sicuramente è un problema mio di qualche errore personale.
Indubbiamente devo imparare a creare delle curve ottimali specialmente nei cambi di direzione ( devo ancora capire il tuo quesito curva :disappointed_relieved:) , ma ci sono circostanze molto scomode spesso se hai vincoli di passaggi obbligati.
Ciao Grazie

Mi viene in mente che se zoomi “troppo” potresti vedere delle difformità, che sono solo visuali … stai ingrandendo l’infinitesimo.

Se non ci fossero saremmo tutti provetti modellatori 3D. :wink:

2 Mi Piace

Penso che siano buone possibilità che la causa sia questa.

Voi siete sicuramente professionisti , alla fine se fosse troppo facile non sarebbe nemmeno interessante , godiamoci la liberta di ragionarci sbagliando che porta alla crescita.
Ciao Grazie

Non so cosa possa fare Rhino 8, ma tempo addietro, data appunto la difficolta’ di rilevare rapidamente le distanze, usavo uno script.

Nel caso serva, e’ qui:
Permette di misurare la distanza da un oggetto (curva, superficie, … ) di diversi punti.
Basta cliccare un nuovo punto e Rhino mostra la nuova distanza.
Con Enter terminiamo il ciclo.

EDIT:
Scusate, ricopio il file, prima non era completo
/ EDIT

import Rhino
import scriptcontext

def main():

  drawline = False
  showline = True
  surfonly = False
  curvonly = False
  while True:
    scriptcontext.escape_test()
    gob = Rhino.Input.Custom.GetObject()
    gob.AcceptNothing( True )
    gob.SetCommandPrompt( 'Object for distance ?' )
    if surfonly:
      gob.GeometryFilter = Rhino.DocObjects.ObjectType.Surface
    elif curvonly:
      gob.GeometryFilter = Rhino.DocObjects.ObjectType.Curve
    sliind, sliopt = gob.AddOptionToggle( 'ShowLine',
        Rhino.Input.Custom.OptionToggle( showline, 'No', 'Yes' ) )
    linind, linopt = gob.AddOptionToggle( 'DrawLine',
        Rhino.Input.Custom.OptionToggle( drawline, 'No', 'Yes' ) )
    surind, suropt = gob.AddOptionToggle( 'GetSurface',
        Rhino.Input.Custom.OptionToggle( surfonly, 'No', 'Yes' ) )
    curind, curopt = gob.AddOptionToggle( 'GetCurve',
        Rhino.Input.Custom.OptionToggle( curvonly, 'No', 'Yes' ) )
    gob.Get()
    res = gob.Result()
    if res == Rhino.Input.GetResult.Option:
      opind = gob.OptionIndex()
      if opind == sliind:
        showline = sliopt.CurrentValue
      elif opind == linind:
        drawline = linopt.CurrentValue
      elif opind == surind:
        surfonly = suropt.CurrentValue
      elif opind == curind:
        curvonly = curopt.CurrentValue
    elif res == Rhino.Input.GetResult.Nothing:
      return
    elif res == Rhino.Input.GetResult.Object:
      obref = gob.Object( 0 )
      break

  linid = None
  dotid = None
  while True:
    scriptcontext.escape_test()

    res, pnt = Rhino.Input.RhinoGet.GetPoint( 'Point for distance ?', True )
    if res != Rhino.Commands.Result.Success:
      break
    if pnt == Rhino.Geometry.Point3d.Unset:
      break
    obpt = None
    # surface
    sur = obref.Surface()
    if sur:
      ok, uu, vv = sur.ClosestPoint( pnt )
      if not ok:
        print 'Unable to find point'
        break
      obpt = sur.PointAt( uu, vv )
    else:
      # curve
      cur = obref.Curve()
      if cur:
        ok, uu = cur.ClosestPoint( pnt )
        if not ok:
          print 'Unable to find point'
          break
        obpt = cur.PointAt( uu )
      else:
        # point
        point = obref.Point()
        if point:
          obpt = point.Location
        else:
          # brep
          rep = obref.Brep()
          if rep:
            obpt = rep.ClosestPoint( pnt )
            if obpt == Rhino.Geometry.Point.Unset:
              print 'Unable to find point'
              break
          else:
            # mesh
            mesh = obref.Mesh()
            if mesh:
              obpt = mesh.ClosestPoint( pnt )
              if obpt == Rhino.Geometry.Point.Unset:
                print 'Unable to find point'
                break

    vec = obpt - pnt
    dotp = ( obpt + pnt ) / 2
    dotp.Z += 10
    rows = []
    rows.append( 'DIST %.4f' % vec.Length )
    rows.append( 'DX %.4f' % vec.X )
    rows.append( 'DY %.4f' % vec.Y )
    rows.append( 'DZ %.4f' % vec.Z )
    text = '\n'.join( rows )
    rows.append( ' -- PICKED: DX %.4f' % pnt.X )
    rows.append( 'DY %.4f' % pnt.Y )
    rows.append( 'DZ %.4f' % pnt.Z )
    rows.append( ' -- CLOSEST: DX %.4f' % obpt.X )
    rows.append( 'DY %.4f' % obpt.Y )
    rows.append( 'DZ %.4f' % obpt.Z )
    info = ', '.join( rows )
    print info
    if dotid:
      Rhino.RhinoDoc.ActiveDoc.Objects.Delete( dotid, True )
    if linid:
      Rhino.RhinoDoc.ActiveDoc.Objects.Delete( linid, True )
    dotid = Rhino.RhinoDoc.ActiveDoc.Objects.AddTextDot( text, dotp )
    if drawline:
      Rhino.RhinoDoc.ActiveDoc.Objects.AddLine( obpt, pnt )
      Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
    elif showline:
      linid = Rhino.RhinoDoc.ActiveDoc.Objects.AddLine( obpt, pnt )
      Rhino.RhinoDoc.ActiveDoc.Views.Redraw()

  if dotid:
    Rhino.RhinoDoc.ActiveDoc.Objects.Delete( dotid, True )
  if linid:
    Rhino.RhinoDoc.ActiveDoc.Objects.Delete( linid, True )
  Rhino.RhinoDoc.ActiveDoc.Views.Redraw()

main()



Ciao

2 Mi Piace

Scusa ma non è che per caso queste difformità sul bordo le vedi in modalità ombreggiata?

1 Mi Piace

Grazie dell aiuto, lo provo.
Ciao

1 Mi Piace