Hoe kom ik aan de naam van het onderdeel, de assemblage of het lid van het EP in uitvoering?

Hallo

Hoe kan ik de namen van mijn onderdelen, MEP en assemblage opvragen om ze na registratie te sluiten? 

myTitle = mijnModel.GetTitle

swApp.ActivateDoc2 myTitle, True, 0

swApp.QuitDoc myTitle

Ik heb dit geprobeerd, maar het werkt niet. Ik kan ook het commando niet vinden om mijn assemblage gewoon op te slaan.

2 likes

Goedendag,

 

Het hangt ervan af, wilt u de naam van het actieve bestand herstellen? Dat wil zeggen, als je op een plan bent, wil je de naam van het plan ophalen, in een assemblage de naam van de assembly, en in een deel de naam van het onderdeel?

Als dat zo is, is deze tutorial die ik zojuist op Lynkoa heb gemaakt prima:

http://www.lynkoa.com/tutos/import-export-formats-neutres/vba-solidworks-nom-fichier

 

Om een assemblage te registreren zonder alle onderdelen te veranderen , moet je beginnen met de "hoogste" assemblage totdat je de S.A. en de onderdelen die ze bevatten opent. Dat is de reden waarom ik vanuit de vergadering mijn deel open, de Europarlementariër en ik slaan onder en sluiten dan het document, maar de operator verandert de naam tussen twee, daarom heb ik het nodig om het document te sluiten. Dan moet ik een manier vinden om de hoogste assemblage na de wijzigingen op te slaan.

Ik hoop dat ik duidelijk ben, in de bijgevoegde code kan ik de tekening niet sluiten om bijvoorbeeld terug te gaan naar het onderdeel.


macro50.swp

Kunt u uw code in een tekstbestand zetten?

Stel swapp in = _
Toepassing.SldWorks

Deel instellen = swapp. OpenDoc6("\xxxxxxxxxx", 2, 0, "", longstatus, longwarnings)
Ruilen. ActiveerDoc2 "Pot Store Set", False, longstatus
Deel instellen = swapp. ActiveDoc

F1. Tonen

Stel swappp in = Toepassing.SldWorks
Stel swmodel in = swappp. ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

'Ruilen. OpenDoc(Naam,Type) '
      
