Einfügen von Makro-Linearmotoren in der Animation

Hallo

Ich versuche, das nächste Makro zum Laufen zu bringen, aber es passiert nichts.

Kann es mir jemand erklären?

Vielen Dank im Voraus.

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


create_linear_motor_feature.txt

Zuallererst

Haben Sie Ihre Montage bereits durchgeführt?

Ist es geöffnet?

 

Montage hergestellt und geöffnet, aber es passiert nichts, nur die Uhrwerksstudie, die

Haben Sie die Optionen definiert, wie auf Ihrem Link angegeben?

 "Optionen definieren

    swMotorFeat. Interpolierter Motor swSimulationMotorDrive_Velocity, 1

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

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

1 „Gefällt mir“

In der Tat nicht getan.... Wie machen Sie das?

Nun, ich denke, Sie müssen Ihren Motor definieren, die Geschwindigkeit, die Richtung usw........

Ich dachte, diese Linien würden es Ihnen ermöglichen, den Motor mit der .csv-Datei als Link zum Importieren der Verschiebungsdatenpunkte zu erstellen, ohne den Motor zuerst in der Bewegungsstudie erstellen zu müssen.

Bedeutet das, dass Zeilen im Makro fehlen oder dass die Engine bereits erstellt sein muss?

 Schauen Sie sich an, was hier vermerkt ist: Es ist Ihr Link

  Motion 3 Study aktivieren

    swMotionStudy3. Aktivieren

    

   

    'Gesicht in Teil1 auswählen

    boolstatus = swModelDocExt. SelectByID2 ( "", "GESICHT", -0.07792618280496, ,06212618843159, 02214691016243, Falsch, 0, Nichts, 0)

        

    'Erstellung einer linearen Motorkennliniendefinition des Datenobjekts

    Set swMotorFeat = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Wenn swMotorFeat nichts ist, dann

       Debug.Print "FEHLER: Fehler bei der Erstellung des Datenobjekts für Moduleigenschaften."

        Sub verlassen

    Endet, wenn

Sehen Sie sich dieses Video auf Englisch an

https://youtu.be/rd6DqjREv-w

Hallo

Nein, ich denke, die Engine wird durch das Makro erstellt.

Ist die CSV-Datei gut beigefügt?

Haben Sie einen Verweis auf die SolidWorks MotionStudy-Typenbibliothek? (Lesen Sie den Hinweis zu den Voraussetzungen im Link)
 
Andernfalls verweisen Sie durch: SolidWorks> Tools> Macro> Edit, dann in Visual Basic: Tools> References und überprüfen Sie die oben erwähnte Bibliothek.

Ja, für die .csv Datei und ja für Referenzen.

Ich lege die CSV-Datei im selben Ordner wie die Assembly und das Makro ab, aber ich gebe den Pfad nicht an, sodass ich nicht weiß, ob das Makro die Daten abruft.

Das Makro hängt an dieser Zeile:

    ' Legen Sie die Lastreferenzen des Motor-Features, die Lasttragflächen

    swMotorFeat.LoadReferances = vContact


mit Laufzeitfehler '438'

Eigenschaft oder Methode, die von diesem Objekt nicht unterstützt wird

 

Vielleicht kann er die Kontaktgesichtsreferenz nicht finden?

wie oben in meinem Beitrag Teilkopie erwähnt

 ( 'Fläche auf Teil1 auswählen

    boolstatus = swModelDocExt. SelectByID2 ( "", "GESICHT", -0.07792618280496, ,06212618843159, 02214691016243, Falsch, 0, Nichts, 0)

        

    'Erstellung einer linearen Motorkennliniendefinition des Datenobjekts

    Set swMotorFeat = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Wenn swMotorFeat nichts ist, dann

       Debug.Print "FEHLER: Fehler bei der Erstellung des Datenobjekts für Moduleigenschaften."

        Sub verlassen

    Ende, wenn)

Ich denke, Sie müssen ein Objekt in der 3D-Ansicht auswählen, bevor Sie das Makro starten:

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

1 „Gefällt mir“

Ich denke, es kommt auch von dort, aber ich sehe nichts Ungewöhnliches in der Auswahl der Gesichter.

Ich denke mehr über die CreateDefinition-Zeile für die lineare Engine nach

