Je vous joins ma macro.... Pourriez vous me dire ce que je fais mal ?
merci d'avance de votre aide
LSE
Sub main()
Dim swModel As ModelDoc2 Dim swModelDocExt As ModelDocExtension Dim swSelMgr As SelectionMgr Dim partFile As String Dim assemblyFile As String Dim drawingFile As String Dim errors As Integer Dim warnings As Integer
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized
' Open an assembly document and select all components in the assembly
assemblyFile = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\samples\introsw\bolt-assembly.sldasm" Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.GetOpenDocumentByName(assemblyFile)
Je n'ai pas essayé la macro mais à la remarque : "j'obtiens un Run Time Error type 13 (typ mismatch)", je ne serais pas surpris que cela vienne du typage des variables "Dim errors As Integer" et "Dim warnings As Integer" qui normalement doivent être des "Long". Il faut aussi bien sûr vérifier que le fichier défini dans la variable "assemblyFile" soit bien existant.
Pour la question "Pourriez vous me dire ce que je fais mal ?" je ne m'étalerai pas, mes imminents collègues sbadenis et mandragore ayant déjà commencés à répondre ... mais je suis d'accord, voir plus, avec la remarque "mais c'est pas ce qu'il y a de plus clean" de sbadenis.
Dans la théorie l'assemblage est déjà ouvert donc solidworks va pas le ré-ouvrir.
Il faut jouer avec d'autre fonction je pense, met ton 130101 en alléger et activer ta macro, voir si il passe en résolue.
C'est de l'informatique les logiciels peuvent être très 'con'. Il y a énormément de fonction différente pour chaque fonction j'ai vue un '
swApp.CreateNewWindow' qui peu surement t'aider a forcé le logiciel a ouvrire ton 130101 dans une nouvelle fenêtre.
Après on a pas mal de monde qui fais de l'api ici si tu nous éclaire un peu plus sur ce que tu souhaite faire et pourquoi quelqu'un la peu être déjà fais ou on pourra t'aiguiller plus rapidement.
Si ton sous-assemblage est déjà ouvert dans SW alors il faut utiliser la fonction "ActivateDoc3" pour l'ouvrir (en réalité c'est activer qu'il faut dire puisqu'il est déjà ouvert) dans une nouvelle fenêtre de SW.
@mandragore: je ne suis pas tout à fait d'accord avec la remarque "C'est de l'informatique les logiciels peuvent être très 'con'. Il y a énormément de fonction différente pour chaque fonction", je trouve que les API sont plutôt assez logiques justement. Dans le cas présent il y a bien une différence entre "ouvrir" et "activer" ...