Autor
|
Thema: Baugruppen-Verdehung feststellen (1571 mal gelesen)
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 09. Aug. 2011 15:56 <-- editieren / zitieren --> Unities abgeben:
Ab und zu kommt es vor, daß Baugruppen unabsichtlich z.B. um 180° verdreht wurden, was später zu erheblichem Mehraufwand führt, wenn bereits Unterbaugrupen eingefügt wurden. Im VPM bekommt man das durch "Info Link" heraus. Läßt sich das auch durch ein VBA-Makro auswerten? Wenn ja, wie geht man am besten vor? ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 10. Aug. 2011 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 10. Aug. 2011 11:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, das klingt erstmal vielversprechend. Leider ist der Zugriff auf Deine Download-Website vom Admin gesperrt. Ich muß Dein script erstmal zuhause kopieren und in die Firma schicken. Ich melde mich, wenn ich's ausprobiert habe. ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 10. Aug. 2011 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Werde mich heute Abend bemühen den Donwloadlink woanders hin zu legen, damit es einfacher zu benutzen wird und Du den Ärger nicht mehr hast. Edit: Habe gerade keinen anderen sinnvollen Space, daher habe ich das Makro hier mal angehängt. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 10. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 19. Aug. 2011 17:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, komme leider heute erst dazu, Dein script zu testen. Es scheitert aber schon beim Aufrufen daran, daß ich ein Paßwort eingeben muß. Starte ich es nicht über den VB- Editor sondern über Tools => Macro => Macros mit "Run", passiert gar nichts. ------------------ Gruß Jürgen 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: 19. Aug. 2011 17:21 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 19. Aug. 2011 18:34 <-- editieren / zitieren --> Unities abgeben:
Danke für den Tip. Das Makro ist von der Grundidee wirklich gut und hat den Vorteil, eine Verdrehung in CATIA komfortabel zu ändern. Da kann man dann gleich die Auswirkungen auf die Geometrie überprüfen. Der Nachteil ist allerdings, daß man die zu kontrollierenden Knoten einzeln anklicken muß. Wir müssen aber eine komplette Produktstruktur mit teilweise mehr als 10 Unterebenen auf Verdrehungen checken. Ich hatte die Vorstellung, eine Auflistung der Assemblies mit deren Positionierungsdaten bezüglich des Root-Products zu erzeugen. Kommt man mit der Auswertung des Position-Objects über GetComponents weiter? Da werden 12 Positions-Komponenten in einem eindimensionalen Array ausgegeben: Die letzten 3 beschreiben die Lage des Nullpunktes. Mir ist nur nicht klar, wie man die jeweils 3 Komponenten für X-, Y- und Z-Achse deuten soll. ------------------ Gruß Jürgen 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: 19. Aug. 2011 18:46 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 22. Aug. 2011 09:56 <-- editieren / zitieren --> Unities abgeben:
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008 CATIA V5 R21 SP3 Windows 10 Pro(64) HP EliteBook 8760w i7 CPU @ 2,5GHz 8GB RAM
|
erstellt am: 22. Aug. 2011 17:11 <-- editieren / zitieren --> Unities abgeben:
Das script sieht momentan so aus: Code: Sub Position_Test() Dim objDocuments As Documents Dim objExcel As Object Dim oProduct As Product Dim oSelection As Selection Dim strPartNumber As String 'Partnumber Dim WB As Workbook Dim intZeile As Integer Dim intI As Integer Dim oAxisComponentsArray(11) Set oProduct = CATIA.ActiveDocument.Product Set objDocuments = CATIA.Documents Set objExcel = CreateObject("Excel.Application") 'Excel starten Set WB = objExcel.Workbooks.Add objExcel.Application.Visible = True 'Excel sichtbar schalten Set objSel = oDoc.Selection objSel.Clear 'Clear CATIA-Preselection to avoid distortion intZeile = 4 'Position of first data row 'Retrieve data and copy into the list '==================================== For intI = 1 To objDocuments.Count 'All Parts If TypeName(objDocuments.Item(intI)) = "ProductDocument" Then Cells(intZeile, 1).Value = objDocuments.Item(intI).Product.PartNumber 'Get Product PartNumber Cells(intZeile, 2).Value = objDocuments.Item(intI).Product.DescriptionRef 'Get Product Description objDocuments.Item(intI).Product.Position.GetComponents oAxisComponentsArray 'Retrieve position components ' X axis components Cells(intZeile, 3).Value = oAxisComponentsArray(0) Cells(intZeile, 4).Value = oAxisComponentsArray(1) Cells(intZeile, 5).Value = oAxisComponentsArray(2) ' Y axis components Cells(intZeile, 6).Value = oAxisComponentsArray(3) Cells(intZeile, 7).Value = oAxisComponentsArray(4) Cells(intZeile, 8).Value = oAxisComponentsArray(5) ' Z axis components Cells(intZeile, 9).Value = oAxisComponentsArray(6) Cells(intZeile, 10).Value = oAxisComponentsArray(7) Cells(intZeile, 11).Value = oAxisComponentsArray(8) ' Transformation components Cells(intZeile, 12).Value = oAxisComponentsArray(9) Cells(intZeile, 13).Value = oAxisComponentsArray(10) Cells(intZeile, 14).Value = oAxisComponentsArray(11) End If Next End Sub
Leider erhalte ich damit nur die Position des Root-Products. Wie erreicht man, daß auch alle Unterprodukte gelistet werden?------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 22. Aug. 2011 17:39 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Einmal Rekursiv durch's Dokument, mehr ist es nicht mehr. Also for each Produrct in Root.Products und dann immer wieder die Funktion aufrufen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 22. Aug. 2011 17:41 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
die intZeile laufvariable müsste in der schleife erhöht werden, sonst überschreibt er immer ein und die selbe zeile in der exceltabelle. Code:
... Cells(intZeile, 14).Value = oAxisComponentsArray(11) intZeile = intZeile + 1
End If Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |