Ik ben op zoek naar een macro om elke 5 seconden automatisch een stuk te reconstrueren.
Voorlopig heb ik een macro waarmee ik een onderdeel opnieuw kan opbouwen, maar ik kan geen lus toevoegen die identiek is aan VBA.
Hier is de code om opnieuw te bouwen:
Dim swApp als object Deel dimmen als object Dim boolstatus als Booleaanse Dim longstatus As Long, longwarnings As Long Sub hoofd() Stel swApp in = _ Toepassing.SldWorks Deel instellen = swApp.ActiveDoc boolstatus = Deel.EditRebuild3() Einde Sub
Hier is mijn lus (VBA-type):
Sub tijd()
Application.OnTime Now + TimeValue("00:00:0"), "main"
Application.OnTime Now + TimeValue("00:00:05"), "time"
Einde Sub
Hoe kan ik deze lus aanpassen aan Solidworks, of is er een andere manier?
Ik denk niet dat ik de enige zal zijn die mezelf deze vraag stelt, maar wat heeft het voor zin om elke 5 seconden opnieuw op te bouwen?? Omdat er geen ruimte/tijd overblijft om aan het stuk te werken.
Persoonlijk geef ik de voorkeur aan de B-toets (alt+B standaard) en de Ctrl + Q die completer is.
Ik gebruik Solidworks als bedieningsscherm om op afstand een machine te bedienen die niet "zichtbaar" is.
Ik wil de positie en bewegingen van deze machine weten , dus heb ik een vergelijkingsgestuurde kinematica gemaakt waarmee ik alle bewegingen kan visualiseren . Mijn filmpje wordt elke 5 seconden bijgewerkt, maar ik moet elke keer op opnieuw bouwen klikken om de bewegingen te zien en ik zou graag willen dat het automatisch gaat.
Oké, het is in zekere zin een afleiding van de software, aangezien SW niet is gemaakt om een HMI aan de basis te zijn, maar waarom niet zolang het je lukt om de echte posities te herstellen.
Trouwens , hoe doe je dat, via de rede op de machineautomaat bijvoorbeeld?
Sorry voor deze vragen, maar het is meer om het waarom en hoe te begrijpen en degenen die later in je bericht zullen verschijnen.
Pas op dat u het geheugen niet verzadigt, want er bestaat een risico op crashen. Wanneer SW te lang wordt gebruikt met kinematica en frequente rebuilds, crasht SW en corrumpeert het vaak het ASM-bestand in het proces. Je kunt maar beter een duplicaat van je ASM hebben. ;-)
Vertel ons af en toe of het op uw machine doet wat ik beschrijf.
Om elke 5 seconden een lus te maken, stel ik deze code voor:
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
Ik denk echter niet dat het mogelijk is om met solidworks te communiceren wanneer een macro in een lus wordt uitgevoerd.
Op een klein bestand is er dit dat moet kunnen werken:
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
Maar ik heb nog nooit een groot bestand geprobeerd dat meer dan 5 seconden nodig heeft om opnieuw op te bouwen...