Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem beim Setzen von Materialien in STEEL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem beim Setzen von Materialien in STEEL

    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
    Angehängte Dateien

  • #2
    AW: Problem beim Setzen von Materialien in STEEL

    Hallo MartinM,

    sind Lastfall 1 und 2 in Deiner Rstab-Position vorhanden?
    Falls nicht, kommt es zu einer Exception, die allerdings folgendes ausgibt:
    "Lastfälle : Objekt Nr.1 nicht gefunden."

    Ansonsten funktioniert der Code.

    mfg

    Kommentar


    • #3
      AW: Problem beim Setzen von Materialien in STEEL

      Vielen Dank für die schnelle Antwort.

      Das Problem tritt nur dann auf, wenn kein bisheriger STEELM Lastfall eingetragen ist und ich einen eigenen generieren will.

      Also:

      // If No SteelCase exists create a new one
      if (RSSteel.moGetCaseCount() == 0)
      {
      RSSTCase = RSSteel.moSetCase(1, "DluCalLC");
      }


      Aber genau das ist ja, was ich ändern möchte.
      Existiert kein bisheriger STAHL-Lastfall (Das STAHL MODUL wurde noch nie gestartet), dann soll einer erstellt werden.
      Das übergeben der RStab-Lastfälle funktioniert (Wenn sie bereits in Rstab existieren)
      Aber um ihn auch berechnen zu können werden weitere Infos verlangt. (Material und Sections) Sie werden wohl nicht automatisch aus R-Stab in STAHL übertragen.
      Wenn ich versuche diese über
      RSSTCase.stSetMaterialArr(2, SteelMaterials);
      zu setzen, gibt er mir den Fehler aus.

      Viele Grüße
      Martin

      Kommentar

      Lädt...
      X