Remplacement des propriétés personalisées

Existe t-il un maoyen de supprimer les propriétés personalisés d'un fichier pièce et d'en remettre des nouvelles de façon automatique. Nous avons un certain nombre de fichier ne possédant pas les propriété que nous utilisons (ex fichier de profil  pour le mécano soudé). Le but est de remttre rapîdement les nouvelles propriétés dans ces fichiers.

Nous évoluons sous SW 2016 version Prenium - Nous ne possédons aps les outils MyCad.

 

 

Bonjour,

Regardez voir du côté du planificateur de tâches ? Je ne suis pas sûr mais je pense que ça devrait fonctionner.

4 « J'aime »

Je viens de contrôler est ça devrait fonctionner.

http://help.solidworks.com/2016/french/solidworks/sldworks/r_task_sched_task_sidebar.htm

1 « J'aime »

Oui cela permet de mettre à jour des propriétés existante ou d'en créer des nouvelle mais il n'y pas possibilité de supprimer des propriétés existant afin de ne pas se retrouver avec une liste de propriété importante et des champs inutiles. Comment peut-on faire pour supprimer les propriétés existantes ?

Tu pourras utiliser le planificateur de tâches pour créer et remplacer tes propriétés, et si tu utilises l'enregistreur de macro pour supprimer les propriétés dont dû n'a pas besoin. Tu pourras aussi lancer celle-ci avec le planificateur et choisir les fichiers en questions.

Bonjour,

Si par macro, voici la fonction :

Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim config As SldWorks.Configuration
Dim cusPropMgr As SldWorks.CustomPropertyManager
Dim lRetVal As Long
Dim ValOut As String
Dim ResolvedValOut As String
Dim wasResolved As Boolean
Dim nNbrProps As Long
Dim vPropNames As Variant
Dim vPropTypes As Variant
Dim vPropValues As Variant
Dim resolved As Variant
Dim custPropType As Long
Dim K As Long
Dim NomProperty As String

Set cusPropMgr = swModelDocExt.CustomPropertyManager("")

nNbrProps = cusPropMgr.Count
vPropNames = cusPropMgr.GetNames
For K = 0 To nNbrProps - 1
    cusPropMgr.Get2 vPropNames(K), ValOut, ResolvedValOut
    custPropType = cusPropMgr.GetType2(vPropNames(K))
    If vPropNames(K) = "Description" Then
        NomProperty = ResolvedValOut
    End If
    If vPropNames(K) = "Dessinateur" Then
        PropMgr.Delete(vPropNames(K))
    End If
Next K

les lignes :

If vPropNames(K) = "Description" Then
        NomProperty = ResolvedValOut
End If

permettent de relever la valeur de la propriété personnalisée "Description".

Les lignes :

If vPropNames(K) = "Dessinateur" Then
        PropMgr.Delete(vPropNames(K))
End If

permettent de supprimer la propriété personnalisée "Dessinateur".

Tu dois pouvoir jongler avec ça.

Cordialement,

Ok, je vois le principe mais au niveau de la macro je ne suis pas assez de connaisnce en VBA, pour la créer, j'ai essayer d'enregister une macro aecla supression des propriétés mais cela ne fonctionne pas ... la macro est quasi "vide"


del_pte.swp

Bonjour,

