Faire des contraintes entre deux pièces
  • Topic:
    • SOLIDWORKS

  • 16 réponses
  • 2325 vues

Par Learn More Le 02 août 2018

Bonjour, 
le but de mon travail consiste à ajouter une pièce à un ensemble des pièces ,déjà existé, dans le logiciel solidwoks. En plus , il faut l'assembler avec cet ensemble en utilisant les API de VB.NET.
Donc, j'ai réussi à ajouter la pièce à l'ensemble des pièces dans Solidworks, mais le problème que je n'arrive pas à l'assembler avec VB.NET, j'ai fait plusieurs recherche sur le net et j'ai trouvé cet algorithme, quand je l’exécute il fonctionne sans erreur mais il n'effectue pas l'action d’assemblage.
voilà l'algorithme : 
 

Code:

strCompName = swComponent.Name2()
        Debug.Print(" la pièce est  " & strCompName)
        swModel.ClearSelection2(True)
        swDocExt = swModel.Extension()
        MateName = "Concentric" + strCompName
        FirstSelection = "Point1@Origin@" + strCompName & "@" + AssemblyName
        SecondSelection = "Point1@Origin@" + AssemblyName

        boolstat = swDocExt.SelectByID2(FirstSelection, "CONCENTRIC", 0, 0, 0, True, 1, Nothing, swSelectOption_e.swSelectOptionDefault)
        boolstat = swDocExt.SelectByID2(SecondSelection, "CONCENTRIC", 0, 0, 0, True, 1, Nothing, swSelectOption_e.swSelectOptionDefault)

   
        matefeature = swAssemblyDoc.AddMate3(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, mateError)
        swModel.ClearSelection2(True)


        swModel.ViewZoomtofit2()
en plus j'ai essayé d'ajouter MsgBox(mateError), et il me donne 4 comme résultat.
j'attend vos réponses et merci d'avance.

Meilleure réponse

d.roger | 19558 point(s)

Heu, petite vérification, tes pièces sont bien en mode résolues dans Solidworks sinon ça marche pas puisque les références telles que les origines des pièces ne sont pas chargées !!!!

Cordialement,

Les autres réponses

d.roger | 19558 point(s)

Heu, petite vérification, tes pièces sont bien en mode résolues dans Solidworks sinon ça marche pas puisque les références telles que les origines des pièces ne sont pas chargées !!!!

Cordialement,

Learn More | 146 point(s)

Oui Monsieur d.roger, j'ai changé le mode des pièces en résolus en cliquant sur l'assemblage et en changement le mode, maintenant, j'ai réussi a assemblé l'origine de la pièce à l'origine de l'assemblage.

Merci beaucoup monsieur pour votre aide et à tous les membres de forum qu'ils ont participé dans ce sujet.

 

Learn More | 146 point(s)

Bonjour,

s'il vous plait, j'ai deux petites questions :

1/ je veux assembler deux pièces en utilisant les axes que je les ai crée.

j'ai essayé ce code :

Code 

 FirstSelection = "Axe1@" + strCompName & "@" + AssemblyName
        SecondSelection = "Axe2@" + strCompModelname2 & "@" + AssemblyName

 

'Axe1 et Axe2 sont les noms des axes '

        boolstat = swDocExt.SelectByID2(FirstSelection, "AXIS", 0, 0, 0, True, 1, Nothing, 0)
        boolstat = swDocExt.SelectByID2(SecondSelection, "AXIS", 0, 0, 0, True, 1, Nothing, 0)
        matefeature = swAssemblyDoc.AddMate3(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, mateError)

 

mais, il m' a affiché que la sélection des axes est incorrect.

2/ comment je peux sélectionner une face de la pièce pour assembler deux pièces en utilisant les faces.

 

d.roger | 19558 point(s)

Bonjour,

Pour trouver les bonnes valeurs à mettre dans les lignes " SelectByID2 " et " AddMate3 " vous pouvez utiliser l'enregistreur de macro de Solidworks (voir ici), ne reste plus alors qu'à copier les lignes en question et adapter les noms des éléments selon votre besoin. 

Cordialement,