Project file
A Bim-Struc project is one JSON file (*.bimstruc), schema 1. Entities carry stable integer ids; the solver
model is index-based and built from it at run time. Unknown keys are preserved.
{"pframe": {"schema": 1, "app": "Bim-Struc"},
"settings": {"solver": "skyline", "consistent_mass": true, "physical_members": true},
"materials": [{"id": 1, "name": "Steel A992", "E": 2e11, "G": 7.7e10, "nu": 0.3, "rho": 7850, "alpha": 1.2e-5}],
"sections": [{"id": 1, "name": "W12X26", "shape": "W12X26", "A": ..., "Iyy": ..., "Izz": ..., "J": ..., "Asy": ..., "Asz": ...}],
"nodes": [{"id": 1, "x": 0, "y": 0, "z": 0, "mass": [6 numbers]}],
"supports": [{"node": 1, "restrained": [6 bools], "prescribed": [6], "spring": [6], "frame": [3]}],
"members": [{"id": 1, "n1": 1, "n2": 2, "section": 1, "material": 1, "type": "column", "beta": 0,
"releases_i": [6 bools], "releases_j": [6 bools], "offset_i": [3], "offset_j": [3]}],
"load_cases": [{"name": "D", "type": "dead", "self_weight": 1.0}],
"loads": {"nodal": [...], "member_dist": [...], "member_point": [...], "settlements": [...]},
"combinations": [{"name": "1.2D+1.6L", "factors": {"D": 1.2, "L": 1.6}, "kind": "linear"}],
"constraints": [...], "links": [...], "layers": [...], "design_groups": [...],
"grids": {"systems": [...], "levels": [{"name": "Base", "z": 0}]}}
Physical members are ordinary members with joints lying along them; settings.physical_members makes the solver
subdivide them before a run. Grids: see the grids block described in python/pframe/gui/grids.py.