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