Je suis à la recherche d'une macro afin de reconstruire une pièce automatiquement toutes les 5 secondes.
Pour l'instant j'ai une macro qui me permet de reconstruire une pièce, mais impossible d'ajouter une boucle identique à VBA.
Voici le code pour reconstruire:
Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc boolstatus = Part.EditRebuild3() End Sub
Voici ma boucle (type VBA):
Sub time()
Application.OnTime Now + TimeValue("00:00:0"), "main"
Application.OnTime Now + TimeValue("00:00:05"), "time"
End Sub
Comment puis-je adapter cette boucle à Solidworks, ou bien est-ce qu'il existe un autre moyen ?
Je ne pense pas que je serai le seul à me poser cette question, mais qu'elle est l'intérêt de reconstruire toutes les 5sec?? par ce que ca ne laisse aucune place / temps pour travailler sur la pièce.
Perso je préfère utiliser la touche B (alt+B par défaut) et le Ctrl + Q qui est plus complet.
Je me sers de Solidworks comme écran de contrôle afin de télécommander une machine qui est n'est pas "visible".
Je veux connaître la position et les mouvements de cette machine. Pour cela j'ai créé une cinématique pilotée par des équations qui me permet de visualiser tous les mouvements. Ma cinématique est mise à jour toutes les 5 secondes, mais je dois cliquer à chaque fois sur reconstruire pour visualiser les mouvements et j'aimerais que cela soit automatique.
Ok s'est un détournement du logiciel en quelque sorte vu que SW n'est pas fait pour être un HMI à la base, mais pourquoi pas tant que vous arrivez à récupérer les positions réels.
D'ailleur comment faite vous, via raison sur l'automate machine par exemple?
Désolé pour ces question mais s'est plus pour comprendre le pourquoi du comment et ceux qui passeront par la suite sur votre post.
Attention à ne pas saturer la mémoire car risque de plantage. Lorsque l'on utilise trop longtemps SW avec de la cinématique et des reconstructions fréquentes, SW fini par planté et souvent aussi au passage de corrompre le fichier ASM. Tu a intérêt à avoir un double de ton ASM. ;-)
A l'occasion dis nous si cela fait sur ta machine ce que je décris.
pour faire une boucle toutes les 5 secondes je vous propose ce code:
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
Néanmoins je ne pense pas qu'il est possible d'intéragir avec solidworks lorsqu'une macro tourne en boucle.
Sur un petit fichier il y a ça qui doit pouvoir fonctionner :
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
Mais je n'ai pas essayé sur un gros fichier qui met plus de 5 secondes de reconstruction ...