public void CreateOffsetComponentTest() { // create the component var comp = new GhSA.Components.CreateOffset(); comp.CreateAttributes(); Component.SetInput(comp, "0.5"); Component.SetInput(comp, -0.75, 1); Component.SetInput(comp, 1.99, 2); Component.SetInput(comp, 0.99, 3); // set output data to Gsa-goo type GsaOffsetGoo output = (GsaOffsetGoo)Component.GetOutput(comp); // cast from -goo to Gsa-GH data type GsaOffset offset = new GsaOffset(); output.CastTo(ref offset); Assert.AreEqual(0.5, offset.X1); Assert.AreEqual(-0.75, offset.X2); Assert.AreEqual(1.99, offset.Y); Assert.AreEqual(0.99, offset.Z); }
public void TestDuplicateOffset() { // create new offset GsaOffset offset = new GsaOffset(); offset.X1 = -1.57; offset.X2 = 2.5; offset.Y = -4.2; offset.Z = 10.5; // duplicate original GsaOffset dup = offset.Duplicate(); // make some changes to original offset.X1 = -1000; offset.X2 = 0.0025; offset.Y = 42; offset.Z = 0; Assert.AreEqual(-1.57, dup.X1); Assert.AreEqual(2.5, dup.X2); Assert.AreEqual(-4.2, dup.Y); Assert.AreEqual(10.5, dup.Z); Assert.AreEqual(-1000, offset.X1); Assert.AreEqual(0.0025, offset.X2); Assert.AreEqual(42, offset.Y); Assert.AreEqual(0, offset.Z); }
public void TestCreateOffset() { // create new offset GsaOffset offset = new GsaOffset(); offset.X1 = 1.57; offset.X2 = -2.5; offset.Y = 4.2; offset.Z = -10.5; Assert.AreEqual(1.57, offset.X1); Assert.AreEqual(-2.5, offset.X2); Assert.AreEqual(4.2, offset.Y); Assert.AreEqual(-10.5, offset.Z); }
protected override void SolveInstance(IGH_DataAccess DA) { GsaOffset offset = new GsaOffset(); GsaOffset gsaoffset = new GsaOffset(); if (DA.GetData(0, ref gsaoffset)) { offset = gsaoffset.Duplicate(); } if (offset != null) { //inputs double x1 = 0; if (DA.GetData(1, ref x1)) { offset.X1 = x1; } double x2 = 0; if (DA.GetData(2, ref x2)) { offset.X2 = x2; } double y = 0; if (DA.GetData(3, ref y)) { offset.Y = y; } double z = 0; if (DA.GetData(4, ref z)) { offset.Z = z; } //outputs DA.SetData(0, new GsaOffsetGoo(offset)); DA.SetData(1, offset.X1); DA.SetData(2, offset.X2); DA.SetData(3, offset.Y); DA.SetData(4, offset.Z); } }
protected override void SolveInstance(IGH_DataAccess DA) { double x1 = 0; double x2 = 0; double y = 0; double z = 0; GH_Number ghOffsetX1 = new GH_Number(); if (DA.GetData(0, ref ghOffsetX1)) { GH_Convert.ToDouble(ghOffsetX1, out x1, GH_Conversion.Both); } GH_Number ghOffsetX2 = new GH_Number(); if (DA.GetData(1, ref ghOffsetX2)) { GH_Convert.ToDouble(ghOffsetX2, out x2, GH_Conversion.Both); } GH_Number ghOffsetY = new GH_Number(); if (DA.GetData(2, ref ghOffsetY)) { GH_Convert.ToDouble(ghOffsetY, out y, GH_Conversion.Both); } GH_Number ghOffsetZ = new GH_Number(); if (DA.GetData(3, ref ghOffsetZ)) { GH_Convert.ToDouble(ghOffsetZ, out z, GH_Conversion.Both); } GsaOffset offset = new GsaOffset { X1 = x1, X2 = x2, Y = y, Z = z }; DA.SetData(0, new GsaOffsetGoo(offset.Duplicate())); }
protected override void SolveInstance(IGH_DataAccess DA) { GsaElement1d gsaElement1d = new GsaElement1d(); if (DA.GetData(0, ref gsaElement1d)) { GsaElement1d elem = gsaElement1d.Duplicate(); // #### inputs #### // 1 curve GH_Line ghcrv = new GH_Line(); if (DA.GetData(1, ref ghcrv)) { Line crv = new Line(); if (GH_Convert.ToLine(ghcrv, ref crv, GH_Conversion.Both)) { LineCurve ln = new LineCurve(crv); GsaElement1d tmpelem = new GsaElement1d(ln) { ID = elem.ID, Element = elem.Element, ReleaseEnd = elem.ReleaseEnd, ReleaseStart = elem.ReleaseStart }; elem = tmpelem; } } // 2 section GH_ObjectWrapper gh_typ = new GH_ObjectWrapper(); if (DA.GetData(2, ref gh_typ)) { GsaSection section = new GsaSection(); if (gh_typ.Value is GsaSection) { gh_typ.CastTo(ref section); } else if (gh_typ.Value is GH_Number) { if (GH_Convert.ToInt32((GH_Number)gh_typ.Value, out int idd, GH_Conversion.Both)) { section.ID = idd; } } elem.Section = section; } // 3 offset GsaOffset offset = new GsaOffset(); if (DA.GetData(3, ref offset)) { elem.Element.Offset.X1 = offset.X1; elem.Element.Offset.X2 = offset.X2; elem.Element.Offset.Y = offset.Y; elem.Element.Offset.Z = offset.Z; } // 4 start release GsaBool6 start = new GsaBool6(); if (DA.GetData(4, ref start)) { elem.ReleaseStart = start; //should handle setting the release in elem.Element.SetRelease } // 5 end release GsaBool6 end = new GsaBool6(); if (DA.GetData(5, ref end)) { elem.ReleaseEnd = end; //should handle setting the release in elem.Element.SetRelease } // 6 orientation angle GH_Number ghangle = new GH_Number(); if (DA.GetData(6, ref ghangle)) { if (GH_Convert.ToDouble(ghangle, out double angle, GH_Conversion.Both)) { elem.Element.OrientationAngle = angle; } } // 7 orientation node GH_Integer ghori = new GH_Integer(); if (DA.GetData(7, ref ghori)) { if (GH_Convert.ToInt32(ghori, out int orient, GH_Conversion.Both)) { elem.Element.OrientationNode = orient; } } // 8 type GH_Integer ghinteg = new GH_Integer(); if (DA.GetData(8, ref ghinteg)) { if (GH_Convert.ToInt32(ghinteg, out int type, GH_Conversion.Both)) { elem.Element.Type = Util.Gsa.GsaToModel.Element1dType(type); } } // 9 ID GH_Integer ghID = new GH_Integer(); if (DA.GetData(9, ref ghID)) { if (GH_Convert.ToInt32(ghID, out int id, GH_Conversion.Both)) { elem.ID = id; } } // 10 name GH_String ghnm = new GH_String(); if (DA.GetData(10, ref ghnm)) { if (GH_Convert.ToString(ghnm, out string name, GH_Conversion.Both)) { elem.Element.Name = name; } } // 11 Group GH_Integer ghgrp = new GH_Integer(); if (DA.GetData(11, ref ghgrp)) { if (GH_Convert.ToInt32(ghgrp, out int grp, GH_Conversion.Both)) { elem.Element.Group = grp; } } // 12 Colour GH_Colour ghcol = new GH_Colour(); if (DA.GetData(12, ref ghcol)) { if (GH_Convert.ToColor(ghcol, out System.Drawing.Color col, GH_Conversion.Both)) { elem.Element.Colour = col; } } // #### outputs #### DA.SetData(0, new GsaElement1dGoo(elem)); DA.SetData(1, elem.Line); DA.SetData(2, elem.Section); GsaOffset offset1 = new GsaOffset { X1 = elem.Element.Offset.X1, X2 = elem.Element.Offset.X2, Y = elem.Element.Offset.Y, Z = elem.Element.Offset.Z }; DA.SetData(3, offset1); DA.SetData(4, elem.ReleaseStart); DA.SetData(5, elem.ReleaseEnd); DA.SetData(6, elem.Element.OrientationAngle); DA.SetData(7, elem.Element.OrientationNode); DA.SetData(8, elem.Element.Type); DA.SetData(9, elem.ID); DA.SetData(10, elem.Element.Name); DA.SetData(11, elem.Element.Group); DA.SetData(12, elem.Element.Colour); try { DA.SetData(13, elem.Element.ParentMember.Member); } catch (Exception) { } //DA.SetData(16, gsaElement1d.Element.IsDummy); } }
protected override void SolveInstance(IGH_DataAccess DA) { GsaProp2d gsaProp2d = new GsaProp2d(); if (DA.GetData(0, ref gsaProp2d)) { GsaProp2d prop = gsaProp2d.Duplicate(); // #### inputs #### // 1 thickness string thk = ""; //prop.Prop2d.Thickness; if (DA.GetData(1, ref thk)) { //prop.Prop2d.Thickness = thk; } // 2 Material // to be implemented // 3 analysis type int analtype = 0; //prop.Prop2d.Thickness; if (DA.GetData(3, ref analtype)) { prop.Prop2d.MaterialAnalysisProperty = analtype; } // 4 alignment string ali = ""; if (DA.GetData(4, ref ali)) { // to be implement / GsaAPI can handle alignment / reference surface } // 5 offset GsaOffset offsetGSA = new GsaOffset(); double offset = 0; if (DA.GetData(5, ref offsetGSA)) { //prop.Prop2d.Offeset = offsetGSA.Z; } else if (DA.GetData(5, ref offset)) { //prop.Prop2d.Offeset = offset; } // 6 ID GH_Integer ghID = new GH_Integer(); if (DA.GetData(6, ref ghID)) { if (GH_Convert.ToInt32(ghID, out int id, GH_Conversion.Both)) { prop.ID = id; } } // 7 name GH_String ghnm = new GH_String(); if (DA.GetData(7, ref ghnm)) { if (GH_Convert.ToString(ghnm, out string name, GH_Conversion.Both)) { prop.Prop2d.Name = name; } } // 8 Colour GH_Colour ghcol = new GH_Colour(); if (DA.GetData(8, ref ghcol)) { if (GH_Convert.ToColor(ghcol, out System.Drawing.Color col, GH_Conversion.Both)) { prop.Prop2d.Colour = col; } } //#### outputs #### DA.SetData(0, new GsaProp2dGoo(prop)); //DA.SetData(1, gsaProp2d.Thickness); // GsaAPI to be updated //DA.SetData(2, gsaProp2d.Prop2d.Material); // to be implemented DA.SetData(3, prop.Prop2d.MaterialAnalysisProperty); // GsaAPI to be updated //DA.SetData(4, gsaProp2d.??); GsaAPI to include alignment / reference surface GsaOffset gsaoffset = new GsaOffset(); //offset.Z = gsaProp2d.Prop2d.Offset; // GsaAPI to include prop2d offset DA.SetData(5, gsaoffset); DA.SetData(6, prop.ID); DA.SetData(7, prop.Prop2d.Name); DA.SetData(8, prop.Prop2d.Colour); } }
protected override void SolveInstance(IGH_DataAccess DA) { GsaElement3d gsaElement3d = new GsaElement3d(); if (DA.GetData(0, ref gsaElement3d)) { if (gsaElement3d == null) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Element3D input is null"); } GsaElement3d elem = gsaElement3d.Duplicate(); // #### inputs #### // no good way of updating location of mesh on the fly // // suggest users re-create from scratch // // 1 ID List <GH_Integer> ghID = new List <GH_Integer>(); List <int> in_ids = new List <int>(); if (DA.GetDataList(1, ghID)) { for (int i = 0; i < ghID.Count; i++) { if (i > elem.Elements.Count) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "ID input List Length is longer than number of elements." + System.Environment.NewLine + "Excess ID's have been ignored"); continue; } if (GH_Convert.ToInt32(ghID[i], out int id, GH_Conversion.Both)) { if (in_ids.Contains(id)) { if (id > 0) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "ID input(" + i + ") = " + id + " already exist in your input list." + System.Environment.NewLine + "You must provide a list of unique IDs, or set ID = 0 if you want to let GSA handle the numbering"); continue; } } in_ids.Add(id); } } } List <GH_ObjectWrapper> gh_types = new List <GH_ObjectWrapper>(); // 2 section //List<GsaProp2d> in_prop2Ds = new List<GsaProp2d>(); //if (DA.GetDataList(2, gh_types)) //{ // for (int i = 0; i< gh_types.Count; i++) // { // if (i > elem.Elements.Count) // AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "PA input List Length is longer than number of elements." + System.Environment.NewLine + "Excess PA's have been ignored"); // GH_ObjectWrapper gh_typ = gh_types[i]; // GsaProp2d prop2d = new GsaProp2d(); // if (gh_typ.Value is GsaProp2dGoo) // { // gh_typ.CastTo(ref prop2d); // in_prop2Ds.Add(prop2d); // elem.Elements[i].Property = 0; // } // else // { // if (GH_Convert.ToInt32(gh_typ.Value, out int idd, GH_Conversion.Both)) // { // elem.Elements[i].Property = idd; // elem.Properties[i] = null; // } // else // { // AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Unable to convert PA input to a 2D Property of reference integer"); // return; // } // } // } //} // 3 Group List <GH_Integer> ghgrp = new List <GH_Integer>(); List <int> in_groups = new List <int>(); if (DA.GetDataList(3, ghgrp)) { for (int i = 0; i < ghgrp.Count; i++) { if (i > elem.Elements.Count) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Group input List Length is longer than number of elements." + System.Environment.NewLine + "Excess Group numbers have been ignored"); continue; } if (GH_Convert.ToInt32(ghgrp[i], out int grp, GH_Conversion.Both)) { in_groups.Add(grp); } } } // 4 name List <GH_String> ghnm = new List <GH_String>(); List <string> in_names = new List <string>(); if (DA.GetDataList(4, ghnm)) { for (int i = 0; i < ghnm.Count; i++) { if (i > elem.Elements.Count) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Name input List Length is longer than number of elements." + System.Environment.NewLine + "Excess Names have been ignored"); continue; } if (GH_Convert.ToString(ghnm[i], out string name, GH_Conversion.Both)) { in_names.Add(name); } } } // 5 Colour List <GH_Colour> ghcol = new List <GH_Colour>(); List <System.Drawing.Color> in_colours = new List <System.Drawing.Color>(); if (DA.GetDataList(5, ghcol)) { for (int i = 0; i < ghcol.Count; i++) { if (i > elem.Elements.Count) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Colour input List Length is longer than number of elements." + System.Environment.NewLine + "Excess Colours have been ignored"); continue; } if (GH_Convert.ToColor(ghcol[i], out System.Drawing.Color col, GH_Conversion.Both)) { in_colours.Add(col); } } } // 6 Dummy List <GH_Boolean> ghdum = new List <GH_Boolean>(); List <bool> in_dummies = new List <bool>(); if (DA.GetDataList(6, ghdum)) { for (int i = 0; i < ghdum.Count; i++) { if (i > elem.Elements.Count) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Dummy input List Length is longer than number of elements." + System.Environment.NewLine + "Excess Dummy booleans have been ignored"); continue; } if (GH_Convert.ToBoolean(ghdum[i], out bool dum, GH_Conversion.Both)) { in_dummies.Add(dum); } } } // loop through all elements and set collected lists. // handle too short or too long input lists here // for short lists copy last item for (int i = 0; i < elem.Elements.Count; i++) { //if (in_prop2Ds.Count > 0) //{ // if (i < in_prop2Ds.Count) // elem.Properties[i] = in_prop2Ds[i]; // else // elem.Properties[i] = in_prop2Ds[in_prop2Ds.Count - 1]; //} if (in_ids.Count > 0) { if (i < in_ids.Count) { elem.ID[i] = in_ids[i]; } else { elem.ID[i] = 0; // do not set ID (element number) as it must be unique } } if (in_names.Count > 0) { if (i < in_names.Count) { elem.Elements[i].Name = in_names[i]; } else { elem.Elements[i].Name = in_names[in_names.Count - 1]; } } if (in_groups.Count > 0) { if (i < in_groups.Count) { elem.Elements[i].Group = in_groups[i]; } else { elem.Elements[i].Group = in_groups[in_groups.Count - 1]; } } if (in_colours.Count > 0) { if (i < in_colours.Count) { elem.Elements[i].Colour = in_colours[i]; } else { elem.Elements[i].Colour = in_colours[in_colours.Count - 1]; } } if (in_dummies.Count > 0) { if (i < in_dummies.Count) { elem.Elements[i].IsDummy = in_dummies[i]; } else { elem.Elements[i].IsDummy = in_dummies[in_dummies.Count - 1]; } } } // convert mesh to output meshes List <Mesh> out_meshes = new List <Mesh>(); Mesh x = elem.NgonMesh; List <MeshNgon> ngons = x.GetNgonAndFacesEnumerable().ToList(); for (int i = 0; i < ngons.Count; i++) { Mesh m = new Mesh(); m.Vertices.AddVertices(x.Vertices.ToList()); List <int> faceindex = ngons[i].FaceIndexList().Select(u => (int)u).ToList(); for (int j = 0; j < faceindex.Count; j++) { m.Faces.AddFace(x.Faces[faceindex[j]]); } m.Vertices.CullUnused(); m.RebuildNormals(); out_meshes.Add(m); } // #### outputs #### DA.SetData(0, new GsaElement3dGoo(elem)); DA.SetDataList(1, elem.ID); DA.SetDataList(2, out_meshes); List <GsaOffset> out_offsets = new List <GsaOffset>(); List <string> type = new List <string>(); List <string> out_names = new List <string>(); List <int> out_groups = new List <int>(); List <System.Drawing.Color> out_colours = new List <System.Drawing.Color>(); List <int> pmems = new List <int>(); List <bool> out_dummies = new List <bool>(); for (int i = 0; i < elem.Elements.Count; i++) { GsaOffset offset1 = new GsaOffset { Z = elem.Elements[i].Offset.Z }; out_offsets.Add(offset1); type.Add(elem.Elements[i].TypeAsString()); out_names.Add(elem.Elements[i].Name); out_groups.Add(elem.Elements[i].Group); out_colours.Add((System.Drawing.Color)elem.Elements[i].Colour); out_dummies.Add(elem.Elements[i].IsDummy); try { pmems.Add(elem.Elements[i].ParentMember.Member); } catch (Exception) { pmems.Add(0); } ; } //DA.SetDataList(3, elem.Properties); DA.SetDataList(4, out_groups); DA.SetDataList(5, type); DA.SetDataList(6, out_names); DA.SetDataList(7, out_colours); DA.SetDataList(8, out_dummies); DA.SetDataList(9, pmems); } }
protected override void SolveInstance(IGH_DataAccess DA) { GsaElement2d gsaElement2d = new GsaElement2d(); if (DA.GetData(0, ref gsaElement2d)) { GsaElement2d elem = gsaElement2d.Duplicate(); // #### inputs #### // no good way of updating location of mesh on the fly // // suggest users re-create from scratch // // 1 section List <GH_ObjectWrapper> gh_types = new List <GH_ObjectWrapper>(); if (DA.GetDataList(2, gh_types)) { for (int i = 0; i < gh_types.Count; i++) { GH_ObjectWrapper gh_typ = gh_types[i]; GsaProp2d prop2d = new GsaProp2d(); if (gh_typ.Value is GsaProp2d) { gh_typ.CastTo(ref prop2d); } else if (gh_typ.Value is GH_Number) { if (GH_Convert.ToInt32((GH_Number)gh_typ.Value, out int idd, GH_Conversion.Both)) { prop2d.ID = idd; } } List <GsaProp2d> prop2Ds = new List <GsaProp2d>(); for (int j = 0; j < elem.Elements.Count; j++) { prop2Ds.Add(prop2d); } elem.Properties = prop2Ds; } } // 2 offset List <GsaOffset> offset = new List <GsaOffset>(); if (DA.GetDataList(2, offset)) { for (int i = 0; i < offset.Count; i++) { elem.Elements[i].Offset.Z = offset[i].Z; } } // 3 element type / analysis order List <GH_Integer> ghinteg = new List <GH_Integer>(); if (DA.GetDataList(3, ghinteg)) { for (int i = 0; i < ghinteg.Count; i++) { if (GH_Convert.ToInt32(ghinteg[i], out int type, GH_Conversion.Both)) { //elem.Elements[i].Type = Util.Gsa.GsaToModel.Element2dType(type); Note: Type on 2D element should be analysis order - GsaAPI bug? } } } // 4 ID List <GH_Integer> ghID = new List <GH_Integer>(); if (DA.GetDataList(4, ghID)) { for (int i = 0; i < ghID.Count; i++) { if (GH_Convert.ToInt32(ghID[i], out int id, GH_Conversion.Both)) { elem.ID[i] = id; } } } // 5 name List <GH_String> ghnm = new List <GH_String>(); if (DA.GetDataList(5, ghnm)) { for (int i = 0; i < ghnm.Count; i++) { if (GH_Convert.ToString(ghnm[i], out string name, GH_Conversion.Both)) { elem.Elements[i].Name = name; } } } // 6 Group List <GH_Integer> ghgrp = new List <GH_Integer>(); if (DA.GetDataList(6, ghgrp)) { for (int i = 0; i < ghgrp.Count; i++) { if (GH_Convert.ToInt32(ghgrp[i], out int grp, GH_Conversion.Both)) { elem.Elements[i].Group = grp; } } } // 7 Colour List <GH_Colour> ghcol = new List <GH_Colour>(); if (DA.GetDataList(7, ghcol)) { for (int i = 0; i < ghcol.Count; i++) { if (GH_Convert.ToColor(ghcol[i], out System.Drawing.Color col, GH_Conversion.Both)) { elem.Elements[i].Colour = col; } } } // #### outputs #### DA.SetData(0, new GsaElement2dGoo(elem)); DA.SetData(1, elem.Mesh); List <GsaOffset> offsets = new List <GsaOffset>(); //List<int> anal = new List<int>(); List <string> names = new List <string>(); List <int> groups = new List <int>(); List <System.Drawing.Color> colours = new List <System.Drawing.Color>(); List <int> pmems = new List <int>(); for (int i = 0; i < elem.Elements.Count; i++) { GsaOffset offset1 = new GsaOffset { Z = elem.Elements[i].Offset.Z }; offsets.Add(offset1); //anal.Add(gsaElement2d.Elements[i].Type); names.Add(elem.Elements[i].Name); groups.Add(elem.Elements[i].Group); colours.Add((System.Drawing.Color)elem.Elements[i].Colour); try { pmems.Add(elem.Elements[i].ParentMember.Member); } catch (Exception) { pmems.Add(0); } ; } DA.SetDataList(2, elem.Properties); DA.SetDataList(3, offsets); //DA.SetDataList(4, anal); DA.SetDataList(5, elem.ID); DA.SetDataList(6, names); DA.SetDataList(7, groups); DA.SetDataList(8, colours); DA.SetDataList(9, pmems); } }
protected override void SolveInstance(IGH_DataAccess DA) { GsaMember2d gsaMember2d = new GsaMember2d(); if (DA.GetData(0, ref gsaMember2d)) { GsaMember2d mem = gsaMember2d.Duplicate(); // #### inputs #### // 1 brep Brep brep = mem.Brep; //existing brep GH_Brep ghbrep = new GH_Brep(); if (DA.GetData(1, ref ghbrep)) { if (GH_Convert.ToBrep(ghbrep, ref brep, GH_Conversion.Both)) { mem.Brep = brep; } } // 2 section GH_ObjectWrapper gh_typ = new GH_ObjectWrapper(); if (DA.GetData(2, ref gh_typ)) { GsaProp2d prop2d = new GsaProp2d(); if (gh_typ.Value is GsaProp2d) { gh_typ.CastTo(ref prop2d); } else if (gh_typ.Value is GH_Number) { if (GH_Convert.ToInt32((GH_Number)gh_typ.Value, out int idd, GH_Conversion.Both)) { prop2d.ID = idd; } } mem.Property = prop2d; } // 3 offset GsaOffset offset = new GsaOffset(); if (DA.GetData(3, ref offset)) { mem.Member.Offset.Z = offset.Z; } // 4 inclusion points List <Point3d> pts = mem.InclusionPoints; List <GH_Point> ghpts = new List <GH_Point>(); if (DA.GetDataList(4, ghpts)) { for (int i = 0; i < ghpts.Count; i++) { Point3d pt = new Point3d(); if (GH_Convert.ToPoint3d(ghpts[i], ref pt, GH_Conversion.Both)) { pts.Add(pt); } } } // 5 inclusion lines CurveList crvlist = new CurveList(mem.InclusionLines); List <Curve> crvs = crvlist.ToList(); List <GH_Curve> ghcrvs = new List <GH_Curve>(); if (DA.GetDataList(5, ghcrvs)) { for (int i = 0; i < ghcrvs.Count; i++) { Curve crv = null; if (GH_Convert.ToCurve(ghcrvs[i], ref crv, GH_Conversion.Both)) { crvs.Add(crv); } } } GsaMember2d tmpmem = new GsaMember2d(brep, crvs, pts) { ID = mem.ID, Member = mem.Member, Property = mem.Property }; mem = tmpmem; // 6 mesh size GH_Number ghmsz = new GH_Number(); if (DA.GetData(6, ref ghmsz)) { if (GH_Convert.ToDouble(ghmsz, out double msz, GH_Conversion.Both)) { mem.Member.MeshSize = msz; } } // 7 mesh with others GH_Boolean ghbool = new GH_Boolean(); if (DA.GetData(7, ref ghbool)) { if (GH_Convert.ToBoolean(ghbool, out bool mbool, GH_Conversion.Both)) { //mem.member.MeshWithOthers } } // 8 type GH_Integer ghint = new GH_Integer(); if (DA.GetData(8, ref ghint)) { if (GH_Convert.ToInt32(ghint, out int type, GH_Conversion.Both)) { mem.Member.Type = Util.Gsa.GsaToModel.Member2dType(type); } } // 9 element type / analysis order GH_Integer ghinteg = new GH_Integer(); if (DA.GetData(9, ref ghinteg)) { if (GH_Convert.ToInt32(ghinteg, out int type, GH_Conversion.Both)) { mem.Member.Type2D = Util.Gsa.GsaToModel.Element2dType(type); } } // 10 ID GH_Integer ghID = new GH_Integer(); if (DA.GetData(10, ref ghID)) { if (GH_Convert.ToInt32(ghID, out int id, GH_Conversion.Both)) { mem.ID = id; } } // 11 name GH_String ghnm = new GH_String(); if (DA.GetData(11, ref ghnm)) { if (GH_Convert.ToString(ghnm, out string name, GH_Conversion.Both)) { mem.Member.Name = name; } } // 12 Group GH_Integer ghgrp = new GH_Integer(); if (DA.GetData(12, ref ghgrp)) { if (GH_Convert.ToInt32(ghgrp, out int grp, GH_Conversion.Both)) { mem.Member.Group = grp; } } // 13 Colour GH_Colour ghcol = new GH_Colour(); if (DA.GetData(13, ref ghcol)) { if (GH_Convert.ToColor(ghcol, out System.Drawing.Color col, GH_Conversion.Both)) { mem.Member.Colour = col; } } // 14 Dummy GH_Boolean ghdum = new GH_Boolean(); if (DA.GetData(14, ref ghdum)) { if (GH_Convert.ToBoolean(ghdum, out bool dum, GH_Conversion.Both)) { mem.Member.IsDummy = dum; } } // #### outputs #### DA.SetData(0, new GsaMember2dGoo(mem)); DA.SetData(1, mem.Brep); DA.SetData(2, mem.Property); GsaOffset gsaOffset = new GsaOffset { Z = mem.Member.Offset.Z }; DA.SetData(3, gsaOffset); DA.SetDataList(4, mem.InclusionPoints); DA.SetDataList(5, mem.InclusionLines); DA.SetData(6, mem.Member.MeshSize); //DA.SetData(7, mem.member.MeshWithOthers); DA.SetData(8, mem.Member.Type); DA.SetData(9, mem.Member.Type2D); DA.SetData(10, mem.ID); DA.SetData(11, mem.Member.Name); DA.SetData(12, mem.Member.Group); DA.SetData(13, mem.Member.Colour); DA.SetData(14, mem.Member.IsDummy); } }
protected override void SolveInstance(IGH_DataAccess DA) { GsaMember1d gsaMember1d = new GsaMember1d(); if (DA.GetData(0, ref gsaMember1d)) { GsaMember1d mem = gsaMember1d.Duplicate(); // #### inputs #### // 1 curve GH_Curve ghcrv = new GH_Curve(); if (DA.GetData(1, ref ghcrv)) { Curve crv = null; if (GH_Convert.ToCurve(ghcrv, ref crv, GH_Conversion.Both)) { GsaMember1d tmpmem = new GsaMember1d(crv) { ID = mem.ID, Member = mem.Member, ReleaseEnd = mem.ReleaseEnd, ReleaseStart = mem.ReleaseStart }; mem = tmpmem; } } // 2 section GH_ObjectWrapper gh_typ = new GH_ObjectWrapper(); if (DA.GetData(2, ref gh_typ)) { GsaSection section = new GsaSection(); if (gh_typ.Value is GsaSection) { gh_typ.CastTo(ref section); } else if (gh_typ.Value is GH_Number) { if (GH_Convert.ToInt32((GH_Number)gh_typ.Value, out int idd, GH_Conversion.Both)) { section.ID = idd; } } mem.Section = section; } // 3 type GH_Integer ghint = new GH_Integer(); if (DA.GetData(4, ref ghint)) { if (GH_Convert.ToInt32(ghint, out int type, GH_Conversion.Both)) { mem.Member.Type = Util.Gsa.GsaToModel.Member1dType(type); } } // 4 element type GH_Integer ghinteg = new GH_Integer(); if (DA.GetData(4, ref ghinteg)) { if (GH_Convert.ToInt32(ghinteg, out int type, GH_Conversion.Both)) { mem.Member.Type1D = Util.Gsa.GsaToModel.Element1dType(type); } } // 5 offset GsaOffset offset = new GsaOffset(); if (DA.GetData(5, ref offset)) { mem.Member.Offset.X1 = offset.X1; mem.Member.Offset.X2 = offset.X2; mem.Member.Offset.Y = offset.Y; mem.Member.Offset.Z = offset.Z; } // 6 start release GsaBool6 start = new GsaBool6(); if (DA.GetData(6, ref start)) { mem.ReleaseStart = start; } // 7 end release GsaBool6 end = new GsaBool6(); if (DA.GetData(7, ref end)) { mem.ReleaseEnd = end; } // 8 orientation angle GH_Number ghangle = new GH_Number(); if (DA.GetData(8, ref ghangle)) { if (GH_Convert.ToDouble(ghangle, out double angle, GH_Conversion.Both)) { mem.Member.OrientationAngle = angle; } } // 9 orientation node GH_Integer ghori = new GH_Integer(); if (DA.GetData(9, ref ghori)) { if (GH_Convert.ToInt32(ghori, out int orient, GH_Conversion.Both)) { mem.Member.OrientationNode = orient; } } // 10 mesh size GH_Number ghmsz = new GH_Number(); if (DA.GetData(10, ref ghmsz)) { if (GH_Convert.ToDouble(ghmsz, out double msz, GH_Conversion.Both)) { mem.Member.MeshSize = msz; } } // 11 mesh with others GH_Boolean ghbool = new GH_Boolean(); if (DA.GetData(11, ref ghbool)) { if (GH_Convert.ToBoolean(ghbool, out bool mbool, GH_Conversion.Both)) { //mem.member.MeshWithOthers } } // 12 ID GH_Integer ghID = new GH_Integer(); if (DA.GetData(12, ref ghID)) { if (GH_Convert.ToInt32(ghID, out int id, GH_Conversion.Both)) { mem.ID = id; } } // 13 name GH_String ghnm = new GH_String(); if (DA.GetData(13, ref ghnm)) { if (GH_Convert.ToString(ghnm, out string name, GH_Conversion.Both)) { mem.Member.Name = name; } } // 14 Group GH_Integer ghgrp = new GH_Integer(); if (DA.GetData(14, ref ghgrp)) { if (GH_Convert.ToInt32(ghgrp, out int grp, GH_Conversion.Both)) { mem.Member.Group = grp; } } // 15 Colour GH_Colour ghcol = new GH_Colour(); if (DA.GetData(15, ref ghcol)) { if (GH_Convert.ToColor(ghcol, out System.Drawing.Color col, GH_Conversion.Both)) { mem.Member.Colour = col; } } // 16 Dummy GH_Boolean ghdum = new GH_Boolean(); if (DA.GetData(16, ref ghdum)) { if (GH_Convert.ToBoolean(ghdum, out bool dum, GH_Conversion.Both)) { mem.Member.IsDummy = dum; } } // #### outputs #### DA.SetData(0, new GsaMember1dGoo(mem)); DA.SetData(1, mem.PolyCurve); DA.SetData(2, mem.Section); DA.SetData(3, mem.Member.Type); DA.SetData(4, mem.Member.Type1D); GsaOffset gsaOffset = new GsaOffset { X1 = mem.Member.Offset.X1, X2 = mem.Member.Offset.X2, Y = mem.Member.Offset.Y, Z = mem.Member.Offset.Z }; DA.SetData(5, gsaOffset); DA.SetData(6, mem.ReleaseStart); DA.SetData(7, mem.ReleaseEnd); DA.SetData(8, mem.Member.OrientationAngle); DA.SetData(9, mem.Member.OrientationNode); DA.SetData(10, mem.Member.MeshSize); //DA.SetData(11, mem.member.MeshSize); //mesh with others bool DA.SetData(12, mem.ID); DA.SetData(13, mem.Member.Name); DA.SetData(14, mem.Member.Group); DA.SetData(15, mem.Member.Colour); DA.SetData(16, mem.Member.IsDummy); } }