proparjak
20/04/2006, 02h30
Bonjour à tous,
J'ai un petit souci après avoir bien cherché.
N'étant pas une bête en coffee, j'ai pioché de ci, de là, sur les cours de Tengaal ;) , les posts qui se trouvaient sur FC4D (j'ai même gardé les commentaires que j'ai modifié) pour arriver à un code qui fonctionne bien sauf pour une ligne.
Je le livre ici en brut. C'est lors de la duplication d'instance qu'il y a problème.
Les instances créées ont leur champ "objet de référence" désespérément vide et je ne comprends pas pourquoi.
var str, ObjetEnfant, ObjetSuivant, nbPoints, tableau, i, pos, copie, container, ObjetCible;
const var NomCible="final";
main(doc,op)
{
ObjetCible=doc->FindObject(NomCible) ; // on cherche l’objet qui s’appelle final
if (!ObjetCible) return ; //si ObjetCible n’est pas trouvé on sort du programme
//
str="Instance";
ObjetEnfant=op->GetDown(); // on pointe sur le sous-objet de op
ObjetSuivant=ObjetEnfant->GetNext(); // le deuxième sous-objet
if (!ObjetEnfant) return ; // si ObjetEnfant n’existe pas on quitte le programme
if (!ObjetSuivant) return ; // si ObjetEnfant n’existe pas on quitte le programme
//
nbPoints=ObjetEnfant->GetPointCount(); // nombre de points total dans le premier objet enfant
tableau=new(array,nbPoints); // crée un tableau vide de nbPoints valeurs
tableau=ObjetEnfant->GetPoints(); // GetPoints avec un S !
ObjetEnfant->SetPoints(tableau); // fixe la liste de point
//
for (i=0 ;i<nbPoints ;i++) // compteur de 0 à nombre total de points du premier objet par 1 unité
{
pos=tableau[i]; // donne la position du point n° indice
copie=new(InstanceObject); //on crée une instance pour notre 2ème objet
copie->SetName(stradd(str,tostring(i)));
container=copie->GetContainer(); //on accède aux paramètre de cet objet Instance
container->SetData(INSTANCEOBJECT_SOURCE,ObjetSuivant->GetName()); //l'instance pointe sur le nom du deuxième objet
copie->InsertUnder(ObjetCible);
copie->SetContainer(container);
copie->SetPosition(pos);
}
}
A vot'bon coeur pour un peu d'aide, s'il vous plaît, Dieux du Coffee :)
Merci !
J'ai un petit souci après avoir bien cherché.
N'étant pas une bête en coffee, j'ai pioché de ci, de là, sur les cours de Tengaal ;) , les posts qui se trouvaient sur FC4D (j'ai même gardé les commentaires que j'ai modifié) pour arriver à un code qui fonctionne bien sauf pour une ligne.
Je le livre ici en brut. C'est lors de la duplication d'instance qu'il y a problème.
Les instances créées ont leur champ "objet de référence" désespérément vide et je ne comprends pas pourquoi.
var str, ObjetEnfant, ObjetSuivant, nbPoints, tableau, i, pos, copie, container, ObjetCible;
const var NomCible="final";
main(doc,op)
{
ObjetCible=doc->FindObject(NomCible) ; // on cherche l’objet qui s’appelle final
if (!ObjetCible) return ; //si ObjetCible n’est pas trouvé on sort du programme
//
str="Instance";
ObjetEnfant=op->GetDown(); // on pointe sur le sous-objet de op
ObjetSuivant=ObjetEnfant->GetNext(); // le deuxième sous-objet
if (!ObjetEnfant) return ; // si ObjetEnfant n’existe pas on quitte le programme
if (!ObjetSuivant) return ; // si ObjetEnfant n’existe pas on quitte le programme
//
nbPoints=ObjetEnfant->GetPointCount(); // nombre de points total dans le premier objet enfant
tableau=new(array,nbPoints); // crée un tableau vide de nbPoints valeurs
tableau=ObjetEnfant->GetPoints(); // GetPoints avec un S !
ObjetEnfant->SetPoints(tableau); // fixe la liste de point
//
for (i=0 ;i<nbPoints ;i++) // compteur de 0 à nombre total de points du premier objet par 1 unité
{
pos=tableau[i]; // donne la position du point n° indice
copie=new(InstanceObject); //on crée une instance pour notre 2ème objet
copie->SetName(stradd(str,tostring(i)));
container=copie->GetContainer(); //on accède aux paramètre de cet objet Instance
container->SetData(INSTANCEOBJECT_SOURCE,ObjetSuivant->GetName()); //l'instance pointe sur le nom du deuxième objet
copie->InsertUnder(ObjetCible);
copie->SetContainer(container);
copie->SetPosition(pos);
}
}
A vot'bon coeur pour un peu d'aide, s'il vous plaît, Dieux du Coffee :)
Merci !