Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Referenz entfernen

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 Autodesk Produkte
Autor Thema:  Referenz entfernen (2523 mal gelesen)
Michi2
Mitglied
Softwareentwickler

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

Beiträge: 2
Registriert: 09.11.2010

erstellt am: 09. Nov. 2010 16: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

Hallo Zusammen,

aktuell versuche ich eine Lösung zu finden um nicht aufgelöste Referenzen innerhalb einer Baugrupper per API zu entfernen. Mein Ansatz bisher ist, das ich im AssemblyDocument in einer ForEach Schleife alle Objekte vom Typ 'ComponentOccurrence' durchlaufe. Wenn ein Eintrag gefunden wird mit ResolvedReferenced = False, dann versuche ich per ComponentOccurrences.Delete() den Eintrag zu löschen. Beim Delete kommt eine E_INVALIDARGS Exception?

Bin mir nicht sicher ob mein Ansatz falsch ist, oder ob die Baugruppe bzw. die Referenz Probleme macht? In den SDK Sampels und in der API Hilfe finde ich nur wie man eine ComponentOccurrences hinzufügt aber leider kein Beispiel zum löschen.

Es geht hier nur um Referenzen die in der Baugruppe als 'Leichen' existieren und physikalisch nicht mehr in der vorhandenen Verzeichnisstruktur vorhanden sind.

Schönen Gruß

Michael

[Diese Nachricht wurde von Michi2 am 09. Nov. 2010 editiert.]

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 09. Nov. 2010 21:01    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 Michi2 10 Unities + Antwort hilfreich

Hallo

Versuchst du wirklich ComponentOccurrences.Delete? Wo befindet sich ResolvedReference im Objektbaum? Ich konnte es auf die Schnelle nicht finden.

Bei mir läuft das problemlos durch:

Code:
Public Sub DelOcc()
    ' Set a reference to the assembly document.
    ' This assumes an assembly document is active.
    Dim oDoc As AssemblyDocument
    Set oDoc = ThisApplication.ActiveDocument
   
    Dim oOcc As ComponentOccurrence
    For Each oOcc In oDoc.ComponentDefinition.Occurrences
        oOcc.Delete
    Next
End Sub
   

Eventuell mal den Codeabschnitt posten.

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

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

Michi2
Mitglied
Softwareentwickler

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

Beiträge: 2
Registriert: 09.11.2010

erstellt am: 09. Nov. 2010 22:37    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,

Sorry ich meinte nicht ResolvedReference sondern ComponentOccurrence.ReferencedDocumentDescriptor.ReferenceMissing. Ist hier 'True' versuche ich per ComponentOccurrence.Delete() den Eintrag zu entfernen.

Hm, das ganze verhält sich höchst merkwürdig, wenn ich versuche Die Eintäge einfach alle zu löschen (Ählich Beispiel) klappt immer der 1. Delete beim 2. kommt dan der Fehler, und das Dokument speichern geht auch nicht, bzw. kommt spätestens hier der Fehler.

Muss noch ergänzen, das ich das ganze nicht aus Inventor heraus aufrufe sonder als 'Standalone' Applikation ausführe. Der Inventor wird unsichtbar geöffnet sowie die Baugruppen auch.

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

BernhardU
Mitglied
Techniker / Konstrukteur / Student


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

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 10. Nov. 2010 07: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 Michi2 10 Unities + Antwort hilfreich

Hi!

Verwendest du wirklich die ForEach Schleife? Dann kann das schon der Fehler sein! Du löscht aus einer Auflistung Einträge die dann beim Druchlaufen der Schleife einen Fehler auslösen!!

LG Bernhard

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 10. Nov. 2010 09: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 Michi2 10 Unities + Antwort hilfreich

Hallo

Guter Einwand, mein Testobjekt gestern hatte nur eine Occurrence.  
For Each kann man schon nehmen, muß es aber erweitern um ein umschließendes While. Zum Beispiel:

Code:
Public Sub DelOcc()
    ' Set a reference to the assembly document.
    ' This assumes an assembly document is active.
    Dim oDoc As AssemblyDocument
    Set oDoc = ThisApplication.ActiveDocument
   
    Dim bNewRun As Boolean
    bNewRun = True
    Dim oOcc As ComponentOccurrence

Do While bNewRun = True
   
    For Each oOcc In oDoc.ComponentDefinition.Occurrences
        If oOcc.ReferencedDocumentDescriptor.ReferenceMissing = True Then
            oOcc.Delete
            bNewRun = True
            Exit For
        Else
            bNewRun = False
        End If
    Next
Loop
End Sub


Für SubOccurences sollte man vielleicht über eine Rekursion nachdenken.

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

[Diese Nachricht wurde von rkauskh am 10. Nov. 2010 editiert.]

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