| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | KISTERS 3DViewStation: Schnelligkeit und Präzision in dem neuen JT-Importer, eine Pressemitteilung
|
Autor
|
Thema: Masse_Schwerpunkt_von_Produkten (1587 mal gelesen)
|
Heini_K Mitglied

 Beiträge: 34 Registriert: 26.09.2006 Catia V5R14SP4/R16 HP- Unix- Workstation
|
erstellt am: 27. Sep. 2006 13:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Mein Anliegen ist es Masse und Schwerpunkt aus der ersten Unterhierachie des Root-Products anzuzeigen. Das Makro gibt aber erst die korrekten Werte aus, wenn ich per Hand die einzelnen Parts aktiviert habe (sonst nur Nullen). 1. Hat jemand einen Tipp wie ich dieses Problem in den Griff kriege, da es mit dem "ActivateDefaultShape"-Befehl nicht funktioniert. 2. Wenn ich auf Objekte eine Hierachie-Ebene über den Parts zugreife (Produkt-Symbol mit kleinem roten Kreuz) bekomme ich immer die Schwerpunktkoordinaten im Koordinaten-Sys. des Parts und nicht des Assembly, lässt sich das ändern? Vielen Dank im Voraus! Anbei der Code: ----------------------------------------------------- Sub CATMain() Dim CoGValue (2) As Array
Dim product2 As Product 'Aktives Document auswaehlen Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument 'Hauptprodukt auswaehlen Dim product1 As Product Set product1 = productDocument1.Product 'Auflistung der Unterprodukte Dim products1 As Products Set products1 = product1.Products 'Auswahl der Unterprodukte aus der Auflistung "products1" For I = 1 To (product1.Products.Count) Set product2 = products1.Item(I) product2.ActivateDefaultShape() Msgbox product2.Name MassValue = product2.Analyze.Mass product2.Analyze.GetGravityCenter (CoGValue) Msgbox "Masse = " & MassValue Msgbox "CoG x= " & CoGValue (0) & " CoG y= " & CoGValue (1) & " CoG z= " & CoGValue (2) Next End Sub ------------------ Matthias ----------------- Catia V5R14 Unix- Workstation Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
  
 Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 28. Sep. 2006 09:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Heini_K
Hallo, einen Hinweis: das .Analyze berücksichtigt nur die Volumen, die sich im PartBody (Hauptkörper) befinden. Wenn du mehrere Bodies in einem Part hast, die nicht mittels Boolscher' Operation dem PartBody zugefügt wurden, werden deine Ergebnisse völlig falsch. Richtig werden deine Ergebinisse mit .GetTechnologicalObject("Inertia") Zu deinem eigentlichen Problem: Das ganze funktioniert schon mit .DesactivateDefaultShape bzw. .ActivateDefaultShape. Ich mache es so: alles was nicht mitgemessen werden soll mit .DesactivateDefaultShape aus (Knotenpunkt deaktivieren), dann das Root messen, danach wieder alle Knotenpunkte aktivieren. Funktioniert einwandfrei seit der R12. Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heini_K Mitglied

 Beiträge: 34 Registriert: 26.09.2006 Catia V5R14SP4/R16 HP- Unix- Workstation
|
erstellt am: 28. Sep. 2006 16:00 <-- editieren / zitieren --> Unities abgeben:         
@TomTom Habe Deinen Tipp befolgt und den Befehl .GetTechnologicalObject angewandt. Das Aktivierungs-Problem hat sich damit auch erledigt. Auch wenn bei diesem Projekt bisher alle Beteiligten ihre Geometrie im Partbody platziert haben ist es im Zweifelsfall sicher günstiger Deine Variante zu nehmen. Danke! ------------------ Matthias ----------------- Catia V5R14 Unix- Workstation Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CatiaV5User Mitglied

 Beiträge: 21 Registriert: 27.04.2007
|
erstellt am: 11. Jun. 2007 16:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Heini_K
Hallo, ich habe auch festgestellt, dass die Masse eines Products mit Masse=product.analyse.mass nicht richtig berechnet wird. Hier ist die Rede von .GetTechnologicalObject Wie wird dieser Befehl denn richtig angewandt? Habe schon einiges probiert, klappt aber nicht. Möchte am Ende die korrekte Masse einer Variablen zuweisen. Hoffe ihr könnt mir helfen? Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
  
 Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Jun. 2007 06:26 <-- editieren / zitieren --> Unities abgeben:          Nur für Heini_K
Hallo, Verwende die Methode wie im Beitrag oben beschrieben. Das funktioniert einwandfrei. Die V5 Doku enthält Beispiel Code zu diesem Thema. Auch im Forum gibts mehrere Beiträge. Einfach mal die Such-Funktion belästigen. Dafür ist sie da. Wenn du detaillierte Fragen hast, stelle sie. Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CatiaV5User Mitglied

 Beiträge: 21 Registriert: 27.04.2007
|
erstellt am: 12. Jun. 2007 09:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Heini_K
@ tomtom meine spezielle Frage war, wie ich mit dem Befehl GetTechnologicalObject("Inertia") an die Masse eines Produkts rankomme? Wenn ich schreibe: masse=product.GetTechnologicalObject("Inertia") kommt die Fehlermeldung Typen unverträglich Und wenn ich schreibe: set m=product.GetTechnologicalObject("Inertia") masse=m.mass dann geht das auch nicht... Also ich wäre euch für den korrekten Quellcode sehr dankbar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
  
 Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Jun. 2007 16:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Heini_K
Hallo, das ist eigentlich schon ganz richtig. Die Frage ist nun nur, welches Object sich bei dir hinter "product" versteckt; deine Fehlermeldung gibt dir ja schon an, wo das Problem liegt. So gehts: Dim oInertia as Object Set oInertia = Catia.ActiveDocument.Product.GetTechnologicalObject("Inertia") Dim dMass As Double dMass = oInertia.Mass '--- Masse TomTom ------------------ tomtom1972
[Diese Nachricht wurde von tomtom1972 am 12. Jun. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CatiaV5User Mitglied

 Beiträge: 21 Registriert: 27.04.2007
|
erstellt am: 12. Jun. 2007 16:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Heini_K
Danke tomtom, nun hat es funktioniert. Es lag an der Variablendeklaration. Leider musste ich aber feststellen, dass die Variante mit Dim masse as Object set masse=p.GetTechnologicalObject("Inertia") Dim dMass As Double dmass=masse.mass das gleiche Ergebnis der Masse von Produkten liefert wie dmass=p.analyze.mass Ich möchte aber gern die Masse des Produkts haben, die unter Properties/Mechanical bei "Mass" eingetragen ist. Gibt es nicht noch eine andere Möglichkeit an diesen Wert heranzukommen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |