Tech-Ecke / CATScript/VBS Inhalt / Mechanische Eigenschaften von CATParts und CATProducts

 

Mechanische Eigenschaften von CATParts und CATProducts

Seiteninhalt:  
  Mechanische Eigenschaften eines Part's oder Product's ermitteln
  Schwerpunkt (Center of Gravity) eines Part's oder Product's ermitteln
  Volumen eines Body ermitteln
  Dichte des PartBody ermitteln
  Dichte von einem Body ermitteln
  Oberfläche von einem Body ermitteln
  Schwerpunkt (Center of Gravity) von einem Body ermitteln


 

Mechanische Eigenschaften eines Part's oder Product's ermitteln

Die Messung läuft über alle Bodies hinweg und es werden alle angelegte Materialien berücksichtigt!
Wurde kein Material angelegt, so ist die Dichte 1. Ist keine 3D-Geometrie vorhanden, so ist die Masse 0.

  Sub CATMain()

' Oberfläche
Flaeche = CATIA.ActiveDocument.Product.Analyze.WetArea
Flaeche = round(Flaeche,3)
MsgBox "Oberfläche: " &Flaeche &" mm^2"

' Masse
Masse = CATIA.ActiveDocument.Product.Analyze.Mass
Masse = round(Masse *1000,3)
MsgBox "Masse: " &Masse &" g"

' Volumen
Volumen = CATIA.ActiveDocument.Product.Analyze.Volume
Volumen = round(Volumen,3)
MsgBox "Volumen: " &Volumen &" mm^3"

' Dichte
if Masse <> 0 then
   Dichte = (Masse *1000) /Volumen
   Dichte = round(Dichte,3)
   MsgBox "Dichte: " &Dichte &" g/cm^3"
end if

End Sub
 

Alternativ für Masse und Dichte

  Sub CATMain()

set oInertia = CATIA.ActiveDocument.Product.GetTechnologicalObject("Inertia")

' Dichte

MsgBox oInertia.Density
' Masse
MsgBox oInertia.Mass

End Sub
 

 

Schwerpunkt (Center of Gravity) eines Part's oder Product's ermitteln

  Sub CATMain()

' Schwerpunkt
dim Koordinaten(2)
set Schwerpunkt = CATIA.ActiveDocument.Product.GetTechnologicalObject("Inertia")
Schwerpunkt.GetCOGPosition Koordinaten

Koordinaten(0) = round(Koordinaten(0)*1000,3) ' in mm
Koordinaten(1) = round(Koordinaten(1)*1000,3)
Koordinaten(2) = round(Koordinaten(2)*1000,3)
MsgBox "Schwerpunkt: X = " &Koordinaten(0) &", Y = " &Koordinaten(1) &" , Z = " &Koordinaten(2)

End Sub
 

 

Inertia - Bodybezogen
 

Volumen eines Body ermitteln

Enthält der Body keine Geometrie, so kommt es zu einer Fehlermeldung. Hier im Beispiel wird der PartBody gemessen.

  Sub CATMain()

set body1 = CATIA.ActiveDocument.Part.MainBody
set Objekt = CATIA.ActiveDocument.Part.CreateReferenceFromObject(body1)
set SPAWorkbench1 = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
set Element = SPAWorkbench1.GetMeasurable(Objekt)

' Volumen
Volumen = Element.Volume
Volumen = round(Volumen *1000 *1000,3)
MsgBox ("Volumen = " &Volumen &" mm^3")

End Sub
 

 

Dichte des PartBody ermitteln

Ist dem Body noch kein Material zugewiesen, so ist die Dichte 1.

  Sub CATMain()

set PartBodyDichte = Catia.ActiveDocument.Part
Dichte = PartBodyDichte.Density
Dichte = round((Dichte /1000),3)
MsgBox ("Dichte = " &Dichte &" g/cm^3")

End Sub
 

 

Dichte von einem Body ermitteln

Hier im Beispiel wird die Dichte vom PartBody ermittelt, dies ist jedoch auf jeden Body anwendbar dem ein Material zugewiesen wurde. Hinweis1: In Release 17 oder 18 gab es eine interne Einheitenänderung für verschiedene Einheiten wie auch die der Dichte!
Hinweis2: Diese Methode führt bei vielen Rechnern zum Aufhängen von CATIA, alternative kann das Auslesen der Dichte vom PartBody genommen werden, dazu den betreffenden Body temporär zum PartBody machen (CATIA.ActiveDocument.Part.MainBody = BodyXY) und danach natürlich wieder zurück.

  Sub CATMain()

set PartDokument = CATIA.ActiveDocument.Part
set Koerper = PartDokument.MainBody

Dichte = GetDensity(Koerper) /1000
MsgBox "Dichte: " &Dichte &" g/ccm"

End Sub


Function GetDensity(Body1)
On Error Resume Next

err.number = 0
set oManager = CATIA.ActiveDocument.Part.GetItem("CATMatManagerVBExt")
oManager.GetMaterialOnBody Body1, oMaterial
set oManager = nothing
GetDensity = oMaterial.AnalysisMaterial.GetValue("SAMDensity")
set oMaterial = nothing
if err.number <> 0 then GetDensity = 1

End Function
 

 

Oberfläche von einem Body ermitteln

Um die Oberfläche eines Bodies zuermitteln kann man sich der "Knowledge Advisor Language" bedienen. Hierzu legt man einen Parameter an und hinterlegt diesem eine Formen mit der Methode SmartWetArea.

  Sub CATMain()

BodyName = "PartBody"   ' oder den Namen eines anderen Bodies
set WetAreaParameter = CATIA.ActiveDocument.Part.Parameters.CreateDimension("", "AREA", 0.000000)
set Formel = CATIA.ActiveDocument.Part.Relations.CreateFormula("TempFormula", "", WetAreaParameter, "smartWetarea(`" &BodyName &"` ) ")

Oberflaeche = CDbl(WetAreaParameter.Value)
Oberflaeche = round(Oberflaeche *1000 *1000)
MsgBox Oberflaeche

End Sub
 

 

Schwerpunkt (Center of Gravity) von einem Body ermitteln

Hier im Beispiel wird der PartBody gemessen.

  Sub CATMain()

set body1 = CATIA.ActiveDocument.Part.MainBody
set Objekt = CATIA.ActiveDocument.Part.CreateReferenceFromObject(body1)
set SPAWorkbench1 = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
set Element = SPAWorkbench1.GetMeasurable(Objekt)

' Schwerpunkt
dim Koordinaten(2)
Element.GetCOG Koordinaten

Koordinaten(0) = round(Koordinaten(0),3) ' in mm
Koordinaten(1) = round(Koordinaten(1),3)
Koordinaten(2) = round(Koordinaten(2),3)
MsgBox "Schwerpunkt: X = " &Koordinaten(0) &", Y = " &Koordinaten(1) &" , Z = " &Koordinaten(2)

End Sub

 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 03.11.2009]