Jak pobrać listę konfiguracji komponentu w złożeniu? VBA Solidworks

Witam

Chcę pobrać listę konfiguracji komponentu w złożeniu, aby zmodyfikować niestandardowe właściwości konfiguracji tego komponentu ze złożenia.

Na razie mogę zrobić listę komponentów zespołu, ale nie mogę wymienić konfiguracji każdego komponentu. Następnie będę musiał być w stanie zmodyfikować niestandardowe właściwości konfiguracji dla każdego komponentu ze złożenia.

Czy masz jakieś rozwiązania?

Dziękuję.

 

Witam

Jeśli uda Ci się wymienić wszystkie komponenty złożenia, domyślam się, że używa to funkcji "GetChildren", po której następuje pętla, aby pobrać przynajmniej nazwy komponentów. W takim przypadku możesz w tej pętli pobrać "ModelDoc2" każdego "Komponentu2" za pomocą funkcji "GetModelDoc2" i w ten sposób stamtąd wyświetlić konfiguracje swojego "ModelDoc2" za pomocą funkcji "GetConfigurationNames".
Nie wiem, czy to wszystko jest dla Ciebie jasne, więc oto mały przykład w języku C# (nie ma czasu na tłumaczenie go na 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++;
    }
}

To jest styl kodu stojący za programem, który znajdziesz tutaj.

Pozdrowienia

3 polubienia