Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Mass vom mehreren Bodies

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:  Mass vom mehreren Bodies (1545 mal gelesen)
Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 28. Apr. 2017 13:24    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

Servus

Kann mir jemand sagen, wie kann ich Gesamtmass vom selektierte Bodies lesen mit Makro?
Ich habe schon Selektion uber SelectElement2 gemacht, Workbench und Measurable definiert aber wie kann ich jetzt kompletes Selektion als Reference definieren?
Anbei mein Code(erste Schritten):

Code:
Sub xStart()
Dim body_sel  As Selection
Dim dbody_sel
Dim InputObjectType(0) As Variant
InputObjectType(0) = "Body"
Dim Status
Set body_sel = CATIA.ActiveDocument.Selection
Set dbody_sel = body_sel
Status = dbody_sel.SelectElement3(InputObjectType, "Wybierz body do zważenia", _
                                True, CATMultiSelTriggWhenSelPerf, False)
If (Status = "Cancel") Then Exit Sub

Dim objSPAWkb As Workbench
Set objSPAWkb = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Dim objRef As Object
Dim objMeasurable As Measurable
Set objRef = partDoc.CreateReferenceFromObject(dbody_sel)
Set objMeasurable = objSPAWkb.GetMeasurable(objRef)

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 28. Apr. 2017 13:34    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 Sylas 10 Unities + Antwort hilfreich

Servus
Warum nicht einfach die Körper einzeln messen und die Masse addieren?
Hier findest du ein Beispiel wie du die Masse (bzw auch Trägheit) eines Körpers ermitteln kannst.

Gruß
Bernd

PS: Wie willst du über das Measurable-Objekt die Masse bestimmen? Da gibt es doch keine Methode/Eigenschaft dazu.

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 28. Apr. 2017 13:47    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

Hi Bernd

Ich mochte weiter die Bodies mit Assembly in einem neues Body erstellen und fur die neues Body dummy Dichte (dummy Material) erstellen so, dass Mass vom neues Body=Mass vom assembled Bodies.
Also Ich mochte auch Volumen messen, Dichte berechnen und neues Material mit dummy Dichte fur neues Body geben 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 28. Apr. 2017 14: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 Nur für Sylas 10 Unities + Antwort hilfreich

Servus
Dann geht es wohl auch nur über die Addition der Volumen der Körper.
ggf kannst du die Reference der Körper gleich über die Selektion bilden. zB
Code:
for i = 1 to body_sel.count
  Set objRef = body_sel.item2(i).Reference
  Set objMeasurable = objSPAWkb.GetMeasurable(objRef)
  'hier das Volumen auslesen und addieren
next
Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 04. Mai. 2017 13:47    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 Bernd

Viellen Dank für deine Atwort.

Code:
Set objRef = body_sel.item2(i).Reference

funktioniert nicht - Method failed 

Ich habe jetzt Volumen aber wie kann ich das Gewicht von einem Body auslesen? Gibt es was wie "GetTechnologicalObject" für Body?

Gruß

[Diese Nachricht wurde von Sylas am 04. Mai. 2017 editiert.]

