Macro export déplié dxf BIS

Bonjour à tous,

Je reviens à la charge concernant la macro évoquée dans cette question.

Pour résumer, j'ai un fichier Excel qui est la commande du client d'un côté, et un fichier Solidworks paramétré de l'autre.

Je veux tout simplement qu'au lancement de la macro, Sw déplie chacune des config de ma familles de pièces et l'exporte en dxf avec le nom de la config.

 

J'ai donc télécharger la macro ici.

 

Mais je bloque sur certains points.

- Quand je lance la macro, celle-ci, en lisant ma famille de pièce, me crée des états dépliés (Flat pattern) pour toutes mes config. Pas grave, mais le soucis c'est qu'il exporte aussi ces config, je me retrouve donc avec des doublons de pièces.

 

- Ma pièce a besoin d'être reconstruite 2 fois pour que les quations se résolvent correctement. J'aimerai donc qu'avant l'export de chaque config, Sw reconstruise 2 fois la pièce avant chaque enregistrement en dxf.

 

Je pense que c'est à peu près tout...

Avec ça, je serais quasiment à la fin de mon "projet"

 

Merci à vous =)

 

 

1 « J'aime »

Info complémentaire pour ce qui ne savent pas, je n'ai aucune connaissance en Vba ^^

 

J'ai joint l'imprim écran de la macro de base


macro_de_base.png

Pour la reconstrution des pièces :

Utilise la méthode : Part.ForceRebuild3

Exemple ici : http://help.solidworks.com/2015/english/api/sldworksapi/rebuild_example_vb.htm

et ici (pour toutes les configurations) : http://help.solidworks.com/2015/english/api/sldworksapi/Forcibly_Rebuild_All_Configurations_Example_VB.htm

2 « J'aime »

Dans la macro actuelle j'ai :

 

bRebuild = swModel.ForceRebuild3(False)

Si tu passes ton "false" en "true", ca ne résouds pas le soucis ?

1 « J'aime »

Tu dois t'assurer de reconstruire la bonne configuration. Ici c'est le "Flat Pattern" qui t'intéresse.

Soit comme dans l'exemple deux tu créés une liste de toutes les configs et tu les reconstruits une par une.

Soit tu t'assures de sélectionner la bonne configuration par cette méthode : swModel.ShowConfiguration2(sConfigName)

Puis tu reconstruit le model.

2 « J'aime »

@ Coin37coin :

Ceci est une valeur de retour, qui permet de savoir si la reconstruction à renvoyée des erreurs : http://help.solidworks.com/2015/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IModelDoc2~ForceRebuild3.html

2 « J'aime »

Parcontre, je ne saisis pas le soucis quand tu dis 

 

"- Quand je lance la macro, celle-ci, en lisant ma famille de pièce, me crée des états dépliés (Flat pattern) pour toutes mes config. Pas grave, mais le soucis c'est qu'il exporte aussi ces config, je me retrouve donc avec des doublons de pièces." ... ce n'est pas ce que tu demandes quand tu dis "Je veux tout simplement qu'au lancement de la macro, Sw déplie chacune des config de ma familles de pièces et l'exporte en dxf avec le nom de la config." ?

 

(je dis pas que tu as tords hein, je dis que JE ne saisis pas ;) )

 

Edit : Haaa ok Remrem. Pour ça que ca marche pas comme je veux defois les trues et les falses. Je pensais que tu activais ou désactivais une fonction

1 « J'aime »

Oui @remrem
,

En gros, je m'en fout des config "pliés".

Ce qui m'interesse c'est d'exporter toutes les config flat pattern, mais sans que flat pattern apparaise dans le nom.

 

Dans l'exemple ci-joint, j'ai juste crée une seule config pour faire un essai.

La config se nomme "1625"

J'obtiens ces fichiers

 

 


resultat.png

@Coincoin, si en gros je ne veux qu'un config sur les deux

 

