diff --git a/.gitignore b/.gitignore index 1bdad8400..10f4e1422 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ FemDesign.Tests/Results/**/*.log /FemDesign.Examples/Python/jupyter-notebook/.ipynb_checkpoints /FemDesign.Python/packaging/src /FemDesign.Python/FEM-Design API +*.whl +*.gz +/FemDesign.Python/FEM_Design.egg-info diff --git a/FemDesign.Core/Bars/BarPart.cs b/FemDesign.Core/Bars/BarPart.cs index 69930f84c..04c63f8a0 100644 --- a/FemDesign.Core/Bars/BarPart.cs +++ b/FemDesign.Core/Bars/BarPart.cs @@ -533,23 +533,23 @@ public Eccentricity[] AnalyticalEccentricity [XmlAttribute("ecc_crack")] [DefaultValue(false)] - public bool EccCrack { get; set; } + public bool EccCrack { get; set; } = false; [XmlAttribute("first_order_analysis_U")] [DefaultValue(false)] - public bool FirstOrderAnalysisU { get; set; } + public bool FirstOrderAnalysisU { get; set; } = false; [XmlAttribute("first_order_analysis_Sq")] [DefaultValue(false)] - public bool FirstOrderAnalysisSq { get; set; } + public bool FirstOrderAnalysisSq { get; set; } = false; [XmlAttribute("first_order_analysis_Sf")] [DefaultValue(false)] - public bool FirstOrderAnalysisSf { get; set; } + public bool FirstOrderAnalysisSf { get; set; } = false; [XmlAttribute("first_order_analysis_Sc")] [DefaultValue(false)] - public bool FirstOrderAnalysisSc { get; set; } + public bool FirstOrderAnalysisSc { get; set; } = false; /// /// Parameterless constructor for serialization. diff --git a/FemDesign.Core/Calculate/Options.cs b/FemDesign.Core/Calculate/Options.cs index 4dbe2d21f..db089693e 100644 --- a/FemDesign.Core/Calculate/Options.cs +++ b/FemDesign.Core/Calculate/Options.cs @@ -28,7 +28,7 @@ public class Sort [DefaultValue(0)] [XmlElement("step")] - public double _step { get; set; } + public double _step { get; set; } = 0; [XmlIgnore] public double Step diff --git a/FemDesign.Core/FemDesign.Core.csproj b/FemDesign.Core/FemDesign.Core.csproj index 99ceda4ca..33b88e39d 100644 --- a/FemDesign.Core/FemDesign.Core.csproj +++ b/FemDesign.Core/FemDesign.Core.csproj @@ -144,7 +144,7 @@ - + diff --git a/FemDesign.Core/FemDesignConnection.cs b/FemDesign.Core/FemDesignConnection.cs index 57f9f8ec6..783df090b 100644 --- a/FemDesign.Core/FemDesignConnection.cs +++ b/FemDesign.Core/FemDesignConnection.cs @@ -32,7 +32,7 @@ namespace FemDesign /// public class FemDesignConnection : IDisposable { - private readonly int fdVersion = 24; + private readonly int fdVersion = 25; private readonly PipeConnection _connection; private readonly Process _process; public bool HasExited { get; private set; } @@ -71,7 +71,7 @@ public class FemDesignConnection : IDisposable /// BE CAREFUL!If true the will be deleted on exit. This option has no effect unless has been specified. /// public FemDesignConnection( - string fdInstallationDir = @"C:\Program Files\StruSoft\FEM-Design 24\", + string fdInstallationDir = @"C:\Program Files\StruSoft\FEM-Design 25\", bool minimized = false, bool keepOpen = false, string outputDir = null, @@ -110,7 +110,7 @@ public FemDesignConnection( } catch { - throw new Exception(@"fd3dstruct.exe has not been found. `C:\Program Files\StruSoft\FEM-Design 24\` does not exist!"); + throw new Exception($"fd3dstruct.exe has not been found. {installDir} does not exist!"); } _process.Exited += _processExited; @@ -142,10 +142,10 @@ public string SetFemDesignDirectory(string fdInstallationDir) var defaultDirs = new List() { - @"C:\Program Files\StruSoft\FEM-Design 24\", - @"C:\Program Files\StruSoft\FEM-Design 24 Educational\", - @"C:\Program Files\StruSoft\FEM-Design 24 Student\", - @"C:\Program Files\StruSoft\FEM-Design 24 Night Install\" // for StruSoft employees + @"C:\Program Files\StruSoft\FEM-Design 25\", + @"C:\Program Files\StruSoft\FEM-Design 25 Educational\", + @"C:\Program Files\StruSoft\FEM-Design 25 Student\", + @"C:\Program Files\StruSoft\FEM-Design 25 Night Install\" // for StruSoft employees }; foreach (var dir in defaultDirs) diff --git a/FemDesign.Core/Foundations/ExtrudedSolid.cs b/FemDesign.Core/Foundations/ExtrudedSolid.cs index 679b7e693..5c7c6acc3 100644 --- a/FemDesign.Core/Foundations/ExtrudedSolid.cs +++ b/FemDesign.Core/Foundations/ExtrudedSolid.cs @@ -16,7 +16,7 @@ public partial class ExtrudedSolid [XmlAttribute("abobe")] [DefaultValue(false)] - public bool Above { get; set; } + public bool Above { get; set; } = false; [XmlElement("region")] public FemDesign.Geometry.Region Region { get; set; } diff --git a/FemDesign.Core/Foundations/IsolatedFoundation.cs b/FemDesign.Core/Foundations/IsolatedFoundation.cs index 65cdcc335..cbc05b7dc 100644 --- a/FemDesign.Core/Foundations/IsolatedFoundation.cs +++ b/FemDesign.Core/Foundations/IsolatedFoundation.cs @@ -47,7 +47,7 @@ public partial class IsolatedFoundation : NamedEntityBase, IStructureElement, IF [XmlAttribute("analythical_system")] [DefaultValue(FoundationSystem.Simple)] - public FoundationSystem FoundationSystem { get; set; } + public FoundationSystem FoundationSystem { get; set; } = FoundationSystem.Simple; #region MATERIAL diff --git a/FemDesign.Core/Materials/Concrete.cs b/FemDesign.Core/Materials/Concrete.cs index 42bfb2ad0..ab2bf6a18 100644 --- a/FemDesign.Core/Materials/Concrete.cs +++ b/FemDesign.Core/Materials/Concrete.cs @@ -1,6 +1,6 @@ // https://strusoft.com/ -using StruSoft.Interop_24; +using StruSoft.Interop_25; using System.Xml.Serialization; namespace FemDesign.Materials @@ -12,16 +12,16 @@ namespace FemDesign.Materials public partial class Concrete: MaterialBase { [XmlElement("tda_creep")] - public StruSoft.Interop_24.Tda_creep2 CreepTimeDependant { get; set; } + public StruSoft.Interop_25.Tda_creep2 CreepTimeDependant { get; set; } [XmlElement("tda_shrinkage")] - public StruSoft.Interop_24.Tda_shrinkage ShrinkageTimeDependant { get; set; } + public StruSoft.Interop_25.Tda_shrinkage ShrinkageTimeDependant { get; set; } [XmlElement("tda_elasticity")] - public StruSoft.Interop_24.Tda_elasticity ElasticityTimeDependant { get; set; } + public StruSoft.Interop_25.Tda_elasticity ElasticityTimeDependant { get; set; } [XmlElement("plastic_analysis_data")] - public StruSoft.Interop_24.Concrete_pl_data Plasticity { get; set; } + public StruSoft.Interop_25.Concrete_pl_data Plasticity { get; set; } [XmlAttribute("Fck")] public string Fck { get; set; } // material_base_value @@ -101,7 +101,7 @@ internal void SetMaterialParameters(double creepUls, double creepSlq, double cre internal void SetPlasticity(bool plastic = true, bool hardening = true, CrushingCriterion crushing = CrushingCriterion.Prager, bool tensionStrength = true, TensionStiffening tensionStiffening = TensionStiffening.Hinton, ReducedCompression reducedCompression = ReducedCompression.Vecchio1, bool reducedTransverse = false, bool ultimateStrainRebars = true ) { - var plasticity = new StruSoft.Interop_24.Concrete_pl_attribs(); + var plasticity = new StruSoft.Interop_25.Concrete_pl_attribs(); plasticity.Elasto_plastic_behaviour = plastic; plasticity.Plastic_hardening = hardening; @@ -112,7 +112,7 @@ internal void SetPlasticity(bool plastic = true, bool hardening = true, Crushing else { plasticity.Concrete_crushing = true; - plasticity.Concrete_crushing_option = (StruSoft.Interop_24.Cc_type)crushing; + plasticity.Concrete_crushing_option = (StruSoft.Interop_25.Cc_type)crushing; } plasticity.Tension_strength = tensionStrength; @@ -124,7 +124,7 @@ internal void SetPlasticity(bool plastic = true, bool hardening = true, Crushing else { plasticity.Tension_stiffening = true; - plasticity.Tension_stiffening_option = (StruSoft.Interop_24.Ts_type)tensionStiffening; + plasticity.Tension_stiffening_option = (StruSoft.Interop_25.Ts_type)tensionStiffening; if(tensionStiffening == TensionStiffening.Hinton) plasticity.Tension_stiffening_param = 0.5; @@ -143,7 +143,7 @@ internal void SetPlasticity(bool plastic = true, bool hardening = true, Crushing else { plasticity.Reduced_compression_strength = true; - plasticity.Reduced_compression_strength_option = (StruSoft.Interop_24.Rcsm_type) reducedCompression; + plasticity.Reduced_compression_strength_option = (StruSoft.Interop_25.Rcsm_type) reducedCompression; if(reducedCompression == ReducedCompression.Cervera) plasticity.Reduced_compression_strength_param = 0.550; diff --git a/FemDesign.Core/Materials/Material.cs b/FemDesign.Core/Materials/Material.cs index 8a97b09f4..3d9ea9154 100644 --- a/FemDesign.Core/Materials/Material.cs +++ b/FemDesign.Core/Materials/Material.cs @@ -232,7 +232,7 @@ public static Material SetConcretePlasticity(this Material material, bool plasti return newMaterial; } - public static Material SetCreep(this Material material, int to = 28, int humidity = 50, bool nonLinearCreep = true, StruSoft.Interop_24.Cement_type cementType = StruSoft.Interop_24.Cement_type.Class_S, bool increaseFinalValue = true) + public static Material SetCreep(this Material material, int to = 28, int humidity = 50, bool nonLinearCreep = true, StruSoft.Interop_25.Cement_type cementType = StruSoft.Interop_25.Cement_type.Class_S, bool increaseFinalValue = true) { if (material.Concrete == null) { @@ -240,8 +240,8 @@ public static Material SetCreep(this Material material, int to = 28, int humidit } // deep clone. downstreams objs will have contain changes made in this method, upstream objs will not. - var creep = new StruSoft.Interop_24.Tda_creep2(); - creep.EN_199211_2004 = new StruSoft.Interop_24.Tda_creep_EN1992() + var creep = new StruSoft.Interop_25.Tda_creep2(); + creep.EN_199211_2004 = new StruSoft.Interop_25.Tda_creep_EN1992() { T0 = to, RH = humidity, @@ -263,7 +263,7 @@ public static Material SetCreep(this Material material, int to = 28, int humidit return newMaterial; } - public static Material SetShrinkage(this Material material, int to = 28, int humidity = 50, StruSoft.Interop_24.Cement_type cementType = StruSoft.Interop_24.Cement_type.Class_S) + public static Material SetShrinkage(this Material material, int to = 28, int humidity = 50, StruSoft.Interop_25.Cement_type cementType = StruSoft.Interop_25.Cement_type.Class_S) { if (material.Concrete == null) { @@ -271,8 +271,8 @@ public static Material SetShrinkage(this Material material, int to = 28, int hum } // deep clone. downstreams objs will have contain changes made in this method, upstream objs will not. - var shrinkage = new StruSoft.Interop_24.Tda_shrinkage(); - shrinkage.EN_199211_2004 = new StruSoft.Interop_24.Tda_shrinkageEN_199211_2004() + var shrinkage = new StruSoft.Interop_25.Tda_shrinkage(); + shrinkage.EN_199211_2004 = new StruSoft.Interop_25.Tda_shrinkageEN_199211_2004() { Ts = to, RH = humidity, @@ -292,7 +292,7 @@ public static Material SetShrinkage(this Material material, int to = 28, int hum return newMaterial; } - public static Material setElasticity(this Material material, int to = 28, StruSoft.Interop_24.Cement_type cementType = StruSoft.Interop_24.Cement_type.Class_S) + public static Material setElasticity(this Material material, int to = 28, StruSoft.Interop_25.Cement_type cementType = StruSoft.Interop_25.Cement_type.Class_S) { if (material.Concrete == null) { @@ -300,8 +300,8 @@ public static Material setElasticity(this Material material, int to = 28, StruSo } // deep clone. downstreams objs will have contain changes made in this method, upstream objs will not. - var elasticity = new StruSoft.Interop_24.Tda_elasticity(); - elasticity.EN_199211_2004 = new StruSoft.Interop_24.Tda_elasticityEN_199211_2004() + var elasticity = new StruSoft.Interop_25.Tda_elasticity(); + elasticity.EN_199211_2004 = new StruSoft.Interop_25.Tda_elasticityEN_199211_2004() { T0 = to, Cement_type = cementType, diff --git a/FemDesign.Core/Materials/MaterialDatabase.cs b/FemDesign.Core/Materials/MaterialDatabase.cs index d653a1a65..9f938550e 100644 --- a/FemDesign.Core/Materials/MaterialDatabase.cs +++ b/FemDesign.Core/Materials/MaterialDatabase.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Linq; using System.Xml.Serialization; +using FemDesign.Materials; namespace FemDesign.Materials { @@ -106,37 +107,7 @@ public List MaterialNames() /// public Material MaterialByName(string materialName) { - if (this.Materials != null) - { - foreach (Material material in this.Materials.Material) - { - if (material.Name == materialName) - { - // update object information - //material.Guid = System.Guid.NewGuid(); - material.EntityModified(); - - // return - return material; - } - } - } - if (this.ReinforcingMaterials != null) - { - foreach (Material material in this.ReinforcingMaterials.Material) - { - if (material.Name == materialName) - { - // update object information - //material.Guid = System.Guid.NewGuid(); - material.EntityModified(); - - // return - return material; - } - } - } - throw new System.ArgumentException($"Material was not found. Incorrect material name ({materialName}) or empty material database."); + return this.Materials.Material.MaterialByName(materialName); } public List GetSoilMaterial() diff --git a/FemDesign.Core/Model/Entities.cs b/FemDesign.Core/Model/Entities.cs index 71b8c3444..4b3480c28 100644 --- a/FemDesign.Core/Model/Entities.cs +++ b/FemDesign.Core/Model/Entities.cs @@ -75,7 +75,7 @@ public partial class Entities [XmlElement("punching_reinforcement", Order = 20)] public List PunchingReinforcements { get; set; } = new List(); - [Obsolete("Use `NoShearControlRegions`", true)] + [Obsolete("Use `NoShearControlRegions`")] [XmlElement("no-shear_region", Order = 21)] public List NoShearRegions { get; set; } = new List(); diff --git a/FemDesign.Core/Model/Model.cs b/FemDesign.Core/Model/Model.cs index 8e574b445..eff579972 100644 --- a/FemDesign.Core/Model/Model.cs +++ b/FemDesign.Core/Model/Model.cs @@ -106,7 +106,7 @@ public partial class Model public List BoltTypes { get; set; } [XmlElement("bar_end_lib_type", Order = 19)] - public List BarEndReleaseTypes { get; set; } + public List BarEndReleaseTypes { get; set; } [XmlElement("geometry", Order = 20)] public StruSoft.Interop.StruXml.Data.DatabaseGeometry Geometry { get; set; } @@ -344,7 +344,7 @@ public string SerializeToString() /// /// Add entities to Model. /// - public Model AddEntities(List bars, List fictitiousBars, List shells, List fictitiousShells, List panels, List covers, List loads, List loadCases, List loadCombinations, List supports, List storeys, List axes, List loadGroups, bool overwrite) + public Model AddEntities(List bars, List fictitiousBars, List shells, List fictitiousShells, List panels, List covers, List loads, List loadCases, List loadCombinations, List supports, List storeys, List axes, List loadGroups, bool overwrite) { // check if model contains entities, sections and materials if (this.Entities == null) @@ -418,12 +418,7 @@ public Model AddEntities(List bars, List } if (loads != null) - { - foreach (object load in loads) - { - this.AddLoad(load, overwrite); - } - } + this.AddLoads(loads, overwrite); if (loadCases != null) { diff --git a/FemDesign.Core/Properties/GlobalAssemblyInfo.cs b/FemDesign.Core/Properties/GlobalAssemblyInfo.cs index 8490cc46c..a395682f7 100644 --- a/FemDesign.Core/Properties/GlobalAssemblyInfo.cs +++ b/FemDesign.Core/Properties/GlobalAssemblyInfo.cs @@ -23,5 +23,5 @@ // Revision // -[assembly: AssemblyVersion("24.3.0")] -[assembly: AssemblyFileVersion("24.3.0")] +[assembly: AssemblyVersion("25.0.0")] +[assembly: AssemblyFileVersion("25.0.0")] diff --git a/FemDesign.Core/Reinforcement/PunchingReinforcement.cs b/FemDesign.Core/Reinforcement/PunchingReinforcement.cs index d940c85c2..cee1f66db 100644 --- a/FemDesign.Core/Reinforcement/PunchingReinforcement.cs +++ b/FemDesign.Core/Reinforcement/PunchingReinforcement.cs @@ -1,4 +1,5 @@ using FemDesign.GenericClasses; +using System.ComponentModel; using System.Xml.Serialization; @@ -150,10 +151,10 @@ public partial class StudRails public PeikkoPsbProduct PeikkoPsbProduct { get; set; } [XmlAttribute("pattern")] - public Pattern Pattern { get; set; } + public Pattern Pattern { get; set; } = Pattern.SemiOrthogonal; [XmlAttribute("s0")] - public double _s0 { get; set; } + public double _s0 { get; set; } = 0.075; [XmlIgnore] public double S0 @@ -163,7 +164,7 @@ public double S0 } [XmlAttribute("s1")] - public double _s1 { get; set; } + public double _s1 { get; set; } = 1.5; [XmlIgnore] public double S1 @@ -173,7 +174,7 @@ public double S1 } [XmlAttribute("s2")] - public double _s2 { get; set; } + public double _s2 { get; set; } = 1.5; [XmlIgnore] public double S2 @@ -183,7 +184,7 @@ public double S2 } [XmlAttribute("rails_on_circle")] - public int _railsOnCircle; + public int _railsOnCircle { get; set; } = 12; [XmlIgnore] public int RailsOnCircle @@ -193,7 +194,7 @@ public int RailsOnCircle } [XmlAttribute("studs_on_rail")] - public int _studsOnRail; + public int _studsOnRail { get; set; } = 3; [XmlIgnore] public int StudsOnRail @@ -213,7 +214,8 @@ public double Height } [XmlAttribute("use_minimal_elements")] - public bool UseMinimalElements { get; set; } + [DefaultValue(true)] + public bool UseMinimalElements { get; set; } = true; } [System.Serializable] diff --git a/FemDesign.Core/Reinforcement/Wire.cs b/FemDesign.Core/Reinforcement/Wire.cs index 42359f518..004fca528 100644 --- a/FemDesign.Core/Reinforcement/Wire.cs +++ b/FemDesign.Core/Reinforcement/Wire.cs @@ -45,7 +45,7 @@ public double Diameter [XmlAttribute("reinforcing_material")] public System.Guid ReinforcingMaterialGuid { get; set; } // guidtype [XmlAttribute("profile")] - [DefaultValue(1)] + [DefaultValue(WireProfileType.Ribbed)] public WireProfileType Profile { get; set; } = WireProfileType.Ribbed; /// diff --git a/FemDesign.Core/Sections/Section.cs b/FemDesign.Core/Sections/Section.cs index b2b3f57bf..132c65758 100644 --- a/FemDesign.Core/Sections/Section.cs +++ b/FemDesign.Core/Sections/Section.cs @@ -199,6 +199,7 @@ public static class SectionExtension return sectionByFamily; } + public static Section SectionByName(this List sections, string sectionName) { // abbreviation HEA 100 @@ -213,7 +214,7 @@ public static Section SectionByName(this List sectio ExtractedResult extr = extracted.Score > extract.Score ? extracted : extract; if (extr.Score < Section._fuzzyScore) - throw new Exception($"{sectionName} can not be found!"); + throw new Exception($"{sectionName} can not be found! Try different naming conventions."); else return sections[extr.Index]; } diff --git a/FemDesign.Core/Sections/SectionDatabase.cs b/FemDesign.Core/Sections/SectionDatabase.cs index c6cebfb68..0b92cb405 100644 --- a/FemDesign.Core/Sections/SectionDatabase.cs +++ b/FemDesign.Core/Sections/SectionDatabase.cs @@ -51,12 +51,19 @@ private SectionDatabase() } + + /// + /// Returns the first in the database with the specified name. + /// Use to get a list of all section names in the database. + /// You can also use abbreviated names as used in FEM-Design results. + /// i.e. "HEA100", "IPE200", "CHS 323.9-8.8" etc. + /// + /// The name of the section to find. + /// The with the specified name, or null if not found. public Section SectionByName(string sectionName) { var sections = this.Sections.Section; - var sectionNames = sections.Select(x => x._sectionName).ToArray(); - var index = FuzzySharp.Process.ExtractOne(sectionName, sectionNames).Index; - return sections[index]; + return sections.SectionByName(sectionName); } /// diff --git a/FemDesign.Core/Strusoft/Interop/Struxml/Data/FEM-Design 24.00.005.cs b/FemDesign.Core/Strusoft/Interop/Struxml/Data/FEM-Design 25.00.001.cs similarity index 95% rename from FemDesign.Core/Strusoft/Interop/Struxml/Data/FEM-Design 24.00.005.cs rename to FemDesign.Core/Strusoft/Interop/Struxml/Data/FEM-Design 25.00.001.cs index 684ecbcfb..883fbc158 100644 --- a/FemDesign.Core/Strusoft/Interop/Struxml/Data/FEM-Design 24.00.005.cs +++ b/FemDesign.Core/Strusoft/Interop/Struxml/Data/FEM-Design 25.00.001.cs @@ -8,7 +8,7 @@ //------------------------------------------------------------------------------ // This code was generated by XmlSchemaClassGenerator version 2.1.1162.0 -namespace StruSoft.Interop_24 +namespace StruSoft.Interop_25 { @@ -630,6 +630,8 @@ public enum Standardtype EC, + EC_G2, + [System.Xml.Serialization.XmlEnumAttribute("general")] General, @@ -953,6 +955,40 @@ public partial class Ecc_value_type [System.Xml.Serialization.XmlAttributeAttribute("z")] public double Z { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Beampos_type _reference_point = StruSoft.Interop_25.Beampos_type.Center_of_gravity; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Beampos_type.Center_of_gravity)] + [System.Xml.Serialization.XmlAttributeAttribute("reference_point")] + public Beampos_type Reference_point + { + get + { + return _reference_point; + } + set + { + _reference_point = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Rec_pos_type _rectangle_position = StruSoft.Interop_25.Rec_pos_type.Center_center; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Rec_pos_type.Center_center)] + [System.Xml.Serialization.XmlAttributeAttribute("rectangle_position")] + public Rec_pos_type Rectangle_position + { + get + { + return _rectangle_position; + } + set + { + _rectangle_position = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -985,6 +1021,56 @@ public Ecc_value_type() } } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("beampos_type", Namespace="urn:strusoft")] + public enum Beampos_type + { + + [System.Xml.Serialization.XmlEnumAttribute("center_of_gravity")] + Center_of_gravity, + + [System.Xml.Serialization.XmlEnumAttribute("shear_center")] + Shear_center, + + [System.Xml.Serialization.XmlEnumAttribute("bounding_rectangle")] + Bounding_rectangle, + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("rec_pos_type", Namespace="urn:strusoft")] + public enum Rec_pos_type + { + + [System.Xml.Serialization.XmlEnumAttribute("top_left")] + Top_left, + + [System.Xml.Serialization.XmlEnumAttribute("top_center")] + Top_center, + + [System.Xml.Serialization.XmlEnumAttribute("top_right")] + Top_right, + + [System.Xml.Serialization.XmlEnumAttribute("center_left")] + Center_left, + + [System.Xml.Serialization.XmlEnumAttribute("center_center")] + Center_center, + + [System.Xml.Serialization.XmlEnumAttribute("center_right")] + Center_right, + + [System.Xml.Serialization.XmlEnumAttribute("bottom_left")] + Bottom_left, + + [System.Xml.Serialization.XmlEnumAttribute("bottom_center")] + Bottom_center, + + [System.Xml.Serialization.XmlEnumAttribute("bottom_right")] + Bottom_right, + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("eccentricity_type", Namespace="urn:strusoft")] @@ -1352,246 +1438,314 @@ public double R_z_release } [System.Xml.Serialization.XmlIgnoreAttribute()] - private System.Collections.Generic.List _anyAttribute; - - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Collections.Generic.List AnyAttribute - { - get - { - return _anyAttribute; - } - set - { - _anyAttribute = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool AnyAttributeSpecified - { - get - { - return ((this.AnyAttribute != null) - && (this.AnyAttribute.Count != 0)); - } - } - - public Connectivity_type() - { - this._anyAttribute = new System.Collections.Generic.List(); - } - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] - [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("simple_connectivity_type", Namespace="urn:strusoft")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Simple_connectivity_type - { - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _m_x = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("m_x")] - public bool M_x - { - get - { - return _m_x; - } - set - { - _m_x = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private double _m_x_release = 0D; - - [System.ComponentModel.DefaultValueAttribute(0D)] - [System.Xml.Serialization.XmlAttributeAttribute("m_x_release")] - public double M_x_release - { - get - { - return _m_x_release; - } - set - { - _m_x_release = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _m_y = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("m_y")] - public bool M_y - { - get - { - return _m_y; - } - set - { - _m_y = value; - } - } + private bool _v_x = true; - [System.Xml.Serialization.XmlIgnoreAttribute()] - private double _m_y_release = 0D; - - [System.ComponentModel.DefaultValueAttribute(0D)] - [System.Xml.Serialization.XmlAttributeAttribute("m_y_release")] - public double M_y_release - { - get - { - return _m_y_release; - } - set - { - _m_y_release = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _m_z = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("m_z")] - public bool M_z - { - get - { - return _m_z; - } - set - { - _m_z = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private double _m_z_release = 0D; - - [System.ComponentModel.DefaultValueAttribute(0D)] - [System.Xml.Serialization.XmlAttributeAttribute("m_z_release")] - public double M_z_release - { - get - { - return _m_z_release; - } - set - { - _m_z_release = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _r_x = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("r_x")] - public bool R_x - { - get - { - return _r_x; - } - set - { - _r_x = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private double _r_x_release = 0D; - - [System.ComponentModel.DefaultValueAttribute(0D)] - [System.Xml.Serialization.XmlAttributeAttribute("r_x_release")] - public double R_x_release - { - get - { - return _r_x_release; - } - set - { - _r_x_release = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _r_y = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("r_y")] - public bool R_y - { - get - { - return _r_y; - } - set - { - _r_y = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private double _r_y_release = 0D; - - [System.ComponentModel.DefaultValueAttribute(0D)] - [System.Xml.Serialization.XmlAttributeAttribute("r_y_release")] - public double R_y_release - { - get - { - return _r_y_release; - } - set - { - _r_y_release = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _r_z = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("r_z")] - public bool R_z + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("v_x")] + public bool V_x { get { - return _r_z; + return _v_x; } set { - _r_z = value; + _v_x = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - private double _r_z_release = 0D; + private double _v_x_release = 0D; [System.ComponentModel.DefaultValueAttribute(0D)] - [System.Xml.Serialization.XmlAttributeAttribute("r_z_release")] - public double R_z_release + [System.Xml.Serialization.XmlAttributeAttribute("v_x_release")] + public double V_x_release { get { - return _r_z_release; + return _v_x_release; } set { - _r_z_release = value; + _v_x_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public Connectivity_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("simple_connectivity_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Simple_connectivity_type + { + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _m_x = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("m_x")] + public bool M_x + { + get + { + return _m_x; + } + set + { + _m_x = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _m_x_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("m_x_release")] + public double M_x_release + { + get + { + return _m_x_release; + } + set + { + _m_x_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _m_y = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("m_y")] + public bool M_y + { + get + { + return _m_y; + } + set + { + _m_y = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _m_y_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("m_y_release")] + public double M_y_release + { + get + { + return _m_y_release; + } + set + { + _m_y_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _m_z = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("m_z")] + public bool M_z + { + get + { + return _m_z; + } + set + { + _m_z = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _m_z_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("m_z_release")] + public double M_z_release + { + get + { + return _m_z_release; + } + set + { + _m_z_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _r_x = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("r_x")] + public bool R_x + { + get + { + return _r_x; + } + set + { + _r_x = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _r_x_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("r_x_release")] + public double R_x_release + { + get + { + return _r_x_release; + } + set + { + _r_x_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _r_y = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("r_y")] + public bool R_y + { + get + { + return _r_y; + } + set + { + _r_y = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _r_y_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("r_y_release")] + public double R_y_release + { + get + { + return _r_y_release; + } + set + { + _r_y_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _r_z = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("r_z")] + public bool R_z + { + get + { + return _r_z; + } + set + { + _r_z = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _r_z_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("r_z_release")] + public double R_z_release + { + get + { + return _r_z_release; + } + set + { + _r_z_release = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _v_x = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("v_x")] + public bool V_x + { + get + { + return _v_x; + } + set + { + _v_x = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _v_x_release = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("v_x_release")] + public double V_x_release + { + get + { + return _v_x_release; + } + set + { + _v_x_release = value; } } @@ -3060,9 +3214,9 @@ public partial class Simple_stiffness_type public Stiff_base_type Rot_z { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] [System.Xml.Serialization.XmlAttributeAttribute("detach")] public Detach_type Detach { @@ -3205,23 +3359,6 @@ public partial class Rigidity_data_type2 : Rigidity_data_type1 [System.Xml.Serialization.XmlIncludeAttribute(typeof(Rigidity_data_type3))] public partial class Rigidity_data_type1 : Rigidity_data_type0 { - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; - - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] - [System.Xml.Serialization.XmlAttributeAttribute("detach")] - public Detach_type Detach - { - get - { - return _detach; - } - set - { - _detach = value; - } - } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -3240,6 +3377,40 @@ public partial class Rigidity_data_type0 [System.Xml.Serialization.XmlElementAttribute("plastic_limit_forces")] public Plasticity_type_3d Plastic_limit_forces { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] + [System.Xml.Serialization.XmlAttributeAttribute("detach")] + public Detach_type Detach + { + get + { + return _detach; + } + set + { + _detach = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _wx = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("Wx")] + public double Wx + { + get + { + return _wx; + } + set + { + _wx = value; + } + } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -3375,9 +3546,9 @@ public System.Collections.Generic.List Plastic_limits } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] [System.Xml.Serialization.XmlAttributeAttribute("detach")] public Detach_type Detach { @@ -3443,6 +3614,23 @@ public partial class Stiffness_record : Stiffness_motion_record [System.Xml.Serialization.XmlAttributeAttribute("Cz_pos")] public double Cz_pos { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _wx = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("Wx")] + public double Wx + { + get + { + return _wx; + } + set + { + _wx = value; + } + } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -3767,9 +3955,9 @@ public double Penwidth } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Pointstyle_type _point_style = StruSoft.Interop_24.Pointstyle_type.Cross; + private Pointstyle_type _point_style = StruSoft.Interop_25.Pointstyle_type.Cross; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Pointstyle_type.Cross)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Pointstyle_type.Cross)] [System.Xml.Serialization.XmlAttributeAttribute("point_style")] public Pointstyle_type Point_style { @@ -3824,9 +4012,9 @@ public partial class Fill_type { [System.Xml.Serialization.XmlIgnoreAttribute()] - private Fillmode_type _mode = StruSoft.Interop_24.Fillmode_type.Auto_fill; + private Fillmode_type _mode = StruSoft.Interop_25.Fillmode_type.Auto_fill; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Fillmode_type.Auto_fill)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Fillmode_type.Auto_fill)] [System.Xml.Serialization.XmlAttributeAttribute("mode")] public Fillmode_type Mode { @@ -3914,9 +4102,9 @@ public partial class Text_font_type : Font_type { [System.Xml.Serialization.XmlIgnoreAttribute()] - private Hor_align _h_align = StruSoft.Interop_24.Hor_align.Left; + private Hor_align _h_align = StruSoft.Interop_25.Hor_align.Left; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Hor_align.Left)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Hor_align.Left)] [System.Xml.Serialization.XmlAttributeAttribute("h_align")] public Hor_align H_align { @@ -3931,9 +4119,9 @@ public Hor_align H_align } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ver_align _v_align = StruSoft.Interop_24.Ver_align.Bottom; + private Ver_align _v_align = StruSoft.Interop_25.Ver_align.Bottom; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ver_align.Bottom)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ver_align.Bottom)] [System.Xml.Serialization.XmlAttributeAttribute("v_align")] public Ver_align V_align { @@ -3975,9 +4163,9 @@ public string Font } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Script_type _script = StruSoft.Interop_24.Script_type.Western; + private Script_type _script = StruSoft.Interop_25.Script_type.Western; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Script_type.Western)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Script_type.Western)] [System.Xml.Serialization.XmlAttributeAttribute("script")] public Script_type Script { @@ -4934,9 +5122,9 @@ public bool Cantilever } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ver_align _load_position = StruSoft.Interop_24.Ver_align.Top; + private Ver_align _load_position = StruSoft.Interop_25.Ver_align.Top; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ver_align.Top)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ver_align.Top)] [System.Xml.Serialization.XmlAttributeAttribute("load_position")] public Ver_align Load_position { @@ -6006,9 +6194,9 @@ public string Name public string Complex_composite { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Steelmadetype _made = StruSoft.Interop_24.Steelmadetype.Rolled; + private Steelmadetype _made = StruSoft.Interop_25.Steelmadetype.Rolled; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Steelmadetype.Rolled)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Steelmadetype.Rolled)] [System.Xml.Serialization.XmlAttributeAttribute("made")] public Steelmadetype Made { @@ -6142,36 +6330,19 @@ public bool First_order_analysis_Sc } [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; + private bool _seven_degrees_of_freedom = false; - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage - { - get - { - return _stage; - } - set - { - _stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("seven_degrees_of_freedom")] + public bool Seven_degrees_of_freedom { get { - return _end_stage; + return _seven_degrees_of_freedom; } set { - _end_stage = value; + _seven_degrees_of_freedom = value; } } @@ -6409,6 +6580,7 @@ public System.Collections.Generic.List Buckling_data public Apex_type() { this._buckling_data = new System.Collections.Generic.List(); + this._anyAttribute = new System.Collections.Generic.List(); } [System.Xml.Serialization.XmlElementAttribute("colouring")] @@ -6435,70 +6607,28 @@ public bool Rounded_edge } [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage_A = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage_A")] - public int Stage_A - { - get - { - return _stage_A; - } - set - { - _stage_A = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage_B = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage_B")] - public int Stage_B - { - get - { - return _stage_B; - } - set - { - _stage_B = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage_A = "last_stage"; + private System.Collections.Generic.List _anyAttribute; - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage_A")] - public string End_stage_A + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute { get { - return _end_stage_A; + return _anyAttribute; } set { - _end_stage_A = value; + _anyAttribute = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage_B = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage_B")] - public string End_stage_B + public bool AnyAttributeSpecified { get { - return _end_stage_B; - } - set - { - _end_stage_B = value; + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); } } } @@ -6655,9 +6785,9 @@ public string Hash_order_id public Beamtype Type { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Shell_model_type _shell_model = StruSoft.Interop_24.Shell_model_type.None; + private Shell_model_type _shell_model = StruSoft.Interop_25.Shell_model_type.None; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Shell_model_type.None)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Shell_model_type.None)] [System.Xml.Serialization.XmlAttributeAttribute("shell_model")] public Shell_model_type Shell_model { @@ -7821,39 +7951,32 @@ public System.Collections.Generic.List Item public Panel_typeInternal_panels() { this._item = new System.Collections.Generic.List(); + this._anyAttribute = new System.Collections.Generic.List(); } [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; + private System.Collections.Generic.List _anyAttribute; - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute { get { - return _stage; + return _anyAttribute; } set { - _stage = value; + _anyAttribute = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage + public bool AnyAttributeSpecified { get { - return _end_stage; - } - set - { - _end_stage = value; + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); } } } @@ -8139,6 +8262,23 @@ public System.Collections.Generic.List Plastic_limits _plastic_limits = value; } } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _wx = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("Wx")] + public double Wx + { + get + { + return _wx; + } + set + { + _wx = value; + } + } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -8150,9 +8290,9 @@ public partial class Rigidity_group_type1 : Rigidity_group_type0 { [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] [System.Xml.Serialization.XmlAttributeAttribute("detach")] public Detach_type Detach { @@ -11427,9 +11567,9 @@ public bool Has_prefix public bool Id_is_letter { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Priority_type _priority = StruSoft.Interop_24.Priority_type.Primary; + private Priority_type _priority = StruSoft.Interop_25.Priority_type.Primary; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Priority_type.Primary)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Priority_type.Primary)] [System.Xml.Serialization.XmlAttributeAttribute("priority")] public Priority_type Priority { @@ -11461,9 +11601,9 @@ public bool Use_for_views } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Axis_position _label_position = StruSoft.Interop_24.Axis_position.Start; + private Axis_position _label_position = StruSoft.Interop_25.Axis_position.Start; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Axis_position.Start)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Axis_position.Start)] [System.Xml.Serialization.XmlAttributeAttribute("label_position")] public Axis_position Label_position { @@ -11630,9 +11770,9 @@ public Ts_visible_edge_type() } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Visiblelinetype _linetype = StruSoft.Interop_24.Visiblelinetype.Line; + private Visiblelinetype _linetype = StruSoft.Interop_25.Visiblelinetype.Line; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Visiblelinetype.Line)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Visiblelinetype.Line)] [System.Xml.Serialization.XmlAttributeAttribute("linetype")] public Visiblelinetype Linetype { @@ -11917,39 +12057,51 @@ public partial class Lnfoundation_ref_type public string Ref_support { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _supports_stage = 1; + private System.Collections.Generic.List _anyAttribute; - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("supports_stage")] - public int Supports_stage + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute { get { - return _supports_stage; + return _anyAttribute; } set { - _supports_stage = value; + _anyAttribute = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _supports_end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("supports_end_stage")] - public string Supports_end_stage + public bool AnyAttributeSpecified { get { - return _supports_end_stage; - } - set - { - _supports_end_stage = value; + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); } } + public Lnfoundation_ref_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("ptfoundation_ref_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Ptfoundation_ref_type + { + + [System.Xml.Serialization.XmlAttributeAttribute("ref_slab")] + public string Ref_slab { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("ref_support")] + public string Ref_support { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -11976,7 +12128,7 @@ public bool AnyAttributeSpecified } } - public Lnfoundation_ref_type() + public Ptfoundation_ref_type() { this._anyAttribute = new System.Collections.Generic.List(); } @@ -11984,10 +12136,10 @@ public Lnfoundation_ref_type() [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("ptfoundation_ref_type", Namespace="urn:strusoft")] + [System.Xml.Serialization.XmlTypeAttribute("sffoundation_ref_type", Namespace="urn:strusoft")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Ptfoundation_ref_type + public partial class Sffoundation_ref_type { [System.Xml.Serialization.XmlAttributeAttribute("ref_slab")] @@ -11997,39 +12149,54 @@ public partial class Ptfoundation_ref_type public string Ref_support { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _supports_stage = 1; + private System.Collections.Generic.List _anyAttribute; - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("supports_stage")] - public int Supports_stage + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute { get { - return _supports_stage; + return _anyAttribute; } set { - _supports_stage = value; + _anyAttribute = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _supports_end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("supports_end_stage")] - public string Supports_end_stage + public bool AnyAttributeSpecified { get { - return _supports_end_stage; - } - set - { - _supports_end_stage = value; + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); } } + public Sffoundation_ref_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("foundation_plinth_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Foundation_plinth_type + { + + [System.Xml.Serialization.XmlAttributeAttribute("a")] + public double A { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("b")] + public double B { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("h")] + public double H { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -12056,7 +12223,7 @@ public bool AnyAttributeSpecified } } - public Ptfoundation_ref_type() + public Foundation_plinth_type() { this._anyAttribute = new System.Collections.Generic.List(); } @@ -12064,170 +12231,41 @@ public Ptfoundation_ref_type() [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("sffoundation_ref_type", Namespace="urn:strusoft")] + [System.Xml.Serialization.XmlTypeAttribute("extruded_foundation_type", Namespace="urn:strusoft")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Sffoundation_ref_type + public partial class Extruded_foundation_type { - [System.Xml.Serialization.XmlAttributeAttribute("ref_slab")] - public string Ref_slab { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("ref_support")] - public string Ref_support { get; set; } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _supports_stage = 1; + [System.Xml.Serialization.XmlElementAttribute("region")] + public Region_type Region { get; set; } - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("supports_stage")] - public int Supports_stage + public Extruded_foundation_type() { - get - { - return _supports_stage; - } - set - { - _supports_stage = value; - } + this.Region = new Region_type(); + this._anyAttribute = new System.Collections.Generic.List(); } + [System.Xml.Serialization.XmlElementAttribute("cuboid_plinth")] + public Foundation_plinth_type Cuboid_plinth { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("thickness")] + public double Thickness { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _supports_end_stage = "last_stage"; + private bool _above = false; - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("supports_end_stage")] - public string Supports_end_stage + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("above")] + public bool Above { get { - return _supports_end_stage; + return _above; } set { - _supports_end_stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private System.Collections.Generic.List _anyAttribute; - - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Collections.Generic.List AnyAttribute - { - get - { - return _anyAttribute; - } - set - { - _anyAttribute = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool AnyAttributeSpecified - { - get - { - return ((this.AnyAttribute != null) - && (this.AnyAttribute.Count != 0)); - } - } - - public Sffoundation_ref_type() - { - this._anyAttribute = new System.Collections.Generic.List(); - } - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] - [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("foundation_plinth_type", Namespace="urn:strusoft")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Foundation_plinth_type - { - - [System.Xml.Serialization.XmlAttributeAttribute("a")] - public double A { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("b")] - public double B { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("h")] - public double H { get; set; } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private System.Collections.Generic.List _anyAttribute; - - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Collections.Generic.List AnyAttribute - { - get - { - return _anyAttribute; - } - set - { - _anyAttribute = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool AnyAttributeSpecified - { - get - { - return ((this.AnyAttribute != null) - && (this.AnyAttribute.Count != 0)); - } - } - - public Foundation_plinth_type() - { - this._anyAttribute = new System.Collections.Generic.List(); - } - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] - [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("extruded_foundation_type", Namespace="urn:strusoft")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Extruded_foundation_type - { - - [System.Xml.Serialization.XmlElementAttribute("region")] - public Region_type Region { get; set; } - - public Extruded_foundation_type() - { - this.Region = new Region_type(); - this._anyAttribute = new System.Collections.Generic.List(); - } - - [System.Xml.Serialization.XmlElementAttribute("cuboid_plinth")] - public Foundation_plinth_type Cuboid_plinth { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("thickness")] - public double Thickness { get; set; } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _above = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("above")] - public bool Above - { - get - { - return _above; - } - set - { - _above = value; + _above = value; } } @@ -12448,9 +12486,9 @@ public double Bedding_modulus } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Foundationsystems_type _analythical_system = StruSoft.Interop_24.Foundationsystems_type.Simple; + private Foundationsystems_type _analythical_system = StruSoft.Interop_25.Foundationsystems_type.Simple; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Foundationsystems_type.Simple)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Foundationsystems_type.Simple)] [System.Xml.Serialization.XmlAttributeAttribute("analythical_system")] public Foundationsystems_type Analythical_system { @@ -12501,40 +12539,6 @@ public uint Fillcolor } } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _slabs_stage = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("slabs_stage")] - public int Slabs_stage - { - get - { - return _slabs_stage; - } - set - { - _slabs_stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _slabs_end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("slabs_end_stage")] - public string Slabs_end_stage - { - get - { - return _slabs_end_stage; - } - set - { - _slabs_end_stage = value; - } - } - [System.Xml.Serialization.XmlIgnoreAttribute()] private int _point_connections_stage = 1; @@ -12716,9 +12720,9 @@ public double Bedding_modulus } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Foundationsystems_type _analythical_system = StruSoft.Interop_24.Foundationsystems_type.Simple; + private Foundationsystems_type _analythical_system = StruSoft.Interop_25.Foundationsystems_type.Simple; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Foundationsystems_type.Simple)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Foundationsystems_type.Simple)] [System.Xml.Serialization.XmlAttributeAttribute("analythical_system")] public Foundationsystems_type Analythical_system { @@ -12913,9 +12917,9 @@ public double Bedding_modulus } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Slabfoundationsystems_type _analythical_system = StruSoft.Interop_24.Slabfoundationsystems_type.Surface_support_group; + private Slabfoundationsystems_type _analythical_system = StruSoft.Interop_25.Slabfoundationsystems_type.Surface_support_group; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Slabfoundationsystems_type.Surface_support_group)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Slabfoundationsystems_type.Surface_support_group)] [System.Xml.Serialization.XmlAttributeAttribute("analythical_system")] public Slabfoundationsystems_type Analythical_system { @@ -13699,9 +13703,9 @@ public Piles_beam_type() public string Complex_composite { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Steelmadetype _made = StruSoft.Interop_24.Steelmadetype.Rolled; + private Steelmadetype _made = StruSoft.Interop_25.Steelmadetype.Rolled; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Steelmadetype.Rolled)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Steelmadetype.Rolled)] [System.Xml.Serialization.XmlAttributeAttribute("made")] public Steelmadetype Made { @@ -13718,40 +13722,6 @@ public Steelmadetype Made [System.Xml.Serialization.XmlAttributeAttribute("guid")] public string Guid { get; set; } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage - { - get - { - return _stage; - } - set - { - _stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage - { - get - { - return _end_stage; - } - set - { - _end_stage = value; - } - } - [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -13992,40 +13962,6 @@ public partial class Pile_typePoint_support [System.Xml.Serialization.XmlElementAttribute("rigidity_group")] public Pile_rigidity_group_type2 Rigidity_group { get; set; } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage - { - get - { - return _stage; - } - set - { - _stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage - { - get - { - return _end_stage; - } - set - { - _end_stage = value; - } - } - [System.Xml.Serialization.XmlAttributeAttribute("guid")] public string Guid { get; set; } @@ -14081,114 +14017,80 @@ public partial class Pile_typeLine_support [System.Xml.Serialization.XmlAttributeAttribute("beta_neg")] public double Beta_neg { get; set; } + [System.Xml.Serialization.XmlAttributeAttribute("guid")] + public string Guid { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; + private System.Collections.Generic.List _anyAttribute; - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute { get { - return _stage; + return _anyAttribute; } set { - _stage = value; + _anyAttribute = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage + public Pile_typeLine_support() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("excavation_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Excavation_type + { + + [System.Xml.Serialization.XmlElementAttribute("contour")] + public Horizontal_polygon_2d Contour { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("guid")] + public string Guid { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("last_change", DataType="dateTime")] + public System.DateTime Last_change { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("action")] + public Modification_type Action { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private string _hash_order_id = "-1"; + + [System.ComponentModel.DefaultValueAttribute("-1")] + [System.Xml.Serialization.XmlAttributeAttribute("hash_order_id")] + public string Hash_order_id { get { - return _end_stage; + return _hash_order_id; } set { - _end_stage = value; + _hash_order_id = value; } } - [System.Xml.Serialization.XmlAttributeAttribute("guid")] - public string Guid { get; set; } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private System.Collections.Generic.List _anyAttribute; - - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Collections.Generic.List AnyAttribute - { - get - { - return _anyAttribute; - } - set - { - _anyAttribute = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool AnyAttributeSpecified - { - get - { - return ((this.AnyAttribute != null) - && (this.AnyAttribute.Count != 0)); - } - } - - public Pile_typeLine_support() - { - this._anyAttribute = new System.Collections.Generic.List(); - } - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] - [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("excavation_type", Namespace="urn:strusoft")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Excavation_type - { - - [System.Xml.Serialization.XmlElementAttribute("contour")] - public Horizontal_polygon_2d Contour { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("guid")] - public string Guid { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("last_change", DataType="dateTime")] - public System.DateTime Last_change { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("action")] - public Modification_type Action { get; set; } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _hash_order_id = "-1"; - - [System.ComponentModel.DefaultValueAttribute("-1")] - [System.Xml.Serialization.XmlAttributeAttribute("hash_order_id")] - public string Hash_order_id - { - get - { - return _hash_order_id; - } - set - { - _hash_order_id = value; - } - } - - [System.Xml.Serialization.XmlAttributeAttribute("depth")] - public double Depth { get; set; } + [System.Xml.Serialization.XmlAttributeAttribute("depth")] + public double Depth { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -14536,9 +14438,9 @@ public string Hash_order_id public Sectiontype Type { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Fd_mat_type _fdmat = StruSoft.Interop_24.Fd_mat_type.Item_1; + private Fd_mat_type _fdmat = StruSoft.Interop_25.Fd_mat_type.Item_1; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Fd_mat_type.Item_1)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Fd_mat_type.Item_1)] [System.Xml.Serialization.XmlAttributeAttribute("fd-mat")] public Fd_mat_type Fdmat { @@ -15597,9 +15499,9 @@ public bool Elasto_plastic_transverse_shear_U } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Eptso_type _elasto_plastic_transverse_shear_option_U = StruSoft.Interop_24.Eptso_type.Parabolic; + private Eptso_type _elasto_plastic_transverse_shear_option_U = StruSoft.Interop_25.Eptso_type.Parabolic; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Eptso_type.Parabolic)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Eptso_type.Parabolic)] [System.Xml.Serialization.XmlAttributeAttribute("elasto_plastic_transverse_shear_option_U")] public Eptso_type Elasto_plastic_transverse_shear_option_U { @@ -15640,9 +15542,9 @@ public bool Elasto_plastic_transverse_shear_Sq } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Eptso_type _elasto_plastic_transverse_shear_option_Sq = StruSoft.Interop_24.Eptso_type.Parabolic; + private Eptso_type _elasto_plastic_transverse_shear_option_Sq = StruSoft.Interop_25.Eptso_type.Parabolic; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Eptso_type.Parabolic)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Eptso_type.Parabolic)] [System.Xml.Serialization.XmlAttributeAttribute("elasto_plastic_transverse_shear_option_Sq")] public Eptso_type Elasto_plastic_transverse_shear_option_Sq { @@ -15683,9 +15585,9 @@ public bool Elasto_plastic_transverse_shear_Sf } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Eptso_type _elasto_plastic_transverse_shear_option_Sf = StruSoft.Interop_24.Eptso_type.Parabolic; + private Eptso_type _elasto_plastic_transverse_shear_option_Sf = StruSoft.Interop_25.Eptso_type.Parabolic; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Eptso_type.Parabolic)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Eptso_type.Parabolic)] [System.Xml.Serialization.XmlAttributeAttribute("elasto_plastic_transverse_shear_option_Sf")] public Eptso_type Elasto_plastic_transverse_shear_option_Sf { @@ -15726,9 +15628,9 @@ public bool Elasto_plastic_transverse_shear_Sc } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Eptso_type _elasto_plastic_transverse_shear_option_Sc = StruSoft.Interop_24.Eptso_type.Parabolic; + private Eptso_type _elasto_plastic_transverse_shear_option_Sc = StruSoft.Interop_25.Eptso_type.Parabolic; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Eptso_type.Parabolic)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Eptso_type.Parabolic)] [System.Xml.Serialization.XmlAttributeAttribute("elasto_plastic_transverse_shear_option_Sc")] public Eptso_type Elasto_plastic_transverse_shear_option_Sc { @@ -15930,15 +15832,84 @@ public double Fck_cube [System.Xml.Serialization.XmlAttributeAttribute("Ecm")] public double Ecm { get; set; } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] [System.Xml.Serialization.XmlAttributeAttribute("gammaC_0")] - public double GammaC_0 { get; set; } + public double GammaC_0Value { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool GammaC_0ValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable GammaC_0 + { + get + { + if (this.GammaC_0ValueSpecified) + { + return this.GammaC_0Value; + } + else + { + return null; + } + } + set + { + this.GammaC_0Value = value.GetValueOrDefault(); + this.GammaC_0ValueSpecified = value.HasValue; + } + } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] [System.Xml.Serialization.XmlAttributeAttribute("gammaC_1")] - public double GammaC_1 { get; set; } + public double GammaC_1Value { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool GammaC_1ValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable GammaC_1 + { + get + { + if (this.GammaC_1ValueSpecified) + { + return this.GammaC_1Value; + } + else + { + return null; + } + } + set + { + this.GammaC_1Value = value.GetValueOrDefault(); + this.GammaC_1ValueSpecified = value.HasValue; + } + } [System.Xml.Serialization.XmlAttributeAttribute("gammaCE")] public double GammaCE { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _gammaCE_1 = 1.15D; + + [System.ComponentModel.DefaultValueAttribute(1.15D)] + [System.Xml.Serialization.XmlAttributeAttribute("gammaCE_1")] + public double GammaCE_1 + { + get + { + return _gammaCE_1; + } + set + { + _gammaCE_1 = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private double _gammaCfi = 1D; @@ -15979,11 +15950,63 @@ public double GammaSfi } } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] [System.Xml.Serialization.XmlAttributeAttribute("alfaCc")] - public double AlfaCc { get; set; } + public double AlfaCcValue { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool AlfaCcValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable AlfaCc + { + get + { + if (this.AlfaCcValueSpecified) + { + return this.AlfaCcValue; + } + else + { + return null; + } + } + set + { + this.AlfaCcValue = value.GetValueOrDefault(); + this.AlfaCcValueSpecified = value.HasValue; + } + } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] [System.Xml.Serialization.XmlAttributeAttribute("alfaCt")] - public double AlfaCt { get; set; } + public double AlfaCtValue { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool AlfaCtValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable AlfaCt + { + get + { + if (this.AlfaCtValueSpecified) + { + return this.AlfaCtValue; + } + else + { + return null; + } + } + set + { + this.AlfaCtValue = value.GetValueOrDefault(); + this.AlfaCtValueSpecified = value.HasValue; + } + } [System.Xml.Serialization.XmlAttributeAttribute("Fcd_0")] public double Fcd_0 { get; set; } @@ -16061,11 +16084,63 @@ public System.Nullable Epscu2 } } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] [System.Xml.Serialization.XmlAttributeAttribute("Epsc3")] - public double Epsc3 { get; set; } + public double Epsc3Value { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool Epsc3ValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable Epsc3 + { + get + { + if (this.Epsc3ValueSpecified) + { + return this.Epsc3Value; + } + else + { + return null; + } + } + set + { + this.Epsc3Value = value.GetValueOrDefault(); + this.Epsc3ValueSpecified = value.HasValue; + } + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] [System.Xml.Serialization.XmlAttributeAttribute("Epscu3")] - public double Epscu3 { get; set; } + public double Epscu3Value { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool Epscu3ValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable Epscu3 + { + get + { + if (this.Epscu3ValueSpecified) + { + return this.Epscu3Value; + } + else + { + return null; + } + } + set + { + this.Epscu3Value = value.GetValueOrDefault(); + this.Epscu3ValueSpecified = value.HasValue; + } + } [System.Xml.Serialization.XmlAttributeAttribute("environment")] public string Environment { get; set; } @@ -16167,6 +16242,125 @@ public double Stability } } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _ktc = 1D; + + [System.ComponentModel.DefaultValueAttribute(1D)] + [System.Xml.Serialization.XmlAttributeAttribute("ktc")] + public double Ktc + { + get + { + return _ktc; + } + set + { + _ktc = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _ktt = 1D; + + [System.ComponentModel.DefaultValueAttribute(1D)] + [System.Xml.Serialization.XmlAttributeAttribute("ktt")] + public double Ktt + { + get + { + return _ktt; + } + set + { + _ktt = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _epscu = 0.0035D; + + [System.ComponentModel.DefaultValueAttribute(0.0035D)] + [System.Xml.Serialization.XmlAttributeAttribute("Epscu")] + public double Epscu + { + get + { + return _epscu; + } + set + { + _epscu = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _gammaV_0 = 1D; + + [System.ComponentModel.DefaultValueAttribute(1D)] + [System.Xml.Serialization.XmlAttributeAttribute("gammaV_0")] + public double GammaV_0 + { + get + { + return _gammaV_0; + } + set + { + _gammaV_0 = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _gammaV_1 = 1D; + + [System.ComponentModel.DefaultValueAttribute(1D)] + [System.Xml.Serialization.XmlAttributeAttribute("gammaV_1")] + public double GammaV_1 + { + get + { + return _gammaV_1; + } + set + { + _gammaV_1 = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _gammaV_fi = 1D; + + [System.ComponentModel.DefaultValueAttribute(1D)] + [System.Xml.Serialization.XmlAttributeAttribute("gammaV_fi")] + public double GammaV_fi + { + get + { + return _gammaV_fi; + } + set + { + _gammaV_fi = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _d_lower = 8D; + + [System.ComponentModel.DefaultValueAttribute(8D)] + [System.Xml.Serialization.XmlAttributeAttribute("D_lower")] + public double D_lower + { + get + { + return _d_lower; + } + set + { + _d_lower = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -16774,9 +16968,9 @@ public partial class Material_typeBrick public Optional_material_attribs Base_data { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Strength_type _strength_for = StruSoft.Interop_24.Strength_type.Brick_only; + private Strength_type _strength_for = StruSoft.Interop_25.Strength_type.Brick_only; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Strength_type.Brick_only)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Strength_type.Brick_only)] [System.Xml.Serialization.XmlAttributeAttribute("strength_for")] public Strength_type Strength_for { @@ -17029,6 +17223,35 @@ public System.Nullable Fvlt } } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Xml.Serialization.XmlAttributeAttribute("muf")] + public double MufValue { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool MufValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable Muf + { + get + { + if (this.MufValueSpecified) + { + return this.MufValue; + } + else + { + return null; + } + } + set + { + this.MufValue = value.GetValueOrDefault(); + this.MufValueSpecified = value.HasValue; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -17072,6 +17295,23 @@ public partial class Material_typeMasonry [System.Xml.Serialization.XmlElementAttribute("base_data")] public Optional_material_attribs Base_data { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Strength_type _strength_for = StruSoft.Interop_25.Strength_type.Brick_only; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Strength_type.Brick_only)] + [System.Xml.Serialization.XmlAttributeAttribute("strength_for")] + public Strength_type Strength_for + { + get + { + return _strength_for; + } + set + { + _strength_for = value; + } + } + [System.Xml.Serialization.XmlAttributeAttribute("fk")] public double Fk { get; set; } @@ -18005,9 +18245,9 @@ public partial class Rf_wire_type public string Reinforcing_material { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Wire_profile_type _profile = StruSoft.Interop_24.Wire_profile_type.Ribbed; + private Wire_profile_type _profile = StruSoft.Interop_25.Wire_profile_type.Ribbed; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Wire_profile_type.Ribbed)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Wire_profile_type.Ribbed)] [System.Xml.Serialization.XmlAttributeAttribute("profile")] public Wire_profile_type Profile { @@ -18580,6 +18820,22 @@ public Beam_reduction_zone_type() } } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("shell_force_type", Namespace="urn:strusoft")] + public enum Shell_force_type + { + + [System.Xml.Serialization.XmlEnumAttribute("integration")] + Integration, + + [System.Xml.Serialization.XmlEnumAttribute("smoothed")] + Smoothed, + + [System.Xml.Serialization.XmlEnumAttribute("max")] + Max, + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("punching_area_type", Namespace="urn:strusoft")] @@ -18665,23 +18921,6 @@ public string Hash_order_id } } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private bool _downward = false; - - [System.ComponentModel.DefaultValueAttribute(false)] - [System.Xml.Serialization.XmlAttributeAttribute("downward")] - public bool Downward - { - get - { - return _downward; - } - set - { - _downward = value; - } - } - [System.Xml.Serialization.XmlIgnoreAttribute()] private bool _manual_design = false; @@ -18716,6 +18955,74 @@ public string Name } } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _nodal_force_method = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("nodal_force_method")] + public bool Nodal_force_method + { + get + { + return _nodal_force_method; + } + set + { + _nodal_force_method = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Shell_force_type _shell_internal_force_method = StruSoft.Interop_25.Shell_force_type.Integration; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Shell_force_type.Integration)] + [System.Xml.Serialization.XmlAttributeAttribute("shell_internal_force_method")] + public Shell_force_type Shell_internal_force_method + { + get + { + return _shell_internal_force_method; + } + set + { + _shell_internal_force_method = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _distance_of_perimeter = 1.5D; + + [System.ComponentModel.DefaultValueAttribute(1.5D)] + [System.Xml.Serialization.XmlAttributeAttribute("distance_of_perimeter")] + public double Distance_of_perimeter + { + get + { + return _distance_of_perimeter; + } + set + { + _distance_of_perimeter = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _perimeter_is_average = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("perimeter_is_average")] + public bool Perimeter_is_average + { + get + { + return _perimeter_is_average; + } + set + { + _perimeter_is_average = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -18893,6 +19200,91 @@ public string Name } } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Shell_force_type _shell_internal_force_method = StruSoft.Interop_25.Shell_force_type.Integration; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Shell_force_type.Integration)] + [System.Xml.Serialization.XmlAttributeAttribute("shell_internal_force_method")] + public Shell_force_type Shell_internal_force_method + { + get + { + return _shell_internal_force_method; + } + set + { + _shell_internal_force_method = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _distance_of_perimeter = 1.5D; + + [System.ComponentModel.DefaultValueAttribute(1.5D)] + [System.Xml.Serialization.XmlAttributeAttribute("distance_of_perimeter")] + public double Distance_of_perimeter + { + get + { + return _distance_of_perimeter; + } + set + { + _distance_of_perimeter = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _perimeter_length_limit = 1000D; + + [System.ComponentModel.DefaultValueAttribute(1000D)] + [System.Xml.Serialization.XmlAttributeAttribute("perimeter_length_limit")] + public double Perimeter_length_limit + { + get + { + return _perimeter_length_limit; + } + set + { + _perimeter_length_limit = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _end_limit = 1.5D; + + [System.ComponentModel.DefaultValueAttribute(1.5D)] + [System.Xml.Serialization.XmlAttributeAttribute("end_limit")] + public double End_limit + { + get + { + return _end_limit; + } + set + { + _end_limit = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _perimeter_is_average = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("perimeter_is_average")] + public bool Perimeter_is_average + { + get + { + return _perimeter_is_average; + } + set + { + _perimeter_is_average = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -19101,6 +19493,40 @@ public partial class Punching_reinforcement_typeBended_bar [System.Xml.Serialization.XmlAttributeAttribute("direction")] public Direction_type Direction { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _c_v_auto_calculation = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v_auto_calculation")] + public bool C_v_auto_calculation + { + get + { + return _c_v_auto_calculation; + } + set + { + _c_v_auto_calculation = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _c_v = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v")] + public double C_v + { + get + { + return _c_v; + } + set + { + _c_v = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -19168,6 +19594,40 @@ public Punching_reinforcement_typeOpen_stirrups() [System.Xml.Serialization.XmlAttributeAttribute("distance_y")] public double Distance_y { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _c_v_auto_calculation = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v_auto_calculation")] + public bool C_v_auto_calculation + { + get + { + return _c_v_auto_calculation; + } + set + { + _c_v_auto_calculation = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _c_v = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v")] + public double C_v + { + get + { + return _c_v; + } + set + { + _c_v = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -19208,24 +19668,40 @@ public partial class Punching_reinforcement_typeReinforcing_ring [System.Xml.Serialization.XmlElementAttribute("stirrups")] public Punching_reinforcement_typeReinforcing_ringStirrups Stirrups { get; set; } - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] - [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement", Namespace="urn:strusoft", AnonymousType=true)] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement - { - [System.Xml.Serialization.XmlElementAttribute("wire")] - public Rf_wire_type Wire { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _c_v_auto_calculation = true; - [System.Xml.Serialization.XmlAttributeAttribute("inner_radius")] - public double Inner_radius { get; set; } + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v_auto_calculation")] + public bool C_v_auto_calculation + { + get + { + return _c_v_auto_calculation; + } + set + { + _c_v_auto_calculation = value; + } + } - [System.Xml.Serialization.XmlAttributeAttribute("overlap")] - public double Overlap { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _c_v = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v")] + public double C_v + { + get + { + return _c_v; + } + set + { + _c_v = value; + } + } [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -19253,7 +19729,7 @@ public bool AnyAttributeSpecified } } - public Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement() + public Punching_reinforcement_typeReinforcing_ring() { this._anyAttribute = new System.Collections.Generic.List(); } @@ -19261,23 +19737,72 @@ public Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement() [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("Punching_reinforcement_typeReinforcing_ringStirrups", Namespace="urn:strusoft", AnonymousType=true)] + [System.Xml.Serialization.XmlTypeAttribute("Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement", Namespace="urn:strusoft", AnonymousType=true)] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Punching_reinforcement_typeReinforcing_ringStirrups + public partial class Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement { [System.Xml.Serialization.XmlElementAttribute("wire")] public Rf_wire_type Wire { get; set; } - [System.Xml.Serialization.XmlAttributeAttribute("width")] - public double Width { get; set; } - - [System.Xml.Serialization.XmlAttributeAttribute("height")] - public double Height { get; set; } + [System.Xml.Serialization.XmlAttributeAttribute("inner_radius")] + public double Inner_radius { get; set; } - [System.Xml.Serialization.XmlAttributeAttribute("max_distance")] - public double Max_distance { get; set; } + [System.Xml.Serialization.XmlAttributeAttribute("overlap")] + public double Overlap { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public Punching_reinforcement_typeReinforcing_ringAuxiliary_reinforcement() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("Punching_reinforcement_typeReinforcing_ringStirrups", Namespace="urn:strusoft", AnonymousType=true)] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Punching_reinforcement_typeReinforcing_ringStirrups + { + + [System.Xml.Serialization.XmlElementAttribute("wire")] + public Rf_wire_type Wire { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("width")] + public double Width { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("height")] + public double Height { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("max_distance")] + public double Max_distance { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -19326,9 +19851,9 @@ public partial class Punching_reinforcement_typeStud_rails public Punching_reinforcement_typeStud_railsPeikko_psb_product Peikko_psb_product { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Studrail_patterns _pattern = StruSoft.Interop_24.Studrail_patterns.Semiorthogonal; + private Studrail_patterns _pattern = StruSoft.Interop_25.Studrail_patterns.Semiorthogonal; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Studrail_patterns.Semiorthogonal)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Studrail_patterns.Semiorthogonal)] [System.Xml.Serialization.XmlAttributeAttribute("pattern")] public Studrail_patterns Pattern { @@ -19490,6 +20015,40 @@ public bool Use_minimal_elements } } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _c_v_auto_calculation = true; + + [System.ComponentModel.DefaultValueAttribute(true)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v_auto_calculation")] + public bool C_v_auto_calculation + { + get + { + return _c_v_auto_calculation; + } + set + { + _c_v_auto_calculation = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _c_v = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("c_v")] + public double C_v + { + get + { + return _c_v; + } + set + { + _c_v = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -19706,9 +20265,9 @@ public string Colour } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Srf_treatment_type _created_by = StruSoft.Interop_24.Srf_treatment_type.Manual; + private Srf_treatment_type _created_by = StruSoft.Interop_25.Srf_treatment_type.Manual; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Srf_treatment_type.Manual)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Srf_treatment_type.Manual)] [System.Xml.Serialization.XmlAttributeAttribute("created_by")] public Srf_treatment_type Created_by { @@ -20647,9 +21206,9 @@ public string Colour } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ssrf_treatment _created_by = StruSoft.Interop_24.Ssrf_treatment.Manual; + private Ssrf_treatment _created_by = StruSoft.Interop_25.Ssrf_treatment.Manual; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ssrf_treatment.Manual)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ssrf_treatment.Manual)] [System.Xml.Serialization.XmlAttributeAttribute("created_by")] public Ssrf_treatment Created_by { @@ -20764,9 +21323,9 @@ public partial class Simple_spring_type public Stiff_base_type Rot_z { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] [System.Xml.Serialization.XmlAttributeAttribute("detach")] public Detach_type Detach { @@ -20934,6 +21493,9 @@ public partial class Support_rigidity_data_type [System.Xml.Serialization.XmlElementAttribute("group")] public Support_rigidity_data_typeGroup Group { get; set; } + + [System.Xml.Serialization.XmlElementAttribute("warping")] + public Support_rigidity_data_typeWarping Warping { get; set; } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -21011,9 +21573,9 @@ public partial class Support_rigidity_data_typeGroup public Rigidity_group_type2 Rigidity_group { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] [System.Xml.Serialization.XmlAttributeAttribute("detach")] public Detach_type Detach { @@ -21027,6 +21589,23 @@ public Detach_type Detach } } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private bool _seven_degrees_of_freedom = false; + + [System.ComponentModel.DefaultValueAttribute(false)] + [System.Xml.Serialization.XmlAttributeAttribute("seven_degrees_of_freedom")] + public bool Seven_degrees_of_freedom + { + get + { + return _seven_degrees_of_freedom; + } + set + { + _seven_degrees_of_freedom = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -21059,6 +21638,63 @@ public Support_rigidity_data_typeGroup() } } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("Support_rigidity_data_typeWarping", Namespace="urn:strusoft", AnonymousType=true)] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Support_rigidity_data_typeWarping + { + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _wx; + + [System.Xml.Serialization.XmlAttributeAttribute("Wx")] + public System.Collections.Generic.List Wx + { + get + { + return _wx; + } + set + { + _wx = value; + } + } + + public Support_rigidity_data_typeWarping() + { + this._wx = new System.Collections.Generic.List(); + this._anyAttribute = new System.Collections.Generic.List(); + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("point_support_type", Namespace="urn:strusoft")] @@ -21351,9 +21987,9 @@ public string Name } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Detach_type _detach = StruSoft.Interop_24.Detach_type.Empty; + private Detach_type _detach = StruSoft.Interop_25.Detach_type.Empty; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Detach_type.Empty)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Detach_type.Empty)] [System.Xml.Serialization.XmlAttributeAttribute("detach")] public Detach_type Detach { @@ -21617,6 +22253,35 @@ public partial class Ptc_strand_lib_typePtc_strand_data [System.Xml.Serialization.XmlAttributeAttribute("f_pk")] public double F_pk { get; set; } + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Xml.Serialization.XmlAttributeAttribute("f_p01k")] + public double F_p01kValue { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public bool F_p01kValueSpecified { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public System.Nullable F_p01k + { + get + { + if (this.F_p01kValueSpecified) + { + return this.F_p01kValue; + } + else + { + return null; + } + } + set + { + this.F_p01kValue = value.GetValueOrDefault(); + this.F_p01kValueSpecified = value.HasValue; + } + } + [System.Xml.Serialization.XmlAttributeAttribute("A_p")] public double A_p { get; set; } @@ -22153,40 +22818,6 @@ public string Name [System.Xml.Serialization.XmlAttributeAttribute("jacking_stress")] public double Jacking_stress { get; set; } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage - { - get - { - return _stage; - } - set - { - _stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage - { - get - { - return _end_stage; - } - set - { - _end_stage = value; - } - } - [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -22338,6 +22969,152 @@ public enum Lc_final_cs Final_cs, } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("ldpos_pos_type", Namespace="urn:strusoft")] + public enum Ldpos_pos_type + { + + [System.Xml.Serialization.XmlEnumAttribute("on_centric_axis/surface")] + On_centric_axissurface, + + [System.Xml.Serialization.XmlEnumAttribute("on_eccentric_axis/surface")] + On_eccentric_axissurface, + + [System.Xml.Serialization.XmlEnumAttribute("user_defined_eccentricity")] + User_defined_eccentricity, + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("ldpos_ref_type", Namespace="urn:strusoft")] + public enum Ldpos_ref_type + { + + [System.Xml.Serialization.XmlEnumAttribute("reference_axis")] + Reference_axis, + + [System.Xml.Serialization.XmlEnumAttribute("center_of_gravity")] + Center_of_gravity, + + [System.Xml.Serialization.XmlEnumAttribute("shear_center")] + Shear_center, + + [System.Xml.Serialization.XmlEnumAttribute("bounding_rectangle")] + Bounding_rectangle, + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("ldpos_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Ldpos_type + { + + [System.Xml.Serialization.XmlAttributeAttribute("position")] + public Ldpos_pos_type Position { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _shift_y = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("shift_y")] + public double Shift_y + { + get + { + return _shift_y; + } + set + { + _shift_y = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _shift_z = 0D; + + [System.ComponentModel.DefaultValueAttribute(0D)] + [System.Xml.Serialization.XmlAttributeAttribute("shift_z")] + public double Shift_z + { + get + { + return _shift_z; + } + set + { + _shift_z = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Ldpos_ref_type _reference_point = StruSoft.Interop_25.Ldpos_ref_type.Center_of_gravity; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldpos_ref_type.Center_of_gravity)] + [System.Xml.Serialization.XmlAttributeAttribute("reference_point")] + public Ldpos_ref_type Reference_point + { + get + { + return _reference_point; + } + set + { + _reference_point = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private Rec_pos_type _rectangle_position = StruSoft.Interop_25.Rec_pos_type.Center_center; + + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Rec_pos_type.Center_center)] + [System.Xml.Serialization.XmlAttributeAttribute("rectangle_position")] + public Rec_pos_type Rectangle_position + { + get + { + return _rectangle_position; + } + set + { + _rectangle_position = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public Ldpos_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("caseless_point_load_type", Namespace="urn:strusoft")] @@ -22353,6 +23130,9 @@ public partial class Caseless_point_load_type [System.Xml.Serialization.XmlElementAttribute("load")] public Location_value Load { get; set; } + [System.Xml.Serialization.XmlElementAttribute("load_position")] + public Ldpos_type Load_position { get; set; } + [System.Xml.Serialization.XmlElementAttribute("colouring")] public Entity_color Colouring { get; set; } @@ -22658,6 +23438,9 @@ public Caseless_line_load_type() this._load = new System.Collections.Generic.List(); } + [System.Xml.Serialization.XmlElementAttribute("load_position")] + public Ldpos_type Load_position { get; set; } + [System.Xml.Serialization.XmlElementAttribute("colouring")] public Entity_color Colouring { get; set; } @@ -22916,6 +23699,9 @@ public Caseless_line_load_resultant_type() [System.Xml.Serialization.XmlElementAttribute("resultant")] public Resultant_type Resultant { get; set; } + [System.Xml.Serialization.XmlElementAttribute("load_position")] + public Ldpos_type Load_position { get; set; } + [System.Xml.Serialization.XmlElementAttribute("colouring")] public Entity_color Colouring { get; set; } @@ -24894,6 +25680,41 @@ public enum Seismic_ground_type S1S2_3560mA, } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_seismic_ground_type", Namespace="urn:strusoft")] + public enum EC_G2_seismic_ground_type + { + + A, + + B, + + C, + + D, + + E, + + F, + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("seismic_structure_type", Namespace="urn:strusoft")] + public enum Seismic_structure_type + { + + [System.Xml.Serialization.XmlEnumAttribute("building")] + Building, + + [System.Xml.Serialization.XmlEnumAttribute("bridge")] + Bridge, + + [System.Xml.Serialization.XmlEnumAttribute("others")] + Others, + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("ec40_tc_type", Namespace="urn:strusoft")] @@ -25026,6 +25847,208 @@ public Ec040_standard_spectra_type() } } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_horizontal_spectra_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_horizontal_spectra_type + { + + [System.Xml.Serialization.XmlElementAttribute("amplification_factors")] + public EC_G2_horizontal_spectra_typeAmplification_factors Amplification_factors { get; set; } + + [System.Xml.Serialization.XmlElementAttribute("site_category")] + public EC_G2_horizontal_spectra_typeSite_category Site_category { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("SalphaRP")] + public double SalphaRP { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("SbetaRP")] + public double SbetaRP { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("FT")] + public double FT { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("FA")] + public double FA { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("Chi")] + public double Chi { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("TA")] + public double TA { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("TD")] + public double TD { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("BetaH")] + public double BetaH { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public EC_G2_horizontal_spectra_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_horizontal_spectra_typeAmplification_factors", Namespace="urn:strusoft", AnonymousType=true)] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_horizontal_spectra_typeAmplification_factors + { + + [System.Xml.Serialization.XmlAttributeAttribute("Falpha")] + public double Falpha { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("Fbeta")] + public double Fbeta { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public EC_G2_horizontal_spectra_typeAmplification_factors() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_horizontal_spectra_typeSite_category", Namespace="urn:strusoft", AnonymousType=true)] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_horizontal_spectra_typeSite_category + { + + [System.Xml.Serialization.XmlAttributeAttribute("type")] + public EC_G2_seismic_ground_type Type { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public EC_G2_horizontal_spectra_typeSite_category() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_vertical_spectra_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_vertical_spectra_type + { + + [System.Xml.Serialization.XmlAttributeAttribute("BetaV")] + public double BetaV { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public EC_G2_vertical_spectra_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("spectra_record_type", Namespace="urn:strusoft")] @@ -25066,54 +26089,374 @@ public bool AnyAttributeSpecified } } - public Spectra_record_type() + public Spectra_record_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_spectra_record_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_spectra_record_type + { + + [System.Xml.Serialization.XmlAttributeAttribute("T")] + public double T { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("Sr")] + public double Sr { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + + public EC_G2_spectra_record_type() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("unique_spectra_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Unique_spectra_type + { + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _record; + + [System.Xml.Serialization.XmlElementAttribute("record")] + public System.Collections.Generic.List Record + { + get + { + return _record; + } + set + { + _record = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RecordSpecified + { + get + { + return ((this.Record != null) + && (this.Record.Count != 0)); + } + } + + public Unique_spectra_type() + { + this._record = new System.Collections.Generic.List(); + this._anyAttribute = new System.Collections.Generic.List(); + } + + [System.Xml.Serialization.XmlAttributeAttribute("start_Sd")] + public double Start_Sd { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_unique_spectra_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_unique_spectra_type + { + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _record; + + [System.Xml.Serialization.XmlElementAttribute("record")] + public System.Collections.Generic.List Record + { + get + { + return _record; + } + set + { + _record = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RecordSpecified + { + get + { + return ((this.Record != null) + && (this.Record.Count != 0)); + } + } + + public EC_G2_unique_spectra_type() + { + this._record = new System.Collections.Generic.List(); + this._anyAttribute = new System.Collections.Generic.List(); + } + + [System.Xml.Serialization.XmlAttributeAttribute("start_Sr")] + public double Start_Sr { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("bridge_pier_type", Namespace="urn:strusoft")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class Bridge_pier_type + { + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _elements; + + [System.Xml.Serialization.XmlElementAttribute("elements")] + public System.Collections.Generic.List Elements { + get + { + return _elements; + } + set + { + _elements = value; + } + } + + public Bridge_pier_type() + { + this._elements = new System.Collections.Generic.List(); this._anyAttribute = new System.Collections.Generic.List(); } + + [System.Xml.Serialization.XmlAttributeAttribute("name")] + public string Name { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("colour")] + public string Colour { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute("unique_spectra_type", Namespace="urn:strusoft")] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_seismic_load_type", Namespace="urn:strusoft")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class Unique_spectra_type + public partial class EC_G2_seismic_load_type { + [System.Xml.Serialization.XmlElementAttribute("standard_spectrum")] + public EC_G2_seismic_load_typeStandard_spectrum Standard_spectrum { get; set; } + + [System.Xml.Serialization.XmlElementAttribute("unique_spectrum")] + public EC_G2_seismic_load_typeUnique_spectrum Unique_spectrum { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] - private System.Collections.Generic.List _record; + private System.Collections.Generic.List _bridge_pier; - [System.Xml.Serialization.XmlElementAttribute("record")] - public System.Collections.Generic.List Record + [System.Xml.Serialization.XmlElementAttribute("bridge_pier")] + public System.Collections.Generic.List Bridge_pier { get { - return _record; + return _bridge_pier; } set { - _record = value; + _bridge_pier = value; } } [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool RecordSpecified + public bool Bridge_pierSpecified { get { - return ((this.Record != null) - && (this.Record.Count != 0)); + return ((this.Bridge_pier != null) + && (this.Bridge_pier.Count != 0)); } } - public Unique_spectra_type() + public EC_G2_seismic_load_type() { - this._record = new System.Collections.Generic.List(); + this._bridge_pier = new System.Collections.Generic.List(); this._anyAttribute = new System.Collections.Generic.List(); } - [System.Xml.Serialization.XmlAttributeAttribute("start_Sd")] - public double Start_Sd { get; set; } + [System.Xml.Serialization.XmlAttributeAttribute("last_change", DataType="dateTime")] + public System.DateTime Last_change { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("action")] + public Modification_type Action { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("structure_type")] + public Seismic_structure_type Structure_type { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("xi")] + public double Xi { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("qR")] + public double QR { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("qS")] + public double QS { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("qD")] + public double QD { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("qv")] + public double Qv { get; set; } + + [System.Xml.Serialization.XmlAttributeAttribute("qdisp")] + public double Qdisp { get; set; } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + private System.Collections.Generic.List _anyAttribute; + + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Collections.Generic.List AnyAttribute + { + get + { + return _anyAttribute; + } + set + { + _anyAttribute = value; + } + } + + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnyAttributeSpecified + { + get + { + return ((this.AnyAttribute != null) + && (this.AnyAttribute.Count != 0)); + } + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_seismic_load_typeStandard_spectrum", Namespace="urn:strusoft", AnonymousType=true)] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_seismic_load_typeStandard_spectrum + { + + [System.Xml.Serialization.XmlElementAttribute("horizontal")] + public EC_G2_horizontal_spectra_type Horizontal { get; set; } + + [System.Xml.Serialization.XmlElementAttribute("vertical")] + public EC_G2_vertical_spectra_type Vertical { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -25140,6 +26483,26 @@ public bool AnyAttributeSpecified && (this.AnyAttribute.Count != 0)); } } + + public EC_G2_seismic_load_typeStandard_spectrum() + { + this._anyAttribute = new System.Collections.Generic.List(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("EC_G2_seismic_load_typeUnique_spectrum", Namespace="urn:strusoft", AnonymousType=true)] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class EC_G2_seismic_load_typeUnique_spectrum + { + + [System.Xml.Serialization.XmlElementAttribute("horizontal")] + public EC_G2_unique_spectra_type Horizontal { get; set; } + + [System.Xml.Serialization.XmlElementAttribute("vertical")] + public EC_G2_unique_spectra_type Vertical { get; set; } } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -25252,9 +26615,9 @@ public partial class Seismic_load_typeCommon_standard_spectra public Standard_spectra_type Vertical { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Seismic_ground_type _ground = StruSoft.Interop_24.Seismic_ground_type.A; + private Seismic_ground_type _ground = StruSoft.Interop_25.Seismic_ground_type.A; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Seismic_ground_type.A)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Seismic_ground_type.A)] [System.Xml.Serialization.XmlAttributeAttribute("ground")] public Seismic_ground_type Ground { @@ -26218,9 +27581,9 @@ public string Hash_order_id public Loadcasetype_type Type { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Loadcasedurationtype _duration_class = StruSoft.Interop_24.Loadcasedurationtype.Permanent; + private Loadcasedurationtype _duration_class = StruSoft.Interop_25.Loadcasedurationtype.Permanent; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Loadcasedurationtype.Permanent)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Loadcasedurationtype.Permanent)] [System.Xml.Serialization.XmlAttributeAttribute("duration_class")] public Loadcasedurationtype Duration_class { @@ -27146,9 +28509,9 @@ public partial class Ldgroup_relation_record_type public string Name { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldgroup_direction_type _direction = StruSoft.Interop_24.Ldgroup_direction_type.Non_directional; + private Ldgroup_direction_type _direction = StruSoft.Interop_25.Ldgroup_direction_type.Non_directional; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldgroup_direction_type.Non_directional)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldgroup_direction_type.Non_directional)] [System.Xml.Serialization.XmlAttributeAttribute("direction")] public Ldgroup_direction_type Direction { @@ -27554,9 +28917,9 @@ public bool Snow_effect } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldgroup_relation _relationship = StruSoft.Interop_24.Ldgroup_relation.Alternative; + private Ldgroup_relation _relationship = StruSoft.Interop_25.Ldgroup_relation.Alternative; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldgroup_relation.Alternative)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldgroup_relation.Alternative)] [System.Xml.Serialization.XmlAttributeAttribute("relationship")] public Ldgroup_relation Relationship { @@ -27845,9 +29208,9 @@ public bool RelationsSpecified public double Xi { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldgroup_relation _relationship = StruSoft.Interop_24.Ldgroup_relation.Alternative; + private Ldgroup_relation _relationship = StruSoft.Interop_25.Ldgroup_relation.Alternative; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldgroup_relation.Alternative)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldgroup_relation.Alternative)] [System.Xml.Serialization.XmlAttributeAttribute("relationship")] public Ldgroup_relation Relationship { @@ -28120,9 +29483,9 @@ public bool RelationsSpecified public double Accidental { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldgroup_relation _relationship = StruSoft.Interop_24.Ldgroup_relation.Alternative; + private Ldgroup_relation _relationship = StruSoft.Interop_25.Ldgroup_relation.Alternative; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldgroup_relation.Alternative)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldgroup_relation.Alternative)] [System.Xml.Serialization.XmlAttributeAttribute("relationship")] public Ldgroup_relation Relationship { @@ -28727,9 +30090,9 @@ public bool Simultaneous } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldgroup_relation _relationship = StruSoft.Interop_24.Ldgroup_relation.Alternative; + private Ldgroup_relation _relationship = StruSoft.Interop_25.Ldgroup_relation.Alternative; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldgroup_relation.Alternative)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldgroup_relation.Alternative)] [System.Xml.Serialization.XmlAttributeAttribute("relationship")] public Ldgroup_relation Relationship { @@ -28744,9 +30107,9 @@ public Ldgroup_relation Relationship } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldgroup_tmpeffect _temporary_effect = StruSoft.Interop_24.Ldgroup_tmpeffect.General; + private Ldgroup_tmpeffect _temporary_effect = StruSoft.Interop_25.Ldgroup_tmpeffect.General; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldgroup_tmpeffect.General)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldgroup_tmpeffect.General)] [System.Xml.Serialization.XmlAttributeAttribute("temporary_effect")] public Ldgroup_tmpeffect Temporary_effect { @@ -29013,6 +30376,15 @@ public enum Ldcombmethod [System.Xml.Serialization.XmlEnumAttribute("custom")] Custom, + + [System.Xml.Serialization.XmlEnumAttribute("EN 1990 8.3.4.2 (8.12)")] + EN_1990_8Period3Period4Period2_LeftParenthesis8Period12RightParenthesis, + + [System.Xml.Serialization.XmlEnumAttribute("EN 1990 8.3.4.2 (8.13)")] + EN_1990_8Period3Period4Period2_LeftParenthesis8Period13RightParenthesis, + + [System.Xml.Serialization.XmlEnumAttribute("EN 1990 8.3.4.2 (8.14)")] + EN_1990_8Period3Period4Period2_LeftParenthesis8Period14RightParenthesis, } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -29188,9 +30560,9 @@ public System.Collections.Generic.List Group public System.DateTime Last_change { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Ldcombmethod _simple_combination_method = StruSoft.Interop_24.Ldcombmethod.EN_1990_6Period4Period3LeftParenthesis6Period10RightParenthesis; + private Ldcombmethod _simple_combination_method = StruSoft.Interop_25.Ldcombmethod.EN_1990_6Period4Period3LeftParenthesis6Period10RightParenthesis; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Ldcombmethod.EN_1990_6Period4Period3LeftParenthesis6Period10RightParenthesis)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Ldcombmethod.EN_1990_6Period4Period3LeftParenthesis6Period10RightParenthesis)] [System.Xml.Serialization.XmlAttributeAttribute("simple_combination_method")] public Ldcombmethod Simple_combination_method { @@ -29204,6 +30576,23 @@ public Ldcombmethod Simple_combination_method } } + [System.Xml.Serialization.XmlIgnoreAttribute()] + private double _k_f = 1D; + + [System.ComponentModel.DefaultValueAttribute(1D)] + [System.Xml.Serialization.XmlAttributeAttribute("k_f")] + public double K_f + { + get + { + return _k_f; + } + set + { + _k_f = value; + } + } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -29970,6 +31359,55 @@ public Fdarc3_type() } } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute("internal_line_style", Namespace="urn:strusoft")] + public enum Internal_line_style + { + + CONTINUOUS, + + DASH4, + + DASH2, + + DASH8, + + DASH12, + + CENTER4, + + CENTER2, + + CENTER8, + + CENTER12, + + DOT4, + + DOT2, + + DOT8, + + DOT12, + + SECTION4, + + SECTION2, + + SECTION8, + + SECTION12, + + DASHDOT4, + + DASHDOT2, + + DASHDOT8, + + DASHDOT12, + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute("point_type", Namespace="urn:strusoft")] @@ -30178,9 +31616,9 @@ public int Decimals } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Lengthunit_type _length_unit = StruSoft.Interop_24.Lengthunit_type.M; + private Lengthunit_type _length_unit = StruSoft.Interop_25.Lengthunit_type.M; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Lengthunit_type.M)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Lengthunit_type.M)] [System.Xml.Serialization.XmlAttributeAttribute("length_unit")] public Lengthunit_type Length_unit { @@ -30195,9 +31633,9 @@ public Lengthunit_type Length_unit } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Angleunit_type _angle_unit = StruSoft.Interop_24.Angleunit_type.Rad; + private Angleunit_type _angle_unit = StruSoft.Interop_25.Angleunit_type.Rad; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Angleunit_type.Rad)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Angleunit_type.Rad)] [System.Xml.Serialization.XmlAttributeAttribute("angle_unit")] public Angleunit_type Angle_unit { @@ -30280,9 +31718,9 @@ public string Colour } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Halign_type _h_align = StruSoft.Interop_24.Halign_type.Centered; + private Halign_type _h_align = StruSoft.Interop_25.Halign_type.Centered; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Halign_type.Centered)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Halign_type.Centered)] [System.Xml.Serialization.XmlAttributeAttribute("h_align")] public Halign_type H_align { @@ -30297,9 +31735,9 @@ public Halign_type H_align } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Valign_type _v_align = StruSoft.Interop_24.Valign_type.Above; + private Valign_type _v_align = StruSoft.Interop_25.Valign_type.Above; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Valign_type.Above)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Valign_type.Above)] [System.Xml.Serialization.XmlAttributeAttribute("v_align")] public Valign_type V_align { @@ -30382,9 +31820,9 @@ public partial class Arrow_type { [System.Xml.Serialization.XmlIgnoreAttribute()] - private Arrowtype_type _type = StruSoft.Interop_24.Arrowtype_type.Tick; + private Arrowtype_type _type = StruSoft.Interop_25.Arrowtype_type.Tick; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Arrowtype_type.Tick)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Arrowtype_type.Tick)] [System.Xml.Serialization.XmlAttributeAttribute("type")] public Arrowtype_type Type { @@ -32381,6 +33819,9 @@ public enum Sj_datatype_names [System.Xml.Serialization.XmlEnumAttribute("anchor_cfd")] Anchor_cfd, + [System.Xml.Serialization.XmlEnumAttribute("anchor_suitability_test")] + Anchor_suitability_test, + [System.Xml.Serialization.XmlEnumAttribute("bolt_group_ncol")] Bolt_group_ncol, @@ -32485,6 +33926,63 @@ public enum Sj_datatype_names [System.Xml.Serialization.XmlEnumAttribute("weld_preheating")] Weld_preheating, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material")] + Weld_filler_material, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_s")] + Weld_filler_material_s, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_fht")] + Weld_filler_material_fht, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_wht")] + Weld_filler_material_wht, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_f1")] + Weld_filler_material_f1, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_ft")] + Weld_filler_material_ft, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_w(l)")] + Weld_filler_material_wl, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_wr")] + Weld_filler_material_wr, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_f(b)")] + Weld_filler_material_fb, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_f4")] + Weld_filler_material_f4, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_whb")] + Weld_filler_material_whb, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_fhb")] + Weld_filler_material_fhb, + + [System.Xml.Serialization.XmlEnumAttribute("weld_top_filler_material_wh")] + Weld_top_filler_material_wh, + + [System.Xml.Serialization.XmlEnumAttribute("weld_bottom_filler_material_wh")] + Weld_bottom_filler_material_wh, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_f1_back")] + Weld_filler_material_f1_back, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_ft_back")] + Weld_filler_material_ft_back, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_fw_back")] + Weld_filler_material_fw_back, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_fb_back")] + Weld_filler_material_fb_back, + + [System.Xml.Serialization.XmlEnumAttribute("weld_filler_material_f4_back")] + Weld_filler_material_f4_back, } [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.1.1162.0")] @@ -34234,9 +35732,9 @@ public string Name public string Complex_material { get; set; } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Steelmadetype _made = StruSoft.Interop_24.Steelmadetype.Rolled; + private Steelmadetype _made = StruSoft.Interop_25.Steelmadetype.Rolled; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Steelmadetype.Rolled)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Steelmadetype.Rolled)] [System.Xml.Serialization.XmlAttributeAttribute("made")] public Steelmadetype Made { @@ -34300,40 +35798,6 @@ public System.Nullable D [System.Xml.Serialization.XmlAttributeAttribute("y")] public double Y { get; set; } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage - { - get - { - return _stage; - } - set - { - _stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage - { - get - { - return _end_stage; - } - set - { - _end_stage = value; - } - } - [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -34497,40 +35961,6 @@ public bool Positive_side [System.Xml.Serialization.XmlAttributeAttribute("complex_material")] public string Complex_material { get; set; } - [System.Xml.Serialization.XmlIgnoreAttribute()] - private int _stage = 1; - - [System.ComponentModel.DefaultValueAttribute(1)] - [System.Xml.Serialization.XmlAttributeAttribute("stage")] - public int Stage - { - get - { - return _stage; - } - set - { - _stage = value; - } - } - - [System.Xml.Serialization.XmlIgnoreAttribute()] - private string _end_stage = "last_stage"; - - [System.ComponentModel.DefaultValueAttribute("last_stage")] - [System.Xml.Serialization.XmlAttributeAttribute("end_stage")] - public string End_stage - { - get - { - return _end_stage; - } - set - { - _end_stage = value; - } - } - [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _anyAttribute; @@ -35197,9 +36627,9 @@ public string Name } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Roof_type _roof_type = StruSoft.Interop_24.Roof_type.Flat; + private Roof_type _roof_type = StruSoft.Interop_25.Roof_type.Flat; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Roof_type.Flat)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Roof_type.Flat)] [System.Xml.Serialization.XmlAttributeAttribute("roof_type")] public Roof_type Roof_type { @@ -36433,9 +37863,9 @@ public string Convertid } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Standardtype _standard = StruSoft.Interop_24.Standardtype.EC; + private Standardtype _standard = StruSoft.Interop_25.Standardtype.EC; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Standardtype.EC)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Standardtype.EC)] [System.Xml.Serialization.XmlAttributeAttribute("standard")] public Standardtype Standard { @@ -36450,9 +37880,9 @@ public Standardtype Standard } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Eurocodetype _country = StruSoft.Interop_24.Eurocodetype.Common; + private Eurocodetype _country = StruSoft.Interop_25.Eurocodetype.Common; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Eurocodetype.Common)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Eurocodetype.Common)] [System.Xml.Serialization.XmlAttributeAttribute("country")] public Eurocodetype Country { @@ -37891,6 +39321,9 @@ public bool MassSpecified [System.Xml.Serialization.XmlElementAttribute("seismic_load")] public Seismic_load_type Seismic_load { get; set; } + [System.Xml.Serialization.XmlElementAttribute("EC_G2_seismic_load")] + public EC_G2_seismic_load_type EC_G2_seismic_load { get; set; } + [System.Xml.Serialization.XmlIgnoreAttribute()] private System.Collections.Generic.List _footfall_analysis_data; @@ -39932,9 +41365,9 @@ public bool Physical_view } [System.Xml.Serialization.XmlIgnoreAttribute()] - private Displaymodes _display_mode = StruSoft.Interop_24.Displaymodes.Wireframe; + private Displaymodes _display_mode = StruSoft.Interop_25.Displaymodes.Wireframe; - [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_24.Displaymodes.Wireframe)] + [System.ComponentModel.DefaultValueAttribute(StruSoft.Interop_25.Displaymodes.Wireframe)] [System.Xml.Serialization.XmlAttributeAttribute("display_mode")] public Displaymodes Display_mode { diff --git a/FemDesign.Examples/C#/Example 1 - Simple beam/Program.cs b/FemDesign.Examples/C#/Example 1 - Simple beam/Program.cs index b25df0ae5..4adcde1af 100644 --- a/FemDesign.Examples/C#/Example 1 - Simple beam/Program.cs +++ b/FemDesign.Examples/C#/Example 1 - Simple beam/Program.cs @@ -96,20 +96,6 @@ static void Main() model.AddLoads(loads); - var column = model.Entities.Bars.Where(bar => bar.Type == Bars.BarType.Column).Where(bar => bar.Identifier == "MyElementID").First(); - - - var sectionDatabase = Sections.SectionDatabase.GetDefault(); - var sectionName = "Concrete sections, Rectangle, 300x900"; - var newSection = sectionDatabase.SectionByName(sectionName); - - column.UpdateSection( newSection ); - - var columns = new List(); - columns.Add(column); - - model.AddElements(columns, overwrite: true); - // Run Analysis using (var femDesign = new FemDesignConnection(outputDir: "My simple beam", keepOpen: true)) { diff --git a/FemDesign.Examples/C#/Practical example - Connection forces to Load/Program.cs b/FemDesign.Examples/C#/Practical example - Connection forces to Load/Program.cs index ace046245..e672621c4 100644 --- a/FemDesign.Examples/C#/Practical example - Connection forces to Load/Program.cs +++ b/FemDesign.Examples/C#/Practical example - Connection forces to Load/Program.cs @@ -25,7 +25,7 @@ static void Main(string[] args) }; - using (var femDesign = new FemDesignConnection(keepOpen: true, fdInstallationDir: "C:\\Program Files\\StruSoft\\FEM-Design 24 Night Install")) + using (var femDesign = new FemDesignConnection(keepOpen: true, fdInstallationDir: "C:\\Program Files\\StruSoft\\FEM-Design 25")) { var filePath = "fea.str"; femDesign.Open(filePath); diff --git a/FemDesign.Examples/Python/modify_struxml/concrete_beam.struxml b/FemDesign.Examples/Python/modify_struxml/concrete_beam.struxml new file mode 100644 index 000000000..34e152e53 --- /dev/null +++ b/FemDesign.Examples/Python/modify_struxml/concrete_beam.struxml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + +
diff --git a/FemDesign.Examples/Python/modify_struxml/modify_struxml.py b/FemDesign.Examples/Python/modify_struxml/modify_struxml.py new file mode 100644 index 000000000..054da8249 --- /dev/null +++ b/FemDesign.Examples/Python/modify_struxml/modify_struxml.py @@ -0,0 +1,228 @@ +""" +Example 3: Modify StruXML File +=============================== +This example demonstrates how to: +- Deserialize (read) a .struxml file into Python objects +- Extract information like load cases and load combinations +- Modify load case names +- Modify beam names and properties +- Serialize back to .struxml file +- Open the modified file with FemDesignConnection +""" + +import os + +from femdesign.comunication import * +from femdesign.calculate import * +from femdesign.interop import * +from femdesign.io import * + + +# Get the directory where this script is located +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Path to the input model file +INPUT_MODEL = os.path.join(SCRIPT_DIR, "concrete_beam.struxml") +# Path to save the modified model +MODIFIED_MODEL = os.path.join(SCRIPT_DIR, "concrete_beam_modified.struxml") +# Path to save the analyzed model +OUTPUT_MODEL = os.path.join(SCRIPT_DIR, "concrete_beam_modified_analyzed.str") + + +def print_load_information(database: Database): + """Print information about load cases and load combinations.""" + + if not database.entities or not database.entities.loads: + print("No loads found in the model") + return + + loads = database.entities.loads + + # Print load cases + print("\n" + "=" * 60) + print("LOAD CASES") + print("=" * 60) + if loads.load_case: + for i, load_case in enumerate(loads.load_case, 1): + print(f"\n{i}. Name: {load_case.name}") + print(f" GUID: {load_case.guid}") + print(f" Type: {load_case.type_value.value}") + print(f" Duration Class: {load_case.duration_class.value}") + else: + print("No load cases found") + + # Print load combinations + print("\n" + "=" * 60) + print("LOAD COMBINATIONS") + print("=" * 60) + if loads.load_combination: + for i, load_comb in enumerate(loads.load_combination, 1): + print(f"\n{i}. Name: {load_comb.name}") + print(f" GUID: {load_comb.guid}") + print(f" Type: {load_comb.type_value.value}") + print(f" Contains {len(load_comb.load_case)} load case(s):") + for lc in load_comb.load_case: + print(f" - GUID: {lc.guid}, Factor: {lc.gamma}") + else: + print("No load combinations found") + + +def print_bar_information(database: Database): + """Print information about bars (beams, columns, etc.).""" + + if not database.entities or not database.entities.bar: + print("No bars found in the model") + return + + print("\n" + "=" * 60) + print("BARS (Beams/Columns)") + print("=" * 60) + + for i, bar in enumerate(database.entities.bar, 1): + print(f"\n{i}. Name: {bar.name}") + print(f" GUID: {bar.guid}") + print(f" Type: {bar.type_value.value}") + print(f" Number of parts: {len(bar.bar_part)}") + + # Print any custom attributes (like color) + if bar.any_attributes: + print(f" Custom attributes: {bar.any_attributes}") + + +def modify_load_cases(database : Database): + """Modify load case names.""" + + if not database.entities or not database.entities.loads: + print("No loads to modify") + return + + loads = database.entities.loads + + if loads.load_case: + for load_case in loads.load_case: + # Modify load case names + if load_case.name == "DL": + old_name = load_case.name + load_case.name = "DeadLoad" + print(f"\nModified load case: '{old_name}' -> '{load_case.name}'") + elif load_case.name == "LL": + old_name = load_case.name + load_case.name = "LiveLoad" + print(f"Modified load case: '{old_name}' -> '{load_case.name}'") + + +def modify_load_combinations(database : Database): + """Modify load combination names.""" + + if not database.entities or not database.entities.loads: + print("No loads to modify") + return + + loads = database.entities.loads + + if loads.load_combination: + for load_comb in loads.load_combination: + # Modify load combination name + if load_comb.name == "ULS_1": + old_name = load_comb.name + load_comb.name = "ULS - Ultimate Limit State" + print(f"Modified load combination: '{old_name}' -> '{load_comb.name}'") + + +def modify_bars(database : Database): + """Modify bar names and add color attribute.""" + + if not database.entities or not database.entities.bar: + print("No bars to modify") + return + + for bar in database.entities.bar: + # Modify bar name + if bar.name and bar.name.startswith("B."): + old_name = bar.name + bar.name = "Beam_Main_001" + print(f"\nModified bar name: '{old_name}' -> '{bar.name}'") + + # Add a color attribute (RGB color in hex format without #, e.g. FF0000 for red) + # Red color: FF0000 + bar.bar_part[0].colouring = EntityColor(tone="FF0000") + print(f"Added color attribute: {bar.bar_part[0].colouring.tone} to bar '{bar.name}'") + + +def main(): + print("=" * 60) + print("STRUXML MODIFICATION EXAMPLE") + print("=" * 60) + + # Step 1: Deserialize the struxml file + print(f"\nStep 1: Reading model from {INPUT_MODEL}") + database = deserialize_from_filepath(INPUT_MODEL) + print("✓ Model loaded successfully") + + database.country = Eurocodetype.S + database.entities.supports.point_support[0].group.rigidity.motions.x_neg = 0 + database.entities.supports.point_support[0].group.rigidity.motions.x_pos = 0 + + # Step 2: Print current information + print("\n" + "▬" * 60) + print("ORIGINAL MODEL INFORMATION") + print("▬" * 60) + print_load_information(database) + print_bar_information(database) + + # Step 3: Modify the model + print("\n" + "▬" * 60) + print("MODIFYING MODEL") + print("▬" * 60) + modify_load_cases(database) + modify_load_combinations(database) + modify_bars(database) + + # Step 4: Print modified information + print("\n" + "▬" * 60) + print("MODIFIED MODEL INFORMATION") + print("▬" * 60) + print_load_information(database) + print_bar_information(database) + + # Step 5: Serialize back to struxml + print(f"\nStep 5: Saving modified model to {MODIFIED_MODEL}") + serialize_to_struxml(database, filepath=MODIFIED_MODEL) + print("✓ Modified model saved successfully") + + # Step 6: Open in FEM-Design and run analysis + print(f"\nStep 6: Opening modified model in FEM-Design") + connection = FemDesignConnection(minimized=True) + + try: + connection.SetVerbosity(Verbosity.SCRIPT_LOG_LINES) + + # Open the modified model + connection.Open(MODIFIED_MODEL) + print("✓ Model opened in FEM-Design") + + # You can run analysis here if needed + # from femdesign.calculate.analysis import Analysis + # static_analysis = Analysis.StaticAnalysis() + # connection.RunAnalysis(static_analysis) + + # Save to demonstrate it works + connection.Save(OUTPUT_MODEL) + print(f"✓ Model saved to: {OUTPUT_MODEL}") + + connection.Detach() + + print("\n" + "=" * 60) + print("SUCCESS!") + print("=" * 60) + print("1. Notice the updated load case/combination names") + print("2. Check the beam properties for the updated name") + + except Exception as err: + print(f"\n✗ Error occurred: {err}") + connection.KillProgramIfExists() + raise err + + +if __name__ == "__main__": + main() diff --git a/FemDesign.Grasshopper/Components/FemDesignHybridComponent.cs b/FemDesign.Grasshopper/Components/FemDesignHybridComponent.cs new file mode 100644 index 000000000..6819711b6 --- /dev/null +++ b/FemDesign.Grasshopper/Components/FemDesignHybridComponent.cs @@ -0,0 +1,305 @@ +// https://strusoft.com/ +using Grasshopper.Kernel; +using System; +using System.Threading; +using System.Threading.Tasks; +using Timer = System.Timers.Timer; + +namespace FemDesign.Grasshopper +{ + /// + /// Base component that can run either synchronously or asynchronously + /// based on global FemDesignSettings.AsyncModeEnabled setting. + /// + /// In sync mode: executes immediately, blocking the UI. + /// In async mode: executes in a background task, allowing UI to remain responsive. + /// + public abstract class FemDesignHybridComponent : FEM_Design_API_Component + { + private CancellationTokenSource _cts; + private bool _isRunning; + private bool _hasResult; + private Exception _asyncException; + + // Spinner animation for async processing + private Timer _spinnerTimer; + private int _spinnerFrame; + private static readonly string[] SpinnerFrames = new[] + { + @"\Processing\", + @"|Processing|", + @"/Processing/", + @"-Processing-" + }; + + protected FemDesignHybridComponent(string name, string nickname, string description, string category, string subCategory) + : base(name, nickname, description, category, subCategory) + { + // Initialize spinner timer (updates every 250ms) + _spinnerTimer = new Timer(250) { AutoReset = true }; + _spinnerTimer.Elapsed += OnSpinnerTick; + + // Set initial message based on current mode + UpdateAsyncMessage(); + } + + public override void AddedToDocument(GH_Document document) + { + base.AddedToDocument(document); + + // Subscribe to async mode changes + FemDesignSettings.AsyncModeChanged += OnAsyncModeChanged; + + // Update message when added to document + UpdateAsyncMessage(); + } + + private void OnAsyncModeChanged() + { + // Update message when async mode changes (only if not currently running) + if (!_isRunning) + { + UpdateAsyncMessage(); + + // Refresh display on UI thread + Rhino.RhinoApp.InvokeOnUiThread((Action)(() => + { + OnDisplayExpired(true); + })); + } + } + + private void UpdateAsyncMessage() + { + // Show "Async" when async mode is enabled, nothing when sync mode + Message = FemDesignSettings.AsyncModeEnabled ? "Async" : null; + } + + private void OnSpinnerTick(object sender, System.Timers.ElapsedEventArgs e) + { + if (!_isRunning) return; + + _spinnerFrame = (_spinnerFrame + 1) % SpinnerFrames.Length; + Message = SpinnerFrames[_spinnerFrame]; + + // Update display on UI thread + Rhino.RhinoApp.InvokeOnUiThread((Action)(() => + { + OnDisplayExpired(true); + })); + } + + private void StartSpinner() + { + _spinnerFrame = 0; + Message = SpinnerFrames[0]; + _spinnerTimer?.Start(); + } + + private void StopSpinner() + { + _spinnerTimer?.Stop(); + } + + /// + /// Override this to collect input data from the DataAccess object. + /// Store the data in instance fields for use in ExecuteWork. + /// This is called on the UI thread before async execution starts. + /// + protected abstract void CollectInputData(IGH_DataAccess DA); + + /// + /// Override this to implement the actual work logic. + /// This runs on a background thread in async mode. + /// Use cancellationToken to check for cancellation in long-running operations. + /// Store results in instance fields for use in SetOutputData. + /// + protected abstract void ExecuteWork(CancellationToken cancellationToken); + + /// + /// Override this to set output data to the DataAccess object. + /// This is called on the UI thread after ExecuteWork completes. + /// + protected abstract void SetOutputData(IGH_DataAccess DA); + + /// + /// Override this to set default/empty output data when RunNode is false or an error occurs. + /// + protected virtual void SetDefaultOutputData(IGH_DataAccess DA) { } + + /// + /// Override this to check if the component should execute. + /// Return false to skip execution (e.g., when RunNode is false). + /// + protected virtual bool ShouldExecute() => true; + + protected override void SolveInstance(IGH_DataAccess DA) + { + if (FemDesignSettings.AsyncModeEnabled) + { + SolveAsync(DA); + } + else + { + // Sync mode: collect input data and execute + CollectInputData(DA); + + // Check if we should execute + if (!ShouldExecute()) + { + SetDefaultOutputData(DA); + return; + } + + SolveSync(DA); + } + } + + private void SolveSync(IGH_DataAccess DA) + { + // In sync mode, don't show any message annotation + Message = null; + + try + { + ExecuteWork(CancellationToken.None); + SetOutputData(DA); + } + catch (Exception ex) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); + SetDefaultOutputData(DA); + } + } + + private void SolveAsync(IGH_DataAccess DA) + { + // Second pass: we have results from the async operation + // DON'T collect input data here - we need to preserve the output data from ExecuteWork + if (_hasResult) + { + if (_asyncException != null) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Error, _asyncException.Message); + SetDefaultOutputData(DA); + Message = "Error"; + } + else + { + SetOutputData(DA); + Message = "Async"; + } + + // Reset state for next run + _hasResult = false; + _asyncException = null; + return; + } + + // Already running, wait for completion + if (_isRunning) + { + return; + } + + // First pass: collect input data and start async work + CollectInputData(DA); + + // Check if we should execute + if (!ShouldExecute()) + { + SetDefaultOutputData(DA); + Message = "Async"; + return; + } + + // Cancel any previous operation + _cts?.Cancel(); + _cts?.Dispose(); + _cts = new CancellationTokenSource(); + var token = _cts.Token; + + _isRunning = true; + _asyncException = null; + StartSpinner(); + + // Start background task + Task.Run(() => + { + try + { + ExecuteWork(token); + } + catch (OperationCanceledException) + { + // Cancelled - don't expire solution + _isRunning = false; + StopSpinner(); + return; + } + catch (Exception ex) + { + _asyncException = ex; + } + finally + { + _isRunning = false; + _hasResult = true; + StopSpinner(); + } + + // Schedule solution update on UI thread + Rhino.RhinoApp.InvokeOnUiThread((Action)(() => + { + ExpireSolution(true); + })); + }, token); + } + + protected override void BeforeSolveInstance() + { + base.BeforeSolveInstance(); + + // If async mode changed or new solve started, cancel any pending work + if (_isRunning && !_hasResult) + { + _cts?.Cancel(); + } + } + + public override void RemovedFromDocument(GH_Document document) + { + // Unsubscribe from async mode changes + FemDesignSettings.AsyncModeChanged -= OnAsyncModeChanged; + + // Stop spinner and cancel any pending async work + StopSpinner(); + _spinnerTimer?.Dispose(); + _spinnerTimer = null; + + _cts?.Cancel(); + _cts?.Dispose(); + _cts = null; + + base.RemovedFromDocument(document); + } + + public override void DocumentContextChanged(GH_Document document, GH_DocumentContext context) + { + base.DocumentContextChanged(document, context); + + // Cancel async work when document is closing + if (context == GH_DocumentContext.Close || context == GH_DocumentContext.Unloaded) + { + StopSpinner(); + _spinnerTimer?.Dispose(); + _spinnerTimer = null; + + _cts?.Cancel(); + _cts?.Dispose(); + _cts = null; + } + } + } +} + diff --git a/FemDesign.Grasshopper/FemDesign.Grasshopper.csproj b/FemDesign.Grasshopper/FemDesign.Grasshopper.csproj index abd371775..99fff21f6 100644 --- a/FemDesign.Grasshopper/FemDesign.Grasshopper.csproj +++ b/FemDesign.Grasshopper/FemDesign.Grasshopper.csproj @@ -205,6 +205,8 @@ + + diff --git a/FemDesign.Grasshopper/Materials/SetConcreteTimeDependant.cs b/FemDesign.Grasshopper/Materials/SetConcreteTimeDependant.cs index eef475050..5141286e2 100644 --- a/FemDesign.Grasshopper/Materials/SetConcreteTimeDependant.cs +++ b/FemDesign.Grasshopper/Materials/SetConcreteTimeDependant.cs @@ -59,7 +59,7 @@ protected override void RegisterEvaluationUnits(EvaluationUnitManager mngr) evaluationUnit.RegisterInputParam(new Param_String(), "CementType", "CementType", "Cement Type as integer according to FemDesign API.", GH_ParamAccess.item, new GH_String("Class_S")); evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].Parameter.Optional = true; - evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].EnumInput = Enum.GetNames(typeof(StruSoft.Interop_24.Cement_type)).ToList(); + evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].EnumInput = Enum.GetNames(typeof(StruSoft.Interop_25.Cement_type)).ToList(); evaluationUnit.RegisterInputParam(new Param_Boolean(), "IncreaseFinalValue", "IncreaseFinalValue", "", GH_ParamAccess.item, new GH_Boolean(false)); evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].Parameter.Optional = true; @@ -87,7 +87,7 @@ protected override void RegisterEvaluationUnits(EvaluationUnitManager mngr) evaluationUnit.RegisterInputParam(new Param_String(), "CementType", "CementType", "Cement Type as integer according to FemDesign API.", GH_ParamAccess.item, new GH_String("Class_S")); evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].Parameter.Optional = true; - evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].EnumInput = Enum.GetNames(typeof(StruSoft.Interop_24.Cement_type)).ToList(); + evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].EnumInput = Enum.GetNames(typeof(StruSoft.Interop_25.Cement_type)).ToList(); GH_ExtendableMenu gH_ExtendableMenu1 = new GH_ExtendableMenu(1, ""); @@ -107,7 +107,7 @@ protected override void RegisterEvaluationUnits(EvaluationUnitManager mngr) evaluationUnit.RegisterInputParam(new Param_String(), "CementType", "CementType", "Cement Type as integer according to FemDesign API.", GH_ParamAccess.item, new GH_String("Class_S")); evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].Parameter.Optional = true; - evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].EnumInput = Enum.GetNames(typeof(StruSoft.Interop_24.Cement_type)).ToList(); + evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].EnumInput = Enum.GetNames(typeof(StruSoft.Interop_25.Cement_type)).ToList(); GH_ExtendableMenu gH_ExtendableMenu2 = new GH_ExtendableMenu(2, ""); gH_ExtendableMenu2.Name = "Elasticity"; @@ -145,7 +145,7 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) string cementType_creep = "Class_S"; DA.GetData(5, ref cementType_creep); - Enum.TryParse(cementType_creep, out StruSoft.Interop_24.Cement_type _cementType_creep); + Enum.TryParse(cementType_creep, out StruSoft.Interop_25.Cement_type _cementType_creep); bool increaseFinalValue = false; DA.GetData(6, ref increaseFinalValue); @@ -162,7 +162,7 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) string cementType_shrinkage = "Class_S"; ; DA.GetData(10, ref cementType_shrinkage); - Enum.TryParse(cementType_shrinkage, out StruSoft.Interop_24.Cement_type _cementType_shrinkage); + Enum.TryParse(cementType_shrinkage, out StruSoft.Interop_25.Cement_type _cementType_shrinkage); // elasticity bool en1992_elasticity = false; @@ -173,7 +173,7 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) string cementType_elasticity = "Class_S"; DA.GetData(13, ref cementType_elasticity); - Enum.TryParse(cementType_elasticity, out StruSoft.Interop_24.Cement_type _cementType_elasticity); + Enum.TryParse(cementType_elasticity, out StruSoft.Interop_25.Cement_type _cementType_elasticity); // apply the method creep, shrinkage and elasticity using the booleans diff --git a/FemDesign.Grasshopper/Pipe/FemDesignConnectionComponent.cs b/FemDesign.Grasshopper/Pipe/FemDesignConnectionComponent.cs index 318707df3..43ae9d596 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignConnectionComponent.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignConnectionComponent.cs @@ -28,7 +28,7 @@ private void FemDesignConnectionComponent_ObjectChanged(object sender, GH_Object protected override void RegisterInputParams(GH_InputParamManager pManager) { - pManager.AddTextParameter("FEM-Design dir", "FEM-Design dir", "Path to the FEM-Design installation directory.", GH_ParamAccess.item, @"C:\\Program Files\\StruSoft\\FEM-Design 24\\"); + pManager.AddTextParameter("FEM-Design dir", "FEM-Design dir", "Path to the FEM-Design installation directory.", GH_ParamAccess.item, @"C:\\Program Files\\StruSoft\\FEM-Design 25\\"); pManager[pManager.ParamCount - 1].Optional = true; pManager.AddBooleanParameter("Minimized", "Minimized", "If true, FEM-Design window will open in a minimised mode.", GH_ParamAccess.item, false); @@ -48,7 +48,7 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) protected override void SolveInstance(IGH_DataAccess DA) { - string fdDir = @"C:\\Program Files\\StruSoft\\FEM-Design 24\\"; + string fdDir = @"C:\\Program Files\\StruSoft\\FEM-Design 25\\"; DA.GetData("FEM-Design dir", ref fdDir); bool minimized = false; diff --git a/FemDesign.Grasshopper/Pipe/FemDesignCreateResPoints.cs b/FemDesign.Grasshopper/Pipe/FemDesignCreateResPoints.cs index 2bab0fafe..12b520702 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignCreateResPoints.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignCreateResPoints.cs @@ -2,8 +2,8 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Grasshopper.Kernel; -using Grasshopper.Kernel.Data; using FemDesign.AuxiliaryResults; using FemDesign.Calculate; @@ -11,11 +11,20 @@ namespace FemDesign.Grasshopper { /// - /// Create result points using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeResultPoints behavior without the async workaround. + /// Create result points using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignCreateResPoints : FEM_Design_API_Component + public class FemDesignCreateResPoints : FemDesignHybridComponent { + // Input data + private FemDesignHubHandle _handle; + private List _resultPoints; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + public FemDesignCreateResPoints() : base("FEM-Design.CreateResPoints", "CreateResPoints", "Create result points using the shared FEM-Design connection.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -24,6 +33,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) { pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); pManager.AddGenericParameter("ResultPoints", "ResultPoints", "ResultPoints.", GH_ParamAccess.list); + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -33,53 +44,76 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddBooleanParameter("Success", "Success", "True if operation succeeded.", GH_ParamAccess.item); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); - var resultPoints = new List(); - DA.GetDataList("ResultPoints", resultPoints); + _resultPoints = new List(); + DA.GetDataList("ResultPoints", _resultPoints); - var log = new List(); - bool success = false; + _runNode = true; + DA.GetData("RunNode", ref _runNode); - // check inputs - if (!resultPoints.Any()) - throw new Exception("ResultPoints is empty."); + // Reset output data + _log = new List(); + _success = false; + } - try + protected override bool ShouldExecute() + { + if (!_runNode) { - if (handle == null) - throw new Exception("Connection handle is null."); - - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - var resPoints = resultPoints.Select(x => (CmdResultPoint)x).ToList(); - connection.CreateResultPoint(resPoints); - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; } - catch (Exception ex) + if (_handle == null) { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + // Check inputs + if (!_resultPoints.Any()) + throw new Exception("ResultPoints is empty."); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + var resPoints = _resultPoints.Select(x => (CmdResultPoint)x).ToList(); + connection.CreateResultPoint(resPoints); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); - DA.SetData("Connection", handle); - DA.SetDataList("Log", log); - DA.SetData("Success", success); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetDataList("Log", _log); + DA.SetData("Success", _success); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetDataList("Log", _log ?? new List()); + DA.SetData("Success", false); } protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; @@ -87,5 +121,3 @@ protected override void SolveInstance(IGH_DataAccess DA) public override GH_Exposure Exposure => GH_Exposure.tertiary; } } - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignDisconnect.cs b/FemDesign.Grasshopper/Pipe/FemDesignDisconnect.cs index 6fdf5430d..12f7ebbde 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignDisconnect.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignDisconnect.cs @@ -1,60 +1,92 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { - /// - /// Disconnects a specific FEM-Design hub connection (standard GH_Component, UI-blocking). - /// - public class FemDesignDisconnect : FEM_Design_API_Component - { - public FemDesignDisconnect() : base("FEM-Design.Disconnect", "Disconnect", "Detach and close the connection, but keeps open FEM-Design.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Connection handle to disconnect.", GH_ParamAccess.item); - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddBooleanParameter("Success", "Success", "True if disconnect succeeded.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesign.Grasshopper.FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - var log = new List(); - bool success = false; - - try - { - if (handle == null) - throw new Exception("'Connection' handle is null."); - - FemDesignConnectionHub.DisposeAsync(handle.Id, true).GetAwaiter().GetResult(); - success = true; - } - catch (Exception ex) - { - log.Add(ex.Message); - success = false; - } - - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_Disconnect; - public override Guid ComponentGuid => new Guid("{5A52243F-4136-48F0-9279-3E7E3DF82D2E}"); - public override GH_Exposure Exposure => GH_Exposure.primary; - } -} + /// + /// Disconnects a specific FEM-Design hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignDisconnect : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + + public FemDesignDisconnect() : base("FEM-Design.Disconnect", "Disconnect", "Detach and close the connection, but keeps open FEM-Design.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Connection handle to disconnect.", GH_ParamAccess.item); + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddBooleanParameter("Success", "Success", "True if disconnect succeeded.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + // Reset output data + _log = new List(); + _success = false; + } + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.DisposeAsync(_handle.Id, true).GetAwaiter().GetResult(); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_Disconnect; + public override Guid ComponentGuid => new Guid("{5A52243F-4136-48F0-9279-3E7E3DF82D2E}"); + public override GH_Exposure Exposure => GH_Exposure.primary; + } +} diff --git a/FemDesign.Grasshopper/Pipe/FemDesignGetCaseCombResults.cs b/FemDesign.Grasshopper/Pipe/FemDesignGetCaseCombResults.cs index a26e29d68..dfba4d235 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignGetCaseCombResults.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignGetCaseCombResults.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Threading; using Grasshopper; using Grasshopper.Kernel; using Grasshopper.Kernel.Data; @@ -12,11 +13,26 @@ namespace FemDesign.Grasshopper { /// - /// Read load cases and load combinations results using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeReadResults logic but executes via FemDesignConnectionHub. + /// Read load cases and load combinations results using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignGetCaseCombResults : FEM_Design_API_Component + public class FemDesignGetCaseCombResults : FemDesignHybridComponent { + // Input data + private FemDesignHubHandle _handle; + private List _resultTypes; + private List _caseNames; + private List _comboNames; + private List _elements; + private Results.UnitResults _units; + private Options _options; + private bool _runNode; + + // Output data + private DataTree _resultsTree; + private List _log; + private bool _success; + public FemDesignGetCaseCombResults() : base("FEM-Design.GetCaseCombResults", "CaseCombResults", "Read load cases and load combinations results from current model using shared connection. Result files (.csv) are saved into the output directory.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -36,6 +52,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) pManager.AddGenericParameter("Units", "Units", "Optional. Specify result units for specific types." + "Default Units are: Length.m, Angle.deg, SectionalData.m, Force.kN, Mass.kg, Displacement.m, Stress.Pa", GH_ParamAccess.item); pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -46,108 +64,135 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); + + _resultTypes = new List(); + DA.GetDataList("ResultType", _resultTypes); - var resultTypes = new List(); - DA.GetDataList("ResultType", resultTypes); + _caseNames = new List(); + DA.GetDataList("Case Name", _caseNames); - var caseNames = new List(); - DA.GetDataList("Case Name", caseNames); + _comboNames = new List(); + DA.GetDataList("Combination Name", _comboNames); - var comboNames = new List(); - DA.GetDataList("Combination Name", comboNames); + _elements = new List(); + DA.GetDataList("Elements", _elements); - var elements = new List(); - DA.GetDataList("Elements", elements); + _units = null; + DA.GetData("Units", ref _units); - Results.UnitResults units = null; - DA.GetData("Units", ref units); + _options = null; + DA.GetData("Options", ref _options); - Options options = null; - DA.GetData("Options", ref options); + _runNode = true; + DA.GetData("RunNode", ref _runNode); - var log = new List(); - bool success = false; - var resultsTree = new DataTree(); + // Reset output data + _resultsTree = new DataTree(); + _log = new List(); + _success = false; + } - try + protected override bool ShouldExecute() + { + if (!_runNode) { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try + cancellationToken.ThrowIfCancellationRequested(); + + int resIndex = 0; + foreach (var rt in _resultTypes) { - int resIndex = 0; - foreach (var rt in resultTypes) - { - int caseIndex = 0; - int combIndex = 0; + int caseIndex = 0; + int combIndex = 0; - string typeName = $"FemDesign.Results.{rt}, FemDesign.Core"; - Type resultType = Type.GetType(typeName); - + string typeName = $"FemDesign.Results.{rt}, FemDesign.Core"; + Type resultType = Type.GetType(typeName); - // Helper to invoke private generic methods on FemDesignConnection - List InvokeGeneric(string methodName, Type genericType, object[] args) - { - var mi = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(genericType); - var res = (IEnumerable)mi.Invoke(connection, args); - return res.ToList(); - } + // Helper to invoke private generic methods on FemDesignConnection + List InvokeGeneric(string methodName, Type genericType, object[] args) + { + var mi = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(genericType); + var res = (IEnumerable)mi.Invoke(connection, args); + return res.ToList(); + } - if (!comboNames.Any() && !caseNames.Any()) - { - var res = InvokeGeneric(nameof(FemDesign.FemDesignConnection._getResults), resultType, new object[] { units, options, elements, true }); - resultsTree.AddRange(res, new GH_Path(resIndex)); - } + if (!_comboNames.Any() && !_caseNames.Any()) + { + var res = InvokeGeneric(nameof(FemDesign.FemDesignConnection._getResults), resultType, new object[] { _units, _options, _elements, true }); + _resultsTree.AddRange(res, new GH_Path(resIndex)); + } - if (caseNames.Any()) + if (_caseNames.Any()) + { + foreach (var c in _caseNames) { - foreach (var c in caseNames) - { - var res = InvokeGeneric(nameof(FemDesign.FemDesignConnection._getLoadCaseResults), resultType, new object[] { new List { c }, elements, units, options, true }); - resultsTree.AddRange(res, new GH_Path(resIndex, caseIndex)); - caseIndex++; - } + var res = InvokeGeneric(nameof(FemDesign.FemDesignConnection._getLoadCaseResults), resultType, new object[] { new List { c }, _elements, _units, _options, true }); + _resultsTree.AddRange(res, new GH_Path(resIndex, caseIndex)); + caseIndex++; } + } - if (comboNames.Any()) + if (_comboNames.Any()) + { + combIndex = caseIndex; + foreach (var cmb in _comboNames) { - combIndex = caseIndex; - foreach (var cmb in comboNames) - { - var res = InvokeGeneric(nameof(FemDesign.FemDesignConnection._getLoadCombinationResults), resultType, new object[] { new List { cmb }, elements, units, options, true }); - resultsTree.AddRange(res, new GH_Path(resIndex, combIndex)); - combIndex++; - } + var res = InvokeGeneric(nameof(FemDesign.FemDesignConnection._getLoadCombinationResults), resultType, new object[] { new List { cmb }, _elements, _units, _options, true }); + _resultsTree.AddRange(res, new GH_Path(resIndex, combIndex)); + combIndex++; } - - resIndex++; } + + resIndex++; } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.InnerException?.Message ?? ex.Message); - success = false; - } + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetDataTree(1, _resultsTree); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } - DA.SetData("Connection", handle); - DA.SetDataTree(1, resultsTree); - DA.SetData("Success", success); - DA.SetDataList("Log", log); + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetDataTree(1, new DataTree()); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); } protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; @@ -155,6 +200,3 @@ protected override void SolveInstance(IGH_DataAccess DA) public override GH_Exposure Exposure => GH_Exposure.tertiary; } } - - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignGetEigenfrequencyResults.cs b/FemDesign.Grasshopper/Pipe/FemDesignGetEigenfrequencyResults.cs index 21ffebe3b..32e85254a 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignGetEigenfrequencyResults.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignGetEigenfrequencyResults.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Threading; using Grasshopper; using Grasshopper.Kernel; @@ -15,11 +16,24 @@ namespace FemDesign.Grasshopper { /// - /// Read eigenfrequency results using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeEigenFrequencyResults behavior without the async workaround. + /// Read eigenfrequency results using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignGetEigenfrequencyResults : FEM_Design_API_Component + public class FemDesignGetEigenfrequencyResults : FemDesignHybridComponent { + // Input data + private FemDesignHubHandle _handle; + private List _shapeIds; + private Options _options; + private Results.UnitResults _units; + private bool _runNode; + + // Output data + private DataTree _vibrationTree; + private DataTree _frequencyTree; + private List _log; + private bool _success; + public FemDesignGetEigenfrequencyResults() : base("FEM-Design.GetEigenfrequencyResults", "EigenfrequencyResults", "Read eigenfrequency results from current model using shared connection. Result files (.csv) are saved into the output directory.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -33,6 +47,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) pManager[pManager.ParamCount - 1].Optional = true; pManager.AddGenericParameter("Units", "Units", "Specify the Result Units for some specific type.\nDefault Units are: Length.m, Angle.deg, SectionalData.m, Force.kN, Mass.kg, Displacement.m, Stress.Pa", GH_ParamAccess.item); pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -44,85 +60,109 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); - var shapeIds = new List(); - DA.GetDataList("ShapeId", shapeIds); + _shapeIds = new List(); + DA.GetDataList("ShapeId", _shapeIds); - Options options = null; - DA.GetData("Options", ref options); + _options = null; + DA.GetData("Options", ref _options); - Results.UnitResults units = null; - DA.GetData("Units", ref units); + _units = null; + DA.GetData("Units", ref _units); - var log = new List(); - bool success = false; + _runNode = true; + DA.GetData("RunNode", ref _runNode); + + // Reset output data + _vibrationTree = new DataTree(); + _frequencyTree = new DataTree(); + _log = new List(); + _success = false; + } - var vibrationTree = new DataTree(); - var frequencyTree = new DataTree(); + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } - // check inputs - if (handle == null) - throw new Exception("Connection handle is null."); + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); - try + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try + cancellationToken.ThrowIfCancellationRequested(); + + // Helper to invoke private generic _getResults + List InvokeGetResults(Type resultType) { - // helper to invoke private generic _getResults - List InvokeGetResults(Type resultType) - { - string methodName = nameof(FemDesign.FemDesignConnection._getResults); - MethodInfo genericMethod = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(resultType); - var res = (IEnumerable)genericMethod.Invoke(connection, new object[] { units, options, null, false }); - return res.ToList(); - } - - var vibrationRes = InvokeGetResults(typeof(FemDesign.Results.NodalVibration)).Cast().ToList(); - var frequencyRes = InvokeGetResults(typeof(FemDesign.Results.EigenFrequencies)).Cast().ToList(); - - if (vibrationRes.Count == 0 && frequencyRes.Count == 0) - throw new Exception("Eigenfrequencies results have not been found. Have you run the eigenfrequencies analysis?"); - - string vibPropName = nameof(FemDesign.Results.NodalVibration.ShapeId); - string freqPropName = nameof(FemDesign.Results.EigenFrequencies.ShapeId); - - if (shapeIds.Any()) - { - vibrationRes = vibrationRes.FilterResultsByShapeId(vibPropName, shapeIds); - frequencyRes = frequencyRes.FilterResultsByShapeId(freqPropName, shapeIds); - } - - vibrationTree = vibrationRes.CreateResultTree(vibPropName); - frequencyTree = frequencyRes.CreateResultTree(freqPropName); + string methodName = nameof(FemDesign.FemDesignConnection._getResults); + MethodInfo genericMethod = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(resultType); + var res = (IEnumerable)genericMethod.Invoke(connection, new object[] { _units, _options, null, false }); + return res.ToList(); } - finally + + var vibrationRes = InvokeGetResults(typeof(FemDesign.Results.NodalVibration)).Cast().ToList(); + var frequencyRes = InvokeGetResults(typeof(FemDesign.Results.EigenFrequencies)).Cast().ToList(); + + if (vibrationRes.Count == 0 && frequencyRes.Count == 0) + throw new Exception("Eigenfrequencies results have not been found. Have you run the eigenfrequencies analysis?"); + + string vibPropName = nameof(FemDesign.Results.NodalVibration.ShapeId); + string freqPropName = nameof(FemDesign.Results.EigenFrequencies.ShapeId); + + if (_shapeIds.Any()) { - connection.OnOutput -= onOutput; + vibrationRes = vibrationRes.FilterResultsByShapeId(vibPropName, _shapeIds); + frequencyRes = frequencyRes.FilterResultsByShapeId(freqPropName, _shapeIds); } - }).GetAwaiter().GetResult(); - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } + _vibrationTree = vibrationRes.CreateResultTree(vibPropName); + _frequencyTree = frequencyRes.CreateResultTree(freqPropName); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + + _success = true; + } - DA.SetData("Connection", handle); - DA.SetDataTree(1, vibrationTree); - DA.SetDataTree(2, frequencyTree); - DA.SetData("Success", success); - DA.SetDataList("Log", log); + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetDataTree(1, _vibrationTree); + DA.SetDataTree(2, _frequencyTree); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetDataTree(1, new DataTree()); + DA.SetDataTree(2, new DataTree()); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); } protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; @@ -130,5 +170,3 @@ List InvokeGetResults(Type resultType) public override GH_Exposure Exposure => GH_Exposure.tertiary; } } - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignGetFeaModel.cs b/FemDesign.Grasshopper/Pipe/FemDesignGetFeaModel.cs index e6c9db12f..71005a536 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignGetFeaModel.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignGetFeaModel.cs @@ -1,6 +1,7 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; using FemDesign.Results; @@ -8,11 +9,20 @@ namespace FemDesign.Grasshopper { /// - /// Read the finite element model using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeGetFeaModel behavior without the async workaround. + /// Read the finite element model using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignGetFeaModel : FEM_Design_API_Component + public class FemDesignGetFeaModel : FemDesignHybridComponent { + // Input data + private FemDesignHubHandle _handle; + private Results.UnitResults _units; + private bool _runNode; + + // Output data + private FiniteElement _feModel; + private bool _success; + public FemDesignGetFeaModel() : base("FEM-Design.GetFeModel", "GetFeModel", "Read the finite element data using the shared FEM-Design connection.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -22,6 +32,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); pManager.AddGenericParameter("Units", "Units", "Specify the Result Units for some specific type.\nDefault Units are: Length.m, Angle.deg, SectionalData.m, Force.kN, Mass.kg, Displacement.m, Stress.Pa", GH_ParamAccess.item); pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -31,42 +43,66 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddBooleanParameter("Success", "Success", "True if operation succeeded.", GH_ParamAccess.item); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); - Results.UnitResults units = null; - DA.GetData("Units", ref units); + _units = null; + DA.GetData("Units", ref _units); - bool success = false; - FiniteElement feModel = null; + _runNode = true; + DA.GetData("RunNode", ref _runNode); - try + // Reset output data + _feModel = null; + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) { - if (handle == null) - throw new Exception("Connection handle is null."); + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } - if (units == null) - units = Results.UnitResults.Default(); + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - connection.GenerateFeaModel(); - feModel = connection.GetFeaModel(units.Length); - }).GetAwaiter().GetResult(); + if (_units == null) + _units = Results.UnitResults.Default(); - success = true; - } - catch (Exception ex) + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - success = false; - } + cancellationToken.ThrowIfCancellationRequested(); + connection.GenerateFeaModel(); + _feModel = connection.GetFeaModel(_units.Length); + }).GetAwaiter().GetResult(); + + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("FiniteElement", _feModel); + DA.SetData("Success", _success); + } - DA.SetData("Connection", handle); - DA.SetData("FiniteElement", feModel); - DA.SetData("Success", success); + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("FiniteElement", null); + DA.SetData("Success", false); } protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_GetMesh; @@ -74,5 +110,3 @@ protected override void SolveInstance(IGH_DataAccess DA) public override GH_Exposure Exposure => GH_Exposure.tertiary; } } - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignGetModel.cs b/FemDesign.Grasshopper/Pipe/FemDesignGetModel.cs index 0098d5941..279d47308 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignGetModel.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignGetModel.cs @@ -1,77 +1,114 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { - /// - /// Get the current open model using the shared hub connection (standard GH_Component, UI-blocking). - /// - public class FemDesignGetModel : FEM_Design_API_Component - { - public FemDesignGetModel() : base("FEM-Design.GetModel", "GetModel", "Get the current open model in FEM-Design using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } + /// + /// Get the current open model using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignGetModel : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private bool _runNode; - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - } + // Output data + private Model _model; + private List _log; + private bool _success; - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddGenericParameter("Model", "Model", "Current FEM-Design model.", GH_ParamAccess.item); - pManager.AddBooleanParameter("Success", "Success", "True if succeeded.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } + public FemDesignGetModel() : base("FEM-Design.GetModel", "GetModel", "Get the current open model in FEM-Design using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesign.Grasshopper.FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } - var log = new List(); - bool success = false; - Model model = null; + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddGenericParameter("Model", "Model", "Current FEM-Design model.", GH_ParamAccess.item); + pManager.AddBooleanParameter("Success", "Success", "True if succeeded.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } - try - { - FemDesignConnectionHub.InvokeAsync(handle.Id, conn => - { - void onOutput(string s) { log.Add(s); } - conn.OnOutput += onOutput; - try - { - model = conn.GetModel(); - } - finally - { - conn.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } + _runNode = true; + DA.GetData("RunNode", ref _runNode); - DA.SetData("Connection", handle); - DA.SetData("Model", model); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } + // Reset output data + _model = null; + _log = new List(); + _success = false; + } - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; - public override Guid ComponentGuid => new Guid("{65B2948C-4F04-4038-AC14-694091005DC5}"); - public override GH_Exposure Exposure => GH_Exposure.primary; - } -} + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, conn => + { + void onOutput(string s) { _log.Add(s); } + conn.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + _model = conn.GetModel(); + } + finally + { + conn.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + _success = true; + } + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Model", _model); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Model", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; + public override Guid ComponentGuid => new Guid("{65B2948C-4F04-4038-AC14-694091005DC5}"); + public override GH_Exposure Exposure => GH_Exposure.primary; + } +} diff --git a/FemDesign.Grasshopper/Pipe/FemDesignGetQuantities.cs b/FemDesign.Grasshopper/Pipe/FemDesignGetQuantities.cs index 984f8bc9e..2fa866c61 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignGetQuantities.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignGetQuantities.cs @@ -2,26 +2,38 @@ using System; using System.Collections.Generic; using System.Reflection; +using System.Threading; using Grasshopper.Kernel; using FemDesign.Calculate; namespace FemDesign.Grasshopper { - /// - /// Get quantities using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeGetQuantities behavior. - /// - public class FemDesignGetQuantities: FEM_Design_API_Component - { - public FemDesignGetQuantities() : base("FEM-Design.GetQuantities", "GetQuantities", "Get quantities from current model using shared connection. Result files (.csv) are saved into the output directory.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddTextParameter("QuantityType", "QuantityType", "Quantity type:\n\n" + + /// + /// Get quantities using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignGetQuantities : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private string _resultTypeName; + private Results.UnitResults _units; + private bool _runNode; + + // Output data + private List _results; + private List _log; + private bool _success; + + public FemDesignGetQuantities() : base("FEM-Design.GetQuantities", "GetQuantities", "Get quantities from current model using shared connection. Result files (.csv) are saved into the output directory.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddTextParameter("QuantityType", "QuantityType", "Quantity type:\n\n" + nameof(ListProc.QuantityEstimationConcrete) + "\n" + nameof(ListProc.QuantityEstimationReinforcement) + "\n" + nameof(ListProc.QuantityEstimationSteel) + "\n" + @@ -30,82 +42,108 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) nameof(ListProc.QuantityEstimationMasonry) + "\n" + nameof(ListProc.QuantityEstimationGeneral) + "\n" + nameof(ListProc.QuantityEstimationProfiledPanel), GH_ParamAccess.item); - pManager.AddGenericParameter("Units", "Units", "Optional result units.", GH_ParamAccess.item); - pManager[pManager.ParamCount - 1].Optional = true; - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddGenericParameter("Quantities", "Quantities", "Quantities.", GH_ParamAccess.list); - pManager.AddBooleanParameter("Success", "Success", "True if succeeded.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesign.Grasshopper.FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - string resultTypeName = null; - DA.GetData("QuantityType", ref resultTypeName); - - Results.UnitResults units = null; - DA.GetData("Units", ref units); - - var log = new List(); - bool success = false; - var results = new List(); - - // check inputs - if (string.IsNullOrWhiteSpace(resultTypeName)) - throw new Exception("'QuantityType' is null or empty."); - - // try getting the quantity result type - string typeName = $"FemDesign.Results.{resultTypeName}, FemDesign.Core"; + pManager.AddGenericParameter("Units", "Units", "Optional result units.", GH_ParamAccess.item); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddGenericParameter("Quantities", "Quantities", "Quantities.", GH_ParamAccess.list); + pManager.AddBooleanParameter("Success", "Success", "True if succeeded.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _resultTypeName = null; + DA.GetData("QuantityType", ref _resultTypeName); + + _units = null; + DA.GetData("Units", ref _units); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + + // Reset output data + _results = new List(); + _log = new List(); + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + // Check inputs + if (string.IsNullOrWhiteSpace(_resultTypeName)) + throw new Exception("'QuantityType' is null or empty."); + + // Try getting the quantity result type + string typeName = $"FemDesign.Results.{_resultTypeName}, FemDesign.Core"; Type resultType = Type.GetType(typeName); - if (resultType == null) - throw new ArgumentException($"QuantityType '{typeName}' does not exist!"); - - try - { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - var methodName = nameof(FemDesign.FemDesignConnection._getQuantities); - var method = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(resultType); - var res = (IEnumerable)method.Invoke(connection, new object[] { units, false }); - results.AddRange(res); - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetDataList("Quantities", results); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; - public override Guid ComponentGuid => new Guid("{4498FBC1-1EA9-4885-8658-FF79652C51CB}"); - public override GH_Exposure Exposure => GH_Exposure.tertiary; - } + if (resultType == null) + throw new ArgumentException($"QuantityType '{typeName}' does not exist!"); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + var methodName = nameof(FemDesign.FemDesignConnection._getQuantities); + var method = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(resultType); + var res = (IEnumerable)method.Invoke(connection, new object[] { _units, false }); + _results.AddRange(res); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetDataList("Quantities", _results); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetDataList("Quantities", new List()); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; + public override Guid ComponentGuid => new Guid("{4498FBC1-1EA9-4885-8658-FF79652C51CB}"); + public override GH_Exposure Exposure => GH_Exposure.tertiary; + } } - - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignGetStabilityResults.cs b/FemDesign.Grasshopper/Pipe/FemDesignGetStabilityResults.cs index 5eeb15526..b55fc89c6 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignGetStabilityResults.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignGetStabilityResults.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Threading; using Grasshopper; using Grasshopper.Kernel; @@ -15,11 +16,25 @@ namespace FemDesign.Grasshopper { /// - /// Read stability results using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeStabilityResults behavior without the async workaround. + /// Read stability results using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignGetStabilityResults : FEM_Design_API_Component + public class FemDesignGetStabilityResults : FemDesignHybridComponent { + // Input data + private FemDesignHubHandle _handle; + private List _combos; + private List _shapeIds; + private Options _options; + private Results.UnitResults _units; + private bool _runNode; + + // Output data + private DataTree _bucklingTree; + private DataTree _critParameterTree; + private List _log; + private bool _success; + public FemDesignGetStabilityResults() : base("FEM-Design.GetStabilityResults", "StabilityResults", "Read stability results from current model using shared connection. Result files (.csv) are saved into the output directory.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -35,6 +50,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) pManager[pManager.ParamCount - 1].Optional = true; pManager.AddGenericParameter("Units", "Units", "Specify the Result Units for some specific type.\nDefault Units are: Length.m, Angle.deg, SectionalData.m, Force.kN, Mass.kg, Displacement.m, Stress.Pa", GH_ParamAccess.item); pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -46,90 +63,115 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); - var combos = new List(); - DA.GetDataList("Combination Name", combos); + _combos = new List(); + DA.GetDataList("Combination Name", _combos); - var shapeIds = new List(); - DA.GetDataList("ShapeId", shapeIds); + _shapeIds = new List(); + DA.GetDataList("ShapeId", _shapeIds); - Options options = null; - DA.GetData("Options", ref options); + _options = null; + DA.GetData("Options", ref _options); - Results.UnitResults units = null; - DA.GetData("Units", ref units); + _units = null; + DA.GetData("Units", ref _units); - var log = new List(); - bool success = false; + _runNode = true; + DA.GetData("RunNode", ref _runNode); - var bucklingTree = new DataTree(); - var critParameterTree = new DataTree(); + // Reset output data + _bucklingTree = new DataTree(); + _critParameterTree = new DataTree(); + _log = new List(); + _success = false; + } - try + protected override bool ShouldExecute() + { + if (!_runNode) { - if (handle == null) - throw new Exception("Connection handle is null."); + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - // helper to invoke private generic _getStabilityResults - List InvokeStabilityResults(Type resultType, string loadCombination = null, int? shapeId = null) - { - string methodName = nameof(FemDesign.FemDesignConnection._getStabilityResults); - MethodInfo genericMethod = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(resultType); - var shapeList = shapeId.HasValue ? new List { shapeId.Value } : null; - var combList = loadCombination != null ? new List { loadCombination } : null; - var res = (IEnumerable)genericMethod.Invoke(connection, new object[] { combList, shapeList, units, options, false }); - return res.ToList(); - } - - // read full result sets - var bucklingRes = InvokeStabilityResults(typeof(FemDesign.Results.NodalBucklingShape)).Cast().ToList(); - var critParamRes = InvokeStabilityResults(typeof(FemDesign.Results.CriticalParameter)).Cast().ToList(); - - if (bucklingRes.Count == 0) - throw new Exception("Stability results have not been found. Have you run the Stability analysis?"); - - // validate filters - ValidateCombos(bucklingRes, combos); - ValidateShapes(bucklingRes, shapeIds); - - // build trees and filter - var rawBucklingTree = CreateBucklingTree(bucklingRes); - bucklingTree = FilterBucklingTree(rawBucklingTree, combos, shapeIds); - - string critParamPropName = nameof(CriticalParameter.CaseIdentifier); - var rawCritTree = critParamRes.CreateResultTree(critParamPropName); - critParameterTree = FilterCriticalTree(rawCritTree, combos, shapeIds); - } - finally + cancellationToken.ThrowIfCancellationRequested(); + + // Helper to invoke private generic _getStabilityResults + List InvokeStabilityResults(Type resultType, string loadCombination = null, int? shapeId = null) { - connection.OnOutput -= onOutput; + string methodName = nameof(FemDesign.FemDesignConnection._getStabilityResults); + MethodInfo genericMethod = connection.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(resultType); + var shapeList = shapeId.HasValue ? new List { shapeId.Value } : null; + var combList = loadCombination != null ? new List { loadCombination } : null; + var res = (IEnumerable)genericMethod.Invoke(connection, new object[] { combList, shapeList, _units, _options, false }); + return res.ToList(); } - }).GetAwaiter().GetResult(); - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } + // Read full result sets + var bucklingRes = InvokeStabilityResults(typeof(FemDesign.Results.NodalBucklingShape)).Cast().ToList(); + var critParamRes = InvokeStabilityResults(typeof(FemDesign.Results.CriticalParameter)).Cast().ToList(); + + if (bucklingRes.Count == 0) + throw new Exception("Stability results have not been found. Have you run the Stability analysis?"); + + // Validate filters + ValidateCombos(bucklingRes, _combos); + ValidateShapes(bucklingRes, _shapeIds); + + // Build trees and filter + var rawBucklingTree = CreateBucklingTree(bucklingRes); + _bucklingTree = FilterBucklingTree(rawBucklingTree, _combos, _shapeIds); + + string critParamPropName = nameof(CriticalParameter.CaseIdentifier); + var rawCritTree = critParamRes.CreateResultTree(critParamPropName); + _critParameterTree = FilterCriticalTree(rawCritTree, _combos, _shapeIds); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); - DA.SetData("Connection", handle); - DA.SetDataTree(1, bucklingTree); - DA.SetDataTree(2, critParameterTree); - DA.SetData("Success", success); - DA.SetDataList("Log", log); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetDataTree(1, _bucklingTree); + DA.SetDataTree(2, _critParameterTree); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetDataTree(1, new DataTree()); + DA.SetDataTree(2, new DataTree()); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); } private static void ValidateCombos(List results, List combos) @@ -175,7 +217,7 @@ private static void ValidateShapes(List re } } - // remove empty branches + // Remove empty branches var emptyPath = new List(); for (int i = 0; i < resultsTree.BranchCount; i++) { @@ -290,5 +332,3 @@ private static void ValidateShapes(List re public override GH_Exposure Exposure => GH_Exposure.tertiary; } } - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignOpen.cs b/FemDesign.Grasshopper/Pipe/FemDesignOpen.cs index 95398b0fa..b5489f588 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignOpen.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignOpen.cs @@ -1,15 +1,27 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { /// - /// Open a model using the shared hub connection (standard GH_Component, UI-blocking). + /// Open a model using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignOpen : FEM_Design_API_Component + public class FemDesignOpen : FemDesignHybridComponent { + // Input data (collected on UI thread) + private FemDesignHubHandle _handle; + private dynamic _modelIn; + private bool _runNode; + + // Output data (set by ExecuteWork) + private Model _modelOut; + private List _log; + private bool _success; + public FemDesignOpen() : base("FEM-Design.OpenModel", "OpenModel", "Open model in FEM-Design using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -18,6 +30,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) { pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); pManager.AddGenericParameter("Model", "Model", "Model to open or file path.", GH_ParamAccess.item); + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -28,71 +42,103 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); - dynamic modelIn = null; - DA.GetData("Model", ref modelIn); + _modelIn = null; + DA.GetData("Model", ref _modelIn); - var log = new List(); - bool success = false; - Model modelOut = null; + _runNode = true; + DA.GetData("RunNode", ref _runNode); - try + // Reset output data + _modelOut = null; + _log = new List(); + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) { - // Block UI while invoking hub (acceptable per requirements) - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + // Check for cancellation before starting + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try + // Check for cancellation + cancellationToken.ThrowIfCancellationRequested(); + + if (_modelIn is string path) + { + connection.Open(path); + } + else if (_modelIn is Model m) { - if (modelIn is string path) - { - connection.Open(path); - } - else if (modelIn is Model m) - { - connection.Open(m); - } - else if (modelIn != null && modelIn.Value is string) - { - string vpath = modelIn.Value as string; - connection.Open(vpath); - } - else if (modelIn != null && modelIn.Value is Model) - { - Model vm = modelIn.Value as Model; - connection.Open(vm); - } - else - { - throw new Exception("Unsupported 'Model' input. Provide file path or FemDesign.Model."); - } - - modelOut = connection.GetModel(); + connection.Open(m); } - finally + else if (_modelIn != null && _modelIn.Value is string) { - connection.OnOutput -= onOutput; + string vpath = _modelIn.Value as string; + connection.Open(vpath); + } + else if (_modelIn != null && _modelIn.Value is Model) + { + Model vm = _modelIn.Value as Model; + connection.Open(vm); + } + else + { + throw new Exception("Unsupported 'Model' input. Provide file path or FemDesign.Model."); } - }).GetAwaiter().GetResult(); - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } + // Check for cancellation before getting model + cancellationToken.ThrowIfCancellationRequested(); + + _modelOut = connection.GetModel(); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); - DA.SetData("Connection", handle); - DA.SetData("Model", modelOut); - DA.SetData("Success", success); - DA.SetDataList("Log", log); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Model", _modelOut); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Model", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); } protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_open; @@ -100,5 +146,3 @@ protected override void SolveInstance(IGH_DataAccess DA) public override GH_Exposure Exposure => GH_Exposure.primary; } } - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignResultFromBsc.cs b/FemDesign.Grasshopper/Pipe/FemDesignResultFromBsc.cs index 53a235ef1..d2fb872a5 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignResultFromBsc.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignResultFromBsc.cs @@ -2,104 +2,145 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Grasshopper.Kernel; using Grasshopper.Kernel.Data; using Grasshopper; namespace FemDesign.Grasshopper { - /// - /// Extract results from a model using a .bsc file with the shared hub connection (standard GH_Component, UI-blocking). - /// - public class FemDesignResultFromBsc : FEM_Design_API_Component - { - public FemDesignResultFromBsc() : base("FEM-Design.GetResultFromBsc", "ResultFromBsc", "Extract results using a .bsc file with shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddTextParameter("BscFilePath", "BscFilePath", "File path(s) to .bsc batch-file(s).", GH_ParamAccess.list); - pManager.AddTextParameter("CsvFilePath", "CsvFilePath", "Optional output .csv path(s). If not set, results are saved next to the .bsc file(s).", GH_ParamAccess.list); - pManager[pManager.ParamCount - 1].Optional = true; - pManager.AddGenericParameter("Elements", "Elements", "Optional elements filter.", GH_ParamAccess.list); - pManager[pManager.ParamCount - 1].Optional = true; - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddTextParameter("Results", "Results", "Results as data tree (CSV paths).", GH_ParamAccess.tree); - pManager.AddBooleanParameter("Success", "Success", "True if succeeded.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - var bscPaths = new List(); - DA.GetDataList("BscFilePath", bscPaths); - - var csvPaths = new List(); - DA.GetDataList("CsvFilePath", csvPaths); - - var elements = new List(); - DA.GetDataList("Elements", elements); - - var log = new List(); - bool success = false; - var resultsTree = new DataTree(); - - try - { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - if (csvPaths == null || csvPaths.Count == 0) - { - csvPaths = bscPaths.Select(b => System.IO.Path.ChangeExtension(b, "csv")).ToList(); - } - - var results = bscPaths.Zip(csvPaths, (bsc, csv) => connection.GetResultsFromBsc(bsc, csv, elements)); - int i = 0; - foreach (var r in results) - { - resultsTree.AddRange(r, new GH_Path(i)); - i++; - } - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetDataTree(1, resultsTree); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; - public override Guid ComponentGuid => new Guid("{59667BED-D84B-47E7-BC56-B6D99DC5C274}"); - public override GH_Exposure Exposure => GH_Exposure.tertiary; - } + /// + /// Extract results from a model using a .bsc file with the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignResultFromBsc : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private List _bscPaths; + private List _csvPaths; + private List _elements; + private bool _runNode; + + // Output data + private DataTree _resultsTree; + private List _log; + private bool _success; + + public FemDesignResultFromBsc() : base("FEM-Design.GetResultFromBsc", "ResultFromBsc", "Extract results using a .bsc file with shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddTextParameter("BscFilePath", "BscFilePath", "File path(s) to .bsc batch-file(s).", GH_ParamAccess.list); + pManager.AddTextParameter("CsvFilePath", "CsvFilePath", "Optional output .csv path(s). If not set, results are saved next to the .bsc file(s).", GH_ParamAccess.list); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddGenericParameter("Elements", "Elements", "Optional elements filter.", GH_ParamAccess.list); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddTextParameter("Results", "Results", "Results as data tree (CSV paths).", GH_ParamAccess.tree); + pManager.AddBooleanParameter("Success", "Success", "True if succeeded.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _bscPaths = new List(); + DA.GetDataList("BscFilePath", _bscPaths); + + _csvPaths = new List(); + DA.GetDataList("CsvFilePath", _csvPaths); + + _elements = new List(); + DA.GetDataList("Elements", _elements); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + + // Reset output data + _resultsTree = new DataTree(); + _log = new List(); + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + + if (_csvPaths == null || _csvPaths.Count == 0) + { + _csvPaths = _bscPaths.Select(b => System.IO.Path.ChangeExtension(b, "csv")).ToList(); + } + + var results = _bscPaths.Zip(_csvPaths, (bsc, csv) => connection.GetResultsFromBsc(bsc, csv, _elements)); + int i = 0; + foreach (var r in results) + { + _resultsTree.AddRange(r, new GH_Path(i)); + i++; + } + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetDataTree(1, _resultsTree); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetDataTree(1, new DataTree()); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_readresult; + public override Guid ComponentGuid => new Guid("{59667BED-D84B-47E7-BC56-B6D99DC5C274}"); + public override GH_Exposure Exposure => GH_Exposure.tertiary; + } } - - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignRunAnalysis.cs b/FemDesign.Grasshopper/Pipe/FemDesignRunAnalysis.cs index 5b010d6a0..5b0e399d0 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignRunAnalysis.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignRunAnalysis.cs @@ -1,16 +1,27 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; using FemDesign.Calculate; namespace FemDesign.Grasshopper { /// - /// Run analysis using the shared hub connection (standard GH_Component, UI-blocking). + /// Run analysis using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. /// - public class FemDesignRunAnalysis : FEM_Design_API_Component + public class FemDesignRunAnalysis : FemDesignHybridComponent { + // Input data + private FemDesignHubHandle _handle; + private Analysis _analysis; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + public FemDesignRunAnalysis() : base("FEM-Design.RunAnalysis", "RunAnalysis", "Run analysis on current/open model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) { } @@ -19,6 +30,8 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) { pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); pManager.AddGenericParameter("Analysis", "Analysis", "Analysis settings.", GH_ParamAccess.item); + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; } protected override void RegisterOutputParams(GH_OutputParamManager pManager) @@ -28,49 +41,75 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); } - protected override void SolveInstance(IGH_DataAccess DA) + protected override void CollectInputData(IGH_DataAccess DA) { - FemDesign.Grasshopper.FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); + _handle = null; + DA.GetData("Connection", ref _handle); - Analysis analysis = null; - DA.GetData("Analysis", ref analysis); + _analysis = null; + DA.GetData("Analysis", ref _analysis); - var log = new List(); - bool success = false; + _runNode = true; + DA.GetData("RunNode", ref _runNode); - // check inputs - if (analysis == null) - throw new Exception("'Analysis' input is null."); + // Reset output data + _log = new List(); + _success = false; + } - try + protected override bool ShouldExecute() + { + if (!_runNode) { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - connection.RunAnalysis(analysis); - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; } - catch (Exception ex) + if (_handle == null) { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + // Check inputs + if (_analysis == null) + throw new Exception("'Analysis' input is null."); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + connection.RunAnalysis(_analysis); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } - DA.SetData("Connection", handle); - DA.SetData("Success", success); - DA.SetDataList("Log", log); + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); } protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_RunAnalysis; @@ -78,6 +117,3 @@ protected override void SolveInstance(IGH_DataAccess DA) public override GH_Exposure Exposure => GH_Exposure.secondary; } } - - - diff --git a/FemDesign.Grasshopper/Pipe/FemDesignRunDesign.cs b/FemDesign.Grasshopper/Pipe/FemDesignRunDesign.cs index adf7d47e4..eac6bd1cd 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignRunDesign.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignRunDesign.cs @@ -1,88 +1,126 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; using FemDesign.Calculate; namespace FemDesign.Grasshopper { - /// - /// Run design using the shared hub connection (standard GH_Component, UI-blocking). - /// - public class FemDesignRunDesign : FEM_Design_API_Component - { - public FemDesignRunDesign() : base("FEM-Design.RunDesign", "RunDesign", "Run design on current/open model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddGenericParameter("Design", "Design", "Design settings.", GH_ParamAccess.item); - pManager.AddGenericParameter("DesignGroup", "DesignGroup", "Optional design groups.", GH_ParamAccess.list); - pManager[pManager.ParamCount - 1].Optional = true; - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddBooleanParameter("Success", "Success", "True if design succeeded.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - Design design = null; - DA.GetData("Design", ref design); - - var designGroups = new List(); - DA.GetDataList("DesignGroup", designGroups); - - var log = new List(); - bool success = false; - - // check inputs - if (design == null) - throw new Exception("'Design' input is null."); - - try + /// + /// Run design using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignRunDesign : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private Design _design; + private List _designGroups; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + + public FemDesignRunDesign() : base("FEM-Design.RunDesign", "RunDesign", "Run design on current/open model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddGenericParameter("Design", "Design", "Design settings.", GH_ParamAccess.item); + pManager.AddGenericParameter("DesignGroup", "DesignGroup", "Optional design groups.", GH_ParamAccess.list); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddBooleanParameter("Success", "Success", "True if design succeeded.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _design = null; + DA.GetData("Design", ref _design); + + _designGroups = new List(); + DA.GetDataList("DesignGroup", _designGroups); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + + // Reset output data + _log = new List(); + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - var userModule = design.Mode; - connection.RunDesign(userModule, design, designGroups); - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_RunDesign; - public override Guid ComponentGuid => new Guid("{0F185ABC-C496-4C6A-A59C-848ADE3A8390}"); - public override GH_Exposure Exposure => GH_Exposure.secondary; - } -} + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + // Check inputs + if (_design == null) + throw new Exception("'Design' input is null."); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + var userModule = _design.Mode; + connection.RunDesign(userModule, _design, _designGroups); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_RunDesign; + public override Guid ComponentGuid => new Guid("{0F185ABC-C496-4C6A-A59C-848ADE3A8390}"); + public override GH_Exposure Exposure => GH_Exposure.secondary; + } +} diff --git a/FemDesign.Grasshopper/Pipe/FemDesignSaveAs.cs b/FemDesign.Grasshopper/Pipe/FemDesignSaveAs.cs index 47a3bd850..569b953bd 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignSaveAs.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignSaveAs.cs @@ -1,81 +1,118 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { - /// - /// Save model using the shared hub connection (standard GH_Component, UI-blocking). - /// - public class FemDesignSaveAs : FEM_Design_API_Component - { - public FemDesignSaveAs() : base("FEM-Design.Save", "Save", "Save the current model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddTextParameter("FilePath", "FilePath", "Save the model to .struxml or .str file.", GH_ParamAccess.item); - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddBooleanParameter("Success", "Success", "True if save succeeded.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - string filePath = null; - DA.GetData("FilePath", ref filePath); - - var log = new List(); - bool success = false; - - // check inputs - if (string.IsNullOrWhiteSpace(filePath)) - throw new Exception("'FilePath' is null or empty."); - - try + /// + /// Save model using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignSaveAs : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private string _filePath; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + + public FemDesignSaveAs() : base("FEM-Design.Save", "Save", "Save the current model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddTextParameter("FilePath", "FilePath", "Save the model to .struxml or .str file.", GH_ParamAccess.item); + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddBooleanParameter("Success", "Success", "True if save succeeded.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _filePath = null; + DA.GetData("FilePath", ref _filePath); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + + // Reset output data + _log = new List(); + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - connection.Save(filePath); - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_SaveAs; - public override Guid ComponentGuid => new Guid("{9997E67D-1212-4EB4-BA95-B050D6A0563A}"); - public override GH_Exposure Exposure => GH_Exposure.primary; - } -} + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + // Check inputs + if (string.IsNullOrWhiteSpace(_filePath)) + throw new Exception("'FilePath' is null or empty."); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + connection.Save(_filePath); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_SaveAs; + public override Guid ComponentGuid => new Guid("{9997E67D-1212-4EB4-BA95-B050D6A0563A}"); + public override GH_Exposure Exposure => GH_Exposure.primary; + } +} diff --git a/FemDesign.Grasshopper/Pipe/FemDesignSaveDocumentation.cs b/FemDesign.Grasshopper/Pipe/FemDesignSaveDocumentation.cs index 2dc993758..f81aac04a 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignSaveDocumentation.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignSaveDocumentation.cs @@ -1,86 +1,124 @@ // https://strusoft.com/ using System; using System.Collections.Generic; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { - /// - /// Save documentation using the shared hub connection (standard GH_Component, UI-blocking). - /// - public class FemDesignSaveDocumentation : FEM_Design_API_Component - { - public FemDesignSaveDocumentation() : base("FEM-Design.Documentation", "SaveDocx", "Save documentation of current model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddTextParameter("Docx", "Docx", "Docx file path for the documentation output.", GH_ParamAccess.item); - pManager.AddTextParameter("Template", "Template", ".dsc template file path.", GH_ParamAccess.item); - pManager[pManager.ParamCount - 1].Optional = true; - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddBooleanParameter("Success", "Success", "True if documentation saved.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - string docx = null; - DA.GetData("Docx", ref docx); - - string template = null; - DA.GetData("Template", ref template); - - var log = new List(); - bool success = false; - - // check inputs - if (string.IsNullOrWhiteSpace(docx)) - throw new Exception("'Docx' path is null or empty."); - - try + /// + /// Save documentation using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignSaveDocumentation : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private string _docx; + private string _template; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + + public FemDesignSaveDocumentation() : base("FEM-Design.Documentation", "SaveDocx", "Save documentation of current model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddTextParameter("Docx", "Docx", "Docx file path for the documentation output.", GH_ParamAccess.item); + pManager.AddTextParameter("Template", "Template", ".dsc template file path.", GH_ParamAccess.item); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddBooleanParameter("Success", "Success", "True if documentation saved.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _docx = null; + DA.GetData("Docx", ref _docx); + + _template = null; + DA.GetData("Template", ref _template); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + + // Reset output data + _log = new List(); + _success = false; + } + + protected override bool ShouldExecute() + { + if (!_runNode) { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - connection.SaveDocx(docx, template); - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.Docx; - public override Guid ComponentGuid => new Guid("{B7AD9265-2AAE-4562-9B47-DB178F69839D}"); - public override GH_Exposure Exposure => GH_Exposure.primary; - } -} + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + // Check inputs + if (string.IsNullOrWhiteSpace(_docx)) + throw new Exception("'Docx' path is null or empty."); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + connection.SaveDocx(_docx, _template); + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.Docx; + public override Guid ComponentGuid => new Guid("{B7AD9265-2AAE-4562-9B47-DB178F69839D}"); + public override GH_Exposure Exposure => GH_Exposure.primary; + } +} diff --git a/FemDesign.Grasshopper/Pipe/FemDesignSetCfg.cs b/FemDesign.Grasshopper/Pipe/FemDesignSetCfg.cs index 7e7e8a7cf..f2706161b 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignSetCfg.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignSetCfg.cs @@ -2,108 +2,145 @@ using System; using System.Collections.Generic; using System.Reflection; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { - /// - /// Set configurations using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeSetCfg behavior. - /// - public class FemDesignSetCfg : FEM_Design_API_Component - { - public FemDesignSetCfg() : base("FEM-Design.SetConfigurations", "SetCfg", "Set design settings for current model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddGenericParameter("Config", "Cfg", "Filepath of the configuration file or Config objects.\nIf file path is not provided, the component will read the cfg.xml file in the package manager library folder.\n%AppData%\\McNeel\\Rhinoceros\\packages\\7.0\\FemDesign\\", GH_ParamAccess.list); - pManager[pManager.ParamCount - 1].Optional = true; - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddBooleanParameter("Success", "Success", "True if configuration applied.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - var cfg = new List(); - DA.GetDataList("Config", cfg); - - var log = new List(); - bool success = false; - - try - { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - if (cfg.Count == 0) - { - string assemblyLocation = Assembly.GetExecutingAssembly().Location; - var cfgfilePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(assemblyLocation), @"cfg.xml"); - connection.SetConfig(cfgfilePath); - } - else - { - foreach (var c in cfg) - { - if (c is string s) - { - connection.SetConfig(s); - } - else if (c != null && c.Value is string) - { - string vs = c.Value as string; - connection.SetConfig(vs); - } - else if (c is FemDesign.Calculate.CONFIG cfgObj) - { - connection.SetConfig(cfgObj); - } - else if (c != null && c.Value is FemDesign.Calculate.CONFIG) - { - FemDesign.Calculate.CONFIG vCfgObj = c.Value as FemDesign.Calculate.CONFIG; - connection.SetConfig(vCfgObj); - } - } - } - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_Config; - public override Guid ComponentGuid => new Guid("{24BCEA1D-13E7-47D0-B0F8-4403B0912D44}"); - public override GH_Exposure Exposure => GH_Exposure.obscure; - } -} + /// + /// Set configurations using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignSetCfg : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private List _cfg; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + + public FemDesignSetCfg() : base("FEM-Design.SetConfigurations", "SetCfg", "Set design settings for current model using shared connection.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddGenericParameter("Config", "Cfg", "Filepath of the configuration file or Config objects.\nIf file path is not provided, the component will read the cfg.xml file in the package manager library folder.\n%AppData%\\McNeel\\Rhinoceros\\packages\\7.0\\FemDesign\\", GH_ParamAccess.list); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddBooleanParameter("Success", "Success", "True if configuration applied.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _cfg = new List(); + DA.GetDataList("Config", _cfg); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + // Reset output data + _log = new List(); + _success = false; + } + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + + if (_cfg.Count == 0) + { + string assemblyLocation = Assembly.GetExecutingAssembly().Location; + var cfgfilePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(assemblyLocation), @"cfg.xml"); + connection.SetConfig(cfgfilePath); + } + else + { + foreach (var c in _cfg) + { + if (c is string s) + { + connection.SetConfig(s); + } + else if (c != null && c.Value is string) + { + string vs = c.Value as string; + connection.SetConfig(vs); + } + else if (c is FemDesign.Calculate.CONFIG cfgObj) + { + connection.SetConfig(cfgObj); + } + else if (c != null && c.Value is FemDesign.Calculate.CONFIG) + { + FemDesign.Calculate.CONFIG vCfgObj = c.Value as FemDesign.Calculate.CONFIG; + connection.SetConfig(vCfgObj); + } + } + } + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_Config; + public override Guid ComponentGuid => new Guid("{24BCEA1D-13E7-47D0-B0F8-4403B0912D44}"); + public override GH_Exposure Exposure => GH_Exposure.obscure; + } +} diff --git a/FemDesign.Grasshopper/Pipe/FemDesignSetGlobalCfg.cs b/FemDesign.Grasshopper/Pipe/FemDesignSetGlobalCfg.cs index bb17284cd..78f0f4bcb 100644 --- a/FemDesign.Grasshopper/Pipe/FemDesignSetGlobalCfg.cs +++ b/FemDesign.Grasshopper/Pipe/FemDesignSetGlobalCfg.cs @@ -2,108 +2,145 @@ using System; using System.Collections.Generic; using System.Reflection; +using System.Threading; using Grasshopper.Kernel; namespace FemDesign.Grasshopper { - /// - /// Set global configurations using the shared hub connection (standard GH_Component, UI-blocking). - /// Mirrors PipeSetGlobalCfg behavior. - /// - public class FemDesignSetGlobalCfg : FEM_Design_API_Component - { - public FemDesignSetGlobalCfg() : base("FEM-Design.SetGlobalConfigurations", "SetGlobalCfg", "Set global settings for current model using shared connection. It defines the calculation settings that will instruct FEM-Design in operation like creating the finite element mesh.", CategoryName.Name(), SubCategoryName.Cat8()) - { - } - - protected override void RegisterInputParams(GH_InputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddGenericParameter("GlobalConfig", "GlobCfg", "Filepath of global configuration file or GlobConfig objects.\nIf file path is not provided, the component will read the cmdglobalcfg.xml file in the package manager library folder.\n%AppData%\\McNeel\\Rhinoceros\\packages\\7.0\\FemDesign\\", GH_ParamAccess.list); - pManager[pManager.ParamCount - 1].Optional = true; - } - - protected override void RegisterOutputParams(GH_OutputParamManager pManager) - { - pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); - pManager.AddBooleanParameter("Success", "Success", "True if global configuration applied.", GH_ParamAccess.item); - pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); - } - - protected override void SolveInstance(IGH_DataAccess DA) - { - FemDesignHubHandle handle = null; - DA.GetData("Connection", ref handle); - - var globCfg = new List(); - DA.GetDataList("GlobalConfig", globCfg); - - var log = new List(); - bool success = false; - - try - { - FemDesignConnectionHub.InvokeAsync(handle.Id, connection => - { - void onOutput(string s) { log.Add(s); } - connection.OnOutput += onOutput; - try - { - if (globCfg.Count == 0) - { - string assemblyLocation = Assembly.GetExecutingAssembly().Location; - var globCfgfilePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(assemblyLocation), @"cmdglobalcfg.xml"); - connection.SetGlobalConfig(globCfgfilePath); - } - else - { - foreach (var c in globCfg) - { - if (c is string s) - { - connection.SetGlobalConfig(s); - } - else if (c != null && c.Value is string) - { - string vs = c.Value as string; - connection.SetGlobalConfig(vs); - } - else if (c is FemDesign.Calculate.GlobConfig cfgObj) - { - connection.SetGlobalConfig(cfgObj); - } - else if (c != null && c.Value is FemDesign.Calculate.GlobConfig) - { - FemDesign.Calculate.GlobConfig vCfgObj = c.Value as FemDesign.Calculate.GlobConfig; - connection.SetGlobalConfig(vCfgObj); - } - } - } - } - finally - { - connection.OnOutput -= onOutput; - } - }).GetAwaiter().GetResult(); - - success = true; - } - catch (Exception ex) - { - this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, ex.Message); - log.Add(ex.Message); - success = false; - } - - DA.SetData("Connection", handle); - DA.SetData("Success", success); - DA.SetDataList("Log", log); - } - - protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_Config; - public override Guid ComponentGuid => new Guid("{C223693E-139D-4A1C-8F02-F8618BEDB4BA}"); - public override GH_Exposure Exposure => GH_Exposure.obscure; - } -} + /// + /// Set global configurations using the shared hub connection. + /// Supports both sync (UI-blocking) and async (non-blocking) modes via FemDesignSettings. + /// + public class FemDesignSetGlobalCfg : FemDesignHybridComponent + { + // Input data + private FemDesignHubHandle _handle; + private List _globCfg; + private bool _runNode; + + // Output data + private List _log; + private bool _success; + + public FemDesignSetGlobalCfg() : base("FEM-Design.SetGlobalConfigurations", "SetGlobalCfg", "Set global settings for current model using shared connection. It defines the calculation settings that will instruct FEM-Design in operation like creating the finite element mesh.", CategoryName.Name(), SubCategoryName.Cat8()) + { + } + + protected override void RegisterInputParams(GH_InputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddGenericParameter("GlobalConfig", "GlobCfg", "Filepath of global configuration file or GlobConfig objects.\nIf file path is not provided, the component will read the cmdglobalcfg.xml file in the package manager library folder.\n%AppData%\\McNeel\\Rhinoceros\\packages\\7.0\\FemDesign\\", GH_ParamAccess.list); + pManager[pManager.ParamCount - 1].Optional = true; + pManager.AddBooleanParameter("RunNode", "RunNode", "If true node will execute. If false node will not execute.", GH_ParamAccess.item, true); + pManager[pManager.ParamCount - 1].Optional = true; + } + + protected override void RegisterOutputParams(GH_OutputParamManager pManager) + { + pManager.AddGenericParameter("Connection", "Connection", "Shared FEM-Design connection handle.", GH_ParamAccess.item); + pManager.AddBooleanParameter("Success", "Success", "True if global configuration applied.", GH_ParamAccess.item); + pManager.AddTextParameter("Log", "Log", "Operation log.", GH_ParamAccess.list); + } + + protected override void CollectInputData(IGH_DataAccess DA) + { + _handle = null; + DA.GetData("Connection", ref _handle); + + _globCfg = new List(); + DA.GetDataList("GlobalConfig", _globCfg); + + _runNode = true; + DA.GetData("RunNode", ref _runNode); + // Reset output data + _log = new List(); + _success = false; + } + protected override bool ShouldExecute() + { + if (!_runNode) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run node set to false."); + return false; + } + if (_handle == null) + { + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Connection input is null."); + return false; + } + return true; + } + + protected override void ExecuteWork(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + FemDesignConnectionHub.InvokeAsync(_handle.Id, connection => + { + void onOutput(string s) { _log.Add(s); } + connection.OnOutput += onOutput; + try + { + cancellationToken.ThrowIfCancellationRequested(); + + if (_globCfg.Count == 0) + { + string assemblyLocation = Assembly.GetExecutingAssembly().Location; + var globCfgfilePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(assemblyLocation), @"cmdglobalcfg.xml"); + connection.SetGlobalConfig(globCfgfilePath); + } + else + { + foreach (var c in _globCfg) + { + if (c is string s) + { + connection.SetGlobalConfig(s); + } + else if (c != null && c.Value is string) + { + string vs = c.Value as string; + connection.SetGlobalConfig(vs); + } + else if (c is FemDesign.Calculate.GlobConfig cfgObj) + { + connection.SetGlobalConfig(cfgObj); + } + else if (c != null && c.Value is FemDesign.Calculate.GlobConfig) + { + FemDesign.Calculate.GlobConfig vCfgObj = c.Value as FemDesign.Calculate.GlobConfig; + connection.SetGlobalConfig(vCfgObj); + } + } + } + } + finally + { + connection.OnOutput -= onOutput; + } + }).GetAwaiter().GetResult(); + + _success = true; + } + + protected override void SetOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", _handle); + DA.SetData("Success", _success); + DA.SetDataList("Log", _log); + } + + protected override void SetDefaultOutputData(IGH_DataAccess DA) + { + DA.SetData("Connection", null); + DA.SetData("Success", false); + DA.SetDataList("Log", _log ?? new List()); + } + + protected override System.Drawing.Bitmap Icon => FemDesign.Properties.Resources.FEM_Config; + public override Guid ComponentGuid => new Guid("{C223693E-139D-4A1C-8F02-F8618BEDB4BA}"); + public override GH_Exposure Exposure => GH_Exposure.obscure; + } +} diff --git a/FemDesign.Grasshopper/Reinforcement/Punching/StudRail.cs b/FemDesign.Grasshopper/Reinforcement/Punching/StudRail.cs index de5e3b0f6..bd7b1be4e 100644 --- a/FemDesign.Grasshopper/Reinforcement/Punching/StudRail.cs +++ b/FemDesign.Grasshopper/Reinforcement/Punching/StudRail.cs @@ -21,7 +21,7 @@ public override void registerEvaluationUnits(EvaluationUnitManager mngr) mngr.RegisterUnit(evaluationUnit); evaluationUnit.Icon = FemDesign.Properties.Resources.StudRail; - evaluationUnit.RegisterInputParam(new Param_Plane(), "Point|Plane", "Point|Plane", "", GH_ParamAccess.item); + evaluationUnit.RegisterInputParam(new Param_Plane(), "Point|Plane", "Point|Plane", "End point of the column where the punchin reinforcement should be applied.", GH_ParamAccess.item); evaluationUnit.Inputs[evaluationUnit.Inputs.Count - 1].Parameter.Optional = false; evaluationUnit.RegisterInputParam(new Param_Brep(), "Region", "Region", "", GH_ParamAccess.item); @@ -97,12 +97,28 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run DA.GetData(4, ref diameter); diameter /= 1000; // mm to m - var numberRails = 2; + var numberRails = 4; DA.GetData(5, ref numberRails); + if (numberRails < 4 || numberRails > 50) + { + msg = "Number of rails must be between 4 and 50."; + level = GH_RuntimeMessageLevel.Error; + return; + } + var numberStudsPerMeter = 4; DA.GetData(6, ref numberStudsPerMeter); + if (numberStudsPerMeter < 2 || numberStudsPerMeter > 50) + { + msg = "Number of studs per meter must be between 2 and 20."; + level = GH_RuntimeMessageLevel.Error; + return; + } + + + var so = 150.0; DA.GetData(7, ref so); so = so/1000; // mm to m diff --git a/FemDesign.Grasshopper/Settings/FemDesignSettings.cs b/FemDesign.Grasshopper/Settings/FemDesignSettings.cs new file mode 100644 index 000000000..2c9f60d8c --- /dev/null +++ b/FemDesign.Grasshopper/Settings/FemDesignSettings.cs @@ -0,0 +1,40 @@ +// https://strusoft.com/ +using Grasshopper; +using System; + +namespace FemDesign.Grasshopper +{ + /// + /// Global settings for FEM-Design Grasshopper components. + /// + public static class FemDesignSettings + { + private const string ASYNC_MODE_KEY = "FemDesign_AsyncMode"; + + /// + /// Gets or sets whether async (non-blocking) mode is enabled for FEM-Design components. + /// When true, components will run in the background without blocking the Grasshopper UI. + /// When false, components run synchronously and block the UI until complete. + /// + public static bool AsyncModeEnabled + { + get => Instances.Settings.GetValue(ASYNC_MODE_KEY, true); + set + { + Instances.Settings.SetValue(ASYNC_MODE_KEY, value); + RaiseAsyncModeChanged(); + } + } + + /// + /// Event raised when the async mode setting changes. + /// + public static event Action AsyncModeChanged; + + internal static void RaiseAsyncModeChanged() + { + AsyncModeChanged?.Invoke(); + } + } +} + diff --git a/FemDesign.Grasshopper/UI/LoadMainMenu.cs b/FemDesign.Grasshopper/UI/LoadMainMenu.cs index 6c92da356..d42fad6e3 100644 --- a/FemDesign.Grasshopper/UI/LoadMainMenu.cs +++ b/FemDesign.Grasshopper/UI/LoadMainMenu.cs @@ -59,6 +59,29 @@ internal static void OnStartup(GH_Canvas canvas) private static void PopulateSub(ToolStripMenuItem menuItem) { + // Async mode toggle + var asyncModeItem = new ToolStripMenuItem("Async Mode (Non-blocking UI)") + { + CheckOnClick = true, + Checked = FemDesignSettings.AsyncModeEnabled, + ToolTipText = "When enabled, FEM-Design operations run in the background without blocking the Grasshopper UI." + }; + asyncModeItem.CheckedChanged += (sender, e) => + { + FemDesignSettings.AsyncModeEnabled = asyncModeItem.Checked; + + // Log the change to Rhino command line + if (asyncModeItem.Checked) + Rhino.RhinoApp.WriteLine("FEM-Design: Async mode enabled - UI won't block during operations"); + else + Rhino.RhinoApp.WriteLine("FEM-Design: Sync mode enabled - Operations run sequentially"); + }; + menuItem.DropDown.Items.Add(asyncModeItem); + + // Separator + menuItem.DropDown.Items.Add(new ToolStripSeparator()); + + // Links menuItem.DropDown.Items.Add("Documentation", null/*Properties.Resources.MainMenu_Documentation*/, (sender, e) => OpenBrowser(sender, e, documentationUrl)); diff --git a/FemDesign.Python/packaging/LICENSE b/FemDesign.Python/LICENSE similarity index 100% rename from FemDesign.Python/packaging/LICENSE rename to FemDesign.Python/LICENSE diff --git a/FemDesign.Python/PUBLISHING.md b/FemDesign.Python/PUBLISHING.md new file mode 100644 index 000000000..a5d451815 --- /dev/null +++ b/FemDesign.Python/PUBLISHING.md @@ -0,0 +1,148 @@ +# Publishing FEM-Design to PyPI + +## Prerequisites + +1. Create a PyPI account at https://pypi.org/account/register/ +2. Create a TestPyPI account at https://test.pypi.org/account/register/ +3. Generate API tokens for both (recommended over password) + - PyPI: https://pypi.org/manage/account/token/ + - TestPyPI: https://test.pypi.org/manage/account/token/ + +## Before Publishing + +### 1. Run Tests + +Ensure all tests pass before publishing: + +```powershell +pytest test/ +``` + +If any tests fail, fix them before proceeding. + +### 2. Update Version Number + +### Check via Command Line + +Query PyPI for all available versions: + +```powershell +pip index versions FEM-Design +``` + +This queries the PyPI repository directly and shows all published versions. + +Update the version number in `pyproject.toml`: + +```toml +[project] +version = "0.0.9" # Increment version number +``` + +Remember: PyPI does not allow re-uploading the same version number. + +### 3. Clean Previous Builds + +Remove old build artifacts: + +```powershell +if (Test-Path dist) { Remove-Item -Recurse -Force dist } +if (Test-Path build) { Remove-Item -Recurse -Force build } +if (Test-Path *.egg-info) { Remove-Item -Recurse -Force *.egg-info } +``` + +### 4. Build the Package + +Build the distribution packages: + +```powershell +python -m build +``` + +This will create both `.whl` (wheel) and `.tar.gz` (source) files in the `dist/` directory. + +### 5. Check the Build + +Verify the package is correctly built: + +```powershell +python -m twine check dist/* +``` + +This checks for common issues with the package metadata and README rendering. + +## Step 1: Test on TestPyPI (Recommended) + +Upload to TestPyPI first to test the package: + +```powershell +python -m twine upload --repository testpypi dist/* +``` + +When prompted: + +- Username: __token__ +- Password: (paste your TestPyPI API token, starts with pypi-...) + +Then test installation from TestPyPI: + +```powershell +pip install --index-url https://test.pypi.org/simple/ FEM-Design +``` + +## Step 2: Upload to PyPI (Production) + +Once you've verified the package works on TestPyPI: + +```powershell +python -m twine upload dist/* +``` + +When prompted: + +- Username: __token__ +- Password: (paste your PyPI API token, starts with pypi-...) + +## Step 3: Verify Installation + +Test that users can install your package: + +```powershell +pip install FEM-Design +``` + +## Using API Tokens with .pypirc (Optional) + +Create a file at %USERPROFILE%\.pypirc with: + +```ini +[distutils] +index-servers = + pypi + testpypi + +[pypi] +repository = https://upload.pypi.org/legacy/ +username = __token__ +password = pypi-YourPyPITokenHere + +[testpypi] +repository = https://test.pypi.org/legacy/ +username = __token__ +password = pypi-YourTestPyPITokenHere +``` + +This allows you to upload without entering credentials: + +```powershell +python -m twine upload --repository testpypi dist/* +python -m twine upload dist/* +``` + +## Important Notes + +- Make sure to increment the version number in pyproject.toml for each new release +- PyPI does not allow re-uploading the same version number +- Always test on TestPyPI before uploading to production PyPI +- The package name "FEM-Design" must be available on PyPI (check at https://pypi.org/project/FEM-Design/) +- Current version: 0.0.8 diff --git a/FemDesign.Python/packaging/README.md b/FemDesign.Python/README.md similarity index 99% rename from FemDesign.Python/packaging/README.md rename to FemDesign.Python/README.md index d387233b5..13b7e5314 100644 --- a/FemDesign.Python/packaging/README.md +++ b/FemDesign.Python/README.md @@ -38,7 +38,7 @@ try: pipe.RunAnalysis(Analysis.FrequencyAnalysis(num_shapes=5)) pipe.Save(r"simple_beam_out_2.str") - pipe.Exit() + pipe.Detach() except Exception as err: pipe.KillProgramIfExists() raise err diff --git a/FemDesign.Python/examples/01_basic_static_analysis/README.md b/FemDesign.Python/examples/01_basic_static_analysis/README.md new file mode 100644 index 000000000..71f1ef607 --- /dev/null +++ b/FemDesign.Python/examples/01_basic_static_analysis/README.md @@ -0,0 +1,50 @@ +# Example 1: Basic Static Analysis + +This example demonstrates the fundamental workflow for running a static analysis in FEM-Design using Python. + +## Contents + +- `01_basic_static_analysis.py` - Python script to run static analysis +- `concrete_beam.struxml` - Sample FEM-Design model (reinforced concrete beam) + +## What This Example Does + +1. Opens a concrete beam model +2. Runs static analysis (calculates load cases and combinations) +3. Saves the analyzed model with results + +## Model Description + +The sample model is a 6m simply supported reinforced concrete beam with: +- Material: C40/50 concrete +- Section: 350×600 mm rectangular +- Reinforcement: 4ר16mm longitudinal bars, Ø8mm stirrups +- Loading: 10 kN/m distributed load +- Support: Pinned at both ends + +## How to Run + +```bash +cd examples/01_basic_static_analysis +python 01_basic_static_analysis.py +``` + +## Expected Output + +The script will create a new file `concrete_beam_analyzed.str` in this folder containing the analysis results. You can open this file in FEM-Design to view: +- Reactions at supports +- Internal forces (shear, moment) +- Deflections + +## Requirements + +- FEM-Design installed and licensed +- Python 3.x +- femdesign Python package +- pywin32 + +## Next Steps + +After running this example, check out: +- **Example 02**: Eigenfrequency analysis +- Modify the model path to analyze your own structures diff --git a/FemDesign.Python/examples/01_basic_static_analysis/basic_static_analysis.py b/FemDesign.Python/examples/01_basic_static_analysis/basic_static_analysis.py new file mode 100644 index 000000000..2c48a38ba --- /dev/null +++ b/FemDesign.Python/examples/01_basic_static_analysis/basic_static_analysis.py @@ -0,0 +1,59 @@ +""" +Example 1: Basic Static Analysis +================================= +This example demonstrates how to open a FEM-Design model, +run a simple static analysis, and save the results. +""" + +import os +from femdesign.comunication import FemDesignConnection, Verbosity +from femdesign.calculate.analysis import Analysis + +# Get the directory where this script is located +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Path to the FEM-Design model file in the same folder +MODEL_PATH = os.path.join(SCRIPT_DIR, "concrete_beam.struxml") +OUTPUT_PATH = os.path.join(SCRIPT_DIR, "concrete_beam_analyzed.str") + +def main(): + # Create a connection to FEM-Design + # Set minimized=True to run FEM-Design in minimized mode + connection = FemDesignConnection(minimized=False) + + try: + # Set verbosity to see what's happening + # SCRIPT_LOG_LINES will show script execution details + connection.SetVerbosity(Verbosity.SCRIPT_LOG_LINES) + + # Open the model file + print(f"Opening model: {MODEL_PATH}") + connection.Open(MODEL_PATH) + + # Create a static analysis configuration + # calcCase=True: Calculate load cases + # calcComb=True: Calculate load combinations + static_analysis = Analysis.StaticAnalysis() + + # Run the analysis + print("Running static analysis...") + connection.RunAnalysis(static_analysis) + + # Save the results to a new file + print(f"Saving results to: {OUTPUT_PATH}") + connection.Save(OUTPUT_PATH) + + print("\nAnalysis completed successfully!") + print(f"Output saved to: {OUTPUT_PATH}") + + # Close FEM-Design + connection.Detach() + + except Exception as err: + # If something goes wrong, make sure to kill the FEM-Design process + print(f"Error occurred: {err}") + connection.KillProgramIfExists() + raise err + +if __name__ == "__main__": + main() diff --git a/FemDesign.Python/examples/01_basic_static_analysis/concrete_beam.struxml b/FemDesign.Python/examples/01_basic_static_analysis/concrete_beam.struxml new file mode 100644 index 000000000..34e152e53 --- /dev/null +++ b/FemDesign.Python/examples/01_basic_static_analysis/concrete_beam.struxml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + +
diff --git a/FemDesign.Python/examples/02_eigen_freq_analysis/README.md b/FemDesign.Python/examples/02_eigen_freq_analysis/README.md new file mode 100644 index 000000000..146fc0a1b --- /dev/null +++ b/FemDesign.Python/examples/02_eigen_freq_analysis/README.md @@ -0,0 +1,73 @@ +# Example 2: Basic Eigenfrequency Analysis + +This example demonstrates how to perform modal analysis (eigenfrequency analysis) to determine natural frequencies and mode shapes. + +## Contents + +- `02_eigen_freq_analysis.py` - Python script to run eigenfrequency analysis +- `concrete_beam.struxml` - Sample FEM-Design model (reinforced concrete beam) + +## What This Example Does + +1. Opens a concrete beam model +2. Runs eigenfrequency analysis to find the first 5 natural frequencies +3. Saves the model with frequency analysis results + +## Natural Frequency Analysis + +Eigenfrequency analysis determines: +- **Natural frequencies** - Frequencies at which the structure naturally vibrates +- **Mode shapes** - The deformation patterns at each natural frequency +- **Modal participation factors** - How much each mode contributes to the overall response + +This is important for: +- Dynamic analysis +- Vibration assessment +- Seismic design +- Footfall analysis + +## How to Run + +```bash +cd examples/02_eigen_freq_analysis +python 02_eigen_freq_analysis.py +``` + +## Expected Output + +The script will create `concrete_beam_frequencies.str` containing: +- First 5 natural frequencies and periods +- Mode shapes (visualizable in FEM-Design) +- Mass participation factors + +Open the output file in FEM-Design and navigate to: +- **Results → Eigenfrequencies** to view frequencies and periods +- **Results → Mode shapes** to animate the vibration modes + +## Configuration Options + +You can modify the analysis by changing parameters in the script: + +```python +# Calculate 10 mode shapes instead of 5 +freq_analysis = Analysis.FrequencyAnalysis(num_shapes=10) + +# Use different normalization (Unit instead of MassMatrix) +from femdesign.calculate.analysis import Freq +freq_analysis = Analysis.FrequencyAnalysis( + num_shapes=5, + norm_unit=Freq.ShapeNormalization.Unit +) +``` + +## Requirements + +- FEM-Design installed and licensed +- Python 3.x +- femdesign Python package +- pywin32 + +## Learn More + +- Example 01: Basic static analysis +- FEM-Design documentation on modal analysis diff --git a/FemDesign.Python/examples/02_eigen_freq_analysis/concrete_beam.struxml b/FemDesign.Python/examples/02_eigen_freq_analysis/concrete_beam.struxml new file mode 100644 index 000000000..34e152e53 --- /dev/null +++ b/FemDesign.Python/examples/02_eigen_freq_analysis/concrete_beam.struxml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + +
diff --git a/FemDesign.Python/examples/02_eigen_freq_analysis/eigen_freq_analysis.py b/FemDesign.Python/examples/02_eigen_freq_analysis/eigen_freq_analysis.py new file mode 100644 index 000000000..e8f65c674 --- /dev/null +++ b/FemDesign.Python/examples/02_eigen_freq_analysis/eigen_freq_analysis.py @@ -0,0 +1,61 @@ +""" +Example 2: Basic Eigenfrequency Analysis +========================================= +This example demonstrates how to perform eigenfrequency (modal) analysis +to calculate natural frequencies and mode shapes of a structure. +""" + +import os +from femdesign.comunication import FemDesignConnection, Verbosity +from femdesign.calculate.analysis import Analysis + +# Get the directory where this script is located +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Path to the FEM-Design model file in the same folder +MODEL_PATH = os.path.join(SCRIPT_DIR, "concrete_beam.struxml") +OUTPUT_PATH = os.path.join(SCRIPT_DIR, "concrete_beam_frequencies.str") + +def main(): + # Create a connection to FEM-Design + connection = FemDesignConnection(minimized=True) + + try: + # Set verbosity to see script execution details + connection.SetVerbosity(Verbosity.SCRIPT_LOG_LINES) + + # Open the model file + print(f"Opening model: {MODEL_PATH}") + connection.Open(MODEL_PATH) + + # Create eigenfrequency analysis configuration + # num_shapes: Number of mode shapes to calculate (default: 5) + # The analysis will find the first 5 natural frequencies and mode shapes + print("Running eigenfrequency analysis...") + freq_analysis = Analysis.FrequencyAnalysis(num_shapes=5) + + # Run the eigenfrequency analysis + connection.RunAnalysis(freq_analysis) + + # Save the results to a new file + print(f"Saving results to: {OUTPUT_PATH}") + connection.Save(OUTPUT_PATH) + + print("\nEigenfrequency analysis completed successfully!") + print(f"Output saved to: {OUTPUT_PATH}") + print("\nYou can now open the output file in FEM-Design to:") + print(" - View natural frequencies in the Results tab") + print(" - Visualize mode shapes") + print(" - Check modal participation factors") + + # Close FEM-Design + connection.Exit() + + except Exception as err: + # If something goes wrong, make sure to kill the FEM-Design process + print(f"Error occurred: {err}") + connection.KillProgramIfExists() + raise err + +if __name__ == "__main__": + main() diff --git a/FemDesign.Python/examples/03_modify_struxml/README.md b/FemDesign.Python/examples/03_modify_struxml/README.md new file mode 100644 index 000000000..6eda3ce7f --- /dev/null +++ b/FemDesign.Python/examples/03_modify_struxml/README.md @@ -0,0 +1,217 @@ +# Example 03: Modify StruXML File + +This example demonstrates how to programmatically modify FEM-Design models by working directly with the StruXML format. + +## Files in This Example + +- **03_modify_struxml.py** - Modify existing model elements +- **03b_create_objects.py** - Create new objects from scratch +- **concrete_beam.struxml** - Input model file +- **README.md** - This documentation + +## What This Example Does + +### Example 03: Modify Existing Elements + +1. **Deserializes** a `.struxml` file into Python objects using xsdata +2. **Extracts information** about load cases and load combinations +3. **Modifies load case names** (e.g., "DL" → "DeadLoad") +4. **Modifies load combination names** (e.g., "ULS_1" → "ULS - Ultimate Limit State") +5. **Modifies beam properties** (name and color attributes) +6. **Serializes** the modified model back to a `.struxml` file +7. **Opens** the modified file in FEM-Design using FemDesignConnection + +### Example 03b: Create Objects from Scratch + +1. **Creates new load cases** using strusoft25.py dataclasses +2. **Creates new load combinations** with specified factors +3. **Adds new objects** to an existing model +4. **Demonstrates** how to use the strusoft25 classes directly +5. **Generates GUIDs** for new elements +6. **Uses enums** for type and property values + +## Key Concepts + +### StruXML Structure + +StruXML files are XML-based model files that can be edited programmatically. The main components are: + +- **Database**: Root structure containing all model data +- **Entities**: Contains structural elements like bars, slabs, supports, and loads +- **Sections**: Cross-section definitions +- **Materials**: Material property definitions + +### XSData Classes + +The FemDesign Python API uses [xsdata](https://xsdata.readthedocs.io/) to parse StruXML files into Python dataclasses. Key classes used in this example: + +- **Database**: Main container (`from femdesign.strusoft.interop.struxml.data.strusoft25`) +- **LoadCaseType**: Represents individual load cases +- **LoadCombinationType**: Represents load combinations +- **BarType**: Represents bars (beams, columns, trusses) + +### Accessing Model Data + +```python +# Load a model +database = deserialize_from_filepath("model.struxml") + +# Access load cases +for load_case in database.entities.loads.load_case: + print(load_case.name, load_case.type_value) + +# Access load combinations +for load_comb in database.entities.loads.load_combination: + print(load_comb.name, load_comb.load_case) + +# Access bars (beams) +for bar in database.entities.bar: + print(bar.name, bar.type_value) +``` + +### Modifying Model Data + +After deserializing, you can modify the Python objects directly: + +```python +# Modify load case name +database.entities.loads.load_case[0].name = "NewName" + +# Modify bar name +database.entities.bar[0].name = "Beam_001" + +# Add attributes (like color) +database.entities.bar[0].any_attributes["color"] = "#FF0000" +``` + +### Saving Changes + +Save the modified model back to a `.struxml` file: + +```python +serialize_to_struxml(database, filepath="modified_model.struxml") +``` + +## Running the Examples + +**Modify existing elements:** +```bash +cd examples/03_modify_struxml +python 03_modify_struxml.py +``` + +**Create new objects:** +```bash +cd examples/03_modify_struxml +python 03b_create_objects.py +``` + +## Expected Output + +The script will: + +1. Display original load cases and bars +2. Show the modifications being made +3. Display the modified load cases and bars +4. Save a new file: `concrete_beam_modified.struxml` +5. Open it in FEM-Design +6. Save it as `concrete_beam_modified_analyzed.str` + +## Use Cases + +This approach is useful for: +Creating Objects from Scratch + +**Yes, you CAN create objects using strusoft25.py classes!** They are part of the femdesign package. + +### Quick Start Guide + +```python +from femdesign.strusoft.interop.struxml.data.strusoft25 import ( + LoadCaseType, + LoadcasetypeType, + Loadcasedurationtype, +) +import uuid +from datetime import datetime + +# Create a new load case +new_load_case = LoadCaseType( + guid=str(uuid.uuid4()), # Generate new GUID + last_change=datetime.now(), # Timestamp + action="added", # Modification type + name="Wind Load", # Name (max 80 chars) + type_value=LoadcasetypeType.STATIC, # Use enums! + duration_class=Loadcasedurationtype.SHORT_TERM, +) + +# Add to an existing model +database.entities.loads.load_case.append(new_load_case) +``` + +### Key Classes You Can Create + +| Class | Import From | Purpose | +|-------|-------------|---------| +| `LoadCaseType` | strusoft25 | Load cases | +| `LoadCombinationType` | strusoft25 | Load combinations | +| `BarType` | strusoft25 | Beams, columns, trusses | +| `PointSupportType` | strusoft25 | Point supports | +| `LineLoadType` | strusoft25 | Line loads | +| `PointLoadType` | strusoft25 | Point loads | + +### Important Tips for Creating Objects + +1. **Always generate new GUIDs**: `str(uuid.uuid4())` +2. **Use enums for type fields**: Import enum types like `LoadcasetypeType`, `Loadcombtype`, etc. +3. **Use keyword arguments**: Dataclasses require keyword args +4. **Check required fields**: Look at the class definition to see which fields are required +5. **Set timestamps**: Use `datetime.now()` for `last_change` fields +6. **Set action**: Use "added" for new elements + +### Example: Complete Object Creation + +```python +from femdesign.strusoft.interop.struxml.data.strusoft25 import ( + LoadCombinationType, + Loadcombtype, + LoadCombinationLoadCaseType, +) + +# Create load combination with multiple load cases +combination = LoadCombinationType( + guid=str(uuid.uuid4()), + last_change=datetime.now(), + action="added", + name="ULS - Ultimate", + type_value=Loadcombtype.ULTIMATE_ORDINARY, + load_case=[ + LoadCombinationLoadCaseType(guid="", gamma=1.35), + LoadCombinationLoadCaseType(guid="", gamma=1.5), + ] +) +``` + +See **03b_create_objects.py** for a complete working example! + +## Important Notes + +- StruXML files can be opened and saved in FEM-Design (`.struxml` format) +- The `.str` format is binary and cannot be directly modified +- Always validate modified models in FEM-Design before analysis +- GUIDs should remain unchanged for existing elements +- When adding new elements, generate new GUIDs using `uuid.uuid4()` +- All strusoft25 classes are standard Python dataclasses generated by xsdata +## Important Notes + +- StruXML files can be opened and saved in FEM-Design (`.struxml` format) +- The `.str` format is binary and cannot be directly modified +- Always validate modified models in FEM-Design before analysis +- GUIDs should remain unchanged for existing elements +- When adding new elements, generate new GUIDs using `uuid.uuid4()` + +## Further Reading + +- [xsdata documentation](https://xsdata.readthedocs.io/) +- StruXML schema: `strusoft25.xsd` in the project root +- FemDesign API documentation: [FEM-Design API](https://strusoft.com/fem-design-api) diff --git a/FemDesign.Python/examples/03_modify_struxml/concrete_beam.struxml b/FemDesign.Python/examples/03_modify_struxml/concrete_beam.struxml new file mode 100644 index 000000000..34e152e53 --- /dev/null +++ b/FemDesign.Python/examples/03_modify_struxml/concrete_beam.struxml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + +
diff --git a/FemDesign.Python/examples/03_modify_struxml/modify_struxml.py b/FemDesign.Python/examples/03_modify_struxml/modify_struxml.py new file mode 100644 index 000000000..5b69fa377 --- /dev/null +++ b/FemDesign.Python/examples/03_modify_struxml/modify_struxml.py @@ -0,0 +1,224 @@ +""" +Example 3: Modify StruXML File +=============================== +This example demonstrates how to: +- Deserialize (read) a .struxml file into Python objects +- Extract information like load cases and load combinations +- Modify load case names +- Modify beam names and properties +- Serialize back to .struxml file +- Open the modified file with FemDesignConnection +""" + +import os + +from femdesign.comunication import * +from femdesign.calculate import * +from femdesign.interop import * +from femdesign.io import * + + +# Get the directory where this script is located +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Path to the input model file +INPUT_MODEL = os.path.join(SCRIPT_DIR, "concrete_beam.struxml") +# Path to save the modified model +MODIFIED_MODEL = os.path.join(SCRIPT_DIR, "concrete_beam_modified.struxml") +# Path to save the analyzed model +OUTPUT_MODEL = os.path.join(SCRIPT_DIR, "concrete_beam_modified_analyzed.str") + + +def print_load_information(database: Database): + """Print information about load cases and load combinations.""" + + if not database.entities or not database.entities.loads: + print("No loads found in the model") + return + + loads = database.entities.loads + + # Print load cases + print("\n" + "=" * 60) + print("LOAD CASES") + print("=" * 60) + if loads.load_case: + for i, load_case in enumerate(loads.load_case, 1): + print(f"\n{i}. Name: {load_case.name}") + print(f" GUID: {load_case.guid}") + print(f" Type: {load_case.type_value.value}") + print(f" Duration Class: {load_case.duration_class.value}") + else: + print("No load cases found") + + # Print load combinations + print("\n" + "=" * 60) + print("LOAD COMBINATIONS") + print("=" * 60) + if loads.load_combination: + for i, load_comb in enumerate(loads.load_combination, 1): + print(f"\n{i}. Name: {load_comb.name}") + print(f" GUID: {load_comb.guid}") + print(f" Type: {load_comb.type_value.value}") + print(f" Contains {len(load_comb.load_case)} load case(s):") + for lc in load_comb.load_case: + print(f" - GUID: {lc.guid}, Factor: {lc.gamma}") + else: + print("No load combinations found") + + +def print_bar_information(database: Database): + """Print information about bars (beams, columns, etc.).""" + + if not database.entities or not database.entities.bar: + print("No bars found in the model") + return + + print("\n" + "=" * 60) + print("BARS (Beams/Columns)") + print("=" * 60) + + for i, bar in enumerate(database.entities.bar, 1): + print(f"\n{i}. Name: {bar.name}") + print(f" GUID: {bar.guid}") + print(f" Type: {bar.type_value.value}") + print(f" Number of parts: {len(bar.bar_part)}") + + # Print any custom attributes (like color) + if bar.any_attributes: + print(f" Custom attributes: {bar.any_attributes}") + + +def modify_load_cases(database : Database): + """Modify load case names.""" + + if not database.entities or not database.entities.loads: + print("No loads to modify") + return + + loads = database.entities.loads + + if loads.load_case: + for load_case in loads.load_case: + # Modify load case names + if load_case.name == "DL": + old_name = load_case.name + load_case.name = "DeadLoad" + print(f"\nModified load case: '{old_name}' -> '{load_case.name}'") + elif load_case.name == "LL": + old_name = load_case.name + load_case.name = "LiveLoad" + print(f"Modified load case: '{old_name}' -> '{load_case.name}'") + + +def modify_load_combinations(database : Database): + """Modify load combination names.""" + + if not database.entities or not database.entities.loads: + print("No loads to modify") + return + + loads = database.entities.loads + + if loads.load_combination: + for load_comb in loads.load_combination: + # Modify load combination name + if load_comb.name == "ULS_1": + old_name = load_comb.name + load_comb.name = "ULS - Ultimate Limit State" + print(f"Modified load combination: '{old_name}' -> '{load_comb.name}'") + + +def modify_bars(database : Database): + """Modify bar names and add color attribute.""" + + if not database.entities or not database.entities.bar: + print("No bars to modify") + return + + for bar in database.entities.bar: + # Modify bar name + if bar.name and bar.name.startswith("B."): + old_name = bar.name + bar.name = "Beam_Main_001" + print(f"\nModified bar name: '{old_name}' -> '{bar.name}'") + + # Add a color attribute (RGB color in hex format without #, e.g. FF0000 for red) + # Red color: FF0000 + bar.bar_part[0].colouring = EntityColor(tone="FF0000") + print(f"Added color attribute: {bar.bar_part[0].colouring.tone} to bar '{bar.name}'") + + +def main(): + print("=" * 60) + print("STRUXML MODIFICATION EXAMPLE") + print("=" * 60) + + # Step 1: Deserialize the struxml file + print(f"\nStep 1: Reading model from {INPUT_MODEL}") + database = deserialize_from_filepath(INPUT_MODEL) + print("✓ Model loaded successfully") + + # Step 2: Print current information + print("\n" + "▬" * 60) + print("ORIGINAL MODEL INFORMATION") + print("▬" * 60) + print_load_information(database) + print_bar_information(database) + + # Step 3: Modify the model + print("\n" + "▬" * 60) + print("MODIFYING MODEL") + print("▬" * 60) + modify_load_cases(database) + modify_load_combinations(database) + modify_bars(database) + + # Step 4: Print modified information + print("\n" + "▬" * 60) + print("MODIFIED MODEL INFORMATION") + print("▬" * 60) + print_load_information(database) + print_bar_information(database) + + # Step 5: Serialize back to struxml + print(f"\nStep 5: Saving modified model to {MODIFIED_MODEL}") + serialize_to_struxml(database, filepath=MODIFIED_MODEL) + print("✓ Modified model saved successfully") + + # Step 6: Open in FEM-Design and run analysis + print(f"\nStep 6: Opening modified model in FEM-Design") + connection = FemDesignConnection(minimized=True) + + try: + connection.SetVerbosity(Verbosity.SCRIPT_LOG_LINES) + + # Open the modified model + connection.Open(MODIFIED_MODEL) + print("✓ Model opened in FEM-Design") + + # You can run analysis here if needed + # from femdesign.calculate.analysis import Analysis + # static_analysis = Analysis.StaticAnalysis() + # connection.RunAnalysis(static_analysis) + + # Save to demonstrate it works + connection.Save(OUTPUT_MODEL) + print(f"✓ Model saved to: {OUTPUT_MODEL}") + + connection.Detach() + + print("\n" + "=" * 60) + print("SUCCESS!") + print("=" * 60) + print("1. Notice the updated load case/combination names") + print("2. Check the beam properties for the updated name") + + except Exception as err: + print(f"\n✗ Error occurred: {err}") + connection.KillProgramIfExists() + raise err + + +if __name__ == "__main__": + main() diff --git a/FemDesign.Python/examples/04_create_model/README.md b/FemDesign.Python/examples/04_create_model/README.md new file mode 100644 index 000000000..3c692b3bd --- /dev/null +++ b/FemDesign.Python/examples/04_create_model/README.md @@ -0,0 +1,168 @@ +# Example 04: Create Model from Scratch + +This example demonstrates how to programmatically create a complete FEM-Design model from scratch using Python dataclasses. + +## Files in This Example + +- **create_model.py** - Creates a new model with a point support +- **model.struxml** - Output model file (generated) +- **README.md** - This documentation + +## What This Example Does + +1. **Creates an empty Database** object with required metadata (GUID, timestamps, version) +2. **Creates a point support** at coordinates (10, 10, 10) with spring rigidity of 100000 kN/m +3. **Configures support rigidity** using RigidityDataType2 with separate motion and rotation stiffnesses +4. **Adds the support to the model** by creating the entities structure +5. **Serializes** the complete model to a `.struxml` file +6. **Opens** the model in FEM-Design using FemDesignConnection +7. **Detaches** the connection to allow manual interaction + +## Key Concepts + +### Creating a Database from Scratch + +Every FEM-Design model starts with a `Database` object that contains required metadata: + +```python +model = Database( + end=EmptyType(), # Required end marker + struxml_version="01.00.000", # Format: XX.XX.XXX + source_software="FemDesign API Python", # Software identifier + start_time=XmlDateTime.from_datetime(datetime.now()), # Creation time + end_time=XmlDateTime.from_datetime(datetime.now()), # Modification time + guid=str(uuid.uuid4()), # Unique identifier + country=Eurocodetype.COMMON, # Standard/country code +) +``` + +### Creating a Point Support + +Point supports require position and rigidity definition: + +```python +point_support = PointSupportType( + position=PointType3D(x=10.0, y=10.0, z=10.0), # 3D coordinates + group=SupportRigidityDataType.Group( + local_x=PointType3D(x=1.0, y=0.0, z=0.0), # Local coordinate system + local_y=PointType3D(x=0.0, y=1.0, z=0.0), + rigidity=RigidityDataType2( + motions=StiffnessType( # Translation springs + x_neg=100000.0, x_pos=100000.0, + y_neg=100000.0, y_pos=100000.0, + z_neg=100000.0, z_pos=100000.0 + ), + rotations=StiffnessType( # Rotation springs + x_neg=0.0, x_pos=0.0, # 0 = free rotation + y_neg=0.0, y_pos=0.0, + z_neg=0.0, z_pos=0.0 + ) + ) + ), + guid=str(uuid.uuid4()), + last_change=XmlDateTime.from_datetime(datetime.now()), + action=ModificationType.ADDED, + name="S1", +) +``` + +### Building the Model Structure + +Add entities to the model by creating the nested structure: + +```python +model.entities = Database.Entities( + supports=Database.Entities.Supports( + point_support=[point_support] + ) +) +``` + +### Saving and Opening the Model + +```python +# Save to file +serialize_to_struxml(model, True, OUTPUT_MODEL) + +# Open in FEM-Design +connection = FemDesignConnection(minimized=False) +connection.Open(OUTPUT_MODEL) +connection.Detach() +``` + +## Running the Example + +```bash +cd examples/04_create_model +python create_model.py +``` + +## Expected Output + +The script will: + +1. Create an empty Database object +2. Create a point support with specified rigidity +3. Display model information: + - Model GUID + - Point support position (10.0, 10.0, 10.0) + - Rigidity value (100000.0) +4. Save the model as `model.struxml` +5. Open the model in FEM-Design +6. Detach the connection + +## Key Classes Used + +| Class | Purpose | +|-------|---------| +| `Database` | Root container for the entire model | +| `EmptyType` | Required end marker for Database | +| `PointSupportType` | Point support definition | +| `PointType3D` | 3D point coordinates | +| `SupportRigidityDataType.Group` | Support rigidity with local coordinate system | +| `RigidityDataType2` | Rigidity definition with motions and rotations | +| `StiffnessType` | Spring stiffness values in 3 directions | +| `ModificationType` | Enum for element action (ADDED, MODIFIED) | +| `Eurocodetype` | Enum for country/standard codes | + +## Use Cases + +This approach is useful for: + +- **Parametric model generation**: Create models based on parameters +- **Automated design**: Generate multiple design variants programmatically +- **Integration with other tools**: Connect Python workflows to FEM-Design +- **Batch processing**: Create multiple models with different configurations +- **Research and optimization**: Generate models for parametric studies + +## Important Notes + +- StruXML files can be opened and saved in FEM-Design (`.struxml` format) +- The `.str` format is binary and cannot be directly modified +- Always validate modified models in FEM-Design before analysis +- GUIDs should remain unchanged for existing elements +- When adding new elements, generate new GUIDs using `uuid.uuid4()` + +## Further Reading + +- [xsdata documentation](https://xsdata.readthedocs.io/) +- StruXML schema: `strusoft25.xsd` in the project root +- FemDesign API documentation: [FEM-Design API](https://strusoft.com/fem-design-api) +**GUIDs are required**: Every element needs a unique GUID generated with `uuid.uuid4()` +- **Timestamps are required**: Use `XmlDateTime.from_datetime(datetime.now())` for time fields +- **Local coordinate system**: Point supports with Group rigidity need `local_x` and `local_y` vectors +- **Rigidity definition**: Use `RigidityDataType2` with `motions` and `rotations` for complete support definition +- **StiffnessType**: Requires both negative and positive direction values (e.g., `x_neg`, `x_pos`) +- **Action type**: New elements should have `action=ModificationType.ADDED` +- **Validation**: Always open and validate created models in FEM-Design before analysis + +## Next Steps + +To extend this example, you can add: + +- **Bars (beams/columns)**: Using `BarType` with section and material references +- **Materials**: Using `Database.Materials` to define concrete, steel, etc. +- **Sections**: Using `Database.Sections` to define cross-sections +- **Load cases**: Using `LoadCaseType` for dead load, live load, etc. +- **Loads**: Using `PointLoadType`, `LineLoadType`, or `SurfaceLoadType` +- **Slabs**: Using `SlabType` for floor/wall panels diff --git a/FemDesign.Python/examples/04_create_model/create_model.py b/FemDesign.Python/examples/04_create_model/create_model.py new file mode 100644 index 000000000..e463c5abb --- /dev/null +++ b/FemDesign.Python/examples/04_create_model/create_model.py @@ -0,0 +1,90 @@ +""" +Example 3: Modify StruXML File +=============================== +This example demonstrates how to: +- Deserialize (read) a .struxml file into Python objects +- Extract information like load cases and load combinations +- Modify load case names +- Modify beam names and properties +- Serialize back to .struxml file +- Open the modified file with FemDesignConnection +""" + +import os + +from femdesign.comunication import * +from femdesign.calculate import * +from femdesign.interop import * +from femdesign.io import * + + +# Get the directory where this script is located +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Path to save the model +OUTPUT_MODEL = os.path.join(SCRIPT_DIR, "model.struxml") + +def main(): + """Main function to demonstrate the model creation.""" + # Create an empty database + model = Database( + end=EmptyType(), + struxml_version="01.00.000", # Format: XX.XX.XXX + source_software="FemDesign API Python", + start_time=XmlDateTime.from_datetime(datetime.now()), + end_time=XmlDateTime.from_datetime(datetime.now()), + guid=str(uuid.uuid4()), + # Optional fields with defaults: + country=Eurocodetype.COMMON, + # soil_as_solid=False, + # convertid="00000000-0000-0000-0000-000000000000" + ) + + # Create a point support at (10, 10, 10) with rigidity 100000 + point_support = PointSupportType( + position=PointType3D(x=10.0, y=10.0, z=10.0), + group=SupportRigidityDataType.Group( + local_x=PointType3D(x=1.0, y=0.0, z=0.0), # Local X axis direction + local_y=PointType3D(x=0.0, y=1.0, z=0.0), # Local Y axis direction + rigidity=RigidityDataType2( + motions=StiffnessType( + x_neg=100000.0, x_pos=100000.0, + y_neg=100000.0, y_pos=100000.0, + z_neg=100000.0, z_pos=100000.0 + ), + rotations=StiffnessType( + x_neg=0.0, x_pos=0.0, + y_neg=0.0, y_pos=0.0, + z_neg=0.0, z_pos=0.0 + ) + ) + ), + guid=str(uuid.uuid4()), + last_change=XmlDateTime.from_datetime(datetime.now()), + action=ModificationType.ADDED, + name="S1", + ) + + # Add the point support to the model + model.entities = Database.Entities( + supports=Database.Entities.Supports( + point_support=[point_support] + ) + ) + + serialize_to_struxml(model, True, OUTPUT_MODEL) + + print("Model created successfully!") + print(f"Model GUID: {model.guid}") + print(f"Point support created at position: ({point_support.position.x}, {point_support.position.y}, {point_support.position.z})") + if point_support.group and point_support.group.rigidity: + print(f"Rigidity: {point_support.group.rigidity.motions.x_pos}") + + # Open the model in FEM-Design + connection = FemDesignConnection(minimized=False) + connection.Open(OUTPUT_MODEL) + connection.Detach() # Detach the connection to allow manual interaction with FEM-Design after opening the model + + +if __name__ == "__main__": + main() diff --git a/FemDesign.Python/examples/04_create_model/model.struxml b/FemDesign.Python/examples/04_create_model/model.struxml new file mode 100644 index 000000000..00386f64c --- /dev/null +++ b/FemDesign.Python/examples/04_create_model/model.struxml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/FemDesign.Python/examples/README.md b/FemDesign.Python/examples/README.md new file mode 100644 index 000000000..dff563c46 --- /dev/null +++ b/FemDesign.Python/examples/README.md @@ -0,0 +1,203 @@ +# FemDesign Python API - Examples + +This folder contains ready-to-run examples demonstrating various features of the FemDesign Python API. Each example is in its own folder with a complete, working model file. + +## 📁 Folder Structure + +Each example folder contains: + +- **Python script** (`.py`) - The runnable example code +- **Model file** (`.struxml` or `.str`) - FEM-Design model for the example +- **README.md** - Detailed documentation for that specific example + +```files +examples/ +├── 01_basic_static_analysis/ +│ ├── 01_basic_static_analysis.py +│ ├── concrete_beam.struxml +│ └── README.md +│ +├── 02_eigen_freq_analysis/ +│ ├── 02_eigen_freq_analysis.py +│ ├── concrete_beam.struxml +│ └── README.md +│ +├── 03_modify_struxml/ +│ ├── 03_modify_struxml.py +│ ├── concrete_beam.struxml +│ └── README.md +│ +├── 04_create_model/ +│ ├── create_model.py +│ ├── model.struxml (generated) +│ └── README.md +│ +└── README.md (this file) +``` + +## 📚 Available Examples + +### 01 - Basic Static Analysis + +Learn the fundamental workflow: + +- Opening FEM-Design models +- Running static analysis +- Saving results + +**Use case**: Analyze a simply supported concrete beam under distributed load + +### 02 - Eigenfrequency Analysis + +Perform modal analysis: + +- Calculate natural frequencies +- Determine mode shapes +- View modal participation factors + +**Use case**: Find vibration characteristics of the same concrete beam + +### 03 - Modify StruXML File + +Work with model files programmatically: + +- Deserialize `.struxml` files into Python objects +- Read load cases and load combinations +- Modify element names and properties +- Add custom attributes (e.g., colors) +- Serialize back to `.struxml` format +- Open modified model in FEM-Design + +**Use case**: Batch rename load cases, modify beam properties, and add visualization attributes + +### 04 - Create Model from Scratch + +Build complete FEM-Design models programmatically: + +- Create empty Database object with required metadata +- Define point supports with spring rigidity +- Configure support rigidity using RigidityDataType2 +- Build model structure with entities +- Serialize to `.struxml` format +- Open in FEM-Design + +**Use case**: Parametric model generation, create a point support at (10, 10, 10) with 100000 kN/m rigidity + +## 🚀 Quick Start + +1. Navigate to any example folder: + + ```bash + cd examples/01_basic_static_analysis + ``` + +2. Run the Python script: + + ```bash + python 01_basic_static_analysis.py + ``` + +3. Check the output file(s) created in the same folder + +4. Open the output in FEM-Design to view results + +## 💡 Prerequisites + +- **FEM-Design** installed with active license +- **Python 3.x** +- **femdesign Python package** installed +- **pywin32** package: `pip install pywin32` + +## 📖 How to Use These Examples + +### For Learning + +1. Start with Example 01 to understand the basic workflow +2. Progress to Example 02 for different analysis types +3. Read the README.md in each folder for detailed explanations + +### For Your Projects + +1. Copy an example folder as a template +2. Replace the model file with your own `.str` or `.struxml` +3. Modify the script parameters as needed +4. Run and iterate + +### Customization Tips + +**Change the model file:** + +```python +MODEL_PATH = os.path.join(SCRIPT_DIR, "your_model.str") +``` + +**Modify analysis settings:** + +```python +# More mode shapes +freq_analysis = Analysis.FrequencyAnalysis(num_shapes=10) + +# Different analysis options +static_analysis = Analysis.StaticAnalysis(calcCase=True, calcComb=True) +``` + +**Change output location:** +```python +OUTPUT_PATH = os.path.join(SCRIPT_DIR, "results", "output.str") +``` + +## 🔧 Troubleshooting + +**Script can't find the model file:** + +- Make sure you're running the script from within its folder, OR +- The scripts use `os.path.dirname(os.path.abspath(__file__))` to find files relative to the script location + +**FEM-Design doesn't start:** + +- Verify FEM-Design is installed +- Check license is activated +- Ensure no other FEM-Design instances are running + +**Import errors:** + +- Install packages: `pip install pywin32` +- Verify femdesign package is in your Python path + +**Analysis fails:** + +- Open the model manually in FEM-Design first to check for errors +- Check the console output for detailed error messages +- Verify the model is valid and has necessary load cases/combinations + +## 📝 File Formats + +The examples work with both FEM-Design file formats: + +- **`.struxml`** - XML-based format (human-readable, version control friendly) +- **`.str`** - Binary format (smaller file size) + +You can use either format as input, and save to either format as output. + +## 🔗 Additional Resources + +- [FemDesign API Documentation](https://femdesign-api-docs.onstrusoft.com/docs/intro) +- [FemDesign Software](https://strusoft.com/software/3d-structural-analysis-software-fem-design/) +- Main repository examples: [FemDesign.Examples/Python](https://github.com/strusoft/femdesign-api/tree/master/FemDesign.Examples/Python) + +## 🎯 Next Steps + +After mastering these examples, explore: + +- Creating custom analysis workflows +- Batch processing multiple models +- Extracting and post-processing results +- Integrating with other tools in your workflow + +## 💬 Support + +If you encounter issues: + +1. Check the example's README.md for specific guidance +2. Review the FemDesign API documentation +3. Open an issue on the GitHub repository diff --git a/FemDesign.Python/femdesign/calculate/command.py b/FemDesign.Python/femdesign/calculate/command.py index fb96fc65a..6df1fcaf4 100644 --- a/FemDesign.Python/femdesign/calculate/command.py +++ b/FemDesign.Python/femdesign/calculate/command.py @@ -502,11 +502,11 @@ def to_xml_element(self) -> ET.Element: class CmdInteractionSurface(Command): """class to represent the fdscript cmdinteraction surface command """ - def __init__(self, guid : uuid.UUID, outfile : str, offset : float = 0.0, fUlt : bool = False): + def __init__(self, guid : str, outfile : str, offset : float = 0.0, fUlt : bool = False): """Constructor for the CmdInteractionSurface class Args: - guid (uuid.UUID): guid of an existing bar. make sure you pass the analytical bar! + guid (str): guid of an existing bar. make sure you pass the analytical bar! outfile (str): path to the output file offset (float): offset is cross-section position, measured along the bar from the starting point [m] fUlt (bool): fUlt is true for Ultimate, false for Accidental or Seismic combination (different gammaC) diff --git a/FemDesign.Python/femdesign/comunication.py b/FemDesign.Python/femdesign/comunication.py index c4570b12d..81d99b37a 100644 --- a/FemDesign.Python/femdesign/comunication.py +++ b/FemDesign.Python/femdesign/comunication.py @@ -298,7 +298,7 @@ class Verbosity(Enum): class FemDesignConnection(_FdConnect): def __init__(self, - fd_path : str = r"C:\Program Files\StruSoft\FEM-Design 23\fd3dstruct.exe", + fd_path : str = r"C:\Program Files\StruSoft\FEM-Design 25\fd3dstruct.exe", pipe_name : str ="FdPipe1", verbose : Verbosity = Verbosity.SCRIPT_LOG_LINES, output_dir : str = None, @@ -491,11 +491,11 @@ def ApplyDocumentationTemplate(self, template_file : str): fdscript = Fdscript(log, [cmd_child]) self.RunScript(fdscript, "apply_documentation_template") - def GenerateInteractionSurface(self, guid : uuid.UUID, outfile : str, offset : float = 0.0, fUlt : bool = True): + def GenerateInteractionSurface(self, guid : str, outfile : str, offset : float = 0.0, fUlt : bool = True): """Generate interaction surface Args: - guid (uuid.UUID): guid of an existing bar. make sure you pass the analytical bar! + guid (str): guid of an existing bar. make sure you pass the analytical bar! outfile (str): path to the output file offset (float): offset is cross-section position, measured along the bar from the starting point [m] fUlt (bool): fUlt is true for Ultimate, false for Accidental or Seismic combination (different gammaC) diff --git a/FemDesign.Python/femdesign/database.py b/FemDesign.Python/femdesign/database.py deleted file mode 100644 index 8c9384e37..000000000 --- a/FemDesign.Python/femdesign/database.py +++ /dev/null @@ -1,63 +0,0 @@ -import xml.etree.ElementTree as ET -import uuid -import datetime - -namespace = {'': 'urn:strusoft'} - -class Database: - def __init__(self, country): - self.struxml_version = "01.00.000" - self.source_software = f"FEM-Design API SDK {self.get_version()}" - self.start_time = "1970-01-01T00:00:00.000" - self.end_time = datetime.datetime.now(datetime.UTC).strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] - self.guid = str(uuid.uuid4()) - self.convert_id = "00000000-0000-0000-0000-000000000000" - self.standard = "EC" - self.country = country - self.end = "" - - def get_version(self): - return "0.1.0" - - @property - def eurocode(self): - return self._root.attrib["standard"] - - @property - def country(self): - return self._root.attrib["country"] - - @property - def source_software(self): - return self._root.attrib["source_software"] - - @property - def entities(self): - return self._root.findall(".//entities", namespace) - - @property - def sections(self): - return self._root.findall(".//sections", namespace) - - @property - def materials(self): - return self._root.findall(".//materials", namespace) - - @property - def bars(self): - return self._root.findall(".//bar", namespace) - - def serialise_to_xml(self): - return ET.tostring(self._root, encoding="UTF-8") - - # private void Initialize(Country country) - # { - # this.StruxmlVersion = "01.00.000"; - # this.SourceSoftware = $"FEM-Design API SDK {Assembly.GetExecutingAssembly().GetName().Version.ToString()}"; - # this.StartTime = "1970-01-01T00:00:00.000"; - # this.EndTime = System.DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture); - # this.Guid = System.Guid.NewGuid(); - # this.ConvertId = "00000000-0000-0000-0000-000000000000"; - # this.Standard = "EC"; - # this.Country = country; - # this.End = ""; \ No newline at end of file diff --git a/FemDesign.Python/femdesign/interop.py b/FemDesign.Python/femdesign/interop.py new file mode 100644 index 000000000..23d08f550 --- /dev/null +++ b/FemDesign.Python/femdesign/interop.py @@ -0,0 +1,26051 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum + +from xsdata.models.datatype import XmlDateTime + +__NAMESPACE__ = "urn:strusoft" + + +class EcG2SeismicGroundType(Enum): + A = "A" + B = "B" + C = "C" + D = "D" + E = "E" + F = "F" + + +@dataclass(kw_only=True) +class EcG2SpectraRecordType: + class Meta: + name = "EC_G2_spectra_record_type" + + t: float = field( + metadata={ + "name": "T", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 12.0, + } + ) + sr: float = field( + metadata={ + "name": "Sr", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 20.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EcG2VerticalSpectraType: + class Meta: + name = "EC_G2_vertical_spectra_type" + + beta_v: float = field( + metadata={ + "name": "BetaV", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class AllLevelsType: + class Meta: + name = "all_levels_type" + + strata_top_levels: list[float] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_inclusive": -1000000.0, + "max_inclusive": 10000.0, + "tokens": True, + }, + ) + water_levels: list[float] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_inclusive": -100000.0, + "max_inclusive": 10000.0, + "tokens": True, + }, + ) + + +class AngleunitType(Enum): + DEGREE = "degree" + RAD = "rad" + + +class ArrowtypeType(Enum): + OPEN = "open" + CLOSE = "close" + BREAK = "break" + FILL = "fill" + CIRCLE = "circle" + DOT = "dot" + TICK = "tick" + + +class AutoForceSignType(Enum): + PLUS = "plus" + MINUS = "minus" + + +class AutoForceTypeType(Enum): + SNOW = "snow" + WIND = "wind" + DEVIATION = "deviation" + NOTIONAL = "notional" + + +class AxisPosition(Enum): + START = "start" + END = "end" + BOTH = "both" + + +class BarBucklingType(Enum): + FLEXURAL_WEAK = "flexural_weak" + FLEXURAL_STIFF = "flexural_stiff" + PRESSURED_FLANGE = "pressured_flange" + LATERAL_TORSIONAL = "lateral_torsional" + PRESSURED_BOTTOM_FLANGE = "pressured_bottom_flange" + + +@dataclass(kw_only=True) +class BarStiffnessFactorRecord: + class Meta: + name = "bar_stiffness_factor_record" + + cross_sectional_area: float = field( + metadata={ + "name": "cross-sectional_area", + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + shear_area_direction_1: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.001, + "max_inclusive": 10.0, + }, + ) + shear_area_direction_2: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.001, + "max_inclusive": 10.0, + }, + ) + torsional_constant: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.001, + "max_inclusive": 10.0, + }, + ) + inertia_about_axis_1: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.001, + "max_inclusive": 10.0, + }, + ) + inertia_about_axis_2: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.001, + "max_inclusive": 10.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BeamEdType: + class Meta: + name = "beam_ed_type" + + t_left: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + t_right: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class BeamposType(Enum): + CENTER_OF_GRAVITY = "center_of_gravity" + SHEAR_CENTER = "shear_center" + BOUNDING_RECTANGLE = "bounding_rectangle" + + +class Beamtype(Enum): + BEAM = "beam" + COLUMN = "column" + TRUSS = "truss" + + +@dataclass(kw_only=True) +class BoltLengthType: + class Meta: + name = "bolt_length_type" + + l: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 500.0, + } + ) + ls: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 500.0, + } + ) + lg: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 500.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BridgePierType: + class Meta: + name = "bridge_pier_type" + + elements: list[str] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "tokens": True, + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + colour: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9A-Fa-f]{6}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BsType: + class Meta: + name = "bs_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CamberType: + class Meta: + name = "camber_type" + + force: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000000000.0, + } + ) + e: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CamberType2D: + class Meta: + name = "camber_type_2d" + + force: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000000000.0, + } + ) + e_y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -10000.0, + "max_inclusive": 10000.0, + } + ) + e_z: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -10000.0, + "max_inclusive": 10000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class CcType(Enum): + CRISFIELD = "Crisfield" + CERVERA = "Cervera" + HINTON = "Hinton" + PRAGER = "Prager" + + +class CementType(Enum): + VALUE = "" + CLASS_N = "Class N" + CLASS_R = "Class R" + CLASS_S = "Class S" + + +@dataclass(kw_only=True) +class CltLayer: + class Meta: + name = "clt_layer" + + material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,256}", + } + ) + thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.0, + } + ) + theta: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5707963267949, + } + ) + ex: float = field( + metadata={ + "name": "Ex", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + ey: float = field( + metadata={ + "name": "Ey", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e17, + } + ) + nuxy: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + gxy: float = field( + metadata={ + "name": "Gxy", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + gxz: float = field( + metadata={ + "name": "Gxz", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + gyz: float = field( + metadata={ + "name": "Gyz", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + rho: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + fm0k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + fm90k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e17, + } + ) + ft0k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + ft90k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + fc0k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + fc90k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + fxyk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + fvk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + f_rk: float = field( + metadata={ + "name": "fRk", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + f_tork: float = field( + metadata={ + "name": "fTork", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CompositePartType: + class Meta: + name = "composite_part_type" + + material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + section: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + cog_offset_x: float = field( + default=0.0, + metadata={ + "type": "Attribute", + }, + ) + cog_offset_y: float = field( + default=0.0, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class CompositePropName(Enum): + B = "b" + B_EFF = "b_eff" + BB = "bb" + BC = "bc" + BF = "bf" + BT = "bt" + CY = "cy" + CZ = "cz" + D = "d" + D1 = "d1" + D2 = "d2" + FILL_BEAM = "fill_beam" + H = "h" + HC = "hc" + NAME = "name" + O1 = "o1" + O2 = "o2" + T = "t" + TF = "tf" + TFB = "tfb" + TFT = "tft" + TH = "th" + TW = "tw" + + +@dataclass(kw_only=True) +class CompositeSectionType: + class Meta: + name = "composite_section_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + pos: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class CompositeType(Enum): + BEAM_A = "beam_a" + BEAM_B = "beam_b" + BEAM_P = "beam_p" + COLUMN_A = "column_a" + COLUMN_C = "column_c" + COLUMN_D = "column_d" + COLUMN_E = "column_e" + COLUMN_F = "column_f" + COLUMN_G = "column_g" + + +@dataclass(kw_only=True) +class ConnectivityType: + class Meta: + name = "connectivity_type" + + predefined_connectivity: str = field( + default="00000000-0000-0000-0000-000000000000", + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + m_x: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + m_x_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + m_y: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + m_y_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + m_z: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + m_z_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + r_x: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + r_x_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + r_y: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + r_y_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + r_z: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + r_z_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + v_x: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + v_x_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class CsPartType(Enum): + ONLY_IN_THIS_STAGE = "only_in_this_stage" + FROM_THIS_STAGE_ON = "from_this_stage_on" + SHIFTED_FROM_FIRST_STAGE = "shifted_from_first_stage" + ONLY_STAGE_ACTIVATED_ELEM = "only_stage_activated_elem" + + +class DetachType(Enum): + VALUE = "" + X_TENS = "x_tens" + X_COMP = "x_comp" + Y_TENS = "y_tens" + Y_COMP = "y_comp" + Z_TENS = "z_tens" + Z_COMP = "z_comp" + + +@dataclass(kw_only=True) +class DimXType: + class Meta: + name = "dim_x_type" + + x: None | float = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimYType: + class Meta: + name = "dim_y_type" + + y: None | float = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimdimlineType: + class Meta: + name = "dimdimline_type" + + extension_a: float = field( + default=0.005, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + penwidth: float = field( + default=0.00018, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class Direction2DType(Enum): + HORIZONTAL = "horizontal" + VERTICAL = "vertical" + + +class DirectionType(Enum): + X = "x" + Y = "y" + + +class Displaymodes(Enum): + WIREFRAME = "wireframe" + HIDDEN_LINE = "hidden_line" + SHADE = "shade" + SHADE_WITH_EDGES = "shade_with_edges" + + +class Ec40TcType(Enum): + VALUE_0_7 = 0.7 + VALUE_1_0 = 1.0 + VALUE_1_6 = 1.6 + + +class Edgetype2(Enum): + LINE = "line" + ARC = "arc" + SPLINE = "spline" + POLYLINE = "polyline" + CIRCLE = "circle" + + +@dataclass(kw_only=True) +class EmptyType: + class Meta: + name = "empty_type" + + +@dataclass(kw_only=True) +class EntityColor: + class Meta: + name = "entity_color" + + tone: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9A-Fa-f]{6}", + } + ) + penwidth: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": -10000.0, + "max_inclusive": 10000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class EptsoType(Enum): + PARABOLIC = "parabolic" + CONSTANT = "constant" + + +class Eurocodetype(Enum): + COMMON = "common" + H = "H" + RO = "RO" + DK = "DK" + S = "S" + N = "N" + FIN = "FIN" + GB = "GB" + D = "D" + PL = "PL" + TR = "TR" + EST = "EST" + LV = "LV" + NL = "NL" + B = "B" + E = "E" + N_A = "n/a" + + +@dataclass(kw_only=True) +class ExtlineType: + class Meta: + name = "extline_type" + + lines: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + base_point_on_dimension_line: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + extension_a: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + extension_b: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + offset_c: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class FdMatType(Enum): + VALUE_0 = 0 + VALUE_1 = 1 + VALUE_2 = 2 + VALUE_3 = 3 + VALUE_4 = 4 + VALUE_65535 = 65535 + VALUE_1_1 = -1 + + +class FillmodeType(Enum): + AUTO_FILL = "auto_fill" + COLOUR = "colour" + NO_FILL = "no_fill" + + +class ForceLoadType(Enum): + FORCE = "force" + MOMENT = "moment" + + +@dataclass(kw_only=True) +class FoundationInsulationType: + class Meta: + name = "foundation_insulation_type" + + e_modulus: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0001, + "max_inclusive": 10000.0, + } + ) + density: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + gamma_m_u: float = field( + default=1.2, + metadata={ + "type": "Attribute", + "min_inclusive": 1.0, + "max_inclusive": 100000000.0, + }, + ) + gamma_m_uas: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 1.0, + "max_inclusive": 100000000.0, + }, + ) + limit_stress: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 1.0, + "max_inclusive": 100000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class FoundationPlinthType: + class Meta: + name = "foundation_plinth_type" + + a: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 10000.0, + } + ) + b: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 10000.0, + } + ) + h: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 10000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class FoundationsystemsType(Enum): + SIMPLE = "simple" + SURFACE_SUPPORT_GROUP = "surface_support_group" + FROM_SOIL = "from_soil" + + +@dataclass(kw_only=True) +class GaDirectionRecord: + class Meta: + name = "ga_direction_record" + + factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + diagram: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{1,255}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GlcLayer: + class Meta: + name = "glc_layer" + + material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,256}", + } + ) + thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.0, + } + ) + theta: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5707963267949, + } + ) + ex: float = field( + metadata={ + "name": "Ex", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + ey: float = field( + metadata={ + "name": "Ey", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e17, + } + ) + nuxy: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + gxy: float = field( + metadata={ + "name": "Gxy", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + gxz: float = field( + metadata={ + "name": "Gxz", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + gyz: float = field( + metadata={ + "name": "Gyz", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + rho: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GuidListType: + class Meta: + name = "guid_list_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class HalignType(Enum): + CENTERED = "centered" + VALUE_1ST_EXT_LINE = "1st_ext_line" + VALUE_2ND_EXT_LINE = "2nd_ext_line" + UNDER_1ST_EXT_LINE = "under_1st_ext_line" + OVER_2ND_EXT_LINE = "over_2nd_ext_line" + + +class HorAlign(Enum): + LEFT = "left" + CENTER = "center" + RIGHT = "right" + + +class InternalLineStyle(Enum): + CONTINUOUS = "CONTINUOUS" + DASH4 = "DASH4" + DASH2 = "DASH2" + DASH8 = "DASH8" + DASH12 = "DASH12" + CENTER4 = "CENTER4" + CENTER2 = "CENTER2" + CENTER8 = "CENTER8" + CENTER12 = "CENTER12" + DOT4 = "DOT4" + DOT2 = "DOT2" + DOT8 = "DOT8" + DOT12 = "DOT12" + SECTION4 = "SECTION4" + SECTION2 = "SECTION2" + SECTION8 = "SECTION8" + SECTION12 = "SECTION12" + DASHDOT4 = "DASHDOT4" + DASHDOT2 = "DASHDOT2" + DASHDOT8 = "DASHDOT8" + DASHDOT12 = "DASHDOT12" + + +class LastStageValue(Enum): + LAST_STAGE = "last_stage" + + +@dataclass(kw_only=True) +class LayerType: + class Meta: + name = "layer_type" + + name: str = field( + default="0", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + hidden: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + protected: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class LcFinalCs(Enum): + FINAL_CS = "final_cs" + + +class LcPileType(Enum): + LDCASE_PILE = "ldcase_pile" + + +class LcPtcType(Enum): + PTC_T0 = "ptc_t0" + PTC_T8 = "ptc_t8" + + +class Ldcomblimitstate(Enum): + ULTIMATE = "ultimate" + CHARACTERISTIC = "characteristic" + ACCIDENTAL = "accidental" + SEISMIC = "seismic" + QUASI_PERMANENT = "quasi-permanent" + FREQUENT = "frequent" + + +class Ldcombmethod(Enum): + VALUE = "" + FALSE = "false" + TRUE = "true" + EN_1990_6_4_3_6_10_A_B = "EN 1990 6.4.3(6.10.a, b)" + EN_1990_6_4_3_6_10 = "EN 1990 6.4.3(6.10)" + CUSTOM = "custom" + EN_1990_8_3_4_2_8_12 = "EN 1990 8.3.4.2 (8.12)" + EN_1990_8_3_4_2_8_13 = "EN 1990 8.3.4.2 (8.13)" + EN_1990_8_3_4_2_8_14 = "EN 1990 8.3.4.2 (8.14)" + + +class LdgroupDirectionType(Enum): + NON_DIRECTIONAL = "non_directional" + X = "x+" + X_1 = "x-" + Y = "y+" + Y_1 = "y-" + + +class LdgroupRelation(Enum): + VALUE = "" + ALTERNATIVE = "alternative" + SIMULTANEOUS = "simultaneous" + ENTIRE = "entire" + CUSTOM = "custom" + + +class LdgroupTmpeffect(Enum): + GENERAL = "general" + SNOW = "snow" + WIND = "wind" + + +class LdposPosType(Enum): + ON_CENTRIC_AXIS_SURFACE = "on_centric_axis/surface" + ON_ECCENTRIC_AXIS_SURFACE = "on_eccentric_axis/surface" + USER_DEFINED_ECCENTRICITY = "user_defined_eccentricity" + + +class LdposRefType(Enum): + REFERENCE_AXIS = "reference_axis" + CENTER_OF_GRAVITY = "center_of_gravity" + SHEAR_CENTER = "shear_center" + BOUNDING_RECTANGLE = "bounding_rectangle" + + +class LengthunitType(Enum): + MM = "mm" + CM = "cm" + DM = "dm" + M = "m" + INCH = "inch" + FEET = "feet" + YD = "yd" + + +@dataclass(kw_only=True) +class LevelPointType: + class Meta: + name = "level_point_type" + + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + z_top: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -100000.0, + "max_inclusive": 100000.0, + } + ) + z_bottom: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -100000.0, + "max_inclusive": 100000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LinetypeType: + class Meta: + name = "linetype_type" + + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + distances: list[float] = field( + default_factory=list, + metadata={ + "type": "Attribute", + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + "tokens": True, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LnfoundationRefType: + class Meta: + name = "lnfoundation_ref_type" + + ref_wall: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + ref_slab: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + ref_support: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class LoadDirType(Enum): + CONSTANT = "constant" + CHANGING = "changing" + + +class Loadcasedurationtype(Enum): + PERMANENT = "permanent" + LONG_TERM = "long-term" + MEDIUM_TERM = "medium-term" + SHORT_TERM = "short-term" + INSTANTANEOUS = "instantaneous" + + +class LoadcasetypeType(Enum): + STATIC = "static" + DEAD_LOAD = "dead_load" + SHRINKAGE = "shrinkage" + SEIS_MAX = "seis_max" + SEIS_SXP = "seis_sxp" + SEIS_SXM = "seis_sxm" + SEIS_SYP = "seis_syp" + SEIS_SYM = "seis_sym" + SOIL_DEAD_LOAD = "soil_dead_load" + PRESTRESSING = "prestressing" + FIRE = "fire" + DEVIATION = "deviation" + NOTIONAL = "notional" + PILE = "pile" + DIAPHRAGM = "diaphragm" + + +class Loadcombtype(Enum): + ULTIMATE_ORDINARY = "ultimate_ordinary" + ULTIMATE_ACCIDENTAL = "ultimate_accidental" + ULTIMATE_SEISMIC = "ultimate_seismic" + SERVICEABILITY_CHARACTERISTIC = "serviceability_characteristic" + SERVICEABILITY_QUASI_PERMANENT = "serviceability_quasi_permanent" + SERVICEABILITY_FREQUENT = "serviceability_frequent" + SERVICEABILITY = "serviceability" + + +class MethodAcc(Enum): + FACTORLESS = "factorless" + GAMMA_A = "Gamma_A" + + +class MethodIs(Enum): + GENERAL = "general" + HIGHLIGHTED = "highlighted" + SIMULTANEOUS = "simultaneous" + + +class MethodPer(Enum): + FACTORLESS = "factorless" + GAMMA_G_SUP = "Gamma_G_Sup" + GAMMA_G_INF = "Gamma_G_Inf" + KSI_GAMMA_G_SUP = "Ksi_*_Gamma_G_Sup" + GAMMA_G_SUP_ACCIDENTAL = "Gamma_G_Sup_Accidental" + GAMMA_G_INF_ACCIDENTAL = "Gamma_G_Inf_Accidental" + + +class MethodSeis(Enum): + FACTORLESS = "factorless" + GAMMA_S = "Gamma_S" + + +class MethodSs(Enum): + MANDATORY = "mandatory" + OPTIONAL = "optional" + DEACTIVATED = "deactivated" + + +class MethodStr(Enum): + FACTORLESS = "factorless" + GAMMA_P = "Gamma_P" + GAMMA_P_ACCIDENTAL = "Gamma_P_Accidental" + + +class MethodTmp(Enum): + FACTORLESS = "factorless" + GAMMA_Q = "Gamma_Q" + PSI0 = "Psi0" + PSI1 = "Psi1" + PSI2 = "Psi2" + GAMMA_Q_PSI0 = "Gamma_Q_*_Psi0" + GAMMA_Q_PSI1 = "Gamma_Q_*_Psi1" + GAMMA_Q_PSI2 = "Gamma_Q_*_Psi2" + + +class ModificationType(Enum): + ADDED = "added" + MODIFIED = "modified" + + +class MotionType(Enum): + MOTION = "motion" + ROTATION = "rotation" + + +class MrmType(Enum): + EN1992_1_1_5_3_2_2_3 = "EN1992-1-1 5.3.2.2(3)" + EN1992_1_1_5_3_2_2_4 = "EN1992-1-1 5.3.2.2(4)" + + +@dataclass(kw_only=True) +class NoshearAutoType: + class Meta: + name = "noshear_auto_type" + + connected_structure: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + inactive: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class OptionalMaterialAttribs: + class Meta: + name = "optional_material_attribs" + + mass: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + e_0: float = field( + metadata={ + "name": "E_0", + "type": "Attribute", + "required": True, + } + ) + e_1: float = field( + metadata={ + "name": "E_1", + "type": "Attribute", + "required": True, + } + ) + e_2: float = field( + metadata={ + "name": "E_2", + "type": "Attribute", + "required": True, + } + ) + nu_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + g_0: float = field( + metadata={ + "name": "G_0", + "type": "Attribute", + "required": True, + } + ) + g_1: float = field( + metadata={ + "name": "G_1", + "type": "Attribute", + "required": True, + } + ) + g_2: float = field( + metadata={ + "name": "G_2", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class Paneltype2(Enum): + CONCRETE = "concrete" + TIMBER = "timber" + + +@dataclass(kw_only=True) +class PathDivisionLengtType: + class Meta: + name = "path_division_lengt_type" + + value: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 1000.0, + } + ) + + +@dataclass(kw_only=True) +class PathDivisionNumberType: + class Meta: + name = "path_division_number_type" + + value: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 1000, + } + ) + + +@dataclass(kw_only=True) +class PcNonrigidConnectionType: + class Meta: + name = "pc_nonrigid_connection_type" + + predefined_rigidity: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + id: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + start_point_connected: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + end_point_connected: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class PePhaseType(Enum): + SIN = "sin" + COS = "cos" + + +@dataclass(kw_only=True) +class PheType: + class Meta: + name = "phe_type" + + offset: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + shrink: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class PiletypeType(Enum): + DRIVEN_DISPLACEMENT = "driven_displacement" + DRIVEN_JETTED = "driven_jetted" + BORED = "bored" + + +@dataclass(kw_only=True) +class Plasticity3DForceRecord: + class Meta: + name = "plasticity3d_force_record" + + force_x_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + force_x_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + force_y_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + force_y_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + force_z_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + force_z_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PlasticityType: + class Meta: + name = "plasticity_type" + + neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PlasticityType2: + class Meta: + name = "plasticity_type2" + + neg: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + pos: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PlasticityType3D: + class Meta: + name = "plasticity_type_3d" + + x_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + x_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + y_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + y_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + z_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + z_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PointType1D: + class Meta: + name = "point_type_1d" + + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class PointstyleType(Enum): + CROSS = "cross" + PLUS_SIGN = "plus_sign" + DIAMOND = "diamond" + SQUARE = "square" + DOT = "dot" + + +class PriorityType(Enum): + PRIMARY = "primary" + SECONDARY = "secondary" + + +class PshDiameterValue(Enum): + VALUE_0_025 = 0.025 + VALUE_0_032 = 0.032 + VALUE_0_040 = "0.040" + + +class PtcJackingSide(Enum): + START = "start" + END = "end" + START_THEN_END = "start_then_end" + END_THEN_START = "end_then_start" + + +@dataclass(kw_only=True) +class PtcLosses: + class Meta: + name = "ptc_losses" + + curvature_coefficient: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + wobble_coefficient: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + anchorage_set_slip: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100.0, + } + ) + elastic_shortening: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000.0, + } + ) + creep_stress: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000.0, + } + ) + shrinkage_stress: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000.0, + } + ) + relaxation_stress: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcManufacturingType: + class Meta: + name = "ptc_manufacturing_type" + + positions: list[float] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_inclusive": 0.0, + "max_inclusive": 1.0, + "tokens": True, + }, + ) + shift_x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + shift_z: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcShapeEnd: + class Meta: + name = "ptc_shape_end" + + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + tangent: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1.5533430342749532, + "max_inclusive": 1.5533430342749532, + } + ) + prior_inflection_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcShapeInner: + class Meta: + name = "ptc_shape_inner" + + pos: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 1.0, + } + ) + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + tangent: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1.5533430342749532, + "max_inclusive": 1.5533430342749532, + } + ) + prior_inflection_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcShapeStart: + class Meta: + name = "ptc_shape_start" + + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + tangent: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1.5533430342749532, + "max_inclusive": 1.5533430342749532, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtfoundationRefType: + class Meta: + name = "ptfoundation_ref_type" + + ref_slab: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + ref_support: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class Quadrant(Enum): + VALUE_0 = "0" + VALUE_90 = "90" + VALUE_180 = "180" + VALUE_270 = "270" + + +class RcsmType(Enum): + VECCHIO_1 = "Vecchio 1" + VECCHIO_2 = "Vecchio 2" + CERVERA = "Cervera" + MODEL_CODE_2010 = "Model Code 2010" + EN_1992_1_1_2023 = "EN 1992-1-1:2023" + + +class RecPosType(Enum): + TOP_LEFT = "top_left" + TOP_CENTER = "top_center" + TOP_RIGHT = "top_right" + CENTER_LEFT = "center_left" + CENTER_CENTER = "center_center" + CENTER_RIGHT = "center_right" + BOTTOM_LEFT = "bottom_left" + BOTTOM_CENTER = "bottom_center" + BOTTOM_RIGHT = "bottom_right" + + +@dataclass(kw_only=True) +class ReferenceType: + class Meta: + name = "reference_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ResultantType: + class Meta: + name = "resultant_type" + + val: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RlBaseType: + class Meta: + name = "rl_base_type" + + value: str = field( + default="", + metadata={ + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + + +class RoofType(Enum): + FLAT = "flat" + LEAN_TO = "lean-to" + RIDGE = "ridge" + + +class ScriptType(Enum): + DEFAULT = "default" + ARABIC = "Arabic" + BALTIC = "Baltic" + CE = "CE" + CYRILLIK = "Cyrillik" + GREEK = "Greek" + HEBREW = "Hebrew" + OEM_DOS = "OEM/DOS" + SYMBOL = "symbol" + THAI = "Thai" + TURKISH = "Turkish" + VIETNAMESE = "Vietnamese" + WESTERN = "Western" + + +class Sectiontype2(Enum): + CUSTOM = "custom" + I = "I" + U = "U" + RECT = "rect" + CIRCLE = "circle" + + +@dataclass(kw_only=True) +class SegmentpositionType: + class Meta: + name = "segmentposition_type" + + start: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + end: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class SeismicGroundType(Enum): + A = "A" + B = "B" + C = "C" + D = "D" + E = "E" + S1_S2_6_20M = "S1/S2_6-20m" + S1_S2_20_35M_A = "S1/S2_20-35mA" + S1_S2_35_60M_A = "S1/S2_35-60mA" + + +class SeismicStructureType(Enum): + BUILDING = "building" + BRIDGE = "bridge" + OTHERS = "others" + + +@dataclass(kw_only=True) +class ServiceClassFactors: + class Meta: + name = "service_class_factors" + + kdef: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + kmod_permanent: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + kmod_long_term: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + kmod_medium_term: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + kmod_short_term: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + kmod_instantaneous: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ServiceClassKdefs: + class Meta: + name = "service_class_kdefs" + + service_class_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + service_class_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + service_class_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class SfRcFace(Enum): + TOP = "top" + BOTTOM = "bottom" + + +@dataclass(kw_only=True) +class SfactorType: + class Meta: + name = "sfactor_type" + + sc: float = field( + metadata={ + "name": "Sc", + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + sf: float = field( + metadata={ + "name": "Sf", + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + sq: float = field( + metadata={ + "name": "Sq", + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SffoundationRefType: + class Meta: + name = "sffoundation_ref_type" + + ref_slab: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + ref_support: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ShearControlAutoType: + class Meta: + name = "shear_control_auto_type" + + connected_structure: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class ShellForceType(Enum): + INTEGRATION = "integration" + SMOOTHED = "smoothed" + MAX = "max" + + +class ShellModelType(Enum): + NONE = "none" + SIMPLE = "simple" + COMPLEX = "complex" + + +@dataclass(kw_only=True) +class SimpleConnectivityType: + class Meta: + name = "simple_connectivity_type" + + m_x: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + m_x_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + m_y: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + m_y_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + m_z: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + m_z_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + r_x: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + r_x_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + r_y: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + r_y_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + r_z: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + r_z_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + v_x: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + v_x_release: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SjBoltlineType: + class Meta: + name = "sj_boltline_type" + + distance: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[!-~]{1}[ -~]{0,49}", + } + ) + from_value: str = field( + metadata={ + "name": "from", + "type": "Attribute", + "required": True, + "pattern": r"[!-~]{1}[ -~]{0,49}", + } + ) + bolts: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[!-~]{1}[ -~]{0,49}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class SjComponentValues(Enum): + BUCKLING = "buckling" + ENDPLATE = "endplate" + HAUNCH_TOP = "haunch_top" + HAUNCH_BOTTOM = "haunch_bottom" + STIFFENER_TOP = "stiffener_top" + STIFFENER_BOTTOM = "stiffener_bottom" + STIFFENER_DIAGONAL = "stiffener_diagonal" + STIFFENER_GENERAL = "stiffener_general" + STIFFENER_TRIANGULAR = "stiffener_triangular" + FIN_PLATE = "fin_plate" + SPLICE_WEB = "splice_web" + SPLICE_FLANGE_BOTTOM = "splice_flange_bottom" + SPLICE_FLANGE_TOP = "splice_flange_top" + COVER_PLATE = "cover_plate" + HEEL = "heel" + GUSSET_PLATE = "gusset_plate" + CHAMPFER_PLATE = "champfer_plate" + BACKING_PLATE = "backing_plate" + SUPPORT_PLATE = "support_plate" + CONCRETE = "concrete" + NOTCH = "notch" + GAP = "gap" + ECCENTRICITY = "eccentricity" + CUT = "cut" + BOLTS = "bolts" + WELDS = "welds" + GEOMETRY = "geometry" + ENDPLATE_BOLTS = "endplate_bolts" + ENDPLATE_WELDS = "endplate_welds" + ENDPLATE_WELDS_AT_BEAM = "endplate_welds_at_beam" + ENDPLATE_WELDS_AT_COLUMN = "endplate_welds_at_column" + SPLICE_WEB_BOLTS = "splice_web_bolts" + FLANGE_BOLTS = "flange_bolts" + SPLICE_WEB_WELD = "splice_web_weld" + FLANGE_SPLICE_WELD = "flange_splice_weld" + FIN_BOLTS = "fin_bolts" + FIN_WELDS = "fin_welds" + HEEL_WELDS = "heel_welds" + COVER_WELDS = "cover_welds" + SUPPORT_PLATE_WELDS = "support_plate_welds" + STIFFENER_WELDS = "stiffener_welds" + CALCULATION = "calculation" + ANCHOR_GEOMETRY = "anchor_geometry" + ANCHOR_CALCULATIONS = "anchor_calculations" + CALCULATION_PARAMETERS = "calculation_parameters" + + +class SjConnectedBarType(Enum): + COLUMNS_END = "columns_end" + COLUMN = "column" + TOP_COLUMN = "top_column" + BOTTOM_COLUMN = "bottom_column" + BEAM = "beam" + BEAM_1 = "beam_1" + BEAM_2 = "beam_2" + BRACE_1 = "brace_1" + BRACE_2 = "brace_2" + CHORD = "chord" + JOINT = "joint" + FOUNDATION = "foundation" + ANCHOR_CONCRETE_INTERACTION = "anchor-concrete_interaction" + + +class SjDatatypeNames(Enum): + BUCKLING_LC_Y = "buckling_lc_y" + BUCKLING_LC_Z = "buckling_lc_z" + BUCKLING_X_Y = "buckling_x_y" + BUCKLING_X_Z = "buckling_x_z" + BRACE_CHORD_DISTANCE = "brace_chord_distance" + BRACE_CUT_TYPE = "brace_cut_type" + BRACE_CUT_DISTANCE = "brace_cut_distance" + BRACE_ECCENTRICITY = "brace_eccentricity" + BRACE_OVERLAPPED = "brace_overlapped" + BRACE_OVERLAPPED_WELD = "brace_overlapped_weld" + CALC_TENSION_BOLTROWS_FOR_SHEAR = "calc_tension_boltrows_for_shear" + FOUNDATION_BETA = "foundation_beta" + FOUNDATION_CFD = "foundation_cfd" + FOUNDATION_CMIN = "foundation_cmin" + FOUNDATION_CRACKED = "foundation_cracked" + FOUNDATION_EY = "foundation_ey" + FOUNDATION_EZ = "foundation_ez" + FOUNDATION_FAILURE_CHECK = "foundation_failure_check" + FOUNDATION_GAMMA_MC = "foundation_gamma_mc" + FOUNDATION_GAMMA_MP = "foundation_gamma_mp" + FOUNDATION_GAMMA_MSP = "foundation_gamma_msp" + FOUNDATION_H = "foundation_h" + FOUNDATION_HMIN = "foundation_hmin" + FOUNDATION_IGNORE_CONE_FAILURE = "foundation_ignore_cone_failure" + FOUNDATION_IGNORE_SPLIT_FAILURE = "foundation_ignore_split_failure" + FOUNDATION_KCR = "foundation_kcr" + FOUNDATION_KJ = "foundation_kj" + FOUNDATION_KUCR = "foundation_kucr" + FOUNDATION_L = "foundation_l" + FOUNDATION_MATERIAL = "foundation_material" + FOUNDATION_SMIN = "foundation_smin" + FOUNDATION_U = "foundation_u" + FOUNDATION_W = "foundation_w" + NOTCH_HB = "notch_hb" + NOTCH_HT = "notch_ht" + NOTCH_EB = "notch_eb" + NOTCH_ET = "notch_et" + GAP_SIZE = "gap_size" + PLATE_APPLY = "plate_apply" + PLATE_MATERIAL = "plate_material" + PLATE_TP = "plate_tp" + PLATE_BP = "plate_bp" + PLATE_HP = "plate_hp" + PLATE_LENGTH = "plate_length" + PLATE_AUX_PARAM1 = "plate_aux_param1" + PLATE_AUX_PARAM2 = "plate_aux_param2" + PLATE_AUX_PARAM3 = "plate_aux_param3" + PLATE_AUX_PARAM4 = "plate_aux_param4" + PLATE_AUX_PARAM5 = "plate_aux_param5" + PLATE_AUX_PARAM6 = "plate_aux_param6" + PLATE_AUX_PARAM7 = "plate_aux_param7" + PLATE_AUX_PARAM8 = "plate_aux_param8" + BOLT_TYPE = "bolt_type" + BOLT_QUALITY = "bolt_quality" + BOLT_PRESTRESSED = "bolt_prestressed" + BOLT_FLIP = "bolt_flip" + BOLT_WASHER_AT_NUT = "bolt_washer_at_nut" + BOLT_WASHER_AT_HEAD = "bolt_washer_at_head" + ANCHOR_DIAMETER = "anchor_diameter" + ANCHOR_QUALITY = "anchor_quality" + ANCHOR_SURFACE = "anchor_surface" + ANCHOR_M = "anchor_m" + ANCHOR_TB = "anchor_tb" + ANCHOR_USE_MAX_OF_FTRD = "anchor_use_max_of_ftrd" + ANCHOR_FTRD = "anchor_ftrd" + ANCHOR_TYPE = "anchor_type" + ANCHOR_SHAPE = "anchor_shape" + ANCHOR_H = "anchor_h" + ANCHOR_LHORIZ = "anchor_lhoriz" + ANCHOR_RBEND = "anchor_rbend" + ANCHOR_CHECKADH = "anchor_checkadh" + ANCHOR_DH = "anchor_dh" + ANCHOR_CFD = "anchor_cfd" + ANCHOR_SUITABILITY_TEST = "anchor_suitability_test" + BOLT_GROUP_NCOL = "bolt_group_ncol" + BOLT_GROUP_NROW = "bolt_group_nrow" + BOLT_GROUP_C1 = "bolt_group_c1" + BOLT_GROUP_C2 = "bolt_group_c2" + BOLT_GROUP_C3 = "bolt_group_c3" + BOLT_GROUP_C4 = "bolt_group_c4" + BOLT_GROUP_E0 = "bolt_group_e0" + BOLT_GROUP_E = "bolt_group_e" + BOLT_GROUP_E1 = "bolt_group_e1" + BOLT_GROUP_E2 = "bolt_group_e2" + BOLT_GROUP_ROWS = "bolt_group_rows" + WELD_TYPE = "weld_type" + WELD_S = "weld_s" + WELD_A = "weld_a" + WELD_AFHT = "weld_afht" + WELD_AWHT = "weld_awht" + WELD_AF1 = "weld_af1" + WELD_AFT = "weld_aft" + WELD_AW_L = "weld_aw(l)" + WELD_AWR = "weld_awr" + WELD_AF_B = "weld_af(b)" + WELD_AF4 = "weld_af4" + WELD_AWHB = "weld_awhb" + WELD_AFHB = "weld_afhb" + WELD_AWH_TOP = "weld_awh_top" + WELD_AWH_BOTTOM = "weld_awh_bottom" + WELD_AF1_BACK = "weld_af1_back" + WELD_AFT_BACK = "weld_aft_back" + WELD_AFW_BACK = "weld_afw_back" + WELD_AFB_BACK = "weld_afb_back" + WELD_AF4_BACK = "weld_af4_back" + WELD_LENGTH = "weld_length" + WELD_EDGES = "weld_edges" + WELD_BUTTERING = "weld_buttering" + WELD_PREHEATING = "weld_preheating" + WELD_FILLER_MATERIAL = "weld_filler_material" + WELD_FILLER_MATERIAL_S = "weld_filler_material_s" + WELD_FILLER_MATERIAL_FHT = "weld_filler_material_fht" + WELD_FILLER_MATERIAL_WHT = "weld_filler_material_wht" + WELD_FILLER_MATERIAL_F1 = "weld_filler_material_f1" + WELD_FILLER_MATERIAL_FT = "weld_filler_material_ft" + WELD_FILLER_MATERIAL_W_L = "weld_filler_material_w(l)" + WELD_FILLER_MATERIAL_WR = "weld_filler_material_wr" + WELD_FILLER_MATERIAL_F_B = "weld_filler_material_f(b)" + WELD_FILLER_MATERIAL_F4 = "weld_filler_material_f4" + WELD_FILLER_MATERIAL_WHB = "weld_filler_material_whb" + WELD_FILLER_MATERIAL_FHB = "weld_filler_material_fhb" + WELD_TOP_FILLER_MATERIAL_WH = "weld_top_filler_material_wh" + WELD_BOTTOM_FILLER_MATERIAL_WH = "weld_bottom_filler_material_wh" + WELD_FILLER_MATERIAL_F1_BACK = "weld_filler_material_f1_back" + WELD_FILLER_MATERIAL_FT_BACK = "weld_filler_material_ft_back" + WELD_FILLER_MATERIAL_FW_BACK = "weld_filler_material_fw_back" + WELD_FILLER_MATERIAL_FB_BACK = "weld_filler_material_fb_back" + WELD_FILLER_MATERIAL_F4_BACK = "weld_filler_material_f4_back" + + +@dataclass(kw_only=True) +class SjForceType: + class Meta: + name = "sj_force_type" + + n: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + }, + ) + t_y: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + }, + ) + t_z: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + }, + ) + m_x: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + }, + ) + m_y: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + }, + ) + m_z: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SlabStiffnessRecord: + class Meta: + name = "slab_stiffness_record" + + bending_1_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + bending_2_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + bending_1_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + membran_1_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + membran_2_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + membran_1_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + shear_1_3: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + shear_2_3: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class SlabfoundationsystemsType(Enum): + SURFACE_SUPPORT_GROUP = "surface_support_group" + FROM_SOIL = "from_soil" + + +class Slabtype2(Enum): + PLATE = "plate" + WALL = "wall" + + +@dataclass(kw_only=True) +class SpecLoadCaseItem: + class Meta: + name = "spec_load_case_item" + + gamma: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SpectraRecordType: + class Meta: + name = "spectra_record_type" + + t: float = field( + metadata={ + "name": "T", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + sd: float = field( + metadata={ + "name": "Sd", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class SrfTreatmentType(Enum): + MANUAL = "manual" + AUTO_BASE_NET = "auto_base_net" + AUTO_ADDITIONAL = "auto_additional" + AUTO_CRACK_WIDTH = "auto_crack_width" + + +class SsrfTreatment(Enum): + MANUAL = "manual" + AUTO = "auto" + + +@dataclass(kw_only=True) +class StandardSpectraType: + class Meta: + name = "standard_spectra_type" + + ag: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + td: float = field( + metadata={ + "name": "TD", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + q: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + type_value: int = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 2, + } + ) + s: float = field( + metadata={ + "name": "S", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + tb: float = field( + metadata={ + "name": "TB", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + tc: float = field( + metadata={ + "name": "TC", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + beta: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class Standardtype(Enum): + EC = "EC" + EC_G2 = "EC_G2" + GENERAL = "general" + N_A = "n/a" + + +@dataclass(kw_only=True) +class StartEndType: + class Meta: + name = "start_end_type" + + start: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + } + ) + end: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class Steelmadetype(Enum): + ROLLED = "rolled" + COLD_WORKED = "cold_worked" + WELDED = "welded" + + +@dataclass(kw_only=True) +class StiffnessMatrix2Type: + class Meta: + name = "stiffness_matrix_2_type" + + xz: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + yz: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StiffnessMatrix4Type: + class Meta: + name = "stiffness_matrix_4_type" + + xx: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + xy: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + yy: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + gxy: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class StiffnessMaxReached(Enum): + VALUE_6_E66 = 6e66 + + +@dataclass(kw_only=True) +class StratumType: + class Meta: + name = "stratum_type" + + material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + colour: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9A-Fa-f]{6}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class StrengthType(Enum): + BRICK_ONLY = "brick_only" + MASONRY = "masonry" + + +class StudrailPatterns(Enum): + RADIAL = "radial" + ORTHOGONAL = "orthogonal" + SEMI_ORTHOGONAL = "semi-orthogonal" + + +@dataclass(kw_only=True) +class TdaCreepComplianceGeneral: + class Meta: + name = "tda_creep_compliance_general" + + record: list[TdaCreepComplianceGeneral.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + t: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000.0, + } + ) + j: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1.0, + "max_inclusive": 100000.0, + } + ) + + +@dataclass(kw_only=True) +class TdaCreepProny: + class Meta: + name = "tda_creep_prony" + + record: list[TdaCreepProny.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + j: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + } + ) + tau: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -100000000.0, + "max_inclusive": 100000000.0, + } + ) + + +@dataclass(kw_only=True) +class ThDiagramRecord: + class Meta: + name = "th_diagram_record" + + t: float = field( + metadata={ + "name": "T", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + } + ) + value: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ThreeGuidListType: + class Meta: + name = "three_guid_list_type" + + first: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + second: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + third: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TimberFactorsType: + class Meta: + name = "timber_factors_type" + + gamma_m_u: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + gamma_m_as: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + kdef_u: float = field( + metadata={ + "name": "kdef_U", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + kdef_sq: float = field( + metadata={ + "name": "kdef_Sq", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + kdef_sf: float = field( + metadata={ + "name": "kdef_Sf", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + kdef_sc: float = field( + metadata={ + "name": "kdef_Sc", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + service_class: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0, + "max_inclusive": 2, + } + ) + system_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TrussLimitType: + class Meta: + name = "truss_limit_type" + + value: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + + +@dataclass(kw_only=True) +class TsIndexedVertexType: + class Meta: + name = "ts_indexed_vertex_type" + + index: int = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class TsType(Enum): + HINTON = "Hinton" + VECCHIO = "Vecchio" + LINEAR = "Linear" + CERVERA = "Cervera" + + +@dataclass(kw_only=True) +class TwoGuidListType: + class Meta: + name = "two_guid_list_type" + + first: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + second: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class UserfilterType: + class Meta: + name = "userfilter_type" + + members: list[str] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "tokens": True, + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{0,15}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class ValignType(Enum): + ABOVE = "above" + OUTSIDE = "outside" + + +class VerAlign(Enum): + TOP = "top" + CENTER = "center" + BOTTOM = "bottom" + + +class Viewtype2(Enum): + VALUE_2D = "2d" + VALUE_3D = "3d" + STOREY = "storey" + + +class Visiblelinetype(Enum): + LINE = "line" + POLYLINE = "polyline" + SPLINE = "spline" + + +@dataclass(kw_only=True) +class WaterLevelType: + class Meta: + name = "water_level_type" + + colour: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9A-Fa-f]{6}", + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,256}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +class WireProfileType(Enum): + SMOOTH = "smooth" + RIBBED = "ribbed" + + +@dataclass(kw_only=True) +class WlNtType: + class Meta: + name = "wl_nt_type" + + mult_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WlStType: + class Meta: + name = "wl_st_type" + + suction_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + turbulence: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WlTType: + class Meta: + name = "wl_t_type" + + mult_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + turbulence: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EcG2HorizontalSpectraType: + class Meta: + name = "EC_G2_horizontal_spectra_type" + + amplification_factors: ( + None | EcG2HorizontalSpectraType.AmplificationFactors + ) = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + site_category: None | EcG2HorizontalSpectraType.SiteCategory = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + salpha_rp: float = field( + metadata={ + "name": "SalphaRP", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + sbeta_rp: float = field( + metadata={ + "name": "SbetaRP", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + ft: float = field( + metadata={ + "name": "FT", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + fa: float = field( + metadata={ + "name": "FA", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + chi: float = field( + metadata={ + "name": "Chi", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + ta: float = field( + metadata={ + "name": "TA", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + td: float = field( + metadata={ + "name": "TD", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + beta_h: float = field( + metadata={ + "name": "BetaH", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class AmplificationFactors: + falpha: float = field( + metadata={ + "name": "Falpha", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + fbeta: float = field( + metadata={ + "name": "Fbeta", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class SiteCategory: + type_value: EcG2SeismicGroundType = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EcG2UniqueSpectraType: + class Meta: + name = "EC_G2_unique_spectra_type" + + record: list[EcG2SpectraRecordType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 127, + }, + ) + start_sr: float = field( + metadata={ + "name": "start_Sr", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 20.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class AncType: + class Meta: + name = "anc_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + r: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + calculated_automatically: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + length: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 3.403e35, + } + ) + automatically_handled: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ArrowType: + class Meta: + name = "arrow_type" + + type_value: ArrowtypeType = field( + default=ArrowtypeType.TICK, + metadata={ + "name": "type", + "type": "Attribute", + }, + ) + size: float = field( + default=0.005, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + penwidth: float = field( + default=0.00018, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BarEndLibType: + class Meta: + name = "bar_end_lib_type" + + connectivity: SimpleConnectivityType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BarStiffnessFactors: + class Meta: + name = "bar_stiffness_factors" + + factors: list[BarStiffnessFactorRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + + +@dataclass(kw_only=True) +class BoltDataType: + class Meta: + name = "bolt_data_type" + + bolt_length: list[BoltLengthType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 100, + }, + ) + family: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + d: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + pitch: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + stress_area: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + } + ) + bolt_b: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_c: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_ds: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_da: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_dw: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_e: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_s: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + bolt_r: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + nut_m: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + nut_e: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + nut_s: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + washer_thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BoreholeType: + class Meta: + name = "borehole_type" + + whole_level_data: None | AllLevelsType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + final_ground_level: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000000.0, + "max_inclusive": 10000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CltDatatype: + class Meta: + name = "clt_datatype" + + default_kdef: ServiceClassKdefs = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + layer: list[CltLayer] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + manufacturer: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + r33: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 1.0, + } + ) + r66: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 1.0, + } + ) + r77: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 1.0, + } + ) + r88: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ColumnCorbelType: + class Meta: + name = "column_corbel_type" + + connectable_parts: None | ThreeGuidListType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + connectivity: ConnectivityType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + base_column: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + complex_material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + made: Steelmadetype = field( + default=Steelmadetype.ROLLED, + metadata={ + "type": "Attribute", + }, + ) + complex_section: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + pos: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + alpha: Quadrant = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + d: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + l: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + e: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -10.0, + "max_inclusive": 10.0, + } + ) + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -10.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ComplexCompositeType: + class Meta: + name = "complex_composite_type" + + composite_section: list[CompositeSectionType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ComplexMaterialType: + class Meta: + name = "complex_material_type" + + material: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CompositePropType: + class Meta: + name = "composite_prop_type" + + name: CompositePropName = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + value: str = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ConcretePlAttribs: + class Meta: + name = "concrete_pl_attribs" + + elasto_plastic_behaviour: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + plastic_hardening: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + concrete_crushing: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + concrete_crushing_option: CcType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + tension_strength: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + tension_stiffening: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + tension_stiffening_option: TsType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + tension_stiffening_param: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + reduced_compression_strength: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + reduced_compression_strength_option: RcsmType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + reduced_compression_strength_param: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 500.0, + } + ) + reduced_transverse_shear_stiffnes: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + ultimate_strain: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + reduced_yield_stress: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + reduced_yield_stress_param: float = field( + default=0.05, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + hardening_in_rebars: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + + +@dataclass(kw_only=True) +class ConnSideType: + class Meta: + name = "conn_side_type" + + non_rigid_connection: None | PcNonrigidConnectionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CoverlistType: + class Meta: + name = "coverlist_type" + + cover: list[CoverlistType.Cover] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 5, + "max_occurs": 6, + }, + ) + + @dataclass(kw_only=True) + class Cover: + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CsLcType: + class Meta: + name = "cs_lc_type" + + s_factors: None | SfactorType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + case: str | LcPtcType | LcPileType = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + partitioning: CsPartType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class Ec040StandardSpectraType: + class Meta: + name = "ec040_standard_spectra_type" + + ag: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + td: float = field( + metadata={ + "name": "TD", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + q: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + tc: Ec40TcType = field( + metadata={ + "name": "TC", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EccValueType: + class Meta: + name = "ecc_value_type" + + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + reference_point: BeamposType = field( + default=BeamposType.CENTER_OF_GRAVITY, + metadata={ + "type": "Attribute", + }, + ) + rectangle_position: RecPosType = field( + default=RecPosType.CENTER_CENTER, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EfDiagramType: + class Meta: + name = "ef_diagram_type" + + record: list[ThDiagramRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + direction: Direction2DType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + start_value: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EfLcaseRecord: + class Meta: + name = "ef_lcase_record" + + factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + diagram: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class FillType: + class Meta: + name = "fill_type" + + mode: FillmodeType = field( + default=FillmodeType.AUTO_FILL, + metadata={ + "type": "Attribute", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class FontType: + class Meta: + name = "font_type" + + font: str = field( + default="Tahoma", + metadata={ + "type": "Attribute", + }, + ) + script: ScriptType = field( + default=ScriptType.WESTERN, + metadata={ + "type": "Attribute", + }, + ) + size: float = field( + default=0.004, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1e23, + }, + ) + width: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + slant: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -80.0, + "max_inclusive": 80.0, + }, + ) + bold: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + italic: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + underline: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + strikethrough: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GaCombinationType: + class Meta: + name = "ga_combination_type" + + direction_x: GaDirectionRecord = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction_y: GaDirectionRecord = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction_z: GaDirectionRecord = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + dt: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GaDiagramType: + class Meta: + name = "ga_diagram_type" + + record: list[ThDiagramRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + direction: Direction2DType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GlcDatatype: + class Meta: + name = "glc_datatype" + + layer: list[GlcLayer] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + group: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LdgroupRelationRecordType: + class Meta: + name = "ldgroup_relation_record_type" + + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,79}", + } + ) + direction: LdgroupDirectionType = field( + default=LdgroupDirectionType.NON_DIRECTIONAL, + metadata={ + "type": "Attribute", + }, + ) + psi_override: list[float] = field( + default_factory=list, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 100.0, + "tokens": True, + }, + ) + factors: list[float] = field( + default_factory=list, + metadata={ + "type": "Attribute", + "min_inclusive": -1e20, + "max_inclusive": 1e20, + "tokens": True, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LdgrpRecType: + class Meta: + name = "ldgrp_rec_type" + + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + limit_state: Ldcomblimitstate = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LdposType: + class Meta: + name = "ldpos_type" + + position: LdposPosType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + shift_y: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + }, + ) + shift_z: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + }, + ) + reference_point: LdposRefType = field( + default=LdposRefType.CENTER_OF_GRAVITY, + metadata={ + "type": "Attribute", + }, + ) + rectangle_position: RecPosType = field( + default=RecPosType.CENTER_CENTER, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LoadCaseType: + class Meta: + name = "load_case_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,80}", + } + ) + type_value: LoadcasetypeType = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + duration_class: Loadcasedurationtype = field( + default=Loadcasedurationtype.PERMANENT, + metadata={ + "type": "Attribute", + }, + ) + position: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{1,79}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LoadSubgroup: + class Meta: + name = "load_subgroup" + + load_case: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t0: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t8: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ldcase_pile: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + final_cs: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,79}", + } + ) + master: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class MassConversionType: + class Meta: + name = "mass_conversion_type" + + conversion: list[MassConversionType.Conversion] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Conversion: + factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + load_case: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PeCaseType: + class Meta: + name = "pe_case_type" + + factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + phase: PePhaseType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + load_case: str | LcPtcType | LcPileType = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class Plasticity3DRecord(Plasticity3DForceRecord): + class Meta: + name = "plasticity3d_record" + + moment_x_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + moment_x_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + moment_y_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + moment_y_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + moment_z_neg: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + moment_z_pos: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + + +@dataclass(kw_only=True) +class PointType2D(PointType1D): + class Meta: + name = "point_type_2d" + + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class PshData: + class Meta: + name = "psh_data" + + diameter: PshDiameterValue = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + cd: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.02, + "max_inclusive": 10.0, + } + ) + n_x_dir: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 2, + "max_inclusive": 50, + } + ) + n_y_dir: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 2, + "max_inclusive": 50, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcShapeType: + class Meta: + name = "ptc_shape_type" + + start_point: PtcShapeStart = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + intermediate_point: list[PtcShapeInner] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end_point: PtcShapeEnd = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + top: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -10.0, + "max_inclusive": 10.0, + } + ) + bottom: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -10.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcStrandLibType: + class Meta: + name = "ptc_strand_lib_type" + + ptc_strand_data: PtcStrandLibType.PtcStrandData = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class PtcStrandData: + f_pk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1.0, + "max_inclusive": 10000.0, + } + ) + f_p01k: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 1.0, + "max_inclusive": 10000.0, + }, + ) + a_p: float = field( + metadata={ + "name": "A_p", + "type": "Attribute", + "required": True, + "min_inclusive": 1.0, + "max_inclusive": 10000.0, + } + ) + e_p: float = field( + metadata={ + "name": "E_p", + "type": "Attribute", + "required": True, + "min_inclusive": 1.0, + "max_inclusive": 10000000.0, + } + ) + density: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + } + ) + relaxation_class: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 3, + } + ) + rho_1000: float = field( + metadata={ + "name": "Rho_1000", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ReferencelistType: + class Meta: + name = "referencelist_type" + + ref: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RfWireType: + class Meta: + name = "rf_wire_type" + + diameter: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 0.1, + } + ) + reinforcing_material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + profile: WireProfileType = field( + default=WireProfileType.RIBBED, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RfmaterialType: + class Meta: + name = "rfmaterial_type" + + reinforcing_steel: RfmaterialType.ReinforcingSteel = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r".{0,15}", + } + ) + standard: Standardtype = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + country: Eurocodetype = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class ReinforcingSteel: + fyk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + } + ) + es: float = field( + metadata={ + "name": "Es", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + } + ) + epsilon_uk: float = field( + metadata={ + "name": "Epsilon_uk", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + } + ) + epsilon_ud: float = field( + metadata={ + "name": "Epsilon_ud", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10000000000.0, + } + ) + k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1.0, + "max_inclusive": 10000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SeismicLoadGroup: + class Meta: + name = "seismic_load_group" + + custom_table: None | SeismicLoadGroup.CustomTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_case: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + safety_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + user_defined_cases: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class CustomTable: + record: list[SeismicLoadGroup.CustomTable.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + s: MethodSs = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + data: MethodSeis | float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": -100000000000000.0, + "max_exclusive": 100000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SimpleTrussCapacityType: + class Meta: + name = "simple_truss_capacity_type" + + limit_force: TrussLimitType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class Sj1BarConnectionType: + class Meta: + name = "sj_1bar_connection_type" + + bar1: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load_combination: list[Sj1BarConnectionType.LoadCombination] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class LoadCombination: + bar1_forces: SjForceType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + value_2nd_order_calculation: bool = field( + default=False, + metadata={ + "name": "_2nd_order_calculation", + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class Sj2BarsConnectionType: + class Meta: + name = "sj_2bars_connection_type" + + bar1: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bar2: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load_combination: list[Sj2BarsConnectionType.LoadCombination] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class LoadCombination: + bar1_forces: SjForceType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bar2_forces: SjForceType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + value_2nd_order_calculation: bool = field( + default=False, + metadata={ + "name": "_2nd_order_calculation", + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class Sj3BarsConnectionType: + class Meta: + name = "sj_3bars_connection_type" + + bar1: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bar2: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bar3: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load_combination: list[Sj3BarsConnectionType.LoadCombination] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class LoadCombination: + bar1_forces: SjForceType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bar2_forces: SjForceType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bar3_forces: SjForceType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + value_2nd_order_calculation: bool = field( + default=False, + metadata={ + "name": "_2nd_order_calculation", + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SjDataType: + class Meta: + name = "sj_data_type" + + type_value: SjDatatypeNames = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + value: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[!-~]{1}[ -~]{0,49}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SlabStiffnessFactors: + class Meta: + name = "slab_stiffness_factors" + + factors: list[SlabStiffnessRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + + +@dataclass(kw_only=True) +class SpecCsLoadCaseItem: + class Meta: + name = "spec_cs_load_case_item" + + type_value: LcFinalCs | str = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + "pattern": r"cs.[1-9]{1}[0-9]{0,4}", + } + ) + gamma: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StbarHaunchType: + class Meta: + name = "stbar_haunch_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + base_bar: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + at_start: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + at_top: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + d: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + l: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + h: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + tw: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + tf: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0001, + "max_inclusive": 10.0, + } + ) + bf: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StbarSiffenerType: + class Meta: + name = "stbar_siffener_type" + + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + base_bar: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + pos: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SteelPlData: + class Meta: + name = "steel_pl_data" + + elasto_plastic_behaviour_u: bool = field( + metadata={ + "name": "elasto_plastic_behaviour_U", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_u: bool = field( + metadata={ + "name": "elasto_plastic_strain_limit_U", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_option_u: float = field( + metadata={ + "name": "elasto_plastic_strain_limit_option_U", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 50.0, + } + ) + elasto_plastic_transverse_shear_u: bool = field( + default=False, + metadata={ + "name": "elasto_plastic_transverse_shear_U", + "type": "Attribute", + }, + ) + elasto_plastic_transverse_shear_option_u: EptsoType = field( + default=EptsoType.PARABOLIC, + metadata={ + "name": "elasto_plastic_transverse_shear_option_U", + "type": "Attribute", + }, + ) + elasto_plastic_behaviour_sq: bool = field( + metadata={ + "name": "elasto_plastic_behaviour_Sq", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_sq: bool = field( + metadata={ + "name": "elasto_plastic_strain_limit_Sq", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_option_sq: float = field( + metadata={ + "name": "elasto_plastic_strain_limit_option_Sq", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 50.0, + } + ) + elasto_plastic_transverse_shear_sq: bool = field( + default=False, + metadata={ + "name": "elasto_plastic_transverse_shear_Sq", + "type": "Attribute", + }, + ) + elasto_plastic_transverse_shear_option_sq: EptsoType = field( + default=EptsoType.PARABOLIC, + metadata={ + "name": "elasto_plastic_transverse_shear_option_Sq", + "type": "Attribute", + }, + ) + elasto_plastic_behaviour_sf: bool = field( + metadata={ + "name": "elasto_plastic_behaviour_Sf", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_sf: bool = field( + metadata={ + "name": "elasto_plastic_strain_limit_Sf", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_option_sf: float = field( + metadata={ + "name": "elasto_plastic_strain_limit_option_Sf", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 50.0, + } + ) + elasto_plastic_transverse_shear_sf: bool = field( + default=False, + metadata={ + "name": "elasto_plastic_transverse_shear_Sf", + "type": "Attribute", + }, + ) + elasto_plastic_transverse_shear_option_sf: EptsoType = field( + default=EptsoType.PARABOLIC, + metadata={ + "name": "elasto_plastic_transverse_shear_option_Sf", + "type": "Attribute", + }, + ) + elasto_plastic_behaviour_sc: bool = field( + metadata={ + "name": "elasto_plastic_behaviour_Sc", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_sc: bool = field( + metadata={ + "name": "elasto_plastic_strain_limit_Sc", + "type": "Attribute", + "required": True, + } + ) + elasto_plastic_strain_limit_option_sc: float = field( + metadata={ + "name": "elasto_plastic_strain_limit_option_Sc", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 50.0, + } + ) + elasto_plastic_transverse_shear_sc: bool = field( + default=False, + metadata={ + "name": "elasto_plastic_transverse_shear_Sc", + "type": "Attribute", + }, + ) + elasto_plastic_transverse_shear_option_sc: EptsoType = field( + default=EptsoType.PARABOLIC, + metadata={ + "name": "elasto_plastic_transverse_shear_option_Sc", + "type": "Attribute", + }, + ) + + +@dataclass(kw_only=True) +class StiffBaseType: + class Meta: + name = "stiff_base_type" + + neg: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + pos: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StiffnessMotionRecord: + class Meta: + name = "stiffness_motion_record" + + kx_neg: float | StiffnessMaxReached = field( + metadata={ + "name": "Kx_neg", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + kx_pos: float | StiffnessMaxReached = field( + metadata={ + "name": "Kx_pos", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + ky_neg: float | StiffnessMaxReached = field( + metadata={ + "name": "Ky_neg", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + ky_pos: float | StiffnessMaxReached = field( + metadata={ + "name": "Ky_pos", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + kz_neg: float | StiffnessMaxReached = field( + metadata={ + "name": "Kz_neg", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + kz_pos: float | StiffnessMaxReached = field( + metadata={ + "name": "Kz_pos", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StiffnessType: + class Meta: + name = "stiffness_type" + + x_neg: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + x_pos: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + y_neg: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + y_pos: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + z_neg: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + z_pos: float | StiffnessMaxReached = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TdaCreep1: + class Meta: + name = "tda_creep1" + + creep_compliance_prony_series: None | TdaCreepProny = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + creep_compliance_by_data_set: None | TdaCreepComplianceGeneral = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class TdaCreepEn1992: + class Meta: + name = "tda_creep_EN1992" + + t0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + rh: float = field( + metadata={ + "name": "RH", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + calculate_ac_u: bool = field( + metadata={ + "name": "calculate_Ac_u", + "type": "Attribute", + "required": True, + } + ) + ac: float = field( + metadata={ + "name": "Ac", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.798e38, + } + ) + u: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.798e38, + } + ) + sigma_relevant: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + cement_type: CementType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + increase_final_value: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class TdaElasticity: + class Meta: + name = "tda_elasticity" + + general: None | TdaElasticity.General = field( + default=None, + metadata={ + "name": "General", + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + en_1992_1_1_2004: None | TdaElasticity.En1992112004 = field( + default=None, + metadata={ + "name": "EN_1992-1-1_2004", + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class General: + record: list[TdaElasticity.General.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + t: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + e: float = field( + metadata={ + "name": "E", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + + @dataclass(kw_only=True) + class En1992112004: + cement_type: CementType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + t0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + + +@dataclass(kw_only=True) +class TdaShrinkage: + class Meta: + name = "tda_shrinkage" + + general: None | TdaShrinkage.General = field( + default=None, + metadata={ + "name": "General", + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + en_1992_1_1_2004: None | TdaShrinkage.En1992112004 = field( + default=None, + metadata={ + "name": "EN_1992-1-1_2004", + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class General: + record: list[TdaShrinkage.General.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class Record: + t: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + strain: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + + @dataclass(kw_only=True) + class En1992112004: + ts: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + } + ) + rh: float = field( + metadata={ + "name": "RH", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + calculate_ac_u: bool = field( + metadata={ + "name": "calculate_Ac_u", + "type": "Attribute", + "required": True, + } + ) + ac: float = field( + metadata={ + "name": "Ac", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.798e38, + } + ) + u: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.798e38, + } + ) + cement_type: CementType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class TpDatatype: + class Meta: + name = "tp_datatype" + + stiffness: TpDatatype.Stiffness = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + strength: TpDatatype.Strength = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + service_class_0_factors: ServiceClassFactors = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + service_class_1_factors: ServiceClassFactors = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + service_class_2_factors: ServiceClassFactors = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + description: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,40}", + } + ) + thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 100.0, + } + ) + gamma_m_u: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + gamma_m_as: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + service_class: None | int = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0, + "max_inclusive": 2, + }, + ) + system_factor: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Stiffness: + em_k0: float = field( + metadata={ + "name": "Em_k0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + em_k90: float = field( + metadata={ + "name": "Em_k90", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + et_k0: float = field( + metadata={ + "name": "Et_k0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + et_k90: float = field( + metadata={ + "name": "Et_k90", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + ec_k0: float = field( + metadata={ + "name": "Ec_k0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + ec_k90: float = field( + metadata={ + "name": "Ec_k90", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + gr_k0: float = field( + metadata={ + "name": "Gr_k0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + gr_k90: float = field( + metadata={ + "name": "Gr_k90", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + gv_k: float = field( + metadata={ + "name": "Gv_k", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + rho: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Strength: + fm_k0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + fm_k90: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + ft_k0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + ft_k90: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + fc_k0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + fc_k90: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + fr_k0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + fr_k90: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + fv_k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TrussCapacityType: + class Meta: + name = "truss_capacity_type" + + limit_force: list[TrussLimitType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 9, + "max_occurs": 9, + }, + ) + + +@dataclass(kw_only=True) +class TsContourlineType: + class Meta: + name = "ts_contourline_type" + + vertex: list[TsIndexedVertexType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 3, + "max_occurs": 32767, + }, + ) + + +@dataclass(kw_only=True) +class TsVisibleEdgeType: + class Meta: + name = "ts_visible_edge_type" + + vertex: list[TsIndexedVertexType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 32767, + }, + ) + linetype: Visiblelinetype = field( + default=Visiblelinetype.LINE, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class UniqueSpectraType: + class Meta: + name = "unique_spectra_type" + + record: list[SpectraRecordType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 127, + }, + ) + start_sd: float = field( + metadata={ + "name": "start_Sd", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EcG2SeismicLoadType: + class Meta: + name = "EC_G2_seismic_load_type" + + standard_spectrum: None | EcG2SeismicLoadType.StandardSpectrum = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + unique_spectrum: None | EcG2SeismicLoadType.UniqueSpectrum = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bridge_pier: list[BridgePierType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + structure_type: SeismicStructureType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + xi: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + q_r: float = field( + metadata={ + "name": "qR", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + q_s: float = field( + metadata={ + "name": "qS", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + q_d: float = field( + metadata={ + "name": "qD", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + qv: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + qdisp: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class StandardSpectrum: + horizontal: EcG2HorizontalSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + vertical: EcG2VerticalSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class UniqueSpectrum: + horizontal: EcG2UniqueSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + vertical: EcG2UniqueSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class AxisLabelProps: + class Meta: + name = "axis_label_props" + + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colour: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9A-Fa-f]{6}", + } + ) + penwidth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BoltLibType: + class Meta: + name = "bolt_lib_type" + + bolt_data: BoltDataType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CltpanelLibType: + class Meta: + name = "cltpanel_lib_type" + + clt_panel_data: CltDatatype = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CompositeData: + class Meta: + name = "composite_data" + + part: list[CompositePartType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 8, + }, + ) + property: list[CompositePropType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 11, + }, + ) + type_value: CompositeType = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ConcretePlData: + class Meta: + name = "concrete_pl_data" + + u: ConcretePlAttribs = field( + metadata={ + "name": "U", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + sq: ConcretePlAttribs = field( + metadata={ + "name": "Sq", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + sf: ConcretePlAttribs = field( + metadata={ + "name": "Sf", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + sc: ConcretePlAttribs = field( + metadata={ + "name": "Sc", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class CsStageType: + class Meta: + name = "cs_stage_type" + + activated_load_case: list[CsLcType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + description: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,79}", + } + ) + initial_stress_state: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + day: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e20, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EccentricityType: + class Meta: + name = "eccentricity_type" + + analytical: list[EccValueType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + physical: list[EccValueType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + use_default_physical_alignment: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EfCombinationType: + class Meta: + name = "ef_combination_type" + + record: list[EfLcaseRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + dt: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GlcpanelLibType: + class Meta: + name = "glcpanel_lib_type" + + glc_panel_data: GlcDatatype = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GroundAccelerationType: + class Meta: + name = "ground_acceleration_type" + + diagram: list[GaDiagramType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + combination: list[GaCombinationType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class HorizontalPolygon2D: + class Meta: + name = "horizontal_polygon_2d" + + point: list[PointType2D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 3, + }, + ) + height: float = field( + default=0.0, + metadata={ + "type": "Attribute", + }, + ) + + +@dataclass(kw_only=True) +class LdgroupRelationTable: + class Meta: + name = "ldgroup_relation_table" + + record: list[LdgroupRelationRecordType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class LdgrpCtType: + class Meta: + name = "ldgrp_ct_type" + + record: list[LdgrpRecType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class LoadCombinationType: + class Meta: + name = "load_combination_type" + + load_case: list[LoadCombinationType.LoadCase] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic_max: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic_res_fx_plus_mx: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic_res_fx_minus_mx: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic_res_fy_plus_my: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic_res_fy_minus_my: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic_res_fz: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t0: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t8: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ldcase_pile: None | SpecLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + cs_case: None | SpecCsLoadCaseItem = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,159}", + } + ) + type_value: Loadcombtype = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class LoadCase: + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + gamma: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PanelConnectionsType: + class Meta: + name = "panel_connections_type" + + bottom_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + right_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + top_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + left_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + internal_edges: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class PeRecordType: + class Meta: + name = "pe_record_type" + + case: list[PeCaseType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + frequency: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PileRigidityGroupType: + class Meta: + name = "pile_rigidity_group_type" + + springs: list[StiffnessMotionRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + plastic_limits: list[Plasticity3DForceRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + + +@dataclass(kw_only=True) +class PileRigidityGroupType1: + class Meta: + name = "pile_rigidity_group_type1" + + spring: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plastic_limit_forces: PlasticityType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class PileRigidityGroupType2: + class Meta: + name = "pile_rigidity_group_type2" + + spring: list[StiffBaseType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + plastic_limit_forces: list[PlasticityType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + + +@dataclass(kw_only=True) +class PointType3D(PointType2D): + class Meta: + name = "point_type_3d" + + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class RigidityDataType0: + class Meta: + name = "rigidity_data_type0" + + motions: StiffnessType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + wx: float = field( + default=0.0, + metadata={ + "name": "Wx", + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + + +@dataclass(kw_only=True) +class RigidityGroupType0: + class Meta: + name = "rigidity_group_type0" + + springs: list[StiffnessMotionRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + plastic_limits: list[Plasticity3DForceRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 4, + "max_occurs": 4, + }, + ) + wx: float = field( + default=0.0, + metadata={ + "name": "Wx", + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + + +@dataclass(kw_only=True) +class SeismicLoadType: + class Meta: + name = "seismic_load_type" + + common_standard_spectra: None | SeismicLoadType.CommonStandardSpectra = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + ec040_standard_spectra: None | SeismicLoadType.Ec040StandardSpectra = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + unique_spectra: None | SeismicLoadType.UniqueSpectra = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + xi: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 50.0, + } + ) + qd: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + building_structure: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + gamma_ie: float = field( + default=1.0, + metadata={ + "name": "Gamma_Ie", + "type": "Attribute", + "min_inclusive": 0.5, + "max_inclusive": 10.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class CommonStandardSpectra: + horizontal: StandardSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + vertical: StandardSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + ground: SeismicGroundType = field( + default=SeismicGroundType.A, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Ec040StandardSpectra: + horizontal: Ec040StandardSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class UniqueSpectra: + horizontal: UniqueSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + vertical: UniqueSpectraType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class SimpleRigidityGroup: + class Meta: + name = "simple_rigidity_group" + + springs: list[StiffBaseType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + plastic_limits: list[PlasticityType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 4, + "max_occurs": 4, + }, + ) + plastic_limits2: list[PlasticityType2] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 6, + "max_occurs": 6, + }, + ) + type_value: MotionType = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SimpleRigidityType: + class Meta: + name = "simple_rigidity_type" + + mov: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plastic_limit_forces: None | PlasticityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_moments: None | PlasticityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class SimpleSpringType: + class Meta: + name = "simple_spring_type" + + mov_x: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot_x: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov_y: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot_y: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov_z: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot_z: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SimpleStiffnessType: + class Meta: + name = "simple_stiffness_type" + + mov_x: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot_x: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov_y: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot_y: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov_z: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rot_z: StiffBaseType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SimpleTrussBehaviourType: + class Meta: + name = "simple_truss_behaviour_type" + + elastic: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + brittle: None | SimpleTrussCapacityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic: None | SimpleTrussCapacityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class SjComponentType: + class Meta: + name = "sj_component_type" + + record: SjComponentType.Record = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bolt_rows: None | SjComponentType.BoltRows = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + type_value: SjComponentValues = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + connected_to: SjConnectedBarType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Record: + property: list[SjDataType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 17, + }, + ) + + @dataclass(kw_only=True) + class BoltRows: + row: list[SjBoltlineType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class StiffnessRecord(StiffnessMotionRecord): + class Meta: + name = "stiffness_record" + + cx_neg: float | StiffnessMaxReached = field( + metadata={ + "name": "Cx_neg", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + cx_pos: float | StiffnessMaxReached = field( + metadata={ + "name": "Cx_pos", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + cy_neg: float | StiffnessMaxReached = field( + metadata={ + "name": "Cy_neg", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + cy_pos: float | StiffnessMaxReached = field( + metadata={ + "name": "Cy_pos", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + cz_neg: float | StiffnessMaxReached = field( + metadata={ + "name": "Cz_neg", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + cz_pos: float | StiffnessMaxReached = field( + metadata={ + "name": "Cz_pos", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + } + ) + wx: float = field( + default=0.0, + metadata={ + "name": "Wx", + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + }, + ) + + +@dataclass(kw_only=True) +class TdaCreep2: + class Meta: + name = "tda_creep2" + + creep_compliance_prony_series: None | TdaCreepProny = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + en_1992_1_1_2004: None | TdaCreepEn1992 = field( + default=None, + metadata={ + "name": "EN_1992-1-1_2004", + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + creep_compliance_by_data_set: None | TdaCreepComplianceGeneral = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class TextFontType(FontType): + class Meta: + name = "text_font_type" + + h_align: HorAlign = field( + default=HorAlign.LEFT, + metadata={ + "type": "Attribute", + }, + ) + v_align: VerAlign = field( + default=VerAlign.BOTTOM, + metadata={ + "type": "Attribute", + }, + ) + + +@dataclass(kw_only=True) +class TimberpanelLibType: + class Meta: + name = "timberpanel_lib_type" + + timber_panel_data: TpDatatype = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TrussBehaviourType: + class Meta: + name = "truss_behaviour_type" + + elastic: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + brittle: None | TrussCapacityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic: None | TrussCapacityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class TrussEccentricityType: + class Meta: + name = "truss_eccentricity_type" + + physical: list[EccValueType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + use_default_physical_alignment: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TsContourType: + class Meta: + name = "ts_contour_type" + + contour: list[TsContourlineType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 32767, + }, + ) + + +@dataclass(kw_only=True) +class WallConnectionsType: + class Meta: + name = "wall_connections_type" + + bottom_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + right_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + top_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + left_edge: ConnSideType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class AccidentalLoadGroup: + class Meta: + name = "accidental_load_group" + + custom_table: None | AccidentalLoadGroup.CustomTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_case: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t0: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t8: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ldcase_pile: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + final_cs: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + subgroup: list[LoadSubgroup] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + relations: None | LdgroupRelationTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + safety_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + using_psi_1: bool = field( + default=True, + metadata={ + "name": "using_Psi_1", + "type": "Attribute", + }, + ) + snow_effect: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + relationship: LdgroupRelation = field( + default=LdgroupRelation.ALTERNATIVE, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class CustomTable: + record: list[AccidentalLoadGroup.CustomTable.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + s: MethodSs = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + data: MethodAcc | float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": -100000000000000.0, + "max_exclusive": 100000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class AxisType: + class Meta: + name = "axis_type" + + start_point: PointType2D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end_point: PointType2D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + label_props: None | AxisLabelProps = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + prefix: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r".{0,15}", + }, + ) + has_prefix: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + id: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 321272406, + } + ) + id_is_letter: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + priority: PriorityType = field( + default=PriorityType.PRIMARY, + metadata={ + "type": "Attribute", + }, + ) + use_for_views: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + label_position: AxisPosition = field( + default=AxisPosition.START, + metadata={ + "type": "Attribute", + }, + ) + distance_from_end_point: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BeamReductionZoneType: + class Meta: + name = "beam_reduction_zone_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + extent_definition: None | BeamEdType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + base_beam: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + moment_reduction_method: MrmType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + automatic_extent_definition: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + moment_reduction: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + shear_reduction: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + connected_to: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BucklingRecord: + class Meta: + name = "buckling_record" + + start_point: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end_point: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + position: None | SegmentpositionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + type_value: BarBucklingType = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + beta: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 100.0, + }, + ) + continously_restrained: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + cantilever: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + load_position: VerAlign = field( + default=VerAlign.TOP, + metadata={ + "type": "Attribute", + }, + ) + sway: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ComplexSectionType: + class Meta: + name = "complex_section_type" + + section: list[ComplexSectionType.Section] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Section: + ecc: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ecc_phys: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + pos: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CsType: + class Meta: + name = "cs_type" + + stage: list[CsStageType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 32768, + }, + ) + auto_assign_modified_elements: bool = field( + default=False, + metadata={ + "name": "auto-assign_modified_elements", + "type": "Attribute", + }, + ) + auto_assign_newly_created_elements: bool = field( + default=False, + metadata={ + "name": "auto-assign_newly_created_elements", + "type": "Attribute", + }, + ) + ghost_method: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + time_dependent_analysis: bool = field( + default=False, + metadata={ + "name": "time-dependent_analysis", + "type": "Attribute", + }, + ) + creep_strain_increment_limit: float = field( + default=0.25, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimtextType: + class Meta: + name = "dimtext_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plane_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plane_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + value: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + text: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{1,255}", + }, + ) + decimals: int = field( + default=2, + metadata={ + "type": "Attribute", + "min_inclusive": 0, + "max_inclusive": 10, + }, + ) + length_unit: LengthunitType = field( + default=LengthunitType.M, + metadata={ + "type": "Attribute", + }, + ) + angle_unit: AngleunitType = field( + default=AngleunitType.RAD, + metadata={ + "type": "Attribute", + }, + ) + measurement_unit: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + prefix: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,15}", + }, + ) + suffix: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,15}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + h_align: HalignType = field( + default=HalignType.CENTERED, + metadata={ + "type": "Attribute", + }, + ) + v_align: ValignType = field( + default=ValignType.ABOVE, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ExcavationType: + class Meta: + name = "excavation_type" + + contour: HorizontalPolygon2D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + depth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ExcitationForceType: + class Meta: + name = "excitation_force_type" + + diagram: list[EfDiagramType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + combination: list[EfCombinationType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class Fdarc3Type: + class Meta: + name = "fdarc3_type" + + centre: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + radius: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e23, + } + ) + start_angle: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 6.28318530717959, + } + ) + end_angle: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 6.28318530717959, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class FillingType: + class Meta: + name = "filling_type" + + contour: HorizontalPolygon2D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + level_point: list[LevelPointType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + default_top_level: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -100000.0, + "max_inclusive": 100000.0, + } + ) + default_bottom_level: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -100000.0, + "max_inclusive": 100000.0, + } + ) + material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + colour: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9A-Fa-f]{6}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GenStjointType: + class Meta: + name = "gen_stjoint_type" + + connection_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + connected_items: list[str] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "tokens": True, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LabsecgeomType: + class Meta: + name = "labsecgeom_type" + + line_segment: None | LabsecgeomType.LineSegment = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + polyline: None | LabsecgeomType.Polyline = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="A", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class LineSegment: + start_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + reverse_direction: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Polyline: + point: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 3, + }, + ) + + +@dataclass(kw_only=True) +class LineType: + class Meta: + name = "line_type" + + start: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class LocalsysType: + class Meta: + name = "localsys_type" + + centre: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class LocationValue(PointType3D): + class Meta: + name = "location_value" + + val: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + + +@dataclass(kw_only=True) +class MassPointType: + class Meta: + name = "mass_point_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + value: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 1e-15, + "max_inclusive": 1e20, + }, + ) + apply_on_ecc: None | bool = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + comment: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class MaterialType: + class Meta: + name = "material_type" + + concrete: None | MaterialType.Concrete = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + steel: None | MaterialType.Steel = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + timber: None | MaterialType.Timber = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + brick: None | MaterialType.Brick = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + masonry: None | MaterialType.Masonry = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + stratum: None | MaterialType.Stratum = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + custom: None | MaterialType.Custom = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + reference: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,256}", + } + ) + standard: Standardtype = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + country: Eurocodetype = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Concrete: + tda_creep: None | TdaCreep2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + tda_shrinkage: None | TdaShrinkage = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + tda_elasticity: None | TdaElasticity = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_analysis_data: None | ConcretePlData = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mass: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + e_0: float = field( + metadata={ + "name": "E_0", + "type": "Attribute", + "required": True, + } + ) + e_1: float = field( + metadata={ + "name": "E_1", + "type": "Attribute", + "required": True, + } + ) + e_2: float = field( + metadata={ + "name": "E_2", + "type": "Attribute", + "required": True, + } + ) + nu_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + g_0: float = field( + metadata={ + "name": "G_0", + "type": "Attribute", + "required": True, + } + ) + g_1: float = field( + metadata={ + "name": "G_1", + "type": "Attribute", + "required": True, + } + ) + g_2: float = field( + metadata={ + "name": "G_2", + "type": "Attribute", + "required": True, + } + ) + fck: float = field( + metadata={ + "name": "Fck", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fck_cube: float = field( + default=30.0, + metadata={ + "name": "Fck_cube", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + fctk: float = field( + metadata={ + "name": "Fctk", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fctm: float = field( + metadata={ + "name": "Fctm", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ecm: float = field( + metadata={ + "name": "Ecm", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_c_0: None | float = field( + default=None, + metadata={ + "name": "gammaC_0", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_c_1: None | float = field( + default=None, + metadata={ + "name": "gammaC_1", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_ce: float = field( + metadata={ + "name": "gammaCE", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_ce_1: float = field( + default=1.15, + metadata={ + "name": "gammaCE_1", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_cfi: float = field( + default=1.0, + metadata={ + "name": "gammaCfi", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_s_0: float = field( + metadata={ + "name": "gammaS_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_s_1: float = field( + metadata={ + "name": "gammaS_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_sfi: float = field( + default=1.0, + metadata={ + "name": "gammaSfi", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + alfa_cc: None | float = field( + default=None, + metadata={ + "name": "alfaCc", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + alfa_ct: None | float = field( + default=None, + metadata={ + "name": "alfaCt", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + fcd_0: float = field( + metadata={ + "name": "Fcd_0", + "type": "Attribute", + "required": True, + } + ) + fcd_1: float = field( + metadata={ + "name": "Fcd_1", + "type": "Attribute", + "required": True, + } + ) + fctd_0: float = field( + metadata={ + "name": "Fctd_0", + "type": "Attribute", + "required": True, + } + ) + fctd_1: float = field( + metadata={ + "name": "Fctd_1", + "type": "Attribute", + "required": True, + } + ) + ecd_0: float = field( + metadata={ + "name": "Ecd_0", + "type": "Attribute", + "required": True, + } + ) + ecd_1: float = field( + metadata={ + "name": "Ecd_1", + "type": "Attribute", + "required": True, + } + ) + epsc2: None | float = field( + default=None, + metadata={ + "name": "Epsc2", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + epscu2: None | float = field( + default=None, + metadata={ + "name": "Epscu2", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + epsc3: None | float = field( + default=None, + metadata={ + "name": "Epsc3", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + epscu3: None | float = field( + default=None, + metadata={ + "name": "Epscu3", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + environment: None | int = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + creep: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sls: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + creep_slf: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + creep_slc: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + shrinkage: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + nu: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 0.499, + } + ) + alfa: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + reduction: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + stability: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + ktc: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + ktt: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + epscu: float = field( + default=0.0035, + metadata={ + "name": "Epscu", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_v_0: float = field( + default=1.0, + metadata={ + "name": "gammaV_0", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_v_1: float = field( + default=1.0, + metadata={ + "name": "gammaV_1", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_v_fi: float = field( + default=1.0, + metadata={ + "name": "gammaV_fi", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + d_lower: float = field( + default=8.0, + metadata={ + "name": "D_lower", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Steel: + tda_creep: None | TdaCreep1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_analysis_data: None | SteelPlData = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mass: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + e_0: float = field( + metadata={ + "name": "E_0", + "type": "Attribute", + "required": True, + } + ) + e_1: float = field( + metadata={ + "name": "E_1", + "type": "Attribute", + "required": True, + } + ) + e_2: float = field( + metadata={ + "name": "E_2", + "type": "Attribute", + "required": True, + } + ) + nu_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + g_0: float = field( + metadata={ + "name": "G_0", + "type": "Attribute", + "required": True, + } + ) + g_1: float = field( + metadata={ + "name": "G_1", + "type": "Attribute", + "required": True, + } + ) + g_2: float = field( + metadata={ + "name": "G_2", + "type": "Attribute", + "required": True, + } + ) + fyk16: float = field( + metadata={ + "name": "Fyk16", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk40: float = field( + metadata={ + "name": "Fyk40", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk63: float = field( + metadata={ + "name": "Fyk63", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk80: float = field( + metadata={ + "name": "Fyk80", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk100: float = field( + metadata={ + "name": "Fyk100", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk150: float = field( + metadata={ + "name": "Fyk150", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk200: float = field( + metadata={ + "name": "Fyk200", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk250: float = field( + metadata={ + "name": "Fyk250", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fyk400: float = field( + metadata={ + "name": "Fyk400", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fuk3: float = field( + metadata={ + "name": "Fuk3", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fuk40: float = field( + metadata={ + "name": "Fuk40", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fuk100: float = field( + metadata={ + "name": "Fuk100", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fuk150: float = field( + metadata={ + "name": "Fuk150", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fuk250: float = field( + metadata={ + "name": "Fuk250", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fuk400: float = field( + metadata={ + "name": "Fuk400", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m0_0: float = field( + metadata={ + "name": "gammaM0_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m0_1: float = field( + metadata={ + "name": "gammaM0_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m1_0: float = field( + metadata={ + "name": "gammaM1_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m1_1: float = field( + metadata={ + "name": "gammaM1_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m2_0: float = field( + metadata={ + "name": "gammaM2_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m2_1: float = field( + metadata={ + "name": "gammaM2_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m5_0: None | float = field( + default=None, + metadata={ + "name": "gammaM5_0", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_m5_1: None | float = field( + default=None, + metadata={ + "name": "gammaM5_1", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_mfi: float = field( + default=1.0, + metadata={ + "name": "gammaMfi", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + ek: float = field( + metadata={ + "name": "Ek", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ed_0: float = field( + metadata={ + "name": "Ed_0", + "type": "Attribute", + "required": True, + } + ) + ed_1: float = field( + metadata={ + "name": "Ed_1", + "type": "Attribute", + "required": True, + } + ) + nu: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 0.499, + } + ) + g: float = field( + metadata={ + "name": "G", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + alfa: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Timber: + tda_creep: None | TdaCreep1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mass: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + e_0: float = field( + metadata={ + "name": "E_0", + "type": "Attribute", + "required": True, + } + ) + e_1: float = field( + metadata={ + "name": "E_1", + "type": "Attribute", + "required": True, + } + ) + e_2: float = field( + metadata={ + "name": "E_2", + "type": "Attribute", + "required": True, + } + ) + nu_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + g_0: float = field( + metadata={ + "name": "G_0", + "type": "Attribute", + "required": True, + } + ) + g_1: float = field( + metadata={ + "name": "G_1", + "type": "Attribute", + "required": True, + } + ) + g_2: float = field( + metadata={ + "name": "G_2", + "type": "Attribute", + "required": True, + } + ) + type_value: int = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + quality: int = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + fmk0: float = field( + metadata={ + "name": "Fmk0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fmk90: float = field( + metadata={ + "name": "Fmk90", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ft0k: float = field( + metadata={ + "name": "Ft0k", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ft90k: float = field( + metadata={ + "name": "Ft90k", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fc0k: float = field( + metadata={ + "name": "Fc0k", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fc90k: float = field( + metadata={ + "name": "Fc90k", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fvk: float = field( + metadata={ + "name": "Fvk", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + e0mean: float = field( + metadata={ + "name": "E0mean", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + e90mean: float = field( + metadata={ + "name": "E90mean", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + e005: float = field( + metadata={ + "name": "E005", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gmean: float = field( + metadata={ + "name": "Gmean", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + g005: float = field( + metadata={ + "name": "G005", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + rhok: float = field( + metadata={ + "name": "Rhok", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + rhomean: float = field( + metadata={ + "name": "Rhomean", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + e0comp: float = field( + metadata={ + "name": "E0comp", + "type": "Attribute", + "required": True, + } + ) + e90comp: float = field( + metadata={ + "name": "E90comp", + "type": "Attribute", + "required": True, + } + ) + gamma_m_0: float = field( + metadata={ + "name": "gammaM_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m_1: float = field( + metadata={ + "name": "gammaM_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ksys: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + k_cr: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + service_class: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0, + "max_inclusive": 2, + } + ) + kdef_u: None | float = field( + default=None, + metadata={ + "name": "kdefU", + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + kdef_sq: None | float = field( + default=None, + metadata={ + "name": "kdefSq", + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + kdef_sf: None | float = field( + default=None, + metadata={ + "name": "kdefSf", + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + kdef_sc: None | float = field( + default=None, + metadata={ + "name": "kdefSc", + "type": "Attribute", + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + gamma_mfi: None | float = field( + default=None, + metadata={ + "name": "gammaMfi", + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Brick: + base_data: None | OptionalMaterialAttribs = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + strength_for: StrengthType = field( + default=StrengthType.BRICK_ONLY, + metadata={ + "type": "Attribute", + }, + ) + fb: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + nu: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 0.499, + } + ) + rho: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + alpha_thermal: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m_0: float = field( + metadata={ + "name": "gammaM_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m_1: float = field( + metadata={ + "name": "gammaM_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fm: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + k: float = field( + metadata={ + "name": "K", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + alpha: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + beta: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + elasticity_modulus: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + elasticity_calculated_by_ke: bool = field( + default=False, + metadata={ + "name": "elasticity_calculated_by_KE", + "type": "Attribute", + }, + ) + creep_u: float = field( + metadata={ + "name": "creep_U", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sq: float = field( + metadata={ + "name": "creep_Sq", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sf: float = field( + metadata={ + "name": "creep_Sf", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sc: float = field( + metadata={ + "name": "creep_Sc", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + phi: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + filled_vertical_joints: None | bool = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + km: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + muk: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + ct: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + fvk0: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + fvlt: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + muf: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Masonry: + base_data: None | OptionalMaterialAttribs = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + strength_for: StrengthType = field( + default=StrengthType.BRICK_ONLY, + metadata={ + "type": "Attribute", + }, + ) + fk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + nu: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 0.499, + } + ) + rho: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + alpha_thermal: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m_0: float = field( + metadata={ + "name": "gammaM_0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_m_1: float = field( + metadata={ + "name": "gammaM_1", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + fm: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + k: float = field( + metadata={ + "name": "K", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + alpha: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + beta: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + elasticity_modulus: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + elasticity_calculated_by_ke: bool = field( + default=False, + metadata={ + "name": "elasticity_calculated_by_KE", + "type": "Attribute", + }, + ) + creep_u: float = field( + metadata={ + "name": "creep_U", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sq: float = field( + metadata={ + "name": "creep_Sq", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sf: float = field( + metadata={ + "name": "creep_Sf", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + creep_sc: float = field( + metadata={ + "name": "creep_Sc", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + phi: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + filled_vertical_joints: None | bool = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + km: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + muk: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + ct: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + fvk0: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + fvlt: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Stratum: + base_data: None | OptionalMaterialAttribs = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + behaviour: MaterialType.Stratum.Behaviour = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + model: MaterialType.Stratum.Model = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + reference_level: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + gamma_dry: float = field( + metadata={ + "name": "Gamma_dry", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + gamma_sat: float = field( + metadata={ + "name": "Gamma_sat", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + nu: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 0.499, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Behaviour: + drained: None | MaterialType.Stratum.Behaviour.Drained = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + undrained: None | MaterialType.Stratum.Behaviour.Undrained = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + combined: None | MaterialType.Stratum.Behaviour.Combined = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class Drained: + c_k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + c_k_depth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + phi_k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5690509975429, + } + ) + phi_cvk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5690509975429, + } + ) + + @dataclass(kw_only=True) + class Undrained: + c_uk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + c_uk_depth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + + @dataclass(kw_only=True) + class Combined: + drained: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + c_uk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + c_uk_depth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + c_k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + c_k_depth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + phi_k: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5690509975429, + } + ) + phi_cvk: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5690509975429, + } + ) + + @dataclass(kw_only=True) + class Model: + generic: None | MaterialType.Stratum.Model.Generic = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + linear: None | MaterialType.Stratum.Model.Linear = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + overconsolidated: ( + None | MaterialType.Stratum.Model.Overconsolidated + ) = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class Generic: + record: list[MaterialType.Stratum.Model.Generic.Record] = ( + field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 5, + }, + ) + ) + mu: float = field( + metadata={ + "name": "Mu", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + mu_depth: float = field( + metadata={ + "name": "Mu_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + + @dataclass(kw_only=True) + class Record: + sigma: float = field( + metadata={ + "name": "Sigma", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + p: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + pd: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + m: float = field( + metadata={ + "name": "M", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + md: float = field( + metadata={ + "name": "Md", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100000.0, + } + ) + + @dataclass(kw_only=True) + class Linear: + use_e: bool = field( + default=False, + metadata={ + "name": "use_E", + "type": "Attribute", + }, + ) + value: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + m0_depth: float = field( + metadata={ + "name": "M0_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + + @dataclass(kw_only=True) + class Overconsolidated: + mu: float = field( + metadata={ + "name": "Mu", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + mu_depth: float = field( + metadata={ + "name": "Mu_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + m0: float = field( + metadata={ + "name": "M0", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + m0_depth: float = field( + metadata={ + "name": "M0_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ml: float = field( + metadata={ + "name": "ML", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + ml_depth: float = field( + metadata={ + "name": "ML_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + m: float = field( + metadata={ + "name": "M", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + m_depth: float = field( + metadata={ + "name": "M_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + sigma_c: float = field( + metadata={ + "name": "Sigma_c", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + p_c: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + pc_depth: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + sigma_l: float = field( + metadata={ + "name": "Sigma_L", + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + p_l: float = field( + metadata={ + "name": "p_L", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + p_l_depth: float = field( + metadata={ + "name": "p_L_depth", + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + + @dataclass(kw_only=True) + class Custom: + mass: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + e_0: float = field( + metadata={ + "name": "E_0", + "type": "Attribute", + "required": True, + } + ) + e_1: float = field( + metadata={ + "name": "E_1", + "type": "Attribute", + "required": True, + } + ) + e_2: float = field( + metadata={ + "name": "E_2", + "type": "Attribute", + "required": True, + } + ) + nu_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + nu_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alfa_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + g_0: float = field( + metadata={ + "name": "G_0", + "type": "Attribute", + "required": True, + } + ) + g_1: float = field( + metadata={ + "name": "G_1", + "type": "Attribute", + "required": True, + } + ) + g_2: float = field( + metadata={ + "name": "G_2", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class OptLocalsysType: + class Meta: + name = "opt_localsys_type" + + local_pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class PeriodicExcitationType: + class Meta: + name = "periodic_excitation_type" + + record: list[PeRecordType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PermanentLoadGroup: + class Meta: + name = "permanent_load_group" + + custom_table: None | PermanentLoadGroup.CustomTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_case: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t0: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t8: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ldcase_pile: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + final_cs: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + subgroup: list[LoadSubgroup] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + relations: None | LdgroupRelationTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + standard_favourable: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + standard_unfavourable: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + accidental_favourable: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + accidental_unfavourable: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + xi: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + relationship: LdgroupRelation = field( + default=LdgroupRelation.ALTERNATIVE, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class CustomTable: + record: list[PermanentLoadGroup.CustomTable.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + s: MethodSs = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + data: MethodPer | float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": -100000000000000.0, + "max_exclusive": 100000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtcType: + class Meta: + name = "ptc_type" + + start_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_z: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + losses: PtcLosses = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + shape_base_points: PtcShapeType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + manufacturing: PtcManufacturingType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + base_object: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + name: str = field( + default="PTC", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + strand_type: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + number_of_strands: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 100, + } + ) + jacking_side: PtcJackingSide = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + jacking_stress: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 200.0, + "max_inclusive": 10000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RectangleType: + class Meta: + name = "rectangle_type" + + base_corner: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + x_direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + y_direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + x_size: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + } + ) + y_size: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ReslineType: + class Meta: + name = "resline_type" + + start: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + y_axis: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_entity: list[RlBaseType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="VB", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RespointType: + class Meta: + name = "respoint_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: None | FontType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="PT", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + base_entity: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityDataType1(RigidityDataType0): + class Meta: + name = "rigidity_data_type1" + + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityGroupType1(RigidityGroupType0): + class Meta: + name = "rigidity_group_type1" + + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityGroupType2: + class Meta: + name = "rigidity_group_type2" + + springs: list[StiffnessRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 10, + "max_occurs": 10, + }, + ) + plastic_limits: list[Plasticity3DRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 4, + "max_occurs": 4, + }, + ) + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ShellRfParamsType: + class Meta: + name = "shell_rf_params_type" + + base_shell: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + center: ShellRfParamsType.Center = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + x_direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + y_direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + single_layer_reinforcement: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Center: + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + polar_system: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SimpleTrussChrType: + class Meta: + name = "simple_truss_chr_type" + + compression: SimpleTrussBehaviourType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + tension: SimpleTrussBehaviourType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class SjTopologyType: + class Meta: + name = "sj_topology_type" + + component: list[SjComponentType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 16, + }, + ) + + +@dataclass(kw_only=True) +class StiffnessPointType: + class Meta: + name = "stiffness_point_type" + + rigidity: None | RigidityDataType0 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType0 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + surface_support: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + y: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + z: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StiffnessWithFriction(SimpleStiffnessType): + class Meta: + name = "stiffness_with_friction" + + friction: float = field( + default=0.3, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + + +@dataclass(kw_only=True) +class StoreyType: + class Meta: + name = "storey_type" + + origo: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType2D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + dimension_x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + dimension_y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{0,256}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StrataType: + class Meta: + name = "strata_type" + + contour: HorizontalPolygon2D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stratum: list[StratumType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 100, + }, + ) + water_level: list[WaterLevelType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + default_filling: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + default_fillings_colour: str = field( + default="B97A57", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + depth_level_limit: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000000.0, + "max_exclusive": 0.0, + } + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StressLoadGroup: + class Meta: + name = "stress_load_group" + + custom_table: None | StressLoadGroup.CustomTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_case: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t0: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t8: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ldcase_pile: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + final_cs: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + subgroup: list[LoadSubgroup] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + relations: None | LdgroupRelationTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + standard: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + accidental: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + relationship: LdgroupRelation = field( + default=LdgroupRelation.ALTERNATIVE, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class CustomTable: + record: list[StressLoadGroup.CustomTable.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + s: MethodSs = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + data: MethodStr | float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": -100000000000000.0, + "max_exclusive": 100000000000000.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class StyleType: + class Meta: + name = "style_type" + + filling: None | FillType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + font: None | TextFontType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + layer: str = field( + default="0", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + line_style: InternalLineStyle | str = field( + default=InternalLineStyle.CONTINUOUS, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{1,255}", + }, + ) + penwidth: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -10000.0, + "max_inclusive": 10000.0, + }, + ) + point_style: PointstyleType = field( + default=PointstyleType.CROSS, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceRfLineType: + class Meta: + name = "surface_rf_line_type" + + start_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + base_shell: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + side: SfRcFace = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + right_side_wires: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + pieces: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 100, + } + ) + space: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0001, + "max_inclusive": 10.0, + } + ) + cover: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + colour: str = field( + default="0000a0", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TemporaryLoadGroup: + class Meta: + name = "temporary_load_group" + + custom_table: None | TemporaryLoadGroup.CustomTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_case: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t0: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ptc_t8: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ldcase_pile: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + final_cs: None | EmptyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_cases_of_moving_load: list[ + TemporaryLoadGroup.LoadCasesOfMovingLoad + ] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + subgroup: list[LoadSubgroup] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + relations: None | LdgroupRelationTable = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + safety_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10.0, + } + ) + psi_0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + psi_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + psi_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + leading_cases: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + ignore_sls: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + simultaneous: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + relationship: LdgroupRelation = field( + default=LdgroupRelation.ALTERNATIVE, + metadata={ + "type": "Attribute", + }, + ) + temporary_effect: LdgroupTmpeffect = field( + default=LdgroupTmpeffect.GENERAL, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class CustomTable: + record: list[TemporaryLoadGroup.CustomTable.Record] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Record: + s: MethodSs = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + data: MethodTmp | float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": -100000000000000.0, + "max_exclusive": 100000000000000.0, + } + ) + i: MethodIs = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class LoadCasesOfMovingLoad: + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + master: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TopbottomValue(PointType3D): + class Meta: + name = "topbottom_value" + + top_val: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + bottom_val: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + + +@dataclass(kw_only=True) +class TrussChrType: + class Meta: + name = "truss_chr_type" + + compression: TrussBehaviourType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + tension: TrussBehaviourType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class TsSurfaceType: + class Meta: + name = "ts_surface_type" + + flat_face: list[TsContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 32767, + }, + ) + + +@dataclass(kw_only=True) +class TsVertexType: + class Meta: + name = "ts_vertex_type" + + vertex: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 4, + "max_occurs": 32767, + }, + ) + + +@dataclass(kw_only=True) +class UntestedLocalsysType: + class Meta: + name = "untested_localsys_type" + + pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + z: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class WbrType: + class Meta: + name = "wbr_type" + + connected_wall: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + pt: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + dir: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stirrup_pt: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stirrup_dir: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class ApexBucklingType: + class Meta: + name = "apex_buckling_type" + + buckling_length: list[BucklingRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class BucklingDataType: + class Meta: + name = "buckling_data_type" + + buckling_length: list[BucklingRecord] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class BuildingCoverType: + class Meta: + name = "building_cover_type" + + base_rectangle: RectangleType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + supporting_structures: None | ReferencelistType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + covers: None | CoverlistType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + roof_type: RoofType = field( + default=RoofType.FLAT, + metadata={ + "type": "Attribute", + }, + ) + h_wall: float = field( + default=6.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + h_roof: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CaselessPointLoadType: + class Meta: + name = "caseless_point_load_type" + + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load: LocationValue = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load_position: None | LdposType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_type: ForceLoadType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + apply_on_ecc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + auto_force_dir: None | DirectionType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_sign: None | AutoForceSignType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_type: None | AutoForceTypeType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + assigned_structure: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + + +@dataclass(kw_only=True) +class DimangleType: + class Meta: + name = "dimangle_type" + + arc: Fdarc3Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + line1: LineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + line2: LineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + dimension_line: DimdimlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + extension_line: ExtlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + arrow: ArrowType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + text: DimtextType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + beta: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + rs1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + re1: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + rs2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + re2: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + layer: str = field( + default="DIM", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimarcType: + class Meta: + name = "dimarc_type" + + arc: Fdarc3Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + dimension_line: DimdimlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + extension_line: ExtlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + arrow: ArrowType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + text: DimtextType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + layer: str = field( + default="DIM", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimdiamType: + class Meta: + name = "dimdiam_type" + + arc: Fdarc3Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + dimension_line: DimdimlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + arrow: ArrowType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + text: DimtextType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + layer: str = field( + default="DIM", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimfloorType: + class Meta: + name = "dimfloor_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plane_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plane_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + text: DimtextType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + size: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e23, + } + ) + layer: str = field( + default="DIM", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimlineType: + class Meta: + name = "dimline_type" + + point: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + }, + ) + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plane_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plane_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + dimension_line: DimdimlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + extension_line: ExtlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + arrow: ArrowType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + text: list[DimtextType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + dynamic: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + layer: str = field( + default="DIM", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DimradiusType: + class Meta: + name = "dimradius_type" + + arc: Fdarc3Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + dimension_line: DimdimlineType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + arrow: ArrowType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + font: FontType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + text: DimtextType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + layer: str = field( + default="DIM", + metadata={ + "type": "Attribute", + "pattern": r"[\t\n\r -�]{1,255}", + }, + ) + colour: str = field( + default="000000", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class GeneralLoadGroupType: + class Meta: + name = "general_load_group_type" + + accidental: None | AccidentalLoadGroup = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + permanent: None | PermanentLoadGroup = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + seismic: None | SeismicLoadGroup = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + stress: None | StressLoadGroup = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + temporary: None | TemporaryLoadGroup = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,79}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + consider_in_gmax: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PointSupportLoadType: + class Meta: + name = "point_support_load_type" + + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + displacement: LocationValue = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_type: MotionType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PointType: + class Meta: + name = "point_type" + + location: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + style: None | StyleType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class PolyhedronType: + class Meta: + name = "polyhedron_type" + + vertices_in_index_order: TsVertexType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + visible_edge: list[TsVisibleEdgeType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 32767, + }, + ) + surface: list[TsSurfaceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 32767, + }, + ) + fillmode: int = field( + default=1, + metadata={ + "type": "Attribute", + }, + ) + fillcolor: int = field( + default=0, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityDataType2(RigidityDataType1): + class Meta: + name = "rigidity_data_type2" + + rotations: StiffnessType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class RigidityDatalibType1: + class Meta: + name = "rigidity_datalib_type1" + + rigidity: None | RigidityDataType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityGroupType3(RigidityGroupType2): + class Meta: + name = "rigidity_group_type3" + + friction: float = field( + default=0.3, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + + +@dataclass(kw_only=True) +class SteelJointType: + class Meta: + name = "steel_joint_type" + + column_splice_solution1: None | SteelJointType.ColumnSpliceSolution1 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + column_splice_solution2: None | SteelJointType.ColumnSpliceSolution2 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + column_splice_solution3: None | SteelJointType.ColumnSpliceSolution3 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + column_splice_solution4: None | SteelJointType.ColumnSpliceSolution4 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + column_splice_solution5: None | SteelJointType.ColumnSpliceSolution5 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + column_splice_solution6: None | SteelJointType.ColumnSpliceSolution6 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_splice_solution1: None | SteelJointType.BeamSpliceSolution1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_splice_solution2: None | SteelJointType.BeamSpliceSolution2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_splice_solution3: None | SteelJointType.BeamSpliceSolution3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_splice_solution4: None | SteelJointType.BeamSpliceSolution4 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_splice_solution5: None | SteelJointType.BeamSpliceSolution5 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_splice_solution6: None | SteelJointType.BeamSpliceSolution6 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_splice_solution7: None | SteelJointType.BeamSpliceSolution7 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + column_base_solution1: None | SteelJointType.ColumnBaseSolution1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + column_base_solution2: None | SteelJointType.ColumnBaseSolution2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_to_beam_solution1: None | SteelJointType.BeamToBeamSolution1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_to_beam_solution2: None | SteelJointType.BeamToBeamSolution2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_to_beam_solution3: None | SteelJointType.BeamToBeamSolution3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_to_beam_solution4: None | SteelJointType.BeamToBeamSolution4 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_to_beam_solution5: None | SteelJointType.BeamToBeamSolution5 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + beam_to_column_solution1: None | SteelJointType.BeamToColumnSolution1 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution2: None | SteelJointType.BeamToColumnSolution2 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution3: None | SteelJointType.BeamToColumnSolution3 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution4: None | SteelJointType.BeamToColumnSolution4 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution5a: None | SteelJointType.BeamToColumnSolution5A = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution5b: None | SteelJointType.BeamToColumnSolution5B = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution6: None | SteelJointType.BeamToColumnSolution6 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution7: None | SteelJointType.BeamToColumnSolution7 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + beam_to_column_solution8: None | SteelJointType.BeamToColumnSolution8 = ( + field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ) + knee_solution1: None | SteelJointType.KneeSolution1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution2: None | SteelJointType.KneeSolution2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution3: None | SteelJointType.KneeSolution3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution4: None | SteelJointType.KneeSolution4 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution5a: None | SteelJointType.KneeSolution5A = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution5b: None | SteelJointType.KneeSolution5B = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution6a: None | SteelJointType.KneeSolution6A = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution6b: None | SteelJointType.KneeSolution6B = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution7: None | SteelJointType.KneeSolution7 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + knee_solution8: None | SteelJointType.KneeSolution8 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution1y: None | SteelJointType.BracingSolution1Y = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution1x: None | SteelJointType.BracingSolution1X = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution1k: None | SteelJointType.BracingSolution1K = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution2y: None | SteelJointType.BracingSolution2Y = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution2x: None | SteelJointType.BracingSolution2X = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution2k: None | SteelJointType.BracingSolution2K = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution3y: None | SteelJointType.BracingSolution3Y = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution3x: None | SteelJointType.BracingSolution3X = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution3k: None | SteelJointType.BracingSolution3K = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution4: None | SteelJointType.BracingSolution4 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution5: None | SteelJointType.BracingSolution5 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + bracing_solution6: None | SteelJointType.BracingSolution6 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + topology: None | SjTopologyType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="SJ", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + version: int = field( + default=1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class ColumnSpliceSolution1: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnSpliceSolution2: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnSpliceSolution3: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnSpliceSolution4: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnSpliceSolution5: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnSpliceSolution6: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution1: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution2: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution3: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution4: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution5: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution6: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamSpliceSolution7: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnBaseSolution1: + connecting_bars: Sj1BarConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class ColumnBaseSolution2: + connecting_bars: Sj1BarConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToBeamSolution1: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToBeamSolution2: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToBeamSolution3: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToBeamSolution4: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToBeamSolution5: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution1: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution2: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution3: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution4: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution5A: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution5B: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution6: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution7: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BeamToColumnSolution8: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution1: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution2: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution3: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution4: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution5A: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution5B: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution6A: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution6B: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution7: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class KneeSolution8: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution1Y: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution1X: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution1K: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution2Y: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution2X: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution2K: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution3Y: + connecting_bars: Sj2BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution3X: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution3K: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution4: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution5: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + @dataclass(kw_only=True) + class BracingSolution6: + connecting_bars: Sj3BarsConnectionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class SurfaceRfRectType: + class Meta: + name = "surface_rf_rect_type" + + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rectangle: RectangleType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + base_shell: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + side: SfRcFace = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + pieces: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 100, + } + ) + cover: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e17, + } + ) + colour: str = field( + default="0000a0", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class TextType: + class Meta: + name = "text_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + style: StyleType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + text: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[\t\n\r -�]{0,1023}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ViewType1: + class Meta: + name = "view_type" + + coordinate_system_2d: UntestedLocalsysType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + coordinate_system_3d: UntestedLocalsysType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + user_coordinate_system: UntestedLocalsysType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + scale: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + tolerance: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_exclusive": 3.403e38, + } + ) + type_value: Viewtype2 = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ApexType: + class Meta: + name = "apex_type" + + center: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + intersection_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + buckling_data: list[ApexBucklingType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + r: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 100.0, + } + ) + rounded_edge: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ConnectedPointsType: + class Meta: + name = "connected_points_type" + + point: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stiffness: None | SimpleStiffnessType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity: None | RigidityDataType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ref: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="CP", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + interface: float = field( + default=0.5, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class HiddenBarType: + class Meta: + name = "hidden_bar_type" + + rectangle: RectangleType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + start: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + buckling_data: None | BucklingDataType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + base_shell: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + axis_in_longer_side: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LoadGroupTable: + class Meta: + name = "load_group_table" + + custom_table: None | LdgrpCtType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + group: list[GeneralLoadGroupType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + simple_combination_method: Ldcombmethod = field( + default=Ldcombmethod.EN_1990_6_4_3_6_10, + metadata={ + "type": "Attribute", + }, + ) + k_f: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 10.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PointLoadType(CaselessPointLoadType): + class Meta: + name = "point_load_type" + + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityDataType3(RigidityDataType2): + class Meta: + name = "rigidity_data_type3" + + friction: float = field( + default=0.3, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + + +@dataclass(kw_only=True) +class RigidityDatalibType2: + class Meta: + name = "rigidity_datalib_type2" + + rigidity: None | RigidityDataType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SupportRigidityDataType: + class Meta: + name = "support_rigidity_data_type" + + directed: None | SupportRigidityDataType.Directed = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + group: None | SupportRigidityDataType.Group = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + warping: None | SupportRigidityDataType.Warping = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class Directed: + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rot: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_forces: None | PlasticityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_moments: None | PlasticityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | SimpleRigidityGroup = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + @dataclass(kw_only=True) + class Group: + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov_x: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rot_x: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mov_y: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rot_y: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mov_z: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rot_z: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity: None | RigidityDataType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + seven_degrees_of_freedom: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Warping: + wx: list[float] = field( + default_factory=list, + metadata={ + "name": "Wx", + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1000000000000000.0, + "tokens": True, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EcType: + class Meta: + name = "ec_type" + + stiffness: None | StiffnessWithFriction = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity: None | RigidityDataType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="CE", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + moving_local: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + joined_start_point: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + joined_end_point: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PointSupportType(SupportRigidityDataType): + class Meta: + name = "point_support_type" + + position: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="S", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RigidityDatalibType3: + class Meta: + name = "rigidity_datalib_type3" + + rigidity: None | RigidityDataType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WallCorbelType: + class Meta: + name = "wall_corbel_type" + + start_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + connectable_parts: None | TwoGuidListType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity: None | RigidityDataType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + positive_side: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + l: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + h1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + h2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 10.0, + } + ) + base_wall: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + complex_material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EcEdgeListItemType: + class Meta: + name = "ec_edge_list_item_type" + + edge_connection: EcType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + edge_index: int = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class EdgeType1: + class Meta: + name = "edge_type" + + point: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + x_axis: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + edge_connection: None | EcType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + physical_extent: None | PheType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + reinforcement_anchorage: None | AncType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + type_value: Edgetype2 = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + radius: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 1000.0, + }, + ) + start_angle: None | float = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + end_angle: None | float = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BarPartType: + class Meta: + name = "bar_part_type" + + curve: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "name": "local-y", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + connectivity: list[ConnectivityType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 2, + }, + ) + eccentricity: None | EccentricityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + buckling_data: None | BucklingDataType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + camber_simulation: None | CamberType2D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + stiffness_modifiers: None | BarStiffnessFactors = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + complex_material: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + complex_section: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + complex_composite: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + made: Steelmadetype = field( + default=Steelmadetype.ROLLED, + metadata={ + "type": "Attribute", + }, + ) + ecc_mode: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + ecc_calc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + ecc_crack: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + first_order_analysis_u: bool = field( + default=False, + metadata={ + "name": "first_order_analysis_U", + "type": "Attribute", + }, + ) + first_order_analysis_sq: bool = field( + default=False, + metadata={ + "name": "first_order_analysis_Sq", + "type": "Attribute", + }, + ) + first_order_analysis_sf: bool = field( + default=False, + metadata={ + "name": "first_order_analysis_Sf", + "type": "Attribute", + }, + ) + first_order_analysis_sc: bool = field( + default=False, + metadata={ + "name": "first_order_analysis_Sc", + "type": "Attribute", + }, + ) + seven_degrees_of_freedom: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CaselessLineLoadResultantType: + class Meta: + name = "caseless_line_load_resultant_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 2, + }, + ) + resultant: None | ResultantType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_position: None | LdposType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_type: ForceLoadType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + apply_on_ecc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + auto_force_dir: None | DirectionType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_sign: None | AutoForceSignType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_type: None | AutoForceTypeType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + assigned_structure: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_dir: LoadDirType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + load_projection: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class CaselessLineLoadType: + class Meta: + name = "caseless_line_load_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + load_position: None | LdposType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_type: ForceLoadType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + apply_on_ecc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + auto_force_dir: None | DirectionType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_sign: None | AutoForceSignType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_type: None | AutoForceTypeType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + assigned_structure: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_dir: LoadDirType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + load_projection: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class ConnectedLinesType: + class Meta: + name = "connected_lines_type" + + edge: list[EdgeType1] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + point: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stiffness: None | SimpleStiffnessType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity: None | RigidityDataType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ref: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="CL", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + moving_local: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + interface_start: float = field( + default=0.5, + metadata={ + "type": "Attribute", + }, + ) + interface_end: float = field( + default=0.5, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ContourType: + class Meta: + name = "contour_type" + + edge: list[EdgeType1] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class CoverReferencelistType: + class Meta: + name = "cover_referencelist_type" + + ref: list[CoverReferencelistType.Ref] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Ref: + edge: list[EdgeType1] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CurveType(EdgeType1): + class Meta: + name = "curve_type" + + style: None | StyleType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class LineStressLoadType: + class Meta: + name = "line_stress_load_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + stress: list[TopbottomValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LineSupportLoadType: + class Meta: + name = "line_support_load_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + displacement: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_type: MotionType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + load_dir: LoadDirType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LineSupportType(SupportRigidityDataType): + class Meta: + name = "line_support_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="S", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + moving_local: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LineTemperatureLoadType: + class Meta: + name = "line_temperature_load_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + normal: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + temperature: list[TopbottomValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 2, + "max_occurs": 2, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PilesBeamType: + class Meta: + name = "piles_beam_type" + + curve: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "name": "local-y", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + connectivity: ConnectivityType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + buckling_data: None | BucklingDataType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + complex_material: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + complex_section: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + complex_composite: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + made: Steelmadetype = field( + default=Steelmadetype.ROLLED, + metadata={ + "type": "Attribute", + }, + ) + guid: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class VirtualBarType: + class Meta: + name = "virtual_bar_type" + + edge: EdgeType1 = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "name": "local-y", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + connectivity: list[ConnectivityType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 2, + }, + ) + truss_behaviour: None | SimpleTrussChrType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="BF", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + ae: float = field( + metadata={ + "name": "AE", + "type": "Attribute", + "required": True, + "min_inclusive": 1e-05, + "max_inclusive": 1000000000000000.0, + } + ) + unit_mass: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000000.0, + }, + ) + it_g: float = field( + default=10000000.0, + metadata={ + "name": "ItG", + "type": "Attribute", + "min_inclusive": 1e-05, + "max_inclusive": 1000000000000000.0, + }, + ) + i1_e: float = field( + default=10000000.0, + metadata={ + "name": "I1E", + "type": "Attribute", + "min_inclusive": 1e-05, + "max_inclusive": 1000000000000000.0, + }, + ) + i2_e: float = field( + default=10000000.0, + metadata={ + "name": "I2E", + "type": "Attribute", + "min_inclusive": 1e-05, + "max_inclusive": 1000000000000000.0, + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BarType: + class Meta: + name = "bar_type" + + bar_part: list[BarPartType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + apex: list[ApexType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + truss_behaviour: None | TrussChrType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + eccentricity: None | TrussEccentricityType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + type_value: Beamtype = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + shell_model: ShellModelType = field( + default=ShellModelType.NONE, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + maxforce: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e30, + }, + ) + compressions_plasticity: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + tension: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e30, + }, + ) + tensions_plasticity: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DrawingRegionType: + class Meta: + name = "drawing_region_type" + + contour: list[ContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + style: None | StyleType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LineLoadType(CaselessLineLoadResultantType): + class Meta: + name = "line_load_type" + + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class LnfoundationType: + class Meta: + name = "lnfoundation_type" + + bar_part: BarPartType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + referable_parts: None | LnfoundationRefType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + insulation: None | FoundationInsulationType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="F", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + bedding_modulus: float = field( + default=10000.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + }, + ) + analythical_system: FoundationsystemsType = field( + default=FoundationsystemsType.SIMPLE, + metadata={ + "type": "Attribute", + }, + ) + fillmode: int = field( + default=1, + metadata={ + "type": "Attribute", + }, + ) + fillcolor: int = field( + default=0, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class MovingLoadGridType: + class Meta: + name = "moving_load_grid_type" + + local_pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + contour: list[ContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + grid_x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 1000.0, + } + ) + grid_y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 1000.0, + } + ) + edge_x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + edge_y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + } + ) + + +@dataclass(kw_only=True) +class NoshearRegionType: + class Meta: + name = "noshear_region_type" + + automatic: None | NoshearAutoType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + contour: None | ContourType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + base_plate: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PileType: + class Meta: + name = "pile_type" + + beam: PilesBeamType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + point_support: None | PileType.PointSupport = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + line_support: list[PileType.LineSupport] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="PI", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + type_value: PiletypeType = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + division_length: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.1, + "max_inclusive": 100.0, + } + ) + surface_surcharge: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + neutral_level: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1000.0, + } + ) + auto_calculate: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + perimeter_by_contour: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class PointSupport: + rigidity: None | PileRigidityGroupType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | PileRigidityGroupType2 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class LineSupport: + rigidity: None | RigidityDataType0 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | PileRigidityGroupType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + alpha_neg: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + beta_neg: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + guid: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PsrType: + class Meta: + name = "psr_type" + + contour: list[ContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + inactive: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RegionType: + class Meta: + name = "region_type" + + contour: list[ContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class ShearControlRegionType: + class Meta: + name = "shear_control_region_type" + + automatic: None | ShearControlAutoType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + contour: list[ContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + base_plate: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + ignore_shear_check: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 20.0, + } + ) + physical_extension: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.01, + "max_inclusive": 100.0, + }, + ) + reduce_shear_forces: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ShellBucklingType: + class Meta: + name = "shell_buckling_type" + + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + contour: ContourType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + base_shell: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + beta: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 100.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SlabPartType: + class Meta: + name = "slab_part_type" + + contour: list[ContourType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + thickness: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 3, + }, + ) + local_pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stiffness_modifiers: None | SlabStiffnessFactors = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + connections: None | WallConnectionsType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + complex_material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + alignment: VerAlign = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + align_offset: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": -1e20, + "max_inclusive": 1e20, + }, + ) + ortho_alfa: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 3.14159265358979, + }, + ) + ortho_ratio: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + ecc_calc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + ecc_crack: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + refracting_angle: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1.5707963267949, + }, + ) + mesh_size: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e20, + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + application_of_geometric_changes: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class BarRfType: + class Meta: + name = "bar_rf_type" + + base_bar: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stirrups: None | BarRfType.Stirrups = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + longitudinal_bar: None | BarRfType.LongitudinalBar = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Stirrups: + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + start: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + end: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + distance: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class LongitudinalBar: + cross_sectional_position: PointType2D = field( + metadata={ + "name": "cross-sectional_position", + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + anchorage: StartEndType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + prescribed_lengthening: None | StartEndType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + start: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + end: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + auxiliary: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class CaselessSurfaceLoadResultantType: + class Meta: + name = "caseless_surface_load_resultant_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 3, + }, + ) + resultant: list[ResultantType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 3, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_type: ForceLoadType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + apply_on_ecc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + auto_force_dir: None | DirectionType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_sign: None | AutoForceSignType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_type: None | AutoForceTypeType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + assigned_structure: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_projection: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class CaselessSurfaceLoadType: + class Meta: + name = "caseless_surface_load_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + load: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 3, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_type: ForceLoadType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + apply_on_ecc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + auto_force_dir: None | DirectionType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_sign: None | AutoForceSignType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_type: None | AutoForceTypeType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + assigned_structure: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_projection: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + + +@dataclass(kw_only=True) +class CoverType: + class Meta: + name = "cover_type" + + load_bearing_direction: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + supporting_structures: None | CoverReferencelistType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class DiaphragmType: + class Meta: + name = "diaphragm_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="FS", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class ExtrudedFoundationType: + class Meta: + name = "extruded_foundation_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + cuboid_plinth: None | FoundationPlinthType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 10000.0, + } + ) + above: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class FootfallType: + class Meta: + name = "footfall_type" + + position: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + contour: None | ContourType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: None | RegionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + comment: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class InternalPanelType: + class Meta: + name = "internal_panel_type" + + region: None | RegionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + mesh_size: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e20, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class MovingLoadType: + class Meta: + name = "moving_load_type" + + division_points: None | PathDivisionNumberType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + division_distance: None | PathDivisionLengtType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + path_position: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + local_y: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + grid: None | MovingLoadGridType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + added_vehicle_position: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + deleted_vehicle_position: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + vehicle_positions: None | MovingLoadType.VehiclePositions = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + vehicle: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + vehicle_shift_x: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + }, + ) + vehicle_shift_y: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -1000.0, + "max_inclusive": 1000.0, + }, + ) + return_value: bool = field( + default=False, + metadata={ + "name": "return", + "type": "Attribute", + }, + ) + lock_direction: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + cut_to_path: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class VehiclePositions: + position: list[PointType3D] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class PressureLoadType: + class Meta: + name = "pressure_load_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + load_type: ForceLoadType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + apply_on_ecc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + auto_force_dir: None | DirectionType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_sign: None | AutoForceSignType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + auto_force_type: None | AutoForceTypeType = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + assigned_structure: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + load_projection: bool = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + z0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + q0: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + qh: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": -1e20, + "max_inclusive": 1e20, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PunchingAreaType: + class Meta: + name = "punching_area_type" + + base_shell: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + connected_bar: list[GuidListType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 2, + }, + ) + local_pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + reference_points_offset: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + manual_design: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="PU", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + nodal_force_method: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + shell_internal_force_method: ShellForceType = field( + default=ShellForceType.INTEGRATION, + metadata={ + "type": "Attribute", + }, + ) + distance_of_perimeter: float = field( + default=1.5, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 3.0, + }, + ) + perimeter_is_average: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PunchingAreaWallType: + class Meta: + name = "punching_area_wall_type" + + base_shell: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + reference_points_offset: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + wall_base_ray: list[WbrType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 2, + }, + ) + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + downward: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + manual_design: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="PU", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + shell_internal_force_method: ShellForceType = field( + default=ShellForceType.INTEGRATION, + metadata={ + "type": "Attribute", + }, + ) + distance_of_perimeter: float = field( + default=1.5, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 3.0, + }, + ) + perimeter_length_limit: float = field( + default=1000.0, + metadata={ + "type": "Attribute", + "min_inclusive": 1.0, + "max_inclusive": 1000.0, + }, + ) + end_limit: float = field( + default=1.5, + metadata={ + "type": "Attribute", + "min_inclusive": 0.5, + "max_inclusive": 10.0, + }, + ) + perimeter_is_average: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PunchingReinforcementType: + class Meta: + name = "punching_reinforcement_type" + + base_shell: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + punching_area: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + bended_bar: None | PunchingReinforcementType.BendedBar = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + open_stirrups: None | PunchingReinforcementType.OpenStirrups = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + reinforcing_ring: None | PunchingReinforcementType.ReinforcingRing = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + stud_rails: None | PunchingReinforcementType.StudRails = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class BendedBar: + local_center: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + tip_sections_length: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + middle_sections_length: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + height: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + angle: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1.5707963267949, + } + ) + direction: DirectionType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + c_v_auto_calculation: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + c_v: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class OpenStirrups: + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + width: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + length: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + height: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + distance_x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + distance_y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + c_v_auto_calculation: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + c_v: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class ReinforcingRing: + auxiliary_reinforcement: PunchingReinforcementType.ReinforcingRing.AuxiliaryReinforcement = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stirrups: PunchingReinforcementType.ReinforcingRing.Stirrups = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + c_v_auto_calculation: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + c_v: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class AuxiliaryReinforcement: + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + inner_radius: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + } + ) + overlap: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Stirrups: + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + width: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + height: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + max_distance: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class StudRails: + general_product: ( + None | PunchingReinforcementType.StudRails.GeneralProduct + ) = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + peikko_psb_product: ( + None | PunchingReinforcementType.StudRails.PeikkoPsbProduct + ) = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + pattern: StudrailPatterns = field( + default=StudrailPatterns.SEMI_ORTHOGONAL, + metadata={ + "type": "Attribute", + }, + ) + auto_set_s0_s2: bool = field( + default=False, + metadata={ + "name": "auto_set_s0-s2", + "type": "Attribute", + }, + ) + s0: float = field( + default=0.075, + metadata={ + "type": "Attribute", + "min_inclusive": 0.02, + "max_inclusive": 10.0, + }, + ) + s1: float = field( + default=0.15, + metadata={ + "type": "Attribute", + "min_inclusive": 0.03, + "max_inclusive": 10.0, + }, + ) + s2: float = field( + default=0.15, + metadata={ + "type": "Attribute", + "min_inclusive": 0.03, + "max_inclusive": 10.0, + }, + ) + rails_on_circle: int = field( + default=12, + metadata={ + "type": "Attribute", + "min_inclusive": 4, + "max_inclusive": 50, + }, + ) + studs_on_rail: int = field( + default=3, + metadata={ + "type": "Attribute", + "min_inclusive": 2, + "max_inclusive": 50, + }, + ) + height: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_inclusive": 0.01, + "max_inclusive": 10.0, + }, + ) + use_minimal_elements: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + c_v_auto_calculation: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + c_v: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class GeneralProduct: + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class PeikkoPsbProduct: + psh: None | PshData = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + wire_diameter: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 0.1, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RefplaneType: + class Meta: + name = "refplane_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="A", + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{1,256}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class RegionGroupType: + class Meta: + name = "region_group_type" + + region: list[RegionType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + + +@dataclass(kw_only=True) +class RetainingWallType: + class Meta: + name = "retaining_wall_type" + + internal_entity: list[GuidListType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 3, + }, + ) + slab_part: SlabPartType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SffoundationType: + class Meta: + name = "sffoundation_type" + + slab_part: SlabPartType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + referable_parts: None | SffoundationRefType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + insulation: None | FoundationInsulationType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="F", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + bedding_modulus: float = field( + default=10000.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + }, + ) + analythical_system: SlabfoundationsystemsType = field( + default=SlabfoundationsystemsType.SURFACE_SUPPORT_GROUP, + metadata={ + "type": "Attribute", + }, + ) + fillmode: int = field( + default=1, + metadata={ + "type": "Attribute", + }, + ) + fillcolor: int = field( + default=0, + metadata={ + "type": "Attribute", + }, + ) + bedding_modulus_x: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + }, + ) + bedding_modulus_y: None | float = field( + default=None, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SlabType1: + class Meta: + name = "slab_type" + + slab_part: list[SlabPartType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + type_value: Slabtype2 = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceConnectionType: + class Meta: + name = "surface_connection_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + rigidity: None | RigidityDataType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + ref: list[ReferenceType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + local_system: None | OptLocalsysType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="CS", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + distance: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": -10000.0, + "max_inclusive": 10000.0, + }, + ) + interface: float = field( + default=0.0, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceRfType: + class Meta: + name = "surface_rf_type" + + base_shell: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + surface_reinforcement_parameters: GuidListType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + straight: None | SurfaceRfType.Straight = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + centric: None | SurfaceRfType.Centric = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + colour: str = field( + default="0000a0", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + created_by: SrfTreatmentType = field( + default=SrfTreatmentType.MANUAL, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Straight: + direction: DirectionType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + space: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + face: None | SfRcFace = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + cover: float = field( + default=0.02, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Centric: + radial: None | SurfaceRfType.Centric.Radial = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + tangential: None | SurfaceRfType.Centric.Tangential = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + face: None | SfRcFace = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + cover: float = field( + default=0.02, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Radial: + angle: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1.5707963267949, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Tangential: + space: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceShearRfType: + class Meta: + name = "surface_shear_rf_type" + + wire: RfWireType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_shell: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + space_x: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 2.0, + } + ) + space_y: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.001, + "max_inclusive": 2.0, + } + ) + colour: str = field( + default="7b7bcc", + metadata={ + "type": "Attribute", + "pattern": r"[0-9A-Fa-f]{6}", + }, + ) + created_by: SsrfTreatment = field( + default=SsrfTreatment.MANUAL, + metadata={ + "type": "Attribute", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceStressLoadType: + class Meta: + name = "surface_stress_load_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + stress: list[TopbottomValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 3, + }, + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceSupportLoadType: + class Meta: + name = "surface_support_load_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + displacement: list[LocationValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + "max_occurs": 3, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + load_type: MotionType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceSupportType: + class Meta: + name = "surface_support_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + mov_x: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mov_y: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + mov_z: None | StiffBaseType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity: None | RigidityDataType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + rigidity_group: None | RigidityGroupType1 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + local_system: None | OptLocalsysType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="S", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + detach: str = field( + default="", + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceTemperatureLoadType: + class Meta: + name = "surface_temperature_load_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + temperature: list[TopbottomValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 3, + }, + ) + temperature_values: list[TopbottomValue] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "max_occurs": 3, + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + comment: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{0,1023}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class VirtualShellType: + class Meta: + name = "virtual_shell_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_pos: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_x: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_y: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + membrane_stiffness: StiffnessMatrix4Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + flexural_stiffness: StiffnessMatrix4Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + shear_stiffness: StiffnessMatrix2Type = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="FS", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + density: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 1e20, + } + ) + t1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + t2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + alfa_1: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + alfa_2: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 1e20, + } + ) + mesh_size: float = field( + default=0.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1e20, + }, + ) + ignore_in_st_imp_calculation: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WlExternalWallType: + class Meta: + name = "wl_external_wall_type" + + at_0_degree: WlNtType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_90_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_180_degree: WlNtType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_270_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_shell: list[BsType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: None | RegionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + direction_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + load_stripes: int = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 1, + "max_inclusive": 1000, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WlFlatRoofType: + class Meta: + name = "wl_flat_roof_type" + + at_0_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_90_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_180_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_270_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_shell: list[BsType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: None | RegionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + angle: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 6.28318530717959, + } + ) + attic_walls_height: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_inclusive": 0.0, + "max_inclusive": 100.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WlLeantoType: + class Meta: + name = "wl_leanto_type" + + at_0_degree: WlStType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_90_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_180_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_270_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_shell: list[BsType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: None | RegionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + pressure_factor: float = field( + metadata={ + "type": "Attribute", + "required": True, + "min_exclusive": 0.0, + "max_inclusive": 100.0, + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class WlRidgeRoofType: + class Meta: + name = "wl_ridge_roof_type" + + at_0_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_90_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_180_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + at_270_degree: WlTType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + base_shell: list[BsType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + region: None | RegionType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PanelType1: + class Meta: + name = "panel_type" + + region: RegionType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + anchor_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + local_pos: None | PointType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_panels: None | PanelType1.InternalPanels = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + timber_application_data: None | PanelType1.TimberApplicationData = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + camber_simulation: None | CamberType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + connections: None | PanelConnectionsType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + external_plastic_limit_forces: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + external_plastic_limit_moments: None | PlasticityType3D = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_stiffness: None | StiffnessWithFriction = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + external_stiffness: None | StiffnessWithFriction = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_rigidity: None | RigidityDataType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + internal_rigidity_group: None | RigidityGroupType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + external_rigidity: None | RigidityDataType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + external_predefined_rigidity: None | ReferenceType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + external_rigidity_group: None | RigidityGroupType3 = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + type_value: Paneltype2 = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + complex_material: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + complex_section: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + name: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + panelname: None | str = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + in_situ_fabricated: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + gap: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + orthotropy: float = field( + default=1.0, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 1.0, + }, + ) + thickness: float = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + alignment: VerAlign = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + align_offset: None | float = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + ecc_calc: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + ecc_crack: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + internal_moving_local: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + external_moving_local: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + forced_plate: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + panel_width: float = field( + default=1.5, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 100.0, + }, + ) + panel_type: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + ignored_distance: float = field( + default=0.02, + metadata={ + "type": "Attribute", + "min_inclusive": 0.0, + "max_inclusive": 10000.0, + }, + ) + ignored_in_stability: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class InternalPanels: + item: list[InternalPanelType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "min_occurs": 1, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class TimberApplicationData: + factors: None | TimberFactorsType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + panel_type: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + shear_coupling: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + glued_narrow_sides: bool = field( + default=True, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class PtfoundationType: + class Meta: + name = "ptfoundation_type" + + connection_point: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + direction: PointType3D = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + polyhedron: None | PolyhedronType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + extruded_solid: None | ExtrudedFoundationType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + referable_parts: None | PtfoundationRefType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + insulation: None | FoundationInsulationType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + colouring: None | EntityColor = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + default="F", + metadata={ + "type": "Attribute", + "pattern": r"@{0,1}[ -#%'-;=?A-�]{0,50}(\.[0-9]{1,6}){0,2}", + }, + ) + bedding_modulus: float = field( + default=10000.0, + metadata={ + "type": "Attribute", + "min_exclusive": 0.0, + "max_inclusive": 100000000.0, + }, + ) + analythical_system: FoundationsystemsType = field( + default=FoundationsystemsType.SIMPLE, + metadata={ + "type": "Attribute", + }, + ) + complex_material: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + fillmode: int = field( + default=1, + metadata={ + "type": "Attribute", + }, + ) + fillcolor: int = field( + default=0, + metadata={ + "type": "Attribute", + }, + ) + point_connections_stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + point_connections_end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + stage: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + end_stage: LastStageValue | int = field( + default=LastStageValue.LAST_STAGE, + metadata={ + "type": "Attribute", + "min_inclusive": 1, + "max_inclusive": 32767, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SectionType1: + class Meta: + name = "section_type" + + region_group: RegionGroupType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + type_value: Sectiontype2 = field( + metadata={ + "name": "type", + "type": "Attribute", + "required": True, + } + ) + fd_mat: FdMatType = field( + default=FdMatType.VALUE_1_1, + metadata={ + "name": "fd-mat", + "type": "Attribute", + }, + ) + fd_name_code: None | str = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + fd_name_type: None | str = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + fd_name_size: None | str = field( + default=None, + metadata={ + "type": "Attribute", + }, + ) + flags: int = field( + default=1, + metadata={ + "type": "Attribute", + "min_inclusive": 0, + "max_inclusive": 7, + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SolidType: + class Meta: + name = "solid_type" + + facets: RegionGroupType = field( + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + "required": True, + } + ) + style: None | StyleType = field( + default=None, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + guid: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class SurfaceLoadType(CaselessSurfaceLoadResultantType): + class Meta: + name = "surface_load_type" + + load_case: str | LcPtcType | LcPileType | LcFinalCs = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class VehicleLibType: + class Meta: + name = "vehicle_lib_type" + + point_load: list[CaselessPointLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + line_load: list[CaselessLineLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + surface_load: list[CaselessSurfaceLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + name: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[ -#%'-;=?A-�]{1,255}", + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + last_change: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + action: ModificationType = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + hash_order_id: int = field( + default=-1, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + +@dataclass(kw_only=True) +class FoundationType: + class Meta: + name = "foundation_type" + + isolated_foundation: list[PtfoundationType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + wall_foundation: list[LnfoundationType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + foundation_slab: list[SffoundationType] = field( + default_factory=list, + metadata={ + "type": "Element", + "namespace": "urn:strusoft", + }, + ) + + +@dataclass(kw_only=True) +class Database: + class Meta: + name = "database" + namespace = "urn:strusoft" + + construction_stages: None | CsType = field( + default=None, + metadata={ + "type": "Element", + }, + ) + entities: None | Database.Entities = field( + default=None, + metadata={ + "type": "Element", + }, + ) + sections: None | Database.Sections = field( + default=None, + metadata={ + "type": "Element", + }, + ) + materials: None | Database.Materials = field( + default=None, + metadata={ + "type": "Element", + }, + ) + reinforcing_materials: None | Database.ReinforcingMaterials = field( + default=None, + metadata={ + "type": "Element", + }, + ) + composites: None | Database.Composites = field( + default=None, + metadata={ + "type": "Element", + }, + ) + point_connection_types: None | Database.PointConnectionTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + point_support_group_types: None | Database.PointSupportGroupTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + line_connection_types: None | Database.LineConnectionTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + line_support_group_types: None | Database.LineSupportGroupTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + surface_connection_types: None | Database.SurfaceConnectionTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + surface_support_types: None | Database.SurfaceSupportTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + timber_panel_types: None | Database.TimberPanelTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + glc_panel_types: None | Database.GlcPanelTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + clt_panel_types: None | Database.CltPanelTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + ptc_strand_types: None | Database.PtcStrandTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + vehicle_types: None | Database.VehicleTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + bolt_types: None | Database.BoltTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + bar_end_releases_types: None | Database.BarEndReleasesTypes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + geometry: None | Database.Geometry = field( + default=None, + metadata={ + "type": "Element", + }, + ) + user_defined_filter: list[UserfilterType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + user_defined_views: None | Database.UserDefinedViews = field( + default=None, + metadata={ + "type": "Element", + }, + ) + end: EmptyType = field( + metadata={ + "type": "Element", + "required": True, + } + ) + any_element: list[object] = field( + default_factory=list, + metadata={ + "type": "Wildcard", + "namespace": "##any", + }, + ) + struxml_version: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[0-9]{2}\.[0-9]{2}\.[0-9]{3}", + } + ) + source_software: str = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + start_time: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + end_time: XmlDateTime = field( + metadata={ + "type": "Attribute", + "required": True, + } + ) + guid: str = field( + metadata={ + "type": "Attribute", + "required": True, + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + } + ) + soil_as_solid: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + hash: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{40}", + }, + ) + convertid: str = field( + default="00000000-0000-0000-0000-000000000000", + metadata={ + "type": "Attribute", + "pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + }, + ) + standard: Standardtype = field( + default=Standardtype.EC, + metadata={ + "type": "Attribute", + }, + ) + country: Eurocodetype = field( + default=Eurocodetype.COMMON, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) + + @dataclass(kw_only=True) + class Entities: + foundations: list[FoundationType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + soil_elements: None | Database.Entities.SoilElements = field( + default=None, + metadata={ + "type": "Element", + }, + ) + retaining_wall: list[RetainingWallType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + bar: list[BarType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + column_corbel: list[ColumnCorbelType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + steel_bar_haunch: list[StbarHaunchType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + steel_bar_stiffener: list[StbarSiffenerType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + rc_beam_reduction_zone: list[BeamReductionZoneType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + hidden_bar: list[HiddenBarType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + bar_reinforcement: list[BarRfType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + slab: list[SlabType1] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + shell_buckling: list[ShellBucklingType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + wall_corbel: list[WallCorbelType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_reinforcement_parameters: list[ShellRfParamsType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_reinforcement: list[SurfaceRfType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_reinforcement_single_by_line: list[SurfaceRfLineType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_reinforcement_single_by_rectangle: list[SurfaceRfRectType] = ( + field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + ) + punching_area: list[PunchingAreaType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + punching_area_wall: list[PunchingAreaWallType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + punching_reinforcement: list[PunchingReinforcementType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + no_shear_region: list[NoshearRegionType] = field( + default_factory=list, + metadata={ + "name": "no-shear_region", + "type": "Element", + }, + ) + shear_control_region: list[ShearControlRegionType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_shear_reinforcement: list[SurfaceShearRfType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + panel: list[PanelType1] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + post_tensioned_cable: list[PtcType] = field( + default_factory=list, + metadata={ + "name": "post-tensioned_cable", + "type": "Element", + }, + ) + loads: None | Database.Entities.Loads = field( + default=None, + metadata={ + "type": "Element", + }, + ) + supports: None | Database.Entities.Supports = field( + default=None, + metadata={ + "type": "Element", + }, + ) + advanced_fem: None | Database.Entities.AdvancedFem = field( + default=None, + metadata={ + "name": "advanced-fem", + "type": "Element", + }, + ) + storeys: None | Database.Entities.Storeys = field( + default=None, + metadata={ + "type": "Element", + }, + ) + axes: None | Database.Entities.Axes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + reference_planes: None | Database.Entities.ReferencePlanes = field( + default=None, + metadata={ + "type": "Element", + }, + ) + labelled_sections_geometry: ( + None | Database.Entities.LabelledSectionsGeometry + ) = field( + default=None, + metadata={ + "type": "Element", + }, + ) + result_points: None | Database.Entities.ResultPoints = field( + default=None, + metadata={ + "type": "Element", + }, + ) + result_lines: None | Database.Entities.ResultLines = field( + default=None, + metadata={ + "type": "Element", + }, + ) + tsolids: None | Database.Entities.Tsolids = field( + default=None, + metadata={ + "type": "Element", + }, + ) + peak_smoothing_region: list[PsrType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + regions: None | Database.Entities.Regions = field( + default=None, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class SoilElements: + strata: StrataType = field( + metadata={ + "type": "Element", + "required": True, + } + ) + borehole: list[BoreholeType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + filling: list[FillingType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + excavation: list[ExcavationType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + pile: list[PileType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class Loads: + point_load: list[PointLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + line_load: list[LineLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + pressure_load: list[PressureLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_load: list[SurfaceLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + line_temperature_variation_load: list[LineTemperatureLoadType] = ( + field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + ) + surface_temperature_variation_load: list[ + SurfaceTemperatureLoadType + ] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + line_stress_load: list[LineStressLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_stress_load: list[SurfaceStressLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + point_support_motion_load: list[PointSupportLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + line_support_motion_load: list[LineSupportLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_support_motion_load: list[SurfaceSupportLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + mass: list[MassPointType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + load_case_mass_conversion_table: None | MassConversionType = field( + default=None, + metadata={ + "type": "Element", + }, + ) + seismic_load: None | SeismicLoadType = field( + default=None, + metadata={ + "type": "Element", + }, + ) + ec_g2_seismic_load: None | EcG2SeismicLoadType = field( + default=None, + metadata={ + "name": "EC_G2_seismic_load", + "type": "Element", + }, + ) + footfall_analysis_data: list[FootfallType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + ground_acceleration: None | GroundAccelerationType = field( + default=None, + metadata={ + "type": "Element", + }, + ) + excitation_force: None | ExcitationForceType = field( + default=None, + metadata={ + "type": "Element", + }, + ) + periodic_excitation: None | PeriodicExcitationType = field( + default=None, + metadata={ + "type": "Element", + }, + ) + moving_load: list[MovingLoadType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + load_case: list[LoadCaseType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + load_combination: list[LoadCombinationType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + load_group_table: None | LoadGroupTable = field( + default=None, + metadata={ + "type": "Element", + }, + ) + wind_loads_external_wall: list[WlExternalWallType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + wind_loads_flat_roof: list[WlFlatRoofType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + wind_loads_lean_to: list[WlLeantoType] = field( + default_factory=list, + metadata={ + "name": "wind_loads_lean-to", + "type": "Element", + }, + ) + wind_loads_ridge_roof: list[WlRidgeRoofType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class Supports: + point_support: list[PointSupportType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + line_support: list[LineSupportType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_support: list[SurfaceSupportType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + stiffness_point: list[StiffnessPointType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class AdvancedFem: + connected_points: list[ConnectedPointsType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + connected_lines: list[ConnectedLinesType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + surface_connection: list[SurfaceConnectionType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + virtual_bar: list[VirtualBarType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + virtual_shell: list[VirtualShellType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + diaphragm: list[DiaphragmType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + steel_joint: list[SteelJointType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + general_steel_joint: list[GenStjointType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + cover: list[CoverType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + building_cover: list[BuildingCoverType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class Storeys: + storey: list[StoreyType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Axes: + axis: list[AxisType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + "max_occurs": 1024, + }, + ) + + @dataclass(kw_only=True) + class ReferencePlanes: + reference_plane: list[RefplaneType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class LabelledSectionsGeometry: + section_geometry: list[LabsecgeomType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class ResultPoints: + result_point: list[RespointType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class ResultLines: + result_line: list[ReslineType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Tsolids: + polyhedron: list[PolyhedronType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Regions: + region: list[DrawingRegionType] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + }, + ) + + @dataclass(kw_only=True) + class Sections: + section: list[SectionType1] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + complex_section: list[ComplexSectionType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class Materials: + material: list[MaterialType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + complex_material: list[ComplexMaterialType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class ReinforcingMaterials: + material: list[RfmaterialType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class Composites: + composite_section: list[CompositeData] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + complex_composite: list[ComplexCompositeType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class PointConnectionTypes: + predefined_type: list[RigidityDatalibType2] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class PointSupportGroupTypes: + predefined_type: list[RigidityDatalibType2] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class LineConnectionTypes: + predefined_type: list[RigidityDatalibType3] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class LineSupportGroupTypes: + predefined_type: list[RigidityDatalibType2] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class SurfaceConnectionTypes: + predefined_type: list[RigidityDatalibType1] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class SurfaceSupportTypes: + predefined_type: list[RigidityDatalibType1] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class TimberPanelTypes: + predefined_type: list[TimberpanelLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class GlcPanelTypes: + predefined_type: list[GlcpanelLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class CltPanelTypes: + predefined_type: list[CltpanelLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class PtcStrandTypes: + predefined_type: list[PtcStrandLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class VehicleTypes: + predefined_type: list[VehicleLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class BoltTypes: + predefined_type: list[BoltLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class BarEndReleasesTypes: + predefined_type: list[BarEndLibType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class Geometry: + curve: list[CurveType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + point: list[PointType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + region: list[DrawingRegionType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + solid: list[SolidType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + text: list[TextType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + linear_dimension: list[DimlineType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + arc_dimension: list[DimarcType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + diameter_dimension: list[DimdiamType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + radius_dimension: list[DimradiusType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + angle_dimension: list[DimangleType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + level_dimension: list[DimfloorType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + line_type: list[LinetypeType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + layer: list[LayerType] = field( + default_factory=list, + metadata={ + "type": "Element", + }, + ) + + @dataclass(kw_only=True) + class UserDefinedViews: + view: list[ViewType1] = field( + default_factory=list, + metadata={ + "type": "Element", + "min_occurs": 1, + "max_occurs": 128, + }, + ) + actual_view: None | str = field( + default=None, + metadata={ + "type": "Attribute", + "pattern": r"[ -#%'-;=?A-�]{1,255}", + }, + ) + physical_view: bool = field( + default=False, + metadata={ + "type": "Attribute", + }, + ) + display_mode: Displaymodes = field( + default=Displaymodes.WIREFRAME, + metadata={ + "type": "Attribute", + }, + ) + any_attributes: dict[str, str] = field( + default_factory=dict, + metadata={ + "type": "Attributes", + "namespace": "##any", + }, + ) diff --git a/FemDesign.Python/femdesign/io.py b/FemDesign.Python/femdesign/io.py new file mode 100644 index 000000000..0bef5998e --- /dev/null +++ b/FemDesign.Python/femdesign/io.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from dataclasses import dataclass +from pathlib import Path +from typing import Iterable, Tuple +import uuid + +from xsdata.formats.dataclass.parsers import XmlParser +from xsdata.formats.dataclass.serializers import XmlSerializer +from xsdata.formats.dataclass.serializers.config import SerializerConfig +from femdesign.interop import Database + +def serialize_to_struxml(database: Database, pretty_print: bool = True, filepath: str | None = None) -> str: + """ + Serialize the database to StruXML without namespace prefixes. + + Args: + database: The Database object to serialize + pretty_print: Whether to format the XML with indentation + filepath: Optional file path to write the XML content to + + Returns: + StruXML string representation + """ + # Configure serializer + config = SerializerConfig( + pretty_print=pretty_print, + xml_declaration=True, + encoding="utf-8" + ) + + serializer = XmlSerializer(config=config) + + # Use empty string as prefix to remove ns0: + ns_map = {"urn:strusoft": ""} + + xml_content = serializer.render(database, ns_map=ns_map) + + # Post-process to clean up any remaining namespace artifacts + # Replace xmlns:="" with xmlns="" and remove empty namespace prefixes + xml_content = xml_content.replace('xmlns:=""', 'xmlns=""') + xml_content = xml_content.replace('ns0:', '') + xml_content = xml_content.replace('xmlns:ns0=', 'xmlns=') + + # Write to file if filepath is provided + if filepath: + file_path = Path(filepath) + # Create parent directories if they don't exist + file_path.parent.mkdir(parents=True, exist_ok=True) + file_path.write_text(xml_content, encoding='utf-8') + + return xml_content + + +def deserialize_from_filepath(file_path: str) -> Database: + parser = XmlParser() + return parser.parse(file_path, Database) \ No newline at end of file diff --git a/FemDesign.Python/femdesign/utilities/filehelper.py b/FemDesign.Python/femdesign/utilities/filehelper.py index 91e1eaf90..33f87d1f5 100644 --- a/FemDesign.Python/femdesign/utilities/filehelper.py +++ b/FemDesign.Python/femdesign/utilities/filehelper.py @@ -18,11 +18,13 @@ class OutputFileHelper: _strFileExtension = ".str" _struxmlFileExtension = ".struxml" + @staticmethod def GetLogFilePath(outputDirectory: str) -> str: if not os.path.exists(outputDirectory): os.makedirs(outputDirectory) return os.path.abspath( os.path.join(outputDirectory, OutputFileHelper._logFileName) ) - + + @staticmethod def GetFdscriptFilePath(outputDirectory: str, file_name: str = "script") -> str: dir = os.path.join(outputDirectory, OutputFileHelper._scriptsDirectory) if not os.path.exists(dir): @@ -30,7 +32,8 @@ def GetFdscriptFilePath(outputDirectory: str, file_name: str = "script") -> str: path = os.path.abspath( os.path.join(dir, f"{file_name}" + OutputFileHelper._fdscriptFileExtension) ) return path - + + @staticmethod def GetBscFilePath(outputDirectory: str, file_name: str) -> str: dir = os.path.join(outputDirectory, OutputFileHelper._scriptsDirectory, OutputFileHelper._bscDirectory) if not os.path.exists(dir): diff --git a/FemDesign.Python/packaging/publishing.txt b/FemDesign.Python/packaging/publishing.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/FemDesign.Python/packaging/pyproject.toml b/FemDesign.Python/pyproject.toml similarity index 59% rename from FemDesign.Python/packaging/pyproject.toml rename to FemDesign.Python/pyproject.toml index e1af1922c..c88f6f94e 100644 --- a/FemDesign.Python/packaging/pyproject.toml +++ b/FemDesign.Python/pyproject.toml @@ -1,24 +1,35 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + [project] name = "FEM-Design" -version = "0.0.7" +version = "0.0.9" authors = [ { name="FEM-Design", email="femdesign.api@strusoft.com" }, ] maintainers = [ {name = "Marco Pellegrino", email = "marco.pellegrino@strusoft.com"}, - {name = "Illyés Zoltán", email = "sinnach@strusoft.hu"}, ] description = "The FEM-Design API package" readme = "README.md" requires-python = ">=3.8" +dependencies = [ + "pywin32>=306", + "xsdata>=24.1", +] classifiers = [ "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: Microsoft", + "Operating System :: Microsoft :: Windows", ] +license = {text = "MIT"} keywords = ["fem", "fea", "structures", "strusoft", "FEM-Design API"] [project.urls] Homepage = "https://femdesign-api-docs.onstrusoft.com" Repository = "https://github.com/strusoft/femdesign-api/tree/master/FemDesign.Python" -Issues = "https://github.com/strusoft/femdesign-api/issues" \ No newline at end of file +Issues = "https://github.com/strusoft/femdesign-api/issues" + +[tool.setuptools.packages.find] +include = ["femdesign*"] +exclude = ["test*", "packaging*"] \ No newline at end of file diff --git a/FemDesign.Python/strusoft25.xsd b/FemDesign.Python/strusoft25.xsd new file mode 100644 index 000000000..1e15c889d --- /dev/null +++ b/FemDesign.Python/strusoft25.xsd @@ -0,0 +1,7930 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FemDesign.Python/test/test_analysis.py b/FemDesign.Python/test/test_analysis.py index 7754adac0..e926fac9e 100644 --- a/FemDesign.Python/test/test_analysis.py +++ b/FemDesign.Python/test/test_analysis.py @@ -27,3 +27,4 @@ def test_design(): assert xmlDesign.find("gmax") != None assert xmlDesign.find("cmax") == None + diff --git a/FemDesign.Python/test/test_database.py b/FemDesign.Python/test/test_database.py new file mode 100644 index 000000000..34cbe92b8 --- /dev/null +++ b/FemDesign.Python/test/test_database.py @@ -0,0 +1,44 @@ +from pathlib import Path + +from femdesign.io import deserialize_from_filepath, serialize_to_struxml +from femdesign.interop import * +import uuid +from xsdata.models.datatype import XmlDateTime +import pytest + + +def test_serialize_to_struxml_removes_namespace_prefixes() -> None: + + db = Database( + # Required attributes + struxml_version="24.00.003", + source_software="FD Python API", + start_time= XmlDateTime.now(), + end_time= XmlDateTime.now(), + guid= str(uuid.uuid4()), + # Optional attributes with defaults + standard=Standardtype.EC, + country=Eurocodetype.COMMON, + soil_as_solid=False, + convertid="00000000-0000-0000-0000-000000000000", + end =EmptyType(), + ) + + xml_content = serialize_to_struxml(db, pretty_print=False) + + assert xml_content.lstrip().startswith(" None: + asset_path = r"test/assets/concrete_beam.struxml" + + database = deserialize_from_filepath(str(asset_path)) + + assert isinstance(database, Database) + assert database.entities is not None + assert len(database.entities.bar) > 0 + diff --git a/FemDesign.Tests/Assets/sections.struxml b/FemDesign.Tests/Assets/sections.struxml new file mode 100644 index 000000000..2f4d994e5 --- /dev/null +++ b/FemDesign.Tests/Assets/sections.struxml @@ -0,0 +1,90354 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
diff --git a/FemDesign.Tests/FemDesign.Tests.csproj b/FemDesign.Tests/FemDesign.Tests.csproj index 2fa34d669..25a377216 100644 --- a/FemDesign.Tests/FemDesign.Tests.csproj +++ b/FemDesign.Tests/FemDesign.Tests.csproj @@ -171,6 +171,7 @@ + Always diff --git a/FemDesign.Tests/Results/Utils/Read.cs b/FemDesign.Tests/Results/Utils/Read.cs index ace5977ce..30c20c1b9 100644 --- a/FemDesign.Tests/Results/Utils/Read.cs +++ b/FemDesign.Tests/Results/Utils/Read.cs @@ -142,7 +142,7 @@ public void TestGetStabilityResults() FemDesign.Calculate.Analysis analysis = new FemDesign.Calculate.Analysis(stability: stability, calcComb: true, calcStab: true, diaphragm: DiaphragmType.None); - using (var femDesign = new FemDesignConnection(fdInstallationDir: @"C:\Program Files\StruSoft\FEM-Design 24\", outputDir: "My analyzed model", keepOpen: false)) + using (var femDesign = new FemDesignConnection(fdInstallationDir: @"C:\Program Files\StruSoft\FEM-Design 25\", outputDir: "My analyzed model", keepOpen: false)) { femDesign.RunAnalysis(model, analysis); diff --git a/FemDesign.Tests/Sections/SectionDatabaseTests.cs b/FemDesign.Tests/Sections/SectionDatabaseTests.cs index e04bc2c7d..3166c5e4c 100644 --- a/FemDesign.Tests/Sections/SectionDatabaseTests.cs +++ b/FemDesign.Tests/Sections/SectionDatabaseTests.cs @@ -34,25 +34,50 @@ public void GetDefaultTest() } - [TestMethod("Fuzz")] - public void test() + [TestMethod] + public void TestFuzzySearch() { var db = SectionDatabase.GetDefault(); - var choices = db.Sections.Section.Select(s => s._sectionName).ToArray(); - var a = FuzzySharp.Process.ExtractOne("HEA100", choices); - var b = FuzzySharp.Process.ExtractOne("CHS, 30-5.6", choices); - var c = FuzzySharp.Process.ExtractOne("CHS 30/5.6", choices); - var d = FuzzySharp.Process.ExtractOne("hea 100", choices); - var e = FuzzySharp.Process.ExtractOne("150x300", choices); + var section1 = db.SectionByName("HEA100"); + var targetName = "Steel section, HE-A, 100"; + Assert.IsTrue(section1.Name == targetName); - var f = FuzzySharp.Process.ExtractOne("150x20", choices); + section1 = db.SectionByName("HEA-100"); + Assert.IsTrue(section1.Name == targetName); - var test = 1; + section1 = db.SectionByName("HEA_100"); + Assert.IsTrue(section1.Name == targetName); - f = FuzzySharp.Process.ExtractOne("150", choices); + section1 = db.SectionByName("HEA100"); + Assert.IsTrue(section1.Name == targetName); + + section1 = db.SectionByName("Steel section, HE-A, 100"); + Assert.IsTrue(section1.Name == targetName); + + + + section1 = db.SectionByName("CHS 323.9-8.8"); + targetName = "Steel section, CHS, 323.9-8.8"; + Assert.IsTrue(section1.Name == targetName); + + section1 = db.SectionByName("CHS 323.9/8.8"); + Assert.IsTrue(section1.Name == targetName); + + section1 = db.SectionByName("CHS, 323.9-8.8"); + Assert.IsTrue(section1.Name == targetName); + + //Timber section, Rectangle, 66x225 + section1 = db.SectionByName("Timber section, Rectangle, 66x225"); + targetName = "Timber section, Rectangle, 66x225"; + Assert.IsTrue(section1.Name == targetName); + + section1 = db.SectionByName("Rectangle 66x225"); + Assert.IsTrue(section1.Name == targetName); + + section1 = db.SectionByName("Timber 66x225"); + Assert.IsTrue(section1.Name == targetName); - test = 1; } } diff --git a/FEM-Design 24.00.001.cs b/strusoft.cs similarity index 100% rename from FEM-Design 24.00.001.cs rename to strusoft.cs diff --git a/FD-24.00.001-strusoft.xsd b/strusoft.xsd similarity index 100% rename from FD-24.00.001-strusoft.xsd rename to strusoft.xsd