Voici ta macro modifiée avec les lignes permettant de supprimer une propriété personnalisée ("DESSINATEUR" en l'occurence).

Cordialement,


del_pte.swp

Parfait, jsute une derniière chose au niveau du planificateur de tâches, je lance la macro avec "exécuter la tâche personnalisé" mais peut-on cibler tel ou tel dossier, je veux d'abord faire un test avec une partie des fichiers.

Bonjour,

Quand tu crée ta tache, tu sélectionne le dossier ou sont tes fichiers, voir image jointe.

Cordialement,


capture.png

Ok, pour lancer la création de nouvelle propriété sur un dossier, mais pour utiliser la macro de suppression j'utilise "exécuter la tâche" ( voir image jointe) il n'ya pas de champs pour pointer un dossier en particulier ...


2017-09-05_15_20_52-planificateur_de_taches_solidworks.png

Je ne connais pas suffisament cette fonctionnalité mais rien ne t'empêche de gérer ça dans ta macro en chargeant un fichier contenant la liste de tes 3D à traiter. Il faut alors que ta macro ouvre chaque fichier dans SW, supprime les propriétés personnalisées puis l'enregistre avant de passer au suivant.

Bonjour

j'avais cru un moment que l'utilitaire "BatchProperties" de MyCad était fait pour ca, mais je n'ai jamais réussi a faire ce que tu veux faire....

Car j'ai eu le même besoin que toi...

Si qqun l'utilise et y arrive, ca peut etre utile de l'acquerir si tu as beaucoup de fichiers à traiter.

Cordialement

Hubert

Bonjour,

Voici un bout de code en C# qui permet de faire ce que j'ai décrit dans mon post précédent :

private SldWorks swApp;
        
private void Button2Click(object sender, EventArgs e)
{
if (swApp == null)
{
swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
swApp.Visible = true;
}

string liste = Application.StartupPath + "\\" + "liste.csv";
foreach(string line in System.IO.File.ReadAllLines(liste, System.Text.Encoding.UTF8))
{
string[] parts = line.Split(';');
char[] MyChar = {'"'};
string fichier = parts[0].TrimStart(MyChar).TrimEnd(MyChar);

ModelDoc2 Part = null;
int longstatus = 0;
int longwarnings = 0;

if (fichier.ToLowerInvariant().Contains(".sldasm"))
{
Part = ((ModelDoc2)(swApp.OpenDoc6(fichier, (int)swDocumentTypes_e.swDocASSEMBLY, 0, "", ref longstatus, ref longwarnings)));
}
else if (fichier.ToLowerInvariant().Contains(".sldprt"))
{
Part = ((ModelDoc2)(swApp.OpenDoc6(fichier, (int)swDocumentTypes_e.swDocPART, 0, "", ref longstatus, ref longwarnings)));
}
else
{
continue;
}

//Mettre la fonction de suppression des propriétés personnalisées ici

Part.Save();

swApp.CloseDoc(fichier);
}
}

A améliorer et traduire en VBA ...

Cordialement,

Merci pour votre retour et vos explication, mais je manque vraiment de compétences pour réaliser ce type de macro ... je préfère donc faire simple ... lancer la macro depuis le planificateur de tâche en spécifiant un dossier particulier, cela est possible ? dans un second temps j'ajouterai les nouvelles propriété via le planificateur de tâches (cette seconde partie est ok pour moi)

Je ne sais pas si cela est possible mais à mon avis il faudra quand même que la macro analyse tous les fichiers présents dans le dossier qui serait passé en argument par le planificateur de tâche.

Pour ce type d'opération à faire je ne suis pas certain qu'il y est vraiment besoin du planificateur de tache (celui-ci ne servant qu'à éxécuter la macro à un horaire décalé).

Cordialement,

Ok je comprends d. roger mais "ac cobra 427" indique que l'on peut lancer la macro depuis le planificateur de tâches  ...  ac cobra 427  peux tu m'indique la démarche à suivre et comment selectioner seulement les fichiers souhaité (ok pour les proriété personnalisés, Nok poour lancer la macro sur certins fichiers)

Dsl je n'ai jamais eu besoin du planificateur de tâches, je pensais que ça fonctionnait car ils parlent de pouvoir lancer une macro... Au pire des cas si vous n'avez jamais eu les outils Mycad vous pouvez télécharger et tester pendant 1 mois je crois...

Voir screenshots.. Exécuter la tâche personnalisée.


screenshot_2017-09-06-07-01-29.png

Bonjour,

Pour lancer une macro par le planificateur de tache, voir :

http://help.solidworks.com/2016/french/SolidWorks/sldworks/t_Creating_a_Task_in_Run_Custom_Task_run_custom.htm

Pour créer la macro à lancer, voir :

http://help.solidworks.com/2016/french/SolidWorks/sldworks/t_Creating_a_SOLIDWORKS_Macro_Template.htm?id=57b26ed5a4094bd386de49ad15179393#Pg0&ProductType=&ProductName=

Cordialement,

Autrement quel est le code pour VBA pour créer une ligne de propiété et associer une valeur,  je pensais le faire avec le planificateur de têche mais cela ne fonctionne pas très bien il n'accepte pas les champs vide (ex la description sera rempli manuellement après par le dessinateur)