Wie rufe ich die Konfigurationsliste einer Komponente in einer Baugruppe ab? VBA Solidworks

Hallo

Ich möchte die Konfigurationsliste einer Komponente in einer Baugruppe abrufen, um die benutzerdefinierten Eigenschaften der Konfigurationen dieser Komponente aus einer Baugruppe zu ändern.

Im Moment kann ich eine Liste der Komponenten der Baugruppe erstellen, aber ich kann nicht die Konfigurationen der einzelnen Komponenten auflisten . Dann muss ich in der Lage sein, die benutzerdefinierten Eigenschaften der Konfigurationen für jede Komponente aus der Baugruppe zu ändern.

Haben Sie Lösungen?

Vielen Dank.

 

Hallo

Wenn Sie es schaffen, alle Komponenten einer Baugruppe aufzulisten, vermute ich, dass die Funktion "GetChildren" gefolgt von einer Schleife verwendet wird, um zumindest den Namen der Komponenten abzurufen. Wenn dies der Fall ist, können Sie in dieser Schleife mit der Funktion "GetModelDoc2" das "ModelDoc2" jeder "Komponente2" abrufen und von dort aus mit der Funktion "GetConfigurationNames" die Konfigurationen Ihres "ModelDoc2" auflisten.
Ich weiß nicht, ob Ihnen alles klar ist, also hier ein kleines Beispiel in C # (keine Zeit, es in VBA zu übersetzen):

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++;
    }
}

Dies ist der Code-Stil hinter dem Programm, den Sie hier finden.

Herzliche Grüße

3 „Gefällt mir“