VBA Excel om een onderdeel en zijn plan te dupliceren + hernoemen

Hallo

Ik wil een kamer en zijn plan openen vanuit een Excel-bestand, deze kamer opslaan onder een nieuwe naam 'opslaan als' en dat het plan up-to-date is qua referentie voordat ik het op zijn beurt opslaat.

Ik kan mijn bestanden tegelijkertijd openen en onder een nieuwe naam opslaan. Maar het shot wijst altijd naar de andere kamer.

In de handleiding werkt het echter wel. Het lijkt erop dat de record niet Under opslaat, maar een kopie opslaat.

Ik open met deze methode:

Stel swModel in = swApp.OpenDoc6("link naar mijn plan", 3, 0, "", myError, myWarning)  

En ik neem hiermee op:

 swModel.SaveAs2 "nieuwe link", 0, Waar, Onwaar

 

PS: En trouwens, als iemand een truc heeft om tegelijkertijd de eigenschap Onderdeelaanduiding te wijzigen, zou het me veel helpen.

Hier is een voorbeeld dat ik gebruik om een kopie te maken van het onderdeel/merk en het  gekoppelde vlak van een open onderdeel of merk, om er een hint aan toe te voegen.

Om dit te doen, haal ik de indexeigenschap van het open onderdeel/merk op en wijzig ik een andere, de indexeigenschap van het nieuwe onderdeel/merk

Met een kleine aanpassing zou je dit allemaal moeten kunnen aanpassen om te doen wat je nodig hebt.

En je moet heel goed begrijpen dat het mijn 1e macro vrij belangrijk is, dus ik heb veel reacties geplaatst!

Aan de andere kant wordt het gelanceerd vanuit solidworks. Het is aan jou om het aan te passen!

 


toevoegenindex.swp
1 like

Hallo

Het zit allemaal in de sbadenis-macro (dus +1 ervoor), vooral de functie ReplaceReferencedDocument. Bijvoorbeeld:

Option Explicit

Const sReferencingDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce5.SLDDRW"
Const sOldDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce5.sldprt"
Const sNewDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce1.sldprt"

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim bRet As Boolean

    Set swApp = CreateObject("SldWorks.Application")

    bRet = swApp.ReplaceReferencedDocument(sReferencingDoc, sOldDoc, sNewDoc)
    
End Sub

Te gebruiken zonder een van de documenten in Solidworks te openen!!

In uw regel "swModel.SaveAs2 "nieuwe link", 0, True, False", de "True" betekent "SaveAsCopy" = ja ... maar je hebt deze regel niet meer nodig als je de ReplaceReferenceDocument functie gebruikt...

Vriendelijke groeten

1 like

Bedankt voor je antwoorden, in feite was het vervangen van het Waar door het Onwaar voldoende om aan mijn behoefte te voldoen.

 

Ter info: ik codeer vanuit Excel en ik heb de indruk dat sommige dingen niet hetzelfde werken. Net als de regels met bRet, heb ik er al een paar gezien met de verandering van eigendom, maar het werkt niet op Excel, terwijl op Solid ja.

Hallo

Ik heb nog één fout te corrigeren. Laat het me uitleggen:

Ik heb een assemblage "A" die een assemblage "B" bevat

"A" en "B" bevatten een "C" gedeelte.

Als ik deel C vervang door een deel D in assemblage A, wordt het onderdeel in assemblage B ook vervangen (dat is het doel).

Ik eindig met het opslaan van mijn assemblage A. Maar ik merk op dat op hetzelfde moment assemblage B werd geregistreerd.

Maar dat wil ik niet. Maar ik zet 0 als een back-up optie, Maar ik merk dat we theoretisch moeten aangeven om de referenten op te slaan met swSaveAsOptions_SaveReferenced, maar hoe te dwingen het niet om ze op te slaan?

Hallo

Ik zie niet echt het nut in van het vervangen van je deel C door een deel D in je assemblage B als je deze assemblage B niet wilt bewaren, je kunt net zo goed deel C vervangen door je onderdeel D alleen in je assemblage A en je assemblage B houden met je onderdeel C ...

Vriendelijke groeten

In feite is dit niet precies wat er gebeurt, maar ik wilde het probleem eenvoudiger uitleggen.

Kortom, ik wil alleen mijn assemblage kunnen redden, en niet de kinderen.

Hallo

De functie SaveAs2 voldoet aan uw behoeften, maar u moet geen 0 in de opslagopties zetten, het is geen geldige optie, u moet de gemaakte keuzes bij elkaar optellen, bijvoorbeeld:

1 + 2 voor swSaveAsOptions_Silent en swSaveAsOptions_Copy

1 + 512 voor swSaveAsOptions_Silent en swSaveAsOptions_CopyAndOpen

...

Vriendelijke groeten