Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Komponenten aus BG paramtergesteuert 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:  Komponenten aus BG paramtergesteuert löschen (1352 mal gelesen)
RZGGB
Mitglied


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

Beiträge: 1
Registriert: 13.02.2011

erstellt am: 29. Aug. 2011 22:38    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!

Bin neu hier und habe ein Problem mit dem ich nicht weiterkomme.
Ich habe bisher zwar etwas Erfahrung mit Excel VBA, bin aber kpl. neu in Inventor VBA.
Habe Inventor 2009 und möchte aus einer Baugruppe bestimmte Komponenten parametergesteuert löschen.

Das Lösch-Makro soll mit anklicken des "Aktualisieren"-Buttons gestartet werden.

Mit dem nachfolgenden Code kann ich zwar Baugruppen, aber keine Bauteile löschen.

Code:
_______________________________________________________________
Public Sub Löschen()
   
    Dim oAsm As Inventor.AssemblyDocument
    Set oAsm = ThisApplication.ActiveDocument

    Dim oPara As Integer
    oPara = oAsm.ComponentDefinition.Parameters.Item("TeilJN").Value
   
   
    If oPara = 1 Then
    oAsm.ComponentDefinition.Occurrences.ItemByName("560100:1").Delete
    oAsm.ComponentDefinition.Occurrences.ItemByName("560101:1").Delete
   
    End If
   
   
End Sub
_______________________________________________________________
Kann mir hier jemand helfen?
Danke!

Gruß
Rzggb

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: 30. Aug. 2011 19:51    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 RZGGB 10 Unities + Antwort hilfreich

Hi

Bauteile in der Hauptbaugruppe sollten sich mit deinem Code eigentlich auch löschen lassen. Kann es ein, das du Occurrences in einer Unterbaugruppe auch löschen möchtest? Das wird so nicht funktionieren.

Probier's mal so (Code ungetestet):

Code:
Private Sub ProcessOcc()

Dim oCompDef As ComponentDefinition
Set oCompDef = ThisApplication.ActiveDocument.ComponentDefinition

Dim oPara As Integer
oPara = oCompDef.Parameters.Item("TeilJN").Value

If oPara = 1 Then
    Dim oCompOcc As ComponentOccurrence
   
    For Each oCompOcc In oCompDef.Occurrences
        If oCompOcc.Suppressed = False Then
            If InStr(oCompOcc.Name, "560100:1") Then
                oCompOcc.Delete
            Else
                If oCompOcc.DefinitionDocumentType = kAssemblyDocumentObject Then
                    Call processAllSubOcc(oCompOcc) ' subassembly
                End If
            End If
        End If
    Next
End If


End Sub

Private Sub processAllSubOcc(ByVal oCompOcc As ComponentOccurrence)

Dim oSubCompOcc As ComponentOccurrence

For Each oSubCompOcc In oCompOcc.SubOccurrences
    If oSubCompOcc.Suppressed = False Then
        If InStr(oCompOcc.Name, "560100:1") Then
            oSubCompOcc.Delete
        Else
            If oSubCompOcc.DefinitionDocumentType = kAssemblyDocumentObject Then
                Call processAllSubOcc(oSubCompOcc)
            End If
        End If
    End If
Next

End Sub


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

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