Ik heb enige kennis van VBA, maar ik ben nieuw in de Solidworks API en ik moet de macro van een collega wijzigen, gelanceerd in een tekening met een geselecteerd onderdeel.
Dit is wat mij het probleem met de code lijkt te zijn:
swEnt = swSelMgr.GetSelectedObject5(iSel)
swSelComp = swEnt.GetComponent
swSelModel = swSelComp.GetModelDoc
Naam = swSelModel. Titel ophalen
De naam bevat dan de naam van het geselecteerde onderdeel, waarbij ik de naam van de bovenliggende assembly zou willen teruggeven, aangezien solid het erg goed doet voor de BOM.
Ik geef aan dat de code werkt wanneer de configuraties van de assembly als volgt zijn ingesteld:
Onderliggende componenten weergeven die als subassemblage worden gebruikt: "show"
En dat we het willen aanpassen zodat het ook werkt als we op "verbergen" zetten
De volledige code is enkele duizenden regels lang, maar dit deel is onafhankelijk, ik heb alleen een paar eerdere regels geknipt die over meerdere selecties gaan.
Net na de gekopieerde passage vergelijken we de waarde van de variabelenaam met elke aanduiding in de nomenclatuur. En natuurlijk, aangezien de stuklijst alleen de naam van de bovenliggende assembly toont, stopt alles.
Als ik uw antwoord sbadenis goed begrijp, zolang de onderliggende componenten verborgen zijn in de configuratie van mijn assembly, zal geen enkele methode die wordt toegepast op swSelModel in staat zijn om "omhoog" te gaan naar eigenschappen van de ouder?
Ik was op zoek naar een soort swSelModel."GetParent", waarmee ik kon terugvallen op de eigenschappen van de bovenbouw zoals in mijn nomenclatuur.
Als de kinderen worden getoond in de configuratie-eigenschappen, en als ik op hetzelfde deel van de MEP klik, wordt de naam van de bovenliggende assemblage geretourneerd.
Ik heb het niet opgegeven, maar de eigenschap wordt niet direct gecontroleerd in het eigenschappentabblad, we sturen de waarde van $JAMAIS_DEVELOPPER_IN_NOMENCLATURE door de onderdeelfamilie. Het is Y of N van wat ik zie in de API-help; Er lijkt geen waarde te zijn om over te schakelen naar "promoten", wat ik als gevolg daarvan niet heb getest.
Perfect! Persoonlijk vermijd ik het gebruik van selectie voor een actie. De software weet in theorie waar het is, het vermijdt onnodige lijnen denk ik.
Ten slotte heb ik niet veel API's op solidworks gedaan, ik doe meestal aan reassembly of wat bestandsbeheer. Ik lees of schrijf niet voor de nomenclaturen.