@PL.: Auch wenn Sie ein Objekt auswählen, bevor Sie das Makro starten, will es das nicht.

 

Hier ist das Makro, das funktioniert:

Sub main()

Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Sun swSelMgr As SldWorks.SelectionMgr
Sun swMotionMgr als SwMotionStudy.MotionStudyManager
Dim swMotionStudy1 als SwMotionStudy.MotionStudy
Dim swMotorFeat As SldWorks.SimulationMotorFeatureData
Dim swGravityKunststück Als Objekt
Dim boolstatus als boolescher Wert
Dim swFeat As SldWorks.Feature

Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc

Legen Sie swModelDocExt = swModel.Extension fest
Legen Sie swSelMgr = swModel.SelectionManager fest

'---------
'Vordere Palette
boolstatus = Part.Extension.SelectByID2("", "GESICHT", 0.116975825107659, 9.86277918692053E-02, -2.07497793580842E-02, Falsch, 0, Nichts, 0)
Herkunft der Palette
boolstatus = Part.Extension.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, Falsch, 0, Nichts, 0)
Ursprung
boolstatus = Part.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, Falsch, 0, Nichts, 0)
'-------------------

' Holen Sie sich den MotionManager
Set swMotionMgr = swModelDocExt.GetMotionStudyManager()
Wenn (swMotionMgr ist nichts), dann
Ende
Ende, wenn

' Holen Sie sich Motion Study 1
Set swMotionStudy1 = swMotionMgr.GetMotionStudy("Bewegungsstudie 3")

' Aktivieren der Registerkarte "Bewegungsstudie" 1
swMotionStudy1.Aktivieren

' Erstellen der linearmotorischen Funktion als Datenobjekt
Set swMotorFeat = swMotionStudy1.CreateDefinition(swFmAEMLinearMotor)

' Zuweisung des interpolierten Verdrängungsmotors
swMotorFeat.InterpolatedMotor swSimulationMotorDrive_Displacement, 0


' Leitungsauftrag
boolstatus = swModelDocExt.SelectByID2("", "GESICHT", 0.195285205513159, 4.90124177502054E-02, -3.98286386705422E-02, Falsch, 0, Nichts, 0)
swMotorFeat.DirectionReference = swSelMgr.GetSelectedObject6(1, -1)


" Zuweisung des Einsatzortes des Motors
boolstatus = swModelDocExt.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, Falsch, 0, Nichts, 0)
swMotorFeat.Location = swSelMgr.GetSelectedObject6(1, -1)


' Zuordnen des Referenzobjekts
boolstatus = swModelDocExt.SelectByID2("Teil 1-1@toto-2", "KOMPONENTE", 0, 0, 0, Falsch, 0, Nichts, 0)
Dim RelObj As SldWorks.Component2
Set RelObj = swSelMgr.GetSelectedObjectsComponent3(1, -1)
swMotorFeat.RelativeComponent = RelObj


"Laden der Verschiebungsdatendatei
boolstatus = swMotorFeat.LoadSplineData("C:\CoordMX1.txt")


' Drucken Sie den Motortyp
Debug.Print swMotorFeat.MotorType

' Erstellen Sie das Linearmotor-Feature
Set swFeat = swMotionStudy1.CreateFeature(swMotorFeat)

Wenn swFeat nichts ist, dann

Debug.Print " FEHLER: Fehler bei der Erstellung der Motorfunktion."
Oder
Debug.Print "Name der hinzugefügten Funktion: " & swFeat.Name
Ende, wenn

 

Ende Sub


Danke für die Hilfe, damit es funktioniert

Tatsächlich sehen wir im Makro Folgendes:

  ' Gesicht in Teil2 auswählen

    boolstatus = swModelDocExt.SelectByID2("", "GESICHT", -0.07924982844941, 0.06212618843165, 0.03225592518596, Falsch, 0, Nichts, 0)

    swMotorFeat.RelativeComponent = RelObj

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

    ' Wählen Sie dieselbe Fläche auf Teil1 wie zuvor ausgewählt

    boolstatus = swModelDocExt.SelectByID2("", "GESICHT", -0.07792618280496, 0.06212618843159, 0.02214691016243, Falsch, 0, Nichts, 0)

Funktioniert dieses Teil gut?