完善MECMAS21参数配置与分组交互
This commit is contained in:
1 parent
32f21f08ff
commit
be54070855
28 files changed
+3418
-202
No files matched your search
@@ -164,8 +164,193 @@ class ComponentCatalogTests(unittest.TestCase):
|
||||
}
|
||||
self.assertEqual(components["amesim_mecmas21"]["category"]["id"], "mechanical")
|
||||
self.assertEqual([port["name"] for port in components["amesim_mecmas21"]["ports"]], ["port_2", "port_1"])
|
||||
self.assertEqual(components["amesim_mecmas21"]["modelVersion"], "0.2.0")
|
||||
self.assertEqual(
|
||||
components["amesim_mecmas21"]["parameterGroups"],
|
||||
[
|
||||
{
|
||||
"id": "friction",
|
||||
"label": "摩擦",
|
||||
"parameters": [
|
||||
"frictionType",
|
||||
"strib",
|
||||
"astrib",
|
||||
"fstick",
|
||||
"fcoul",
|
||||
"rvisc",
|
||||
"wind",
|
||||
"dvel",
|
||||
],
|
||||
"order": 10,
|
||||
"defaultExpanded": False,
|
||||
},
|
||||
{
|
||||
"id": "endstops",
|
||||
"label": "限位",
|
||||
"parameters": [
|
||||
"discContactOption",
|
||||
"xmax",
|
||||
"Kbmax",
|
||||
"Dbmax",
|
||||
"Pdmax",
|
||||
"xmin",
|
||||
"Kbmin",
|
||||
"Dbmin",
|
||||
"Pdmin",
|
||||
"restcoeff",
|
||||
"restdvel",
|
||||
],
|
||||
"order": 20,
|
||||
"defaultExpanded": False,
|
||||
},
|
||||
],
|
||||
)
|
||||
self.assertNotIn("parameterGroups", components["amesim_f000"])
|
||||
self.assertEqual(mecmas_parameters["mass"]["unit"], "kg")
|
||||
self.assertEqual(mecmas_parameters["Kbmin"]["unit"], "N/m")
|
||||
self.assertEqual(mecmas_parameters["theta"]["label"], "倾角(度)")
|
||||
self.assertIn("+90°", mecmas_parameters["theta"]["description"])
|
||||
self.assertIn("-90°", mecmas_parameters["theta"]["description"])
|
||||
self.assertEqual(
|
||||
{
|
||||
name: (
|
||||
mecmas_parameters[name]["editor"],
|
||||
[
|
||||
(option["value"], option["label"])
|
||||
for option in mecmas_parameters[name]["options"]
|
||||
],
|
||||
)
|
||||
for name in (
|
||||
"useFriction",
|
||||
"stoptype",
|
||||
"discContactOption",
|
||||
"strib",
|
||||
"frictionType",
|
||||
)
|
||||
},
|
||||
{
|
||||
"useFriction": ("choice", [(1.0, "否"), (2.0, "是")]),
|
||||
"stoptype": (
|
||||
"choice",
|
||||
[
|
||||
(1.0, "理想限位"),
|
||||
(2.0, "弹性限位"),
|
||||
(3.0, "恢复碰撞"),
|
||||
(4.0, "无限位"),
|
||||
],
|
||||
),
|
||||
"discContactOption": (
|
||||
"choice",
|
||||
[
|
||||
(1.0, "允许负接触力"),
|
||||
(2.0, "不允许负接触力"),
|
||||
],
|
||||
),
|
||||
"strib": ("choice", [(1.0, "否"), (2.0, "是")]),
|
||||
"frictionType": (
|
||||
"choice",
|
||||
[(1.0, "简单"), (2.0, "高级")],
|
||||
),
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
{
|
||||
name: mecmas_parameters[name]["visibleWhen"]
|
||||
for name in (
|
||||
"fstick",
|
||||
"fcoul",
|
||||
"rvisc",
|
||||
"wind",
|
||||
"dvel",
|
||||
"restdvel",
|
||||
"restcoeff",
|
||||
"astrib",
|
||||
"xmin",
|
||||
"Kbmin",
|
||||
"Dbmin",
|
||||
"Pdmin",
|
||||
"xmax",
|
||||
"Kbmax",
|
||||
"Dbmax",
|
||||
"Pdmax",
|
||||
"discContactOption",
|
||||
"strib",
|
||||
"frictionType",
|
||||
)
|
||||
},
|
||||
{
|
||||
"fstick": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 4.0]},
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
],
|
||||
"fcoul": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 4.0]},
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
],
|
||||
"rvisc": [
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
],
|
||||
"wind": [
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
],
|
||||
"dvel": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 4.0]},
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
{"parameter": "frictionType", "values": [2.0]},
|
||||
],
|
||||
"restdvel": [
|
||||
{"parameter": "stoptype", "values": [3.0]},
|
||||
],
|
||||
"restcoeff": [
|
||||
{"parameter": "stoptype", "values": [3.0]},
|
||||
],
|
||||
"astrib": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 4.0]},
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
{"parameter": "frictionType", "values": [2.0]},
|
||||
{"parameter": "strib", "values": [2.0]},
|
||||
],
|
||||
"xmin": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 3.0]},
|
||||
],
|
||||
"Kbmin": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"Dbmin": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"Pdmin": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"xmax": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 3.0]},
|
||||
],
|
||||
"Kbmax": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"Dbmax": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"Pdmax": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"discContactOption": [
|
||||
{"parameter": "stoptype", "values": [2.0]},
|
||||
],
|
||||
"strib": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 4.0]},
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
{"parameter": "frictionType", "values": [2.0]},
|
||||
],
|
||||
"frictionType": [
|
||||
{"parameter": "stoptype", "values": [1.0, 2.0, 4.0]},
|
||||
{"parameter": "useFriction", "values": [2.0]},
|
||||
],
|
||||
},
|
||||
)
|
||||
for name in ("mass", "theta", "useFriction", "stoptype", "v0", "x0"):
|
||||
with self.subTest(always_visible=name):
|
||||
self.assertNotIn("visibleWhen", mecmas_parameters[name])
|
||||
lstp_parameters = {
|
||||
parameter["name"]: parameter
|
||||
for parameter in components["amesim_lstp00a"]["parameters"]
|
||||
@@ -317,6 +502,7 @@ class ComponentCatalogTests(unittest.TestCase):
|
||||
self.assertIn("modelVersion", schema["$defs"]["component"]["required"])
|
||||
self.assertIn("version", schema["$defs"]["library"]["required"])
|
||||
parameter_schema = schema["$defs"]["parameter"]
|
||||
parameter_group_schema = schema["$defs"]["parameterGroup"]
|
||||
self.assertEqual(
|
||||
parameter_schema["properties"]["description"],
|
||||
{"type": "string", "minLength": 1},
|
||||
@@ -324,6 +510,21 @@ class ComponentCatalogTests(unittest.TestCase):
|
||||
self.assertNotIn("description", parameter_schema["required"])
|
||||
self.assertFalse(parameter_schema["additionalProperties"])
|
||||
self.assertNotIn("unknownField", parameter_schema["properties"])
|
||||
self.assertEqual(
|
||||
parameter_group_schema["required"],
|
||||
["id", "label", "parameters", "order", "defaultExpanded"],
|
||||
)
|
||||
self.assertTrue(
|
||||
parameter_group_schema["properties"]["parameters"]["uniqueItems"]
|
||||
)
|
||||
self.assertIn(
|
||||
"parameterGroups",
|
||||
schema["$defs"]["component"]["properties"],
|
||||
)
|
||||
self.assertNotIn(
|
||||
"parameterGroups",
|
||||
schema["$defs"]["component"]["required"],
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in new issue
Block a user