Maccro Assembly Promotie

Hallo

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.

Vriendelijke groeten


ficap_macro_promouvoir.swp

U moet een extra lus maken om door de componenten te gaan:

Kijk naar deze code voorgesteld door @Cyril.f  in deze link:

https://www.lynkoa.com/forum/autres-produits/macro-s%C3%A9lectionner-un-composant-dans-un-assemblage?page=0#answer-

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.

 

 

 

2 likes

Ik begrijp het proces dat moet worden uitgevoerd, maar omdat ik geen programmeur ben, kan ik deze maccro niet wijzigen.

Ik moet de baan aanpakken die vriendelijk is voorgesteld door @Cyril.f en 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.

2 likes

Promote is voor de nomenclaturen en het gebeurt op het niveau van de nomenclaturen:

https://help.solidworks.com/2021/french/WhatsNew/c_wn2021_pdm_bom_options.htm

2 likes

Hier is mijn macro:

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
       
    volgende i
Einde Sub

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?):

https://cadplus.xarial.com/batch/assembly/

Bedankt voor je feedback, het idee was om een tool te hebben die zowel voor vandaag als voor 2 jaar of + door het team kan worden gebruikt.
 

Hallo

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.

Vriendelijke groeten.


promotionmep.zip
2 likes

Na het testen had ik een foutmelding bij het uitvoeren van de maccro.
Bijgevoegd is de schermafbeelding van deze fout.

 


bug_maccro.png

Heeft u de procedure met de hand gestart?

Omdat de macro van @m.blt thuis heel goed werkt.

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.

1 like

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.

Zoals gezegd @sbadenis moet je de hoofdprocedure kiezen uit "macropad" en vervolgens valideren.

Hetzelfde geldt als u de knop aan een werkbalk toevoegt, u moet de knop bewerken en de hoofdprocedure kiezen.

1 like

Hallo @Psyno,

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.

 

1 like

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.


screenshot.png

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...

3 likes

Inderdaad, na het bewerken van de GetSuppression2-regels  , werkt de maccro erg goed!
Bedankt allemaal!