Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  For-Schleife anhalten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  For-Schleife anhalten (1809 mal gelesen)
mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 02. Mai. 2012 13:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Da ich sehr zeitaufwendige Simulationen mithilfe eines Journals durchführe bin ich auf der Suche nach einem Befehl, der eine "For-Schleife" erst dann wiederholt, sobald der Berechnungsschritt abgeschlossen ist, sprich der Solver ein Ergebnis liefert.

Die derzeit verwendete Sleep-Funktion ist leider nur bedingt anwendbar, da die Simulationszeiten stark variieren.
Code ist in VB verfasst.

Bin um jede Hilfe dankbar  .
Lg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gfx-toxic.de
Moderator
Konstruktion / Anwenderbetreuung


Sehen Sie sich das Profil von gfx-toxic.de an!   Senden Sie eine Private Message an matthias-p  Schreiben Sie einen Gästebucheintrag für matthias-p

Beiträge: 501
Registriert: 09.06.2006

Teamcenter 11.3 / NX 11
Windows 10

erstellt am: 03. Mai. 2012 06:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mabi86 10 Unities + Antwort hilfreich

Hallo mabi,

wie sieht den der Aufruf der Simulation aus?
Startest du einen neuen Prozess?

------------------
Gruß Matthias
------------------------------------
ICQ: 163190295

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 03. Mai. 2012 07:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen!

Grundsätzlich sieht der Ablauf so aus, dass ich eine neue Geometrie aus einem Excel-Sheet lade, diese speicher und schlussendlich berechne. Die For-Schleife dient lediglich dazu, die Countervariable weiterlaufen zu lassen.
Das ganze manuell zu überwachen wäre zu zeitaufwendig und bei Definition einer Sleepdauer habe ich das Problem, dass Anfangs 1 Minute ausreicht, bei den letzten allerdings mind. 1 Stunde benötigt wird.
Den Aufruf mache ich manuell nur bei der ersten Geometrie. Der Rest ist im Journal bzw. Excel-File vorgebenen, sodass alle Kombinationen durchsimuliert werden.

Lg Mario

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gfx-toxic.de
Moderator
Konstruktion / Anwenderbetreuung


Sehen Sie sich das Profil von gfx-toxic.de an!   Senden Sie eine Private Message an matthias-p  Schreiben Sie einen Gästebucheintrag für matthias-p

Beiträge: 501
Registriert: 09.06.2006

Teamcenter 11.3 / NX 11
Windows 10

erstellt am: 03. Mai. 2012 07:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mabi86 10 Unities + Antwort hilfreich

Die Fragen ist, wie startest du den Solver.

Machst du es über System.Diagnostics.Process?
Weil dann wäre es relativ einfach das ganze abzufragen.
Oder kannst du vielleicht prüfen ob die nastran.exe (bzw. der Solver) noch läuft und wenn dieser beendet wurde mach das nächste?

Zeig mal ein Stück Code wo der Solver gestartet wird. Da gibt es so viel Möglichkeiten, da kann man nur ins Blaue raten. ;-)

------------------
Gruß Matthias
------------------------------------
ICQ: 163190295

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 03. Mai. 2012 08:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Der Solver wird so gestartet:

Dim simSimulation1 As CAE.SimSimulation = CType(workSimPart.FindObject("Simulation"), CAE.SimSimulation)

Dim simSolution1 As CAE.SimSolution = CType(simSimulation1.FindObject("Solution[Solution 1]"), CAE.SimSolution)

simSolution1.Solve(CAE.SimSolution.SolveOption.Solve, CAE.SimSolution.SetupCheckOption.CompleteCheckAndOutputErrors)


Genau diese Abfrage des Solverstatuses hätte ich im Sinn gehabt. Nur leider weiß ich nicht, auf welche Daten ich zugreifen kann, bzw. wie ich den Status des Solvers abfragen kann.
Ich hoffe der Code hilft, viel ist es ja nicht. 
LG

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 03. Mai. 2012 08:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

PS: Nein, habe "System.Diagnostics.Process" bis jetzt noch nicht verwendet.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 04. Mai. 2012 07:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Habe mich gestern intensiver mit der Funktion System.Diagnostics.Process auseinander gesetzt und glaube, dass dies zum Erfolg führen könnte.

