re
oula non attention !
Déjà il faut savoir si on parle de File Xref ou de object XRef. Ca se ressemble mais c'est pas tout à fait la même chose. Je pensais que tu parlais d'object XRef et manifestement il s'agit de File XRef. Quoi qu'il en soit il y a une faute dans ton script. Tu ne peux pas écrire :
Code :
- UpdateXRef $CurrXRef
|
car CurrXRef n'est pas un noeud de la scène, c'est une variable déclarée un peu plus haut dans ton script qui contient un pointeur vers un fileXRef. Donc le $ est inutile. Admettons que l'objet Box01 soit un objectXRef, là tu peux écrire
avec le dollar donc...
Ensuite deuxième chose si tu ne sélectionnes pas d'XRef ce script ne peut pas marcher. Or justement tu ne souhaites pas en sélectionner directement mais plutôt des boites. Il faut donc rajouter une méthode pour décrire cet aspect des choses. Pour cela il faut créer une boucle récurrente qui va collecter la sélection et tous ses enfants dans XRefBind avant de transmettre ce dernier au reste du code :
Code :
- XRefBind = GetCurrentSelection()
- /*******************************************/
- i = 1
- While i <= XRefBind.count do
- (
- Local Children = XRefBind.Children
- if Children[1] != undefined do (For C in Children do AppendIfUnique XRefBind C)
- i += 1
- )
- /*******************************************/
- XrefCount = xrefs.getXRefFileCount()
|
Donc là c'est très simple, place le code entre les étoiles entre la déclaration de [i]XRefBind et celle de XRefCount. Voici ce que je fais :
Je crée une boucle while qui inspecte chaque noeud contenu dans XRefBind et ajoute a ce même XRefBind tous les enfants de ces noeuds. XRefBind grossit, la boucle while se poursuit jusqu'à avoir épuisé toutes les générations (les enfants des enfants des enfants etc...)
XRefBind ressort de là rempli avec non seulement la sélection mais tous les enfants de la sélection si ils existent évidemment. Je te laisserai t'assurer que le script ne crash pas si la sélection est vide...
Pour finir note que la méthode "AppendIfUnique" ne fonctionne que sous max 2008/09. Si tu as une version antérieur il faut que tu télécharges et installe les extensions AVG pour maxscript par Borislav Petrov. C'est gratuit.
++