Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Ungültige/ verlorene Referenzen in Skizze löschen

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:  Ungültige/ verlorene Referenzen in Skizze löschen (2128 mal gelesen)
mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 723
Registriert: 06.09.2012

erstellt am: 31. Mai. 2013 07: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 zusammen,

ein Kollege und ich erstellen gerade ein Makro, das alle enthaltenen Skizzen in einer *.ipt durchläuft und nach ungültigen/ verlorenen Referenzen sucht.
Wird eine solche Referenz gefunden, wird diese gelöscht und anschließend der Name der betroffenen Skizze als Konsolenausgabe (Messagebox) aufgelistet.

Um solche Referenzen zu identifizieren, werden die Eigenschaften „Variablenname.Reference = True“ und „Variablenname.ReferencedEntity is Nothing“ überprüft.
Im Allgemeinen funktioniert der Code auch halbwegs.
Jedoch kommt es vor, dass „gültige“ Referenzen gelöscht werden.
Diese besitzen ab und an ebenfalls das Merkmal „Variablenname.ReferencedEntity is Nothing“, wobei das ja nicht sein dürfte!?

1. Woran könnte es liegen, dass der Wert „Nothing“ ist, obwohl diese Referenzen in Ordnung sind?
2. Gibt es ein anderes eindeutiges Merkmal von Referenzen, um fehlerverursachende Referenzen zu finden?

Vielen herzlichen Dank im Voraus für eure Bemühungen.

Grüße
MB-Ing.


------------------
Wissen ist Macht. Nichts wissen macht auch nichts  

[Diese Nachricht wurde von mb-ing am 31. Mai. 2013 editiert.]

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

mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 723
Registriert: 06.09.2012

Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)

erstellt am: 05. Jun. 2013 07: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

Hi,

hat hierzu keiner eine Idee oder ist der Beitrag einfach etwas unverständlich verfasst? ^^

Danke und Grüße

MB-Ing.

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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

Alienware m17x, Win7, Inventor2012

erstellt am: 05. Jun. 2013 08: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 mb-ing 10 Unities + Antwort hilfreich

Hi,

ohne so eine Beispieldatei mit fehlerhafter Referenz wird es nur sehr schwierig sein:

a. Festzustellen warum es überhaupt passiert
b. Einen anderen Weg zu finden wie man es umgehen kann

Code ist auch immer sehr hilfreich, nachdem man eine reproduzierbare Fehlerquelle gefunden hat.

------------------
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

mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 723
Registriert: 06.09.2012

erstellt am: 06. Jun. 2013 08: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

@daywa1k3r:

Vielen Dank für Deine Antwort.

Den Code habe ich unten beigefügt.

Mit der Beispieldatei dauert es noch etwas, da ich diesen entsprechend abändern muss (Firmengeheimnis etc. ...) und der Fehler nicht immer auftritt.

Danke und Grüße

MB-Ing.

' Alle fehlerhaften Referenzen (projezierte Geometrie) der Skizzen
' des aktiven Bauteils werden gelöscht.
' Anschließend werden die Namen dieser Skizzen ausgegeben.

Public Sub SkizzenBereinigen()
  On Error GoTo errhandler
 
  'Wenn kein Bauteil, dann Exit
  If ThisApplication.Documents.Count = 0 Then Exit Sub
  If Not ThisApplication.ActiveEditDocument.DocumentType = kPartDocumentObject Then Exit Sub
 
  Dim oPartDoc As PartDocument
  Set oPartDoc = ThisApplication.ActiveEditDocument
 
  'Transaktion starten für Rückgängigschritt
'  Dim otrans As Transaction
'  Set otrans = ThisApplication.TransactionManager.StartTransaction(oPartDoc, "Skizzen bereinigen")
 
  Dim sText As String
  sText = "Fehlerhafte Referenzen in Skizzen entfernt:" & vbNewLine
  Dim bPurgeOneSketch As Boolean
  Dim bPurgeAllSketch As Boolean
  Dim blRef As Boolean
  bPurgeAllSketch = False
 
  Dim oSketch As PlanarSketch
  For Each oSketch In oPartDoc.ComponentDefinition.Sketches
      'Wenn in der Skizze Referenzen verloren gegangen sind
      If oSketch.HealthStatus = kDriverLostHealth Then
        bPurgeOneSketch = False
        Dim oEntity As SketchEntity
        'Gehe durch alle Skizzenelemente
        For Each oEntity In oSketch.SketchEntities
            'Wenn es sich um ein Referenzelement handelt, keine Referenzelement mehr verfügbar ist
            'und das Referenzelement nicht an einer anderen Referenz hängt
            If oEntity.Reference = True And oEntity.ReferencedEntity Is Nothing And oEntity.OwnedBy.Count = 0 Then
              blRef = False
              'Bei Referenzpunkten prüfen, ob Referenzelemente daran hängen
              If oEntity.Type = kSketchPointObject Then
                  Dim oAttEntity As SketchEntity
                  For Each oAttEntity In oEntity.AttachedEntities
                    If oAttEntity.Reference = True Then
                        blRef = True
                    End If
                  Next
              End If
              'Wenn alle Bedingungen erfüllt, dann Element löschen
              If blRef = False Then
                  Call oEntity.Delete
                  bPurgeOneSketch = True
                  bPurgeAllSketch = True
              End If
            End If
        Next
        'Wenn fehlerhafte Referenzen gefunden, dann Skizzennamen ausgeben
        If bPurgeOneSketch = True Then
            sText = sText & oSketch.Name & vbNewLine
        End If
      End If
  Next
 
  'Wenn keine fehlerhafte Referenz gefunden
  If bPurgeAllSketch = False Then
      sText = "Keine löschbaren fehlerhafte Referenzen in Skizzen gefunden!"
  End If
  Call MsgBox(sText, vbInformation + vbOKOnly, "Skizzen bereinigen")
 
  oPartDoc.Update
'  otrans.End
 
  Exit Sub
errhandler:
    MsgBox "Error: " & Err.Description, vbCritical, "Skizzen bereinigen"
'    If Not otrans Is Nothing Then otrans.Abort
    Resume Next
 
End Sub

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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