| 29 | |
| 30 | |
| 31 | class 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])) |