Estrarre una mesh da una esistente

Buongiorno ,
oggi ho questo problema:

Ho fatto un piccolo script che prende la mesh
estrae la lista delle facce ( ad es 100 facce)
estrae la lista dei facevertex
estrae la lista delle normali delle facce
estrae la lista dei vertici della mesh

per ogni faccia esamina la normale
se corrisponde ad una certa condizione appende i facevertex di quella faccia ad una nuova lista

alla fine del ciclo ho una nuova lista di facevertex con un numero di elementi inferiore a quella di partenza (ad es 20 facce)

costruisco una nuova mesh con la nuovaface vertex e la lista originaria di vertici.

La mesh viene creata , ha tutte le caratteristiche che servono , ma se estraggo i vertici ottengo anche i punti ormai inutili.

dovrei fare la mesh con una ridotta lista di vertici, cioe’ dovrei ridurre, riordinare la vertexlist indicizzando nuovamente i vertici delle singole faccette. Non ho la piu’ pallida idea di come fare .
Qualche suggerimento?

qui sotto lo script:

import Rhino as rh
import rhinoscriptsyntax as rs
import System
import time
import clr
import scriptcontext as sc

rs.AddLayer(“A”,(255,100,100))
rs.AddLayer(“B”,(0,255,200))

mesh_id = rs.GetObject ( message=" seleziona la MESH", filter=32)

rs.EnableRedraw(enable=False)

i=0

faces = rs.MeshFaces(mesh_id, False)
faceVerts = rs.MeshFaceVertices( mesh_id )
vertices= rs.MeshVertices(mesh_id)
normals = rs.MeshFaceNormals(mesh_id)

newfaces=
newfaceverts=
newfaceverts2=

if normals:
for vector in normals:
if vector[2] < 0.05 and vector[2] > -0.05: # REGOLA x NORMALE
newfaces.append(faces[i])
newfaceverts.append(faceVerts[i])
else:
newfaceverts2.append(faceVerts[i])
i=i+1

M1=rs.AddMesh( vertices, newfaceverts ) # le facce che rispondono alla regola
obj=rs.FirstObject()
rs.ObjectLayer( obj, “A” )

M2=rs.AddMesh( vertices, newfaceverts2 ) #le altre
obj=rs.FirstObject()
rs.ObjectLayer( obj, “B” )

rs.EnableRedraw(enable=True)

m0= “il lay ‘A’ contiene la mesh estratta, il lay ‘B’ il resto \n”
m1= " ogni mesh contiene la lista di ‘Tutti’ i vertici della mesh originale \n"
rs.MessageBox(m1+m2)

Grazie
Franco

In specifico, cosa stai cercando di fare?

Se devi semplicemente “filtrare” le facce di una mesh, vedi l’esempio che avevo fatto nell’altro thread:

Lo avevi guardato?

Lascia stare i vertici, tienili tutti. Lavora sulle facce e alla fine, e solo alla fine, fai un .CullUnused() e hai finito.