Parametrage avec excel en vba

bonjour,

j'ai realiser un fichier excel code en vba pour modifier un assemblage et ses pieces. il me manque quelques petite choses pour terminer.

- quel code utiliser pour reactiver ou desactiver une fonction d'une piece dans une configuration precise de cette piece (defaut ou sym)

- je donne la possibilite de changer le nom des pieces dans mon fichier excel, mais je n'arrive pas a recreer les liens avec mon nouvel assemblage, il recupere les nom d'origine. comment lui donner les nouveau liens avec les pieces modifiees.

je joins le code en exemple.

aidez moi svp.

cordialement.


code_pour_assemblage_parametre.txt

Salut.

 

Tu as dut bien t'amuser à créer ton petit programme ^^. Bref,

Je dis peut être une connerie, mais pour la sauvegarde de ton nom, tu lui indique bien d'allez chercher dans la cellule "D3" ... mais tu ne lui dis indique pas de quel fichier/feuille. Du coup, pour peu que la feuille ne soit pas active à ce moment là, il ne sait pas où allez chercher.

 

Je te colle aussi l'aide Sldw pour le Saveas3

 

Dim instance As IModelDoc2
Dim NewName As String
Dim SaveAsVersion As Integer
Dim Options As Integer
Dim value As Integer (ton "chemin_enr" que tu as déclaré "as long")
 
value = instance.SaveAs3(NewName, SaveAsVersion, Options)

 Du coup, pour toi ça pourrait donner

Dim swModel As IModelDoc2
Dim NewName As String
Dim SaveAsVersion As Integer
Dim Options As Integer
Dim value As Integer 

Newname = Z:\MACHINE\CONFO\" & Feuil3.Cells(3, "D").Value2 & ".sldprt"

(Dans le cas où ta case est feuille 3. Je ne suis pas persuadé que tu doives rajouter .sldprt à la fin. A tester)

chemin_enr = swModel.Saveas3(Newname, 0, 2)

 

merci du tuyau coin37coin, mais ma fonction enregistrer sous des pieces marche bien, c'est juste lorsque j'ouvre l'assemblage, il ne connais pas les nouveaux chemin d'acces des pieces, et donc ouvre les fichiers originaux.

peut etre que je devrait ouvrir l'assemblage avant de modifier mes pieces, et les enregistrer?

 

cordialement.

Haaa, pardon j'ai mal compris.

 

Si il enregistre bien des pièces, effectivement, tu devrais demander à ta macro d'ouvrir l'assemblage avant d'enregistrer la pièce puis d'enregistrer l'assemblage à la fin (n'oublie pas cette étape ;) )

 

En fait, ça agira comme si tu le faisais toi même : Lorsque ton assemblage est ouvert et que tu enregistre une pièce, il enregistre le nouveau chemin dans l'ensemble. (la fameuse case "enregistrer copie" à cocher quand on ne veut pas le faire)

Sinon, pour les configurations, tu devrais essayer le code "getconfigurationname" qui donnera la liste des configurations de ta pièces. 

Puis faire un menu déroulant pour pouvoir choisir la bonne config. Ensuite la "openmodelconfiguration" devrait te permettre d'ouvrir avec la config choisie

Et un petit coup de "getactiveconfiguration" en début de programme devrait te permettre de sélectionner l'actuel et d'y revenir lorsque tu fermeras la pièce

 

Mais ce ne sont là que des suppositions, je n'ai jamais testé ces codes

j'ai trouvé la solution:

-pour les config:

boolstatus = Part.Extension.SelectByID2("défaut@Embase confo ORIGINE.SLDPRT", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0)
        boolstatus = Part.ShowConfiguration2("défaut")
        boolstatus = Part.Extension.SelectByID2("Congé2@Embase confo ORIGINE-1@confo ORIGINE", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
        Part.EditSuppress2  'activer une fonction dans tel config de la piece
        Part.ClearSelection2 True

- pour l'enregistrement:

Set swModel = swApp.OpenDoc6("Z:\MACHINE\CONFO\0 confo ORIGINE 3D\confo ORIGINE.sldasm", 2, 0, "", longstatus, longwarnings)     'ouvre un fichier assemblage
    Set Part = swApp.ActiveDoc
    
    Part.ClearSelection2 True
    boolstatus = Part.Extension.SelectByID2("Embase confo ORIGINE-1@confo ORIGINE", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Range("d1").Value2 & " embase.sldprt", "", True, True)
    Part.ClearSelection2 True
    boolstatus = Part.Extension.SelectByID2("Aile confo ORIGINE-1@confo ORIGINE", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Range("d1").Value2 & " aile.sldprt", "", True, True)
    Part.ClearSelection2 True
    boolstatus = Part.Extension.SelectByID2("Couloir confo ORIGINE-1@confo ORIGINE", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Range("d1").Value2 & " couloir.sldprt", "", True, True)
    Part.ClearSelection2 True
    boolstatus = Part.Extension.SelectByID2("Couloir confo sym ORIGINE-1@confo ORIGINE", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Range("d1").Value2 & " couloir SYM.sldprt", "", True, True)
    Part.ClearSelection2 True
    boolstatus = Part.Extension.SelectByID2("Renfort embase confo ORIGINE-1@confo ORIGINE", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Range("d1").Value2 & " renfort embase.sldprt", "", True, True)
    Part.ClearSelection2 True
    boolstatus = Part.Extension.SelectByID2("Renfort embase confo sym ORIGINE-1@confo ORIGINE", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Range("d1").Value2 & " renfort embase SYM.sldprt", "", True, True)
    Part.ClearSelection2 True
    
    chemin_enr = swModel.Saveas3("Z:\MACHINE\CONFO\" & Range("d1").Value2 & ".sldasm", 0, 2)
    swApp.CloseDoc (swModel.GetTitle)
    Set swModel = swApp.OpenDoc6("Z:\MACHINE\CONFO\" & Range("d1").Value2 & ".sldasm", 2, 0, "", longstatus, longwarnings)
    Set Part = swApp.ActiveDoc

 

Salutations

2 « J'aime »

Bonjour , Auriez vous un exemple sur Excel (Macro) + fichier pour activer ou desactiver une fonction d'une piece svp ?

Salut,

Je te conseille de recrer une question parce que celle-là date de plus de deux ans.