Skip to content

Project File Formats

Version 1 files migrate their shared material to a named Project material. Version 1 and 2 files migrate their shared section to a named Project section. Versions 1 through 4 migrate existing loads into Case 1 with the original Service combination. Version 3 point loads and version 4 distributed loads remain supported. Versions 1 through 5 migrate to rigid member ends. Versions 1 through 6 open in Imperial, preserving their original inch-kip values. New 2D saves use version 27 and retain material/section definitions, member assignments, load cases, combination factors, the default load case, and each member end moment release, plus the selected unit system, point-load angle, and custom support restraints. Version 10 adds local force directions and angled distributed loading; version 9 and older files retain their saved global force directions and physical magnitudes. Version 11 adds the optional self-weight case and factor. Versions 1 through 10 open with automatic self-weight off so existing reactions do not change. Version 12 adds section catalog provenance and strong/weak-axis orientation. Older files retain their exact numerical properties as custom definitions. Version 13 adds material-library provenance; older materials remain custom. Version 14 adds the frame/truss member type. Earlier files keep frame behavior, including any existing end moment releases, without changing their response. Version 15 adds global support-spring stiffnesses and member-local axial/shear releases. Older files default to zero springs and connected translations. Older project loads retain their original directions and magnitudes. The JSON units field remains in-kip to identify the canonical storage units; unit_system controls presentation and input conversion. Malformed files are rejected before replacing the active project. Missing fields, incorrect collection/entity shapes, unknown entity fields, invalid references, boolean/string/nonfinite numerical values, and duplicate JSON keys produce readable errors. JSON syntax errors include their line and column. Supported planar versions 1 through 15, 21, 23, 25 and 27 are supported; legacy files are migrated without modifying the input; spatial versions 16/17/18/19/20/22/24/26/28 require an explicit dimension: "3D" marker and are validated separately. Spatial version 17 adds global angular forces with azimuth (angle) and elevation; version 16 axis-based loads migrate without changing their physics. Unsupported future versions and angular fields in version 16 are rejected. Spatial version 18 adds axial-only truss members; versions 16/17 remain frame-only inputs and migrate without changing their geometry, supports or loads. Spatial version 19 adds a required surfaces recipe map; versions 16/17/18 migrate to an empty map and cannot contain a surface field. Surface recipes keep their own strict format/version metadata and are validated/generated before a project replaces the active model. Spatial version 20 adds required surface_analysis_enabled (boolean) and surface_pressures (surface identifier to case-to-pressure map, canonical kip/in2). Older spatial files migrate with coupled analysis disabled and empty pressures. Surface rename/delete and load-case rename/delete preserve or guard these references. Planar version 21 and spatial version 22 add required analysis_method (linear or p_delta). Earlier files default to linear elastic and cannot silently contain a second-order setting. Planar version 23 and spatial version 24 add required editing-only groups (name to nodes/members ID lists), levels (name to canonical inch global-Y elevation) and snap_levels (boolean). Older files open with empty maps and snapping off. Nonempty metadata in older formats is rejected rather than dropped. Planar version 25 and spatial version 26 add optional material shear_modulus (null for derived G, positive finite canonical ksi for an independent value). Older files migrate with derived G and cannot contain an independent override. At that stage saves use 25/26; older applications reject these versions rather than lose the input. Standalone plate/mesh recipe formats remain unchanged and derived-G only. Spatial version 28 adds required surface_supports: surface identifier to outer edge (left/right/bottom/top) to a nonempty list of unique global rigid DOFs. Omit free edges. Legacy spatial versions migrate to an empty map; nonempty edge assignments in older versions and a missing field in version 28 are rejected. Assignments require rectangular Quad geometry and follow its current mesh. Spatial version 30 adds required frame-end RX/RY/RZ booleans, retaining the legacy RZ field names and adding the four RX/RY fields listed under Release Formulation. Older spatial files migrate with all new flags false. Nonempty rotational release flags in older formats and missing release fields in v30 are rejected, rather than silently changing connections. Spatial version 32 adds required DX/DY/DZ booleans at each frame end. It reuses the four previously false-only x/y fields and adds release_start_z/release_end_z. Older spatial formats migrate with all translational flags false; nonfalse flags in older versions, nonboolean flags and missing fields in v32 are rejected. Planar version 27 adds required node support_angle in degrees and the inclined roller preset. Older versions migrate to angle 0 without changing supports; nonzero angles/inclined presets in older schemas, missing v27 angles and malformed values are rejected. Spatial projects retain their existing support schema; nonzero support angles are rejected and no planar angle field is serialized. Spatial version 34 adds required node support_angle (normal azimuth) and support_elevation fields, the inclined preset and additional global restraints for that preset. Earlier spatial versions migrate zero orientation with their original supports; inclined/nonzero orientations in older schemas are rejected. Planar v27 keeps its original tangent convention. Missing current fields, malformed angles and angles attached to other presets are rejected. Planar version 29 and spatial version 36 add required node settlement_* fields: DX/DY/RZ and inclined-normal translation in 2D; all six global DOFs plus normal translation in 3D. Values are canonical inches/radians, default zero. Older schemas migrate zero movement without altering support conditions; nonzero movement in older versions, missing current fields, nonfinite/non-numeric values, movement on free/spring-only directions and inconsistent normal/global prescriptions are rejected. New saves use planar v29, spatial v36 and plate v3.

Spatial files retain XYZ, all six restraints/springs, and roll. Unknown/future versions are rejected rather than guessed. Node and member identifiers must be distinct so load targets are unambiguous. Editing a definition updates all members assigned to it and invalidates analysis results. No self-weight is applied automatically. Drawing an intersection alone does not connect it: use Edit > Connect Intersections to create explicit shared endpoints. Analysis requires one connected structure and rejects overlapping members or nodes inside unsplit members, avoiding implicit solver connections. Geometry connections use an absolute tolerance of 1e-8 inches. Distributed intensity is force per unit member length, not projected length. The connection/splitting commands in this section apply to 2D; spatial editing currently requires explicit segments.

Results are invalidated after engineering edits and belong to the analyzed project revision. Unit selection changes presentation only and retains valid analysis results. Result diagrams already open remain snapshots of that analysis.


Source: GUIDE.md. This manual follows the current repository; the published rc1 wheel has a smaller feature set.