| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | InnovateNext 26. in Donaueschingen, eine Veranstaltung am 13.11.2025
|
Autor
|
Thema: API: SWX läd Datei ewig (526 mal gelesen)
|
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 10. Mai. 2005 14:38 <-- editieren / zitieren --> Unities abgeben:         
Hallo SWXler, ich habe folgendes Problem: Ich habe eine Programm geschrieben, dass mit Hilfe von SolidWorks Dateien aus einer Liste in ein anderes Format konvertiert. Da es sich um viele Dateien handeln kann (bis 4000), läuft der Prozess über Nacht oder am Wochenende auf einem separaten Rechner. Nun trat das Problem auf, dass sich SWX an einer Datei „verschluckt“ hat, sprich es hat endlos versucht die Datei zu laden, es aber nicht geschafft (Keine Ahnung warum -> Prozessorauslastung 100%!). Dadurch kam die Funktion
Code:
retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings )
nie zurück und das Programm stand! Die restlichen Dateien wurden somit natürlich nicht abgearbeitet, was sehr ärgerlich war… Wie fangt Ihr ein solches Problem ab? Fangt ihr es überhaupt ab? Hoffe auf konstruktive Vorschläge – Vielen Dank schon im Voraus! Gruß flo
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PASCAM Mitglied Diplom Informatiker

 Beiträge: 67 Registriert: 25.11.2002
|
erstellt am: 12. Mai. 2005 09:40 <-- editieren / zitieren --> Unities abgeben:          Nur für FlorianGerteisz
Hallo flo, Das ist ein wirklich schwieriges Problem. Meines erachtens gibts nur eine einfache Loesung, dass Du einen zweiten Prozess hast, der Deinen ersten ueberwacht. Und wenn dieser steht, entsprechende Maßnahemn einleitet (Prozeß killen und neu starten). Am "Haengen" selber wirst Du nichts machen koennen. Gruss, Ralph ------------------ PASCAM Ralph Müller Softwareentwicklung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 16. Mai. 2005 19:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralph, danke für deine Hilfe! Eine ähnliche Idee ist mir auch gekommen. Hab die SWX-Interaktion in einem Thread laufen, der überwacht wird. Leider lässt sich dieser nicht so einfach killen. Aber ich werde noch ein paar Varianten ausprobieren. Meinst du mit Prozess einen "richtigen", anderen Windows-Prozess? Mit der Überwachung des Programm-Prozesses ist das auch so eine Sache. Mein eigentliches Programm bringt keinen Fehler im Task-Manager ála "Keine Rückmeldung". Zitat:
Am "Haengen" selber wirst Du nichts machen koennen.
Ja, das ist mir klar;-) Werde wohl noch ein bissen "tüfteln" müssen  gruß flo ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rigobert Mitglied Konstrukteur
 
 Beiträge: 239 Registriert: 21.11.2001 SWX 2017x64-Edition SP 4.1
|
erstellt am: 17. Mai. 2005 07:25 <-- editieren / zitieren --> Unities abgeben:          Nur für FlorianGerteisz
Hallo flo, vielleicht kannst Du einfach über ein Timersteuerelement überprüfen, ob das mit dem Laden voran geht. Und wenn nicht , dann einfach merken bis zu welcher Datei Du gekommen bist, Prozedur beenden, und mit der nächsten Datei weitermachen. Gruß Andreas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 17. Mai. 2005 10:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo Andreas, danke für deinen Tipp. Dies ist im Grunde genommen auch mein Lösungsansatz. Wie schon gesagt, ist das Problem dabei, dass sich (in meinem Fall) der Thread nicht einfach "abschießen" lässt. Grund dafür ist wahrscheinlich, dass dieser zu dem Zeitpunkt nicht selbst aktiv ist sondern auf eine Rückgabe wartet. Ich werde in den nächsten Tagen aber noch ein paar Varianten testen. gruß flo ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndB Mitglied Ingenieur
  
 Beiträge: 616 Registriert: 28.09.2001
