Ik ben op zoek naar een maccro om alle subassemblages van een open vergadering te promoten. Daarna zou het extraatje zijn om alle subassemblages te promoten , behalve één waarin de titel nog steeds "VER" bevat. Maar al met een maccro die de 1e actie zou doen uitgelegd, zou het geweldig zijn ! Ik link een maccro die elders is gevonden en die er dicht bij in de buurt staat.
Vervolgens voeg je het deel toe waar je de assembly filtert, zie je de filter om te negeren op basis van de naam en voeg je de code toe om de assembly te promoten.
Ik moet de baan aanpakken die vriendelijk is voorgesteld door @Cyril.fen doorgegeven door @sbadenis , dus als ik eruit kom, zou ik je deze trouwens moeten kunnen maken.
Aan de andere kant weet ik niet wat het betekent om hier te promoten, dus ik weet niet zeker of ik het goed kan testen.
Optie Expliciete Sub hoofd() Dim swApp als SldWorks.SldWorks Dim swModel als SldWorks.ModelDoc2 Dim swConfig als SldWorks.Configuration Dim vConfNameArr als variant Dim sConfigName als tekenreeks Zon i Zo lang
Stel swApp = Toepassing.SldWorks in SolidWorks maakt het mogelijk in VBA Stel swModel = swApp.ActiveDoc in 'Haalt het actieve document op vConfNameArr = swModel.GetConfigurationNames 'Haalt alle configuraties in een array op Voor i = 0 Naar UBound(vConfNameArr) Loop over alle configuraties Set swConfig = swModel.GetConfigurationByName(vConfNameArr(i)) 'sConfigName = vConfNameArr(i) swConfig.ChildComponentDisplayInBOM = swChildComponentInBOMOption_e.swChildComponent_Promote 'Activeert de promotiefunctie op elk van de configuraties
Zonder de code aan te passen kunt u een macro uitvoeren op al uw assembly's of een assembly en alle subassemblies via integratie van het MyCad-hulpprogramma (proefperiode van 1 maand: https://www.lynkoa.com/mycadtools) of anders via batch + (gratis?):
De macrobijlage combineert de codes van de verschillende berichten hierboven. Het lijkt mij een antwoord op uw eerste verzoek. Zoals altijd: te testen en te valideren voor gebruik zonder mate.
Om de hoofdprocedure te starten, ofwel door de macro te bewerken, plaats je je muiscursor achter Sub main() helemaal aan het einde van de macro, en klik je op f5.
Ofwel in toolrun en vervolgens in macropad.
Als het nog steeds een fout is, stuur dan misschien een vereenvoudigde en onbeschermde assemblage via de projectmanager om het te testen.
Om de maccro te starten, opende ik een testassemblage (geen subassemblage, alleen onderdelen) en vervolgens Tool => Maccro => ik wijs naar de maccro op mijn bureaublad en Run. Toen kreeg ik meerdere keren de foutmelding die ik in de afbeelding hierboven heb gepost. Ik heb net opnieuw getest (na het opnieuw opstarten van de pc) en het is heel vreemd.
De maccro is gelanceerd, geen bugwaarschuwing, de maccro-interface is verdwenen, geen foutmelding. Maar toen ik de configuraties van de assemblages ging controleren, had geen van hen de promotie ingeschakeld. Kortom, het lijkt erop dat er niets is gebeurd.
Ik gebruik een maccro die automatisch PDF's van verschillende plannen maakt en het werkt wonderwel. Dus ik weet niet waarom deze maccro geen effect of bug heeft.
Uw schermafbeelding identificeert de locatie van de fout, maar om volledig en effectief te zijn, moet u het bericht van deze fout bijvoegen, aangezien deze wordt teruggestuurd door VBA. Verdachte lijnen:
vChildComp = swComp.GetChildren Voor i = 0 TB UBound(vChildComp) Stel swChildComp in = vChildComp(i) Als (swChildComp.GetSuppression2 = swComponentResolved) of (swChildComp.GetSuppression2 = swComponentFullyResolved) dan
De laatste regel controleert of het onderliggende onderdeel dat wordt verwerkt zich niet in de status "Verwijderd" bevindt, maar in de status "Opgelost". Ik zie niet in wat een foutmelding kan genereren...
Er zijn twee mogelijke oorzaken: - De swChildComp-component bestaat niet (niets) of is van een ongeschikt type. Je kunt een spion plaatsen die zijn naam zal geven (swChildComp.Name2) om meer te weten te komen... - De constanten swComponentResolved en swComponentFullyResolved zijn onbekend op uw pc. Ze zijn respectievelijk 3 en 2 waard. Simpel gezegd, u kunt testen door ze te vervangen door deze waarden. Om rigoureuzer te zijn, moeten we deze constanten toegankelijk maken in de code, evenals alle andere constanten in de SolidWorks API's. Ze worden gedefinieerd in de invoegtoepassing "SolidWorks 2021 constant type Library". Voeg het gewoon toe aan de VBA-referenties (Tools > References, en vink het juiste vakje aan). Zorg ervoor dat je de verwijzingen naar SolidWorks zichtbaar hebt in de bijgevoegde afbeelding.
Kleine precisie, ik ben op SolidWorks 2018 (ik weet niet of het iets verandert). Wat betreft het selectievakje, bijgevoegd zijn de referenties van mijn maccro.
Om Sylk te antwoorden, ik weet niet waar je het over hebt. Wanneer ik de maccro start, target ik deze via de SW-verkenner en wijs ik naar het bestand PromotionMEP.swp. Ik weet niet hoe ik het anders moet aanwijzen voordat ik het uitvoer.
Het plezier van opeenvolgende versies van SolidWorks...
De functie GetSuppression2 bestaat niet in de 2018-versie . Het moet worden vervangen door GetSuppression (dus verwijder gewoon de 2!). En het zou moeten gaan werken.
Nog een opmerking: het lijkt mij dat de optie Promoten (of Verbergen of Tonen) van een tekening alleen zinvol is voor een assemblage. De macro betreft dus een hoofdassemblage die subassemblages bevat waarvan we de componenten al dan niet in de MEP-nomenclatuur willen zien. Een assemblage die alleen onderdelen bevat, wordt niet in aanmerking genomen...