Makro: Neu erstellen in einer Schleife (alle 5 Sekunden)

Hallo

Ich bin auf der Suche nach einem Makro, um ein Stück automatisch alle 5 Sekunden zu rekonstruieren.

Im Moment habe ich ein Makro, mit dem ich ein Teil neu erstellen kann, aber ich kann keine Schleife hinzufügen, die mit VBA identisch ist.

Hier ist der Code zum Neuerstellen:

Dimmen swApp als Objekt
               Teil als Objekt dimmen
               Dim boolstatus als boolescher Wert
               Dim longstatus As Long, longwarnings As Long
Sub main()
               swApp = _ setzen
               Anwendung.SldWorks
               Set Part = swApp.ActiveDoc
               boolstatus = Teil.EditRebuild3()
Ende Sub

 

Hier ist meine Schleife (VBA-Typ):

Unter-Zeit()

Application.OnTime Now + TimeValue("00:00:0"), "main"

Application.OnTime Now + TimeValue("00:00:05"), "Zeit"

Ende Sub

 

Wie kann ich diese Schleife an Solidworks anpassen, oder gibt es einen anderen Weg?

 

Danke für Ihre Hilfe

Hallo

Ich glaube nicht, dass ich der Einzige sein werde, der sich diese Frage stellt, aber was bringt es, alle 5 Sekunden neu aufzubauen?? weil es keinen Raum / keine Zeit lässt, um an dem Stück zu arbeiten.

Persönlich bevorzuge ich die B-Taste (standardmäßig Alt+B) und die Strg + Q, die vollständiger ist.

3 „Gefällt mir“

Ich verwende Solidworks als Steuerungsbildschirm, um eine Maschine fernzusteuern, die nicht "sichtbar" ist.

Ich möchte die Position und die Bewegungen dieser Maschine kennen , also habe ich eine gleichungsgesteuerte Kinematik entwickelt, die es mir ermöglicht, alle Bewegungen zu visualisieren . Meine Zwischensequenz wird alle 5 Sekunden aktualisiert, aber ich muss jedes Mal auf "Neu erstellen" klicken, um die Bewegungen zu sehen , und ich möchte, dass es automatisch geschieht.

Ok, es ist in gewisser Weise eine Ablenkung der Software, da SW nicht als HMI an der Basis gedacht ist, aber warum nicht, solange Sie es schaffen, die realen Positionen wiederherzustellen. 

Übrigens , wie macht man das, zum Beispiel über die Vernunft am Maschinenautomaten?

Entschuldigung für diese Fragen, aber es geht mehr darum, das Warum und Wie zu verstehen und diejenigen, die später in Ihrem Beitrag erscheinen werden.

Ist es normal, dass sich die Zeile "Application.OnTime Now + TimeValue("00:00:05"), "time" zwischen "Sub time()" und "End Sub" befindet?

Aus dem wenigen, das ich VBA praktiziere, habe ich den Eindruck, dass sich die Funktion "Zeit" selbst aufruft.

FUZ3D, Programmierer ermöglichen es mir, die Daten abzurufen. Entschuldigung, ich kann nicht mehr ins Detail gehen , Datenschutzbedenken.

Stefbeno, es ermöglicht mir, in einer Schleife zu touren

Hallo @ f.michaud

Ich habe ein bisschen HS

[HS Ein]

Achten Sie darauf, den Speicher nicht zu überlasten, da die Gefahr eines Absturzes besteht. Wenn eine SW zu lange mit Kinematik und häufigen Neuerstellungen verwendet wird, stürzt die SW ab und beschädigt dabei oft die ASM-Datei. Sie sollten besser ein Duplikat Ihres ASM haben. ;-)

Sagen Sie uns gelegentlich, ob es auf Ihrem Gerät das tut, was ich beschreibe.

[HS /Aus]

Herzliche Grüße

Hallo 

Um alle 5 Sekunden eine Schleife zu erstellen, schlage ich diesen Code vor:

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Dim oldTime As Date
Dim newTime As Date

Sub main()
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    
    oldTime = Time
    newTime = Time
    
    Do While 1 = 1:
        If newTime > oldTime + "0:00:05" Then
            boolstatus = Part.EditRebuild3()
            oldTime = Time
            
        Else: newTime = Time
        
        End If
        
    Loop
        
End Sub

 

Ich glaube jedoch nicht, dass es möglich ist, mit SOLIDWORKS zu interagieren, wenn ein Makro in einer Schleife ausgeführt wird.

In der Hoffnung, dass es Ihnen helfen kann.

 

Gauthik

1 „Gefällt mir“

Hallo

Glauben Sie, dass es mit einer großen Feile die Heizung ersetzen kann?

Ok, ich gehe raus :-)

2 „Gefällt mir“

Hallo

Bei einer kleinen Datei gibt es dieses, das in der Lage sein muss, zu funktionieren:

Dim swApp As Object
Dim Part As ModelDoc2
Dim boolstatus As Boolean
Dim PauseTime, Start

Sub main()
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    If Part Is Nothing Then
        MsgBox "Aucun fichier n'est chargé dans SW."
        Exit Sub
    End If
    Do While Part.GetTitle <> ""
        PauseTime = 5
        Start = Timer
        Do While Timer < Start + PauseTime
            DoEvents
        Loop
        Set Part = swApp.ActiveDoc
        If Part Is Nothing Then
            MsgBox "Traitement terminé."
            Exit Sub
        Else
            boolstatus = Part.EditRebuild3()
        End If
    Loop
End Sub

Aber ich habe es noch nicht mit einer großen Datei versucht, die länger als 5 Sekunden zum Wiederherstellen benötigt ...

Herzliche Grüße

2 „Gefällt mir“

 D.Roger, vielen Dank, es funktioniert perfekt!!

Gauthik67, danke, aber wenn ich das Makro starte, stürzt SolidWorks sofort ab.

Zozo_mp, ich nehme zur Kenntnis, danke, aber mein Stück besteht nur aus einer einzigen Skizze, also ziemlich leicht.

Gut gemacht d.roger, es sind die "DoEvents", die in meinem Code fehlten! Ich wusste nicht, dass es so etwas gibt, dazu lernen wir jeden Tag! :)

2 „Gefällt mir“

Hallo

Alles, was Sie also tun müssen, ist, die Antwort zu validieren, die Ihnen am meisten geholfen hat, Ihr Problem zu lösen.

Herzliche Grüße

1 „Gefällt mir“