Deel instellen = swapp. ActiveDoc
boolstatus = Part.Extension.SelectByID2("Pots-Store 1@Ensemble Store pots_9", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Deel.OpenCompFile
Deel instellen = swapp. OpenDoc6("\xxxxxxxx", 1, 0, "", longstatus, longwarnings)
Deel instellen = swapp. ActiveDoc

Deel instellen = swapp. OpenDoc6("\xxxxxxxx", 3, 0, "", longstatus, longwarnings)
Deel instellen = swapp. ActiveDoc

Stel swappp in = Toepassing.SldWorks
Stel swmodel in = swappp. ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

Het lijkt erop dat uw code geen geheel getal is (geen "sub").

Wat is precies het probleem? Kunt u het actieve document wel maar niet sluiten?

Is er een foutregel wanneer u uw code start?

Ik kan niet testen, ik heb geen SolidWorks, dus ik heb meer informatie nodig.

Ik heb je slechts een deel van mijn code gegeven, ik ben vanmorgen een beetje gevorderd en heb oplossingen gevonden (mijn code staat hieronder). Het probleem dat zich voordoet met deze code is dat ik de MEP-titel niet op dezelfde manier kan krijgen als onderdelen en assemblages. Inderdaad, deze code bespaart het onderdeel, het lid van het Europees Parlement, de vergadering aan het begin, maar niet aan het einde omdat het wordt gesloten in plaats van mijn lid van het Europees Parlement. Als gevolg hiervan gaan referenties in de assemblage verloren.

Sub hoofd()
        
Stel swapp in = _
Toepassing.SldWorks

Deel instellen = swapp. OpenDoc6("\\xxxxxx", 2, 0, "", longstatus, longwarnings)
Ruilen. ActiveerDoc2 "Pot Store Set", False, longstatus
Deel instellen = swapp. ActiveDoc

F1. Tonen


Stel swAppp = Application.SldWorks in
Stel swmodel in = swAppp.ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")


'Ruilen. OpenDoc(Naam,Type) '
      
Deel instellen = swapp. ActiveDoc

'Haal de link
FilePath = swmodel. GetPathName (GetPathNaam)
'Haalt het aantal tekens op
Padgrootte = Len(FilePath)
'Herstelt de bestandsnaam alleen zonder extensie
PathNoExtension = Links(FilePath, 29)

TitelA = swmodel. Titel ophalen

TitleAs = Len(TitelA)

TitleAn = Links(TitelA, TitelAs - 7)

Deel instellen = swapp. ActiveDoc
Deel instellen = swapp. OpenDoc6("\\xxxxx"", longstatus, longwarnings)
Deel instellen = swapp. ActiveDoc

Ruilen. ActiveerDoc2 "Bewaar potten.sldprt", False, longstatus
Deel instellen = swapp. ActiveDoc


Deel instellen = swapp. OpenDoc6("\\xxxxx", 3, 0, "", longstatus, longwarnings)
Deel instellen = swapp. ActiveDoc

Ruilen. ActiveerDoc2 "Jar Store - Sheet1", False, longstatus
Deel instellen = swapp. ActiveDoc


bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

Deel instellen = swapp. ActiveDoc

TitleM = swmodel. Titel ophalen

TitelMs = Len(TitelM)

TitleMn = Links(TitelM, TitelMs - 7)

Deel instellen = swapp. ActiveDoc
Set Deel = Niets
Ruilen. CloseDoc TitleMn
Deel instellen = swapp. ActiveDoc

Ruilen. ActiveerDoc2 "Bewaar potten.sldprt", False, longstatus
Deel instellen = swapp. ActiveDoc

Stel swAppp = Application.SldWorks in
Stel swmodel in = swAppp.ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")


TitleP = swmodel. Titel ophalen

TitelPs = L(TitelP)

TitlePn = Links(TitelP, TitelPs - 7)


Deel instellen = swapp. ActiveDoc
Set Deel = Niets
Ruilen. CloseDoc TitlePn
Deel instellen = swapp. ActiveDoc

Ruilen. ActiveerDoc2 TitleAn, False, longstatus
Deel instellen = swapp. ActiveDoc

Deel instellen = swapp. ActiveDoc
longstatus = Deel.SaveAs3(FilePath, 0, 2)

Deel instellen = swapp. ActiveDoc
Set Deel = Niets
Ruilen. CloseDoc TitelEen


F2. L_2 = TitelMn

F2. Tonen


Einde Sub

Wat is de lijn die niet werkt?

Om het actieve document te sluiten ga ik als volgt te werk:

swApp.CloseDoc(swModel.GetPathName)

Hallo

Uw code geeft me de link naar het lid van het Europees Parlement, maar ik heb de naam nodig om het te sluiten, heb ik het mis? Hoe dan ook, het geeft me altijd de link naar de vergadering, ik denk dat ik een probleem moet hebben met het activeren van een document wanneer ik overstap van mijn vergadering naar mijn lid van het Europees Parlement. Mijn code werkt, het is alleen dat het niet doet wat ik wil.

Probeer dus eens deze regels in te voegen als u een tekening wilt sluiten :

Stel swmodel = swapp in. ActiveDoc

swApp.CloseDoc(swModel.GetPathName)

 

 

1 like

Trouwens, ik zag net in je code dat er soms "swApp" en "swAppP" zijn.

Ik denk dat het een vergissing is en dat je het overal moet vervangen door "swApp  ".

Kortom, mijn programma gaat verloren in de documenten omdat ik de juiste namen niet kan vinden. Bijgevoegd zijn twee foto's van wat hij krijgt als een naam en hetzelfde maar met uw instructie: (in 1e is het de vergadering met en zonder uitbreiding, in 2e moet het de MEP zijn en in 3e het deel)


err1.png

Het werkt met je laatste opmerkingen die ik niet had gezien! Voor de swapp(p) heb ik twee verschillende statements, dus ik denk dat ik geen keus heb.

Dim swAppp als SldWorks.SldWorks

Dim swApp als object

Heel erg bedankt aan jou, ik moet dit gewoon doen voor de sub-assemblages en de andere onderdelen:)

 

1 like

Maak je geen zorgen!

Om me te bedanken, kies alsjeblieft mijn antwoord als het beste antwoord dat je heeft geholpen:)