Een onderdeelconfiguratie inschakelen in een assembly met een macro

Hallo

 

Ik ben op zoek naar een macro waarmee ik de verschillende configuraties van een onderdeel uit de hoofdassemblage kan activeren.

Ik heb wel een stukje code waar ik aan gesleuteld heb, maar dat werkt niet.

 

Stel swApp in = _
Toepassing.SldWorks

Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("CleanSeal WELDED-1@CleanSeal COMPLETE/Cxxx-x-1@CleanSeal WELDED", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Deel.ShowConfiguration2("C200-0")
Deel.ClearSelection2 Waar
boolstatus = Deel.EditRebuild3()
Einde Sub

 

Bij voorbaat dank voor uw hulp

Vriendelijke groeten.

Hallo

Ik heb dit stukje code dat thuis werkt, zie op het niveau van je boolstatus-regel, in het eerste deel. Ik begrijp de "/"" niet... Ben je een onderdeel niet aan het bewerken?

Edit: Je moet hebben: "Configuration@nomfichier.extension"

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp in = _
Toepassing.SldWorks

Deel instellen = swApp.ActiveDoc
boolstatus = Deel.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("Défaut@12345678-E STEUNCILINDER. SLDASM", "CONFIGURATIES", 0, 0, 0, Onwaar, 0, Niets, 0)
boolstatus = Part.ShowConfiguration2("Standaard")
boolstatus = Deel.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("MET REHAUSSE@12345678-E STEUNCILINDER. SLDASM", "CONFIGURATIES", 0, 0, 0, Onwaar, 0, Niets, 0)
boolstatus = Part.ShowConfiguration2("MET HOOGTE")
boolstatus = Deel.EditRebuild3()


Einde Sub

1 like

Hallo Glaffont,

Allereerst bedankt voor je antwoord;)

Ik nam je code door toe te voegen, maar bestandsnaam, maar het werkt niet:(

Hier is de code:

 

Stel swApp in = _
Toepassing.SldWorks

Deel instellen = swApp.ActiveDoc
boolstatus = Deel.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("C250-0@Cxxx-x.part@CleanSeal BEVESTIGD. SLDASM", "CONFIGURATIES", 0, 0, 0, Onwaar, 0, Niets, 0)
boolstatus = Deel.ShowConfiguration2("C250-0")
boolstatus = Deel.EditRebuild3()

Einde Sub

 

In je code verander je gewoon de configuratie van je assembly?

Van mijn kant is de structuur van mijn 3D als volgt:

 * Hoofdassemblage (. SLDASME)

                                       * Subset (. SLDASME)

                                                                        * component (.part)

                                                                        * component (.part)

                                                                       * onderdeel (.deel)

                                     * diverse componenten (.part)

Ik wil dat de code de configuratie van een component (.part)  in mijn subset (. SLDASM) terwijl ik in mijn hoofdassemblage was (. SLDASM).

Ik hoop dat mijn uitleg begrijpelijk is...

Bij voorbaat dank

 

 

 

Hallo

Ik begreep het verzoek, het was vanaf het begin duidelijk maar ik moet te snel hebben gelezen.

Inderdaad, in dit geval werkt het ook niet voor mij. Ik probeerde het stuk te bewerken zonder succes. Ik blijf kijken.

1 like

Hallo

Hoeveel niveaus zijn er maximaal?

1) de hoofdassemblage (waar we de macro zullen uitvoeren)

2) een deelverzameling

3) Onderdelen

Klopt dat?

Geen tussenliggende niveaus meer?

 

1 like

We kunnen ons laten inspireren door deze twee macro's die ik op Lynkoa heb gepost:

http://www.lynkoa.com/tutos/3d/enregistrer-une-piece-chaque-configuration

http://www.lynkoa.com/tutos/solidworks/macro-pour-toutes-les-configurations-d-un-assemblage-pour-activer-l-option-%E2%80%9Cpromouv

 

Hallo PL,

Bedankt voor je interesse in mijn probleem.

 

De architectuur van mijn model is prima zoals je het beschreef.

Vanuit mijn hoofdassemblage wil ik de configuratie wijzigen van een component die zich in een subset van mijn hoofdassemblage bevindt.

Ik ben een beginner in VBA, ik begrijp de codes die je op je tutorials zet niet echt :s

 

Bij voorbaat dank voor uw hulp.

Vriendelijke groeten.

PL, heb je ooit dit soort code gebruikt om een configuratie te kiezen?

Vriendelijke groeten.

Hallo

Ik heb misschien een idee: heb je geprobeerd de assemblage te doorlopen met de traverse-componentfunctie zoals weergegeven in de onderstaande macro:

http://help.solidworks.com/2012/english/api/sldworksap/traverse_assembly_at_component_level_example_vb.htm

om het gewenste onderdeel te activeren en vervolgens de configuratie te wijzigen met de hierboven genoemde commando's?

Hallo Glaffont,

Ik begrijp niet alles van deze code...

Vriendelijke groeten.

Hier is de juiste link:

http://help.solidworks.com/2012/english/api/sldworksapi/traverse_assembly_at_component_level_example_vb.htm

1 like

Omdat ik een beginner ben in programmeren, geef ik toe dat ik niet veel begrijp van deze code :s

 

Ik heb een kleine vooruitgang geboekt:

De onderstaande code selecteert een component op niveau -2 en wijzigt de configuratie ervan.

MAAR er is een bug..... De configuratie die het  weergeeft, is niet de configuratie die ik het vraag te ??!?

