Propriétés SolidWorks

Bonjour,

Sans Utilitaires MyCAD (sinon c'est trop facile!!!!) j'aimerais savoir s'il y a une possibilité d'extraire en masse une ou des propriétés personnalisées de pièces SolidWorks.

Oui sous VB.Net si tu connais je peut te passer quelque bout de codes qui me servais :)

1 « J'aime »

Oui je veux bien, se serait sympa.

merci

Bonjour,

l y'a eu un tuto sur un code VBA pour ça.

http://www.lynkoa.com/tutos/import-export-formats-neutres/macro-solidworks-exporter-les-propri%C3%A9t%C3%A9s-personnalis%C3%A9e-vers-exce

1 « J'aime »

Elle est bien cette macro mais elle ne traite pas des fichiers en masse et je suis obligé d'ouvrir SolidWorks.

Moi j'aimerais pouvoir le faire sans ouvrir SolidWorks.

1 « J'aime »

Je n'utilise plus ce code mais  al'epoque il focntionnais tient moi au courant

    ''' <summary>
    ''' Renvoi la propriete selectionner dans un fichier Solidworks Donnée
    ''' swSumInfoTitle = 0
    ''' swSumInfoSubject = 1
    ''' swSumInfoAuthor = 2
    ''' swSumInfoKeywords = 3
    ''' swSumInfoComment = 4
    ''' swSumInfoSavedBy = 5
    ''' swSumInfoCreateDate = 6
    ''' swSumInfoSaveDate = 7
    ''' swSumInfoCreateDate2 = 8
    ''' swSumInfoSaveDate2 = 9
    ''' </summary>
    ''' <param name="File">Fichier a controller</param>
    ''' <param name="PropNumber">Type d'info a recupere</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function ReadProperties(File As String, PropNumber As Integer) As String
        If File = Nothing Or PropNumber = Nothing Then Return Nothing
        Dim swDocSpecification As SldWorks.DocumentSpecification = swApp.GetOpenDocSpec(File)
        swDocSpecification.Silent = True : swDocSpecification.ReadOnly = True : swApp.OpenDoc7(swDocSpecification)
        Dim swModel As ModelDoc2 = swApp.ActiveDoc
        Dim Properties As String = swModel.SummaryInfo(PropNumber)
        swApp.CloseDoc(File) 'Fermeture de la piece
        If Not Properties = Nothing Then Return Properties Else Return Nothing
    End Function

    ''' <summary>
    ''' Inscrit la propriete selectionner dans un fichier Solidworks Donnée
    ''' swSumInfoTitle = 0
    ''' swSumInfoSubject = 1
    ''' swSumInfoAuthor = 2
    ''' swSumInfoKeywords = 3
    ''' swSumInfoComment = 4
    ''' </summary>
    ''' <param name="File">Fichier a éditer</param>
    ''' <param name="PropNumber">Type d'info a renseigner</param>
    ''' <param name="PropValue">Info a renseigner</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function WriteProperties(File As String, PropNumber As Integer, PropValue As String) ' As String
        Dim swDocSpecification As SldWorks.DocumentSpecification = swApp.GetOpenDocSpec(File)
        swDocSpecification.Silent = True : swDocSpecification.ReadOnly = False : swApp.OpenDoc7(swDocSpecification)
        Dim swModel As ModelDoc2 = swApp.ActiveDoc
        swModel.SummaryInfo(PropNumber) = PropValue
        Dim fileerror, filewarning As Integer
        swModel.Save3(SwConst.swSaveAsOptions_e.swSaveAsOptions_Silent, fileerror, filewarning)
        swApp.CloseDoc(File) 'Fermeture de la piece
        Return Nothing
        'If ReadProperties(File, PropNumber) = PropValue Then Return PropValue Else Return Nothing
    End Function
    Delegate Sub dEditDrawingProperties(DrawingToEdit As String)
    Function EditDrawingProperties(DrawingToEdit As String)
        Dim swDmDoc As SwDocumentMgr.ISwDMDocument18 = swDmGetDocument(DrawingToEdit, False) 'Ouverture du document
        'MAJ propriété général
        swDmSetCustomProperty(swDmDoc, "LBM_DWG", Regex.Match(DrawingToEdit, "N°([0-9]+)-0.SLDDRW", RegexOptions.IgnoreCase).Groups(1).Value, SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_REV", "0", SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_REV1", "0", SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_DATE1", Dateddmmyy, SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_MEMO1", "First Issue", SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_ISSUED1", User(), SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_PROJECT", DrawingToEdit.Split(New Char() {"\"c})(5), SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmDoc.Save() : swDmDoc.CloseDoc() 'Sauvegarde du document'Fermeture du document
        Return Nothing
    End Function

Sinon regarde du coté du swDocMgr http://help.solidworks.com/2016/english/api/swdocmgrapi/get_configuration_information_example_vbnet.htm

1 « J'aime »

Salut flegendre,

Pour accéder aux propriétés des fichiers SW sans les ouvrir il faut utiliser l'API Document Manager.

Comme indiqué dans l'aide tu dois pour cela effectuer une demande de licence gratuite en te connectant à ton espace client SW.

Ensuite dans "Mon assistance" clique sur "Assitance API". Puis sur " Document Manager Key Request "

Il te sera dmandé des informations sur ton entreprise et dans quel but tu souhaite utiliser cette licence.

Il y a pluieurs niveaux d'accès. Nous utilisons les fon,ctionnalités Basic et Preview. Ce qui est emplement suffisant.

Tu recevras un mail avec ton numéro de licence qui devra être intégré dans ton code. Tu devras refaire cette demande tous les ans pour accèder au fichiers SW avec la nouvelle version, et donc modifier la clé dans ton code.

As-tu déjà codé en Vb.Net ?

Utilises tu déjà un EDI ?

Que souhaite tu faire en détail ?

 

Bonne journée

 

2 « J'aime »

@remrem,

Personnellement je ne programme pas mais mon collègue ingénieur,lui, sait coder en VBA.

c'est quoi une EDI?

Ce que je veux faire exactement c'est ça:

j'aimerais pouvoir faire 2 choses (sans ouvrir SoloidWorks):

  •  lister les propriétés personnalisées des pièces SW présentent dans un répertoire unique, les envoyer dans un fichier Excel (pour pouvoir les trier par type de propriétés)
  • Pouvoir faire une recherche via une ou des propriétés depuis un répertoitre de pièces SW

 

 

1 « J'aime »

Un EDI est un "Environnement de développement intégré".

Personnellement j'utilise Visual Studio. Mais il en existe bien d'autres. Cela te permet de créer une petite application qui s'installe ensuite comme toute autre application.

Tu veux lister l'ensemble des propriétés de chaque fichier ou tu connais déjà le nom des propriétés que tu souhaites lire?

Tu veux lire les propriétés des .sldprt, sldasm et et slddrw ?

Attention le Vb.net est tout de même bien différent du VBA.

3 « J'aime »

"Tu veux lire les propriétés des .sldprt, sldasm et et slddrw ?"

Je veux lire uniquement les propriétés des pièces SLDPRT

"Tu veux lister l'ensemble des propriétés de chaque fichier ou tu connais déjà le nom des propriétés que tu souhaites lire?"

Dans le cas N°1, je veux lister "bêtement" toutes les propriétés de chaque pièce.

Exemple: je veux lister toutes les pièces ayant comme valeur FUNVISIO dans l'une des propriétés.

Dans le cas N°2, je connais les noms des propriétés et je veux faire ressortir rapidement celle avec une valeur connue.

Exemple: je veux lister toutes les pièces avec la propriété Matière = Alu