Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Bauteil oder Baugruppe Platzieren

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:  Bauteil oder Baugruppe Platzieren (1319 mal gelesen)
Rodario7
Mitglied
Maschinenbautechniker


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

Beiträge: 85
Registriert: 08.02.2013

Windows 7 64bit
Inventor 2013
Visual Basic 2010 Express

erstellt am: 24. Sep. 2014 09:49    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,
ich stehe mal wieder vor einer neuen Aufgabe.
Ich möchte unter bestimmten Voraussetzungen ein Bauteil in eine Baugruppe einfügen.
Andererseits möchte ich aber auch, falls die Voraussetzung nicht zutrifft, dieses Bauteil aus der Baugruppe löschen.
Der Name des Bauteils ist bekannt.
Gefunden habe ich bisher diesen VBA-Code zum einfügen eines Bauteils.
Code:
Public Sub AddOccurrence()
       
        ' Set a reference to the assembly component definintion.
        ' This assumes an assembly document is open.
                Dim oAsmCompDef As AssemblyComponentDefinition
        oAsmCompDef = ThisApplication.ComponentDefinition

        ' Set a reference to the transient geometry object.
        Dim oTG As TransientGeometry
        oTG = ThisApplication.TransientGeometry

        ' Create a matrix.  A new matrix is initialized with an identity matrix.
        Dim oMatrix As Matrix
        oMatrix = oTG.CreateMatrix

        ' Set the rotation of the matrix for a 45 degree rotation about the Z axis.
        Call oMatrix.SetToRotation(3.14159265358979 / 4, _
                                oTG.CreateVector(0, 0, 1), oTG.CreatePoint(0, 0, 0))

        ' Set the translation portion of the matrix so the part will be positioned
        ' at (3,2,1).
        Call oMatrix.SetTranslation(oTG.CreateVector(3, 2, 1))

        ' Add the occurrence.
        Dim oOcc As ComponentOccurrence
        oOcc = oAsmCompDef.Occurrences.Add("C:\Temp\Part1.ipt", oMatrix)
    End Sub



Hier kommt eine Fehlermeldung, das ThisApplication nicht deklariert ist. (völlig richtig)
Ersetze ich ThisApplication durch
oInventorApp
Code:
Dim oInventorApp As Inventor.Application
        oInventorApp = CType(GetObject(, "Inventor.Application"), Application)

heißt die Fehlermeldung ; Option Strict On lässt spätes binden nicht zu.
Kann da jemand weiterhelfen?

Und dann bleibt ja noch das Problem mit dem herauslöschen des Bauteils aus einer Baugruppe, zu dem ich noch gar keinen Ansatz habe.

------------------
Gruß
Klaus

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

Rodario7
Mitglied
Maschinenbautechniker


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

Beiträge: 85
Registriert: 08.02.2013

Windows 7 64bit
Inventor 2013
Visual Basic 2010 Express

erstellt am: 24. Sep. 2014 11:03    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

Aktualisierung:
Habe das mit dem einfügen jetzt hinbekommen.
Code:
Public Sub AddOccurrence()

        ' Set a reference to the assembly component definintion.
        ' This assumes an assembly document is open.
        Dim oInventorApp As Inventor.Application
        oInventorApp = CType(GetObject(, "Inventor.Application"), Application)
        Dim oAssDoc As Inventor.AssemblyDocument = CType(oInventorApp.ActiveDocument, AssemblyDocument)

        If oInventorApp.ActiveDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
                        Dim oAsmCompDef As AssemblyComponentDefinition
            oAsmCompDef = CType(oAssDoc.ComponentDefinition, AssemblyComponentDefinition)

            ' Set a reference to the transient geometry object.
            Dim oTG As TransientGeometry
            oTG = oInventorApp.TransientGeometry

            ' Create a matrix.  A new matrix is initialized with an identity matrix.
            Dim oMatrix As Matrix
            oMatrix = oTG.CreateMatrix

            ' Set the rotation of the matrix for a 45 degree rotation about the Z axis.
            Call oMatrix.SetToRotation(3.14159265358979 / 4, _
                                    oTG.CreateVector(0, 0, 0), oTG.CreatePoint(0, 0, 0))

            ' Set the translation portion of the matrix so the part will be positioned
            ' at (3,2,1).
            Call oMatrix.SetTranslation(oTG.CreateVector(0, 0, 0))

            ' Add the occurrence.
            Dim oOcc As ComponentOccurrence
            oOcc = oAsmCompDef.Occurrences.Add("C:\test\Vorlagen\test.ipt", oMatrix)
            oOcc.Grounded = True
        End If
    End Sub



Könnte mir jemand beim löschen eines Bauteils/Baugruppe aus einer Baugruppe helfen?

------------------
Gruß
Klaus

[Diese Nachricht wurde von Rodario7 am 24. Sep. 2014 editiert.]

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

RolandD
Mitglied



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

Beiträge: 533
Registriert: 07.01.2005

erstellt am: 24. Sep. 2014 14:17    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 Rodario7 10 Unities + Antwort hilfreich

Hallo Klaus,

die API-Hilfe sagt unter dem Suchbegriff "ComponentOccurrence Object" folgendes:
(siehe Hilfe - Programmierung/API-Hilfe)

ComponentOccurrence.Delete Method
Parent Object: ComponentOccurrence

Description
Method that deletes the occurrence. This is the equivalent of the user deleting the occurrence interactively.

Syntax
ComponentOccurrence.Delete()

------------------
Gruß Roland

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

Rodario7
Mitglied
Maschinenbautechniker


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

Beiträge: 85
Registriert: 08.02.2013

Windows 7 64bit
Inventor 2013
Visual Basic 2010 Express

erstellt am: 24. Sep. 2014 15:26    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

Danke für den Hinweis habs hinbekommen.
Wen der Code interessiert:
Code:
Public Sub DelOccurence()
        Dim oInventorApp As Inventor.Application
        oInventorApp = CType(GetObject(, "Inventor.Application"), Application)
        Dim oAssDoc As Inventor.AssemblyDocument = CType(oInventorApp.ActiveDocument, AssemblyDocument)

        If oInventorApp.ActiveDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
                        Dim oAsmCompDef As AssemblyComponentDefinition            oAsmCompDef = CType(oAssDoc.ComponentDefinition, AssemblyComponentDefinition)
            For Each oOcc1 As ComponentOccurrence In oAsmCompDef.Occurrences
                'MsgBox(oOcc1.Name)
                If oOcc1.Name = "test:1" Then
                    oOcc1.Delete()
                End If
            Next
        End If
    End Sub


------------------
Gruß
Klaus

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