浏览代码

Add live modelling CBD

Yentl Van Tendeloo 7 年之前
父节点
当前提交
aaf92f5727
共有 1 个文件被更改,包括 44 次插入0 次删除
  1. 44 0
      examples/live_modelling_CBD.py

+ 44 - 0
examples/live_modelling_CBD.py

@@ -0,0 +1,44 @@
+import sys
+sys.path.append("wrappers")
+from modelverse import *
+
+init()
+login("admin", "admin")
+
+model_add("formalisms/CBD/Design_MM", "formalisms/SimpleClassDiagrams", open("models/CBD/metamodels/CBD_MM.mvc", 'r').read())
+model_add("formalisms/CBD/PartialRuntime_MM", "formalisms/SimpleClassDiagrams", open("models/CBD/metamodels/CBD_MM_partial_runtime.mvc", 'r').read())
+model_add("formalisms/CBD/FullRuntime_MM", "formalisms/SimpleClassDiagrams", open("models/CBD/metamodels/CBD_MM_runtime.mvc", 'r').read())
+
+model_add("models/CBD_spring", "formalisms/CBD/Design_MM", open("models/CBD/models/cbd_spring.mvc", 'r').read())
+
+transformation_add_MANUAL({"Design": "formalisms/CBD/Design_MM"}, {"Design": "formalisms/CBD/Design_MM"}, "models/CBD/edit")
+
+def trace_D2P(model):
+    instantiate(model, "Association", ("Design/Block", "PartialRuntime/Block"), ID="D2P_block")
+
+transformation_add_AL({"Design": "formalisms/CBD/Design_MM", "PartialRuntime": "formalisms/CBD/PartialRuntime_MM"}, {"PartialRuntime": "formalisms/CBD/PartialRuntime_MM"}, "models/CBD/toRuntime", open("models/CBD/transformations/to_runtime.alc", 'r').read(), trace_D2P)
+
+def trace_P2F(model):
+    instantiate(model, "Association", ("PartialRuntime/Block", "FullRuntime/Block"), ID="P2F_block")
+
+transformation_add_AL({"PartialRuntime": "formalisms/CBD/PartialRuntime_MM", "FullRuntime": "formalisms/CBD/FullRuntime_MM"}, {"NewFullRuntime": "formalisms/CBD/FullRuntime_MM"}, "models/CBD/merge", open("models/CBD/transformations/merge.alc", 'r').read(), trace_P2F)
+transformation_add_AL({"FullRuntime": "formalisms/CBD/FullRuntime_MM"}, {"FullRuntime": "formalisms/CBD/FullRuntime_MM"}, "models/CBD/simulate", open("models/CBD/transformations/simulate.alc", 'r').read())
+transformation_add_AL({}, {}, "models/CBD/restartSim", open("models/generic/restart_simulation.alc", 'r').read())
+
+model_add("models/live_modelling_CBD", "formalisms/ProcessModel", open("models/CBD/PM_live_modelling.mvc", 'r').read())
+
+def modify_model(model):
+    print("Modifying model in edit operation")
+
+    if len(all_instances(model, "Design/ProbeBlock")) > 2:
+        import time
+        print("Sufficient Probeblocks detected, so pausing with edits")
+        while 1:
+            time.sleep(1)
+
+    print("Will modify!")
+    new_block = instantiate(model, "Design/ProbeBlock")
+    attr_assign(model, new_block, "name", "MyProbeBlock")
+    print("Added new probeblock: " + new_block)
+
+process_execute("models/live_modelling_CBD", {"design_model": "models/CBD_spring"}, {"models/CBD/edit": modify_model})