Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parts Masse zuweisen - Änderung der Materialbezeichnung mit im Makro integrieren

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:  Parts Masse zuweisen - Änderung der Materialbezeichnung mit im Makro integrieren (1860 mal gelesen)
lobas81
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 12.12.2013

CATIA V5 R19 SP9

erstellt am: 12. Dez. 2013 14:57    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,

wir haben bei uns häufig das Problem, dass wir Kaufteil-Modelle für unsere Konstruktionen benötigen, die wir als z.B. step von den Internetseiten der Lieferanten downloaden.
Diese Modelle haben in der Regel keine Masseinformationen hinterlegt.

Ein Material aus der Standardbibliothek zu verwenden macht oftmals auch keinen Sinn, weil dann die Masse (gemessen in CATIA) mit der laut Datenblatt des Herstellers meistens nicht übereinstimmt.

Also haben wir uns immer so geholfen, dass wir die Modelle mit Density=1000 gemessen haben und über den Dreisatz dann die entsprechend einzutragende Density ermittelt haben, um auf die Masse laut Datenblatt zu kommen.
Das Materialfeature haben wir dann immer in "TEMP" umbenannt.

Jetzt habe ich ein Makro gebastelt, wo ich in einer Inputbox die Sollmasse eingeben kann und dem Part dann die entprechende Density zugeordnet wird.
Das funktioniert auch wunderbar, nur leider habe ich noch keinen Weg gefunden, wie ich im Makro den Namen des Features gleich mit umbenennen kann. Das muss ich jetzt nachträglich immer noch händisch machen.
Das Makro vergibt erst ein Material aus der Materialbibliothek (hier Aluminium) und ändert dann den Wert für Density im Part:


Sub CATMain()

Dim PartDoc        As PartDocument
Dim part1          As Part
Dim Mat            As Material
Dim oAnalysisMat    As AnalysisMaterial
Dim sInput          As String
Dim dMasse          As Double
Dim dMassOrigin    As Double
Dim iMerkInput      As Integer


'pruefen, ob ein CATPart oder CATProduct geoeffnet ist
On Error Resume Next
Set PartDoc = CATIA.ActiveDocument
On Error GoTo 0
   
If TypeName(PartDoc) = "PartDocument" Then
    Set part1 = PartDoc.Part
    Else
    MsgBox "NO CATPart or CATProduct opened!" & vbCrLf & "Es ist KEIN CATPart oder CATProduct geoeffnet!" & vbCrLf & vbCrLf & "Please open a CATPart or CATProduct." & vbCrLf & "Bitte oeffnen Sie ein CATPart oder CATProduct.", vbCritical, "Error/ Fehler"
    Exit Sub
End If


'Eingabe der Sollmasse in [kg]
Do
    iMerkInput = 0
   
    sInput = Replace(Trim(InputBox("Please insert the mass of the part [kg]:" & vbCrLf & "Bitte die Masse des Teils eingebe [kg]:", "Input mass/ Masse eingeben", 1)), ".", ",")
   
    If sInput = "" Then
        MsgBox "User abort!" & vbCrLf & "Abbruch durch Benutzer!", vbExclamation, "Abort/ Abbruch"
        Exit Sub
    ElseIf IsNumeric(sInput) = False Then
        MsgBox "Please insert numeric value for mass!" & vbCrLf & "Bitte numerischen Wert fuer die Masse eingeben!", vbExclamation, "Error/ Fehler"
    Else
        iMerkInput = 1
    End If
   
Loop Until iMerkInput = 1

dMasse = sInput


'Materialkatalog öffnen und Material vergeben (hier Aluminium, nur zur Hilfe, weil Material vergeben sein muss, sonst kann es nicht geändert werden)
Dim sDocPath As String
Dim sFilePath As String
Dim oMaterial_document As Document
Dim oManager As MaterialManager

sDocPath = CATIA.SystemService.Environ("CATDocView")
sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, "English\online\CAAScdMatUseCases\samples\MyCatalog.CATMaterial")

Set oMaterial_document = CATIA.Documents.Open(sFilePath)
Set oMaterial_document = CATIA.ActiveDocument

Set oManager = part1.GetItem("CATMatManagerVBExt")

Set Mat = oMaterial_document.Families.Item(2).Materials.Item(1)
oManager.ApplyMaterialOnPart part1, Mat, 0

oMaterial_document.Close


'zur Werteermittlung erstmal Dichte 1000 vergeben
Dim Params As Parameters
Dim Param As parameter

Set Params = part1.Parameters

'Set Param = Nothing
'Set Param = Params.Item("Feature Name")
'Param.Value = "TEMP"

Set Param = Nothing
Set Param = Params.Item("Density")
Param.Value = 1000
Set Param = Nothing


'Masse des Parts mit Dichte 1000 ermitteln als Referenz für die ermittlung der Solldichte
Dim oInertia As AnyObject
Dim oProduct As AnyObject
Set oProduct = PartDoc.Product
Set oInertia = oProduct.GetTechnologicalObject("Inertia")

dMassOrigin = oInertia.Mass


'Solldichte ermitteln und einsetzen
Set Param = Params.Item("Density")
Param.Value = (dMasse / dMassOrigin) * 1000
Set Param = Nothing


part1.Update

End Sub


Kann ich die Umbenennung im Makro mit integrieren.
Oder kann ich auch ein komplett neues Material mit eigener Benennung und Density im Part über Makro erzeugen?

Schonmal Danke für die Antworten!

------------------
Grüß Dich Meiner!

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: 12. Dez. 2013 18:06    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 lobas81 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum. So kannst du das Material umbenennen:
Code:
Sub CATMain()

Dim partDocument1 As partDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As part
Set part1 = partDocument1.part

Dim oManager As MaterialManager
Set oManager = part1.GetItem("CATMatManagerVBExt")

Dim oMaterial As Material
oManager.GetMaterialOnPart part1, oMaterial

oMaterial.Name = "TEMP"
part1.UpdateObject oMaterial

End Sub


Der Name wird zwar geändert, aber der Eintrag im Baum aktualisiert sich leider nicht.

Gruß
Bernd

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

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

lobas81
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 12.12.2013

CATIA V5 R19 SP9

erstellt am: 13. Dez. 2013 13:35    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

Danke, das hat es gebracht!

wenn man das Teil speichert und neu öffnet, dann ist das Material im Baum auch umbenannt.
Nur will das Part dann auch immer ein Update haben, wenn man es neu öffnet?!


mfg

------------------
Grüß Dich Meiner!

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