Semplice strumento di selezione


#1

Ciao

Non so se questo si possa fare con i comandi standard o se sia disponibile uno script.
Io non ho trovato niente di pronto e mi sono arrangiato con un semplice script.

Lo scopo e’ affinare il set di oggetti selezionati.
Cioe’ scegliere gli oggetti desiderati solo tra gli oggetti gia’ selezionati in precedenza.
Potrei dire una selezione in due tempi.
Credo sia un’esigenza un po’ particolare, ma incorro spesso in una situazione che la richiede.

Casomai servisse a qualcun’altro…
E tanto per rinverdire una vecchia usanza del NG, qui c’e’ lo script

import rhinoscriptsyntax as rs
import Rhino
import scriptcontext

def LockedObjects():
  settings = Rhino.DocObjects.ObjectEnumeratorSettings()
  settings.NormalObjects = False
  settings.LockedObjects = True
  settings.HiddenObjects = False
  settings.IncludeLights = True
  settings.IncludeGrips = True
  settings.ReferenceObjects = True
  items = scriptcontext.doc.Objects.GetObjectList(settings)
  return [item.Id for item in items]

def main():
  lob = LockedObjects()
  sel = rs.SelectedObjects()
  rs.Command( '_Invert' )
  rs.Command( '_Lock' )
  obs = rs.GetObjects( 'Select' )
  rs.EnableRedraw( False )
  rs.Command( '_Unlock' )
  if lob:
    rs.LockObjects( lob )
  rs.SelectObjects( obs )
  rs.EnableRedraw( True )
  print( 'Selected objects: %d => %d' % ( len( sel ), len( obs ) ) )

main()

Grazie


#2

Gli oggetti di “prima selezione” vengono tutti da stesso layer o sono sparpagliati fra layer diversi?


#3

E’ indifferente.
Lo script lavora partendo da un set di oggetti gia’ selezionati. Come non importa.