VBA : Modifier un fichier sans ouvrir la 3D

Bonjour,

J'ai constaté dans des macros Excel, que lorsque j'ouvre plusieurs fichiers, certains ne se chargent pas dans l'écran Solidworks, pourtant, ils subissent bien les modifications (ce n'est pas un problème de rapidité, car je l'ai déjà vu avec F8).

J'ai remarqué que je suis parfois obligé de faire l'action Visible = True, pour que le fichier s'affiche à l'écran.

Maintenant, je me demande si il n'y a pas carrément une méthode qui permettrait d'ouvrir les fichiers sans les charger physiquement dans l'écran Solidworks. Histoire d'exploiter ce bug pour vérifier si la macro n'est pas plus rapide. Un peu comme avec Excel quand on annule le calcul automatique ou la mise à jour de l'écran.

 

Merci.

Bonjour,

Ce n'est pas un bug, cela permet juste de l'ouvrir et de faire les modifications plus rapidement. (pas de reconstruction ou de chargement graphique)

Ce mode est donc fait exprès, mais pas possible de lancer des modification dans solidworks sans au moins l'ouvrir un solidworks en version caché.

1 « J'aime »

Bonjour,

Pour "mais pas possible de lancer des modification dans solidworks sans au moins l'ouvrir un solidworks en version caché", sauf pour certaines manip en passant par les API Solidworks Document Manager ou il n'est pas nécessaire d'avoir Solidworks d'installé. Sinon je suis d'accord avec sbadenis.

Cordialement,

1 « J'aime »

"Ce mode est donc fait exprès"

Ouvrir Solidworks n'est pas un problème, mais comment peut-on ouvrir des fichiers volontairement de cette façon ?

Pour accélérer une macro il y a plusieurs méthodes qui peuvent être mise en place.

Comme:

swApp.UserControl = False
swApp.Visible = False

swModel.Visible = False

swApp.DocumentVisible(False, swDocumentTypes_e.swDocPART)
swApp.DocumentVisible(False, swDocumentTypes_e.swDocASSEMBLY)
swApp.DocumentVisible(False, swDocumentTypes_e.swDocDRAWING)

swModel.FeatureManager.EnableFeatureTree = False

swModel.FeatureManager.EnableFeatureTreeWindow = False

swApp.CommandInProgress = True

Dim modView as ModelView
set modView = swModel.ActiveView
modView.EnableGraphicsUpdate = False

voir ici pour plus d'information

Note: certaines fonctions API ne fonctionnent pas si la pièce n'est pas visible.

2 « J'aime »

Je ne sais pas par quelle fonction tu ouvre tes documents mais voici par exemple un petit extrait de la doc sur la fonction OpenDoc7 :

"ISldWorks::OpenDoc7 n’active pas et n’affiche pas le document si le fichier est déjà ouvert en mémoire dans un assembly ou un dessin. Toutefois, ISldWorks::OpenDoc7 doit renvoyer un pointeur IModelDoc2 valide utilisable avec des fonctions qui ne nécessitent pas d’affichage d’un document.

Si vous le souhaitez, ISldWorks::ActivateDoc2 ou ISldWorks::IActivateDoc3 activera et affichera le document. Étant donné que l’appel d’ISldWorks::OpenDoc7 n’active ni n’affiche le fichier, l’appel de la propriété ISldWorks::ActiveDoc ou ISldWorks::IActiveDoc2 ne renvoie pas de pointeur à ce document."

Cordialement,

1 « J'aime »