Kijk hoe het er thuis uitziet met de juiste paden en vertel het me. (het is ook een rommeltje in de aangiften, niet de tijd genomen om op te ruimen....)

       ********************************************************************

    Dim swApp als SldWorks.SldWorks
    Dim swAssy Als SldWorks.assemblyDoc
    Zon swSelMgr As SldWorks.selectionMgr
    Dim swModel als SldWorks.ModelDoc
    Dim swComp als SldWorks.Component
    Dim ConfigMgr als ConfigurationManager
    Dim instantie As ISelectionMgr
    Dim Index als geheel getal
    Dim Mark als geheel getal
    Dim boolstatus als Booleaanse
    Dim modelDoc2 als SldWorks.modelDoc2
Dim assemblyDoc als SldWorks.assemblyDoc
Dim featureMgr als SldWorks.FeatureManager
Dim modelDocExt As SldWorks.ModelDocExtension
Zon selectieMgr As SldWorks.selectionMgr
Dimfunctie Als SldWorks.feature
Dim selObj Als Object
Dim prestatie als SldWorks.feature
Map dimmenFeat als SldWorks.feature
Dim fouten zo lang mogelijk
Dim waarschuwingen zo lang
Dimstatus Als Lang
Dim telling zo lang
Dim waarde als SldWorks.Component2
Dim componentsToMove() als object
Zon i Zo lang
Dim retVal als Booleaanse
    Dim RefCfg als tekenreeks

Sub hoofd()

    Stel swApp = Toepassing.SldWorks in
    Stel swModel = swApp.ActiveDoc in
    Stel swAssy in = swModel
    Stel swSelMgr = swModel.SelectionManager in
    Set ConfigMgr = swModel.ConfigurationManager
    Stel modelDoc2 in = swApp.ActiveDoc
    Stel assemblyDoc in = modelDoc2
    
    'Selecteer onderdeel
    Stel modelDocExt = modelDoc2.Extension in
    Selectie instellenMgr = modelDoc2.SelectionManager
    status = modelDocExt.SelectByID2("testEUT15B0178'015 SE STEUNCILINDER-1@Assemblage1/testO-RING STD-2@testEUT15B0178'015 S-E STEUNCILINDER", "COMPONENT", 0, 0, 0, Waar, 0, Niets, 0)
    Set selObj = selectieMgr.GetSelectedObject6(1, -1)
    Waarde instellen = selectieMgr.GetSelectedObjectsComponent4(1, -1)

    ' Toon Config1 en maak er de actieve configuratie van
    Value.ReferencedConfiguration = "O-RING Ø24xØ1.5"

    " Om wijzigingen van kracht te laten worden
    swModel.BewerkenHerbouwen3

Einde Sub

                         ****************************************************************

1 like

Bij een misverstand kan het werken: de configuratie die het weergeeft is die van het onderdeel wanneer je het alleen opent.

 

Hoe moet ik de regel code invullen met de namen van mijn eigen bestanden?

Hier zijn mijn bestandsnamen

 

Hoofdmontage: CleanSeal COMPLEET

                    Sub-assemblage: CleanSeal WELDED

                                     Component binnen de subassemblage : Cxxx-x      (Niet van een van de "C250-0" toevertrouwd

Heel erg bedankt voor je hulp

Vriendelijke groeten.

1 like

Heel simpel: je kopieert de code die je in je vraag zet...... ;-)

Hieronder staat de code met mijn bestandsnamen.

Dat is het bijna, maar het vraagt niet om de juiste configuratie...

 

Stel swApp = CreateObject("SldWorks.Application") in
Deel instellen = swApp.ActiveDoc


Stel swApp in = _
Toepassing.SldWorks

  Stel swApp = Toepassing.SldWorks in
    Stel swModel = swApp.ActiveDoc in
    Stel swModelDocExt = swModel.Extension in
    Stel swSelMgr = swModel.SelectionManager in
       
 
Stel swApp = Toepassing.SldWorks in
    Stel swModel = swApp.ActiveDoc in
    Stel swAssy in = swModel
    Stel swSelMgr = swModel.SelectionManager in
    Set ConfigMgr = swModel.ConfigurationManager
    Stel ModelDoc2 in = swApp.ActiveDoc
    AssemblyDoc instellen = ModelDoc2
    
    'Selecteer onderdeel
    Set modelDocExt = ModelDoc2.Extension
    Selectie instellenMgr = ModelDoc2.SelectionManager
    Status = modelDocExt.SelectByID2("CleanSeal COMPLETE-1@Assemblage1/Cxxx-x-2@CleanSeal COMPLETE", "COMPONENT", 0, 0, 0, True, 0, Nothing, 0)
    Set selObj = SelectieMgr.GetSelectedObject6(1, -1)
    Waarde instellen = SelectieMgr.GetSelectedObjectsComponent4(1, -1)

    ' Toon Config1 en maak er de actieve configuratie van
    Value.ReferencedConfiguration = "Cxxx-x C250-0"

    " Om wijzigingen van kracht te laten worden
    swModel.BewerkenHerbouwen3


Einde Sub

 

 

1 like

Open uw Cxxx-x-2 en kijk in welke configuratie deze zich bevindt.

Zet het in de configuratie "C250-0" en probeer het opnieuw.

Laat me verduidelijken: het is doe-het-zelf! We zullen proberen een oplossing te vinden in VBA.

Edit: Er is een fout in de naam van de configuratie die u aanroept, moet u alleen "C250-0" en niet ""Cxxx-x C250-0"

1 like

het werkt, je hebt een gelukkige  gemaakt :-)  !!

Vergeleken met de allereerste code die je me gaf, wat doet deze nog meer?

Als je zegt "het is doe-het-zelf! We zullen proberen een oplossing te vinden in VBA." wat bedoel je daarmee?

In ieder geval heel erg bedankt voor je hulp.

 

 

Kunt u één ding controleren: open uw Cxxx-x-1 onderdeel, wijzig de configuratie en start de macro opnieuw.

Activeert het de gewenste configuratie?