VBA (IV 2018) - Dynamische Simulation steuern/anpassen/automatisieren
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Melden
Hallo Zusammen,
ich versuche mir seit längerem eine Vorlage zu erstellen um eine größtenteils vordefinierte Simulation durchzuführen.
Dabei komme ich an ein paar stellen nicht weiter und hoffe auf eure Hilfe.
Ziel wäre folgender Ablauf:
(x) Userform öffnen -> Hier möchte ich ein paar Werte eingeben und auf "ausführen" klicken (Form noch nicht vorhanden)
*Beginn Code
1. Starten der "Dynamischen Simulation"
2. Ändern der vorgegebenen Bewegung nach den Werten aus (x)
3. Anpassung der Simulationsdauer
4. Durchführen der Simulation
5. Ausgabediagramm anzeigen
6. Daten nach Excel exportieren
7. Excel-Datei speichern (gleiches Verzeichnis + Name wie die Baugruppe)
8. Öffnen einer anderen Excel-Datei aus besagtem Verzeichnis
*Ende Code
Den Code für Schritt 1 und 4 habe ich aus diesem Beitrag kopiert und angepasst. Das funktioniert soweit.
Sub Start_DynSim()
' Get the active document. This assumes it is an assembly.
Dim asmDoc As AssemblyDocument
Set asmDoc = ThisApplication.ActiveDocument
' The Dynamic Simulation environment must be active.
Dim UIManager As UserInterfaceManager
Set UIManager = ThisApplication.UserInterfaceManager
If UIManager.ActiveEnvironment.InternalName <> "DynamicSimulationEnvironmentInternalName" Then
' Get the environment manager.
Dim environmentMgr As EnvironmentManager
Set environmentMgr = asmDoc.EnvironmentManager
Dim dsEnv As Environment
Set dsEnv = UIManager.Environments.Item("DynamicSimulationEnvironmentInternalName")
Call environmentMgr.SetCurrentEnvironment(dsEnv)
End If
' Get the simulation manager from the assembly.
Dim simManager As SimulationManager
Set simManager = asmDoc.ComponentDefinition.SimulationManager
' Get the first simulation. Currently there is only ever one.
Dim sim As DynamicSimulation
Set sim = simManager.DynamicSimulations.Item(1)
' Check to see if the simulation has already been computed.
If sim.LastComputedTimeStep < sim.NumberOfTimeSteps Then
' Compute the simulation, which will also play it.
sim.ComputeSimulation
Else
' Play the computed simulation.
sim.PlaySimulation
End If
End Sub
Bei Schritt 2 und 3 habe ich auf Parameter gehofft, aber diese Start- /Endpunkte (siehe nachfolgenden beiden Bilder) lassen sich nicht parametrisieren 😕
Ich habe das Objekt "sim" nach diesen Werten durchsucht in der Hoffnung diese überschreiben zu können, aber bislang nicht gefunden.
Dim sim As DynamicSimulation
Set sim = simManager.DynamicSimulations.Item(1)
Die Schritte 5-8 wären nice-to-have.
Schritte 2 und 3 wäre mir wichtig.. wenn es hierfür eine Lösung gibt bin ich für jeden Tipp dankbar.
Schritt 5+6:
Anbei die ZIP mit meiner bisherigen Vorlage.
Die Userform nehme ich in Angriff sobald ich eine Möglichkeit gefunden habe die Werte in dem Fenster "Festgelegte Bewegung" zu überschreiben.
Danke an alle die sich hierfür Zeit nehmen!
Grüße,
Aleks
