Blender Italia forums Supporto Utenti Supporto Addon e tools Script o Addon "Select objects based on size"

Status della richiesta: Non è una richiesta di supporto

Taggato: 

  • Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 2 anni, 1 mese fa da Dago.
Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • Dago
    Partecipante
    • Blenderista
    • Post sul Forum 17
    @thekne
    #758038

    Ciao ragazzi ho un piccolo problemino, mi hanno girato un lavoro tecnico una macchina industriale di 76 metri e devo realizzare un video,il problema è che vorrei selezionare gli oggetti piu piccoli di 5 cm (tipo viti cuscinetti a sfera bulloni dadi ecc ecc) inutili e pesanti per la gestione del file.

    Ho utilizzato con la 2.79 questo script che funziona alla grande:
    https://blender.stackexchange.com/questions/49693/select-objects-based-on-size
    Qualcuno sa se esiste un alternativa addon o il modo di fare funzionare lo script anche sulla 2.8?

    Grazie a tutti per le eventuali risposte!!
    lo script è il seguente:

    import bpy, bmesh

    bm = bmesh.new()
    bm.from_mesh( bpy.context.object.data )

    ref_obj_name = bpy.context.object.name
    reference_volume = float( bm.calc_volume() )
    ref_vol_scale = ( ‘%.0E’ % reference_volume )[-3:]

    # Select all the objects in the scene that have a similar volume (of the same scale)
    for o in [ m for m in bpy.context.scene.objects if m.type == ‘MESH’ ]:
    if o.name == ref_obj_name: continue

    bm = bmesh.new()
    bm.from_mesh( o.data )

    vol = float( bm.calc_volume() )
    vol_scale = ( ‘%.0E’ % vol )[-3:]

    if vol_scale == ref_vol_scale:
    o.select = True

    Harvester
    Partecipante
    @harvester
    #758044

    Più che un add-on mi pare uno script da avviare all’interno di Blender dopo aver caricato lo script come file di testo. Apri il file nel text editor di Blender quindi premi il pulsante Run. Sarebbe bene avviare Blender da console o tenere aperta la console di Blender per vedere eventuali messaggi di errore visto che le API della versione 2.8 sono cambiate rispetto alla 2.7.

    Dago
    Partecipante
    • Blenderista
    • Post sul Forum 17
    @thekne
    #758046

    Non ho detto che è un addon, ho specificato che è uno script, che funziona benissimo con la 2.79 ma non con la 2.8.
    La sintassi è sicuramente cambiata dalla 2.79 alla 2.8 vi riporto qui i messaggi di errore.
    (ripeto lo script funziona sulla 2.79 la mia è solo una richiesta di conversione del codice per la 2.8 domanda rivolta agli espertoni di codice)

    Riporto qui in basso i messaggi di errore:

    Dago
    Partecipante
    • Blenderista
    • Post sul Forum 17
    @thekne
    #760340

    Ho avuto risposta dal mitico Alfonso Annarumma (Anfeo) su Facebook:
    con poche righe di comando è riuscito a tradurre lo script sopra descritto e da questa richiesta capisci l’importanza di conoscere un minimo di programmazione python, dove con poche righe di comando riesci a risolvere problematiche che potrebbero farti perdere molto tempo.

    import bpy

    context = bpy.context
    data = bpy.data
    coll = context.collection

    sel = context.object
    vol = sel.dimensions.x * sel.dimensions.y * sel.dimensions.z
    for ob in coll.all_objects:
    vol_ob = ob.dimensions.x * ob.dimensions.y * ob.dimensions.z
    if vol_ob*0.5 <= vol:
    ob.select_set(True)

    personalmente ho fatto una piccola modifica dopo if vol_ob*0.5 <= vol: dove moltiplicando per 0.5 selezioni oggetti minori o uguali a quello selezionato con una sorta di “margine di selezione” potete cambiare i valori o omettere anche il *0.5 oppure se volete inserire i simboli come:
    < solo oggetti minori di quello selezionato
    > solo oggetti maggiori di quello selezionato
    <= minori e uguali
    >= maggiori e uguali
    == uguali a quello selezionato

    qui sotto lo script:

    https://m.facebook.com/groups/134106979989778?view=permalink&id=2426682427398877
    Blender 3D Italia

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.