MXSIOY (MatrixFloor Interoperability data protocol)
The extended data input protocol MXSIOY (MatrixFloor Interoperability) is based on YML/JSON data formats. This is input only format. It designed to provide data in easy readable and convenient way. Like normal project format MXS or XML project format MXML, MXSIOY can be opened by MxFloor.exe main application and using MxFloorAPI.exe console application.
Files
Interoperability documentation files, sample files are provided by installation and are installed into %PROGRAMDATA%\Matrix\MatrixFrame 6.0\Interoperability directory.
All files from this directory can be downloaded as ZIP from here.
Sample
Here you can see the sample project (Interoperability\Documentation\MxFloor\AllFields.yml) with all possible supported input:
# header input data will be updated to be more user friendly with text project types support, text codes support
# also other header data like project/engineer info will be added
header:
version: 6.0.2 # optional, Major.Minor.ServicePack
codes:
general: NEN-EN
mxfloor:
settings: # required
loadCombGenerator: # required, see load comb generator documentation for options
buildingType: buildingsCC3 # required, value from loadCombGeneratorBuildingType
length: direct # optional, MxFloor.yml -> lengthType. default "direct"
multicore: true # optional, default "true"
phases: # optional, array, only if additional user montage phases are needed
- name: My Phase # required, reserved names: MxFloor.yml -> phaseId
biMaterial: true # optional, this value sets both 'biMaterialCalculations' and 'biMaterialSelfWeight'
biMaterialCalculations: true # optional, true if bimaterial sections should be used in all calculations except self weight for this phase
biMaterialSelfWeight: true # optional, true if bimaterial sections should be used in self weight calculations for this phase
prestress: acting # optional, MxFloor.yml -> phaseType
- name: montage # if 'montage' name is used, then bimaterial options can be changed for default Montage phase
biMaterial: true # optional, this value sets both 'biMaterialCalculations' and 'biMaterialSelfWeight'
biMaterialCalculations: true # optional, true if bimaterial sections should be used in all calculations except self weight for this phase
biMaterialSelfWeight: true # optional, true if bimaterial sections should be used in self weight calculations for this phase
prestressPatterns: # optional, see PrestressPatterns.yml
- name: Pattern 1
section: R100x100
strands:
- name: R7.5S7
h-d: 0.17
positions:
- position: 0.2248
material: Y1860
- position: 0.6
material: Y1860
- position: 0.975
material: Y1860
- name: R7.5S7
h-d: 0.042
positions:
- position: 0.049
material: Y1860
- position: 0.2248
material: Y1860
- position: 0.4124
material: Y1860
reinforcement: # optional, see SettingsReinforcement.yml
deflectionsDesign: none
generateProposals: true
generateBarPlacement: true
steel: B500B
topBottomReinforcementIdentical: false
basicAdditionalEqualDiameters: false
oneAdditionalNetBetweenBasic: false
combinedReinforcementInPhases: true
cutInsertionMargin: 0.05
concrete: # optional, see ConcreteSettings.yml
general:
filterNetsByBiggestDiam: false
beamsAndSlabs:
checkAnchorageForDiffSections: true
checkCrackingIfClassX0XC1: false
checkSymmetricBarCombinations: true
checkAnchorageCantElastFoundation: false
checkAnchorageInternalRelease: false
checkAnchorageForBottomReinfPrefab: false
checkIsDeepBeam: false
keepBasicReinfAfterRecalculation: true
keepAdditionalReinf: true
keepBasicAdditionalReinfAdvanced: true
sideReinfExtension: 0.07
switchOffDroplists: false
designBasicAdditionalEqualDiameters: false
checkXuMax: true
elasticFoundationKLambdaIsOne: true
ignoreAxialForceForReinfCalculation: true
advancedZCalculation: true
advancedAsLeverCalculation: true
checkOnConflicDiameters: true
roundBarCountToIntegerForNets: false
ignoreDeepBeamIfLovIsLessThan: 0.1
skipEN923_34_63As_IfMxLess: 100
crackingCheckEN1992: spacingAndDiameter_733
detectZeroPositionWithToleranceMy: 10
allowStirrupsForThinSlabs: false
thresholdForDetectingCutsMy: 1000
splitCutsIfAxialForceChanges: false
reductionForLatticeGirderAsi: 0
checkAsDbMinForDeepBeams: true
ignoreTopBarForLatticeGirder: true
beta1ForShearInterface: false
useTopBasicForThinSlabsLess251mm: false
applyDeepBeamRule_97_2_ForOridinaryBeams: true
lbdReductionForSlabs_844_2: true
defaults:
stirrupsDiameter: 0.008
reinfDiameter: 0.012
secondaryReinfDiameter: 0.006
designTwoBarsInRib: true
shearDesignInRib: mainReinf
prestressedMembers:
maximumTemperatureTMax: 0
initialTemperatureT0: 0
longitudinalCrackingPrevented: false
pmtTCalculation: brandforsk2016
deformations:
longLessEqualShort: true
steelDiagramInclinedBranch: false
betaFactor_743_3_Equal05: beta_05
checkDeflectionsByCalculation_743_3: Ms_Sr
extraDivisionPointsForMNKappaDiagram: 6
additionalCutsForStructuralMember: 6
parts: # required, array
- name: Part 1 # optional
level: 2 # optional, number
drawingNr: First floor # optional
category: category4a # optional, MxFloor.yml -> partCategory
engineerMain: John Smith # optional
engineerCheck: Ben Williams # optional
strips: # required, array
- name: Strip 1 # optional
generateLoads: true # optional, force to regenerate loads after load
data: # required
general: # required
type: floor # required, MxFloor.yml -> stripType
length: 5 # meters, required if project length is direct
extraBegin: 0.05 # meters, optional
extraEnd: 0.05 # meters, optional
remark: |
This is sample project.
It's purpose is to demonstrate
all possible inputs.
deflections: # optional
construction: floor # optional, MxFloor.yml -> stripConstruction
creepReduction: 1 # optional, valid range (0, 1], 1 - "no reduction"
wMax: 250 # optional
w23: 333 # optional
absolute: 0.015 # m, optional
camber: 0 # m, optional
concrete: # optional
crackCheck: true # optional
crackManage: true # optional
theta: 0 # degrees, optional, default 0 (auto)
fire: # optional
top: false # optional
bottom: true # optional
time: 60 # minutes, optional
trimming: # required only if strip type "trimming", array
reversed: false # optional
strips: # required, array
- name: Strip 1 # required, name of existing strip
shift: 0.2 # meters, optional
offset: 0.3 # meters, optional
reaction: true # false, if you do not want it acting as a reaction
- name: Strip 3
- name: Strip 4
- name: Strip 2
shift: 0.4
offset: 0.5
status: # optional
estimated: 20 # optional, number
spent: 15 # optional, number
type: percentage # optional, MxFloor.yml -> stripStatus
value: 0.5 # optional, only if type "percentage", valid range [0, 1]
date: 2021/05/26 # optional, format YYYY-MM-DD or YYYY/MM/DD
phases: # optional, array
- name: eol # required, name of existing phase. see settings -> phases
enabled: true # optional
time: 50y # optional, number folowed by 'd' (days) or 'y' (years)
humidity: 0.75 # optional, valid range [0, 1]
- name: montage
enabled: true
- name: loading
time: 28d
supports: # required, array
- distanceRelative: 0 # meters, required, any number or 'L'. 'L' supported only if settings->length is 'direct'
type: free # required, MxFloor.yml -> supportType
phases: eol|montage # optional, "all" or any other valid phase names separated by '|' from settings->phases. 'formwork' - not allowed
z: fixed # optional, Genral.yml -> supportStiffness, or any number
yr: free # optional, same as 'z', or percentage of stiffness if supported. i.e. 75%
size: 0 # meters, optional
shear: not topped # optional, MxFloor.yml -> supportShear
moment: not topped # optional, MxFloor.yml -> supportMoment
mpf: true # optional
- distanceRelative: L
type: free
releases: # optional, array
- distanceRelative: L # required, same as supports->distanceRelative
type: free # required, MxFloor.yml -> releaseType
phases: all # optional, same as support->phases. 'formwork' - not allowed
yr: free # optional, same as support->z
sections: # required, array
- distanceRelative: L # optional, same as supports->distanceRelative
#sectionId: 11131 # required this or sectionName, any valid section id. If sectionId is provided, sectionName is ignored.
sectionName: R1000x(50+200) # required this or sectionId, any valid section name
angle: 0 # optional
elementMaterial: C35/45 # required, any valid material name
elementCement: S # optional - "S", "N", "R"
layerMaterial: C20/25 # required if section is bi material
layerCement: S # optional, available if section is bi material, same as 'elementCement'
loadWidth: 1 # meters, optional
prefab: false # optional - true, false
prestress: false # optional - true, false
reinforcement: no proposals # optional, pattern name or one of keywords. MxFloor.yml -> fieldReinfRegular or MxFloor.yml -> fieldReinfPrestress
reinforcementInLayer: true # optional, Allowed if not prestressed and single material.
alignment: top # optional, MxFloor.yml -> fieldAlignment
surface: very smooth # optional, MxFloor.yml -> fieldSurface
stirrupsInPrefab: true # optional - true, false
fckT0: 45e6 # N/m2, optional
coverTop: # optional, see ConcreteCover.yml
exposureClass: XC1
structuralClass: S4
measureAccuracy: normal
castIn: standardFormwork
cover: 0.02
cDev: 0.005
aggregateSize: 0.0315
barDiameter: 0.012
coverSide: # optional, see ConcreteCover.yml
exposureClass: XC1
structuralClass: S4
measureAccuracy: normal
castIn: standardFormwork
cover: 0.02
cDev: 0.005
aggregateSize: 0.0315
barDiameter: 0.012
coverBottom: # optional, see ConcreteCover.yml
exposureClass: XC1
structuralClass: S4
measureAccuracy: normal
castIn: standardFormwork
cover: 0.02
cDev: 0.005
aggregateSize: 0.0315
barDiameter: 0.012
openings: # optional, array
- type: rect # requried, MxFloor.yml -> openingType
depth: h # meters, optional, "h" or any number
x: 0.2 # meters, required
y: 0.3 # meters, required
dx: 0.4 # meters, required
dy: 0.5 # meters, required if type is rect
filled: false # optional
loads: # optional
imposed: # optional, array
- category: category_B_OfficeAreas # requried, General.yml -> loadImposedCategory
qk: 1.5 # kNm, optional
partition: selfWeightLessEqual1 # optional, General.yml -> loadMovablePartitions
distance: 3 # meters, optional
- category: category_E1_Libraries
partition: selfWeightLessEqual1
dead: # optional
enabled: true # optional
factor: 0.5 # optional
finishings: # optional, array
- group: floors # required, General.yml -> loadFinishingCategory
type: finish_100_Sep_100 #required, General.yml -> loadFinishingType
xBegin: 0.5 # meters, optional
xEnd: 3.5 # meters, optional
- group: proppings
type: propping_260_mm
area: # optional, array
- type: dead # required, MatrixFloor.yml -> loadAreaType
subType: area # required, MatrixFloor.yml -> loadAreaSubType
load: 10e3 # N/m2, required
xBegin: 0.5 # meters, required
xEnd: 2.5 # meters, required, exception for subType 'lineY'
yBegin: 0.6 # meters, required
yEnd: 0.9 # meters, required, exception for subType 'lineX'
calculations: # optional, see LoadCalcs.yml
- page: 0
name: Page 1
values:
- i: q
d: permanentMedium
c: 5
- page: 1
name: Page 2
values:
- i: q1
d: permanentLight
c: 3
- i: q2
d: permanentHeavy
c: q1*3
cases: # optional, see LoadCases.yml
- name: test
type: imposedDistributed
category: category_E1_Libraries
psi0: 1
psi1: 0.9
psi2: 0.8
Cprob: 1.2
phases: eol # optional, assign load case to phase
loads: # optional, see Loads.yml
- t: q
v: q1
ve: q2
p: 0
pe: 1
d: z'
- t: qC
v: 3000
ve: 4000
p: 1
pe: 2
d: z'
- t: qG
v: 5000
d: z'
- t: qT
v: 6000
ve: 7000
d: yr'
- t: F
v: 8000
p: 3
- t: u
v: 3
- name: test2
type: permanent
favorite: both