|
erstellt am: 17. Mai. 2005 10:28 <-- editieren / zitieren --> Unities abgeben:          Nur für FlorianGerteisz
Hallo flo, ich habe momentan mit SWX 2005 SP3 auch so meine schwierigkeiten retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings ) wenn ich aus einer Zeichnung das Modell ermittle und dann versuche mit openDoc6 zu öffnen will SWX das nicht.
Auch wenn ich den filename von Hand fest vorgebe NIX Erst wenn ich die Zeichnung schließe öffnet er mit dem selben Befehl das 3D Dok ????? Ist das bei dir auch der fall? Gruss Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 17. Mai. 2005 10:36 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd! Das selbe Problem hatte ich zu Beginn auch. Grund dafür ist, dass SWX beim Öffnen der Zeichnung das Modell mitläd. Dadurch kannst du das Modell nicht öffnen, da es ja schon (nicht sichtbar) geöffnet ist. Als "Schnelllösung" habe ich auch einfach die Zeichnung geschlossen und dann das Modell nochmals geöffnet. Was eigentlich unsinnig ist, da das Modell somit 2x geladen werden muss. Um dieses Problem zu umgehen könntest du folgendes versuchen: Code:
modeldoc = SldWorks.ActivateDoc2 (ModellName, true, err); modeldoc.Visible(true);
Hab es selbst aber noch nicht versucht... gruß flo ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Blokscha Mitglied Konstrukteur
 
 Beiträge: 175 Registriert: 10.07.2000 XEON 2x3.33GHz, 8.0GB Ram, nVidia Quadro FX 570 256 MB, WIN XP64 SP 2, SWX 2007_x64 SP 5.0
|
erstellt am: 18. Mai. 2005 06:35 <-- editieren / zitieren --> Unities abgeben:          Nur für FlorianGerteisz
Hallo zusammen, ich habe bei einem Programm folgenden Programm schnippsel verwendet um das referenzierte Modell sichtbar zu machen um danach zur Zeichnung zurück zukehren: If (Model.GetType() = swDocDRAWING) Then Set DrawingDoc = swApp.ActiveDoc Set View = DrawingDoc.GetFirstView Set View = View.GetNextView If View Is Nothing Then keinModell Exit Sub End If ModName = View.GetReferencedModelName() Zeichnung = Model.GetPathName() If Zeichnung = Empty Then saveAktion Exit Sub End If Set Model = swApp.ActivateDoc2(ModName, True, errors) barDatenAuslesen swApp.CloseDoc Model.GetTitle() Set Model = swApp.ActivateDoc2(Zeichnung, True, errors) Model.Visible = True End If Hoffe es hilft euch weiter Gruß Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 18. Mai. 2005 08:35 <-- editieren / zitieren --> Unities abgeben:         
Laut Ralfs Lösung reicht dann sogar Code:
Set Model = swApp.ActivateDoc2(ModName, True, errors)
@Ralf Musst du am Ende deiner Routine folgendes machen?
Code:
Model.Visible = True
gruß flo ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Blokscha Mitglied Konstrukteur
 
 Beiträge: 175 Registriert: 10.07.2000 XEON 2x3.33GHz, 8.0GB Ram, nVidia Quadro FX 570 256 MB, WIN XP64 SP 2, SWX 2007_x64 SP 5.0
|
erstellt am: 18. Mai. 2005 12:12 <-- editieren / zitieren --> Unities abgeben:          Nur für FlorianGerteisz
Hallo Florian, kann ich dir nicht sagen ob ich sie brauch, den ich habe es erst garnicht ohne probiert. [Edit/] Aber vergiss nicht den Namen des referenzierte Modells heraus zufiltern [/Edit] Gruß Ralf [Diese Nachricht wurde von Ralf Blokscha am 18. Mai. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 18. Mai. 2005 12:16 <-- editieren / zitieren --> Unities abgeben:         
|