Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/jm/dev/gsa-connector' into nic/dev
Browse files Browse the repository at this point in the history
  • Loading branch information
nic-burgers-arup committed Feb 10, 2022
2 parents 78a37b9 + 15e61f9 commit 571d817
Show file tree
Hide file tree
Showing 10 changed files with 307 additions and 253 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void SetupToNativeFns()
{ typeof(GSALoadCase), GSALoadCaseToNative },
{ typeof(LoadCase), LoadCaseToNative },
{ typeof(GSAAnalysisTask), GSAAnalysisTaskToNative },
{ typeof(GSAAnalysisCase), GSAAnalysisCaseToNative },
//{ typeof(GSAAnalysisCase), GSAAnalysisCaseToNative },
{ typeof(GSACombinationCase), GSACombinationCaseToNative },
{ typeof(LoadCombination), LoadCombinationToNative },
{ typeof(GSALoadBeam), GSALoadBeamToNative },
Expand Down Expand Up @@ -358,6 +358,8 @@ private List<GsaRecord> GSAElement2dToNative(Base speckleObject)
var gsaRecords = Element2dToNative(speckleObject);
var gsaElement = (GsaEl)gsaRecords.First(o => o is GsaEl);
var speckleElement = (GSAElement2D)speckleObject;

gsaElement.Type = speckleElement.type.ToNative();
gsaElement.Colour = speckleElement.colour?.ColourToNative() ?? Colour.NotSet;
gsaElement.Dummy = speckleElement.isDummy;
gsaElement.Group = speckleElement.group.IsPositiveOrNull();
Expand All @@ -368,12 +370,31 @@ private List<GsaRecord> Element2dToNative(Base speckleObject)
{
var retList = new List<GsaRecord>();
var speckleElement = (Element2D)speckleObject;

if (speckleElement.memberType != Objects.Structural.Geometry.MemberType.NotSet)
{
var speckleMember = new GSAMember2D()
{
applicationId = speckleElement.applicationId,
topology = speckleElement.topology,
name = speckleElement.name,
property = speckleElement.property,
memberType = speckleElement.memberType,
offset = speckleElement.offset,
orientationAngle = speckleElement.orientationAngle,
outline = speckleElement.outline,
voids = speckleElement.voids,
units = speckleElement.units
};
return GSAMember2dToNative(speckleMember);
}

var gsaElement = new GsaEl()
{
ApplicationId = speckleElement.applicationId,
Index = speckleElement.GetIndex<GsaEl>(),
Name = speckleElement.name,
Type = speckleElement.type.ToNative(),
//Type = speckleElement.type.ToNative(),
PropertyIndex = IndexByConversionOrLookup<GsaProp2d>(speckleElement.property, ref retList),
ReleaseInclusion = ReleaseInclusion.NotIncluded,
ParentIndex = IndexByConversionOrLookup<GsaMemb>(speckleElement.parent, ref retList)
Expand Down Expand Up @@ -413,17 +434,17 @@ private List<GsaRecord> Element2dToNative(Base speckleObject)
lock (embeddedToBeConvertedLock)
{
#endif
/*
if (!embeddedToBeConverted.ContainsKey(obj.applicationId))
{
embeddedToBeConverted.Add(obj.applicationId, new List<Base>());
}
embeddedToBeConverted[obj.applicationId].Add(obj);
*/
if (!alreadyConverted && !embeddedToBeConverted.ContainsKey(obj.applicationId))
{
embeddedToBeConverted[obj.applicationId] = obj;
}
/*
if (!embeddedToBeConverted.ContainsKey(obj.applicationId))
{
embeddedToBeConverted.Add(obj.applicationId, new List<Base>());
}
embeddedToBeConverted[obj.applicationId].Add(obj);
*/
if (!alreadyConverted && !embeddedToBeConverted.ContainsKey(obj.applicationId))
{
embeddedToBeConverted[obj.applicationId] = obj;
}
#if !DEBUG
}
#endif
Expand Down Expand Up @@ -577,12 +598,14 @@ private List<GsaRecord> GSAMember2dToNative(Base speckleObject)
var speckleMember = (GSAMember2D)speckleObject;
//Dynamic properties
var dynamicMembers = speckleMember.GetMembers();
var memberType = Enum.Parse(typeof(Objects.Structural.Geometry.MemberType2D), speckleMember.memberType.ToString());

var gsaMember = new GsaMemb()
{
ApplicationId = speckleMember.applicationId,
Index = speckleMember.GetIndex<GsaMemb>(),
Name = speckleMember.name,
Type = ToNative(speckleMember.memberType),
Type = ToNative((MemberType2D)memberType),
Colour = speckleMember.colour?.ColourToNative() ?? Colour.NotSet,
Dummy = speckleMember.isDummy,
IsIntersector = true,
Expand Down Expand Up @@ -1343,9 +1366,12 @@ private List<GsaRecord> LoadFaceToNative(Base speckleObject)
Values = speckleLoad.values.Select(v => factor * v).ToList(),
LoadDirection = speckleLoad.direction.ToNative(),
Projected = speckleLoad.isProjected,
ElementIndices = IndexByConversionOrLookup<GsaEl>(speckleLoad.elements.FindAll(o => o is Element2D), ref gsaRecords) ?? new List<int>(),
MemberIndices = IndexByConversionOrLookup<GsaMemb>(speckleLoad.elements.FindAll(o => o is GSAMember2D), ref gsaRecords) ?? new List<int>(),
};
if (speckleLoad.elements != null)
{
gsaLoad.ElementIndices = IndexByConversionOrLookup<GsaEl>(speckleLoad.elements.FindAll(o => o is Element1D || o is Element2D), ref gsaRecords) ?? new List<int>();
gsaLoad.MemberIndices = IndexByConversionOrLookup<GsaMemb>(speckleLoad.elements.FindAll(o => o is GSAMember1D || o is GSAMember2D), ref gsaRecords) ?? new List<int>();
}
if (GetLoadAxis(speckleLoad.loadAxis, speckleLoad.loadAxisType, out var gsaAxisRefType, out var gsaAxisIndex, ref gsaRecords))
{
gsaLoad.AxisRefType = gsaAxisRefType;
Expand Down Expand Up @@ -2794,7 +2820,7 @@ public Speckle.GSA.API.GwaSchema.MemberType ToNative(Objects.Structural.Geometry
case Objects.Structural.Geometry.MemberType2D.VoidCutter2D: return Speckle.GSA.API.GwaSchema.MemberType.Void2d;
default:
Report.ConversionErrors.Add(new Exception(speckleMemberType.ToString() + " is not currently a supported member type for a 2D element."));
return Speckle.GSA.API.GwaSchema.MemberType.NotSet;
return Speckle.GSA.API.GwaSchema.MemberType.Generic2d;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -795,16 +795,16 @@ private ToSpeckleResult GsaAnalysisCaseToSpeckle(GsaRecord nativeObject, GSALaye
name = gsaAnalysisCase.Name,
};
if (gsaAnalysisCase.Index.IsIndex()) speckleAnalysisCase.applicationId = Instance.GsaModel.Cache.GetApplicationId<GsaAnal>(gsaAnalysisCase.Index.Value);
if (gsaAnalysisCase.TaskIndex.IsIndex())
{
speckleAnalysisCase["@task"] = GetTaskFromIndex(gsaAnalysisCase.TaskIndex.Value);
}

if (GetAnalysisCaseFactors(gsaAnalysisCase.Desc, out var loadCases, out var loadFactors))
{
speckleAnalysisCase.loadCases = loadCases;
speckleAnalysisCase.loadFactors = loadFactors;
}
if (gsaAnalysisCase.TaskIndex.IsIndex())
{
var task = GetTaskFromIndex(gsaAnalysisCase.TaskIndex.Value);
task.analysisCases.Add(speckleAnalysisCase);
}
return new ToSpeckleResult(speckleAnalysisCase);
}

Expand Down Expand Up @@ -3018,6 +3018,16 @@ private GSAAnalysisTask GetTaskFromIndex(int index)
return (Instance.GsaModel.Cache.GetSpeckleObjects<GsaTask, GSAAnalysisTask>(index, out var speckleObjects)) ? speckleObjects.First() : null;
}

private GSAAnalysisTask GetAndUpdateTaskFromIndex(int index, ref GSAAnalysisTask speckleTask)
{
var task = GetTaskFromIndex(index);
if(task != null)
{

}
return (Instance.GsaModel.Cache.GetSpeckleObjects<GsaTask, GSAAnalysisTask>(index, out var speckleObjects)) ? speckleObjects.First() : null;
}

private List<double> GetLoadBeamPositions(GsaLoadBeam gsaLoadBeam)
{
List<double> positions = null;
Expand Down
14 changes: 7 additions & 7 deletions Objects/Converters/ConverterGSA/ConverterGSA/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -208,14 +208,14 @@ public static MemberType ToSpeckle(this GwaMemberType gsaMemberType)
}
}

public static MemberType2D ToSpeckle2dMember(this GwaMemberType gsaMemberType)
public static MemberType ToSpeckle2dMember(this GwaMemberType gsaMemberType)
{
switch (gsaMemberType)
{
case GwaMemberType.Slab: return MemberType2D.Slab;
case GwaMemberType.Wall: return MemberType2D.Wall;
case GwaMemberType.Generic2d: return MemberType2D.Generic2D;
case GwaMemberType.Void2d: return MemberType2D.VoidCutter2D;
case GwaMemberType.Slab: return MemberType.Slab;
case GwaMemberType.Wall: return MemberType.Wall;
case GwaMemberType.Generic2d: return MemberType.Generic2D;
case GwaMemberType.Void2d: return MemberType.VoidCutter2D;
default:
throw new Exception(gsaMemberType.ToString() + " is not currently a supported member type.");
}
Expand Down Expand Up @@ -479,8 +479,8 @@ public static SolutionType ToSpeckle(this StructuralSolutionType speckleType)
{
switch (speckleType)
{
case StructuralSolutionType.BUCKLING_NL: return SolutionType.Static;
case StructuralSolutionType.STATIC: return SolutionType.NonlinearStatic;
case StructuralSolutionType.BUCKLING_NL: return SolutionType.NonlinearStatic;
case StructuralSolutionType.STATIC: return SolutionType.Static;
case StructuralSolutionType.MODAL: return SolutionType.Modal;
default: return SolutionType.Static;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ public void MembToSpeckle()
Assert.Equal(gsaMembers[1].Name, speckleMember2d.name);
//Assert.Null(speckleMember2d.baseMesh); //TODO: update once conversion code handles base mesh
Assert.Equal("prop 2D 1", speckleMember2d.property.applicationId);
Assert.Equal(ElementType2D.Quad4, speckleMember2d.type);
//Assert.Equal(ElementType2D.Quad4, speckleMember2d.type);
Assert.Equal(gsaMembers[1].Offset2dZ, speckleMember2d.offset);
Assert.Equal(90, speckleMember2d.orientationAngle);
Assert.Null(speckleMember2d.parent); //not meaningful for member
Expand Down
Loading

0 comments on commit 571d817

Please sign in to comment.