Macro insertion moteur lineaire dans animation

Bonjour,

Je cherche à faire fonctionner la macro suivante, mais rien ne se passe.

Quelqu'un pourrait-il m'expliquer?

Merci d'avance.

http://help.solidworks.com/2015/english/api/sldworksapi/create_linear_motor_feature_example_vb.htm


create_linear_motor_feature.txt

avant toute chose

as tu deja fait ton assemblage ?

est 'il ouvert ?

 

assemblage réalisé et ouvert, mais rien ne se passe, juste l'étude de mouvement qui s'ouvre

as tu defini les options tel que cela est indique sur ton lien

 "Définir des options

    swMotorFeat. InterpolatedMotor swSimulationMotorDrive_Velocity, 1

    swMotorFeat. DirectionReference = swSelMgr.GetSelectedObject6 (1, -1)

    boolstatus = swMotorFeat. LoadSplineData ( «Test_bouncingBall.csv»)

1 « J'aime »

pas fait en effet....comment fait-on cela?

et bien je pense qu'il faut definir ton moteur la vitesse le sens etc........

je pensais que ces lignes permettait de créer le moteur avec comme liaison le fichier .csv pour importer les points de données de déplacement, sans avoir à créer le moteur auparavant dans l'étude de mouvement.

Cela veut dire que qu'il manque des lignes dans la macro ou bien que le moteur doit déjà être créer?

 regarde ce qui est note ici c'est ton lien

  'Activer étude Motion 3

    swMotionStudy3. Activer

    

   

    'Sélectionnez visage sur Part1

    boolstatus = swModelDocExt. SelectByID2 ( "", "VISAGE", -0,07792618280496, ,06212618843159, ,02214691016243, False, 0, Nothing, 0)

        

    'Créer linéaire caractéristique du moteur définition de l'objet de données

    Set swMotorFeat = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Si swMotorFeat est rien alors

       Debug.Print "ERROR: Création d'objet de données de caractéristiques du moteur a échoué."

        exit Sub

    Fin si

voir cette video en anglais 

https://youtu.be/rd6DqjREv-w

Bonjour,

Non je pense que le moteur est créé par la macro.

Le fichier CSV est bien rensiegné ?

As-tu la référence à la bibliothèque de type SolidWorks MotionStudy? (Lire la note Pré-Conditions dans le lien)
 
Sinon, référencer par: SolidWorks> Outils> Macro> Modifier, puis en Visual Basic: Outils> Références et cochez la bibliothèque mentionnée ci-dessus.

Oui, pour le fichier .csv et oui pour les références.

J'ai placé le CSV dans le même dossier que l'assemblage et la macro, par contre je ne spécifie pas le chemin d'accès, donc je ne sais pas si la macro va chercher les données?

La macro bloque à cette ligne:

    ' Set motor feature's load references, the load bearing faces

    swMotorFeat.LoadReferances = vContact


avec erreur d'execution '438'

Propriété ou méthode non gérée par cet objet

 

peut etre ne trouve t'il pas la reference de face de contact ?

tel que cite plus haut dans mon poste copie partiel

 ( 'Sélectionnez visage sur Part1

    boolstatus = swModelDocExt. SelectByID2 ( "", "VISAGE", -0,07792618280496, ,06212618843159, ,02214691016243, False, 0, Nothing, 0)

        

    'Créer linéaire caractéristique du moteur définition de l'objet de données

    Set swMotorFeat = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Si swMotorFeat est rien alors

       Debug.Print "ERROR: Création d'objet de données de caractéristiques du moteur a échoué."

        exit Sub

    Fin si)

Je pense qu'il faut sélectionner un objet dans la vue 3D avant de lancer la macro :

    Set ContactObj(0) = swSelMgr.GetSelectedObject6(1, -1)

1 « J'aime »

je pense que cela vient de là également, mais je ne vois rien d'anormal dans la sélection des faces.

je pense plus à la ligne CreateDefinition pour le moteur lineaire

@PL.: même en sélectionnant un objet avant de lancer la macro, cela ne veut pas.

 

Voila la macro qui fonctionne:

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSelMgr As SldWorks.SelectionMgr
Dim swMotionMgr As SwMotionStudy.MotionStudyManager
Dim swMotionStudy1 As SwMotionStudy.MotionStudy
Dim swMotorFeat As SldWorks.SimulationMotorFeatureData
Dim swGravityFeat As Object
Dim boolstatus As Boolean
Dim swFeat As SldWorks.Feature

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

Set swModelDocExt = swModel.Extension
Set swSelMgr = swModel.SelectionManager

'---------
'face avant palette
boolstatus = Part.Extension.SelectByID2("", "FACE", 0.116975825107659, 9.86277918692053E-02, -2.07497793580842E-02, False, 0, Nothing, 0)
'origine palette
boolstatus = Part.Extension.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
'origine repère
boolstatus = Part.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
'-------------------

' Get the MotionManager
Set swMotionMgr = swModelDocExt.GetMotionStudyManager()
If (swMotionMgr Is Nothing) Then
End
End If

' Get Motion Study 1
Set swMotionStudy1 = swMotionMgr.GetMotionStudy("Motion Study 3")

' Activation de l'onglet Etude de mouvement 1
swMotionStudy1.Activate

' Création de la fonction moteur linéaire en objet data
Set swMotorFeat = swMotionStudy1.CreateDefinition(swFmAEMLinearMotor)

' Affectation moteur déplacement interpolé
swMotorFeat.InterpolatedMotor swSimulationMotorDrive_Displacement, 0


' Affectation direction
boolstatus = swModelDocExt.SelectByID2("", "FACE", 0.195285205513159, 4.90124177502054E-02, -3.98286386705422E-02, False, 0, Nothing, 0)
swMotorFeat.DirectionReference = swSelMgr.GetSelectedObject6(1, -1)


' Affectation du point d'application du moteur
boolstatus = swModelDocExt.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
swMotorFeat.Location = swSelMgr.GetSelectedObject6(1, -1)


' Affectation de l'objet de référence
boolstatus = swModelDocExt.SelectByID2("Part 1-1@toto-2", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Dim RelObj As SldWorks.Component2
Set RelObj = swSelMgr.GetSelectedObjectsComponent3(1, -1)
swMotorFeat.RelativeComponent = RelObj


'Chargement du fichier de données de déplacement
boolstatus = swMotorFeat.LoadSplineData("C:\CoordMX1.txt")


' Print the motor type
Debug.Print swMotorFeat.MotorType

' Create the linear motor feature
Set swFeat = swMotionStudy1.CreateFeature(swMotorFeat)

If swFeat Is Nothing Then

Debug.Print " ERROR: Creation of the motor feature failed."
Else
Debug.Print "Name of the feature added : " & swFeat.Name
End If

 

End Sub


Merci pour l'aide pour la faire fonctionner

En fait dans la macro, on voit ceci :

  ' Select face on Part2

    boolstatus = swModelDocExt.SelectByID2("", "FACE", -0.07924982844941, 0.06212618843165, 0.03225592518596, False, 0, Nothing, 0)

    swMotorFeat.RelativeComponent = RelObj

    swMotorFeat.Location = swSelMgr.GetSelectedObject6(1, -1)

    ' Select same face on Part1 as previously selected

    boolstatus = swModelDocExt.SelectByID2("", "FACE", -0.07792618280496, 0.06212618843159, 0.02214691016243, False, 0, Nothing, 0)

Est-ce que cette partie fonctionne bien ?