Renseignements propriétés perso automatique

    Bonjour à tous,

 

  Je viens ici pour vous exposer une idée que je n'arrive pas à mettre en pratique.

 

 Je m'explique : j'ai un formulaire de propriétés personnalisées où je renseigne le nom du client, sa référence de chantier, et divers autres informations.

 

J'aimerai que Solidworks aille chercher automatiquement le nom du dossier dans lequel est enregistré la pièce, qui deviendra la référence de chantier.

 

Puis qu'il aille chercher le nom du dossier parents à celui-ci, qui deviendra lui, le nom du client.

 

Alors j'ai trouvé assez facilement comment renseigner le chemin du dossier, mais cela me donne un truc du genre c:/plan/client lambda/ref x.

 

Existe-t-il un moyen soit de choisir dans ce chemin quels caractères faire apparaître, soit de rentrer directement une formule comme demandé plus haut ?

 

J'espère avoir été clair dans mon explication.

 

Merci d'avance

 

Utilise tu l'EPDM???

 

Si oui je sais qu'il y a une technique relativement simple ais je ne m'en souvien plus trop, il faut que je regarde les template qui on été mis en place dans notre entreprise..

1 « J'aime »

Je n'utilise malhereusement pas l'EPDM...

arff..

 

Je vais rechercher un peu mais la... je sèche

Avez-vous regard avec SmartProperties?

J'ai déja posé cette question sur plusieurs forum, et pas mal de gens séche...

 

 

apparament impossible? J'en doute... ou peut-etre dans une future mise à jour qui c'est?

 

 

Pour répondre, je passe par l'éditeur de formulaire de propriétés 2014.

 

Merci encore.

 

 

Bonjour,

 

Je ne pense pas que ça soit possible en automatique, il faudra donc passer par une macro.

 

Pour débuter en macro VBA pour SolidWorks, regarde mon tutoriel si ça n'est pas déjà fait :

http://www.lynkoa.com/tutos/3d/macro-enregistrer-sous-avec-solidworks

 

Je crois que j'utilise le chemin du fichier à au moins 2 reprises (chemin ou path en anglaisdans la macro).

 

Et une piste pour ton problème (pas testée) :

 

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

swModel.AddCustomInfo2 "File Path", swCustomInfoText, Left(swModel.GetPathName,InStrRev(swModel.GetPathName, "\"))

End Sub

 

Source :

https://forum.solidworks.com/thread/42839

 

 

 

 

 

 

3 « J'aime »

Moi je pense que c'est faisable si dans le chemin du dossier tu as toutes tes informations (Client et ref chantier).

 

Tu crées une propriété temporaire qui récupère ton chemin puis après avec l'utilitaire Smartproperties et la fonction  "type chaine de caractere" tu récupères ton nom de client, ta ref de chantier, etc.....


type_chaine_de_caractere.png
7 « J'aime »

Voici un exemple, qui crer une propriété avec le nom du dossier

 

Imports SolidWorks.Interop

Imports SolidWorks.Interop.swconst

Imports System.Runtime.InteropServices

Imports System

 

Partial Class SolidWorksMacro

    ''' <summary>

    ''' The SldWorks swApp variable is pre-assigned for you.

    ''' </summary>

    Public swApp As sldworks.SldWorks

 

    Public Sub main()

 

        Dim swDoc As sldworks.ModelDoc2 = Nothing

 

        ' Document actif

        swDoc = CType(swApp.ActiveDoc, sldworks.ModelDoc2)

 

        ' Si il y a un document actif

        If swDoc Is Nothing Then Exit Sub

 

        ' Si le document à deja ete entregistré

        If Not IO.File.Exists(swDoc.GetPathName) Then Exit Sub

 

        ' Place les niveau des dossier dans une table (1° element => Disque, dernier element => nom du fichier)

        Dim stFolders As Array = swDoc.GetPathName.Split("\")

 

        Dim stParentFolder As String = stFolders(stFolders.Length - 2)

 

        AddProperty(swDoc, "Nom", stParentFolder)

 

    End Sub

 

    Function AddProperty(ByVal _Doc As sldworks.ModelDoc2, ByVal _Name As String, ByVal _Value As String) As Boolean

        Dim swCustProp As sldworks.ICustomPropertyManager = _Doc.Extension.CustomPropertyManager("")

        '  Dim iAdd As Integer = swCustProp.Add3(_Name, swCustomInfoType_e.swCustomInfoText, _Value, swCustomPropertyAddOption_e.swCustomPropertyReplaceValue)

        Dim iAdd As swCustomInfoType_e = swCustProp.Add2(_Name, swCustomInfoType_e.swCustomInfoText, _Value)

        If iAdd <> 1 Then

            swCustProp.Set(_Name, _Value)

        End If

 

    End Function

 

 

End Class


swmacro.zip
11 « J'aime »

Je ne suis pas expert en programmation VBA mais j'ai quand même repris le dernier post de Jfaradon.

 

Mais sur la ligne 2 il me trouve un erreur de compilation....

 

Je vais lire des tutos sur le vba pour voir si c'est dans ce sens là que je dois aller

 

Merci encore, je reviens vite vers vous!


vba.png

 

on ne peut pas fair un copier coller dans VBA comme sur la capture

 

reécupérer le zip et ouvrez le projet SwMacro.sln

c'est du VSTA ... pas du VBA (il existe deux outils de macro sur SW)

 

9 « J'aime »

Il n'y a pas dee projet SwMacro.sln dans votre zip.

 

 

Bonjour,

 

pour moi la meilleur solution est celle décrite par flegendre.

En tous cas c'est celle que j'applique chez nous.

C'est simple et ça marche très bien!!!

Oui emathubert, sauf que je n'ai pas smartproperties !!!

Pardon ouvrez le .vbproj !!!

Voir capture

 

.sln c'est avec l'outil Visual Studio 

 


sans_titre_-_1.jpg
2 « J'aime »

Toujours pas de solution? ... =)

Bonjour Bart,

Je ne sais pas si ça pourrait t'aider mais je suis tombé sur ce lien récemment :

http://www.leguide3d.com/profiles/blogs/concat-nation-de-propri-t-s-personnalis-s

ça pourrait, à priori, te servir à faire l'inverse, c'est à dire avoir une propriété "client", une propriété "ref" et te créer du coup ton chemin en associant ces propriétés.

Concernant l'extraction depuis le chemin, arrives-tu à récupérer le chemin de la pièce dans une propriété ?
Utilises-tu une table de famille de pièce ? Cela pourrait te servir d'extraire les propriétés dans Excel

D'autres pistes : 

https://forum.solidworks.com/message/306923#306923#306923

https://forum.solidworks.com/message/133512#133512#133512

http://www.forum-cao-3d.fr/api-questions/extraction-reference-solidworks-t12149.html

 

As-tu réussi à faire quelquechose avec les macros de @jfaradon ?

(Je travaille actuellement sur le même sujet)

1 « J'aime »

C'est un sujet que je fais en Fil rouge, car c'est pratique mais pas vitale non plus.

 

Par contre, je vais m'y remettre là, comme j'ai un peu de temps devant moi =)

 

J'arrive à récuperer nom du dossier où est enregistré la Mep, mais avec son chemin complet.

c'est à dire : C:/Plans Solidworks/ClientX/ChaniterY/affaireZ/....

 

Je regarde tout ça et te tient au courant ;)