Je ne veux que le déplié de la pièce. Donc oui que la config "flat pattern" mais en enlevant le suffixe flat pattern

1 « J'aime »

Vu le code de la macro c'est normal :

Puisque :

  • Tu ouvres le fichier SW.
  • Tu listes le configurations.
  • Pour chaque configurations :
    • Tu sélectionnes la configurations
    • Tu reconstruit
    • Tu exportes la vue déplier avec le nom de la config dnas le nom du fichier dxf

 

As tu un moyen différencier le configurations dépiées ?

L'ensemble des fichiers sont dépliés ?

Tu peux poster ton code complet dans un txt ??

2 « J'aime »

C'est cette partie là que j'ai du mal à saisir :

 

"Dim FilePath As String
Dim PathSize As Long
Dim PathNoExtension As String
Dim NewFilePath As String

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 6)

NewFilePath = PathNoExtension + sConfigName & ".DXF"

'Export Flat Pattern
bRet = swModel.ExportFlatPatternView(NewFilePath, 1)

Next i

End Sub"

 

Ce que j'en déduis, Sw exporte chaque config avec le nom de la pièce, le nom de la config avec .dxf

Et ensuite exporte toutes les config "flat pattern"

C'est ça?

 

 

@remrem

 

Pour reconaitre mes différente pièce, il y aura son nom (Type 1) et sa config de longueur (ex:1625)

Ou T1 1625.dxf, le mieux serait d'avoir T1 LG 1625.dxf

 

Je te joins la macro

 

Là, j'arrive à avoir Nom de pièce "LG"nom de config.dxf

+ Nom de pièce "LG" "nom de config" flat pattern.dxf


macro_export_famille_de_piece_dxf.txt

Non, il créé un nouveau nom, puis export le flatPattern en lui joignant le nouveau créé

 

1 « J'aime »

Voici le fichier texte commenté.


macro_export_famille_de_piece_dxf.txt
1 « J'aime »

Voici une image avec des couleurs pour plus de compréhension.

Réalisée avec Notepad++

 

[Edit : ]

Pour le "nom" il s'agit d'une proprièté ?

La longueur est une propriété ou juste iclus dans le nom de la config ?

Tu peux m'envoyer une pièce type pour faire des tests ?


capture.png
2 « J'aime »

Pour contourner le soucis, je te dirais bien d'ajouter la ligne suivante après "FilePath=swModel.GetPathName"

 

if String.Left(sConfigName, pathSize-15) = "SM-FLAT-PATTERN" then 'Regarde si les 15 derniers carractère du nom correspondent à  SM-FLAT-PATTERN 

next i 'si oui, config suivante

else

 

Et de reprendre le cours normal de la macro ensuite sans oublier le "end if" avant "Next i"

 

 

1 « J'aime »

T'es un chef @remrem, avec ça, je comprends mieux le fonctionnement de la macro. =)

 

Le nom est juste le nom de la pièce, par la suite, je reprendrai juste le nom de la config

(Le T1 T2 T3 etc.. deviendront des config et non plus des pièces)

Le nom de la config n'est pas trop important du moment que je rcupère la logueur de la pièce dans le nom du Dxf.

 

Je te joint la pièce en question

 

 


corniere.zip

On approche de la perfection.

 

Pour contourner le problème du flat pattern,  j'ai crée des configurations dérivées au lieu des cofigurations classiques.

Je me retrouve donc avec juste mes déplié avec le bon nom associé.

 

Juste @remrem si tu peux jeter un coup d'oeil sur ma famille de pièce, voir si tu aurai fait pareil.

 

Merci encore! =)


resultat_2.png
1 « J'aime »

Petite amélioration :

 

Pour que tout soit impec, j'aimerai remplacer le om de la pièce (PatchNoExtension) par une propriété perso.

 

J'ai ajouté dans ma famille de pièce et dans mes propriétée une ligne "type"

J'aimerai qu'elle apparaisse dans le nom du dxf.

Exemple : T1(type) LG 16455(nom de config).dxf