bart
Novembre 16, 2015, 10:09
1
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 »
bart
Novembre 16, 2015, 10:13
2
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
remrem
Novembre 16, 2015, 10:21
3
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 »
bart
Novembre 16, 2015, 10:26
4
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 »
remrem
Novembre 16, 2015, 10:33
6
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 »
remrem
Novembre 16, 2015, 10:36
7
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 »
bart
Novembre 16, 2015, 10:43
9
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
bart
Novembre 16, 2015, 10:47
10
@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 »
remrem
Novembre 16, 2015, 10:53
11
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 »
bart
Novembre 16, 2015, 10:54
12
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?
bart
Novembre 16, 2015, 10:57
13
@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 »
remrem
Novembre 16, 2015, 12:03
15
1 « J'aime »
remrem
Novembre 16, 2015, 12:05
16
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 »
bart
Novembre 16, 2015, 12:57
18
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
bart
Novembre 16, 2015, 1:05
19
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 »
bart
Novembre 16, 2015, 1:21
20
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