[Diese Nachricht wurde von Sylas am 04. Mai. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 04. Mai. 2017 13:59    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 Sylas 10 Unities + Antwort hilfreich

Servus
Dann musst du eben die Referenz anders bilden (zB CreateReferenceFromObject).
Die Masse bekommst du wohl nur über die Trägheitsmessung (wie zuvor verlinkt). ggf nur mit dieser die Masse und die Dichte ermitteln und daraus das Volumen berechnen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 04. Mai. 2017 14:05    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

Wochin kommt die Body-Dichte dann? Auch vom Trägheitsmessung?

Ich habe auch keine Idee wie kann ich Reference aus sel_body.Item(i) machen...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 04. Mai. 2017 16:01    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 Sylas 10 Unities + Antwort hilfreich

Servus

Ja, mit der Eigenschaft Density (bitte den Link und in die Doku schauen)
Zur Referenzbildung: Probier doch mal (wie vorher in deinem Code):

Code:
Set objRef = partDoc.CreateReferenceFromObject(dbody_sel.item2(i).value)

bzw bei der Trägheitsmessung muss keine Referenz gebildet werden. zB:
Code:
Set NewInertia = TheInertias.Add(dbody_sel.item2(i).value)
Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 09. Mai. 2017 07:45    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

Hi Bernd

Zu erstes - Ich muß und will wieder dir danken für deine Hilfe  

Ich habe es mit Volumen und Gewicht für meine Bodies Kollektion geschafft, also Ich habe jetzt die Dichte berechnet.
Jetzt kommt die Frage - wie kann Mann Boolesche operationen im Part erstellen? Ist das machbar?

Gruß

UPDATE: Ich habe das Problem selbst gelöst

Jetzt brauche ich eine Vorgehensweise für der Materialangabe in dem Body.

Lukas

[Diese Nachricht wurde von Sylas am 09. Mai. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Mai. 2017 09:07    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 Sylas 10 Unities + Antwort hilfreich

Servus
Hast du schon mal in der Doku (V5Automation.chm) geschaut.
Bei der ShapeFactory solltest du entsprechende Funktionen finden (zB AddNewAssemble)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 09. Mai. 2017 10: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

Sorry für späte Antwort
Ich habe das Problem selbst gelöst.
Siehe meinen letzten Post...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Mai. 2017 10: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 Sylas 10 Unities + Antwort hilfreich

Servus
Schon mal daran gedacht es wie manuell zu machen?
Also Material zuweisen und Dichte anpassen (über Parameter oder über die Eigenschaft). Zu beidem findest du was hier im Forum und in der Doku.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 09. Mai. 2017 11:49    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 Bernd

Anbei den letzten Stand vom Kode.
Ich glaube dass es kann doch ein bischen mehr optimiert sein, trotzdem funktioniert wie ich will.

Code:
Sub xStart()
Dim body_sel  As Selection
Dim dbody_sel
Dim InputObjectType(0) As Variant
Dim partDoc As Part
InputObjectType(0) = "Body"
Dim Status
Dim masa_poj As Double
Dim obj_poj As Double
Dim masa As Double
Dim objetosc As Double
Set partDoc = CATIA.ActiveDocument.Part
Set body_sel = CATIA.ActiveDocument.Selection
Set dbody_sel = body_sel
Dim dbody As Body
Dim inertia As inertia
Dim inercje As Inertias
Dim curr_body As Body
Dim main_body As Body
Dim test_body As Body
Dim body_col As New VBA.Collection
Dim shapeFactory1 As ShapeFactory
Set shapeFactory1 = partDoc.ShapeFactory
Dim mat As Parameter

Set main_body = partDoc.Bodies.Item("Funktionsteil")
partDoc.InWorkObject = main_body
partDoc.Update
body_sel.Search ("((((FreeStyle.Body + 'Part Design'.Body) + 'Generative Shape Design'.Body) + 'Functional Molded Part'.Body) + 'Functional Molded Part'.Body) - Name=PartBody;all")
If (Status = "Cancel") Then Exit Sub

masa = 0
objetosc = 0

Dim objSPAWkb As Workbench
Set objSPAWkb = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Dim objRef As Reference
Dim objMeasurable As Measurable
For i = 1 To body_sel.Count
    Set curr_body = body_sel.Item2(i).Value

    If InStr(1, curr_body.Name, "GEOEFFNETE") = 0 Then
        If curr_body.InBooleanOperation = False Then
            If curr_body.Shapes.Count <> 0 Then
                body_col.Add curr_body
            End If
        End If
    End If
Next
For j = 1 To body_col.Count
    Set curr_body = body_col.Item(j)
    Set objRef = partDoc.CreateReferenceFromObject(curr_body)
    Set objMeasurable = objSPAWkb.GetMeasurable(objRef)
    'Set inertia = inercje.Add(dbody_sel.Item2(i).Value)
    Set inertia = GetBodyInertia(partDoc, curr_body)
    masa_poj = inertia.Mass '.Value
    'inercje.Remove (dbody_sel.Item2(i).Value)
    obj_poj = objMeasurable.Volume
    masa = masa + masa_poj
    objetosc = objetosc + obj_poj
    shapeFactory1.AddNewAssemble curr_body
Next
gestosc = masa / objetosc
    partDoc.InWorkObject = main_body
    partDoc.Update
'--------------------------------------------------------------------------------------------------------------
Dim MaterialDocPath As String

Dim MaterialName As String, MaterialFamilyName As String

' Identify which Material you want:

'*********************************************

MaterialName = "MISCHDICHTE" '*

MaterialFamilyName = "No Material" '*

'*********************************************.

' Identify the Material Doc Path:

'*****************************************************************

MaterialDocPath = "I:\01\01\Catalog_with_no_material.CATMaterial" '*

'*****************************************************************

' Modified From the AutomationV5.chm File:

Dim oMaterial_document As Document

Set oMaterial_document = CATIA.Documents.Read(MaterialDocPath)

Dim oMaterial As Material

Set oMaterial = oMaterial_document.Families.Item(MaterialFamilyName).Materials.Item(MaterialName)

oMaterial.AnalysisMaterial.PutValue "SAMDensity", gestosc & "kg_m3"

Set oManager = partDoc.GetItem("CATMatManagerVBExt")

LinkMode = 0

Set main_body = partDoc.Bodies.Item("PartBody")

oManager.ApplyMaterialOnBody main_body, oMaterial, LinkMode

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


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