| | | 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
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 24. Sep. 2014 09:49 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 24. Sep. 2014 11:03 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 533 Registriert: 07.01.2005
|
erstellt am: 24. Sep. 2014 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Rodario7
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
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 24. Sep. 2014 15:26 <-- editieren / zitieren --> Unities abgeben:
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 >>)
|