private bool SetObject(Bar bhBar) { int ret = 0; string name = GetAdapterId <string>(bhBar); // Needed rigth after create as well as AddByPoint flipps the Bar if it feels like it #if Debug16 == false && Release16 == false m_model.EditFrame.ChangeConnectivity(name, GetAdapterId <string>(bhBar.StartNode), GetAdapterId <string>(bhBar.EndNode)); #endif if (CheckPropertyWarning(bhBar, b => b.SectionProperty)) { string sectionName = GetAdapterId <string>(bhBar.SectionProperty); if (string.IsNullOrEmpty(sectionName) || m_model.FrameObj.SetSection(name, sectionName) != 0) { CreatePropertyWarning("SectionProperty", "Bar", name); ret++; } } if (m_model.FrameObj.SetLocalAxes(name, bhBar.OrientationAngle * 180 / System.Math.PI) != 0) { CreatePropertyWarning("Orientation angle", "Bar", name); ret++; } Offset offset = bhBar.Offset; double[] offset1 = new double[3]; double[] offset2 = new double[3]; if (offset != null && offset.Start != null && offset.End == null) { offset1[1] = offset.Start.Z; offset1[2] = offset.Start.Y; offset2[1] = offset.End.Z; offset2[2] = offset.End.Y; } if (m_model.FrameObj.SetInsertionPoint(name, (int)bhBar.InsertionPoint(), false, bhBar.ModifyStiffnessInsertionPoint(), ref offset1, ref offset2) != 0) { CreatePropertyWarning("Insertion point and perpendicular offset", "Bar", name); ret++; } if (bhBar.Release != null && bhBar.Release.StartRelease != null && bhBar.Release.EndRelease != null) { bool[] restraintStart = null; double[] springStart = null; bool[] restraintEnd = null; double[] springEnd = null; if (bhBar.Release.ToCSI(ref restraintStart, ref springStart, ref restraintEnd, ref springEnd)) { if (m_model.FrameObj.SetReleases(name, ref restraintStart, ref restraintEnd, ref springStart, ref springEnd) != 0) { CreatePropertyWarning("Release", "Bar", name); ret++; } } } AutoLengthOffset autoLengthOffset = bhBar.AutoLengthOffset(); if (autoLengthOffset != null) { //the Rigid Zone Factor is not picked up when setting the auto length = true for the method call. Hence need to call this method twice. int retAutoLEngthOffset = m_model.FrameObj.SetEndLengthOffset(name, false, 0, 0, autoLengthOffset.RigidZoneFactor); retAutoLEngthOffset += m_model.FrameObj.SetEndLengthOffset(name, autoLengthOffset.AutoOffset, 0, 0, 0); if (retAutoLEngthOffset != 0) { CreatePropertyWarning("Auto length offset", "Bar", name); ret++; } } else if (offset != null && offset.Start != null && offset.End != null) { if (m_model.FrameObj.SetEndLengthOffset(name, false, bhBar.Offset.Start.X, -1 * (bhBar.Offset.End.X), 1) != 0) { CreatePropertyWarning("Length offset", "Bar", name); ret++; } } return(true); }
/***************************************************/ private bool CreateObject(Bar bhBar) { bool success = true; int ret = 0; string name = ""; string bhId = bhBar.CustomData[AdapterId].ToString(); name = bhId; ret = m_model.FrameObj.AddByPoint(bhBar.StartNode.CustomData[AdapterId].ToString(), bhBar.EndNode.CustomData[AdapterId].ToString(), ref name); if (ret != 0) { CreateElementError("Bar", name); return(false); } if (m_model.FrameObj.SetSection(name, bhBar.SectionProperty.Name) != 0) { CreatePropertyWarning("SectionProperty", "Bar", name); ret++; } if (m_model.FrameObj.SetLocalAxes(name, bhBar.OrientationAngle * 180 / System.Math.PI) != 0) { CreatePropertyWarning("Orientation angle", "Bar", name); ret++; } Offset offset = bhBar.Offset; double[] offset1 = new double[3]; double[] offset2 = new double[3]; if (offset != null) { offset1[1] = offset.Start.Z; offset1[2] = offset.Start.Y; offset2[1] = offset.End.Z; offset2[2] = offset.End.Y; } if (m_model.FrameObj.SetInsertionPoint(name, (int)bhBar.InsertionPoint(), false, true, ref offset1, ref offset2) != 0) { CreatePropertyWarning("insertion point and perpendicular offset", "Bar", name); ret++; } BarRelease barRelease = bhBar.Release; if (barRelease != null) { bool[] restraintStart; // = barRelease.StartRelease.Fixities();// Helper.GetRestraint6DOF(barRelease.StartRelease); double[] springStart; // = barRelease.StartRelease.ElasticValues();// Helper.GetSprings6DOF(barRelease.StartRelease); bool[] restraintEnd; // = barRelease.EndRelease.Fixities();// Helper.GetRestraint6DOF(barRelease.EndRelease); double[] springEnd; // = barRelease.EndRelease.ElasticValues();// Helper.GetSprings6DOF(barRelease.EndRelease); GetBarReleaseArrays(barRelease, out restraintStart, out restraintEnd, out springStart, out springEnd); if (m_model.FrameObj.SetReleases(name, ref restraintStart, ref restraintEnd, ref springStart, ref springEnd) != 0) { CreatePropertyWarning("Release", "Bar", name); ret++; } } AutoLengthOffset autoLengthOffset = bhBar.AutoLengthOffset(); if (autoLengthOffset != null) { //the Rigid Zone Factor is not picked up when setting the auto length = true for the method call. Hence need to call this method twice. int retAutoLEngthOffset = m_model.FrameObj.SetEndLengthOffset(name, false, 0, 0, autoLengthOffset.RigidZoneFactor); retAutoLEngthOffset += m_model.FrameObj.SetEndLengthOffset(name, autoLengthOffset.AutoOffset, 0, 0, 0); if (retAutoLEngthOffset != 0) { CreatePropertyWarning("Auto length offset", "Bar", name); ret++; } } else if (bhBar.Offset != null) { if (m_model.FrameObj.SetEndLengthOffset(name, false, -1 * (bhBar.Offset.Start.X), bhBar.Offset.End.X, 1) != 0) { CreatePropertyWarning("Length offset", "Bar", name); ret++; } } return(ret == 0); }