Autor
|
Thema: Abfrage cgr (1984 mal gelesen)
|
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 01. Okt. 2014 15:23 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, bis jetzt hat mir das Forum immer gut weitergeholfen, jedoch komme ich nun nicht mehr weiter. Ich bin dabei alle Parts & Products einer Station an einen neuen Ort abzuspeichern. Das Funktioniert auch alles einwandfrei. Jetzt wurde in der Konstruktion ein cgr verwendet. Wie ist es möglich abzufragen, ob es sich bei meinem Teil um ein cgr oder CATPart handelt. Mein Vorschlag wäre die Partnumber abzufragen, jedoch wüsste ich nicht wie. Vielen Dank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² 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: 01. Okt. 2014 15:36 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 01. Okt. 2014 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 01. Okt. 2014 15:41 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Moderator² 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: 01. Okt. 2014 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
Zitat: Original erstellt von Azazel1: Das Problem ist nur das die Dateiendung .CATPart ist. Nicht wundern, das war nicht meine Idee
WTF wer kommt denn auf sowas? Dann nennen wir demnächst PDF´s in .doc und Zip in rar und was weis ich nicht... Irgendwann wundert man sich dann, warum das nicht funktionieren kann. Am Ende das gleiche Prinzip, wie wenn Herr Müller auf seiner Klingel und dem Briefkasten Schmitz stehen hat und sich wundert, dass keine Briefe oder so ankommen... Tja ich glaube da hast du kaum eine Chance, denn AFAIK kannst du kaum noch Unterscheiden. Suche dir irgendwelche Parameter oder Features/Unterobjekt, die so ein Objekt klar identifizieren können. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 02. Okt. 2014 09:37 <-- editieren / zitieren --> Unities abgeben:
Nach mehrmaliger Absprache mit meinem Projektleiter haben wir nun herausgefunden das dieser Fall nur einmal auftritt und somit auch von Hand gelöst werden kann. Jedoch bin ich auf ein weiteres Problem gestoßen. Woran erkenne ich ob ein Teil ein Component ist, bzw die Teile darunter zu einem Component dazugehören. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Okt. 2014 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|
RSchulz Moderator² 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: 02. Okt. 2014 10:05 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 02. Okt. 2014 11:02 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die schnellen Antworten. Jetzt habe ich herausgefunden ob eine Baugruppe eine Komponente ist. Wie finde ich jedoch heraus, das die Teile darunter ebenfalls zu der Komponente gehören. Ich habe im Anhang ein Bild angehängt um mein Beispiel zu verdeutlichen. Gespeichert werden müsste nur die erste 5 Zeilen. Die anderen resultieren alle daraus, weil es Komponenten sind. Ich hoffe ihr versteht mein Problem. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Okt. 2014 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
Servus Was hast du genau vor? Wie weit bist du? wie bist du vorgegangen? IMHO ist es am einfachsten die Struktur rekursive abzuarbeiten (siehe Forensuche oder auch meine verlinkte Diskussion) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² 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: 02. Okt. 2014 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 02. Okt. 2014 12:40 <-- editieren / zitieren --> Unities abgeben:
Meine Aufgabe besteht darin, eine Vorrichtung mit allen darin beinhalteten Daten an einen anderen Ort zu speichern. Es muss in CATIA die Vorrichtung geladen werden. Anschließend erstellt mein Code im Explorer an einem angegebenen Verzeichnis Ordner. Einen Ordner für die Station an sich und darunter die Ordner für die jeweiligen Baugruppen. Anschließend wird überprüft ob es ein Fertigungsteil (beginnend mit "36.8")ist, oder ein Kaufteil. Kaufteile werden generell in den Ordner "Purchase" gespeichert. Die Fertigungsteile werden in die entsprechenden Baugruppen Ordner gespeichert. Gehen wir von diesem Fall aus funktioniert alles so weit ganz gut. Wenn jedoch gespiegelte Baugruppen/Fertigungsteile eingebaut sind, werden diese unter eine Komponente erstellt. Alle Teile unter der Komponente, einschließlich der Komponente an sich müssen nicht abgespeichert werden. Code: Sub rumprobieren() CATIA = GetObject(, "CATIA.Application") Dim ProduktDoc As Object Dim Produkt, produkte As Object CATIA.DisplayFileAlerts = False CATIA.ActiveDocument.Product.ApplyWorkMode (DESIGN_MODE) ProduktDoc = CATIA.ActiveDocument Produkt = ProduktDoc.Product produkte = Produkt.Products Verzeichnis1 = "E:\" CATIA.FileSystem.CreateFolder (Verzeichnis1 + "\" + CATIA.ActiveDocument.Product.PartNumber) Verzeichnis = Verzeichnis1 + "\" + CATIA.ActiveDocument.Product.PartNumber For i = 1 To produkte.Count If Strings.Right(produkte.Item(i).PartNumber, 7) = "adapter" Then Else If Strings.Right(produkte.Item(i).ReferenceProduct.Parent.Name, 10) = "CATProduct" Then If Strings.Len(produkte.Item(i).PartNumber) < 18 Then CATIA.FileSystem.CreateFolder (Verzeichnis + "\" + produkte.Item(i).PartNumber) End If End If End If Next CATIA.FileSystem.CreateFolder (Verzeichnis + "\purchase") test1 (Produkt) CATIA.ActiveDocument.SaveAs (Verzeichnis + "\" + CATIA.ActiveDocument.Product.PartNumber + ".CATProduct") MsgBox ("Vorgang beendet") End Sub Private Sub test1(ByVal Produkt As Object) CATIA = GetObject(, "CATIA.Application") Dim produkte As Object CATIA.DisplayFileAlerts = False produkte = Produkt.Products For i = 1 To produkte.Count If Strings.Left(produkte.Item(i).PartNumber, 4) = "36.8" Then test1 (produkte.Item(i)) MsgBox (produkte.Item(i).PartNumber) If Strings.Right(produkte.Item(i).ReferenceProduct.Parent.Name, 7) = "CATPart" Then If Strings.Right(produkte.Item(i).PartNumber, 7) = "adapter" Then If Strings.Len(produkte.Item(i).PartNumber) > 26 Then ' adapter im Schweißteil produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).Parent.Parent.Parent.Parent.PartNumber + "\" + produkte.Item(i).PartNumber + ".CATPart") ElseIf Strings.Len(produkte.Item(i).PartNumber) > 22 Then ' adapter in der Baugruppe produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).Parent.Parent.PartNumber + "\" + produkte.Item(i).PartNumber + ".CATPart") Else ' adapter in Station produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).PartNumber + ".CATPart") End If ElseIf Strings.Len(produkte.Item(i).PartNumber) > 22 And Strings.Len(produkte.Item(i).Parent.Parent.PartNumber) > 18 Then ' Parts im Schweißteil produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).Parent.Parent.Parent.Parent.PartNumber + "\" + produkte.Item(i).PartNumber + ".CATPart") Else ' Parts in Baugruppe produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).Parent.Parent.PartNumber + "\" + produkte.Item(i).PartNumber + ".CATPart") End If End If If Strings.Right(produkte.Item(i).ReferenceProduct.Parent.Name, 10) = "CATProduct" Then If Strings.Len(produkte.Item(i).PartNumber) > 18 Then 'Products im Product bsp. Schweißteile produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).Parent.Parent.PartNumber + "\" + produkte.Item(i).PartNumber + ".CATProduct") Else ' wenn alle anderen products produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\" + produkte.Item(i).PartNumber + "\" + produkte.Item(i).PartNumber + ".CATProduct") End If End If Else test1 (produkte.Item(i)) If Strings.Right(produkte.Item(i).ReferenceProduct.Parent.Name, 7) = "CATPart" Then produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\purchase\" + produkte.Item(i).PartNumber + ".CATPart") ElseIf Strings.Right(produkte.Item(i).ReferenceProduct.Parent.Name, 10) = "CATProduct" Then produkte.Item(i).ReferenceProduct.Parent.SaveAs (Verzeichnis + "\purchase\" + produkte.Item(i).PartNumber + ".CATProduct") End If End If Next i End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Okt. 2014 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
Servus Ich hätte gleich ein paar Fragen zum Makro. Programmierst du in VB.net? Bis zu welcher Ebene soll durchsucht werden? Beim anlegen der Verzeichnis gehst du nur bis zur ersten Unterbaugruppenebene. Die Unterscheidung der "Teiletypen" über die Länge der PartNumber scheint mir unzuverlässig. Meiner Ansicht nach fehkt noch eine Fallunterscheidung Part/Product, du rufst die "test1" auch bei Einzellteilen auf. Einfacher wäre es meiner Ansicht nach die Verzeichnisse erst beim Scan der Baugruppe zu erzeugen. Dann könntest du an die Unterroutine "ProductScan" neben der Product noch das Verzeichnis der aktuellen Baugruppe an die Unterbaugruppe weiterzugeben. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 02. Okt. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 02. Okt. 2014 13:13 <-- editieren / zitieren --> Unities abgeben:
Mahlzeit Bend, Das ist richtig, ich programmiere lieber in VB.net. Die Verzeichnisse müssen nur für Baugruppen angelegt werden, dementsprechend alle Products auf der 1 Ebene von meiner Vorrichtung. Wie oben schon erwähnt müssen alle Teile umgespeichert werden, falls diese jedoch unter einer Komponente liegen nicht. Mir ist leider bis jetzt noch keine andere möglichkeit eingefallen, als den Teiltyp über die Länge zu definieren. Wäre deswegen auch sehr dankbar wenn ich andere Vorschläge zu hören bekomme. Deine letzten beiden Punkte verstehe ich nicht so ganz. Könntest du mir diese etwas genauer erläutern. Gruß Timo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Okt. 2014 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
Servus Anbei ein kleines Beispiel wie ich so was aufbauen würden (in VBA erstellt, keine Fehlerbehandlung, deine Kaufteile nicht berücksichtigt, wenig getestet, ...). Dabei ist es egal wie viele Ebenen es gibt. Code: Sub CATMain() Dim oRootProduct As Product Dim oProducts As Products Dim sRootPath As String Dim sWorkPath As String sRootPath = "D:" Set oRootProduct = CATIA.ActiveDocument.Product Call CreateSubFolder(sRootPath, oRootProduct.PartNumber) sWorkPath = sRootPath + "\" + oRootProduct.ReferenceProduct.PartNumber Call ScanProduct(oRootProduct, sWorkPath) End Sub Sub ScanProduct(oRootProduct As Product, sFolderPath As String)
Dim oProduct As Product Dim sFileName As String For Each oProduct In oRootProduct.Products If Not oProduct.Products.Count <> 0 Then 'Keine Komponente/Baugruppe If TypeName(oProduct.ReferenceProduct.Parent) = "PartDocument" Then 'wirklich ein Part? sFileName = oProduct.ReferenceProduct.PartNumber oProduct.ReferenceProduct.Parent.SaveAs sFolderPath + "\" + sFileName + ".CATPart" End If Else If oProduct.ReferenceProduct.Parent.FullName <> oProduct.Parent.Parent.ReferenceProduct.Parent.FullName Then 'CATProduct oder Komponente 'CATProduct Call CreateSubFolder(sFolderPath, oProduct.ReferenceProduct.PartNumber) Call ScanProduct(oProduct, sFolderPath + "\" + oProduct.ReferenceProduct.PartNumber) sFileName = oProduct.ReferenceProduct.PartNumber oProduct.ReferenceProduct.Parent.SaveAs sFolderPath + "\" + sFileName + ".CATProduct" Else 'Komponente Call ScanProduct(oProduct, sFolderPath) End If End If Next End Sub Sub CreateSubFolder(sFolder As String, sSubfolderName As String)
Dim sSubFolderPath As String sSubFolderPath = sFolder + "\" + sSubfolderName If Not CATIA.FileSystem.FolderExists(sSubFolderPath) Then CATIA.FileSystem.CreateFolder sSubFolderPath End If End Sub
Kannst du die verschiedenen Typen (ADapter) nicht am Namen (nicht der Länge) erkennen? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 06. Okt. 2014 07:53 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, Ich habe soeben mal deinen Code getestet und bin damit sehr zufrieden 1. jedoch müssten die "Baugruppen Products" noch in dem jeweiligen Baugruppenordner gespeichert werden. 2. Sobald in einer Baugruppe ein zweites Product ist, wird für dieses Product ein Unterordner erstellt. In diesem Unterordner befinden sich dann die Parts dieses Products. Ein Unterordner dürfte jedoch nicht existieren, da alles in den Baugruppenordner gespeichert werden soll. Beispielsweiße: Station ----Baugruppe ------Schweißteil -----------Part X -----------Part X ------Part Y Part X müssten jedoch in dem Ordner der Baugruppe gespeichert werden. Wenn mir jemand dabei helfen könnte, wäre mir sehr geholfen. Gruß Timo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 06. Okt. 2014 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
Servus zu 1): Du könntest das Abspeichern der Baugruppe zum Anfang Sub-Routine "ScanProduct" verschieben. zu 2): dann lass dir einfallen wie du das Makro entweder ganz umbautes oder ein Prüfung oder Ebenenzähler einbaust. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 20. Nov. 2014 11:33 <-- editieren / zitieren --> Unities abgeben:
Servus, ich möchte hier das Thema noch einmal aufkommen lassen. Mit SaveAs wird dem Part keine neue UUID zugewießen. Wenn ich in dem Fenster SaveAs den Haken "Save as new document" setze wird jedoch eine neue UUID vergeben, richtig? Wenn ja, wie kann ich diesen Haken in meinen Code einbauen? Gruß Timo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Nov. 2014 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|