Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
   [vb.net] COMExeption Solidworks

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 SOLIDWORKS
  
SOLIDWORKS Online-Kurse | Jederzeit verfügbar << , ein Kurs
Autor Thema:  [vb.net] COMExeption Solidworks (4932 mal gelesen)
gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 26. Jan. 2009 11:18    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


error.png

 
Hallo Leute,

ich habe ein mir unerklärbares Problem. Ich habe in vb.net Code geschrieben, welcher in Solidworks einige Teile einfügt und einige operationen durchführt. Solidworks ist über einen COM verweis an vb.net angebunden und wir mit swapp = CreateObject("sldworks.Application") als object in die variable swapp gespeichert.

Nun läuft das Program einigemale ohne Probleme durch. Plötzlich aber bleibt es an einer stelle hängen und bringt den Fehler:

System.Runtime.InteropServices.COMException wurde nicht behandelt.
  ErrorCode=-2147417851
  Message="Ausnahmefehler des Servers. (Ausnahme von HRESULT: 0x80010105 (RPC_E_SERVERFAULT))"

Irgendetwas scheind mit dem COM Object nicht zu stimmen, aber was?
Was genau sagt mir dieser Fehler und wie kann ich ihn vermeiden?
Dieser fehler dritt ab und zu auch an anderen stellen meines Programms auf.
Was mache ich falsch?

Sobald ich dann solidworks neu gestartet habe, geht er ohne probleme wieder eine zeit lang über die Codepasage drüber, bis wieder der fehler auftritt.

Hier das gesamte Ausnahmedetail:


