| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: VBA-Eintrag beim öffnen löschen (869 mal gelesen)
|
Empl Mitglied Maschinenbautechniker
Beiträge: 29 Registriert: 16.06.2011 TAROX Worksation Intel Core i9-9900k 3,6Ghz 64GB RAM; Nvidia Quadro RTX4000 Software: Windows 10 64bit Inventor 2020 AutoCAD Mechanical 2020 AutoCAD Plant 3D 2020
|
erstellt am: 27. Okt. 2020 15:32 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wir haben bei unseren Bauteilen einen VBA-Eintrag der bei größeren Baugruppen (ab ca. 3500 Bauteile) Probleme macht. Dabei handelt es sich um ein Relikt aus alten Zeiten welches nicht mehr verwendet wird. Gibt es eine Möglichkeit, diesen Eintrag beim Öffnen der Datei/Baugruppe automatisch zu löschen? Kann man hierfür einen Eintrag in der übergeordneten Default.ivb machen der das übernimmt? Wie müsste dieser aussehen. Danke für eure Hilfe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 601 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 27. Okt. 2020 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für Empl
zum Einstieg VBComponent.RemoveRemove method (VBA Add-In Object Model) folgenden Code habe ich kurz ausprobiert: das aktive Dokument enthielt "Module1". Dieses Modul wurde damit gelöscht.
Code: Private Sub test() Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument Dim a As InventorVBAProject Set a = oDoc.VBAProject Dim b Set b = a.VBProject Dim oModule Set oModule = b.VBComponents.Item("Module1") Call b.VBComponents.Remove(oModule) End Sub
------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Empl Mitglied Maschinenbautechniker
Beiträge: 29 Registriert: 16.06.2011 TAROX Worksation Intel Core i9-9900k 3,6Ghz 64GB RAM; Nvidia Quadro RTX4000 Software: Windows 10 64bit Inventor 2020 AutoCAD Mechanical 2020 AutoCAD Plant 3D 2020
|
erstellt am: 28. Okt. 2020 08:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke schon mal. Grundsätzlich funktioniert der Code, aber nur bei der ersten Datei. Ich hab hier im aktuellen Projekt in der Gesamtbaugruppe ca. 1800 verschiedene BT´s verbaut. In allen ist das Modul1 enthalten. Nach der ersten Datei wird aber nix mehr gelöscht. Wie muss man den Code ergänzen um das zu bewirken. Sorry für die Fragen. Was VBA betrifft bewege ich mich gerade auf kompletten Neuland und werds auch hinterher sicher nicht mehr brauchen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EIBe 3D Mitglied Dipl. - Ing. (FH)
Beiträge: 267 Registriert: 24.01.2020 HP Z4 G4 Workstation Xeon 3,6 32GB Nvidia P2000 WIN10 SW2015 SP5.0 SW2017 ************* Inv2018 akt.SP
|
erstellt am: 28. Okt. 2020 09:57 <-- editieren / zitieren --> Unities abgeben: Nur für Empl
Hallo Empl, probier das mal (erstmal an einer kleinen Baugruppe!) Code:
Private Sub test() Dim oApp As Inventor.Application: Set oApp = ThisApplication Dim oDoc As Inventor.Document: Set oDoc = oApp.ActiveDocument Dim oAsmDoc As Inventor.AssemblyDocument: Set oAsmDoc = oDoc Dim oAllRefDocs As Inventor.DocumentsEnumerator: Set oAllRefDocs = oAsmDoc.AllReferencedDocuments 'Im Dokument und allen Unterdokumenten referenzierte Komponenten Dim oRefDoc As Inventor.Document For Each oRefDoc In oAllRefDocs Dim a As InventorVBAProject Set a = oRefDoc.VBAProject Dim b Set b = a.VBProject Dim oModule Set oModule = b.VBComponents.Item("Module1") Call b.VBComponents.Remove(oModule) Next End Sub
Ich habe gerade keine Zeit das zu testen. Wenn der VBA-Code nur in Bauteilen steckt folgender Code:
Code:
Private Sub test() Dim oApp As Inventor.Application: Set oApp = ThisApplication Dim oDoc As Inventor.Document: Set oDoc = oApp.ActiveDocument Dim oAsmDoc As Inventor.AssemblyDocument: Set oAsmDoc = oDoc Dim oAllRefDocs As Inventor.DocumentsEnumerator: Set oAllRefDocs = oAsmDoc.AllReferencedDocuments 'Im Dokument und allen Unterdokumenten referenzierte Komponenten Dim oRefDoc As Inventor.Document For Each oRefDoc In oAllRefDocs If oRefDoc.DocumentType = kPartDocumentObject Then Dim a As InventorVBAProject Set a = oRefDoc.VBAProject Dim b Set b = a.VBProject Dim oModule Set oModule = b.VBComponents.Item("Module1") Call b.VBComponents.Remove(oModule) End If Next End Sub
Grüße
EIBe 3D Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 30. Okt. 2020 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für Empl
|