Traitement nombre important de fichier.

vos questions concernant les API SolidWorks

Traitement nombre important de fichier.

Messagepar j-lo » Mar 06 Déc 2011, 7:15

Bonjour,

Je suis en train de développer un programme en Vb.net qui charge une liste de plans dans une liste box et peut effectuer diverses actions (mise à jour pièce, Mise en plan, assemblage, descendre la barre de blocage, exporter...).

Quand je lance mon programme j'ouvre SolidWorks, j'ouvre le fichier je fait mon action j'enregistre et je ferme le fichier. Je fais ça un nombre déterminé de fois (30 pour le moment) puis je ferme l’instance Solidworks j'en redémarre une autre et je recommence.

Le soucis c'est qu'au bout de 200 fichiers mon programme ce bloque et ne fait plus rien, pas de message d'erreur processus SolidWorks actif mais comme figé.

J'ai vu notamment que j'avais plusieurs instances swvbaserver d'ouverte malgré ma fermeture d'instance solidworks :
Code: Tout sélectionner
       'fermeture de tout les documents
                SwApp.CloseAllDocuments(True)
                SwApp.ExitApp()
                'libération de lobjet de com (a voir ca m'avais dépanner pour Excel)
                System.Runtime.InteropServices.Marshal.ReleaseComObject(SwApp)
                'Libération de l'instance
                SwApp = Nothing
                'Démarrage d'une nouvelle instance
                SwApp = New SldWorks.SldWorks


Je me suis aperçus qu'il me restait plusieurs instances SW ouverte malgré ce code.
Je pense que je dois oublier quelque chose ou ne pas faire correctement (désolé je ne suis pas dévellopeur).

Si quelqu'un à un idée.

Merci,
j-lo
Ewok SolidWorks
 
Messages: 13
Inscription: Ven 18 Juil 2008, 19:22

Messagepar fred_ecai » Mar 06 Déc 2011, 9:44

salut,

la fermeture de SolidWorks laisse toujours des trace dans le processus.... (enfin dans mon cas aussi.... )

Pourquoi tu ne traites pas tout d'un seul coup dans le même processus?

@+
Avatar de l’utilisateur
fred_ecai
Membres du Conseil SolidWorks
 
Messages: 1450
Inscription: Mar 22 Déc 2009, 9:09
Localisation: loire (42), Slw 2012 SP1.0 XP 64bit (in english please)

Messagepar j-lo » Mar 06 Déc 2011, 12:39

Je ne les traitent pas tous d'un seul coup car je peut en avoir Bcp (<1000) à traiter d'un coup et le gestionnaire de fenêtre solidworks plante après un grand nombre d'ouverture/fermeture.

De plus on m'a dit en formation qu'il n'était pas recommander d'ouvrir un grand nombre de fenêtres lorsque l'on travaille et qu'il été recommander de le fermer le midi par exemple (faute aux objets GDI semble t-il).

Si on prend le gestionnaire de tache planifié solidworks il ouvre et ferme solidworks à chaque plan.
j-lo
Ewok SolidWorks
 
Messages: 13
Inscription: Ven 18 Juil 2008, 19:22

Messagepar Annwn » Mar 06 Déc 2011, 13:05

Avant de fermer l'application SW, essaye de mettre End (ça vide les variables !)
Programmer, c'est bien; programmer utile, c'est mieux........
Venez faire un tour ici !
Annwn
Site Admin
 
Messages: 4938
Inscription: Lun 18 Déc 2006, 22:35

Messagepar j-lo » Mar 06 Déc 2011, 17:59

Je ne suis pas un pro du vb.net mais le END ne va pas terminer mon programme complet?
j-lo
Ewok SolidWorks
 
Messages: 13
Inscription: Ven 18 Juil 2008, 19:22

Messagepar Annwn » Mer 07 Déc 2011, 12:37

c'est vrai que j'ai dis ça en pensant au VBA :(

sur Vb.net je ne sait pas : essaye :wink:
Programmer, c'est bien; programmer utile, c'est mieux........
Venez faire un tour ici !
Annwn
Site Admin
 
Messages: 4938
Inscription: Lun 18 Déc 2006, 22:35

Messagepar j-lo » Mer 07 Déc 2011, 22:26

Le END ferme mon programme.
j-lo
Ewok SolidWorks
 
Messages: 13
Inscription: Ven 18 Juil 2008, 19:22

Messagepar Annwn » Jeu 08 Déc 2011, 13:04

Zut :(

On dirait pourtant que tu gardes quelque chose en mémoire ....
Programmer, c'est bien; programmer utile, c'est mieux........
Venez faire un tour ici !
Annwn
Site Admin
 
Messages: 4938
Inscription: Lun 18 Déc 2006, 22:35

Messagepar j-lo » Jeu 08 Déc 2011, 19:29

Ce que je ne comprend pas c'est ces instances swvbaserver qui se multiplient.
j-lo
Ewok SolidWorks
 
Messages: 13
Inscription: Ven 18 Juil 2008, 19:22

Messagepar j-lo » Ven 13 Juil 2012, 20:18

Bonjour,

Je revient sur ce sujet car j'i trouvé une solution.
Je fait un Kill.Process sur SLDWORKS et swvbaserver.
Ensuite je fait un Thread.Sleep(500) ce qui me fait une pause de 500ms qui laisse le temps de fermer les instance.

Plus de soucis ça pourras peut-être servir.
j-lo
Ewok SolidWorks
 
Messages: 13
Inscription: Ven 18 Juil 2008, 19:22


Retourner vers Questions générales sur les API

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

banniere