System.Runtime.InteropServices.COMException wurde nicht behandelt.
  ErrorCode=-2147417851
  Message="Ausnahmefehler des Servers. (Ausnahme von HRESULT: 0x80010105 (RPC_E_SERVERFAULT))"
  Source="Interop.SldWorks"
  StackTrace:
      bei SldWorks.ISelectionMgr.GetSelectedObject6(Int32 Index, Int32 Mark)
      bei WindowsApplication1.adscrews.mate_screws(SldWorks swApp) in C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2008\Projects\Parabelrechner\Parabelrechner\Programms\adscrews.vb:Zeile 225.
      bei WindowsApplication1.swAddStandardScrews.Button1_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2008\Projects\Parabelrechner\Parabelrechner\Forms\swAddStandardScrews.vb:Zeile 154.
      bei System.Windows.Forms.Control.OnClick(EventArgs e)
      bei System.Windows.Forms.Button.OnClick(EventArgs e)
      bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
      bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
      bei System.Windows.Forms.Button.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
      bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
      bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
      bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
      bei System.Windows.Forms.Application.RunDialog(Form form)
      bei System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
      bei System.Windows.Forms.Form.ShowDialog()
      bei WindowsApplication1.main.Button1_Click_1(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2008\Projects\Parabelrechner\Parabelrechner\Forms\main.vb:Zeile 265.
      bei System.Windows.Forms.Control.OnClick(EventArgs e)
      bei System.Windows.Forms.Button.OnClick(EventArgs e)
      bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
      bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
      bei System.Windows.Forms.Button.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
      bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
      bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
      bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
      bei System.Windows.Forms.Application.Run(ApplicationContext context)
      bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
      bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
      bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
      bei WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
      bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
      bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
      bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
      bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
      bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
      bei System.Threading.ThreadHelper.ThreadStart()
  InnerException:


Anbei noch ein Screenshot den ich im Kompiler erstellt habe.
Ich hoffe Ihr könnt mir helfen.

[Diese Nachricht wurde von gegy3 am 26. Jan. 2009 editiert.]

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

monti0505
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 16.07.2008

erstellt am: 26. Jan. 2009 12:16    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 gegy3 10 Unities + Antwort hilfreich

Hi,

ich würde generell Try und Catch Blöcke verwenden um die Fehler abzufangen. Am besten um die Fehlerstelle um dann auch mal mit dem Debugger arbeiten zu können.

Bei deinem Problem  würde ich an der Stelle mal einen Haltepunkt setzen und schauen ob du nicht evtl. in dem Selectionmanager nicht versucht ein nicht vorhandenes Element zu selektieren da du hier ja noch ein i+1 verwendest, aber auch gleichzeitig in einer For-Schleife bist, die sowieso das i hochzählt und das bis zur angegebenen Grenze.
Irgendwann bist du dann bei Grenze + 1.

Das könnte evtl. der Fehler sein.

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 26. Jan. 2009 12:44    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...danke für Deine Antwort:

Mit try und catch habe ich es schon mal versucht.

Ich habe hier mal einen isolierten Code, der den Fehler verursacht:

Code:
Dim swapp As SldWorks.SldWorks

        swapp = CreateObject("Sldworks.Application")

        Dim selMngr As SldWorks.SelectionMgr
        Dim Doc As SldWorks.ModelDoc2

        Doc = swapp.ActiveDoc
        selMngr = Doc.SelectionManager

        Dim selObjectsCoun As Integer

        selObjectsCoun = selMngr.GetSelectedObjectCount()

        Dim i As Integer
        Dim selArray(2)

        For i = 0 To selObjectsCoun - 1
            selArray(i) = selMngr.GetSelectedObject5(i + 1)
        Next


Man nehme an vor dem Ausführen ist eine Zylindefläche und eine normale Fläche selektiert.
Der Code funktioniert auch ohne Probleme, nur nach einiger Zeit bekomme ich dann den Fehler beim
befüllen des Arrays. Der erste Index des Arrays lässt sich noch befüllen, der zweite aber nicht mehr.

Ich habe nun versuch mal zwei andere Fläche zu selektieren im selben Bauteil. KEIN PROBLEM!!!
Wenn ich aber wieder die anderen beiden Flächen nehme, bekomme ich wieder das Problem. Erst nach einem Neustart von Solidworks ist das Problem für einige zeit verschwunden.

Kann ich solidworks auch anders als über ein COM Object an vb.net anbinden?

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

Matthias
Mitglied
Programmierer


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

Beiträge: 43
Registriert: 06.07.2000

erstellt am: 26. Jan. 2009 12:56    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 gegy3 10 Unities + Antwort hilfreich

Hallo,

Zitat:
Kann ich solidworks auch anders als über ein COM Object an vb.net anbinden?

Probiers mal mit

Code:
swApp = (SldWorks.SldWorks) Marshal.GetActiveObject("SldWorks.Application")

Gruß

------------------
Matthias

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

monti0505
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 16.07.2008

erstellt am: 26. Jan. 2009 12:57    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 gegy3 10 Unities + Antwort hilfreich

Hallo,

nimm doch mal das i+1 aus dem 

Code:
selArray(i) = selMngr.GetSelectedObject5(i + 1)
raus und schreibe da nur "i" rein.

Man kann SWXSolidWorks auch so einbinden:

 

Code:
swApp = CType(GetObject(Class:="Sldworks.Application.16"), SldWorks.SldWorks)

Die 16 steht für SWXSolidWorks 2008, 17 für 2009 usw.

[Diese Nachricht wurde von monti0505 am 26. Jan. 2009 editiert.]

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 26. Jan. 2009 13: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

Zitat:
swApp = (SldWorks.SldWorks) Marshal.GetActiveObject("SldWorks.Application")

Zitat:
swApp = CType(GetObject(Class:="Sldworks.Application.16"), SldWorks.SldWorks)

Bei beiden Varianten muss ich aber einen Verweis auf das COM Object Solidworks machen, oder?

Zitat:
nimm doch mal das i+1 aus dem

    Code: selArray(i) = selMngr.GetSelectedObject5(i + 1)

raus.


Wenn ich aus i+1 ein i mache, will er jauch das selektierte Object 0 (wenn i = 0) holen, wie man aber in der API Hilfe von solidworks nachlesen kann, beginnt er hier bei 1 zu zählen:

Zitat:
retval = SelectionMgr.GetSelectedObject5 ( AtIndex )

Input:
(long) AtIndex
Index position within the current list of selected items, where AtIndex ranges from 1 to SelectionMgr::GetSelectedObjectCount



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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 26. Jan. 2009 13:08    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

Was sagt mir eigentlich dieser fehler:

"Ausnahmefehler des Servers. (Ausnahme von HRESULT: 0x80010105 (RPC_E_SERVERFAULT))"

?

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

monti0505
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 16.07.2008

erstellt am: 26. Jan. 2009 13:27    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 gegy3 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von gegy3:
Wenn ich aus i+1 ein i mache, will er jauch das selektierte Object 0 (wenn i = 0) holen, wie man aber in der API Hilfe von solidworks nachlesen kann, beginnt er hier bei 1 zu zählen:

[QUOTE]retval = SelectionMgr.GetSelectedObject5 ( AtIndex )

Input:
(long) AtIndex
Index position within the current list of selected items, where AtIndex ranges from 1 to SelectionMgr::GetSelectedObjectCount


[/QUOTE]


Hi,

starte die For-Schleife bei 1 und mache bei der Grenzangabe das "-1" weg. Ein Problem ist, denke ich, dass du durch das  "+1" über die Grenze hinweg kommst.


Soweit ich weiss kann man auf die SWXSolidWorks-API nur per COM zugreifen. Das ändert sich auch nicht, wenn du VB.net verwendest.

[Diese Nachricht wurde von monti0505 am 26. Jan. 2009 editiert.]

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 26. Jan. 2009 13:41    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

Ich muss jetzt leider warten bis der fehler wieder auftritt, weil ich solidworks neu gestartet habe und nun der fehler wieder weg ist.
Ich kann nun genau die selben Objekte wieder selektieren und der Fehler kommt nicht. Ich denke nicht, dass ich da nen Programmierfehler hab...naja sobald ich den Fehler wieder habe, kann ich dir sagen ob deine Änderung etwas geholfen hat.

*Edit*

Ich kann den Fehler ja nicht mal reproduzieren. 

[Diese Nachricht wurde von gegy3 am 26. Jan. 2009 editiert.]

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 02. Dez. 2009 17:05    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

Ich muss meinen Beitrag nochmal Pushen.
Hab noch immer keine Lösung für mein Problem.
Noch immer bekomme ich ab und zu den Fehler:  HRESULT: 0x80010105 (RPC_E_SERVERFAULT)

Ich bekomme jetzt in folgender Codezeile den Fehler:

swAddedCompFace = swAddedCompBody.GetFirstFace

Solange ich solidworks nicht neu starte spuckt mein Programm immer den selben Fehler an der gleichen Stelle aus.

Ich habe schon versucht den Garbage Collector vorher manuel zu starten, hilf aber auch nichts.
Ich bin am verzweifeln!       

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 01. Apr. 2010 10:13    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

Ich werd wohl die ganze funktion neu schreiben.   

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

Lutz Federbusch
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau



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

Beiträge: 3094
Registriert: 03.12.2001

alle SW seit 97+
AutoCAD2016-2022
ERP ProAlpha + CA-Link
Intel Core i7-7820K 32GB
Win10x64 Quadro K5000
SpacePilot

erstellt am: 01. Apr. 2010 10:20    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 gegy3 10 Unities + Antwort hilfreich

Hast Du mal probiert, eine Fehlerbehandlung einzuschalten und bei Fehler es nochmal versuchen zu lassen?
Vielleicht antwortet nur irgendwas nicht rechtzeitig.

------------------
Lutz Federbusch
Mein Gästebuch
Der Mensch, Herr oder Sklave der Technik?

[Diese Nachricht wurde von Lutz Federbusch am 01. Apr. 2010 editiert.]

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 01. Apr. 2010 10:25    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

Meinst du mit Try ...end Try?
ich bin den code schritt für schritt durchgegangen. Einige male läuft das Programm sauber durch, irgendwann dann tritt der Fehler dann plötzlich auf.
Der Fehler tritt dann so lange auf, bis ich solidworks neu starte.
Auch mein Programm neu zu starten (also alle variablen und objekte löschen)
bringt da nichts. Irgendwo im Speicher liegt noch was rum, was den Fehler auslöst.
Es ist zum verzweifeln.   

Die Leute die das Programm nutzen sind bereits verärgert, da sie immer solidworks neu starten müssen, damit es wieder funktioniert. Ich wäre ja schon etwas froher, wenn man nur mein Programm neu starten müsste und nicht gleich solidworks.

Zitat:
Vielleicht antwortet nur irgendwas nicht rechtzeitig.

Naja, wenn was nicht rechtzeitig antwortet, warum läuft der code dann einige male
ohne probleme durch?
Ich mach wirklich immer das gleiche. Wenn ich dann solidworks beende und neu starte, kann ich das Programm an der selben stelle wieder seine Tätigkeit ausführen lassen...alles geht, bis irgendwann wieder der Fehler auftritt.

[Diese Nachricht wurde von gegy3 am 01. Apr. 2010 editiert.]

[Diese Nachricht wurde von gegy3 am 01. Apr. 2010 editiert.]

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

mkkk
Mitglied



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

Beiträge: 105
Registriert: 04.03.2005

erstellt am: 01. Apr. 2010 10:59    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 gegy3 10 Unities + Antwort hilfreich

ersetz doch mal
  Dim selArray(2)

durch
  Dim selArray()
  ReDim selArray(selObjectsCount-1)

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 01. Apr. 2010 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

 
Zitat:
ersetz doch mal
  Dim selArray(2)

durch
  Dim selArray()
  ReDim selArray(selObjectsCount-1)


Ich glaub das hatte ich schon mal versucht. hat das Problem nicht gelöst.

Hier im Code tritt der Fehler auch ab und zu auf:

Code:
i = 0
Do Until swAddedCompFace Is Nothing
            swFaceSurface = swAddedCompFace.GetSurface
            If Not swFaceSurface.IsCylinder Then
                swSafeFacesTemp = swAddedCompFace
                ReDim Preserve swSafeFaces(i)
                swSafeFaces(i) = swSafeFacesTemp.GetSafeEntity
                i += 1
            End If
            'GC.Collect()
            swAddedCompFace = swAddedCompFace.GetNextFace
        Loop

Da dimensioniere ich das Array erst später im code.
Der Fehler tritt auf, wenn er die Zeile swFaceSurface = swAddedCompFace.GetSurface ausführt, obwohl
swAddedCompFace NICHT nothing ist.

[Diese Nachricht wurde von gegy3 am 01. Apr. 2010 editiert.]

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 01. Apr. 2010 11:34    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 gegy3 10 Unities + Antwort hilfreich

Hast du denn schon mal den Garbage - Collector per Hand angeschmissen, oder es zumindest probiert?
Wenn du alle nicht mehr benötigten Variablen ordnungsgemäß mit "nothing" belegst und dann den Garbage - Collector am Ende deines Programms anschmeißt, liegt doch die Wahrscheinlichkeit sehr hoch, dass er dir allen Müll ordnungsgemäß entsorgt und es bei einem erneuten Durchlauf nicht mehr zu Problemen kommt!
Grüße

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 01. Apr. 2010 11:40    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

Alle Variablen am Schluss mit nothing belegen hab ich schon gemacht.
Den GC hab ich aber nach der Zeile gestartet an der der Fehler auftritt. (GC.Collect())
Ich versuch ihn mal am ende nach der "Variablenleerung" auf zu rufen.
Bin auch gerade dabei das ganze von nem Modul in ne Klasse mit Eigenschaften
und Methoden um zubauen. vielleicht werden Klassenopjekte sauerberer gekillt
am ende?

Ein Problem ist es ja noch dazu, dass ich nicht weiß wann der Fehler auftritt....somit kann ich ihn nicht vernüftig Debuggen. 

[Diese Nachricht wurde von gegy3 am 01. Apr. 2010 editiert.]

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 01. Apr. 2010 12: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 Nur für gegy3 10 Unities + Antwort hilfreich

Trotz alledem gehört eine ordentliche Fehlerroutine zu einem vernünftigen Programm dazu.
Du solltest wirklich mal überlegen, ob du nicht mit
Code:
Try
.
.
.
Catch
.
.
.
Finally


arbeitest.
Das bietet dir unter anderem auch die Möglichkeit, bei einem eventuellen Fehler, etwas anderes ausführen zu lassen, bzw. ihm noch finale Anweisungen mitzugeben.
Grüße

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

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

gegy3
Mitglied



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

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2012 SP 5.0

erstellt am: 01. Apr. 2010 12:55    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

Ja das mach ich eh.

Code:
Try

...

catch ex

ex.message...


Die Message die ich bekomm ist aber genau die, die ich am anfang angegeben habe.

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

mkkk
Mitglied



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

Beiträge: 105
Registriert: 04.03.2005

erstellt am: 01. Apr. 2010 13:44    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 gegy3 10 Unities + Antwort hilfreich

Ich habe mir gerade mal das Bild in Deinem ersten Beitrag angeschaut.

Ich würde das GetSelectedObject6 mit -1 als Mark-Parameter verwenden, also:

swSelMgr.GetSelectedObject6(i+1,-1)

Dann bekommst Du auch alle ausgewählten Objekte und nicht nur die mit Markierung 0, wenn es die überhaupt gibt ;-)

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)2024 CAD.de | Impressum | Datenschutz