| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation: Schutz sensibler 3D CAD Daten, egal von wo Sie arbeiten, eine Pressemitteilung
|
Autor
|
Thema: Anzahl Parts in Ordner (1425 mal gelesen)
|
Nurium Mitglied

 Beiträge: 21 Registriert: 14.11.2013 V5R19 SP8 Lizenz ED2 Hardware wechselnd
|
erstellt am: 25. Jul. 2014 12:36 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich möchte mit einem Makro Bauteilen ihre Konstruktionstabellen zuweisen. Der Pfad geht durch regelmäßiges Copy&Paste verloren. Für ein Bauteil klappt das ganze gut. Jetzt möchte ich das Makro auf alle Catparts in einem Ordner erweitern, scheitere allerdings an der For-Schleife. Gibt es eine Möglichkeit die Anzahl der Parts in dem Ordner zu zählen? Hier mal mein Code soweit: Sub CATMain() Dim documents1 As Documents Dim partDocument1 As PartDocument Dim AppShell As Object Dim BrowseDir As Variant Dim Pfad As String Dim part1 As Part Dim relations1 As Relations Dim designTable1 As DesignTable 'Auswahldialog anzeigen Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1, 17) Folder = BrowseDir.Items().Item().Path For I = 1 To Folder.Files.Count Set documents1 = CATIA.Documents Set partDocument1 = documents1.Open(Folder & "\Kraftstofftank.CATPart") Set part1 = partDocument1.Part Set relations1 = part1.Relations Set designTable1 = relations1.Item("Parameter_Kraftstofftank_1") part1.Update Set partDocument1 = CATIA.ActiveDocument partDocument1.Save partDocument1.Close Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Jul. 2014 12:54 <-- editieren / zitieren --> Unities abgeben:          Nur für Nurium
Servus Du könntest doch in der For-Schleife, vor dem Öffnen des Dokuments die Dateierweiterung auswerten (If-Verzweigung) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nurium Mitglied

 Beiträge: 21 Registriert: 14.11.2013 V5R19 SP8 Lizenz ED2 Hardware wechselnd
|
erstellt am: 25. Jul. 2014 13:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd, erstmal vielen Dank für die schnelle Antwort mit der if-Schleife. Das probiere ich aus. Mein Problem ist gerade leider das For selbst. Als Fehlermeldung zu dem Folder kommt "invalid qualifier". Sub CATMain() Dim documents1 As Documents Dim partDocument1 As PartDocument Dim AppShell As Object Dim BrowseDir As Variant Dim Folder As String Dim part1 As Part Dim relations1 As Relations Dim designTable1 As DesignTable 'Auswahldialog anzeigen Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1, 17) Folder = BrowseDir.Items().Item().Path For I = 1 To Folder.Files.Count If InStr(File.Name, ".CATPart") <> 0 Then Set documents1 = CATIA.Documents Set partDocument1 = documents1.Open(Folder & "\Kraftstofftank.CATPart") Set part1 = partDocument1.Part Set relations1 = part1.Relations Set designTable1 = relations1.Item("Parameter_Kraftstofftank_1")
part1.Update Set partDocument1 = CATIA.ActiveDocument partDocument1.Save partDocument1.Close End If Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Jul. 2014 17:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Nurium
Servus Ich würde das Makro so aufbauen (nur das öffnen eingebaut): Code: Sub CATMain()Dim documents1 As Documents Dim partDocument1 As PartDocument Dim AppShell As Object Dim BrowseDir As Variant Dim Folder As Folder Dim part1 As Part Dim relations1 As Relations Dim designTable1 As DesignTable Dim File As File Set documents1 = CATIA.Documents 'Auswahldialog anzeigen Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1, 17) If BrowseDir Is Nothing Then 'Es wurde Abbrechen gedrückt Exit Sub End If Set Folder = CATIA.FileSystem.GetFolder(BrowseDir.self.Path)
For Each File In Folder.Files If InStr(File.Name, ".CATPart") <> 0 Then Set partDocument1 = documents1.Open(File.Path) End If Next
End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
  
 Beiträge: 751 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 28. Jul. 2014 08:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Nurium
|
Nurium Mitglied

 Beiträge: 21 Registriert: 14.11.2013 V5R19 SP8 Lizenz ED2 Hardware wechselnd
|
erstellt am: 28. Jul. 2014 14:16 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank, Bernd! Jetzt funktioniert es Nur beim Speichern hab ich noch ein Problem. Es gibt keinen Fehler, aber das Änderungsdatum bleibt gleich und damit wird die neue Verknüpfung nicht gespeichet. Weiß jemand warum? Code: Sub CATMain()Dim documents1 As Documents Dim partDocument1 As PartDocument Dim AppShell As Object Dim BrowseDir As Variant Dim Folder As Folder Dim part1 As Part Dim relations1 As Relations Dim relations2 As Relations Dim designTable1 As DesignTable Dim designTable2 As DesignTable Dim File As File Set documents1 = CATIA.Documents 'Auswahldialog anzeigen Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1, 17) 'Es wurde Abbrechen gedrückt If BrowseDir Is Nothing Then Exit Sub End If Set Folder = CATIA.FileSystem.GetFolder(BrowseDir.self.Path) 'Alle Dateien im Ordner durchgehen For Each File In Folder.Files 'Alle CATParts bearbeiten If InStr(File.Name, ".CATPart") <> 0 Then Name_Length = InStr(File.Name, ".CATPart") Name = Left(File.Name, Name_Length - 1) Set partDocument1 = documents1.Open(File.Path) Set part1 = partDocument1.Part 'Abfrage nach erster Konstruktionstabelle und Zuweisung If relations1exist Then Set relations1 = part1.Relations Set designTable1 = relations1.Item("Parameter_" & Name & "_1") End If 'Abfrage nach zweiter Konstruktionstabelle und Zuweisung If relations2exist Then Set relations2 = part1.Relations Set designTable2 = relations2.Item("Parameter_" & Name & "_2") End If 'Part aktualisieren, speichern und schließen part1.Update Set partDocument1 = CATIA.ActiveDocument partDocument1.Save partDocument1.Close End If Next End Sub
[Diese Nachricht wurde von Nurium am 30. Jul. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Jul. 2014 16:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Nurium
Servus Hast du überhaupt was im Part geändert? Wenn nicht wird AFAIK  das Dokument auch nicht gespeichert. (ggf muss du ein Speichern durch eine Änderung erzwingen) Gruß Bernd PS: Die Zeile "Set partDocument1 = CATIA.ActiveDocument" kann entfallen. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager

 Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 28. Jul. 2014 17:53 <-- editieren / zitieren --> Unities abgeben:          Nur für Nurium
|