Autor
|
Thema: Masse-Ermitlung ohne versteckte Körper (4308 mal gelesen)
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 06. Jul. 2011 15:50 <-- editieren / zitieren --> Unities abgeben:
Normalerweise mißt CATIA mit " measure inertia" alle Körper, auch die versteckten. Gibt es eine Möglichkeit, das zu ändern? Wenn man z.B. "Properties->mechanical" des Assemblys mit rechter Maustaste anwählt, kann man auch die Option "Only main bodies" aktivieren. Dann wird nur die Masse der Mainbodies berechnet. Nur bei der Meßfunktion gibt es diese Option nicht.
------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 06. Jul. 2011 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Hallo Jürgen, kann man beim Messen nicht den gewünschten Körper selektieren, sofern er "unverboolt" ist? ansonsten würde ich mal probieren, vor dem Messen den fraglichen Körper in Bearbeitung zu definieren. Mein CATIA läuft heute nicht mehr, deshalb kann ich es nicht testen... ------------------ Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 06. Jul. 2011 16:26 <-- editieren / zitieren --> Unities abgeben:
Alle Achtung Mörchen, ich habe mindestens 10mal mehr Zeit für meine Frage gebraucht, als Du für die Antwort ;-) Ich will eigentlich die Masse einer größeren Baugruppe bestimmen, habe aber einige Parts, in denen Varianten oder Hilfskörper gespeichert sind, die das Ergebnis jetzt verfälschen. Solange noch nicht klar ist, welche Variante gebraucht wird, will ich auch noch nichts löschen. ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 06. Jul. 2011 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Hallo Jürgen, diesmal hat es ein bißchen länger gedauert; ich bin zwischenzeitlich nachhause gefahren. Wenn Du komplette Parts aussschließen willst, kannst Du die Komponenten im Kontextmenü inaktivieren. (Ich weiß nicht auswendig, ob Du "Komponente inaktivieren" unter "..Objekt..." (wahrscheinlich) oder unter "Komponente" findest. Nach meinem Verständnis sollten sie dann nicht mehr "ins Gewicht fallen" Wenn Du Parts nur teilweise ausschließen willst, dann würde ich versuchen, die entsprechenden Elemente auf Partebene zu inaktivieren. ------------------ Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 06. Jul. 2011 17:45 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Servus Du könntest vielleicht die Exportfunktion der Trägheitsmessung nutzen -> Messung ausführen -> exportieren -> in Excel importieren -> "ausmisten" (AFAIR werden die einzelnen ("unverboole'ten) Körper aufgeführt)-> Summe aller Einzelmassen bilden Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ricky.ro Mitglied Konstrukteur Kunststofftechnik / Werkzeugbau
Beiträge: 139 Registriert: 28.03.2006 Dell Precision Tower 5810 Intel Xeon Processor E5-1620 v3 3,5 GHz Nvidia Quadro K4200 4GB 32GB RAM Win 7 64 Bit Catia V5 R21 SP6 HF4
|
erstellt am: 07. Jul. 2011 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Hallo Jürgen, da auch ich immer viele "versteckte" Körper in meinen Konstruktionen habe, mache ich ein CATPart mit der Funktion "Generate CATPART from Product" aus meiner Baugruppe. Dann Measure Inertia und du hast die Masse von allen Körpern die eingeblendet waren. Ciao, Ricky
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 07. Jul. 2011 11:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Ricky, das ist auf jeden Fall die sicherste Variante. Damit sind nur die sichtbaren Körper erfaßt. Allerdings muß man aufpassen, daß man nur Teile mit gleicher Dichte lädt. Ich hatte allerdings gehofft, daß man "measure inertia" irgendwie umstellen kann, weil ich ein Makro habe, das mir die Informationen aus BOM-List und Gewichtsmessung in einer Excel-Tabelle zusammenfaßt. So richtig verstehen kann ich Dassault aber auch nicht: Warum kann man die Option "Only mainbodies" bei Properties auswählen, aber nicht bei der Meßfunktion? ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 07. Jul. 2011 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Hallo Jürgen, du kannst noch einen Schritt weiter gehen und ein assoziatives Part erstellen. Hier kannst du die Hauptkörper mit den Materialeigenschaften versehen und dann hast du während deiner Konstruktion immer den Aktuellen Gewichtsstand ohne wieder ein AllCatPart erzeugen zu müssen. Im AssiPart wird auch unter verschieden Materialien unterschieden um so Materialgruppen vereinigen zu können! Hier hast du zusätzlich zu dem Hauptkörper noch alle anderen körper zur Auswahl, welche zum AssiPart hinzugefügt werden soll. Gruß Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Jul. 2011 18:25 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Servus Du könntest per Makro alle Körper die sichtbar sind suchen, dann prüfen ob diese nicht in ein Boole'schen Operation verwendet werden, nd dann die Masse der einzelnen Körper aufsummieren. Anbei ein Beispiel ( nicht getestet): Code: Sub Summ_Body_Masses() Dim oProduct As Product Dim oSel As Selection Dim objInertia As inertia Dim mass As Double Dim oBody As Body 'start Set oProduct = CATIA.ActiveDocument.Product Set oSel = CATIA.ActiveDocument.Selection mass = 0# 'Suche aller sichbaren Körper oSel.Clear oSel.Search "CATPrtSearch.BodyFeature.Visibility=Shown,all" 'Prüfen ob Körper in Booleschen Operationen verbaut sind For i = 1 To oSel.Count2 Set oBody = oSel.Item2(i).Value If oBody.InBooleanOperation = False Then Set objInertia = GetBodyInertia(oBody.Parent.Parent, oBody) 'Wird das Inertia Objekt zurück geliefert? If Not (objInertia Is Nothing) Then 'Massen aufsummieren mass = mass + objInertia.mass End If End If Next MsgBox "die Masse beträgt " & mass & " kg" End Sub Function GetBodyInertia(ByRef iPart As Part, ByRef iBody As Body) As inertia 'If successful, this function will return an inertia object Dim objSPAWorkbench As Workbench Dim objInertia As inertia On Error Resume Next Set objSPAWorkbench = iPart.Parent.GetWorkbench("SPAWorkbench") Set objInertia = objSPAWorkbench.Inertias.Add(iBody) If Err.Number = 0 Then Set GetBodyInertia = objInertia Else Set GetBodyInertia = Nothing End If End Function
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 08. Jul. 2011 09:19 <-- 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: 04. Aug. 2011 20:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, bin jetzt erst dazu gekommen, Dein Makro auszuprobieren. Es läuft allgemein sehr gut, steigt aber an der Zeile mass = mass + objInertia.mass aus, wenn ein Körper leer ist. objInertia zeigt unter Locals dann "method mass failed" an. Wie kann man das verhindern? ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Aug. 2011 20:20 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Servus Du könntest einfach über eine If-Abfrage auslesen ob der Körper leer ist, und dann überspringen (ungetestet): Code:
.... 'Prüfen ob Körper in Booleschen Operationen verbaut ist For i = 1 To oSel.Count2 Set oBody = oSel.Item2(i).Value If oBody.InBooleanOperation = False Then 'Prüfen ob Körper leer ist if oBody.Shapes.Count <> 0 then Set objInertia = GetBodyInertia(oBody.Parent.Parent, oBody) 'Wird das Inertia Objekt zurück geliefert? If Not (objInertia Is Nothing) Then 'Massen aufsummieren mass = mass + objInertia.mass End If End If End If Next ....
(Schön ist der Code nicht unbedingt) Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 05. Aug. 2011 17:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, mit der Änderung läuft's prima! Eine Zusatzfrage: Wenn ich schonmal die Inertia-Daten an objInertia übergeben habe, könnte man da nicht in diesem Zusammenhang die Koordinaten des Schwerpunktes mit auswerten? Diese wären ja auch nicht durch versteckte Körper verfälscht. ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 05. Aug. 2011 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Servus Ja klar kannst du dir ach den Schwerpunkt ausgeben lassen: GetCOGPosition (siehe Doku) Allerdings musst du den Gesamtschwerpunkt (der Körper) über das Statisches Moment (über alle drei Achsen) ermitteln. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |