Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Masse_Schwerpunkt_von_Produkten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Masse_Schwerpunkt_von_Produkten (1449 mal gelesen)
Heini_K
Mitglied



Sehen Sie sich das Profil von Heini_K an!   Senden Sie eine Private Message an Heini_K  Schreiben Sie einen Gästebucheintrag für Heini_K

Beiträge: 34
Registriert: 26.09.2006

Catia V5R14SP4/R16
HP- Unix- Workstation

erstellt am: 27. Sep. 2006 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von tomtom1972 an!   Senden Sie eine Private Message an tomtom1972  Schreiben Sie einen Gästebucheintrag für tomtom1972

Beiträge: 605
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heini_K 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Heini_K an!   Senden Sie eine Private Message an Heini_K  Schreiben Sie einen Gästebucheintrag für Heini_K

Beiträge: 34
Registriert: 26.09.2006

Catia V5R14SP4/R16
HP- Unix- Workstation

erstellt am: 28. Sep. 2006 16:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@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



Sehen Sie sich das Profil von CatiaV5User an!   Senden Sie eine Private Message an CatiaV5User  Schreiben Sie einen Gästebucheintrag für CatiaV5User

Beiträge: 21
Registriert: 27.04.2007

erstellt am: 11. Jun. 2007 16:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heini_K 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von tomtom1972 an!   Senden Sie eine Private Message an tomtom1972  Schreiben Sie einen Gästebucheintrag für tomtom1972

Beiträge: 605
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heini_K 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von CatiaV5User an!   Senden Sie eine Private Message an CatiaV5User  Schreiben Sie einen Gästebucheintrag für CatiaV5User

Beiträge: 21
Registriert: 27.04.2007

erstellt am: 12. Jun. 2007 09:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heini_K 10 Unities + Antwort hilfreich

@ 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


Sehen Sie sich das Profil von tomtom1972 an!   Senden Sie eine Private Message an tomtom1972  Schreiben Sie einen Gästebucheintrag für tomtom1972

Beiträge: 605
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heini_K 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von CatiaV5User an!   Senden Sie eine Private Message an CatiaV5User  Schreiben Sie einen Gästebucheintrag für CatiaV5User

Beiträge: 21
Registriert: 27.04.2007

erstellt am: 12. Jun. 2007 16:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heini_K 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz