Ich habe einige Kenntnisse in VBA, aber ich bin neu in der Solidworks API und muss das Makro eines Kollegen ändern, das in einer Zeichnung mit einer ausgewählten Komponente gestartet wird.
Hier scheint mir das Problem mit dem Code zu sein:
swEnt = swSelMgr.GetSelectedObject5(iSel)
swSelComp = swEnt.GetComponent
swSelModel = swSelComp.GetModelDoc
Name = swSelModel. GetTitle (Englisch)
Name enthält dann den Namen des ausgewählten Teils, wobei ich den Namen der übergeordneten Baugruppe zurückgeben möchte, da der Volumenkörper sehr gut für die Stückliste geeignet ist.
Ich gebe an, dass der Code funktioniert, wenn die Konfigurationen der Assembly wie folgt festgelegt sind:
Anzeigen von Kindkomponenten, die als Querschnittsbestandteil verwendet werden: "show"
und dass wir es so ändern wollen, dass es auch funktioniert, wenn wir auf "Verstecken" setzen
Vielen Dank für jede Hilfe, die Sie mir geben können!
Der vollständige Code ist mehrere tausend Zeilen lang, aber dieser Teil ist unabhängig, ich habe nur ein paar vorherige Zeilen gekürzt, die sich mit Mehrfachauswahlen befassen.
Gleich nach der kopierten Passage vergleichen wir den Wert des Variablennamens mit jeder Bezeichnung in der Nomenklatur. Und da in der Stückliste nur der Name der übergeordneten Baugruppe angezeigt wird, wird natürlich alles gestoppt.
Wenn ich Ihre Antwort sbadenis richtig verstehe, solange die untergeordneten Komponenten in der Konfiguration meiner Assembly verborgen sind, kann keine Methode, die auf swSelModel angewendet wird, zu den Eigenschaften des übergeordneten Elements "hochgehen"?
Ich war auf der Suche nach einer Art swSelModel."GetParent", das es mir erlaubt, auf die Eigenschaften der oberen Assembly wie in meiner Nomenklatur zurückzugreifen.
Wenn die untergeordneten Elemente in den Konfigurationseigenschaften angezeigt werden und ich auf denselben Teil des MEP klicke, wird der Name der übergeordneten Assembly zurückgegeben.
Ich habe es nicht angegeben, aber die Eigenschaft wird nicht direkt auf der Registerkarte "Eigenschaften" überprüft, wir steuern den Wert von $JAMAIS_DEVELOPPER_IN_NOMENCLATURE durch die Teilefamilie. Es ist Y oder N von dem, was ich in der API-Hilfe sehe. Es scheint keinen Wert zu geben, um auf "Fördern" zu wechseln, was ich daher nicht getestet habe.
Was ist, wenn Sie direkt zu Name = swParentComp.GetTitle gehen?
Sie haben alle Komponenten-/Elterninformationen, hier sollten Sie in der Lage sein, das zu finden, wonach Sie suchen, es gibt auch die Konfigurationsverwaltung.
Perfekt! Ich persönlich vermeide es, die Auswahl vor einer Aktion zu verwenden. Die Software weiß, wo sie in der Theorie steht, sie vermeidet unnötige Zeilen, denke ich.
Schließlich habe ich nicht viele APIs auf Solidworks gemacht, ich mache meistens Reassemblierung oder etwas Dateiverwaltung. Ich lese und schreibe nicht für die Nomenklaturen.