Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Exception ThickenFeature

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
Autor Thema:   Exception ThickenFeature (1255 mal gelesen)
rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 21. Okt. 2011 15:30    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

Wenn ich den unten stehenden Code im VBA-Editor laufen lasse, klappt es. Setz ich den identischen Code (abgesehen von ThisApplication) in eine .Net-AddIn dll, erstellt er die erste Verdickung und bei der zweiten (und jeder weiteren) bekomme ich eine Com-Exception bei "ThickenFeatures.Add". Ich bin ratlos. Hat jemand eine Idee zur Ursache?

Code:
Private Sub test()

Dim myPartDoc As PartDocument
Set myPartDoc = ThisApplication.ActiveDocument
Dim oFace As Face
Dim oObjectCollection As ObjectCollection
Set oObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection()
Dim oThickenFeature As ThickenFeature

Call oObjectCollection.Add(myPartDoc.ComponentDefinition.SurfaceBodies.Item(1).Faces.Item(3))
Call oObjectCollection.Add(myPartDoc.ComponentDefinition.SurfaceBodies.Item(1).Faces.Item(5))

Dim oFaces As ObjectCollection
Set oFaces = ThisApplication.TransientObjects.CreateObjectCollection
           
For Each oObject In oObjectCollection
    If TypeOf oObject Is Face Then
        oFaces.Add (oObject)
        Call myPartDoc.ComponentDefinition.Features.ThickenFeatures.Add(oFaces, 1 + 0.2, PartFeatureExtentDirectionEnum.kPositiveExtentDirection, PartFeatureOperationEnum.kNewBodyOperation, False, False)
        oFaces.Clear
    End If
Next

End Sub


------------------
MfG
RK

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 21. Okt. 2011 15: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 rkauskh 10 Unities + Antwort hilfreich

Hi, da würde ich als erstes prüfen, ob die Flächen 3 und 5 wirklich die Gleiche sind in VBA und .NET... Der Aufruf von ThickenFeatures.Add in .NET wäre auch interessant. Wie lautet die Exception? Der nichtssagender Klassiker „Wrong Argument“? Ein Document.Update ist immer eine Option bei Ratlosigkeit...

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 21. Okt. 2011 21:46    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

Halte ich kurz vor Erstellen der zweiten Verdickung an, sieht man zumindest das Fläche 3 die gleiche ist (Verdickung entsteht an der gleichen Fläche). Der Fehler ist ein "unbekannter Fehler HRESULT: 0x80004005 E_FAIL". Unter die komplette Kopie der Meldung. Es sieht so aus, daß bei "oFaces.Add (oObject)" das Problem entsteht. In der Überwachung steht der Fehler bei so ziemlich jedem Unterpunkt. Dreh ich die Reihenfolge der Flächen um, funktioniert die Vedickung an Fläche 5 und scheitert plötzlich an Fläche 3. 

In .Net rufe ich so auf:

Code:

Dim oThickenFeature As ThickenFeature
oThickenFeature = myPartDoc.ComponentDefinition.Features.ThickenFeatures.Add(oFaces, 1 + 0.2, PartFeatureExtentDirectionEnum.kPositiveExtentDirection, PartFeatureOperationEnum.kNewBodyOperation, False, False)

Zitat:

"System.Runtime.InteropServices.COMException" wurde aufgefangen.
  ErrorCode=-2147467259
  Message="Ein Aufrufziel hat einen Ausnahmefehler verursacht."
  Source="mscorlib"
  StackTrace:
      bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)    bei Inventor.ThickenFeatures.Add(Object Faces, Object Distance, PartFeatureExtentDirectionEnum ExtentDirection, PartFeatureOperationEnum Operation, Boolean AutomaticFaceChain, Boolean CreateVerticalSurfaces, Boolean AutomaticBlending)    bei Toolbox.CalculateDimensions.GetMatrixRangeBox(PartDocument oPartDoc, Matrix oMatrix)
  InnerException:

------------------
MfG
RK

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 22. Okt. 2011 08:42    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 rkauskh 10 Unities + Antwort hilfreich

Hmmm, schon versucht oFaces immer neu zu erstellen anstatt Clear()?

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 22. Okt. 2011 13: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

Hi

Ja, ein oFaces=nothing sollte es doch zerstören oder? Hatte ich bereits versucht, leider mit dem gleichen Ergebnis. 

Hab meine Frage auch mal parallel im Autodesk Forum gestellt, dort aber noch keine Antwort erhalten.

------------------
MfG
RK

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 22. Okt. 2011 14:12    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 rkauskh 10 Unities + Antwort hilfreich

Ich meinte eher: Set oFaces = ThisApplication.TransientObjects.CreateObjectCollection

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 22. Okt. 2011 16: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

Hi

Ja, ein oFaces=Nothing am Ende der Schleife und ein Set oFaces=ThisApplication.TransientObjects.CreateObjectCollection am Anfang.

------------------
MfG
RK

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 25. Okt. 2011 20: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

Hallo

Ich hab's mal an Autodesk geschickt. Mal sehen was die dazu sagen.

Danke für die Hilfe Igor. 

------------------
MfG
RK

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 30. Jan. 2012 21:43    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

Autodesk hat das Verhalten als Fehler eingestuft und arbeitet an einem Fix. Die ObjectCollection aus meinem ersten Beitrag wird ungültig, wenn durch das erste Feature das Modell verändert wird. Man kann den Fehler umgehen, indem mam für jede Fläche die verdickt werden soll einen Referenzkey erzeugt und der Fläche zuweist. Über den Refencekey kann man die Fläche wieder greifen. Es ist nicht ganz sicher, daß das zuverlässig funktioniert, aber ich konnte bisher keinen Fehler provozieren. Zur Erklärung noch der relevante Codeteil:

Code:
Private Sub ThickenFeature
        Dim myPartDoc As PartDocument
        myPartDoc = myInventor.ActiveDocument

        Dim oThickenFeature As Inventor.ThickenFeature = Nothing

        Dim keys As List(Of Byte()) = New List(Of Byte())
        Dim contexts As List(Of Integer) = New List(Of Integer)


        Dim face As Face = myPartDoc.ComponentDefinition.SurfaceBodies.Item(1).Faces.Item(3)
        Dim key As Byte() = New Byte() {}
        Dim context As Integer = myPartDoc.ReferenceKeyManager.CreateKeyContext()
        Call face.GetReferenceKey(key, context)
        keys.Add(key)
        contexts.Add(context)

        face = myPartDoc.ComponentDefinition.SurfaceBodies.Item(1).Faces.Item(5)
        key = New Byte() {}
        context = myPartDoc.ReferenceKeyManager.CreateKeyContext()
        Call face.GetReferenceKey(key, context)
        keys.Add(key)
        contexts.Add(context)

        Dim oFaces As ObjectCollection
        oFaces = myInventor.TransientObjects.CreateObjectCollection

        For i As Integer = 0 To 1

            key = keys(i)
            context = contexts(i)

            face = myPartDoc.ReferenceKeyManager.BindKeyToObject(key, context)
            oFaces.Add(face)
            Try
                oThickenFeature = myPartDoc.ComponentDefinition.Features.ThickenFeatures.Add(oFaces, 1.2, PartFeatureExtentDirectionEnum.kPositiveExtentDirection, PartFeatureOperationEnum.kNewBodyOperation, False, False, False)
            Catch ex As Exception
                MessageBox.Show(ex.ToString())
            End Try
            oFaces.Clear()
        Next
    End Sub


------------------
MfG
RK

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 31. Jan. 2012 18:46    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 rkauskh 10 Unities + Antwort hilfreich

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