Je suis tombé sur une bizzarerie avec la fonction OpenDoc6. Dans une partie de ma macro je cherche à ouvrir consécutivement chaque composant de mon assemblage dans l'ordre du feature manager. Ce que je ne comprend pas c'est que je dois spécifié le type de document à ouvrir comme étant un assemblage pour ouvrir une pièce et inversévment pour ouvrir une pièce sinon le document ne s'ouvre pas.
If FileTyp = swDocPART Then swApp.OpenDoc6 CompPath, swDocASSEMBLY, swOpenDocOptions_Silent, ConfigName, longstatus, longwarnings End If
If FileTyp = swDocASSEMBLY Then swApp.OpenDoc6 CompPath, swDocPART, swOpenDocOptions_Silent, ConfigName, longstatus, longwarnings End If
C'est le fonctionnement normal de la méthode OpenDoc6. Voir ici : http://help.solidworks.com/2016/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.isldworks~opendoc6.html
Comment est déterminé le type de document à ouvrir?
Normalement ça devrait être ça:
' Determine type of SOLIDWORKS file based on file extension If InStr(LCase(sDocFileName), "sldprt") > 0 Then nDocType = swDocPART ElseIf InStr(LCase(sDocFileName), "sldasm") > 0 Then nDocType = swDocASSEMBLY ElseIf InStr(LCase(sDocFileName), "slddrw") > 0 Then nDocType = swDocDRAWING Else ' Probably not a SOLIDWORKS file nDocType = swDocNONE ' So cannot open the file Exit Sub End If
c'est du même ordre que pour appeler une propriété personnalisée dans une mmise en plan : $PRPSHEET si c'est défini dans le prt/asm, $PRP si c'est défini dans le drw...