/***************************************************/ /**** Private methods ****/ /***************************************************/ private bool CreateObject(Loadcase bhLoadCase) { int err; int loadCaseId = bhLoadCase.Number; int loadCaseCount = 0; int uID = 1; err = St7.St7GetNumLoadCase(uID, ref loadCaseCount); if (loadCaseCount < loadCaseId) { err = St7.St7NewLoadCase(uID, bhLoadCase.Name); if (!St7ErrorCustom(err, "Could not create a load case number " + loadCaseId)) { return(false); } } else // updating { StringBuilder currentLoadCaseName = new StringBuilder(St7.kMaxStrLen); err = St7.St7GetLoadCaseName(uID, loadCaseId, currentLoadCaseName, St7.kMaxStrLen); if (!String.Equals(currentLoadCaseName.ToString(), bhLoadCase.Name, StringComparison.OrdinalIgnoreCase)) { err = St7.St7SetLoadCaseName(uID, loadCaseId, bhLoadCase.Name); if (!St7ErrorCustom(err, "Could not update a load case number " + loadCaseId)) { return(false); } } } err = St7.St7SetLoadCaseType(uID, loadCaseId, St7LoadCaseTypeFromNature(bhLoadCase.Nature)); err = St7.St7EnableLSALoadCase(uID, loadCaseId, 1); return(true); }
/***************************************************/ /**** Private methods ****/ /***************************************************/ private bool CreateObject(GravityLoad gravityLoad) { int err = 0; Loadcase loadcase = gravityLoad.Loadcase; int loadCaseId = GetAdapterId <int>(loadcase); err = St7.St7SetLoadCaseType(1, loadCaseId, St7.lcGravity); err = St7.St7EnableLSALoadCase(1, loadCaseId, 1); if (!St7ErrorCustom(err, "Couldn't set gravity for a loadcase " + loadCaseId)) { return(false); } int gravityDir = 0; if (gravityLoad.GravityDirection.X != 0) { gravityDir = 1; } if (gravityLoad.GravityDirection.Y != 0) { gravityDir = 2; } if (gravityLoad.GravityDirection.Z != 0) { gravityDir = 3; } err = St7.St7SetLoadCaseGravityDir(1, loadCaseId, gravityDir); if (!St7ErrorCustom(err, "Couldn't set gravity direction for a loadcase " + loadCaseId)) { return(false); } int[] units = new int[St7.kLastUnit]; err = St7.St7GetUnits(1, units); if (!St7ErrorCustom(err, "Couldn't get default units for a loadcase " + loadCaseId)) { return(false); } double temp = St7TempFromTUnints(units[St7.ipTEMPERU]); double accel = St7AccelerationFromLUnints(units[St7.ipLENGTHU]); // Load case defaults array double[] loadVals = new double[13]; loadVals[St7.ipLoadCaseRefTemp] = temp; loadVals[St7.ipLoadCaseAccX] = gravityDir == 1 ? accel : 0; loadVals[St7.ipLoadCaseAccY] = gravityDir == 2 ? accel : 0; loadVals[St7.ipLoadCaseAccZ] = gravityDir == 3 ? accel : 0; err = St7.St7SetLoadCaseDefaults(1, loadCaseId, loadVals); if (!St7ErrorCustom(err, "Couldn't set gravity acceleration for a loadcase " + loadCaseId)) { return(false); } return(true); }
/***************************************************/ private bool CreateObject(St7LoadCaseInertia loadCaseInertia) { int err = 0; Loadcase loadcase = loadCaseInertia.Loadcase; int loadCaseId = GetAdapterId <int>(loadcase); err = St7.St7SetLoadCaseType(1, loadCaseId, St7.lcGravity); err = St7.St7EnableLSALoadCase(1, loadCaseId, 1); if (!St7ErrorCustom(err, "Couldn't set gravity for a loadcase " + loadCaseId)) { return(false); } int gravityDir = 0; if (loadCaseInertia.GravityDirection.X != 0) { gravityDir = 1; } if (loadCaseInertia.GravityDirection.Y != 0) { gravityDir = 2; } if (loadCaseInertia.GravityDirection.Z != 0) { gravityDir = 3; } err = St7.St7SetLoadCaseGravityDir(1, loadCaseId, gravityDir); if (!St7ErrorCustom(err, "Couldn't set gravity direction for a loadcase " + loadCaseId)) { return(false); } int[] units = new int[St7.kLastUnit]; err = St7.St7GetUnits(1, units); if (!St7ErrorCustom(err, "Couldn't get default units for a loadcase " + loadCaseId)) { return(false); } double temp = St7TempFromTUnints(units[St7.ipTEMPERU]); double accel = St7AccelerationFromLUnints(units[St7.ipLENGTHU]); // Load case defaults array double[] loadVals = new double[13]; loadVals[St7.ipLoadCaseRefTemp] = temp; loadVals[St7.ipLoadCaseAccX] = gravityDir == 1 ? accel * loadCaseInertia.GravityDirection.X : 0; loadVals[St7.ipLoadCaseAccY] = gravityDir == 2 ? accel * loadCaseInertia.GravityDirection.Y : 0; loadVals[St7.ipLoadCaseAccZ] = gravityDir == 3 ? accel * loadCaseInertia.GravityDirection.Z : 0; err = St7.St7SetLoadCaseDefaults(1, loadCaseId, loadVals); if (!St7ErrorCustom(err, "Couldn't set gravity acceleration for a loadcase " + loadCaseId)) { return(false); } //Structural and Non-structural Mass int structuralMass = loadCaseInertia.StructuralMass ? St7.btTrue : St7.btFalse; int nonStructuralMass = loadCaseInertia.NonStructuralMass ? St7.btTrue : St7.btFalse; err = St7.St7SetLoadCaseMassOption(1, loadCaseId, (byte)structuralMass, (byte)nonStructuralMass); if (!St7ErrorCustom(err, "Couldn't set structural Mass for a loadcase " + loadCaseId)) { return(false); } return(true); }