Bonjour,
Je cherche à récupérer la liste de configurations d'un élément (component) dans un assemblage pour modifier les propriétés personnalisées des configurations de cet élément (component) à partir d'un assemblage.
Pour l'instant, j'arrive à faire la liste des éléments (components) de l'assemblage, mais je n'arrive pas à faire la liste des configurations de chaque élément (component). Ensuite, il faudra que j'arrive à modifier les propriétés personnalisées des configurations pour chaque élément (component) à partir de l'assemblage.
Avez-vous des solutions ?
Merci.
Bonjour,
Si tu arrives à lister tous les composants d'un assemblage c'est je suppose à l'aide de la fonction "GetChildren" suivie d'une boucle pour récupérer à minima le nom des composants. Si c'est le cas, tu peux, dans cette boucle, récupérer le "ModelDoc2" de chaque "Component2" à l'aide de la fonction "GetModelDoc2" et donc à partir de là lister les configurations de tes "ModelDoc2" à l'aide de la fonction "GetConfigurationNames".
Je sais pas si c'est tout clair pour toi donc voici un petit exemple en langage C# (pas le temps de le traduire en vba) :
private void TraverseComponent(Component2 swComp)
{
ModelDoc2 swDoc;
object[] vChildComp;
Component2 swChildComp;
string namePart = string.Empty;
Boolean boolstatus;
string AssemblyTitle = swDoc.GetTitle();
int i = 0;
vChildComp = (object[])swComp.GetChildren();
while (i < vChildComp.Length)
{
swChildComp = (Component2)vChildComp[i];
swDoc = (ModelDoc2)swChildComp.GetModelDoc2();
if (AssemblyTitle.ToLowerInvariant().Contains(".sldasm"))
{
namePart = swChildComp.Name2 + "@" + AssemblyTitle.Substring(0, AssemblyTitle.Length - 7);
}
else
{
namePart = swChildComp.Name2 + "@" + AssemblyTitle;
}
int j = 0;
try
{
boolstatus = swDoc.Extension.SelectByID2(namePart, "COMPONENT", 0, 0, 0, false, 0, null, 0);
object[] configNameArr = null;
string configName = null;
configNameArr = (object[])swDoc.GetConfigurationNames();
for (j = 0; j <= configNameArr.GetUpperBound(0); j++)
{
configName = (string)configNameArr[j];
MessageBox.Show((configName);
}
}
catch (Exception)
{
continue;
}
i++;
}
}
C'est le style de code qui est derrière le programme que tu trouveras ICI.
Cordialement,
3 « J'aime »