Scriptare selezione multi layer

Ciao Community!

quesito di scripting/programmazione, visto che ancora sono una pippa son sicuro che qualcuno qui dentro ha una soluzione per me.

ho postato anche sul forum internazionale:

L’obbiettivo è riuscire a selezionare una serie di oggetti , all’interno di una serie di layer, andandomi a prendere i nomi dei layer su un file ini che viene generato esternamente.

il file ini è fatto così:

[information]

export_objname = C:\Users\xxxxxx\Documents\Model\Export\2020.09.27_model_test.obj
layer_list = layer01,layer02,layer03,layer03::sublayer01…

idee?

Vedo che Mitch ti ha già dato una risposta.
Tecnicamente la procedura è:

  • Leggo il file .ini (che alla fine è un file di testo)
  • Cerco la riga dove sono specificati i layer
  • Estrapolo dalla riga il nome di ogni singolo layer
  • Controllo la corrispondenza dei layer nella lista letta con quella dei layer presenti nel file aperto
  • Seleziono gli oggetti presenti nei layer corrispondenti alla lista verificata
  • Esporto

Dovrai fare anche una verifica dello stato dei layer (se sono bloccati o spenti) per essere sicuro che lo script riesca a selezionare gli oggetti contenuti negli stessi (sai mai che ti rimane indietro qualche pezzo).

ciao @lucio_zadra !!

I layer son gia sbloccati, è una piccola parte di uno script bello grosso che fa diverse cose , tra cui ripulire il file da oggetti inutili, cancellare eventuali duplicati,fa lo screenshot di eventuali named views salvate dal cliente, etc etc…
Il tutto in automatico, i colleghi hanno un interfaccia a parte, selezionano il file, cliccano start e rhino si apre su una macchina server, fa tutta una serie di script ed esporta in obj, su un drive di rete.
Adesso l’azienda mi ha chiesto di fare in modo di poter estrarre non tutto il modello ma solo una parte , perchè magari alcuni oggetti necessitano di un meshing più denso rispetto a quello che imposto io di base.

credo che la risposta di mitch sia quello che cerco, ma verificherò stasera, al momento sto lavorando su immagini da consegnare stasera! :wink:

1 Mi Piace

aloora per chi fosse interessato ho risolto così:

import Rhino
import scriptcontext
import rhinoscriptsyntax as rs
import System.Guid, System.Drawing.Color

baseName = rs.DocumentName()

iniPath ='C:\\Users\\xxxxxx\\Documents\\EasyPrework\\_ini_files\\' + baseName.replace(".3dm", ".ini")

file = rs.GetSettings(iniPath,'INFORMATION','layers_list')

layers=rs.LayerNames()

for layername in file.split(","):
              if layername in layers:
        rs.ObjectsByLayer(layername,True)

Non male! :slight_smile:

2 Mi Piace