Hallo,
ich habe ein Problem beim setzen von Materialien in Steel. Ich steure die COM Schnittstelle über .Net an.
Beim Nachfolgenden Code erhalte ich immer die Exception:
"Materialien : Objekt Nr.1 nicht gefunden."
Woran könnte das liegen? Auch wenn ich statt einem Material Array ein einziges Material setze tritt der Fehler auf.
ST_MATERIAL[] SteelMaterials = new ST_MATERIAL[2];
SteelMaterials[0].iNo = 1;
SteelMaterials[0].strDescription = "Baustahl S 235";
SteelMaterials[0].fSafetyFactor = (float)1.1;
SteelMaterials[0].fYieldStrength = (float)2.4E+8;
SteelMaterials[0].bManually = 0;
SteelMaterials[0].fSigma = (float)218181808.0;
SteelMaterials[0].fTau = (float)125967328.0;
SteelMaterials[0].fSigmaEq = (float)218181808.0;
SteelMaterials[0].strComment = "Comment";
SteelMaterials[1].iNo = 2;
SteelMaterials[1].strDescription = "Baustahl S 235";
SteelMaterials[1].fSafetyFactor = (float)1.1;
SteelMaterials[1].fYieldStrength = (float)2.4E+8;
SteelMaterials[1].bManually = 0;
SteelMaterials[1].fSigma = (float)218181808.0;
SteelMaterials[1].fTau = (float)125967328.0;
SteelMaterials[1].fSigmaEq = (float)218181808.0;
SteelMaterials[1].strComment = "Comment";
RSSTCase.stSetMaterialArr(2, SteelMaterials);
Der Gesamte Code sieht wie folgt aus:
// Open R-Stab
RSTAB6.IrsStructure RSStr = new RSTAB6.Structure(); // Opens R-Stab
RSTAB6.IrsApplication RSApp = RSStr.rsGetApplication();
// Lock Licence
RSApp.rsLockLicence();
RSApp.rsShowApplication();
string tempPath = System.Environment.GetFolderPath(System.Environmen t.SpecialFolder.DesktopDirectory);
tempPath = System.IO.Path.Combine(tempPath, "temp_11v4sdc5sd4fsdv56dafh5sdv54gh56hjk.rs6") ;
RSStr.rsSaveStructure(tempPath);
// Open a certain R-Stab File
RSStr = RSApp.rsOpenStructure(RStabFilePath);
//Start Steel
STEELM.MODULE RSSteel;
STEELM.IstCase RSSTCase;
RSSteel = (STEELM.MODULE)RSStr.rsGetModule("STEELM");
// If No SteelCase exists create a new one
if (RSSteel.moGetCaseCount() == 0)
{
RSSTCase = RSSteel.moSetCase(1, "DluCalLC");
}
// Use the one thats found
else
{
RSSTCase = RSSteel.moGetCase(0, STEELM.ITEM_AT.AT_INDEX);
}
RSSTCase.stSetComment("Dieser Load Case wurde vom DlubalCalculator angelegt");
ILOAD[] pole = new ILOAD[2];
// Choose R-Stab Loadcases to be considered in the Steel calculation.
pole[0].No = 1;
pole[0].type = ILOAD_TYPE.ILOAD_CASE;
pole[1].No = 2;
pole[1].type = ILOAD_TYPE.ILOAD_CASE;
//Set R-Stab Load cases
RSSTCase.stSetLoadsArr(2,pole);
STEELM.ST_PARAMETERS parameters = new ST_PARAMETERS();
parameters.ePlApCalc = ST_PA_CALC.ST_PA_LOCAL_PLASTIFICATION;
parameters.eMethodSC = ST_SC_METHOD.ST_SC_IF;
parameters.fFactorSigma = 10;
parameters.fFactorTau = (float)0.3;
parameters.bFullPartsList = 0;
RSSTCase.stSetParameters(ref parameters);
// Set R-Stab Materials in STEEL
ST_MATERIAL[] SteelMaterials = new ST_MATERIAL[2];
SteelMaterials[0].iNo = 1;
SteelMaterials[0].strDescription = "Baustahl S 235";
SteelMaterials[0].fSafetyFactor = (float)1.1;
SteelMaterials[0].fYieldStrength = (float)2.4E+8;
SteelMaterials[0].bManually = 0;
SteelMaterials[0].fSigma = (float)218181808.0;
SteelMaterials[0].fTau = (float)125967328.0;
SteelMaterials[0].fSigmaEq = (float)218181808.0;
SteelMaterials[0].strComment = "Comment";
SteelMaterials[1].iNo = 2;
SteelMaterials[1].strDescription = "Baustahl S 235";
SteelMaterials[1].fSafetyFactor = (float)1.1;
SteelMaterials[1].fYieldStrength = (float)2.4E+8;
SteelMaterials[1].bManually = 0;
SteelMaterials[1].fSigma = (float)218181808.0;
SteelMaterials[1].fTau = (float)125967328.0;
SteelMaterials[1].fSigmaEq = (float)218181808.0;
SteelMaterials[1].strComment = "Comment";
RSSTCase.stSetMaterialArr(2, SteelMaterials);
...
Noch eine Anmerkung die BooleanWerte wie ".bManually" werden als Float Parameter verlangt. "0" gilt als False.
Ich habe die .rs6 Datei angehängt, mit der ich arbeite.
Vielen Dank im Voraus für eure Hilfe.
Martin
ich habe ein Problem beim setzen von Materialien in Steel. Ich steure die COM Schnittstelle über .Net an.
Beim Nachfolgenden Code erhalte ich immer die Exception:
"Materialien : Objekt Nr.1 nicht gefunden."
Woran könnte das liegen? Auch wenn ich statt einem Material Array ein einziges Material setze tritt der Fehler auf.
ST_MATERIAL[] SteelMaterials = new ST_MATERIAL[2];
SteelMaterials[0].iNo = 1;
SteelMaterials[0].strDescription = "Baustahl S 235";
SteelMaterials[0].fSafetyFactor = (float)1.1;
SteelMaterials[0].fYieldStrength = (float)2.4E+8;
SteelMaterials[0].bManually = 0;
SteelMaterials[0].fSigma = (float)218181808.0;
SteelMaterials[0].fTau = (float)125967328.0;
SteelMaterials[0].fSigmaEq = (float)218181808.0;
SteelMaterials[0].strComment = "Comment";
SteelMaterials[1].iNo = 2;
SteelMaterials[1].strDescription = "Baustahl S 235";
SteelMaterials[1].fSafetyFactor = (float)1.1;
SteelMaterials[1].fYieldStrength = (float)2.4E+8;
SteelMaterials[1].bManually = 0;
SteelMaterials[1].fSigma = (float)218181808.0;
SteelMaterials[1].fTau = (float)125967328.0;
SteelMaterials[1].fSigmaEq = (float)218181808.0;
SteelMaterials[1].strComment = "Comment";
RSSTCase.stSetMaterialArr(2, SteelMaterials);
Der Gesamte Code sieht wie folgt aus:
// Open R-Stab
RSTAB6.IrsStructure RSStr = new RSTAB6.Structure(); // Opens R-Stab
RSTAB6.IrsApplication RSApp = RSStr.rsGetApplication();
// Lock Licence
RSApp.rsLockLicence();
RSApp.rsShowApplication();
string tempPath = System.Environment.GetFolderPath(System.Environmen t.SpecialFolder.DesktopDirectory);
tempPath = System.IO.Path.Combine(tempPath, "temp_11v4sdc5sd4fsdv56dafh5sdv54gh56hjk.rs6") ;
RSStr.rsSaveStructure(tempPath);
// Open a certain R-Stab File
RSStr = RSApp.rsOpenStructure(RStabFilePath);
//Start Steel
STEELM.MODULE RSSteel;
STEELM.IstCase RSSTCase;
RSSteel = (STEELM.MODULE)RSStr.rsGetModule("STEELM");
// If No SteelCase exists create a new one
if (RSSteel.moGetCaseCount() == 0)
{
RSSTCase = RSSteel.moSetCase(1, "DluCalLC");
}
// Use the one thats found
else
{
RSSTCase = RSSteel.moGetCase(0, STEELM.ITEM_AT.AT_INDEX);
}
RSSTCase.stSetComment("Dieser Load Case wurde vom DlubalCalculator angelegt");
ILOAD[] pole = new ILOAD[2];
// Choose R-Stab Loadcases to be considered in the Steel calculation.
pole[0].No = 1;
pole[0].type = ILOAD_TYPE.ILOAD_CASE;
pole[1].No = 2;
pole[1].type = ILOAD_TYPE.ILOAD_CASE;
//Set R-Stab Load cases
RSSTCase.stSetLoadsArr(2,pole);
STEELM.ST_PARAMETERS parameters = new ST_PARAMETERS();
parameters.ePlApCalc = ST_PA_CALC.ST_PA_LOCAL_PLASTIFICATION;
parameters.eMethodSC = ST_SC_METHOD.ST_SC_IF;
parameters.fFactorSigma = 10;
parameters.fFactorTau = (float)0.3;
parameters.bFullPartsList = 0;
RSSTCase.stSetParameters(ref parameters);
// Set R-Stab Materials in STEEL
ST_MATERIAL[] SteelMaterials = new ST_MATERIAL[2];
SteelMaterials[0].iNo = 1;
SteelMaterials[0].strDescription = "Baustahl S 235";
SteelMaterials[0].fSafetyFactor = (float)1.1;
SteelMaterials[0].fYieldStrength = (float)2.4E+8;
SteelMaterials[0].bManually = 0;
SteelMaterials[0].fSigma = (float)218181808.0;
SteelMaterials[0].fTau = (float)125967328.0;
SteelMaterials[0].fSigmaEq = (float)218181808.0;
SteelMaterials[0].strComment = "Comment";
SteelMaterials[1].iNo = 2;
SteelMaterials[1].strDescription = "Baustahl S 235";
SteelMaterials[1].fSafetyFactor = (float)1.1;
SteelMaterials[1].fYieldStrength = (float)2.4E+8;
SteelMaterials[1].bManually = 0;
SteelMaterials[1].fSigma = (float)218181808.0;
SteelMaterials[1].fTau = (float)125967328.0;
SteelMaterials[1].fSigmaEq = (float)218181808.0;
SteelMaterials[1].strComment = "Comment";
RSSTCase.stSetMaterialArr(2, SteelMaterials);
...
Noch eine Anmerkung die BooleanWerte wie ".bManually" werden als Float Parameter verlangt. "0" gilt als False.
Ich habe die .rs6 Datei angehängt, mit der ich arbeite.
Vielen Dank im Voraus für eure Hilfe.
Martin
Kommentar