Allerdings bekomme ich noch immer eine Fehlermeldung:
"Der Wert des Typs 1-dimensionales Array von System.Diagnostics.Process kann nicht in System.Diagnostics Process konvertiert werden"!
Sobald ich dann bei der Definition der Variable "nastranProcess" Klammern setze, kommt die Fehlermeldung, dass HasExited und Refresh keine Member von System.Array sind...

Wäre toll, wenn mit jemand einen Hinweis geben könnte, da ich derzeit nicht wirklich weiterweiß!

Hier der derzeitige Code:

Try

Dim Process_Name As String = "nastran"

Dim nastranProcess As System.Diagnostics.Process 

nastranProcess = Process.GetProcessesByName(Process_Name)

Dim i As Integer
For i = 0 To 10000

If not nastranProcess.HasExited Then
nastranProcess.Refresh()
Thread.Sleep(2000)
Else
    Exit For
End If
Next i
  Finally
End Try

Lg, Mario

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 04. Mai. 2012 11:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Habe das Problem soeben gelöst:

Try

Dim i As Integer
Dim processName As String = "nastran"
Dim nastranProcess As Process()

For i=0 To 10000000

nastranProcess = Process.GetProcessesByName(ProcessName)

If nastranProcess.Length=0 Then
Exit For

Else
Sleep(2000)

End If
Next i

Catch ex As Exception
MsgBox("Error!")

End Try

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gfx-toxic.de
Moderator
Konstruktion / Anwenderbetreuung


Sehen Sie sich das Profil von gfx-toxic.de an!   Senden Sie eine Private Message an matthias-p  Schreiben Sie einen Gästebucheintrag für matthias-p

Beiträge: 501
Registriert: 09.06.2006

Teamcenter 11.3 / NX 11
Windows 10

erstellt am: 04. Mai. 2012 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mabi86 10 Unities + Antwort hilfreich

Hi mabi,

schön zu sehen das du dir auch selbt den Kopf zerbrichst.
Aber ich denk es geht schöner wie mit einer for-schleifen.

es gibt in der Process Klasse ein Event das ausgelöst wird, wenn das Programm beendet wird.

Das ganze kannst du abfragen mit...
nastranProcess.EnableRaisingEvents = true;
nastranProcess.Exited += new EventHandler(nastranProcess_Exited);

und damit wird die Methode nastranProcess_Exited aufgerufen...wo du dann zum nächsten Objekt springen kannst.

Probiers mal aus.
Wie das ganze aber genau mit vb.net aussieht kann ich dir nicht sagen
bin mit c# unterwegs.

------------------
Gruß Matthias
------------------------------------
ICQ: 163190295

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Technischer Systemplaner/ Zeichner (w/m/d) Gebäudetechnik
Als führendes europäisches Beratungs-, Planungs- und Projektmanagementunternehmen bietet Drees & Sommer Lösungen für erfolgreiche Gebäude, renditestarke Portfolios, leistungsfähige Infrastruktur und lebenswerte Städte. In interdisziplinären Teams unterstützen unsere über 5.100 Mitarbeiterinnen und Mitarbeiter an 59 internationalen Standorten Auftraggeber unterschiedlichster Branchen. Bei uns gestalten Sie Ihren individuellen Karriereweg aktiv mit....
Anzeige ansehenTechnischer Zeichner, Bauzeichner
mabi86
Mitglied
Student

Sehen Sie sich das Profil von mabi86 an!   Senden Sie eine Private Message an mabi86  Schreiben Sie einen Gästebucheintrag für mabi86

Beiträge: 9
Registriert: 02.05.2012

NX 8

erstellt am: 07. Mai. 2012 07:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für den Hinweis!
Würde dadurch wirklich vereinfacht werden, allerdings funktionieren bei mir die Methoden der Process-Klasse nicht richtig.

So wird bei der Verwendung von .EnableRaisingEvents oder .HasExited immer eine Fehlermeldung "kein Member von System.Array" ausgeworfen.
Hatte dasselbe Problem auch bei den Methoden .Refresh und .HasExited in vorigen Versuchen.

Denke ich werde es bei der alten For-Version belassen, auch wenn sie nicht besonders schön anzuschauen ist. 

Schönen Tag noch!
Lg Mario

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz