Click or drag to resize

StructuralSurfaceActionDistribution Class

[This is preliminary documentation and is subject to change.]

Defines how surface load can be distributed to other members
Inheritance Hierarchy
SystemObject
  ModelExchanger.AnalysisDataModel.BaseStructuralAnalysisObjectBase
    ModelExchanger.AnalysisDataModel.LoadsStructuralSurfaceActionDistribution

Namespace:  ModelExchanger.AnalysisDataModel.Loads
Assembly:  ModelExchanger.AnalysisDataModel (in ModelExchanger.AnalysisDataModel.dll) Version: 1.13.0+Branch.master.Sha.d583fc64569355d188a9c0818d257b6d0d3e1339
Syntax
C#
public sealed class StructuralSurfaceActionDistribution : StructuralAnalysisObjectBase, 
	IEquatable<StructuralSurfaceActionDistribution>, ILoadAnalysisObject, IStructuralAnalysisObject, IAnalysisObject

The StructuralSurfaceActionDistribution type exposes the following members.

Constructors
  NameDescription
Public methodStructuralSurfaceActionDistribution
Creates a surface load distributed to other members
Top
Properties
  NameDescription
Public propertyDistributionTo
Defines how the load will be distributed
Public propertyEdges
Public propertyId
The ID of the Analysis object. Needs to be unique within the entire model
(Inherited from StructuralAnalysisObjectBase.)
Public propertyCode exampleLayer
Custom created layer name. Used to group entities together
Public propertyLCSAdjustment
Contains more information about LCS adjustments for the 2D member (eg rotation, LCS type, ...)
Public propertyMembers1D
Defines the subset of loaded StructuralCurveMembers. Only taken into account when Type is BeamsAndEdges
Public propertyName
The name of the Analysis object. Needs to be unique within it's type
(Inherited from StructuralAnalysisObjectBase.)
Public propertyType
Defines where the load should be distributed
Top
Methods
  NameDescription
Public methodEquals(Object)
Check if this object is the same as the provided object.
(Overrides StructuralAnalysisObjectBaseEquals(Object).)
Public methodEquals(StructuralAnalysisObjectBase)
Check if this object is the same as the provided object.
(Inherited from StructuralAnalysisObjectBase.)
Public methodEquals(StructuralSurfaceActionDistribution)
Indicates whether the current object is equal to another object of the same type.
Public methodGetHashCode
Retrieves the hashcode of the object
(Overrides StructuralAnalysisObjectBaseGetHashCode.)
Top
Events
  NameDescription
Public eventPropertyChanged (Inherited from StructuralAnalysisObjectBase.)
Top
Extension Methods
  NameDescription
Public Extension MethodToObjectIdentifier
Converts the provided IAnalysisObject into an AnalysisObjectIdentifier
(Defined by IAnalysisObjectExtensions.)
Top
Examples
Creating an instance
using ModelExchanger.AnalysisDataModel.Enums;
using ModelExchanger.AnalysisDataModel.Loads;
using ModelExchanger.AnalysisDataModel.Models;
using ModelExchanger.AnalysisDataModel.StructuralElements;
using ModelExchanger.AnalysisDataModel.Subtypes;
using System;
using System.Collections.Generic;
using System.Linq;
using UnitsNet;

namespace ModelExchanger.AnalysisDataModel.Example.Loads
{
    public sealed class StructuralSurfaceActionDistributionExample : BaseExample<StructuralSurfaceActionDistribution>
    {
        protected override IReadOnlyCollection<StructuralSurfaceActionDistribution> CreateAnalysisObjects(AnalysisModel model)
        {
            var nodeDictionary = model.OfType<StructuralPointConnection>().ToDictionary(node => node.Name);
            var beamDictionary = model.OfType<StructuralCurveMember>().ToDictionary(node => node.Name);

            return new[]
            {
                CreateStructuralSurfaceActionDistributionWithTypeNodes(nodeDictionary),
                CreateStructuralSurfaceActionDistributionWithTypeEdges(nodeDictionary),
                CreateStructuralSurfaceActionDistributionWithTypeBeamsAndEdges(nodeDictionary, beamDictionary),
            };
        }

        private StructuralSurfaceActionDistribution CreateStructuralSurfaceActionDistributionWithTypeBeamsAndEdges(
            Dictionary<string, StructuralPointConnection> nodeDictionary,
            Dictionary<string, StructuralCurveMember> beamDictionary)
        {
            return new StructuralSurfaceActionDistribution(
                Guid.NewGuid(),
                "FL3",
                SurfaceActionDistributionType.BeamsAndEdges,
                new[]
                {
                    CreateLineCurve(nodeDictionary, "N115", "N116"),
                    CreateLineCurve(nodeDictionary, "N116", "N117"),
                    new Curve<StructuralPointConnection>(
                        CurveGeometricalShape.Arc3P,
                        new[]
                        {
                            nodeDictionary["N117"],
                            nodeDictionary["N118"],
                            nodeDictionary["N119"],
                        }),
                    CreateLineCurve(nodeDictionary, "N119", "N115"),
                },
                SurfaceActionDistributionTo.TwoWay)
            {
                Layer = "Load panel",
                LCSAdjustment = new LCSAdjustment<Member2DLCSType>(
                    Member2DLCSType.TiltOfVectorDefinedByPoint)
                {
                    X = Length.FromMeters(10),
                    Y = Length.FromMeters(10),
                    Z = Length.FromMeters(0)
                },
                Members1D = new[]
                {
                    beamDictionary["B46"],
                    beamDictionary["B47"]
                }
            };
        }

        private StructuralSurfaceActionDistribution CreateStructuralSurfaceActionDistributionWithTypeEdges(Dictionary<string, StructuralPointConnection> nodeDictionary) =>
            new StructuralSurfaceActionDistribution(
                Guid.NewGuid(),
                "FL2",
                SurfaceActionDistributionType.Edges,
                new[]
                {
                    CreateLineCurve(nodeDictionary, "N111", "N112"),
                    CreateLineCurve(nodeDictionary, "N112", "N114"),
                    CreateLineCurve(nodeDictionary, "N114", "N113"),
                    CreateLineCurve(nodeDictionary, "N113", "N111")
                },
                SurfaceActionDistributionTo.OneWayX)
            {
                LCSAdjustment = new LCSAdjustment<Member2DLCSType>(Member2DLCSType.YByVector)
                {
                    Rotation = Angle.FromDegrees(45),
                    X = Length.FromMeters(1),
                    Y = Length.FromMeters(1),
                    Z = Length.FromMeters(0)
                }
            };

        private static StructuralSurfaceActionDistribution CreateStructuralSurfaceActionDistributionWithTypeNodes(Dictionary<string, StructuralPointConnection> nodeDictionary) =>
            new StructuralSurfaceActionDistribution(
                Guid.NewGuid(),
                "FL1",
                SurfaceActionDistributionType.Nodes,
                new[]
                {
                    CreateLineCurve(nodeDictionary, "N107", "N108"),
                    CreateLineCurve(nodeDictionary, "N108", "N109"),
                    CreateLineCurve(nodeDictionary, "N109", "N110"),
                    CreateLineCurve(nodeDictionary, "N110", "N107"),
                },
                SurfaceActionDistributionTo.TwoWay
            )
            {
                Layer = "Load Panel"
            };

        private static Curve<StructuralPointConnection> CreateLineCurve(
            Dictionary<string, StructuralPointConnection> nodeDictionary, 
            string nameOfBeginNode,
            string nameOfEndNode)
        {
            return new Curve<StructuralPointConnection>(CurveGeometricalShape.Line,
                new[]
                {
                    nodeDictionary[nameOfBeginNode],
                    nodeDictionary[nameOfEndNode]
                });
        }

    }
}
See Also