Comment fermer une pièce pas encore enregistré

Bonjour,

 

Je voudrai fair un:

ActiveWorkbook.Close

 

comme on fait pour excel!

 

 

le code d'enregistrement de macro donne:

 

Set swApp = Application.SldWorks

 

Set Part = swApp.ActiveDoc

Set Part = Nothing

swApp.CloseDoc "Nom Pièce"

 

Sauf que ne l'ayant pas enregistré elle n'as pas de nom définit (sauf "Pièce 1", Pièce 2", Pièce 3"......)

 

Avec:

swApp.ActiveDoc.Close j'ai fait planter solidworks (image jointe)

 

 

merci de votre aide!!


capture.png

Pourquoi ne pas cliquer tout simplement sur fermer ^^^ou sur la croix.....

 

Je ne pense pas qu'une macro soit necessaire pour ce genre de manip.

4 « J'aime »

Ben c'est comme pour ouvrir un fichier, importer des pièces dans un assemblage ou bien changer la matière...

 

On peut le faire à la main mais si le programme le fait ce n'est plus à faire.

 

Je n'ai trouvé cette instruction nulle part sur les forums...

je ne vois vraiment aucune utilité de fermer le fichier sans l'enregistrer 

de ce faite il peut etre perdu dans les autres fichiers sans posibilité de le trouver facilement

fermer sans enregistrer on perd tout ?

@+ ;-)

 

2 « J'aime »

Je suis de l'avis de Bart et Gt22

mais si dans votre contexte ca a un sens... regardez plutot QuitDoc Method (ISldWorks)

qui ferme sans enregistrer

 

 

6 « J'aime »

En même temps, cliquer sur l'icône de la macro, ou cliquer sur une croix pour fermer.

 

L'un dans l'autre, ca revient au même non?

 

Ou j'ai rater un truc....

 

 

en faite je fait:

 

longstatus = Part.SaveAs3(lien, 0, 2)

 

qui enregistre ma pièce dans lien sauf que je garde une pièce (copie) non enregistré dans mon Solidworks qui est inutile.

 

C'est vrai que le problème source est: est-il possible d'enregistré une pièce ouverte et de la garder affiché? (par vba)

Ok ... ca deviens plus logique

donc QuitDoc ca doit fonctionner ?

4 « J'aime »

Je ne comprends pas l'utilité non plus. Il existe la commande fermer pour cela, et qui plus est en cas de multiples documents ouvert il y a la commande tout fermer...

 

 

Sauvegarder une pièce en la laissant ouverte le plus rapidement possible ?

 

CTRL+S ... non ?

Je suis d'accord avec vous sur l'utilité de cette action, mais je développe une application pour un assisté de solidworks qui ne veut pas apprendre à utiliser le logiciel...

 

Sinon pour ceux que ça intérésse, il y a: ( idée de Happydad)

boolstatus = swApp.CloseAllDocuments(True)

 

mais la fenêtre ne se ferme pas je pense que c'est à cause du message de demande d'enregistrement de la pièce qui ne s'affiche pas.

 

 

jfaradon

j'ai l'impression que QuitDoc Method (ISldWorks) demande aussi le nom de la pièce avant de la fermer.

 

 

merci de vos réponses

j'ai utilisé la méthode sioux pour y parvenir... 

 

For i = 1 To 30

swApp.CloseDoc "Pièce" & i
Next

 

Tu peux aussi récupérer le nom du document puis l'activer pour le fermer :

 

myTitle = myModel.GetTitle

swApp.ActivateDoc2 myTitle, True, 0

swApp.QuitDoc myTitle

 

Car si tu as plus de 30 fichiers pièces, ta solution ne fonctionnera pas !