MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / CommandFileConstructor

Class CommandFileConstructor

src/ifc2ca/scriptCodeAster.py:31–408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29
30
31class CommandFileConstructor:
32 def __init__(self, data: dict):
33 self.data = data
34 self.env = Environment(loader=FileSystemLoader(Path(__file__).parent / "templates"))
35
36 def getGroupName(self, name):
37 if "|" in name:
38 info = name.split("|")
39 sortName = "".join(c for c in info[0] if c.isupper())
40 return f"{sortName[2:]}_{info[1]}"
41 else:
42 return name
43
44 def calculateConstraints(self, rel):
45 gr1 = rel["groupName1"]
46 gr2 = rel["groupName2"]
47 o = np.array(rel["orientation"]).transpose().tolist()
48 liaisons = {
49 "groupNames": (gr1, gr1, gr1, gr2, gr2, gr2),
50 "coeffs": [],
51 "dofs": [],
52 }
53 stiffnesses = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
54 if not rel["appliedCondition"]:
55 rel["appliedCondition"] = {
56 "dx": True,
57 "dy": True,
58 "dz": True,
59 "drx": True,
60 "dry": True,
61 "drz": True,
62 }
63 if isinstance(rel["appliedCondition"]["dx"], bool) and rel["appliedCondition"]["dx"]:
64 liaisons["coeffs"].append((o[0][0], o[1][0], o[2][0], -o[0][0], -o[1][0], -o[2][0]))
65 liaisons["dofs"].append(("DX", "DY", "DZ", "DX", "DY", "DZ"))
66 elif isinstance(rel["appliedCondition"]["dx"], float) and rel["appliedCondition"]["dx"] > 0:
67 stiffnesses[0] = rel["appliedCondition"]["dx"]
68
69 if isinstance(rel["appliedCondition"]["dy"], bool) and rel["appliedCondition"]["dy"]:
70 liaisons["coeffs"].append((o[0][1], o[1][1], o[2][1], -o[0][1], -o[1][1], -o[2][1]))
71 liaisons["dofs"].append(("DX", "DY", "DZ", "DX", "DY", "DZ"))
72 elif isinstance(rel["appliedCondition"]["dy"], float) and rel["appliedCondition"]["dy"] > 0:
73 stiffnesses[1] = rel["appliedCondition"]["dy"]
74
75 if isinstance(rel["appliedCondition"]["dz"], bool) and rel["appliedCondition"]["dz"]:
76 liaisons["coeffs"].append((o[0][2], o[1][2], o[2][2], -o[0][2], -o[1][2], -o[2][2]))
77 liaisons["dofs"].append(("DX", "DY", "DZ", "DX", "DY", "DZ"))
78 elif isinstance(rel["appliedCondition"]["dz"], float) and rel["appliedCondition"]["dz"] > 0:
79 stiffnesses[2] = rel["appliedCondition"]["dz"]
80
81 if isinstance(rel["appliedCondition"]["drx"], bool) and rel["appliedCondition"]["drx"]:
82 liaisons["coeffs"].append((o[0][0], o[1][0], o[2][0], -o[0][0], -o[1][0], -o[2][0]))
83 liaisons["dofs"].append(("DRX", "DRY", "DRZ", "DRX", "DRY", "DRZ"))
84 elif isinstance(rel["appliedCondition"]["drx"], float) and rel["appliedCondition"]["drx"] > 0:
85 stiffnesses[3] = rel["appliedCondition"]["drx"]
86
87 if isinstance(rel["appliedCondition"]["dry"], bool) and rel["appliedCondition"]["dry"]:
88 liaisons["coeffs"].append((o[0][1], o[1][1], o[2][1], -o[0][1], -o[1][1], -o[2][1]))

Callers 1

run_code_asterMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected