MatrixFloor MXSIOY protocol

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