[Solidworks API] Name der übergeordneten Baugruppe wie in der Stückliste

Hallo

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! 

Falsche Antwort...

Bitte geben Sie den Code vollständig ein, er ist leichter zu verstehen, auch wenn Sie im Text nur von einem Teil sprechen.

Aber das ist in der Tat nicht der Teil, der Ihre Anfrage betrifft. (Sie erhalten den Namen des ausgewählten Teils in der Baugruppe)

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. 

 

 

 

 

Wenn Sie ein 'GetParent' wünschen:

 

http://help.solidworks.com/2018/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IComponent2~GetParent.html

1 „Gefällt mir“

Danke Alraune!  Ich habe getestet, aber es geht nicht voran. 

Legen Sie swParentComp = swSelComp.GetParent fest

Legen Sie swSelModel2 = swParentComp.GetModelDoc fest.

 Name = swSelModel2.GetTitle

Name enthält jedoch immer noch den Namen des Teils, als ob GetParent nicht existieren würde (es wird jedoch nicht NULL zurückgegeben) 

 

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.

http://help.solidworks.com/2018/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.iconfiguration~getrootcomponent3.html

1 „Gefällt mir“

Danke Mandragore, ich habe GetParent in einem Schritt zum Laufen gebracht:

Name = swSelComp.GetParent.GetModelDoc.GetTitle

Allein der erste Teil, swSelComp.GetParent, war für mich ein Problem, wahrscheinlich aufgrund von Problemen mit der Typdeklaration.

 

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.